Add the admin editor page (toolbar, sections, re-login, section refresh)

This commit is contained in:
Francesco Lorenzo D'Amico
2026-09-11 13:42:22 +02:00
parent bac82b1568
commit f1e5c3fb12
2 changed files with 105 additions and 8 deletions
+34 -2
View File
@@ -2,13 +2,45 @@ using Microsoft.AspNetCore.Authentication;
using Microsoft.AspNetCore.Authentication.Cookies;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using BewerbungsSeite.Models.SiteContent;
using BewerbungsSeite.Services;
namespace BewerbungsSeite.Pages.Admin;
public class IndexModel : PageModel
public class IndexModel(IPageContentService pageContentService) : PageModel
{
public void OnGet()
public PageContent PageContent { get; private set; } = new();
/// <summary>Wird ueber ?edit=1 eingeschaltet, wenn der Benutzer auf das Edit-Icon klickt.</summary>
public bool EditMode { get; private set; }
public async Task OnGetAsync(bool edit)
{
EditMode = edit;
PageContent = await pageContentService.GetAsync(HttpContext.RequestAborted);
}
/// <summary>
/// Liefert einen einzelnen Bereich neu gerendert zurueck. Wird nach dem
/// Hinzufuegen, Verschieben oder Loeschen eines Eintrags aufgerufen, damit
/// die Seite ohne vollstaendiges Neuladen wieder stimmt.
/// </summary>
public async Task<IActionResult> OnGetSectionAsync(string name)
{
var content = await pageContentService.GetAsync(HttpContext.RequestAborted);
return name switch
{
"hero" => Partial("Sections/_Hero", SectionView.For(content.Hero, true)),
"about" => Partial("Sections/_About", SectionView.For(content.About, true)),
"skills" => Partial("Sections/_Skills", SectionView.For(content.Skills, true)),
"projects" => Partial("Sections/_Projects", SectionView.For(content.Projects, true)),
"goals" => Partial("Sections/_Goals", SectionView.For(content.Goals, true)),
"experience" => Partial("Sections/_Experience", SectionView.For(content.Experience, true)),
"documents" => Partial("Sections/_Documents", SectionView.For(content.Documents, true)),
"contact" => Partial("Sections/_Contact", SectionView.For(content.Contact, true)),
_ => NotFound()
};
}
public async Task<IActionResult> OnPostLogoutAsync()