예제 #1
0
        private void TreeControllerBase_MenuRendering(TreeControllerBase sender, MenuRenderingEventArgs e)
        {
            if (sender.TreeAlias != "content")
            {
                return;
            }

            var nodeId      = e.NodeId.ParseInto <int>();
            var contentItem = ApplicationContext.Current.Services.ContentService.GetById(nodeId);

            if (contentItem == null || (contentItem.ContentType.Alias != "home" &&
                                        contentItem.ContentType.Alias != "contentPage" &&
                                        contentItem.ContentType.Alias != "productDetailsPage"))
            {
                return;
            }

            var previewMenuItem =
                new Umbraco.Web.Models.Trees.MenuItem("previewPageContent", "Preview")
            {
                Icon            = "display",
                SeperatorBefore = true
            };

            previewMenuItem.AdditionalData.Add("actionView", "/App_Plugins/PreviewContextAction/previewcontextaction.html");
            previewMenuItem.AdditionalData.Add("pageId", contentItem.Id);
            previewMenuItem.AdditionalData.Add("websiteRootUrl", _websiteRootUrl);
            previewMenuItem.AdditionalData.Add("previewToken", _previewToken);
            e.Menu.Items.Insert(3, previewMenuItem);
        }
 void TreeControllerBase_MenuRendering(TreeControllerBase sender, MenuRenderingEventArgs e)
 {
     if (Config.RunningOnCloud())
     {
         if (sender.TreeAlias == "content" &&
             e.NodeId != "-1" && e.NodeId != "-20")
         {
             var mi = new MenuItem("pageNotFound", "404 page - Not Licensed For Cloud");
             mi.Icon = "dollar-bag";
             mi.LaunchDialogView("/App_Plugins/PageNotFoundManager/Backoffice/Dialogs/cloud.html", "404 Page");
             mi.SeperatorBefore = true;
             e.Menu.Items.Insert(e.Menu.Items.Count - 1, mi);
         }
     }
     else
     {
         if (sender.TreeAlias == "content" &&
             sender.Security.CurrentUser.UserType.Alias == "admin" &&
             e.NodeId != "-1" && e.NodeId != "-20")
         {
             var mi = new MenuItem("pageNotFound", "404 page");
             mi.Icon = "document";
             mi.LaunchDialogView("/App_Plugins/PageNotFoundManager/Backoffice/Dialogs/dialog.html", "404 Page");
             mi.SeperatorBefore = true;
             e.Menu.Items.Insert(e.Menu.Items.Count - 1, mi);
         }
     }
 }
        private void ContentTreeController_MenuRendering(TreeControllerBase sender, MenuRenderingEventArgs e)
        {
            if (sender.TreeAlias.InvariantEquals("content") && e.NodeId != "-1")
            {
                bool showMenuItem = sender.Security.CurrentUser.Groups.Any(x => x.Alias.InvariantEquals("admin"));

                if (!showMenuItem && int.TryParse(e.NodeId, out int nodeId))
                {
                    var permissions = sender.Services.UserService.GetPermissions(sender.Security.CurrentUser, nodeId);
                    var letter      = LinkedPages.PermissionLetter;
                    if (permissions.Any(x => x.AssignedPermissions.InvariantContains(letter)))
                    {
                        showMenuItem = true;
                    }
                }

                if (showMenuItem)
                {
                    var linkedItemsItem = new MenuItem("linkedPages", "Linked Pages")
                    {
                        Icon            = "link",
                        SeperatorBefore = true
                    };

                    linkedItemsItem.AdditionalData.Add("actionView", "/App_Plugins/LinkedPages/linkedDialog.html");

                    e.Menu.Items.Insert(e.Menu.Items.Count - 1, linkedItemsItem);
                }
            }
        }
예제 #4
0
 void TreeControllerBase_RootNodeRendering(TreeControllerBase sender, TreeNodeRenderingEventArgs e)
 {
     if (sender.TreeAlias == Constants.Trees.LogViewer)
     {
         e.Node.CssClasses.Add("hide-section-tree");
     }
 }
