コード例 #1
0
ファイル: NodeObserver.cs プロジェクト: vlslavik/SenseNet
        internal static void InvokeCancelEventHandlers(CancellableNodeEventHandler handler, object sender, CancellableNodeEventArgs e)
        {
            if (handler == null)
            {
                return;
            }

            Exception firstException = null;

            Delegate[] list   = (Delegate[])handler.GetInvocationList().Clone();
            bool       cancel = false;

            foreach (CancellableNodeEventHandler del in list)
            {
                try
                {
                    del(sender, e);
                    cancel   = cancel | e.Cancel;
                    e.Cancel = cancel;
                }
                catch (Exception ex)                 //TODO: catch block
                {
                    //LogException(source, ex);
                    if (firstException == null)
                    {
                        firstException = ex;
                    }
                }
            }

            if (firstException != null)
            {
                throw firstException;
            }
        }
コード例 #2
0
ファイル: NodeObserver.cs プロジェクト: vlslavik/SenseNet
        internal static void FireOnPermissionChanging(CancellableNodeEventHandler Deleting, Node sender, CancellableNodeEventArgs e, List <Type> disabledObservers)
        {
            InvokeCancelEventHandlers(Deleting, sender, e);
            var observers = NodeTypeManager.Current.NodeObservers;

            if (observers == null)
            {
                return;
            }
            if (disabledObservers == null)
            {
                foreach (NodeObserver observer in observers)
                {
                    observer.OnPermissionChanging(sender, e);
                }
            }
            else
            {
                foreach (NodeObserver observer in observers)
                {
                    if (!disabledObservers.Contains(observer.GetType()))
                    {
                        observer.OnPermissionChanging(sender, e);
                    }
                }
            }
        }
コード例 #3
0
        internal static void FireOnNodeDeletingPhysically(CancellableNodeEventHandler DeletingPhysically, Node sender, CancellableNodeEventArgs e, List <Type> disabledObservers)
        {
            InvokeCancelEventHandlers(DeletingPhysically, sender, e);
            var observers = Providers.Instance.NodeObservers;

            if (observers == null)
            {
                return;
            }
            if (disabledObservers == null)
            {
                foreach (NodeObserver observer in observers)
                {
                    observer.OnNodeDeletingPhysically(sender, e);
                }
            }
            else
            {
                foreach (NodeObserver observer in observers)
                {
                    if (!disabledObservers.Contains(observer.GetType()))
                    {
                        observer.OnNodeDeletingPhysically(sender, e);
                    }
                }
            }
        }
コード例 #4
0
 internal static void FireOnPermissionChanging(CancellableNodeEventHandler PermissionChanging, Node sender, CancellablePermissionChangingEventArgs e, List <Type> disabledObservers)
 {
     InvokeCancelEventHandlers(PermissionChanging, sender, e);
     FireNodeEvent(disabledObservers, observer => { observer.OnPermissionChanging(sender, e); });
 }
コード例 #5
0
 internal static void FireOnNodeDeletingPhysically(CancellableNodeEventHandler DeletingPhysically, Node sender, CancellableNodeEventArgs e, List <Type> disabledObservers)
 {
     InvokeCancelEventHandlers(DeletingPhysically, sender, e);
     FireNodeEvent(disabledObservers, observer => { observer.OnNodeDeletingPhysically(sender, e); });
 }
コード例 #6
0
 internal static void FireOnNodeModifying(CancellableNodeEventHandler Modifying, Node sender, CancellableNodeEventArgs e, List <Type> disabledObservers)
 {
     InvokeCancelEventHandlers(Modifying, sender, e);
     FireNodeEvent(disabledObservers, observer => { observer.OnNodeModifying(sender, e); });
 }
コード例 #7
0
ファイル: NodeObserver.cs プロジェクト: pianomanx/sensenet
 public static void FireOnNodeRestoring(CancellableNodeEventHandler Restoring, Node sender, CancellableNodeEventArgs e, List <Type> disabledObservers)
 {
     InvokeCancelEventHandlers(Restoring, sender, e);
     FireNodeEvent(disabledObservers, observer => { observer.OnNodeRestoring(sender, e); });
 }