10-04-2026

This commit is contained in:
Kevin Adametz 2026-04-10 17:18:17 +02:00
parent 4d6b4930b2
commit 4bb89aad8c
836 changed files with 52961 additions and 5950 deletions

View file

@ -1,7 +1,10 @@
<?php
use App\Livewire\Cabinet\QuickStatus;
use App\Models\CmsProject;
use Illuminate\Support\Facades\Route;
use Livewire\Volt\Volt;
// Gemeinsame Web-Routes für alle Pages)
// Jede Landing-Page hat das gleiche Gerüst, aber unterschiedliches Styling
@ -14,8 +17,8 @@ Route::get('/', function () {
if ($theme === 'b2in') {
return view('web.home');
}
if (view()->exists('web.' . $theme)) {
return view('web.' . $theme);
if (view()->exists('web.'.$theme)) {
return view('web.'.$theme);
}
// Fallback to the default home view
@ -32,10 +35,35 @@ Route::get('/about', function () {
return view('web.about');
})->name('about');
Route::get('/ecosystem', function () {
return view('web.ecosystem');
return redirect('/partner', 301);
})->name('ecosystem');
Route::get('/immobilien', function () {
return view('web.immobilien');
})->name('immobilien');
Route::get('/netzwerk', function () {
return view('web.netzwerk');
})->name('netzwerk');
Route::get('/interior', function () {
return redirect('/netzwerk', 301);
})->name('interior');
Route::get('/immobilien/{slug}', function (string $slug) {
$cmsProject = CmsProject::query()->published()->where('slug', $slug)->first();
if ($cmsProject) {
$project = $cmsProject->toFrontendArray();
return view('web.immobilien-show', compact('project'));
}
$theme = config('app.theme', 'b2in');
$immobilienProjects = cms_theme_section('immobilien_projects', $theme);
$project = is_array($immobilienProjects) ? data_get($immobilienProjects, "projects.{$slug}") : null;
abort_unless($project, 404);
return view('web.immobilien-show', compact('project'));
})->name('immobilien.show');
Route::get('/partner', function () {
return view('web.partner');
return redirect('/netzwerk', 301);
})->name('partner');
Route::get('/magazin', function () {
return view('web.magazin');
@ -59,36 +87,54 @@ Route::get('/faq', function () {
return view('web.faq');
})->name('faq');
// Rechtliche Seiten
Route::get('/impressum', function () {
return view('web.impressum');
})->name('impressum');
Route::get('/privacy', function () {
return view('web.privacy');
})->name('privacy');
Route::get('/terms', function () {
return view('web.terms');
})->name('terms');
Route::get('/cookie-policy', function () {
return view('web.cookie-policy');
})->name('cookie-policy');
// Theme Demo Route
Route::get('/theme-demo', function () {
return view('web.theme-demo');
})->name('theme-demo');
// Dev: Sitemap & Archiv-Versionen
Route::prefix('dev')->group(function () {
Route::get('/sitemap', fn () => view('web.dev.sitemap'))->name('dev.sitemap');
Route::get('/immobilien-v1', fn () => view('web.dev.immobilien-v1'))->name('dev.immobilien-v1');
Route::get('/interior-v1', fn () => view('web.dev.interior-v1'))->name('dev.interior-v1');
Route::get('/partner-v1', fn () => view('web.dev.partner-v1'))->name('dev.partner-v1');
});
// Pfad-basierte Theme-Routen für lokale Entwicklung wurden entfernt
// Die Themensauswahl wird nun über den ThemeServiceProvider gesteuert (Domain oder ?theme=... GET-Parameter)
Route::get('/partner/invitation/expired/{token}', function (string $token) {
$invitation = \App\Models\PartnerInvitation::with('role')->where('token', $token)->firstOrFail();
return view('partner.invitation-expired', compact('invitation'));
})->name('partner.invitation.expired');
Route::get('/partner/invitation/used/{token}', function (string $token) {
$invitation = \App\Models\PartnerInvitation::with('role')->where('token', $token)->firstOrFail();
return view('partner.invitation-used', compact('invitation'));
})->name('partner.invitation.used');
Volt::route('/partner/invitation/{token}', 'partner.invitation-accept')
->name('partner.invitation.accept');
Volt::route('/partner/create-account', 'partner.create-account')
->name('partner.create.account');
// Öffentliche Registrierung per QR-/Code (Landing, code-check)
Volt::route('/reg/{role}', 'reg.landing')
->name('registration.landing');
@ -96,12 +142,14 @@ Volt::route('/reg/{role}', 'reg.landing')
Volt::route('/registration/thank-you', 'reg.thank-you')
->name('registration.thank-you');
// Partner Setup Wizard & Daten
Route::middleware('auth')->group(function () {
Volt::route('/partner/setup', 'partner.setup-wizard')
->name('partner.setup.wizard');
});
// Cabinet Quick-Status key-geschützte Mini-App für schnellen Statuswechsel
Route::get('/info/status', QuickStatus::class)->name('cabinet.quick-status');
// Authentifizierungs-Routen werden in domains.php eingebunden
//require __DIR__ . '/auth.php';
// require __DIR__ . '/auth.php';