예제 #5
0
        private static void AddPreviewMenuItem(TreeControllerBase sender, MenuRenderingEventArgs e)
        {
            var section        = e.QueryStrings.Get("section");
            var treeType       = e.QueryStrings.Get("treeType");
            var isDocumentType = section == "settings" && (treeType == "nodeTypes" || treeType == "mediaTypes");

            if (!isDocumentType || e.NodeId == "-1")
            {
                return;
            }

            var insertAfter = e.Menu.Items.FirstOrDefault(extItem => extItem.Alias == "exportDocumentType");

            //creates a menu action that will open /umbraco/currentSection/itemAlias.html
            var i = new MenuItem("previewModelClass", "Preview CodeGen class");

            i.AdditionalData.Add("actionRoute", "settings/codegen/codegen.preview/" + e.NodeId);
            i.Icon = "brackets";

            if (insertAfter != null)
            {
                e.Menu.Items.Insert(e.Menu.Items.IndexOf(insertAfter) + 1, i);
            }
            else
            {
                e.Menu.Items.Add(i);
            }
        }
예제 #6
0
 private void TreeControllerBaseOnMenuRendering(TreeControllerBase sender, MenuRenderingEventArgs e)
 {
     if (sender.TreeAlias == "media" &&
         sender.Security.CurrentUser.UserType.Alias == "admin" &&
         e.NodeId != "-1" && e.NodeId != "-21")
     {
         var menuItem = new MenuItem()
         {
             Alias           = "mediaExporter",
             Name            = "Export Media",
             Icon            = "zip",
             SeperatorBefore = true
         };
         menuItem.LaunchDialogView("/App_Plugins/MediaExporter/Backoffice/Dialogs/dialog.html",
                                   "Media Exporter");
         e.Menu.Items.Insert(e.Menu.Items.Count - 1, menuItem);
     }
     else if (e.NodeId == "-1")
     {
         var menuItem = new MenuItem()
         {
             Alias           = "mediaExporter",
             Name            = "Export All Media",
             Icon            = "zip",
             SeperatorBefore = true
         };
         menuItem.LaunchDialogView("/App_Plugins/MediaExporter/Backoffice/Dialogs/exportAll.html", "Media Exporter");
         e.Menu.Items.Insert(e.Menu.Items.Count - 1, menuItem);
     }
 }
        private void ContentTreeController_MenuRendering(TreeControllerBase sender, MenuRenderingEventArgs e)
        {
            //If it's the content tree
            if (sender.TreeAlias == "content")
            {
                //If the current user is allowed in the translation section
                if (sender.Services.SectionService.GetAllowedSections(sender.Security.GetUserId())
                    .Count(s => s.Alias.InvariantEquals("translation")) > 0)
                {
                    //Get old translation item and remove it
                    var oldMenuItem = e.Menu.Items.SingleOrDefault(m => m.Alias == "sendToTranslate");
                    if (oldMenuItem != null)
                    {
                        e.Menu.Items.Remove(oldMenuItem);
                    }

                    //Adds 2 new items at the top of the list
                    var sendToTranslationItem = new MenuItem("sendToNuTranslate", "Send to Translatiion");
                    sendToTranslationItem.LaunchDialogView("/App_Plugins/NuTranslation/views/sendforTranslation.html", "Send to Translation");
                    sendToTranslationItem.Icon = "flag-alt";
                    e.Menu.Items.Insert(0, sendToTranslationItem);

                    var translationHistoryItem = new MenuItem("translationHistory", "Translation History");
                    translationHistoryItem.LaunchDialogView("/App_Plugins/NuTranslation/views/translationHistory.html", "Translation History");
                    translationHistoryItem.Icon = "list";
                    e.Menu.Items.Insert(1, translationHistoryItem);

                    //Add separator before next menu item
                    e.Menu.Items[2].SeperatorBefore = true;
                }
            }
        }
        private void TreeControllerBase_MenuRendering(TreeControllerBase sender, MenuRenderingEventArgs e)
        {
            if (sender.TreeAlias == "content")
            {
                var nodeId      = e.NodeId;
                var contentItem = _umbracoContextAccessor.UmbracoContext.ContentCache.GetById(int.Parse(nodeId));

                if (contentItem != null)
                {
                    var menuItem = new Umbraco.Web.Models.Trees.MenuItem("autoTranslate", "Auto Translate..");
                    menuItem.Icon            = "globe-inverted-europe-africa";
                    menuItem.SeparatorBefore = true;
                    menuItem.AdditionalData.Add("actionView", "/App_Plugins/AutoTranslate/autotranslate.content.html");
                    var menuPosition = e.Menu.Items.Count - 1;
                    e.Menu.Items.Insert(menuPosition, menuItem);
                }
            }
            else if (sender.TreeAlias == "dictionary")
            {
                var menuItem = new Umbraco.Web.Models.Trees.MenuItem("autoTranslate", "Auto Translate..");
                menuItem.Icon            = "globe-inverted-europe-africa";
                menuItem.SeparatorBefore = true;
                menuItem.AdditionalData.Add("actionView", "/App_Plugins/AutoTranslate/autotranslate.dictionary.html");
                var menuPosition = e.Menu.Items.Count - 1;
                e.Menu.Items.Insert(menuPosition, menuItem);
            }
        }
        private void ContentTreeController_TreeNodesRendering(TreeControllerBase sender, TreeNodesRenderingEventArgs e)
        {
            if (e.QueryStrings.Contains(new System.Collections.Generic.KeyValuePair <string, string>("application", "content")) &&
                e.QueryStrings["isDialog"].Equals("false") &&
                string.IsNullOrWhiteSpace(e.QueryStrings["id"]) == false &&
                e.QueryStrings["id"] != "-1")
            {
                var content = sender.Services.ContentService.GetById(int.Parse(e.QueryStrings["id"]));

                for (var i = e.Nodes.Count - 1; i > -1; i--)
                {
                    var treeNode = e.Nodes[i];

                    if (treeNode.AdditionalData.ContainsKey("contentType"))
                    {
                        if (content.IsInListView(treeNode.AdditionalData["contentType"].ToString()))
                        {
                            e.Nodes.RemoveAt(i);
                            continue;
                        }

                        if (treeNode.HasChildren)
                        {
                            var node = sender.Services.ContentService.GetById(int.Parse(treeNode.Id.ToString()));
                            treeNode.HasChildren = node.TreeChildren().Any();
                        }
                    }
                }
            }
        }
