Restructure project shared files and update layout paths

Rename '_Shared' directory to 'Shared' to improve project structure
Update layout and view location references accordingly
Clean up unnecessary files and standardize project organization
This commit is contained in:
Janus C. H. Knudsen 2026-02-03 19:13:03 +01:00
parent ea3ecdfb68
commit dcd6ddcdeb
14 changed files with 20 additions and 249 deletions

184
.gitignore vendored
View file

@ -1,7 +1,4 @@
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
##
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
## .NET / Visual Studio gitignore
# User-specific files
*.rsuser
@ -10,12 +7,6 @@
*.userosscache
*.sln.docstates
# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs
# Mono auto generated files
mono_crash.*
# Build results
[Dd]ebug/
[Dd]ebugPublic/
@ -32,13 +23,8 @@ bld/
[Ll]og/
[Ll]ogs/
# Visual Studio 2015/2017 cache/options directory
# Visual Studio cache/options directory
.vs/
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/
# Visual Studio 2017 auto generated files
Generated\ Files/
# MSTest test Results
[Tt]est[Rr]esult*/
@ -49,11 +35,6 @@ Generated\ Files/
TestResult.xml
nunit-*.xml
# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c
# Benchmark Results
BenchmarkDotNet.Artifacts/
@ -62,16 +43,10 @@ project.lock.json
project.fragment.lock.json
artifacts/
# ASP.NET Scaffolding
ScaffoldingReadMe.txt
# StyleCop
StyleCopReport.xml
# Files built by Visual Studio
*_i.c
*_p.c
*_h.h
*.ilk
*.meta
*.obj
@ -97,9 +72,6 @@ StyleCopReport.xml
*.svclog
*.scc
# Chutzpah Test files
_Chutzpah*
# Visual C++ cache files
ipch/
*.aps
@ -123,25 +95,22 @@ ipch/
# TFS 2012 Local Workspace
$tf/
# Guidance Automation Toolkit
*.gpState
# ReSharper is a .NET coding add-in
# ReSharper
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user
# TeamCity is a build add-in
# TeamCity
_TeamCity*
# DotCover is a Code Coverage Tool
# DotCover
*.dotCover
# AxoCover is a Code Coverage Tool
# AxoCover
.axoCover/*
!.axoCover/settings.json
# Coverlet is a free, cross platform Code Coverage Tool
# Coverlet
coverage*.json
coverage*.xml
coverage*.info
@ -155,53 +124,23 @@ _NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*
# MightyMoose
*.mm.*
AutoTest.Net/
# Web workbench (sass)
.sass-cache/
# Installshield output folder
[Ee]xpress/
# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html
# Click-Once directory
publish/
# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# Note: Comment the next line if you want to checkin your web deploy settings,
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj
# Microsoft Azure Web App publish settings. Comment the next line if you want to
# checkin your Azure Web App publish settings, but sensitive information contained
# in these scripts will be unencrypted
# Microsoft Azure Web App publish settings
PublishScripts/
# NuGet Packages
*.nupkg
# NuGet Symbol Packages
*.snupkg
# The packages folder can be ignored because of Package Restore
**/[Pp]ackages/*
# except build/, which is used as an MSBuild target.
!**/[Pp]ackages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/[Pp]ackages/repositories.config
# NuGet v3's project.json files produces more ignorable files
*.nuget.props
*.nuget.targets
@ -213,19 +152,8 @@ csx/
ecf/
rcf/
# Windows Store app package directories and files
AppPackages/
BundleArtifacts/
Package.StoreAssociation.xml
_pkginfo.txt
*.appx
*.appxbundle
*.appxupload
# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!?*.[Cc]ache/
# Others
@ -237,22 +165,8 @@ ClientBin/
*.jfm
*.pfx
*.publishsettings
orleans.codegen.cs
# Including strong name files can present a security risk
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
#*.snk
# Since there are multiple workflows, uncomment next line to ignore bower_components
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
#bower_components/
# RIA/Silverlight projects
Generated_Code/
# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
@ -265,87 +179,15 @@ ServiceFabricBackup/
*.ldf
*.ndf
# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
*.rptproj.rsuser
*- [Bb]ackup.rdl
*- [Bb]ackup ([0-9]).rdl
*- [Bb]ackup ([0-9][0-9]).rdl
# Microsoft Fakes
FakesAssemblies/
# GhostDoc plugin setting file
*.GhostDoc.xml
# Node.js Tools for Visual Studio
.ntvs_analysis.dat
# Node.js (for TypeScript frontend)
node_modules/
# Visual Studio 6 build log
*.plg
# Visual Studio 6 workspace options file
*.opt
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
*.vbw
# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
**/*.DesktopClient/ModelManifest.xml
**/*.Server/GeneratedArtifacts
**/*.Server/ModelManifest.xml
_Pvt_Extensions
# Paket dependency manager
.paket/paket.exe
paket-files/
# FAKE - F# Make
.fake/
# CodeRush personal settings
.cr/personal
# Python Tools for Visual Studio (PTVS)
__pycache__/
*.pyc
# Cake - Uncomment if you are using it
# tools/**
# !tools/packages.config
# Tabs Studio
*.tss
# Telerik's JustMock configuration file
*.jmconfig
# BizTalk build output
*.btp.cs
*.btm.cs
*.odx.cs
*.xsd.cs
# OpenCover UI analysis results
OpenCover/
# Azure Stream Analytics local run output
ASALocalRun/
# MSBuild Binary and Structured Log
*.binlog
# NVidia Nsight GPU debugger configuration file
*.nvuser
# MFractors (Xamarin productivity tool) working folder
.mfractor/
# Local History for Visual Studio
.localhistory/
@ -355,20 +197,14 @@ healthchecksdb
# Backup folder for Package Reference Convert tool in Visual Studio 2017
MigrationBackup/
# Ionide (cross platform F# VS Code tools) working folder
.ionide/
# Fody - auto-generated XML schema
FodyWeavers.xsd
nul
# Project-specific
tmpclaude*
PlanTempus.Application/tmpclaude*
PlanTempus.Application/wwwroot/js/app.js
PlanTempus.Application/wwwroot/js/app.js.map
PlanTempus.Application/wwwroot/lib/*

View file

@ -2,7 +2,7 @@
@model PlanTempus.Application.Features.Accounts.Pages.PaymentModel
@{
ViewData["Title"] = "Betaling";
Layout = "/Features/_Shared/Pages/_AuthLayout.cshtml";
Layout = "/Features/Shared/Pages/_AuthLayout.cshtml";
var plan = Model.SelectedPlan;
}

View file

@ -2,7 +2,7 @@
@model PlanTempus.Application.Features.Accounts.Pages.PricingModel
@{
ViewData["Title"] = "Vælg abonnement";
Layout = "/Features/_Shared/Pages/_AuthLayout.cshtml";
Layout = "/Features/Shared/Pages/_AuthLayout.cshtml";
}
<swp-pricing-page>

View file

@ -2,7 +2,7 @@
@model PlanTempus.Application.Features.Accounts.Pages.SignupModel
@{
ViewData["Title"] = Model.SelectedPlan.IsContactSales ? "Kontakt salg" : "Opret konto";
Layout = "/Features/_Shared/Pages/_AuthLayout.cshtml";
Layout = "/Features/Shared/Pages/_AuthLayout.cshtml";
var plan = Model.SelectedPlan;
var badgeClass = plan.IsContactSales ? plan.BadgeClass : (plan.IsFree ? plan.BadgeClass : "selected");

View file

@ -0,0 +1,3 @@
@{
Layout = "/Features/Shared/Pages/_Layout.cshtml";
}

View file

@ -1,7 +1,7 @@
using Microsoft.AspNetCore.Razor.TagHelpers;
using PlanTempus.Application.Features.Localization.Services;
namespace PlanTempus.Application.Features._Shared.TagHelpers;
namespace PlanTempus.Application.Features.Shared.TagHelpers;
[HtmlTargetElement(Attributes = "localize")]
public class LocalizeTagHelper : TagHelper

View file

@ -1,39 +0,0 @@
@model PlanTempus.Application.Features.Menu.SideMenuViewModel
<swp-side-menu>
<swp-side-menu-header>
<i class="ph ph-squares-four"></i>
<swp-side-menu-logo localize="sidebar.appName">Salon OS</swp-side-menu-logo>
<swp-menu-toggle id="menuToggle">
<i class="ph ph-caret-left"></i>
</swp-menu-toggle>
</swp-side-menu-header>
<swp-side-menu-nav>
@foreach (var group in Model.Groups)
{
<swp-side-menu-group data-group="@group.Id">
<swp-side-menu-label>@group.Label</swp-side-menu-label>
@foreach (var item in group.Items)
{
<a href="@item.Url" is="swp-side-menu-item"
data-active="@(item.IsActive ? "true" : "false")"
data-tooltip="@item.Label">
<i class="ph @item.Icon"></i>
<span>@item.Label</span>
</a>
}
</swp-side-menu-group>
}
</swp-side-menu-nav>
<swp-side-menu-footer>
<swp-side-menu-action class="lock" id="lockScreen" title="Lås skærm">
<i class="ph ph-lock"></i>
<span localize="sidebar.lockScreen">Lås skærm</span>
</swp-side-menu-action>
</swp-side-menu-footer>
</swp-side-menu>
<!-- Tooltip for collapsed menu -->
<span id="menuTooltip" class="swp-menu-tooltip" popover="manual"></span>

View file

@ -1,26 +0,0 @@
<swp-app-topbar>
<swp-topbar-search>
<i class="ph ph-magnifying-glass"></i>
<input type="text" placeholder="Søg i Salon OS..." id="globalSearch">
<kbd>⌘K</kbd>
</swp-topbar-search>
<swp-topbar-actions>
<!-- Notifications -->
<swp-topbar-btn id="notificationsBtn" title="Notifikationer">
<i class="ph ph-bell"></i>
<swp-notification-badge>3</swp-notification-badge>
</swp-topbar-btn>
<swp-topbar-divider></swp-topbar-divider>
<!-- Profile (opens drawer) -->
<swp-topbar-profile id="profileTrigger">
<swp-profile-avatar>MJ</swp-profile-avatar>
<swp-profile-info>
<swp-profile-name>Maria Jensen</swp-profile-name>
<swp-profile-role>Administrator</swp-profile-role>
</swp-profile-info>
</swp-topbar-profile>
</swp-topbar-actions>
</swp-app-topbar>

View file

@ -1,3 +0,0 @@
@{
Layout = "/Features/_Shared/Pages/_Layout.cshtml";
}

View file

@ -1,3 +1,3 @@
@{
Layout = "/Features/_Shared/Pages/_Layout.cshtml";
Layout = "/Features/Shared/Pages/_Layout.cshtml";
}

View file

@ -37,8 +37,8 @@ public class Startup
})
.AddRazorOptions(options =>
{
options.ViewLocationFormats.Add("/Features/_Shared/Pages/{0}.cshtml");
options.ViewLocationFormats.Add("/Features/_Shared/Components/{1}/{0}.cshtml");
options.ViewLocationFormats.Add("/Features/Shared/Pages/{0}.cshtml");
options.ViewLocationFormats.Add("/Features/Shared/Components/{1}/{0}.cshtml");
});
services.AddAntiforgery(x => x.HeaderName = "X-ANTI-FORGERY-TOKEN");