Beispiel #1
0
        private string GetPostAbsoluteUrl(Blog.Models.Page page)
        {
            var relativeUrl = page.IsParent ?
                              BlogRoutes.GetPageRelativeLink(page.Slug) :
                              BlogRoutes.GetPageRelativeLink(page.Parent.Slug, page.Slug);

            return($"{HttpContext.Request.Scheme}://{HttpContext.Request.Host}{relativeUrl}");
        }
Beispiel #2
0
        /// <summary>
        /// Returns a list of <see cref="PageAdminVM"/>, when <paramref name="parentId"/> is present
        /// the returned list contains the parent and its children, otherwise a list of parents are
        /// returned.
        /// </summary>
        /// <param name="parentId"></param>
        /// <remarks>
        /// When a page or its parent is draft, its PageLink is null.
        /// </remarks>
        private async Task <List <PageAdminVM> > GetPageVMsAsync(int parentId)
        {
            var pageVMs = new List <PageAdminVM>();
            IList <Blog.Models.Page> pages;
            bool isChild = false;

            Fan.Blog.Models.Page parent = null;
            var coreSettings            = await settingService.GetSettingsAsync <CoreSettings>();

            if (parentId <= 0)
            {
                pages = await pageService.GetParentsAsync(withChildren : true);
            }
            else
            {
                parent = await pageService.GetAsync(parentId);

                pages   = parent.Children;
                isChild = true;

                pageVMs.Add(new PageAdminVM
                {
                    Id       = parent.Id,
                    Title    = parent.Title,
                    Date     = parent.CreatedOn.ToLocalTime(coreSettings.TimeZoneId).ToString(POST_DATE_STRING_FORMAT),
                    Author   = parent.User.DisplayName,
                    EditLink = BlogRoutes.GetPageEditLink(parent.Id),
                    IsDraft  = parent.Status == EPostStatus.Draft,
                    PageLink = parent.Status == EPostStatus.Draft ? null :
                               $"{Request.Scheme}://{Request.Host}" + BlogRoutes.GetPageRelativeLink(parent.Slug),
                    ChildCount = parent.Children.Count,
                    ViewCount  = parent.ViewCount,
                });
            }

            foreach (var page in pages)
            {
                var pageLink = parent != null && parent.Status == EPostStatus.Published?
                               $"{Request.Scheme}://{Request.Host}" + BlogRoutes.GetPageRelativeLink(parent.Slug, page.Slug) :
                               $"{Request.Scheme}://{Request.Host}" + BlogRoutes.GetPageRelativeLink(page.Slug);

                pageLink = page.Status == EPostStatus.Draft || (parent != null && parent.Status == EPostStatus.Draft) ? null : pageLink;

                pageVMs.Add(new PageAdminVM
                {
                    Id           = page.Id,
                    Title        = page.Title,
                    Date         = page.CreatedOn.ToLocalTime(coreSettings.TimeZoneId).ToString(POST_DATE_STRING_FORMAT),
                    Author       = page.User.DisplayName,
                    ChildrenLink = !isChild && page.Children.Count > 0 ? $"{Request.Path}/{page.Id}" : "",
                    EditLink     = BlogRoutes.GetPageEditLink(page.Id),
                    PageLink     = pageLink,
                    IsChild      = isChild,
                    IsDraft      = page.Status == EPostStatus.Draft,
                    ChildCount   = isChild ? 0 : page.Children.Count,
                    ViewCount    = page.ViewCount,
                });
            }

            return(pageVMs);
        }