Startseite und Heroes - Hero-Slideshow (11 Motive inkl. Febrü) mit Infokarte, Laufzeit-Linie, größeren Klickflächen, Goldrahmen und mobiler Karte unter dem Bild; Zeile über der Überschrift, neue Vertrauenspunkte - Hero-Stil auf Marken, Über uns und Kontakt übertragen, Breadcrumb entfernt - Gründer-Leiste, Vision-Box auf Ocker, Showroom-Display in Box mit „Größer ansehen“/Vollbild - Akzentfarbe #a8741f, größere Serif-Überschriften in der Interior-Welt - Marken: Bildpause mit Zitat; Vereine aktualisiert und verlinkt Inhalte - Lektorat aller angezeigten Texte, /about-Korrekturen, Rechtstexte (DDG, TDDDG, Hosting Hetzner) - Ablauf Maßanfertigung überall einheitlich, Magazin-Beitrag neu, alte Beiträge offline, deutsches Datum/Lesezeit, FAQ Projektausstattung, Otterpohl - Referenzen-Seite per CMS-Schalter ausblendbar CMS und Technik - Tote Sektionen, Felder, Seiten und Komponenten entfernt und archiviert (dev/2026-08-28/archiv-*) - Entwurf /entwurf, Farb-Schalter und /welcome entfernt; Test-Routen nur noch lokal - Seitenbaum-Beschreibungen geprüft, fehlende CMS-Felder ergänzt, Markenliste aus „Kernmarken“ - Admin-Bildvorschauen repariert, verwendete Bilder in die Mediathek übernommen - Seeder für das Deployment siehe dev/2026-08-28/entwicklungsplan.md Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
141 lines
6.4 KiB
PHP
141 lines
6.4 KiB
PHP
<?php
|
||
|
||
use Illuminate\Support\Facades\Route;
|
||
use Illuminate\Support\Facades\Vite;
|
||
|
||
/*
|
||
|--------------------------------------------------------------------------
|
||
| Domain-Konfiguration aus config/domains.php laden
|
||
|--------------------------------------------------------------------------
|
||
|
|
||
| Die Domains werden dynamisch aus der Konfiguration geladen.
|
||
| In .env können die Live-Domains definiert werden:
|
||
|
|
||
| DOMAIN_PORTAL=portal.beispiel.de
|
||
| DOMAIN_B2IN=b2in.de
|
||
| DOMAIN_B2A=b2a.de
|
||
| DOMAIN_STILEIGENTUM=stileigentum.de
|
||
| DOMAIN_STYLE2OWN=style2own.de
|
||
|
|
||
*/
|
||
|
||
$domainPortal = config('domains.domain_portal', 'portal.b2in.test');
|
||
$domainB2in = config('domains.domain_b2in', 'b2in.test');
|
||
$domainB2a = config('domains.domain_b2a', 'b2a.test');
|
||
$domainStileigentum = config('domains.domain_stileigentum', 'stileigentum.test');
|
||
$domainStyle2own = config('domains.domain_style2own', 'style2own.test');
|
||
|
||
// Admin-Bereich (Portal)
|
||
Route::domain($domainPortal)->group(function () {
|
||
|
||
// Auth-Routen laden
|
||
require __DIR__.'/auth.php';
|
||
|
||
// Admin-Routes laden
|
||
require __DIR__.'/admin.php';
|
||
|
||
// Test-Routen (E-Mail-Vorschauen, Login-Tests) nur lokal – sie zeigen echte Daten ohne Anmeldung.
|
||
if (app()->environment('local')) {
|
||
require __DIR__.'/test.php';
|
||
}
|
||
|
||
// 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/overview', [\App\Http\Controllers\Api\DisplayVersionApiController::class, 'overview']);
|
||
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']);
|
||
Route::get('/api/display/preview/{token}', [\App\Http\Controllers\Api\DisplayPreviewController::class, 'config']);
|
||
Route::get('/api/display/module/{module}/item/{item}/preview', [\App\Http\Controllers\Api\ModulePreviewController::class, 'configItem']);
|
||
Route::get('/api/display/module/{module}/preview', [\App\Http\Controllers\Api\ModulePreviewController::class, 'config']);
|
||
Route::get('/preview/module/{module}/item/{item}', [\App\Http\Controllers\Api\ModulePreviewController::class, 'showItem']);
|
||
Route::get('/preview/module/{module}', [\App\Http\Controllers\Api\ModulePreviewController::class, 'show']);
|
||
Route::get('/preview/{token}', [\App\Http\Controllers\Api\DisplayPreviewController::class, 'show']);
|
||
|
||
// 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']);
|
||
Route::get('/flux/flux.min.js', [\Flux\AssetManager::class, 'fluxMinJs']);
|
||
Route::get('/flux/editor.css', [\Flux\AssetManager::class, 'editorCss']);
|
||
Route::get('/flux/editor.js', [\Flux\AssetManager::class, 'editorJs']);
|
||
Route::get('/flux/editor.min.js', [\Flux\AssetManager::class, 'editorMinJs']);
|
||
|
||
// Admin-Assets (Vite)
|
||
Vite::useBuildDirectory('build/portal');
|
||
});
|
||
|
||
// API-Routen für alle Domains (optional: auch dynamisch machen)
|
||
Route::domain(config('domains.domain_api', 'api.b2in.test'))->group(function () {
|
||
require __DIR__.'/api.php';
|
||
});
|
||
|
||
// Web-Routes für alle Themes (werden außerhalb der Domain-Gruppen geladen, um Duplikate zu vermeiden)
|
||
// Das Theme wird automatisch basierend auf der Domain vom ThemeServiceProvider ausgewählt
|
||
require __DIR__.'/web.php';
|
||
|
||
// Domain-spezifische Vite Build-Verzeichnisse
|
||
Route::domain($domainB2in)->group(function () {
|
||
Vite::useBuildDirectory('build/b2in');
|
||
});
|
||
|
||
Route::domain($domainB2a)->group(function () {
|
||
Vite::useBuildDirectory('build/b2a');
|
||
});
|
||
|
||
Route::domain($domainStileigentum)->group(function () {
|
||
Vite::useBuildDirectory('build/stileigentum');
|
||
});
|
||
|
||
Route::domain($domainStyle2own)->group(function () {
|
||
Vite::useBuildDirectory('build/style2own');
|
||
});
|
||
|
||
/*
|
||
// Theme 1 für landing1.test
|
||
Route::domain('landing1.test')->group(function () {
|
||
// Web-Routes laden
|
||
require __DIR__.'/web.php';
|
||
|
||
// Theme 1 Assets (Vite)
|
||
Vite::macro('themeCss', function () {
|
||
return $this->asset('resources/css/web/theme-landing1.css');
|
||
});
|
||
|
||
Vite::useBuildDirectory('build/web');
|
||
});
|
||
|
||
// Theme 2 für landing2.test
|
||
Route::domain('landing2.test')->group(function () {
|
||
// Web-Routes laden
|
||
require __DIR__.'/web.php';
|
||
|
||
// Theme 2 Assets (Vite)
|
||
Vite::macro('themeCss', function () {
|
||
return $this->asset('resources/css/web/theme-landing2.css');
|
||
});
|
||
|
||
Vite::useBuildDirectory('build/web');
|
||
});*/
|
||
|
||
// 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/overview', [\App\Http\Controllers\Api\DisplayVersionApiController::class, 'overview']);
|
||
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']);
|
||
Route::get('/api/display/preview/{token}', [\App\Http\Controllers\Api\DisplayPreviewController::class, 'config']);
|
||
Route::get('/api/display/module/{module}/item/{item}/preview', [\App\Http\Controllers\Api\ModulePreviewController::class, 'configItem']);
|
||
Route::get('/api/display/module/{module}/preview', [\App\Http\Controllers\Api\ModulePreviewController::class, 'config']);
|
||
Route::get('/preview/module/{module}/item/{item}', [\App\Http\Controllers\Api\ModulePreviewController::class, 'showItem']);
|
||
Route::get('/preview/module/{module}', [\App\Http\Controllers\Api\ModulePreviewController::class, 'show']);
|
||
Route::get('/preview/{token}', [\App\Http\Controllers\Api\DisplayPreviewController::class, 'show']);
|