Beispiel #1
0
        private static void AddMenu(StringBuilder buff, Navigation nav, IList<Navigation> all)
        {
            buff.Append("<li>");
            buff.Append("<a href=\"");
            buff.Append(string.IsNullOrEmpty(nav.Url) ? "#" : nav.Url);
            buff.Append("\"");
            if (!string.IsNullOrEmpty(nav.Icon))
            {
                buff.Append(" class=\"icon ");
                buff.Append(nav.Icon);
                buff.Append("\"");
            }
            buff.Append(">");
            buff.Append(nav.Name);
            buff.Append("</a>");

            IList<Navigation> subNavs = nav.GetChildren(all).ToOrderList();
            if (subNavs.Count > 0)
            {
                buff.Append("<ul>");
                foreach (Navigation subNav in subNavs)
                {
                    AddMenu(buff, subNav, all);
                }
                buff.Append("</ul>");
            }
            buff.Append("</li>");
        }
        /// <summary>
        /// 存储分类
        /// </summary>
        /// <param name="session">数据库会话</param>
        /// <param name="category">导航分类</param>
        /// <param name="parentId">导航分类的上级序号</param>
        private void SaveNavigationContainer(Session session, NavigationCategory category, long parentId)
        {
            if (string.IsNullOrEmpty(category.Name))
                throw new Exception("Category的Name属性不能为空,请检查nav_container.xml文件");

            var nav = session.Load<Navigation>(m => m.Name.Equals(category.Name));
            if (nav != null) throw new Exception("Category的Name属性已被使用,请检查nav_container.xml文件");

            nav = new Navigation { Id = GetNavIdByName(session, category.Name), Name = category.Name, Type = NavigationType.Category, ParentId = parentId, OrderId = category.OrderId, CreatedAt = DateTime.Now, CreatedBy = "SYSTEM", AuthCode = Navigation.NotCheck };
            if (!session.Create(nav))
            {
                throw new Exception(string.Format("保存导航分类失败:Name - {0}, ParentId - {1}", category.Name, parentId));
            }

            // 如果是叶子分类,放入导航分类字典备查
            if (category.Categories.Count == 0) _navCagotryDict.Add(nav.Name, nav.Id);

            foreach (var subCategory in category.Categories)
            {
                SaveNavigationContainer(session, subCategory, nav.Id);
            }
        }
        private long SaveNavigation(Session session, PriviledgeAttribute priAttr, long parentId, string area, string controller, string action)
        {
            if (priAttr == null) return DefaultParentId;
            var nav = session.Load<Navigation>(m => m.Name.Equals(priAttr.Name) && m.ParentId.Equals(parentId));
            if (nav != null) return nav.Id;

            nav = new Navigation
            {
                Id = GetNavIdByName(session, priAttr.Name),
                Name = priAttr.Name,
                Type = priAttr.IsMenu ? NavigationType.Module : NavigationType.Action,
                Url = GetUrl(area, controller, action),
                ParentId = parentId,
                OrderId = priAttr.Position,
                CreatedAt = DateTime.Now,
                CreatedBy = "SYSTEM",
                AuthCode = priAttr.NotCheck ? Navigation.NotCheck : Navigation.ShouldCheck,
                Status = priAttr.NotCheck ? 1 : 0
            };
            if (session.Create(nav)) { return nav.Id; }

            throw new Exception(string.Format("保存导航失败:Name - {0}, ParentId - {1}", priAttr.Name, parentId));
        }
        private long SaveNavigation(Session session, ModuleAttribute module, long parentId, long moduleOrderId, string minorIcon = null)
        {
            if (module == null || string.IsNullOrEmpty(module.Name)) return parentId;
            var nav = session.Load<Navigation>(m => m.Name.Equals(module.Name) && m.ParentId.Equals(parentId));
            if (nav != null) return nav.Id;

            nav = new Navigation
            {
                Id = GetNavIdByName(session, module.Name),
                Name = module.Name,
                Type = module.IsHideMenu ? NavigationType.Action : NavigationType.Module,
                ParentId = parentId,
                OrderId = moduleOrderId > 0 ? moduleOrderId : module.Position,
                CreatedAt = DateTime.Now,
                CreatedBy = "SYSTEM",
                AuthCode = module.NotCheck ? Navigation.NotCheck : Navigation.ShouldCheck,
                Icon = module.Icon ?? minorIcon
            };
            if (session.Create(nav)) { return nav.Id; }

            throw new Exception(string.Format("保存导航失败:Name - {0}, ParentId - {1}", module.Name, parentId));
        }
        /// <summary>
        /// 保存模块的功能分类
        /// </summary>
        /// <param name="session"></param>
        /// <param name="category"></param>
        /// <param name="parentId"></param>
        /// <returns></returns>
        private long SaveNavigation(Session session, CategoryAttribute category, long parentId)
        {
            if (category == null || string.IsNullOrEmpty(category.Name)) return parentId;
            var nav = session.Load<Navigation>(m => m.Name.Equals(category.Name) && m.ParentId.Equals(parentId));
            if (nav != null) return nav.Id;

            nav = new Navigation { Id = GetNavIdByName(session, category.Name), Name = category.Name, Type = NavigationType.Category, ParentId = parentId, OrderId = category.Position, CreatedAt = DateTime.Now, CreatedBy = "SYSTEM" };
            if (session.Create(nav)) { return nav.Id; }

            throw new Exception(string.Format("保存导航失败:Name - {0}, ParentId - {1}", category.Name, parentId));
        }