예제 #10
0
        private void ContentTreeController_MenuRendering(TreeControllerBase sender, MenuRenderingEventArgs e)
        {
            var textService    = DependencyResolver.Current.GetService <ILocalizedTextService>();
            var userService    = DependencyResolver.Current.GetService <IUserService>();
            var umbracoContext = DependencyResolver.Current.GetService <UmbracoContext>();

            if (int.TryParse(e.NodeId, out int nodeId))
            {
                switch (sender.TreeAlias)
                {
                case Constants.Trees.Media:
                    if (nodeId != 0 &&
                        nodeId != Constants.System.RecycleBinMedia &&
                        nodeId != Constants.System.Root)
                    {
                        var deleteIndex = e.Menu.Items.FindIndex(x => x.Alias == "delete");

                        var i = new MenuItem
                        {
                            Alias = "convertNode",
                            Name  = textService?.Localize("mediaCopy/copy"),
                            Icon  = "documents"
                        };
                        i.LaunchDialogView("/App_Plugins/MediaCopy/backoffice/mediaCopy/mediaCopy.html",
                                           textService?.Localize("mediaCopy/copy"));

                        if (HasTreePermission(userService, umbracoContext, nodeId, ActionCopy.Instance.Letter.ToString()))
                        {
                            e.Menu.Items.Insert(deleteIndex, i);
                        }
                    }
                    break;
                }
            }
        }
        private void TreeControllerBase_MenuRendering(TreeControllerBase sender, MenuRenderingEventArgs e)
        {
            var treeAlias      = sender.TreeAlias;
            var dialogViewPath = "/App_Plugins/Skybrud.Umbraco.ContextMenu.Media/Views/downloadMediaFolder.html";
            var title          = "Download Media Folder";


            if (treeAlias.ToLower() == "media")
            {
                var nodeId = 0;
                int.TryParse(e.NodeId, out nodeId);

                var media = sender.Services.MediaService.GetById(nodeId);

                if (media != null && !media.Trashed)
                {
                    if (media.ContentType.Alias.ToLower() == "folder")
                    {
                        var downloadItem = new MenuItem();

                        downloadItem.Alias           = "downloadMediaFolder";
                        downloadItem.Icon            = "page-down";
                        downloadItem.Name            = "Download folder";              //TODO: translate with localization
                        downloadItem.SeperatorBefore = true;
                        downloadItem.LaunchDialogView(dialogViewPath, title);


                        //e.Menu.Items.Add(downloadItem);
                        e.Menu.Items.Insert(e.Menu.Items.Count - 1, downloadItem);                         //place just before "Reload nodes"
                    }
                }
            }
        }
