示例#1
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")
            {
            }
        }
示例#2
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]"));
            //}
        }
示例#3
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);
                        }
                    }
                }
            }
        }
示例#4
0
 /// <summary>
 /// Loops through the nodes and updates the icon to the one from the type service
 /// </summary>
 /// <param name="e">Event args</param>
 /// <param name="nodeIcons">Dictionary of node icons</param>
 /// <param name="nodeTypeAlias">The node type alias we are interested in</param>
 private static void UpdateNodeIcons(TreeNodesRenderingEventArgs e, Dictionary <int, string> nodeIcons, string nodeTypeAlias)
 {
     foreach (var node in e.Nodes)
     {
         if (node.NodeType == nodeTypeAlias)
         {
             if (int.TryParse(node.Id.ToString(), out var nodeId) && nodeId > 0)
             {
                 node.Icon = nodeIcons[nodeId];
             }
         }
     }
 }
        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
            }
        }
        void TreeControllerBase_TreeNodesRendering(TreeControllerBase sender, TreeNodesRenderingEventArgs e)
        {
            var db = sender.ApplicationContext.DatabaseContext.Database;

            if (sender.TreeAlias == "content")
            {
                foreach (var node in e.Nodes)
                {
                    var query = new Sql().Select("*").From("lookwhoseditingnow").Where <Edit>(x => x.NodeId == (int)node.Id && x.UserId != sender.Security.CurrentUser.Id);
                    if (db.Fetch <Edit>(query).Any())
                    {
                        node.CssClasses.Add("look-whos-editing-too");
                    }
                }
            }
            else
            {
                db.Execute("DELETE FROM lookwhoseditingnow WHERE userid=@0", sender.Security.CurrentUser.Id);
            }
        }
示例#7
0
        void TreeControllerBase_TreeNodesRendering(TreeControllerBase sender, TreeNodesRenderingEventArgs e)
        {
            if (sender.TreeAlias == "vendr" && e.QueryStrings["nodeType"] == Vendr.Core.Constants.Entities.EntityTypes.Store)
            {
                var index     = e.Nodes.Count;
                var mainRoute = "commerce/vendrreviews";

                var storeId = e.QueryStrings["id"];
                var id      = Constants.Trees.Reviews.Id;

                var reviewsNode = sender.CreateTreeNode(id, storeId, e.QueryStrings, "Reviews", Constants.Trees.Reviews.Icon, false, $"{mainRoute}/review-list/{storeId}");

                reviewsNode.Path     = $"-1,{storeId},{id}";
                reviewsNode.NodeType = Constants.Trees.Reviews.NodeType;

                reviewsNode.AdditionalData.Add("storeId", storeId);
                reviewsNode.AdditionalData.Add("tree", Vendr.Web.Constants.Trees.Stores.Alias);
                reviewsNode.AdditionalData.Add("application", Vendr.Web.Constants.Sections.Commerce);

                e.Nodes.Insert(index, reviewsNode);
            }
        }
        void TreeControllerBase_TreeNodesRendering(TreeControllerBase sender, TreeNodesRenderingEventArgs e)
        {
            if (sender.TreeAlias == Vendr.Core.Constants.System.ProductAlias && e.QueryStrings["nodeType"] == Vendr.Core.Constants.Entities.EntityTypes.Store)
            {
                var mainRoute = Vendr.Umbraco.Constants.Sections.Commerce + "/" + Constants.System.ProductAlias;

                var storeId = e.QueryStrings["id"];
                var id      = Constants.Trees.Reviews.Id;

                var reviewsNode = sender.CreateTreeNode(id, storeId, e.QueryStrings, "Reviews", Constants.Trees.Reviews.Icon, false, $"{mainRoute}/review-list/{storeId}");

                reviewsNode.Path     = $"-1,{storeId},{id}";
                reviewsNode.NodeType = Constants.Trees.Reviews.NodeType;

                reviewsNode.AdditionalData.Add("storeId", storeId);
                reviewsNode.AdditionalData.Add("tree", Vendr.Umbraco.Constants.Trees.Stores.Alias);
                reviewsNode.AdditionalData.Add("application", Vendr.Umbraco.Constants.Sections.Commerce);

                var optNodeIndex = e.Nodes.FindIndex(x => x.NodeType == "Options");
                var index        = optNodeIndex >= 0 ? optNodeIndex : e.Nodes.Count;

                e.Nodes.Insert(index, reviewsNode);
            }
        }
        // Hijack the rendering of each content node to customize the icon shown.
        void TreeControllerBase_TreeNodesRendering(TreeControllerBase sender, TreeNodesRenderingEventArgs e)
        {
            if (sender.TreeAlias == Constants.Trees.Content)
            {
                var customIcons = _contentNodeIconsService.GetIcons();

                foreach (TreeNode treeNode in e.Nodes)
                {
                    int nodeId = Convert.ToInt32(treeNode.Id);
                    if (nodeId <= 0)
                    {
                        continue;
                    }

                    var node = customIcons.Where(x => x.ContentId.Equals(nodeId)).FirstOrDefault();
                    if (node == null)
                    {
                        continue;
                    }

                    treeNode.Icon = $"{node.Icon} {node.IconColor}";
                }
            }
        }
