@page @model DysonNetwork.Zone.Pages.PostsModel @{ Layout = "_LayoutContained"; const string defaultAvatar = "https://www.gravatar.com/avatar/00000000000000000000000000000000?d=mp"; var pageTitle = "Posts"; var pageDescription = "A collection of posts."; string? ogImageUrl = null; var canonicalUrl = $"{Request.Scheme}://{Request.Host}{Request.Path}{Request.QueryString}"; var siteName = Model.Site?.Name ?? "Solar Network"; if (Model.Publisher != null) { pageTitle = "Posts"; pageDescription = $"Browse posts written by {Model.Publisher.Nick}."; if (Model.Publisher.Background != null) ogImageUrl = $"{Request.Scheme}://{Request.Host}/drive/files/{Model.Publisher.Background.Id}"; } ViewData["Title"] = $"{pageTitle} - {siteName}"; } @section Head { @if (!string.IsNullOrEmpty(ogImageUrl)) { } @if (!string.IsNullOrEmpty(ogImageUrl)) { } }

Posts

@if (Model.Posts.Any()) {
@foreach (var post in Model.Posts) { }
} else {

No posts found.

} @if (Model.TotalPages > 1) {
@{ const int maxPagesToShow = 5; // e.g., 2 before, current, 2 after var startPage = Math.Max(1, Model.CurrentPage - (maxPagesToShow / 2)); var endPage = Math.Min(Model.TotalPages, Model.CurrentPage + (maxPagesToShow / 2)); // Adjust startPage and endPage to ensure exactly maxPagesToShow are shown if possible if (endPage - startPage + 1 < maxPagesToShow) { if (startPage == 1) { endPage = Math.Min(Model.TotalPages, startPage + maxPagesToShow - 1); } else if (endPage == Model.TotalPages) { startPage = Math.Max(1, endPage - maxPagesToShow + 1); } } } « @if (startPage > 1) { 1 @if (startPage > 2) { ... } } @for (var idx = startPage; idx <= endPage; idx++) { var pageIdx = idx; @pageIdx } @if (endPage < Model.TotalPages) { @if (endPage < Model.TotalPages - 1) { ... } @Model.TotalPages } »
}
@if (Model.Publisher != null) {
}