/// <summary>
 /// Creates a new instance of the <see cref="ContentItemQuerySettings"></see> class.
 /// </summary>
 /// <param name="sortBy">Indicates on which property to sort.</param>
 /// <param name="sortDirection">Indicates the sort direction.</param>
 /// <param name="pageSize">The page size.</param>
 /// <param name="pageNumber">The page number (starting from 1 as the first page).</param>
 public ContentItemQuerySettings(ContentItemSortBy sortBy, ContentItemSortDirection sortDirection, int? pageSize, int? pageNumber)
 {
     SortBy = sortBy;
      SortDirection = sortDirection;
      PageSize = pageSize;
      PageNumber = pageNumber;
 }
 /// <summary>
 /// Creates a new instance of the <see cref="ContentItemQuerySettings"></see> class.
 /// </summary>
 /// <param name="sortBy">Indicates on which property to sort.</param>
 /// <param name="sortDirection">Indicates the sort direction.</param>
 /// <param name="pageSize">The page size.</param>
 /// <param name="pageNumber">The page number (starting from 1 as the first page).</param>
 public ContentItemQuerySettings(ContentItemSortBy sortBy, ContentItemSortDirection sortDirection, int?pageSize, int?pageNumber)
 {
     SortBy        = sortBy;
     SortDirection = sortDirection;
     PageSize      = pageSize;
     PageNumber    = pageNumber;
 }
Exemple #3
0
        /// <summary>
        /// 分页获取非主流排序方式的ContentItem
        /// </summary>
        public PagingDataSet <ContentItem> GetContentItemsSortBy(ContentItemSortBy sortBy, int?contentTypeId = null, int?contentFolderId = null, bool includeFolderDescendants = true, string tagName = null, int pageSize = 15, int pageIndex = 1)
        {
            ContentItemQuery query;

            if (contentFolderId.HasValue)
            {
                query = new ContentItemQuery(CacheVersionType.AreaVersion);
                query.AreaCachePropertyName  = "ContentFolderId";
                query.AreaCachePropertyValue = contentFolderId.Value;
                query.ContentFolderId        = contentFolderId;
            }
            else
            {
                query = new ContentItemQuery(CacheVersionType.GlobalVersion);
            }
            query.IncludeFolderDescendants = includeFolderDescendants;
            query.SortBy = sortBy;
            query.PubliclyAuditStatus = new AuditService().GetPubliclyAuditStatus(ApplicationIds.Instance().CMS());
            query.TagName             = tagName;
            if (contentTypeId.HasValue && contentTypeId.Value > 0)
            {
                query.ContentTypeId = contentTypeId;
            }

            return(contentItemRepository.GetContentItems(true, query, pageSize, pageIndex));
        }
Exemple #4
0
        public ActionResult _Tops(ContentItemSortBy sortBy = ContentItemSortBy.ReleaseDate_Desc, int?contentFolderId = null, string viewName = null, int topNumber = 5)
        {
            var items = contentItemService.GetTops(5, contentFolderId, sortBy);

            if (CmsConfig.Instance().EnableSocialComment&& (sortBy == ContentItemSortBy.StageCommentCount || sortBy == ContentItemSortBy.CommentCount))
            {
                return(new EmptyResult());
            }
            ViewData["sortBy"]          = sortBy;
            ViewData["contentFolderId"] = contentFolderId;
            return(View(viewName ?? "_Tops", items));
        }
        /// <summary>
        /// Adds sorting to the DetachedCriteria based on the given parameters.
        /// </summary>
        /// <param name="criteria"></param>
        /// <param name="contentItemSortBy"></param>
        /// <param name="contentItemSortDirection"></param>
        /// <returns></returns>
        public static DetachedCriteria ApplyOrdering(this DetachedCriteria criteria, ContentItemSortBy contentItemSortBy, ContentItemSortDirection contentItemSortDirection)
        {
            DetachedCriteria orderedCriteria = criteria;

            if (contentItemSortDirection != ContentItemSortDirection.None)
            {
                switch (contentItemSortDirection)
                {
                case ContentItemSortDirection.ASC:
                    orderedCriteria = criteria.AddOrder(Order.Asc(contentItemSortBy.ToString()));
                    break;

                case ContentItemSortDirection.DESC:
                    orderedCriteria = criteria.AddOrder(Order.Desc(contentItemSortBy.ToString()));
                    break;
                }
            }
            return(orderedCriteria);
        }