示例#10
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);
                }
            }
        }
示例#11
0
        private void TreeControllerBase_TreeNodesRendering(TreeControllerBase sender, TreeNodesRenderingEventArgs e)
        {
            if (e?.Nodes != null && sender.TreeAlias == "content" && !sender.Security.CurrentUser.Groups.Any((g) => g.Name.ToLower().Equals("admin")))
            {
                var rootId = WebConfigurationManager.AppSettings["nlapp-root-id"];
                if (sender.Umbraco.Content(rootId) is IPublishedContent rootNode)
                {
                    var childPages = rootNode.Children().ToList();

                    foreach (var page in childPages)
                    {
                        var node = e.Nodes.SingleOrDefault(n => n.Id.ToString() == page.Id.ToString() && n.ParentId.ToString() == "-1");
                        if (node != null)
                        {
                            e.Nodes.Remove(node);
                        }
                    }
                }
            }
        }
示例#12
0
        public static void RenderMediaStartNodes(int userId, TreeControllerBase sender, TreeNodesRenderingEventArgs e)
        {
            StartNodeCollection startNodes = StartNodeRepository.GetCachedStartNodesByUserId(userId, sender.ApplicationContext, sender.DatabaseContext);

            if (startNodes.Media == null)
            {
                return;
            }

            if (startNodes.Media.Any())
            {
                // Remove default start nodes
                e.Nodes.Clear();
                IEnumerable <IUmbracoEntity> startNodesEntities = sender.Services.EntityService.GetAll(Umbraco.Core.Models.UmbracoObjectTypes.Media, startNodes.Media);

                foreach (IUmbracoEntity startNodeEntity in startNodesEntities)
                {
                    UmbracoEntity entity = (UmbracoEntity)startNodeEntity;

                    bool isContainer = (entity.AdditionalData.ContainsKey("IsContainer") && entity.AdditionalData["IsContainer"].ToString() == "True");

                    TreeNode node = sender.CreateTreeNode(
                        startNodeEntity.Id.ToInvariantString(),
                        "-1",
                        e.QueryStrings,
                        startNodeEntity.Name,
                        entity.ContentTypeIcon,
                        entity.HasChildren && (isContainer == false)
                        );

                    node.AdditionalData.Add("contentType", entity.ContentTypeAlias);

                    if (isContainer)
                    {
                        node.SetContainerStyle();
                        node.AdditionalData.Add("isContainer", true);
                    }

                    // TODO: How should we order nodes?

                    e.Nodes.Add(node);
                }
            }
        }
