Exemplo n.º 1
0
        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());
        }
Exemplo n.º 2
0
        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));
        }
Exemplo n.º 3
0
 public JsonResult PageListResult(PageListResult pageListResult)
 {
     return(Json(pageListResult, new JsonSerializerSettings
     {
         DateFormatString = "yyyy-MM-dd HH:mm:ss",
         ContractResolver = new CamelCasePropertyNamesContractResolver(),
         Formatting = Formatting.Indented
     }));
 }
Exemplo n.º 4
0
        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
            });
        }
Exemplo n.º 5
0
        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));
        }
Exemplo n.º 6
0
        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
            });
        }
Exemplo n.º 7
0
 /// <summary>
 /// 分页返回
 /// </summary>
 /// <param name="pageListResult"></param>
 /// <returns></returns>
 public JsonResult PageList(PageListResult pageListResult)
 {
     return(Json(pageListResult));
 }