Example #1
0
        private IEnumerable <SysMenuTreeItemDto> getSysMenuTreesMainRecursive(IEnumerable <SysMenuDto> sysMenuTreeItems)
        {
            bool hideModuleManager = FullSystemConfig.HideModuleManager == true;
            List <SysMenuTreeItemDto> sysMenuTrees = new List <SysMenuTreeItemDto>();
            List <SysMenuDto>         dest         = new List <SysMenuDto>();
            int index = 60000;

            foreach (var item in sysMenuTreeItems)
            {
                Ncf.XncfBase.IXncfRegister xncfRegister = XncfRegisterList.FirstOrDefault(z => !string.IsNullOrEmpty(item.Url) && item.Url.Contains($"uid={z.Uid}", StringComparison.OrdinalIgnoreCase));
                if (xncfRegister != null && xncfRegister is Senparc.Ncf.Core.Areas.IAreaRegister xncfAreapage && xncfAreapage.AareaPageMenuItems.Count() > 0)
                {
                    if (hideModuleManager)
                    {
                        item.ParentId = null;
                        item.Id       = (index++).ToString();
                    }
                    dest.Add(new SysMenuDto()
                    {
                        MenuName = "设置/执行",
                        Url      = item.Url,
                        Id       = (index++).ToString(),
                        ParentId = item.Id,
                        Icon     = "fa fa-play"
                    });
                    dest.AddRange(xncfAreapage.AareaPageMenuItems.Select(_ => new SysMenuDto()
                    {
                        MenuName = _.Name,
                        Url      = _.Url,
                        Icon     = _.Icon,
                        Id       = (index++).ToString(),
                        ParentId = item.Id
                    }));
                    item.Url = string.Empty;
                }
Example #2
0
        /// <summary>
        /// 获取 Admin 后台左侧菜单结构
        /// </summary>
        /// <param name="sysMenuTreeItems"></param>
        /// <returns></returns>
        private async Task <IEnumerable <SysMenuTreeItemDto> > GetSysMenuTreesMainRecursiveAsync(IEnumerable <SysMenuDto> sysMenuTreeItems)
        {
            bool hideModuleManager = FullSystemConfig.HideModuleManager == true;//是否处于发布状态,需要隐藏部分菜单
            List <SysMenuTreeItemDto> sysMenuTrees = new List <SysMenuTreeItemDto>();
            List <SysMenuDto>         dest         = new List <SysMenuDto>();
            int index = 60000;

            XncfRegisterManager xncfRegisterManager = new XncfRegisterManager(_serviceProvider);

            //遍历菜单设置项目,查找和 XNCF 模块有关的菜单节点
            foreach (var item in sysMenuTreeItems)
            {
                //定位 XNCF 模块
                IXncfRegister xncfRegister = XncfRegisterList
                                             .FirstOrDefault(z => !string.IsNullOrEmpty(item.Url) &&
                                                             item.Url.Contains($"uid={z.Uid}", StringComparison.OrdinalIgnoreCase)); //TODO:判断Xncf条件还可以更细

                var isStoredXncf = !string.IsNullOrEmpty(item.Url) &&
                                   item.Url.Contains("uid=", StringComparison.OrdinalIgnoreCase); //在数据库里面注册为模块
                var xncfMissing = isStoredXncf && xncfRegister == null;                           //程序集未加载

                if (xncfRegister != null &&
                    xncfRegister is Senparc.Ncf.Core.Areas.IAreaRegister xncfAreapage &&
                    xncfAreapage.AareaPageMenuItems.Count() > 0)
                {
                    if (hideModuleManager)
                    {
                        item.ParentId = null;
                        item.Id       = (index++).ToString();
                    }
                    else
                    {
                        dest.Add(new SysMenuDto()
                        {
                            MenuName = "设置/执行",
                            Url      = item.Url,
                            Id       = (index++).ToString(),
                            ParentId = item.Id,
                            Icon     = "fa fa-play"
                        });
                    }


                    dest.AddRange(xncfAreapage.AareaPageMenuItems.Select(_ => new SysMenuDto()
                    {
                        MenuName = _.Name,
                        Url      = _.Url,
                        Icon     = _.Icon,
                        Id       = string.IsNullOrEmpty(_.Id) ? (index++).ToString() : _.Id,
                        ParentId = string.IsNullOrEmpty(_.ParentId) ? item.Id : _.ParentId
                    }));
                    item.Url = string.Empty;
                }
Example #3
0
        /// <summary>
        /// 获取已安装模块模块 handler=Mofules
        /// </summary>
        /// <returns></returns>
        public async Task <IActionResult> OnGetMofulesAsync(int pageIndex = 0, int pageSize = 0)
        {
            //更新菜单缓存
            await _sysMenuService.GetMenuDtoByCacheAsync(true).ConfigureAwait(false);

            PagedList <XncfModule> xncfModules = await _xncfModuleService.GetObjectListAsync(pageIndex, pageSize, _ => true, _ => _.AddTime, Ncf.Core.Enums.OrderingType.Descending);

            //xncfModules.FirstOrDefault().
            var xncfRegisterList = XncfRegisterList.Select(_ => new { _.Uid, homeUrl = _.GetAreaHomeUrl(), _.Icon });
            var result           = from xncfModule in xncfModules
                                   join xncfRegister in xncfRegisterList on xncfModule.Uid equals xncfRegister.Uid
                                   into xncfRegister_left
                                   from xncfRegister in xncfRegister_left.DefaultIfEmpty()
                                   select new
            {
                xncfModule,
                xncfRegister
            };

            return(Ok(new { result, FullSystemConfig.HideModuleManager }));
        }