示例#1
0
 public IEnumerable <ICategory> GetCategories(int siteId, int lft, int rgt, CategoryContainerOption option)
 {
     if (!this.Categories.ContainsKey(siteId))
     {
         throw new Exception("站点无栏目!");
     }
     return(CategoryFilter.GetCategories(lft, rgt, this.Categories[siteId], option));
 }
示例#2
0
        public IEnumerable <ICategory> GetCategories(int siteId, int catId, CategoryContainerOption option)
        {
            this.ChkPreload();
            if (!this.Categories.ContainsKey(siteId))
            {
                throw new Exception("站点无栏目!");
            }
            // return CategoryFilter.GetCategories(lft, rgt, this.Categories[siteId], option);
            ICategory parent = this.GetCategory(siteId, catId);

            return(CategoryFilter.GetCategories(parent, this.Categories[siteId], option));
        }
示例#3
0
        /// <summary>
        /// 获取栏目
        /// </summary>
        /// <param name="lft"></param>
        /// <param name="rgt"></param>
        /// <param name="option"></param>
        /// <returns></returns>
        public IEnumerable <Category> GetCategories(int lft, int rgt, CategoryContainerOption option)
        {
            //如果在初始化,则直接用静态变量
            IEnumerable <Category> _categories = (cateRef == null ?
                                                  categories :
                                                  GetCategories())
                                                 .OrderBy(a => a.Lft);

            switch (option)
            {
            case CategoryContainerOption.Childs: if (rgt - lft == 1)
                {
                    return(new List <Category>());
                }
                else
                {
                    return(_categories.Where(a => a.Lft > lft && a.Rgt < lft));
                }

            case CategoryContainerOption.ChildsAndSelf:
                return(_categories.Where(a => a.Lft >= lft && a.Rgt <= lft));

            case CategoryContainerOption.Parents:
                return(_categories.Where(a => a.Lft < lft && a.Rgt > rgt && a.Lft != 1));

            case CategoryContainerOption.ParentsAndSelf:
                return(_categories.Where(a => a.Lft <= lft && a.Rgt >= rgt && a.Lft != 1));

            case CategoryContainerOption.NextLevel:
                /*无子节点
                 * 当左值+1==右值时,该节点没有子节点,则下一节点不为其子节点
                 *若下一节点的左值==上一节点右值+1,则2个节点是同级关系
                 */
                if (rgt - lft == 1)
                {
                    return(new List <Category>());
                }
                else
                {
                    return(this.GetNextLevelCategories(_categories.Where(a => a.Lft > lft && a.Rgt < rgt)));
                }

            case CategoryContainerOption.SameLevel:
                return(this.GetSameLevelCategories(lft, rgt, _categories));

            case CategoryContainerOption.SameLevelNext:
                return(this.GetSameLevelNextCategories(lft, rgt, _categories));

            case CategoryContainerOption.SameLevelPrevious:
                return(this.GetSameLevelPreviousCategories(lft, rgt, _categories));
            }
            return(null);
        }
示例#4
0
        /// <summary>
        /// 在集合中获取条件的分类
        /// </summary>
        /// <param name="lft"></param>
        /// <param name="rgt"></param>
        /// <param name="_categories"></param>
        /// <param name="option"></param>
        /// <returns></returns>
        public static IEnumerable<ICategory> GetCategories(int lft, int rgt, IEnumerable<ICategory> _categories,CategoryContainerOption option)
        {
            //如果在初始化,则直接用静态变量


            switch (option)
            {
                case CategoryContainerOption.Childs: if (rgt - lft == 1)
                    {
                        return new List<ICategory>();
                    }
                    else
                    {
                        // return _categories.Where(a => a.Lft > lft && a.Rgt < lft);
                         return _categories.Where(a => a.Lft > lft && a.Rgt < rgt);
                    }

                case CategoryContainerOption.ChildsAndSelf:
                //return _categories.Where(a => a.Lft >= lft && a.Rgt <= lft);
                return _categories.Where(a => a.Lft >= lft && a.Rgt <= rgt);

                case CategoryContainerOption.Parents:
                    return _categories.Where(a => a.Lft < lft && a.Rgt > rgt && a.Lft != 1);

                case CategoryContainerOption.ParentsAndSelf:
                    return _categories.Where(a => a.Lft <= lft && a.Rgt >= rgt && a.Lft != 1);

                case CategoryContainerOption.NextLevel:
                    /*无子节点
                     *当左值+1==右值时,该节点没有子节点,则下一节点不为其子节点
                     *若下一节点的左值==上一节点右值+1,则2个节点是同级关系
                     */
                    if (rgt - lft == 1)
                    {
                        return new List<ICategory>();
                    }
                    else
                    {
                        return GetNextLevelCategories(_categories.Where(a => a.Lft > lft && a.Rgt < rgt));
                    }
                case CategoryContainerOption.SameLevel:
                    return GetSameLevelCategories(lft, rgt, _categories);

                case CategoryContainerOption.SameLevelNext:
                    return GetSameLevelNextCategories(lft, rgt, _categories);

                case CategoryContainerOption.SameLevelPrevious:
                    return GetSameLevelPreviousCategories(lft, rgt, _categories);

            }
            return null;
        }
