PascalEugster
08/18/2023, 7:21 AMSebastiaan
08/18/2023, 7:27 AMPascalEugster
08/18/2023, 7:37 AMPascalEugster
08/18/2023, 8:21 AMhuwred
08/18/2023, 8:57 AMhuwred
08/18/2023, 8:59 AMint pageSize = CurrentPage.Value<int>("intPageSize");Sebastiaan
08/18/2023, 9:11 AMcsharp
using System;
using System.Linq;
using Cultiv.Site.Models;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.ViewEngines;
using Microsoft.Extensions.Logging;
using Umbraco.Cms.Core.IO;
using Umbraco.Cms.Core.Models.PublishedContent;
using Umbraco.Cms.Core.Services;
using Umbraco.Cms.Core.Web;
using Umbraco.Cms.Web.Common.Controllers;
using Umbraco.Cms.Web.Common.PublishedModels;
namespace Cultiv.Site.Controllers
{
    public class BlogOverviewController : RenderController
    {
        private readonly IVariationContextAccessor _variationContextAccessor;
        private readonly ServiceContext _serviceContext;
        private readonly IFileSystem _fileSystem;
        
        public BlogOverviewController(ILogger<BlogOverviewController> logger, 
            ICompositeViewEngine compositeViewEngine, 
            IUmbracoContextAccessor umbracoContextAccessor,
            IVariationContextAccessor variationContextAccessor, 
            ServiceContext context, IFileSystem fileSystem)
            : base(logger, compositeViewEngine, umbracoContextAccessor)
        {
            _variationContextAccessor = variationContextAccessor;
            _serviceContext = context;
            _fileSystem = fileSystem;
        }
        
        [HttpGet]
        public IActionResult Index([FromQuery(Name = "page")] int page = 1)
        {
            var publishedValueFallback = new PublishedValueFallback(_serviceContext, _variationContextAccessor);
            var model = new BlogOverviewModel(CurrentPage, publishedValueFallback) { Page = page };
            var allBlogPosts = model.Children.ToList();
            
            var skip = 10 * model.Page - 10;
            var test = _fileSystem.GetFullPath("~/");
            
            model.TotalPages = Convert.ToInt32(Math.Ceiling(allBlogPosts.Count / 10.0));
            model.PreviousPage = model.Page - 1;
            model.NextPage = model.Page + 1;
            model.IsFirstPage = model.Page <= 1;
            model.IsLastPage = model.Page >= model.TotalPages;
            
            var selection = allBlogPosts.OrderByDescending(x => x.CreateDate)
                .Skip(skip)
                .Take(10)
                .Select(publishedContent => publishedContent as BlogPost)
                .ToList();
            model.PagedBlogPosts = selection;
            return CurrentTemplate(model);
        }
    }
}Sebastiaan
08/18/2023, 9:12 AMArticlesController or ArticleOverviewController).Sebastiaan
08/18/2023, 9:13 AMcsharp
using System.Collections.Generic;
using Umbraco.Cms.Core.Models.PublishedContent;
using Umbraco.Cms.Web.Common.PublishedModels;
namespace Cultiv.Site.Models
{
    public class BlogOverviewModel : PublishedContentWrapped 
    {
        public BlogOverviewModel(IPublishedContent content, IPublishedValueFallback publishedValueFallback) : base(content, publishedValueFallback)
        { }
        public int Page { get; set; }
        public int TotalPages { get; set; }
        public int PreviousPage { get; set; }
        public int NextPage { get; set; }
        public bool IsFirstPage { get; set; }
        public bool IsLastPage { get; set; }
        public IEnumerable<BlogPost> PagedBlogPosts { get; set; }
    }
}PascalEugster
08/18/2023, 12:31 PMSebastiaan
08/18/2023, 1:53 PMDean Leigh
08/18/2023, 2:01 PMhuwred
08/18/2023, 2:18 PMSander L
08/18/2023, 3:31 PMJanae
08/18/2023, 3:36 PMDean Leigh
08/18/2023, 3:53 PMJanae
08/18/2023, 3:54 PMAaronSadlerUK
08/18/2023, 4:07 PMDean Leigh
08/21/2023, 4:59 PMhuwred
08/21/2023, 5:13 PMDean Leigh
08/21/2023, 6:09 PMhuwred
08/21/2023, 7:45 PM