예제 #12
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void TreeControllerBase_TreeNodesRendering(TreeControllerBase sender, TreeNodesRenderingEventArgs e)
        {
            if (!(sender.TreeAlias == Umbraco.Core.Constants.Applications.Content))
            {
                return;
            }

            var settings = _settingsService.GetActiveSettings();

            foreach (TreeNode treeNode in e.Nodes)
            {
                int id = Convert.ToInt32(treeNode.Id);
                IPublishedContent node = null;

                if (id > 0)
                {
                    node = sender.UmbracoContext.Content.GetById(id);
                }

                if (node != null)
                {
                    AddClassesToNode(treeNode, node, settings);
                }
            }
        }
예제 #13
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void TreeControllerBase_TreeNodesRendering(TreeControllerBase sender, TreeNodesRenderingEventArgs e)
        {
            return;

            //Get Current User
            var currentUser = User.GetCurrent();

            //This will only run on the ultimatree & if the user is NOT admin
            if (sender.TreeAlias.ToLower() == "ultimatree" && !currentUser.IsAdmin())
            {
                //setting node to remove
                var settingNode = e.Nodes.SingleOrDefault(x => x.Id.ToString() == "settings");

                //Ensure we found the node
                if (settingNode != null)
                {
                    //Remove the settings node from the collection
                    e.Nodes.Remove(settingNode);
                }
            }

            //This will only run on the ultimatree
            if (sender.TreeAlias.ToLower() == "ultimatree")
            {
            }
        }
예제 #14
0
        void ContentTreeController_MenuRendering(TreeControllerBase sender, MenuRenderingEventArgs e)
        {
            if (sender.TreeAlias != Constants.Applications.Content)
            {
                return;
            }

            var node = new Node(e.NodeId.ParseInto <int>());



            var i = new Umbraco.Web.Models.Trees.MenuItem("notifyApp", "Push Notification to App");

            i.AdditionalData.Add("actionView", "/App_Plugins/Notifications/nofication.html");
            i.AdditionalData.Add("nodeId", e.NodeId);
            i.AdditionalData.Add("isMap", node.NodeTypeAlias == "map");
            i.SeperatorBefore = true;
            //i.AdditionalData
            switch (node.NodeTypeAlias)
            {
            case "timeline":
                i.Icon = "globe-inverted-europe-africa";
                break;

            case "map":
                i.Icon = "globe-europe---africa";
                break;
            }

            if (node.NodeTypeAlias == "timeline" || node.NodeTypeAlias == "map")
            {
                e.Menu.Items.Insert(0, i);
            }
        }
예제 #15
0
        // A context menu is rendering.
        void TreeControllerBase_MenuRendering(TreeControllerBase sender, MenuRenderingEventArgs e)
        {
            // Variables.
            var path  = "/App_Plugins/UserGroupPermissions/Views/SetUserGroupPermissions.html";
            var title = "User Group Permissions";

            // Initial check (in content tree and on a node).
            IUser currentUser  = sender.Security.CurrentUser;
            var   showMenuItem = sender.TreeAlias == "content";
            var   strNodeId    = e.NodeId;
            var   nodeId       = default(int);

            if (showMenuItem && int.TryParse(strNodeId, out nodeId))
            {
                showMenuItem = nodeId >= 0;
            }
            else
            {
                showMenuItem = false;
            }

            // Check permissions for non-admin users.
            if (showMenuItem && !currentUser.IsAdmin())
            {
                showMenuItem = false;
                var userService = ApplicationContext.Current.Services.UserService;
                var permissions = userService.GetPermissions(currentUser, nodeId);
                var letter      = MenuActions.UserGroupPermissions.Instance.Letter.ToString();
                if (permissions.Any(x => x.AssignedPermissions.InvariantContains(letter)))
                {
                    showMenuItem = true;
                }
            }

            // Add a custom menu item in the content tree.
            if (showMenuItem)
            {
                var menuItem = new MenuItem("UserGroupPermissions", "User Group Permissions")
                {
                    Icon = "vcard"
                };

                menuItem.LaunchDialogView(path, title);

                var permissionsIndex = e.Menu.Items.FindIndex(x =>
                                                              "Permissions".InvariantEquals(x.Name) ||
                                                              "Permissions".InvariantEquals(x.Alias));

                // Attempt to insert after the existing "Permissions" menu item.
                if (permissionsIndex >= 0)
                {
                    e.Menu.Items.Insert(permissionsIndex + 1, menuItem);
                }
                else
                {
                    e.Menu.Items.Add(menuItem);
                }
            }
        }
