예제 #1
0
        public IViewComponentResult Invoke()
        {
            //var naviagtion = MenuConfigSingle.CreatInstance().GetMenu();
            if (_currentUser.UserName == "admin")
            {
                var list = MenuConfigSingle.CreatInstance().GetMenu();
                return(View(list));
            }
            else
            {
                var list = new ApplicationMenuItemList();

                var currentUserMenu = _managerAppService.GetCurrentManagerMenuAsync().Result;
                foreach (var item in currentUserMenu)
                {
                    if (item.ParentId == Guid.Empty)
                    {
                        list.Add(new ApplicationMenuItem(item.Name, item.Id.ToString(), item.Url, item.Icon, item.Order));
                    }
                    else
                    {
                        var m = list.FirstOrDefault(x => x.DisplayName == item.ParentId.ToString() && x.Url == "#").Items;
                        m.Add(new ApplicationMenuItem(item.Name, item.Id.ToString(), item.Url, item.Icon, item.Order));
                    }
                }

                return(View(list));
            }
        }
예제 #2
0
    public ApplicationMenuItem(
        [NotNull] string name,
        [NotNull] string displayName,
        string url                    = null,
        string icon                   = null,
        int order                     = DefaultOrder,
        object customData             = null,
        string target                 = null,
        string elementId              = null,
        string cssClass               = null,
        string requiredPermissionName = null)
    {
        Check.NotNullOrWhiteSpace(name, nameof(name));
        Check.NotNullOrWhiteSpace(displayName, nameof(displayName));

        Name                   = name;
        DisplayName            = displayName;
        Url                    = url;
        Icon                   = icon;
        Order                  = order;
        CustomData             = customData;
        Target                 = target;
        ElementId              = elementId ?? GetDefaultElementId();
        CssClass               = cssClass;
        RequiredPermissionName = requiredPermissionName;
        StateCheckers          = new List <ISimpleStateChecker <ApplicationMenuItem> >();
        Items                  = new ApplicationMenuItemList();
    }
예제 #3
0
        public ApplicationMenuItemList GetMenu()
        {
            var menuList = new ApplicationMenuItemList();
            var t        = "&_&";

            var item = new ApplicationMenuItem("后台管理", t, "#", icon: "&#xe726;", order: 0);

            item.Items.Add(new ApplicationMenuItem("管理员管理", t, "/Manager"));
            item.Items.Add(new ApplicationMenuItem("角色管理", t, "/Role"));
            menuList.Add(item);

            item = new ApplicationMenuItem("商品管理", t, "#", icon: "&#xe6f6;", order: 0);
            item.Items.Add(new ApplicationMenuItem("商品列表", t, "/Service/Product"));
            menuList.Add(item);

            item = new ApplicationMenuItem("团长管理", t, "#", icon: "&#xe6f5;", order: 0);
            item.Items.Add(new ApplicationMenuItem("团长列表", t, "/Service/Head"));
            item.Items.Add(new ApplicationMenuItem("评价列表", t, "/Service/Evaluate"));
            menuList.Add(item);

            item = new ApplicationMenuItem("用户管理", t, "#", icon: "&#xe70b;", order: 0);
            item.Items.Add(new ApplicationMenuItem("用户列表", t, "/Service/User"));
            menuList.Add(item);

            menuList.Normalize();
            return(menuList);
        }
예제 #4
0
    public ApplicationMenu(
        [NotNull] string name,
        string displayName = null)
    {
        Check.NotNullOrWhiteSpace(name, nameof(name));

        Name        = name;
        DisplayName = displayName ?? Name;

        Items = new ApplicationMenuItemList();
    }
        protected virtual bool SetActiveMenuItems(ApplicationMenuItemList items, string activeMenuItemName)
        {
            foreach (var item in items)
            {
                if (item.Name == activeMenuItemName || SetActiveMenuItems(item.Items, activeMenuItemName))
                {
                    item.CssClass = "active menu-open";
                    return(true);
                }
            }

            return(false);
        }
        public static bool ChildActive(ApplicationMenuItemList menu, string currentName)
        {
            foreach (var item in menu)
            {
                if (item.Name == currentName)
                {
                    return(true);
                }

                if (ChildActive(item.Items, currentName))
                {
                    return(true);
                }
            }
            return(false);
        }
