public async Task <string> GetSitemapAsync(long tenantId, string rootUrl) { // Get all pages for inclusion in the sitemap. TODO: This code will need to be re-written to support multiple sitemaps (required for large sites) const int maxPageSize = 5000; PageListResult homeResult = await _pageService.ListPagesAsync(tenantId, null, false, PageType.Folder, null, SortBy.Created, false, 0, 1); PageListResult folderResult = await _pageService.ListPagesAsync(tenantId, null, true, PageType.Folder, null, SortBy.Created, false, 0, maxPageSize); PageListResult documentResult = await _pageService.ListPagesAsync(tenantId, null, true, PageType.Document, null, SortBy.Created, false, 0, maxPageSize); IEnumerable <Page> pages = Enumerable.Concat(homeResult.Pages, Enumerable.Concat(folderResult.Pages, documentResult.Pages)); // Construct sitemap XML StringBuilder sb = new StringBuilder(); sb.AppendLine("<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">"); foreach (Page page in pages) { sb.AppendLine("<url>"); sb.AppendLine($"<loc>{GetPageUrl(rootUrl, page)}</loc>"); sb.AppendLine($"<lastmod>{GetPageLastModified(page)}</lastmod>"); sb.AppendLine("</url>"); } sb.Append("</urlset>"); return(sb.ToString()); }
public async Task <ActionResult <PageListResult <DeckResult> > > GetDecksByTags([TagValidation][FromQuery] string[] tags, [FromQuery] int pageNumber = 1, [FromQuery] int pageSize = 10) { if (pageNumber < 1 || pageSize < 1) { return(BadRequest("Page number and page size can not be less than 1")); } if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var page = tags.Length > 0 ? await deckRepo.GetPageByTags(pageNumber, pageSize, tags) : await deckRepo.GetPage(pageNumber, pageSize); if (!page.Any()) { return(NotFound()); } var result = new PageListResult <DeckResult>(mapper.Map <List <DeckDbo>, List <DeckResult> >(page), page.TotalCount, page.CurrentPage, page.PageSize); return(Ok(result)); }
public JsonResult PageListResult(PageListResult pageListResult) { return(Json(pageListResult, new JsonSerializerSettings { DateFormatString = "yyyy-MM-dd HH:mm:ss", ContractResolver = new CamelCasePropertyNamesContractResolver(), Formatting = Formatting.Indented })); }
private PageListPager GetPager(int pageIndex, PageListResult result, PageListElementSettings elementSettings) { if (!elementSettings.ShowPager) { return(null); } int pageCount = ((result.Total - 1) / elementSettings.PageSize) + 1; if (pageCount < 2) { return(null); } return(new PageListPager { PageCount = pageCount, PageIndex = pageIndex, PageSize = elementSettings.PageSize, Total = result.Total }); }
public async Task <IActionResult> ReadHomeTaggedAsync(string tags) { PageListResult result = await _pageService.ListPagesAsync(TenantId, null, false, PageType.Folder, null, SortBy.Created, true, 0, 1); return(await ReadPageTaggedAsync(TenantId, result.Pages.First().PageId, tags)); }
public async Task <IElementView <PageListElementSettings, PageListElementContent> > ReadElementViewAsync(long tenantId, long elementId, IPageContext context) { PageListElementSettings settings = await _elementRepository.ReadElementSettingsAsync(tenantId, elementId); if (settings == null) { return(null); } int pageIndex = 1; if (context.Parameters != null && context.Parameters.ContainsKey("page")) { Int32.TryParse(context.Parameters["page"], out pageIndex); } pageIndex = pageIndex - 1; IEnumerable <Tag> tags = null; if (context.TagIds != null) { tags = await _tagService.ListTagsAsync(tenantId, context.TagIds); } PageListPageLink currentPageLink = null; if (settings.ShowTags) { currentPageLink = await GetPageListPageLinkAsync(tenantId, context.PageId); } PageListPageLink morePageLink = null; long pageListPageId = await GetPageListPageId(settings, context); bool displayMorePageLink = settings.MoreMessage != null && context.PageId != pageListPageId; if (displayMorePageLink) { morePageLink = await GetPageListPageLinkAsync(tenantId, pageListPageId); } PageListResult result = await _pageService.ListPagesAsync(tenantId, pageListPageId, settings.Recursive, settings.PageType, context.TagIds, settings.SortBy, settings.SortAsc, pageIndex, settings.PageSize); IDictionary <long, BlobImage> blobsById = null; if (settings.ShowImage || settings.ShowBackgroundImage) { IEnumerable <long> blobIds = result.Pages.Where(p => p.ThumbnailImageBlobId.HasValue).Select(p => p.ThumbnailImageBlobId.Value); IEnumerable <Blob> blobs = await _storageService.ListBlobsAsync(tenantId, blobIds); blobsById = blobs.ToDictionary(b => b.BlobId, b => (BlobImage)b); } PageListElementContent content = new PageListElementContent { CurrentPage = currentPageLink, MorePage = morePageLink, DisplayName = GetContentDisplayName(settings.DisplayName, tags), MoreMessage = displayMorePageLink ? settings.MoreMessage : null, NoPagesMessage = settings.NoPagesMessage != null && !result.Pages.Any() ? settings.NoPagesMessage : null, Pages = result.Pages.Select(p => new PageListPage { Name = p.Name, PageId = p.PageId, Home = !p.ParentPageId.HasValue, Description = settings.ShowDescription ? p.Description : null, Created = settings.ShowCreated ? (DateTime?)p.Created : null, Updated = settings.ShowUpdated && !(settings.ShowCreated && (p.Created.Date == p.Updated.Date)) ? (DateTime?)p.Updated : null, Occurred = settings.ShowOccurred && p.Occurred.HasValue ? p.Occurred : null, OccursInFuture = settings.ShowOccurred && p.Occurred.HasValue ? p.Occurred.Value.Date > DateTime.UtcNow.Date : false, BackgroundImage = settings.ShowBackgroundImage ? GetImage(p, blobsById) : null, Image = settings.ShowImage ? GetImage(p, blobsById) : null, Tags = settings.ShowTags ? p.Tags : new List <Tag>() }), Pager = GetPager(pageIndex, result, settings), Tags = tags }; return(new ElementView <PageListElementSettings, PageListElementContent> { Settings = settings, Content = content }); }
/// <summary> /// 分页返回 /// </summary> /// <param name="pageListResult"></param> /// <returns></returns> public JsonResult PageList(PageListResult pageListResult) { return(Json(pageListResult)); }