예제 #16
0
 public static void ContentTreeController_MenuRendering(TreeControllerBase sender, MenuRenderingEventArgs e)
 {
     if (sender.TreeAlias == "content")
     {
         CloudPurgeMenuItem.LaunchDialogView("/App_Plugins/CloudPurge/action.html",
                                             LocalizedTextService.Localize("cloudpurge/action"));
         e.Menu.Items.Add(CloudPurgeMenuItem);
     }
 }
예제 #17
0
        /// <summary>
        /// Here we can manipulate nodes of other trees
        /// </summary>
        void TreeControllerBase_TreeNodesRendering(TreeControllerBase sender, TreeNodesRenderingEventArgs e)
        {
            //TODO: Generate A/B testing related context menu items for the Cotnent nodes

            //ex below deletes some nodes
            //if (sender.TreeAlias == "content")
            //{
            //    e.Nodes.RemoveAll(t => t.Name.EndsWith("[VARIATION]"));
            //}
        }
 /// <summary>
 /// Add a 'Permissions' menu item to each form under the 'Forms' node
 /// </summary>
 /// <param name="sender">The sender.</param>
 /// <param name="e">The <see cref="MenuRenderingEventArgs"/> instance containing the event data.</param>
 void TreeControllerBase_MenuRendering(TreeControllerBase sender, MenuRenderingEventArgs e)
 {
     if (sender.TreeAlias == "form" && e.NodeId != "-1")
     {
         var m = new MenuItem("form-permissions", "Permissions");
         m.Icon = umbraco.BusinessLogic.Actions.ActionRights.Instance.Icon;
         m.LaunchDialogUrl(VirtualPathUtility.ToAbsolute("~/") + GlobalSettings.UmbracoMvcArea + "/backoffice/FormPermissions/" + e.NodeId, "Form permissions");
         e.Menu.Items.Add(m);
     }
 }
        private void TreeControllerBase_MenuRendering(TreeControllerBase sender, MenuRenderingEventArgs e)
        {
            int nodeId;

            if (!int.TryParse(e.NodeId, out nodeId))
            {
                return;
            }

            var selectedMedia = ApplicationContext.Current.Services.MediaService.GetById(nodeId);
            var mediaType     = selectedMedia != null ? selectedMedia.ContentType.Alias : string.Empty;

            if (sender.TreeAlias == "media" && (mediaType.Equals("Folder") || nodeId == Constants.System.Root))
            {
                var umbracoHelper = new Umbraco.Web.UmbracoHelper(Umbraco.Web.UmbracoContext.Current);
                var menuItemTitle = umbracoHelper.GetDictionaryValue("ZippyMedia.Labels.UploadZipFile");

                if (string.IsNullOrWhiteSpace(menuItemTitle))
                {
                    menuItemTitle = "Upload and Unpack ZIP";
                }
                var menuItem = new MenuItem("uploadZipFile", menuItemTitle)
                {
                    Icon            = "compress",
                    SeperatorBefore = true
                };
                menuItem.LaunchDialogView("/App_Plugins/zippyMedia/Views/Upload-Zip.html", menuItemTitle);

                e.Menu.Items.Add(menuItem);
            }



            //Upload from server AKA ftp upload comming soon
            //if (sender.TreeAlias == "media" && mediaType.Equals("Folder") && sender.Security.CurrentUser.UserType.Alias.Equals("admin"))
            //{
            //    var menuItem = new MenuItem("unpackZipFileFromServer", "Unpack ZIP from server");
            //    menuItem.Icon = "server";
            //    menuItem.SeperatorBefore = false;
            //    menuItem.LaunchDialogView("/App_Plugins/zippyMedia/Views/Unpack-Zip.html", "Unpack ZIP archive from server");

            //    e.Menu.Items.Add(menuItem);
            //}

            //if (sender.TreeAlias == "media" && Convert.ToInt32(e.NodeId) == Constants.System.Root && sender.Security.CurrentUser.UserType.Alias.Equals("admin"))
            //{
            //    var menuItem = new MenuItem("unpackZipFileFromServer", "Unpack ZIP from server");
            //    menuItem.Icon = "server";
            //    menuItem.SeperatorBefore = false;
            //    menuItem.LaunchDialogView("/App_Plugins/zippyMedia/Views/Unpack-Zip.html", "Unpack ZIP archive from server");

            //    e.Menu.Items.Add(menuItem);

            //}
        }