Exemple #6
0
        private ContentItemQuerySettings CreateQuerySettingsForModule(int?pageSize, int?pageNumber)
        {
            // Map sortby and sortdirection to the ones of the content item. We don't use these in the articles module
            // because we need to convert all module settings for. Maybe sometime in the future.
            ContentItemSortBy sortBy = ContentItemSortBy.None;

            switch (this._sortBy)
            {
            case SortBy.CreatedBy:
                sortBy = ContentItemSortBy.CreatedBy;
                break;

            case SortBy.DateCreated:
                sortBy = ContentItemSortBy.CreatedAt;
                break;

            case SortBy.DateModified:
                sortBy = ContentItemSortBy.ModifiedAt;
                break;

            case SortBy.DateOnline:
                sortBy = ContentItemSortBy.PublishedAt;
                break;

            case SortBy.ModifiedBy:
                sortBy = ContentItemSortBy.ModifiedBy;
                break;

            case SortBy.Title:
                sortBy = ContentItemSortBy.Title;
                break;
            }
            ContentItemSortDirection sortDirection = this._sortDirection == SortDirection.ASC
                                                                        ? ContentItemSortDirection.ASC
                                                                        : ContentItemSortDirection.DESC;

            return(new ContentItemQuerySettings(sortBy, sortDirection, pageSize, pageNumber));
        }
        /// <summary>
        /// 获取前topNumber条ContentItem
        /// </summary>
        public IEnumerable <ContentItem> GetTops(int topNumber, int?contentFolderId, ContentItemSortBy sortBy)
        {
            return(GetTopEntities(topNumber, CachingExpirationType.UsualObjectCollection,
                                  () =>
            {
                StringBuilder cacheKey;
                if (contentFolderId.HasValue)
                {
                    cacheKey = new StringBuilder(RealTimeCacheHelper.GetListCacheKeyPrefix(CacheVersionType.AreaVersion, "ContentFolderId", contentFolderId));
                }
                else
                {
                    cacheKey = new StringBuilder(RealTimeCacheHelper.GetListCacheKeyPrefix(CacheVersionType.GlobalVersion));
                }

                cacheKey.AppendFormat("ContentFolderId-{0}:SortBy-{1}", contentFolderId.ToString(), (int)sortBy);
                return cacheKey.ToString();
            },
                                  () =>
            {
                var sql = Sql.Builder.Select("spb_cms_ContentItems.*").From("spb_cms_ContentItems");
                var whereSql = Sql.Builder;
                var orderSql = Sql.Builder;

                if (contentFolderId.HasValue && contentFolderId.Value > 0)
                {
                    ContentFolderService contentFolderService = new ContentFolderService();
                    IEnumerable <ContentFolder> contentFolders = contentFolderService.GetDescendants(contentFolderId.Value);
                    IEnumerable <int> descendantFolderIds = contentFolders == null ? new List <int>() : contentFolders.Select(f => f.ContentFolderId);
                    List <int> folderIds = new List <int>(descendantFolderIds);
                    folderIds.Add(contentFolderId.Value);
                    whereSql.Where("spb_cms_ContentItems.ContentFolderId in (@ContentFolderIds)", new { ContentFolderIds = folderIds });
                }

                switch (PubliclyAuditStatus)
                {
                case PubliclyAuditStatus.Fail:
                case PubliclyAuditStatus.Pending:
                case PubliclyAuditStatus.Again:
                case PubliclyAuditStatus.Success:
                    whereSql.Where("spb_cms_ContentItems.AuditStatus=@0", (int)PubliclyAuditStatus);
                    break;

                case PubliclyAuditStatus.Pending_GreaterThanOrEqual:
                case PubliclyAuditStatus.Again_GreaterThanOrEqual:
                    whereSql.Where("spb_cms_ContentItems.AuditStatus>@0", (int)PubliclyAuditStatus);
                    break;

                default:
                    break;
                }

                CountService countService = new CountService(TenantTypeIds.Instance().ContentItem());
                string countTableName = countService.GetTableName_Counts();
                StageCountTypeManager stageCountTypeManager = StageCountTypeManager.Instance(TenantTypeIds.Instance().ContentItem());
                int stageCountDays = 0;
                string stageCountType = string.Empty;
                switch (sortBy)
                {
                case ContentItemSortBy.ReleaseDate_Desc:
                    orderSql.OrderBy("spb_cms_ContentItems.IsGlobalSticky desc");
                    if (contentFolderId.HasValue && contentFolderId.Value > 0)
                    {
                        orderSql.OrderBy("spb_cms_ContentItems.IsFolderSticky desc");
                    }
                    orderSql.OrderBy("spb_cms_ContentItems.ReleaseDate desc");
                    break;

                case ContentItemSortBy.HitTimes:
                    sql.LeftJoin(string.Format("(select * from {0} WHERE ({0}.CountType = '{1}')) c", countTableName, CountTypes.Instance().HitTimes()))
                    .On("ContentItemId = c.ObjectId");
                    orderSql.OrderBy("c.StatisticsCount desc");
                    break;

                case ContentItemSortBy.StageHitTimes:
                    stageCountDays = stageCountTypeManager.GetMaxDayCount(CountTypes.Instance().HitTimes());
                    stageCountType = stageCountTypeManager.GetStageCountType(CountTypes.Instance().HitTimes(), stageCountDays);
                    sql.LeftJoin(string.Format("(select * from {0} WHERE ({0}.CountType = '{1}')) c", countTableName, stageCountType))
                    .On("ContentItemId = c.ObjectId");
                    orderSql.OrderBy("c.StatisticsCount desc");
                    break;

                case ContentItemSortBy.CommentCount:
                    sql.LeftJoin(string.Format("(select * from {0} WHERE ({0}.CountType = '{1}')) c", countTableName, CountTypes.Instance().CommentCount()))
                    .On("ContentItemId = c.ObjectId");
                    orderSql.OrderBy("c.StatisticsCount desc");
                    break;

                case ContentItemSortBy.StageCommentCount:
                    stageCountDays = stageCountTypeManager.GetMaxDayCount(CountTypes.Instance().CommentCount());
                    stageCountType = stageCountTypeManager.GetStageCountType(CountTypes.Instance().CommentCount(), stageCountDays);
                    sql.LeftJoin(string.Format("(select * from {0} WHERE ({0}.CountType = '{1}')) c", countTableName, stageCountType))
                    .On("ContentItemId = c.ObjectId");
                    orderSql.OrderBy("c.StatisticsCount desc");
                    break;

                case ContentItemSortBy.DisplayOrder:
                    orderSql.OrderBy("spb_cms_ContentItems.DisplayOrder, spb_cms_ContentItems.ContentItemId desc");
                    break;

                default:
                    orderSql.OrderBy("spb_cms_ContentItems.ReleaseDate desc");
                    break;
                }
                whereSql.Where("spb_cms_ContentItems.ReleaseDate < @0", DateTime.UtcNow);
                sql.Append(whereSql).Append(orderSql);
                return sql;
            }));
        }
        /// <summary>
        /// Adds sorting to the DetachedCriteria based on the given parameters.
        /// </summary>
        /// <param name="criteria"></param>
        /// <param name="contentItemSortBy"></param>
        /// <param name="contentItemSortDirection"></param>
        /// <returns></returns>
        public static DetachedCriteria ApplyOrdering(this DetachedCriteria criteria, ContentItemSortBy contentItemSortBy, ContentItemSortDirection contentItemSortDirection)
        {
            DetachedCriteria orderedCriteria = criteria;

             if (contentItemSortDirection != ContentItemSortDirection.None)
             {
            switch (contentItemSortDirection)
            {
               case ContentItemSortDirection.ASC:
                  orderedCriteria = criteria.AddOrder(Order.Asc(contentItemSortBy.ToString()));
                  break;
               case ContentItemSortDirection.DESC:
                  orderedCriteria = criteria.AddOrder(Order.Desc(contentItemSortBy.ToString()));
                  break;
            }
             }
             return orderedCriteria;
        }
 /// <summary>
 /// Creates a new instance of the <see cref="ContentItemQuerySettings"></see> class.
 /// </summary>
 /// <param name="sortBy">Indicates on which property to sort.</param>
 /// <param name="sortDirection">Indicates the sort direction.</param>
 public ContentItemQuerySettings(ContentItemSortBy sortBy, ContentItemSortDirection sortDirection)
     : this(sortBy, sortDirection, null, null)
 {
 }
 /// <summary>
 /// Creates a new instance of the <see cref="ContentItemQuerySettings"></see> class.
 /// </summary>
 /// <param name="sortBy">Indicates on which property to sort.</param>
 /// <param name="sortDirection">Indicates the sort direction.</param>
 public ContentItemQuerySettings(ContentItemSortBy sortBy, ContentItemSortDirection sortDirection) : this(sortBy, sortDirection, null, null)
 {
 }
 public ActionResult _Tops(ContentItemSortBy sortBy = ContentItemSortBy.ReleaseDate_Desc, int? contentFolderId = null, string viewName = null, int topNumber = 5)
 {
     var items = contentItemService.GetTops(5, contentFolderId, sortBy);
     if (CmsConfig.Instance().EnableSocialComment && (sortBy == ContentItemSortBy.StageCommentCount || sortBy == ContentItemSortBy.CommentCount))
         return new EmptyResult();
     ViewData["sortBy"] = sortBy;
     ViewData["contentFolderId"] = contentFolderId;
     return View(viewName ?? "_Tops", items);
 }
Exemple #12
0
 /// <summary>
 /// 获取非主流排序方式的前topNumber条ContentItem
 /// </summary>
 /// <remarks>
 /// 主要用于频道
 /// </remarks>
 public IEnumerable <ContentItem> GetTops(int topNumber, int?contentFolderId, ContentItemSortBy sortBy)
 {
     return(contentItemRepository.GetTops(topNumber, contentFolderId, sortBy));
 }