예제 #7
0
        private void FindRootMenuItemWithChildren(ApplicationMenuItem topMenuItem, ApplicationMenuItemList menuItems, string location)
        {
            var menu = menuItems.FirstOrDefault(menu => menu.Url != null && location.StartsWith(menu.Url.TrimStart('/', '~'), StringComparison.OrdinalIgnoreCase));

            if (menu != null)
            {
                RootMenuItem = topMenuItem;
                return;
            }
            if (RootMenuItem == null)
            {
                foreach (var menuItem in menuItems)
                {
                    FindRootMenuItemWithChildren(topMenuItem, menuItem.Items, location);
                }
            }
        }
예제 #8
0
        void SetMenuItemActivateCssClass(string pageUrl, ApplicationMenuItem menuItem = null, ApplicationMenu parentMenu = null)
        {
            ApplicationMenuItemList withItems = menuItem?.Items ?? parentMenu?.Items;

            withItems.ForEach(m =>
            {
                if (m.Url != null && pageUrl == $"{m.Url}/index".ToUpper())
                {
                    m.CssClass = "active";
                    // 存在父级
                    if (menuItem != null)
                    {
                        menuItem.CssClass = "active menu-open";
                    }
                }
                SetMenuItemActivateCssClass(pageUrl, m, parentMenu);
            });
        }
예제 #9
0
        void SetMenuItemActivateCssClass(string pageUrl, ApplicationMenuItem menuItem = null, ApplicationMenu parentMenu = null)
        {
            ApplicationMenuItemList withItems = menuItem?.Items ?? parentMenu?.Items;

            withItems.ForEach(m =>
            {
                if (m.Url != null && string.Compare(pageUrl, $"{m.Url}/index", StringComparison.InvariantCultureIgnoreCase) == 0)
                {
                    m.CssClass = "active";
                    // 存在父级
                    if (menuItem != null)
                    {
                        menuItem.CssClass = "active menu-open";
                    }
                }
                SetMenuItemActivateCssClass(pageUrl, m, parentMenu);
            });
        }
예제 #10
0
        void SetMenuItemActivateCssClass(string pageUrl, ApplicationMenuItem menuItem = null, ApplicationMenu parentMenu = null)
        {
            ApplicationMenuItemList withItems = menuItem?.Items ?? parentMenu?.Items;

            withItems.ForEach(m =>
            {
                //TODO: Menu Url ~/ replace with / clear ~ character
                m.Url = m.Url != null ? m.Url.Replace("~/", "/") : m.Url;

                if (m.Url != null && string.Compare(pageUrl, $"{m.Url}/index", StringComparison.InvariantCultureIgnoreCase) == 0)
                {
                    m.CssClass = "active";

                    if (menuItem != null)
                    {
                        menuItem.CssClass = "active menu-open";
                    }
                }
                SetMenuItemActivateCssClass(pageUrl, m, parentMenu);
            });
        }
        private MenuDataItem[] GetMenuDataItems(ApplicationMenuItemList menuItems)
        {
            if (menuItems != null && menuItems.Count > 0)
            {
                MenuDataItem[] antMenuItems;
                antMenuItems = new MenuDataItem[menuItems.Count];
                for (int i = 0; i < antMenuItems.Length; i++)
                {
                    MenuDataItem item = new MenuDataItem();
                    item.Path       = menuItems[i].Url;
                    item.Name       = menuItems[i].DisplayName;
                    item.Key        = menuItems[i].Name;
                    item.Icon       = menuItems[i].Icon;
                    antMenuItems[i] = item;

                    if (menuItems[i].Items != null && menuItems[i].Items.Count > 0)
                    {
                        antMenuItems[i].Children = GetMenuDataItems(menuItems[i].Items);
                    }
                }
                return(antMenuItems);
            }
            return(null);
        }