WIP: macproblemsolver #6
BIN
Client/.DS_Store
vendored
Normal file
BIN
Client/.DS_Store
vendored
Normal file
Binary file not shown.
BIN
Client/Resources/.DS_Store
vendored
Normal file
BIN
Client/Resources/.DS_Store
vendored
Normal file
Binary file not shown.
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>net9.0</TargetFramework>
|
<TargetFramework>net9.0</TargetFramework>
|
||||||
<Version>1.0.0</Version>
|
<Version>1.0.11</Version>
|
||||||
<Authors>SZUAbsolventenverein</Authors>
|
<Authors>SZUAbsolventenverein</Authors>
|
||||||
<Company>SZUAbsolventenverein</Company>
|
<Company>SZUAbsolventenverein</Company>
|
||||||
<Description>[Description]</Description>
|
<Description>[Description]</Description>
|
||||||
|
|||||||
@ -1,6 +1,8 @@
|
|||||||
@namespace SZUAbsolventenverein.Theme.Website
|
@namespace SZUAbsolventenverein.Theme.Website
|
||||||
@inherits ThemeBase
|
@inherits ThemeBase
|
||||||
|
@inject NavigationManager NavigationManager
|
||||||
@inject ISettingService SettingService
|
@inject ISettingService SettingService
|
||||||
|
@implements IDisposable
|
||||||
|
|
||||||
<main role="main">
|
<main role="main">
|
||||||
<nav class="navbar navbar-dark bg-primary fixed-top app-navbar">
|
<nav class="navbar navbar-dark bg-primary fixed-top app-navbar">
|
||||||
@ -10,7 +12,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Versteckte Checkbox zum Steuern des Menüs (nur HTML, kein Blazor) -->
|
<!-- Versteckte Checkbox zum Steuern des Menüs (nur HTML, kein Blazor) -->
|
||||||
<input type="checkbox" id="nav-toggle" class="nav-toggle" />
|
<input type="checkbox" id="nav-toggle" class="nav-toggle" @bind="_navOpen" />
|
||||||
|
|
||||||
<!-- Burger-Icon, das die Checkbox toggelt -->
|
<!-- Burger-Icon, das die Checkbox toggelt -->
|
||||||
<label for="nav-toggle" class="nav-toggle-label">
|
<label for="nav-toggle" class="nav-toggle-label">
|
||||||
@ -175,6 +177,12 @@
|
|||||||
private bool _showDropdown = false;
|
private bool _showDropdown = false;
|
||||||
private bool _login = true;
|
private bool _login = true;
|
||||||
private bool _register = true;
|
private bool _register = true;
|
||||||
|
private bool _navOpen = false;
|
||||||
|
|
||||||
|
protected override void OnInitialized()
|
||||||
|
{
|
||||||
|
NavigationManager.LocationChanged += LocationChanged;
|
||||||
|
}
|
||||||
|
|
||||||
protected override void OnParametersSet()
|
protected override void OnParametersSet()
|
||||||
{
|
{
|
||||||
@ -190,5 +198,14 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void LocationChanged(object sender, LocationChangedEventArgs args)
|
||||||
|
{
|
||||||
|
_navOpen = false;
|
||||||
|
StateHasChanged();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Dispose()
|
||||||
|
{
|
||||||
|
NavigationManager.LocationChanged -= LocationChanged;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,9 +2,7 @@
|
|||||||
Standard Layout
|
Standard Layout
|
||||||
=========================== */
|
=========================== */
|
||||||
|
|
||||||
body {
|
body {}
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Login-Button (Mobile + Desktop) */
|
/* Login-Button (Mobile + Desktop) */
|
||||||
.app-menu-footer .btn-login,
|
.app-menu-footer .btn-login,
|
||||||
@ -19,17 +17,19 @@ body {
|
|||||||
font-weight: 500 !important;
|
font-weight: 500 !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Hover-Effekt */
|
/* Hover-Effekt */
|
||||||
.app-menu-footer .btn-login:hover,
|
.app-menu-footer .btn-login:hover,
|
||||||
.app-menu-footer .login-btn:hover,
|
.app-menu-footer .login-btn:hover,
|
||||||
.app-menu-footer button:hover,
|
.app-menu-footer button:hover,
|
||||||
.app-menu-footer a:hover {
|
.app-menu-footer a:hover {
|
||||||
background-color: #f2f2f2 !important;
|
background-color: #f2f2f2 !important;
|
||||||
border-color: #bbb !important;
|
border-color: #bbb !important;
|
||||||
color: #333 !important;
|
color: #333 !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.content {
|
.content {
|
||||||
margin-top: 60px; /* ungefähr Höhe der Navbar */
|
margin-top: 60px;
|
||||||
|
/* ungefähr Höhe der Navbar */
|
||||||
}
|
}
|
||||||
|
|
||||||
/* App Logo */
|
/* App Logo */
|
||||||
@ -38,7 +38,7 @@ body {
|
|||||||
padding: 0 5px 0 5px;
|
padding: 0 5px 0 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.table > :not(caption) > * > * {
|
.table> :not(caption)>*>* {
|
||||||
box-shadow: none;
|
box-shadow: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -99,7 +99,8 @@ body {
|
|||||||
/* Navbar als durchgehende Flex-Zeile */
|
/* Navbar als durchgehende Flex-Zeile */
|
||||||
.app-navbar {
|
.app-navbar {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-wrap: nowrap; /* NICHT umbrechen auf Desktop */
|
flex-wrap: nowrap;
|
||||||
|
/* NICHT umbrechen auf Desktop */
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: flex-start;
|
justify-content: flex-start;
|
||||||
z-index: 1000;
|
z-index: 1000;
|
||||||
@ -123,19 +124,20 @@ body {
|
|||||||
|
|
||||||
/* Burger-Icon (wird nur auf Mobil eingeblendet) */
|
/* Burger-Icon (wird nur auf Mobil eingeblendet) */
|
||||||
.nav-toggle-label {
|
.nav-toggle-label {
|
||||||
display: none; /* nur auf Mobil sichtbar */
|
display: none;
|
||||||
|
/* nur auf Mobil sichtbar */
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
padding: 0.25rem 0.5rem;
|
padding: 0.25rem 0.5rem;
|
||||||
margin-left: auto;
|
margin-left: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav-toggle-label span {
|
.nav-toggle-label span {
|
||||||
display: block;
|
display: block;
|
||||||
width: 22px;
|
width: 22px;
|
||||||
height: 2px;
|
height: 2px;
|
||||||
margin: 4px 0;
|
margin: 4px 0;
|
||||||
background-color: #ffffff;
|
background-color: #ffffff;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Menü-Container */
|
/* Menü-Container */
|
||||||
.app-menu {
|
.app-menu {
|
||||||
@ -174,15 +176,15 @@ body {
|
|||||||
transition: background-color 0.2s ease, color 0.2s ease;
|
transition: background-color 0.2s ease, color 0.2s ease;
|
||||||
}
|
}
|
||||||
|
|
||||||
.app-menu .nav-link:hover {
|
.app-menu .nav-link:hover {
|
||||||
background-color: #4a4a4a;
|
background-color: #4a4a4a;
|
||||||
color: #ffffff !important;
|
color: #ffffff !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.app-menu .nav-link.active {
|
.app-menu .nav-link.active {
|
||||||
background-color: #3b3b3b;
|
background-color: #3b3b3b;
|
||||||
color: #ffffff !important;
|
color: #ffffff !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* ===========================
|
/* ===========================
|
||||||
@ -197,7 +199,8 @@ body {
|
|||||||
align-items: center !important;
|
align-items: center !important;
|
||||||
justify-content: flex-start !important;
|
justify-content: flex-start !important;
|
||||||
position: relative !important;
|
position: relative !important;
|
||||||
min-height: 60px; /* optional: fixe Höhe */
|
min-height: 60px;
|
||||||
|
/* optional: fixe Höhe */
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Menü nur als Container für den Footer */
|
/* Menü nur als Container für den Footer */
|
||||||
@ -229,7 +232,8 @@ body {
|
|||||||
.app-menu-footer {
|
.app-menu-footer {
|
||||||
display: flex !important;
|
display: flex !important;
|
||||||
gap: 0.75rem !important;
|
gap: 0.75rem !important;
|
||||||
margin-left: auto !important; /* schiebt Footer nach rechts */
|
margin-left: auto !important;
|
||||||
|
/* schiebt Footer nach rechts */
|
||||||
padding: 0 !important;
|
padding: 0 !important;
|
||||||
border: none !important;
|
border: none !important;
|
||||||
background: none !important;
|
background: none !important;
|
||||||
@ -270,11 +274,14 @@ body {
|
|||||||
/* Sidebar-Wrapper rechts */
|
/* Sidebar-Wrapper rechts */
|
||||||
.app-menu {
|
.app-menu {
|
||||||
position: fixed;
|
position: fixed;
|
||||||
top: 80px; /* Abstand von oben (über der Navbar + Burger) */
|
top: 80px;
|
||||||
|
/* Abstand von oben (über der Navbar + Burger) */
|
||||||
right: 0;
|
right: 0;
|
||||||
|
bottom: 0;
|
||||||
width: 70%;
|
width: 70%;
|
||||||
max-width: 280px;
|
max-width: 280px;
|
||||||
height: calc(100vh - 80px); /* Höhe an das neue top anpassen */
|
height: calc(100vh - 80px);
|
||||||
|
/* Höhe an das neue top anpassen */
|
||||||
background-color: #b1b0b0;
|
background-color: #b1b0b0;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
align-items: stretch;
|
align-items: stretch;
|
||||||
@ -303,14 +310,16 @@ body {
|
|||||||
padding-top: 0.5rem;
|
padding-top: 0.5rem;
|
||||||
border-top: 1px solid rgba(255, 255, 255, 0.25);
|
border-top: 1px solid rgba(255, 255, 255, 0.25);
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column; /* untereinander statt nebeneinander */
|
flex-direction: column;
|
||||||
gap: 0.5rem; /* Abstand zwischen Host und Logout */
|
/* untereinander statt nebeneinander */
|
||||||
|
gap: 0.5rem;
|
||||||
|
/* Abstand zwischen Host und Logout */
|
||||||
justify-content: right;
|
justify-content: right;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Sidebar öffnen/schließen über Checkbox */
|
/* Sidebar öffnen/schließen über Checkbox */
|
||||||
.nav-toggle:checked ~ .app-menu {
|
.nav-toggle:checked~.app-menu {
|
||||||
transform: translateX(0);
|
transform: translateX(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -320,5 +329,4 @@ body {
|
|||||||
font-size: clamp(12px, 3.5vw, 15px);
|
font-size: clamp(12px, 3.5vw, 15px);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4,6 +4,8 @@
|
|||||||
<TargetFramework>net9.0</TargetFramework>
|
<TargetFramework>net9.0</TargetFramework>
|
||||||
<GeneratePackageOnBuild>false</GeneratePackageOnBuild>
|
<GeneratePackageOnBuild>false</GeneratePackageOnBuild>
|
||||||
<AccelerateBuildsInVisualStudio>false</AccelerateBuildsInVisualStudio>
|
<AccelerateBuildsInVisualStudio>false</AccelerateBuildsInVisualStudio>
|
||||||
|
<PackageId>SZUAbsolventenverein.Theme.Website</PackageId>
|
||||||
|
<Version>1.0.11</Version>
|
||||||
|
|
|||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|||||||
@ -1,8 +1,8 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
|
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
|
||||||
<metadata>
|
<metadata>
|
||||||
<id>$projectname$</id>
|
<id>SZUAbsolventenverein.Theme.Website</id>
|
||||||
<version>1.0.7</version>
|
<version>1.0.11</version>
|
||||||
|
Kocoder
commented
Dieser Change müsste mit dem korrekten Build Skript nicht gemacht werden Dieser Change müsste mit dem korrekten Build Skript nicht gemacht werden
Gaisi
commented
Hab das halt auch geändert weil version dort steht dachte wäre schöner wenn es einheitlich bleibt. Hab das halt auch geändert weil version dort steht dachte wäre schöner wenn es einheitlich bleibt.
|
|||||||
<authors>SZUAbsolventenverein</authors>
|
<authors>SZUAbsolventenverein</authors>
|
||||||
<owners>SZUAbsolventenverein</owners>
|
<owners>SZUAbsolventenverein</owners>
|
||||||
<title>Website</title>
|
<title>Website</title>
|
||||||
@ -20,9 +20,9 @@
|
|||||||
</dependencies>
|
</dependencies>
|
||||||
</metadata>
|
</metadata>
|
||||||
<files>
|
<files>
|
||||||
<file src="..\Client\bin\Release\$targetframework$\$projectname$.Client.Oqtane.dll" target="lib\$targetframework$" />
|
<file src="../Client/bin/Release/$targetframework$/SZUAbsolventenverein.Theme.Website.Client.Oqtane.dll" target="lib/$targetframework$" />
|
||||||
<file src="..\Client\bin\Release\$targetframework$\$projectname$.Client.Oqtane.pdb" target="lib\$targetframework$" />
|
<file src="../Client/bin/Release/$targetframework$/SZUAbsolventenverein.Theme.Website.Client.Oqtane.pdb" target="lib/$targetframework$" />
|
||||||
<file src="..\Client\wwwroot\**\*.*" target="wwwroot" />
|
<file src="../Client/wwwroot/**/*.*" target="wwwroot" />
|
||||||
|
Kocoder
commented
Dieser Change müsste mit dem korrekten Build Skript nicht gemacht werden Dieser Change müsste mit dem korrekten Build Skript nicht gemacht werden
Gaisi
commented
Hab das halt auch geändert weil version dort steht dachte wäre schöner wenn es einheitlich bleibt. Hab das halt auch geändert weil version dort steht dachte wäre schöner wenn es einheitlich bleibt.
|
|||||||
<file src="icon.png" target="" />
|
<file src="icon.png" target="" />
|
||||||
</files>
|
</files>
|
||||||
</package>
|
</package>
|
||||||
@ -2,6 +2,6 @@
|
|||||||
set TargetFramework=%1
|
set TargetFramework=%1
|
||||||
set ProjectName=%2
|
set ProjectName=%2
|
||||||
|
|
||||||
del "*.nupkg"
|
dotnet pack "%ProjectName%.Package.csproj" -p:NuspecFile="%ProjectName%.nuspec" -p:NuspecProperties="targetframework=%TargetFramework%;projectname=%ProjectName%" --no-build -o .
|
||||||
"..\..\oqtane.framework\oqtane.package\nuget.exe" pack %ProjectName%.nuspec -Properties targetframework=%TargetFramework%;projectname=%ProjectName%
|
del "..\..\oqtane.framework\Oqtane.Server\Packages\%ProjectName%.*.nupkg"
|
||||||
XCOPY "*.nupkg" "..\..\oqtane.framework\Oqtane.Server\wwwroot\Packages\" /Y
|
xcopy /Y *.nupkg "..\..\oqtane.framework\Oqtane.Server\Packages\"
|
||||||
|
Kocoder
commented
Bitte bei nuget.exe vom oqtane.framework bleiben. Bitte bei nuget.exe vom oqtane.framework bleiben.
|
|||||||
5
Package/release.sh
Normal file → Executable file
5
Package/release.sh
Normal file → Executable file
@ -1,5 +1,6 @@
|
|||||||
TargetFramework=$1
|
TargetFramework=$1
|
||||||
ProjectName=$2
|
ProjectName=$2
|
||||||
|
cd "$(dirname "$0")"
|
||||||
|
|
||||||
"..\..\oqtane.framework\oqtane.package\nuget.exe" pack %ProjectName%.nuspec -Properties targetframework=%TargetFramework%;projectname=%ProjectName%
|
dotnet pack "${ProjectName}.Package.csproj" -p:NuspecFile="${ProjectName}.nuspec" -p:NuspecProperties="targetframework=${TargetFramework};projectname=${ProjectName}" --no-build -o .
|
||||||
cp -f "*.nupkg" "..\..\oqtane.framework\Oqtane.Server\Packages\"
|
cp -f *.nupkg "../../oqtane.framework/Oqtane.Server/Packages/"
|
||||||
58
RELEASE_GUIDE.md
Normal file
58
RELEASE_GUIDE.md
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
# Release Anleitung (Mac / Linux)
|
||||||
|
|
||||||
|
> [!NOTE]
|
||||||
|
> Diese Anleitung und das verwendete Skript sind für **macOS** (und Linux) optimiert.
|
||||||
|
|
||||||
|
## 1. Release Skript
|
||||||
|
Das Skript zur Erstellung des Releases befindet sich hier:
|
||||||
|
`Theme.SZUAbsolventenverein/Package/release.sh`
|
||||||
|
|
||||||
|
## 2. Version ändern
|
||||||
|
|
||||||
|
Die Versionsnummer muss in den folgenden **3 Dateien** angepasst werden:
|
||||||
|
|
||||||
|
1. **Package Projektdatei**
|
||||||
|
* Datei: `Theme.SZUAbsolventenverein/Package/SZUAbsolventenverein.Theme.Website.Package.csproj`
|
||||||
|
* Zeile: `<Version>1.0.11</Version>`
|
||||||
|
|
||||||
|
2. **NuGet Spezifikation (Nuspec)**
|
||||||
|
* Datei: `Theme.SZUAbsolventenverein/Package/SZUAbsolventenverein.Theme.Website.nuspec`
|
||||||
|
* Zeile: `<version>1.0.11</version>`
|
||||||
|
|
||||||
|
3. **Client Projektdatei** (optional)
|
||||||
|
* Datei: `Theme.SZUAbsolventenverein/Client/SZUAbsolventenverein.Theme.Website.Client.csproj`
|
||||||
|
* Zeile: `<Version>1.0.11</Version>`
|
||||||
|
|
||||||
|
## 3. Release Build erstellen
|
||||||
|
|
||||||
|
Führe das `release.sh` Skript im Terminal aus.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# In das Verzeichnis wechseln (falls noch nicht dort)
|
||||||
|
cd /Users/adamgaiswinkler/Theme.SZUAbsolventenverein/Package
|
||||||
|
|
||||||
|
# Skript ausführen
|
||||||
|
./release.sh net9.0 SZUAbsolventenverein.Theme.Website
|
||||||
|
```
|
||||||
|
|
||||||
|
**Was passiert dabei?**
|
||||||
|
1. Der Code wird im `Release` Modus kompiliert.
|
||||||
|
2. Ein NuGet-Paket (`.nupkg`) wird erstellt.
|
||||||
|
3. Das Paket wird automatisch in den Server-Ordner kopiert:
|
||||||
|
`../../oqtane.framework/Oqtane.Server/Packages/`
|
||||||
|
|
||||||
|
### Windows
|
||||||
|
|
||||||
|
Führe die `release.cmd` in der Eingabeaufforderung (cmd) oder PowerShell aus:
|
||||||
|
|
||||||
|
```cmd
|
||||||
|
cd Theme.SZUAbsolventenverein\Package
|
||||||
|
release.cmd net9.0 SZUAbsolventenverein.Theme.Website
|
||||||
|
```
|
||||||
|
|
||||||
|
## 4. Server neustarten
|
||||||
|
|
||||||
|
Damit das neue Theme geladen wird, musst du den Oqtane Server neustarten (falls er läuft):
|
||||||
|
|
||||||
|
1. Server stoppen (`Ctrl + C` im Terminal).
|
||||||
|
2. Server neu starten: `dotnet run` (im Oqtane.Server Verzeichnis).
|
||||||
Reference in New Issue
Block a user
Dieser Change müsste mit dem korrekten Build Skript nicht gemacht werden
Hab das halt auch geändert weil version dort steht dachte wäre schöner wenn es einheitlich bleibt.