From f77d9ccfc7144179a1b6eb09aafa6f295978cc58 Mon Sep 17 00:00:00 2001 From: Nick Beckley Date: Mon, 29 Jun 2026 14:59:06 +0100 Subject: [PATCH] Phase 16R - Word Companion UX Simplification and Workflow Redesign --- .../WordCompanionHostController.cs | 8 +- .../ViewModels/WordCompanionViewModels.cs | 1 + PlotLine/Views/WordCompanionHost/Index.cshtml | 91 +++++++++++++------ PlotLine/wwwroot/css/word-companion.css | 80 +++++++++++++++- PlotLine/wwwroot/css/word-companion.min.css | 2 +- PlotLine/wwwroot/js/word-companion-host.js | 61 ++++++++++++- .../wwwroot/js/word-companion-host.min.js | 2 +- 7 files changed, 202 insertions(+), 43 deletions(-) diff --git a/PlotLine/Controllers/WordCompanionHostController.cs b/PlotLine/Controllers/WordCompanionHostController.cs index 0fee7d5..7827974 100644 --- a/PlotLine/Controllers/WordCompanionHostController.cs +++ b/PlotLine/Controllers/WordCompanionHostController.cs @@ -7,14 +7,18 @@ namespace PlotLine.Controllers; [AllowAnonymous] [Route("word-companion")] -public sealed class WordCompanionHostController(ICurrentUserService currentUser) : Controller +public sealed class WordCompanionHostController(ICurrentUserService currentUser, IAuthorizationService authorization) : Controller { [HttpGet("")] - public IActionResult Index() + public async Task Index() { + var isAdmin = currentUser.IsAuthenticated + && (await authorization.AuthorizeAsync(User, "AdminOnly")).Succeeded; + return View(new WordCompanionHostViewModel { IsAuthenticated = currentUser.IsAuthenticated, + IsAdmin = isAdmin, DisplayName = currentUser.DisplayName, LoginUrl = Url.Action("Login", "Account", new { returnUrl = "/word-companion" }) ?? "/Account/Login?returnUrl=%2Fword-companion" }); diff --git a/PlotLine/ViewModels/WordCompanionViewModels.cs b/PlotLine/ViewModels/WordCompanionViewModels.cs index 957fd10..d1f3d25 100644 --- a/PlotLine/ViewModels/WordCompanionViewModels.cs +++ b/PlotLine/ViewModels/WordCompanionViewModels.cs @@ -3,6 +3,7 @@ namespace PlotLine.ViewModels; public sealed class WordCompanionHostViewModel { public bool IsAuthenticated { get; init; } + public bool IsAdmin { get; init; } public string? DisplayName { get; init; } public string LoginUrl { get; init; } = string.Empty; } diff --git a/PlotLine/Views/WordCompanionHost/Index.cshtml b/PlotLine/Views/WordCompanionHost/Index.cshtml index 3d53302..3f7aaad 100644 --- a/PlotLine/Views/WordCompanionHost/Index.cshtml +++ b/PlotLine/Views/WordCompanionHost/Index.cshtml @@ -13,7 +13,7 @@ -
+

PlotDirector

@@ -89,15 +89,26 @@
+ +
-
+
-
+
-