示例#13
0
        public static void RenderContentStartNodes(int userId, TreeControllerBase sender, TreeNodesRenderingEventArgs e)
        {
            StartNodeCollection startNodes = StartNodeRepository.GetCachedStartNodesByUserId(userId, sender.ApplicationContext, sender.DatabaseContext);

            if (startNodes.Content == null)
            {
                return;
            }

            if (startNodes.Content.Any())
            {
                // Remove default start nodes
                e.Nodes.Clear();

                IEnumerable <IUmbracoEntity> startNodesEntities = sender.Services.EntityService.GetAll(Umbraco.Core.Models.UmbracoObjectTypes.Document, startNodes.Content);

                // Feels like a lot of duct tape. A lot taken from:
                // https://github.com/umbraco/Umbraco-CMS/blob/5397f2c53acbdeb0805e1fe39fda938f571d295a/src/Umbraco.Web/Trees/ContentTreeController.cs#L75
                foreach (IUmbracoEntity startNodeEntity in startNodesEntities)
                {
                    UmbracoEntity entity = (UmbracoEntity)startNodeEntity;

                    // Not as safe as the approach in core
                    // https://github.com/umbraco/Umbraco-CMS/blob/5397f2c53acbdeb0805e1fe39fda938f571d295a/src/Umbraco.Core/Models/UmbracoEntityExtensions.cs#L34
                    bool isContainer = (entity.AdditionalData.ContainsKey("IsContainer") && entity.AdditionalData["IsContainer"].ToString() == "True");

                    TreeNode node = sender.CreateTreeNode(
                        startNodeEntity.Id.ToInvariantString(),
                        "-1",
                        e.QueryStrings,
                        startNodeEntity.Name,
                        entity.ContentTypeIcon,
                        entity.HasChildren && (isContainer == false)
                        );

                    AddQueryStringsToAdditionalData(node, e.QueryStrings);

                    if (e.QueryStrings.Get("isDialog") == "true")
                    {
                        node.RoutePath = "#";
                    }

                    // TODO: How should we order nodes?

                    e.Nodes.Add(node);
                }
            }
        }
示例#14
0
        private void TreeControllerBaseOnTreeNodesRendering(TreeControllerBase sender, TreeNodesRenderingEventArgs e)
        {
            // this example will filter any content tree node whose node name starts with
            // 'Private', for any user that is of the type 'customUser'

            var ticket = new HttpContextWrapper(HttpContext.Current).GetUmbracoAuthTicket();

            if (ticket != null)
            {
                // Get a list of trees/nodes for Merchello
                var backoffice = MerchelloConfiguration.Current.BackOffice
                                 .GetTrees()
                                 .Where(x => x.Visible)
                                 .ToDictionary(x => x.Id, x => x.ChildSettings.AllSettings().FirstOrDefault(s => s.Alias == "allowedUserGroupAliases"));

                // Get the users groups from the ticket
                var userData     = new { Name = "", Username = "", Roles = new List <string>() };
                var jsonResponse = JsonConvert.DeserializeAnonymousType(ticket.UserData, userData);

                var toRemove = new List <object>();
                foreach (var eNode in e.Nodes)
                {
                    var nodeId = eNode.Id.ToString();
                    if (!string.IsNullOrWhiteSpace(nodeId) && backoffice.ContainsKey(nodeId))
                    {
                        var allowedUserGroups = backoffice[nodeId];
                        if (allowedUserGroups != null && !string.IsNullOrWhiteSpace(allowedUserGroups.Value))
                        {
                            var allowedUserGroupList = allowedUserGroups.Value.Split(',')
                                                       .Select(x => x.Trim())
                                                       .Where(x => !string.IsNullOrWhiteSpace(x))
                                                       .ToArray();

                            var isAllowedAccess = false;
                            foreach (var role in jsonResponse.Roles)
                            {
                                foreach (var s in allowedUserGroupList)
                                {
                                    if (s == role)
                                    {
                                        isAllowedAccess = true;
                                        goto CheckAccess;
                                    }
                                }
                            }
CheckAccess:

                            if (isAllowedAccess == false)
                            {
                                toRemove.Add(eNode.Id);
                            }
                        }
                    }
                }

                if (toRemove.Any())
                {
                    e.Nodes.RemoveAll(x => toRemove.Contains(x.Id));
                }
            }
        }
示例#15
0
        private void TreeControllerBase_TreeNodesRendering(TreeControllerBase sender, TreeNodesRenderingEventArgs e)
        {
            if (!VisualiseRules)
            {
                return;
            }

            switch (sender.TreeAlias)
            {
            case "content":
                foreach (var node in e.Nodes)
                {
                    // if the current node is secured by a rule, find it and colour the node
                    var id = int.Parse(node.Id.ToString());
                    // need IContent object to gain access to Path, node Path is always null :(
                    //var page = ApplicationContext.Current.Services.ContentService.GetById(id);
                    // get IPublishedContent from cache
                    var page = UmbracoContext.Current.ContentCache.GetById(id);
                    if (page == null)
                    {
                        break;
                    }
                    var path    = page.Path.Split(new[] { ',' }).ToList();
                    var hasRule = RulesPages.Intersect(path);
                    if (hasRule.Any())
                    {
                        var ruleIndex  = RulesPages.IndexOf(hasRule.First());    // if multiple rules overlap, take the first
                        var activeRule = Rules[ruleIndex];
                        node.CssClasses.Add("keepout");
                        node.CssClasses.Add(activeRule.Colour);
                    }

                    // colour the actual rule node to indicate the rule assignment
                    if (page.ContentType.Alias == "keepOutSecurityRule")
                    {
                        node.CssClasses.Add("keepout");
                        var colourJson = page.GetProperty("contentColour").DataValue.ToString();
                        node.CssClasses.Add("keepout-" + KeepOutHelper.Json.Deserialize <RuleColour>(colourJson).Label);
                    }
                }

                break;
            }
        }
