コード例 #1
0
        private static MenuItem GetMenuItemRecursive(Page page, ICollection<Id> menuIds)
        {
            var result = GetMenuItem(page);
            if (result == null)
                return null;

            result.Selected = page.Id == menuIds.Last();
            var children = page.GetChildren<Page>().Where(c => !c.GetValue<bool>("hideFromMenu")).ToArray();
            if (children.Any())
            {
                if (menuIds.Contains(page.Id))
                {
                    result.Expanded = true;
                    foreach (var child in children)
                    {
                        var childItem = GetMenuItemRecursive(child, menuIds);
                        if (childItem != null)
                            result.AddChild(childItem);
                    }
                }
                else
                    result.Collapsed = true;
            }
            return result;
        }
コード例 #2
0
        public IEnumerable<MenuItem> GetSubMenuItems(Page parentPage)
        {
            var homeParts = CmsService.Instance.GetHomeItem().Path.Split('/');
            if (parentPage == null)
                parentPage = CmsService.Instance.GetItem<Page>();
            var pageParts = parentPage.Path.Split('/');
            if (pageParts.Length - homeParts.Length < 1)
                return new MenuItem[0];

            var selectedIds = CmsService.Instance.GetSelectedMenuIds();
            var result = new List<MenuItem>();
            foreach (var child in parentPage.GetChildren<Page>().Where(c => !c.GetValue<bool>("hideFromMenu") && !c.EntityName.StartsWith("__")))
            {
                var menuItem = GetMenuItem(child);
                if (child.Id == selectedIds.Last())
                    menuItem.Selected = true;
                else if (selectedIds.Contains(child.Id))
                    menuItem.Expanded = true;
                result.Add(menuItem);
            }
            return result;
        }