예제 #20
0
        public void TreeControllerBase_MenuRendering(TreeControllerBase sender, MenuRenderingEventArgs e)
        {
            //if (sender.TreeAlias == "content")
            //{
            //var i = new MenuItem("editCanvas", "Edit in Canvas");
            //i.Icon = "edit";
            //i.LaunchDialogUrl("/umbraco/canvas?pageId=" + e.NodeId,"Edit in Canvas");

            //e.Menu.Items.Insert(3,i);
            //}
        }
예제 #21
0
        /// <summary>
        /// Handles rendering of the context menu.
        /// </summary>
        private void Handle_RenderContextMenu(TreeControllerBase sender, MenuRenderingEventArgs e)
        {
            // Variables.
            var alias  = sender.TreeAlias;
            var items  = e.Menu.Items;
            var nodeId = e.NodeId;
            var guid   = default(Guid);


            // Is this a Formulate context menu?
            if (!"formulate".InvariantEquals(alias))
            {
                return;
            }


            // Is this a GUID (the root has "-1")?
            if (Guid.TryParse(nodeId, out guid))
            {
                // Variables.
                var persistence = EntityPersistence.Current.Manager;
                var entity      = persistence.Retrieve(guid);


                // Is this a non-root entity (e.g., a form, validation, folder, etc.)?
                if (entity != null && entity.GetType() != typeof(EntityRoot))
                {
                    // Add the "Store to Umbraco Cloud" menu item.
                    var path     = "/App_Plugins/formulate/menu-actions/storeEntityToCloud.html";
                    var menuItem = new MenuItem()
                    {
                        Alias           = "storeEntityToCloud",
                        Icon            = "cloud-upload",
                        Name            = "Store to Umbraco Cloud",
                        SeperatorBefore = true
                    };
                    menuItem.LaunchDialogView(path, "Store to Umbraco Cloud");
                    items.Add(menuItem);


                    // Add the "Remove from Cloud" menu item.
                    path     = "/App_Plugins/formulate/menu-actions/removeEntityFromCloud.html";
                    menuItem = new MenuItem()
                    {
                        Alias = "removeEntityFromCloud",
                        Icon  = "rain",
                        Name  = "Remove from Cloud"
                    };
                    menuItem.LaunchDialogView(path, "Remove from Umbraco Cloud");
                    items.Add(menuItem);
                }
            }
        }
