profileShare

rasmusjy / splitapp-backend-modular-monolith

Read-only snapshot

No repository description.

main default branch 418 files Expires Sep 13, 2026, 9:06 AM
_Layout.cshtml 7,478 bytes
1 @using Microsoft.AspNetCore.Identity
2 @inject SignInManager<AppUser> _signInManager
3 @{
4 var pageTitle = (Model as ITitledViewModel)?.Title;
5 if (string.IsNullOrWhiteSpace(pageTitle)) pageTitle = "Admin";
6 var ctx = ViewContext.RouteData.Values;
7 var currentController = (ctx["controller"] as string ?? "").ToLowerInvariant();
8 bool IsActive(string name) => currentController == name.ToLowerInvariant();
9 }
10
11 <!DOCTYPE html>
12 <html lang="@Thread.CurrentThread.CurrentUICulture.TwoLetterISOLanguageName">
13 <head>
14 <meta charset="utf-8" />
15 <meta name="viewport" content="width=device-width, initial-scale=1.0" />
16 <meta name="theme-color" content="#e8604c" />
17 <title>@pageTitle - SplitApp Admin</title>
18
19 <link rel="preconnect" href="https://fonts.googleapis.com" />
20 <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
21 <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap" rel="stylesheet" />
22
23 <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css" />
24 <link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.min.css" />
25 <link rel="stylesheet" href="~/css/site.css" asp-append-version="true" />
26 <link rel="stylesheet" href="~/css/splitapp-design.css" asp-append-version="true" />
27 <link rel="stylesheet" href="~/css/admin.css" asp-append-version="true" />
28 </head>
29 <body class="admin-body">
30 <div id="sa-toast-container" class="sa-toast-container"></div>
31 <div id="sa-tempdata-messages" style="display:none"
32 data-success="@TempData["Success"]"
33 data-error="@TempData["Error"]"
34 data-warning="@TempData["Warning"]"></div>
35
36 <div class="admin-shell">
37 <aside class="admin-sidebar">
38 <div class="admin-sidebar-brand">
39 <i class="bi bi-airplane-fill"></i>
40 <span>SplitApp</span>
41 <small class="admin-sidebar-brand-sub">Admin</small>
42 </div>
43 <nav class="admin-sidebar-nav">
44 <a class="admin-nav-link @(IsActive("Dashboard") ? "active" : "")" asp-area="Admin" asp-controller="Dashboard" asp-action="Index">
45 <i class="bi bi-speedometer2"></i><span>@Localizer["Dashboard"]</span>
46 </a>
47 <div class="admin-nav-section">@Localizer["Core"]</div>
48 <a class="admin-nav-link @(IsActive("Trips") ? "active" : "")" asp-area="Admin" asp-controller="Trips" asp-action="Index">
49 <i class="bi bi-suitcase-lg"></i><span>@Localizer["Trips"]</span>
50 </a>
51 <a class="admin-nav-link @(IsActive("Expenses") ? "active" : "")" asp-area="Admin" asp-controller="Expenses" asp-action="Index">
52 <i class="bi bi-cash-coin"></i><span>@Localizer["Expenses"]</span>
53 </a>
54 <a class="admin-nav-link @(IsActive("BudgetCategories") ? "active" : "")" asp-area="Admin" asp-controller="BudgetCategories" asp-action="Index">
55 <i class="bi bi-tags"></i><span>@Localizer["Budget Categories"]</span>
56 </a>
57 <a class="admin-nav-link @(IsActive("Currencies") ? "active" : "")" asp-area="Admin" asp-controller="Currencies" asp-action="Index">
58 <i class="bi bi-currency-exchange"></i><span>@Localizer["Currencies"]</span>
59 </a>
60 <div class="admin-nav-section">@Localizer["Activity"]</div>
61 <a class="admin-nav-link @(IsActive("Polls") ? "active" : "")" asp-area="Admin" asp-controller="Polls" asp-action="Index">
62 <i class="bi bi-bar-chart"></i><span>@Localizer["Polls"]</span>
63 </a>
64 <a class="admin-nav-link @(IsActive("Wishlist") ? "active" : "")" asp-area="Admin" asp-controller="Wishlist" asp-action="Index">
65 <i class="bi bi-stars"></i><span>@Localizer["Wishlist"]</span>
66 </a>
67 <a class="admin-nav-link @(IsActive("Invitations") ? "active" : "")" asp-area="Admin" asp-controller="Invitations" asp-action="Index">
68 <i class="bi bi-envelope"></i><span>@Localizer["Invitations"]</span>
69 </a>
70 <div class="admin-nav-section">@Localizer["Settlements"]</div>
71 <a class="admin-nav-link @(IsActive("SettlementPlans") ? "active" : "")" asp-area="Admin" asp-controller="SettlementPlans" asp-action="Index">
72 <i class="bi bi-diagram-3"></i><span>@Localizer["Settlement Plans"]</span>
73 </a>
74 <a class="admin-nav-link @(IsActive("SettlementPayments") ? "active" : "")" asp-area="Admin" asp-controller="SettlementPayments" asp-action="Index">
75 <i class="bi bi-credit-card-2-front"></i><span>@Localizer["Settlement Payments"]</span>
76 </a>
77 <a class="admin-nav-link @(IsActive("SplitPresets") ? "active" : "")" asp-area="Admin" asp-controller="SplitPresets" asp-action="Index">
78 <i class="bi bi-pie-chart"></i><span>@Localizer["Split Presets"]</span>
79 </a>
80 <a class="admin-nav-link @(IsActive("TripParticipants") ? "active" : "")" asp-area="Admin" asp-controller="TripParticipants" asp-action="Index">
81 <i class="bi bi-people"></i><span>@Localizer["Trip Participants"]</span>
82 </a>
83 <div class="admin-nav-section">@Localizer["System"]</div>
84 <a class="admin-nav-link @(IsActive("Users") ? "active" : "")" asp-area="Admin" asp-controller="Users" asp-action="Index">
85 <i class="bi bi-person-gear"></i><span>@Localizer["Users"]</span>
86 </a>
87 </nav>
88 <div class="admin-sidebar-footer">
89 <a asp-area="" asp-controller="Home" asp-action="Index" class="admin-back-link">
90 <i class="bi bi-arrow-left"></i>@Localizer["Back to site"]
91 </a>
92 </div>
93 </aside>
94
95 <div class="admin-main">
96 <header class="admin-topbar">
97 <button class="admin-topbar-toggle d-md-none" type="button" onclick="document.body.classList.toggle('admin-sidebar-open')" aria-label="Toggle sidebar">
98 <i class="bi bi-list"></i>
99 </button>
100 <div class="admin-topbar-title">
101 <i class="bi bi-shield-lock"></i> @pageTitle
102 </div>
103 <div class="admin-topbar-actions">
104 <partial name="_LanguageSelection" />
105 <partial name="_LoginPartial" />
106 </div>
107 </header>
108
109 <main role="main" class="admin-content sa-animate-fade-in">
110 @RenderBody()
111 </main>
112
113 <footer class="admin-footer">
114 <span><i class="bi bi-airplane-fill me-1"></i> SplitApp Admin &copy; 2026 TalTech</span>
115 <span>@Thread.CurrentThread.CurrentUICulture.Name</span>
116 </footer>
117 </div>
118 </div>
119
120 <script src="~/lib/jquery/dist/jquery.min.js"></script>
121 <script src="~/lib/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
122 <script src="~/js/splitapp.js" asp-append-version="true"></script>
123 <script src="~/js/site.js" asp-append-version="true"></script>
124 @await RenderSectionAsync("Scripts", required: false)
125 </body>
126 </html>
127