Example #1
0
        public async Task <(string viewPath, PageVM viewModel)> GetPageAsync(string parentPage, string childPage = null)
        {
            if (parentPage.IsNullOrEmpty())
            {
                parentPage = "Home";
            }

            var page = await pageService.GetAsync(parentPage, childPage);

            var coreSettings = await settingService.GetSettingsAsync <CoreSettings>();

            return("../Blog/Page", new PageVM
            {
                Id = page.Id,
                ParentId = page.ParentId,
                Author = page.User.DisplayName,
                Body = page.Body,
                Excerpt = page.Excerpt,
                CreatedOnDisplay = page.CreatedOn.ToDisplayString(coreSettings.TimeZoneId),
                UpdatedOnDisplay = page.UpdatedOn.HasValue ?
                                   page.UpdatedOn.Value.ToDisplayString(coreSettings.TimeZoneId) :
                                   page.CreatedOn.ToDisplayString(coreSettings.TimeZoneId),
                EditLink = BlogRoutes.GetPageEditLink(page.Id),
                IsParent = page.IsParent,
                AddChildLink = page.IsParent ? BlogRoutes.GetAddChildPageLink(page.Id) : "",
                Title = page.Title,
                PageLayout = (EPageLayout)page.PageLayout,
                ViewCount = page.ViewCount,
            });
        }
Example #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);
        }