b2in/routes/domains.php
Kevin Adametz fcb10be120 Interior-Feinschliff: Hero-Slideshow, Lektorat, Rechtstexte, Aufräumen und Korrekturen 08.10.
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>
2026-10-08 14:00:15 +00:00

141 lines
6.4 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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']);