예제 #22
0
        /// <summary>
        /// Rules visualisation in umbraco backoffice
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void TreeControllerBase_TreeNodesRendering(TreeControllerBase sender, TreeNodesRenderingEventArgs e)
        {
            if (KeepOutRulesFolderId == 0)
            {
                return;
            }
            if (!VisualiseRules)
            {
                return;
            }
            if (sender.TreeAlias != "content")
            {
                return;
            }

            using (var context = _factory.EnsureUmbracoContext())
            {
                foreach (var node in e.Nodes)
                {
                    var intCurrentNodeId = int.Parse(node.Id.ToString());
                    var page             = context.UmbracoContext.Content.GetById(intCurrentNodeId);
                    if (page == null)
                    {
                        continue;
                    }

                    // if the current node is secured by a rule (or is the rule itself), colour the node
                    var isRule  = page.ContentType.Alias == "keepOutSecurityRule";
                    var path    = page.Path.Split(',').ToList();
                    var hasRule = RulesPages.Intersect(path).ToList();
                    if (!hasRule.Any() && !isRule)
                    {
                        continue;
                    }

                    node.CssClasses.Add("keepout");
                    if (isRule)
                    {
                        // node is the rule itself
                        var ruleColour = page.GetProperty("coverageColour").GetValue() as ColorPickerValueConverter.PickedColor;
                        node.CssClasses.Add($"keepout-{ruleColour.Label}");
                        node.CssClasses.Add("keepoutrule");
                    }
                    else
                    {
                        // node is content that is covered by a rule
                        var ruleNdx    = RulesPages.IndexOf(hasRule.Last()); // if multiple rules overlap, last wins
                        var activeRule = Rules[ruleNdx];
                        node.CssClasses.Add(activeRule.CoverageColour);
                    }
                }
            }
        }
예제 #23
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void TreeControllerBase_TreeNodesRendering(TreeControllerBase sender, TreeNodesRenderingEventArgs e)
        {
            //Get Current User
            var currentUser = User.GetCurrent();

            //This will only run on the analyticsTree & if the user is NOT admin
            if (sender.TreeAlias == "analyticsTree" && !currentUser.IsAdmin())
            {
                //setting node to remove
                var settingNode = e.Nodes.SingleOrDefault(x => x.Id.ToString() == "settings");

                //Ensure we found the node
                if (settingNode != null)
                {
                    //Remove the settings node from the collection
                    e.Nodes.Remove(settingNode);
                }
            }

            //This will only run on the analyticsTree
            if (sender.TreeAlias == "analyticsTree")
            {
                AnalyticsApiController gaApi = new AnalyticsApiController();

                Profile profile = AnalyticsHelpers.GetProfile();

                if (profile != null)
                {
                    var ecommerceNode = e.Nodes.SingleOrDefault(x => x.Id.ToString() == "ecommerce");
                    if (ecommerceNode != null)
                    {
                        try
                        {
                            // check if profile has any ecommerce data for last 3 years
                            StatsApiResult transactions = gaApi.GetTransactions(profile.Id, DateTime.Now.AddYears(-3), DateTime.Now);
                            if (!transactions.ApiResult.Rows.Any())
                            {
                                //Remove the ecommerce node from the collection
                                //If no Rows returned from API - then remove the node from the tree
                                e.Nodes.Remove(ecommerceNode);
                            }
                        }
                        catch
                        {
                            //Remove the ecommerce node from the collection
                            //If the API throws an ex then remove the node from the tree as well
                            e.Nodes.Remove(ecommerceNode);
                        }
                    }
                }
            }
        }
        private void ContentTreeController_MenuRendering(TreeControllerBase sender, MenuRenderingEventArgs e)
        {
            if (sender.TreeAlias == "content")
            {
                var publishItem = new MenuItem("queue", "Send to Publication Queue");
                publishItem.Icon            = "indent";
                publishItem.SeperatorBefore = true;
                publishItem.AdditionalData.Add("actionView",
                                               "/App_Plugins/PublishQueue/sendtoqueue.html?id={id}");

                e.Menu.Items.Insert(e.Menu.Items.Count - 1, publishItem);
            }
        }
예제 #25
0
        private void OnMenuRendeing(TreeControllerBase sender,
                                    MenuRenderingEventArgs e)
        {
            if (sender.TreeAlias == "content")
            {
                var culture = CultureInfo.CurrentCulture;
                var label   = sender.Services.TextService.Localize("menu2", culture);

                e.Menu.Items.Add <CustomMenuItem, CustomAction>("Custom");
                var menuItem = new MenuItem("menu2", label);
                menuItem.NavigateToRoute("orders/ordersTree/create");
                e.Menu.Items.Add(menuItem);
            }
        }