示例#16
0
        private void TreeControllerBase_TreeNodesRendering(TreeControllerBase sender, TreeNodesRenderingEventArgs e)
        {
            switch (sender.TreeAlias)
            {
            case Constants.Trees.DocumentTypes:
                UpdateNodeIcons(e, _contentTypeService.GetAll()?.ToDictionary(c => c.Id, c => c.Icon), Constants.Trees.DocumentTypes);
                break;

            case Constants.Trees.MemberTypes:
                UpdateNodeIcons(e, _memberTypeService.GetAll()?.ToDictionary(c => c.Id, c => c.Icon), Constants.Trees.MemberTypes);
                break;

            case Constants.Trees.MediaTypes:
                UpdateNodeIcons(e, _mediaTypeService.GetAll()?.ToDictionary(c => c.Id, c => c.Icon), Constants.Trees.MediaTypes);
                break;
            }
        }
示例#17
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);
                    }
                }
            }
        }
        private void TreeControllerBase_TreeNodesRendering(TreeControllerBase sender, TreeNodesRenderingEventArgs e)
        {
            if (sender.TreeAlias == "content" && sender.UmbracoContext.Security.CurrentUser.Groups.Any(x => x.Name.InvariantEquals("Managers")))
            {
                var junk = new List <Umbraco.Web.Models.Trees.TreeNode>();
                foreach (var branch in e.Nodes)
                {
                    var helper = Umbraco.Web.Composing.Current.UmbracoHelper;
                    var node   = helper.Content(branch.Id);

                    if (node != null)
                    {
                        if (node.ContentType.Alias != "totalCodeHomePage" &&
                            node.ContentType.Alias != "totalCodeCategoriesPage" &&
                            node.ContentType.Alias != "totalCodeCategoryPage" &&
                            node.ContentType.Alias != "totalCodeGenericPage" &&
                            node.ContentType.Alias != "totalCodeArticlePage" &&
                            node.ContentType.Alias != "totalCodeArticlePage" &&
                            node.ContentType.Alias != "totalCodeTermsPage" &&
                            node.ContentType.Alias != "totalCodeAffiliatePage")
                        {
                            junk.Add(branch);
                        }
                        if (node.HasProperty("gameType"))
                        {
                            if (node.GetProperty("gameType").Value().ToString() != "Casino")
                            {
                                junk.Add(branch);
                            }
                        }
                    }
                }
                foreach (var j in junk)
                {
                    e.Nodes.Remove(j);
                }
            }
        }
 private void TreeControllerBase_TreeNodesRendering(TreeControllerBase sender, TreeNodesRenderingEventArgs e)
 {
     if (sender.TreeAlias == "documentTypes")
     {
         var contentTypes = _contentTypeService.GetAll().ToDictionary(c => c.Id);
         foreach (var node in e.Nodes)
         {
             if (node.NodeType == "documentTypes")
             {
                 if (int.TryParse(node.Id.ToString(), out var nodeId) && nodeId > 0)
                 {
                     var contentType = contentTypes[nodeId];
                     node.Icon = contentType.Icon;
                 }
             }
         }
     }
 }
示例#20
0
 private void TreeControllerBase_TreeNodesRendering(TreeControllerBase sender, TreeNodesRenderingEventArgs e)
 {
     if (sender.TreeAlias == "form")
     {
         // If this is the 'Entries' node under a form, remove it
         if (e.Nodes.Count == 1 && e.Nodes[0].Name == "Entries")
         {
             e.Nodes.Clear();
         }
         else
         {
             // Otherwise it's the node for a form. 'Entries' was to be its only child,
             // so set HasChildren to false to remove the arrow indicating that the tree can be expanded.
             foreach (var node in e.Nodes)
             {
                 node.HasChildren = false;
             }
         }
     }
 }