示例#5
0
        public IEnumerable <CategoryDto> GetCategories(
            int siteId, int lft, int rgt,
            CategoryContainerOption categoryContainerOption)
        {
            ISite site = this._resp.GetSiteById(siteId);
            IEnumerable <ICategory> categories =
                site.GetCategories(lft, rgt, categoryContainerOption);
            CategoryDto dto;

            foreach (ICategory category in categories)
            {
                yield return(CategoryDto.ConvertFrom(category));
            }
        }
示例#6
0
 public IEnumerable<ICategory> GetCategories(int siteId, int lft, int rgt, CategoryContainerOption option)
 {
     if (!this.Categories.ContainsKey(siteId))
         throw new Exception("站点无栏目!");
     return CategoryFilter.GetCategories(lft, rgt, this.Categories[siteId], option);
 }
示例#7
0
 public IEnumerable<CategoryDto> GetCategories(
     int siteId,int lft, int rgt,
     CategoryContainerOption categoryContainerOption)
 {
     ISite site = this._resp.GetSiteById(siteId);
     IEnumerable<ICategory> categories = 
         site.GetCategories(lft, rgt, categoryContainerOption);
     CategoryDto dto;
     foreach (ICategory category in categories)
     {
         yield return CategoryDto.ConvertFrom(category);
     }
 }
示例#8
0
 public IEnumerable <ICategory> GetCategories(int lft, int rgt, CategoryContainerOption option)
 {
     return(this._categoryRep.GetCategories(this.Id, lft, rgt, option));
 }
示例#9
0
文件: Site.cs 项目: JangoCity/cms
 public IEnumerable <ICategory> GetCategories(int catId, CategoryContainerOption option)
 {
     return(this._categoryRep.GetCategories(this.GetAggregaterootId(), catId, option));
 }
示例#10
0
        public static IEnumerable <ICategory> GetCategories(ICategory parent, IList <ICategory> list, CategoryContainerOption option)
        {
            int    siteId = parent.Get().SiteId;
            String path   = parent.Get().Path;

            switch (option)
            {
            case CategoryContainerOption.Childs:
                return(list.Where(a => a.Get().SiteId == siteId && a.Get().Path.StartsWith(path)).OrderBy(a => a.Get().SortNumber));
            }
            return(list);

            /*
             * //如果在初始化,则直接用静态变量
             * switch (option)
             * {
             *  case CategoryContainerOption.Childs:
             *      if (rgt - lft == 1)
             *      {
             *          return new List<ICategory>();
             *      }
             *      else
             *      {
             *          // return _categories.Where(a => a.Lft > lft && a.Rgt < lft);
             *          return _categories.Where(a => a.Lft > lft && a.Rgt < rgt);
             *      }
             *
             *  case CategoryContainerOption.ChildsAndSelf:
             *      //return _categories.Where(a => a.Lft >= lft && a.Rgt <= lft);
             *      return _categories.Where(a => a.Lft >= lft && a.Rgt <= rgt);
             *
             *  case CategoryContainerOption.Parents:
             *      return _categories.Where(a => a.Lft < lft && a.Rgt > rgt && a.Lft != 1);
             *
             *  case CategoryContainerOption.ParentsAndSelf:
             *      return _categories.Where(a => a.Lft <= lft && a.Rgt >= rgt && a.Lft != 1);
             *
             *  case CategoryContainerOption.NextLevel:
             *
             *      if (rgt - lft == 1)
             *      {
             *          return new List<ICategory>();
             *      }
             *      else
             *      {
             *          return GetNextLevelCategories(_categories.Where(a => a.Lft > lft && a.Rgt < rgt));
             *      }
             *  case CategoryContainerOption.SameLevel:
             *      return GetSameLevelCategories(lft, rgt, _categories);
             *
             *  case CategoryContainerOption.SameLevelNext:
             *      return GetSameLevelNextCategories(lft, rgt, _categories);
             *
             *  case CategoryContainerOption.SameLevelPrevious:
             *      return GetSameLevelPreviousCategories(lft, rgt, _categories);
             *
             * }
             * return null;*/
        }
示例#11
0
文件: Site.cs 项目: hanson-huang/cms
  public IEnumerable<ICategory> GetCategories(int lft, int rgt, CategoryContainerOption option)
 {
     return this._categoryRep.GetCategories(this.Id,lft, rgt, option);
 }