public ActionResult GetList(EditArticlePartViewModel search) { if (!TomeltServices.Authorizer.Authorize(ArticleManagePermissions.ViewContent, T("无权限"))) { return(new HttpUnauthorizedResult()); } var rows = ArticleService.GetArticlesPro(search); return(Json(new { search.total, rows = rows.Select(d => new { d.Id, d.As <ArticlePart>().Author, d.As <TitlePart>().Title, d.As <CommonPart>().PublishedUtc, HasPublished = d.HasPublished(), UserName = d.As <CommonPart>().Owner == null ? "" : d.As <CommonPart>().Owner.UserName, d.As <ArticlePart>().Sort }) })); }
public IEnumerable <ContentItem> GetArticlesPro(EditArticlePartViewModel search) { //内容状态 VersionOptions versionOptions; switch (search.contentStatus) { case "Published": versionOptions = VersionOptions.Published; break; case "Draft": versionOptions = VersionOptions.Draft; break; case "AllVersions": versionOptions = VersionOptions.AllVersions; break; default: versionOptions = VersionOptions.Latest; break; } var query = TomeltServices.ContentManager.Query(versionOptions, GetCreatableTypes(false).Select(ctd => ctd.Name).ToArray()); query = query.ForType(ContentTypeName); if (search.ColumnPartRecordId > 0) { var columnIds = ColumnRepository.Fetch(d => d.TreePath.Contains("," + search.ColumnPartRecordId + ",")) .Select(d => d.Id).ToList(); query = query.Where <ArticlePartRecord>(d => columnIds.Contains(d.ColumnPartRecordId)); } if (!string.IsNullOrWhiteSpace(search.Title)) { query = query.Where <TitlePartRecord>(d => d.Title.Contains(search.Title)); } //升降序 switch (search.order) { case "asc": query = query.OrderBy <CommonPartRecord>(cr => cr.CreatedUtc); break; default: query = query.OrderByDescending <CommonPartRecord>(cr => cr.CreatedUtc); break; } //查看自己的数据 if (search.contentStatus == "Owner") { query = query.Where <CommonPartRecord>(cr => cr.OwnerId == TomeltServices.WorkContext.CurrentUser.Id); } search.total = query.Count(); //分页 int pageSize = search.rows ?? 10; var maxPagedCount = SiteService.GetSiteSettings().MaxPagedCount; if (maxPagedCount > 0 && pageSize > maxPagedCount) { pageSize = maxPagedCount; } int page = search.page ?? 1; return(query.Slice((page - 1) * pageSize, pageSize).ToList()); }