예제 #26
0
        private void TreeControllerBase_MenuRendering(TreeControllerBase sender, MenuRenderingEventArgs e)
        {
            var path  = "/App_Plugins/UploadContent/UploadContent.html";
            var title = "Upload Content to Remote Server";

            var menu = new MenuItem();

            menu.Icon            = "wine-glass";
            menu.SeperatorBefore = true;

            menu.LaunchDialogView(path, title);

            e.Menu.Items.Add(menu);
        }
        private void TreeControllerBase_MenuRendering(TreeControllerBase sender, MenuRenderingEventArgs e)
        {
            var tree = sender.TreeAlias;

            if (sender.TreeAlias == "documentTypes")
            {
                //update create option to use the Super Create view
                var existingCreateOption = e.Menu.Items.Where(f => f.Alias == "create").FirstOrDefault();
                if (existingCreateOption != null)
                {
                    existingCreateOption.AdditionalData["actionView"] = "/App_Plugins/Moriyama.SuperDocTypeCreate/create.html";
                }
            }
        }
        private void FilterTreeNodes(TreeControllerBase sender, TreeNodesRenderingEventArgs e)
        {
            if (!Features.HideCodeFirstEntityTypesInTrees)
            {
                return;
            }
            string alias;

            try
            {
                alias = sender.TreeAlias == null?e.QueryStrings.Single(x => x.Key.InvariantEquals("treeType")).Value : sender.TreeAlias;
            }
            catch (Exception ex)
            {
                throw new CodeFirstException("No valid legacy or new-style tree alias found for a rendering tree.", ex);
            }

            if (!Modules.IsFrozen)
            {
                throw new CodeFirstException("The module resolver is not frozen. Cannot filter tree nodes.");
            }

            lock (_treeFilterLock)
            {
                if (!_treeFilters.ContainsKey(alias))
                {
                    var list = new List <IEntityTreeFilter>();
                    _treeFilters.Add(alias, list);
                    foreach (var module in Modules)
                    {
                        if (module is IEntityTreeFilter && (module as IEntityTreeFilter).IsFilter(alias))
                        {
                            list.Add(module as IEntityTreeFilter);
                        }
                    }
                }
            }

            bool changesMade = false;

            foreach (var module in _treeFilters[alias])
            {
                module.Filter(e.Nodes, out changesMade);
            }

            if (changesMade)
            {
                //TODO show toast somehow? - functionality due in 7.3.0 - http://issues.umbraco.org/issue/U4-5927
            }
        }
예제 #29
0
 void TreeControllerBase_MenuRendering(TreeControllerBase sender, MenuRenderingEventArgs e)
 {
     if (sender.TreeAlias == "content")
     {
         var url = "preview/?id=" + e.NodeId;
         var m   = new MenuItem()
         {
             Name            = "Preview",
             Icon            = "eye",
             SeperatorBefore = true,
         };
         m.ExecuteLegacyJs("top.window.open(' " + url + "', 'preview');");
         e.Menu.Items.Insert(2, m);
     }
 }
예제 #30
0
        /// <summary>
        /// Extend dropdownMenu with Tinify and Stats buttons
        /// </summary>
        /// <param name="sender">TreeControllerBase</param>
        /// <param name="e">EventArgs</param>
        private void MenuRenderingHandler(TreeControllerBase sender, MenuRenderingEventArgs e)
        {
            if (string.Equals(sender.TreeAlias, PackageConstants.MediaAlias, StringComparison.OrdinalIgnoreCase))
            {
                var menuItemTinifyButton = new MenuItem(PackageConstants.TinifierButton, PackageConstants.TinifierButtonCaption);
                menuItemTinifyButton.LaunchDialogView(PackageConstants.TinyTImageRoute, PackageConstants.SectionName);
                menuItemTinifyButton.Icon = PackageConstants.MenuIcon;
                e.Menu.Items.Add(menuItemTinifyButton);

                var menuItemSettingsButton = new MenuItem(PackageConstants.StatsButton, PackageConstants.StatsButtonCaption);
                menuItemSettingsButton.LaunchDialogView(PackageConstants.TinySettingsRoute, PackageConstants.StatsDialogCaption);
                menuItemSettingsButton.Icon = PackageConstants.MenuSettingsIcon;
                e.Menu.Items.Add(menuItemSettingsButton);
            }
        }