示例#21
0
        private void TreeControllerBaseOnTreeNodesRendering(TreeControllerBase sender, TreeNodesRenderingEventArgs eventArgs)
        {
            if (eventArgs.QueryStrings.HasKey("relationEditor"))
            {
                var parentType    = (UmbracoObjectTypes)Enum.Parse(typeof(UmbracoObjectTypes), eventArgs.QueryStrings.Get("parentType"));
                var parentAlias   = eventArgs.QueryStrings.Get("parentTypeAlias");
                var relationAlias = eventArgs.QueryStrings.Get("relationAlias");

                var config = Configuration.Get(parentType, parentAlias);
                if (!config.Enabled)
                {
                    return;
                }

                var relConfig = config.Get(relationAlias);
                if (!relConfig.Enabled)
                {
                    return;
                }

                var childTypes = relConfig.EnabledChildTypes.Select(t => t.Alias).ToArray();

                if (!childTypes.Any())
                {
                    return;
                }

                var relation        = UmbracoContext.Current.Application.Services.RelationService.GetRelationTypeByAlias(relationAlias);
                var childObjectType = UmbracoObjectTypesExtensions.GetUmbracoObjectType(relation.ChildObjectType);

                foreach (var node in eventArgs.Nodes)
                {
                    var id    = Convert.ToInt32(node.Id);
                    var alias = EntityHelper.FindAlias(childObjectType, id);
                    if (!alias.IsNullOrWhiteSpace() && !childTypes.Contains(alias, IgnoreCase))
                    {
                        node.SetNotPublishedStyle();
                        node.AdditionalData.Add("relationDisallowed", "true");
                    }
                }
            }
        }
示例#22
0
        /// <summary>
        /// Checks the tree alias and node alias to see if we should update the icon
        /// Gets the types from the type services and calls the method to update the node icons
        /// </summary>
        /// <param name="sender">Tree controller base</param>
        /// <param name="e">Event args</param>
        private void TreeControllerBase_TreeNodesRendering(TreeControllerBase sender, TreeNodesRenderingEventArgs e)
        {
            switch (sender.TreeAlias)
            {
            case "documentTypes":
                var contentTypeIcons = _contentTypeService.GetAll().ToDictionary(c => c.Id, c => c.Icon);
                UpdateNodeIcons(e, contentTypeIcons, "documentTypes");
                break;

            case "memberTypes":
                var memberTypeIcons = _memberTypeService.GetAll().ToDictionary(c => c.Id, c => c.Icon);
                UpdateNodeIcons(e, memberTypeIcons, "memberTypes");
                break;

            case "mediaTypes":
                var mediaTypeIcons = _mediaTypeService.GetAll().ToDictionary(c => c.Id, c => c.Icon);
                UpdateNodeIcons(e, mediaTypeIcons, "mediaTypes");
                break;

            default:
                // don't change the icon
                break;
            }
        }
 private void TreeControllerBase_TreeNodesRendering(TreeControllerBase sender, TreeNodesRenderingEventArgs e)
 {
     if (e.Nodes.Count > 0 &&
         (e.Nodes.First().ParentId != null && e.Nodes.First().ParentId.ToString() == "-1") &&
         (sender.TreeAlias == "content" || sender.TreeAlias == "media") &&
         sender.Security.CurrentUser.UserType.Alias != "admin" &&
         ((e.QueryStrings.Get("isDialog") == "false" || e.QueryStrings.Get("usestartnodes") == "true") ||
          (e.QueryStrings.Get("isDialog") == "true" && Settings.LimitPickersToStartNodes))
         )
     {
         if (sender.TreeAlias == "content" && sender.Security.CurrentUser.StartContentId == -1)
         {
             BackOfficeUtils.RenderContentStartNodes(sender.Security.CurrentUser.Id, sender, e);
         }
         else if (sender.TreeAlias == "media" && sender.Security.CurrentUser.StartMediaId == -1)
         {
             BackOfficeUtils.RenderMediaStartNodes(sender.Security.CurrentUser.Id, sender, e);
         }
     }
 }
        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();
                        }
                    }
                }
            }
        }