10-04-2026
This commit is contained in:
parent
4d6b4930b2
commit
4bb89aad8c
836 changed files with 52961 additions and 5950 deletions
|
|
@ -60,7 +60,15 @@ Route::middleware(['auth', 'partner.setup'])->group(function () {
|
|||
Volt::route('testing/registration', 'admin.testing.registration-tester')->name('testing.landing');
|
||||
|
||||
// CMS Routes
|
||||
Route::get('admin/cms/cabinet', \App\Livewire\Admin\CMS\CabinetDisplay::class)->name('admin.cms.cabinet');
|
||||
Route::get('admin/cms/cabinet', \App\Livewire\Admin\Cms\CabinetDisplay::class)->name('admin.cms.cabinet');
|
||||
Route::get('admin/cms/cabinet-tablet', \App\Livewire\Admin\Cms\CabinetInfoTablet::class)->name('admin.cms.cabinet-tablet');
|
||||
|
||||
// Display CMS
|
||||
Volt::route('admin/cms/display-dashboard', 'admin.cms.display-dashboard')->name('admin.cms.display-dashboard');
|
||||
Volt::route('admin/cms/display-media', 'admin.cms.display-media-library')->name('admin.cms.display-media');
|
||||
Route::get('admin/cms/display-versions', \App\Livewire\Admin\Cms\DisplayVersionList::class)->name('admin.cms.display-versions');
|
||||
Route::get('admin/cms/display-versions/{displayVersion}/edit', \App\Livewire\Admin\Cms\DisplayVersionEditor::class)->name('admin.cms.display-version-edit');
|
||||
Route::get('admin/cms/displays', \App\Livewire\Admin\Cms\DisplayList::class)->name('admin.cms.displays');
|
||||
|
||||
// Product Routes
|
||||
Volt::route('products/index', 'products.index')->name('products.index');
|
||||
|
|
@ -77,6 +85,13 @@ Route::middleware(['auth', 'partner.setup'])->group(function () {
|
|||
Volt::route('admin/hubs/create', 'admin.hubs.manage')->name('admin.hubs.create');
|
||||
Volt::route('admin/hubs/{hubId}/edit', 'admin.hubs.manage')->name('admin.hubs.edit');
|
||||
|
||||
// Flux CMS
|
||||
Volt::route('admin/flux-cms', 'admin.cms.dashboard')->name('cms.dashboard');
|
||||
Volt::route('admin/flux-cms/content', 'admin.cms.content-index')->name('cms.content.index');
|
||||
Volt::route('admin/flux-cms/projects', 'admin.cms.projects-index')->name('cms.projects.index');
|
||||
Volt::route('admin/flux-cms/media', 'admin.cms.media-index')->name('cms.media.index');
|
||||
Volt::route('admin/flux-cms/articles', 'admin.cms.articles-index')->name('cms.articles.index');
|
||||
|
||||
// Documentation
|
||||
Volt::route('admin/documentation', 'admin.documentation')->name('admin.documentation');
|
||||
Route::get('admin/documentation/download', function () {
|
||||
|
|
|
|||
|
|
@ -59,3 +59,7 @@ Route::post('/login', function (Request $request) {
|
|||
|
||||
// Display-Konfiguration für Cabinet Display
|
||||
Route::get('/display/config', [\App\Http\Controllers\Api\DisplayConfigController::class, 'index']);
|
||||
|
||||
// Cabinet Info-Tablet
|
||||
Route::get('/cabinet-tablet/status', [\App\Http\Controllers\Api\CabinetTabletController::class, 'status']);
|
||||
Route::get('/cabinet-tablet/check', [\App\Http\Controllers\Api\CabinetTabletController::class, 'check']);
|
||||
|
|
|
|||
|
|
@ -2,7 +2,10 @@
|
|||
|
||||
use Illuminate\Foundation\Inspiring;
|
||||
use Illuminate\Support\Facades\Artisan;
|
||||
use Illuminate\Support\Facades\Schedule;
|
||||
|
||||
Artisan::command('inspire', function () {
|
||||
$this->comment(Inspiring::quote());
|
||||
})->purpose('Display an inspiring quote');
|
||||
|
||||
Schedule::command('cabinet:reset-overrides')->dailyAt('00:00');
|
||||
|
|
|
|||
|
|
@ -27,18 +27,6 @@ $domainStyle2own = config('domains.domain_style2own', 'style2own.test');
|
|||
|
||||
// Admin-Bereich (Portal)
|
||||
Route::domain($domainPortal)->group(function () {
|
||||
// Livewire Update-Route explizit für Portal-Domain registrieren
|
||||
// (Notwendig weil Route-Cache/Subdomain-Routing die globalen Livewire-Routen nicht für alle Domains enthält)
|
||||
Route::post(
|
||||
\Livewire\Mechanisms\HandleRequests\EndpointResolver::updatePath(),
|
||||
[\Livewire\Mechanisms\HandleRequests\HandleRequests::class, 'handleUpdate']
|
||||
)->middleware('web')->name('portal.livewire.update');
|
||||
|
||||
// Livewire File-Upload-Route explizit für Portal-Domain registrieren
|
||||
Route::post(
|
||||
\Livewire\Mechanisms\HandleRequests\EndpointResolver::uploadPath(),
|
||||
[\Livewire\Features\SupportFileUploads\FileUploadController::class, 'handle']
|
||||
)->middleware(['web', 'throttle:60,1'])->name('portal.livewire.upload-file');
|
||||
|
||||
// Auth-Routen laden
|
||||
require __DIR__.'/auth.php';
|
||||
|
|
@ -52,6 +40,14 @@ Route::domain($domainPortal)->group(function () {
|
|||
// Display-API-Route (öffentlich zugänglich)
|
||||
Route::get('/api/display/config', [\App\Http\Controllers\Api\DisplayConfigController::class, 'index']);
|
||||
|
||||
// Cabinet Info-Tablet API
|
||||
Route::get('/api/cabinet-tablet/status', [\App\Http\Controllers\Api\CabinetTabletController::class, 'status']);
|
||||
Route::get('/api/cabinet-tablet/check', [\App\Http\Controllers\Api\CabinetTabletController::class, 'check']);
|
||||
|
||||
// Display Version API (per physical display)
|
||||
Route::get('/api/display/{display}/config', [\App\Http\Controllers\Api\DisplayVersionApiController::class, 'config']);
|
||||
Route::get('/api/display/{display}/check', [\App\Http\Controllers\Api\DisplayVersionApiController::class, 'check']);
|
||||
|
||||
// FluxUI Asset-Routen explizit für Portal-Domain registrieren
|
||||
// (Notwendig weil Route-Cache die globalen Flux-Routen nicht für alle Domains enthält)
|
||||
Route::get('/flux/flux.js', [\Flux\AssetManager::class, 'fluxJs']);
|
||||
|
|
@ -119,3 +115,11 @@ Route::domain('landing2.test')->group(function () {
|
|||
|
||||
// Fallback: Display-API für alle anderen Domains (z.B. localhost)
|
||||
Route::get('/api/display/config', [\App\Http\Controllers\Api\DisplayConfigController::class, 'index']);
|
||||
|
||||
// Fallback: Cabinet Info-Tablet API
|
||||
Route::get('/api/cabinet-tablet/status', [\App\Http\Controllers\Api\CabinetTabletController::class, 'status']);
|
||||
Route::get('/api/cabinet-tablet/check', [\App\Http\Controllers\Api\CabinetTabletController::class, 'check']);
|
||||
|
||||
// Fallback: Display Version API
|
||||
Route::get('/api/display/{display}/config', [\App\Http\Controllers\Api\DisplayVersionApiController::class, 'config']);
|
||||
Route::get('/api/display/{display}/check', [\App\Http\Controllers\Api\DisplayVersionApiController::class, 'check']);
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue