@page "/tutorials/{**slug}" @using System.Text @using Microsoft.AspNetCore.Mvc.TagHelpers @using OliverBooth.Common.Data @using OliverBooth.Common.Data.Web @using OliverBooth.Common.Services @model Index @inject ITutorialService TutorialService @{ ViewData["Title"] = "Tutorials"; ITutorialFolder? currentFolder = Model.CurrentFolder; }
@if (currentFolder is not null) { }

@(currentFolder?.Title ?? "Tutorials")

@foreach (ITutorialFolder[] folders in TutorialService.GetFolders(currentFolder, Visibility.Published).Chunk(2)) {
@foreach (ITutorialFolder folder in folders) { if (folder.Visibility != Visibility.Published) { continue; } }
} @if (currentFolder is not null) { foreach (ITutorialArticle[] articles in TutorialService.GetArticles(currentFolder, Visibility.Published).Chunk(2)) {
@foreach (ITutorialArticle article in articles) { var slugBuilder = new StringBuilder(); ITutorialFolder? folder = TutorialService.GetFolder(article.Folder); if (folder is not null) { slugBuilder.Append(folder.Slug); slugBuilder.Append('/'); } while (folder?.Parent is { } parentId) { folder = TutorialService.GetFolder(parentId); if (folder is not null) { slugBuilder.Append(folder.Slug); slugBuilder.Append('/'); } } string slug = slugBuilder + article.Slug; }
} }