/// <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; }
/// <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)); }
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); }
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) { }
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> /// 获取非主流排序方式的前topNumber条ContentItem /// </summary> /// <remarks> /// 主要用于频道 /// </remarks> public IEnumerable <ContentItem> GetTops(int topNumber, int?contentFolderId, ContentItemSortBy sortBy) { return(contentItemRepository.GetTops(topNumber, contentFolderId, sortBy)); }