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

@ -0,0 +1,93 @@
<?php
declare(strict_types=1);
/**
* Theme-Section-Schlüssel (wie in b2in.themes.{theme}.*) [CMS-Gruppe, CMS-Key].
*
* Wird von cms_theme_section() und CmsContentSeeder verwendet.
*/
return [
'lang_keys' => [
'card_section' => 'partner_card_section',
],
'sections' => [
'announcement_bar' => ['global', 'announcement_bar'],
'header' => ['global', 'header'],
'cta_section' => ['global', 'cta_section'],
'cta_section_portfolio' => ['global', 'cta_section_portfolio'],
'hero' => ['home', 'hero'],
'founder_bar' => ['home', 'founder_bar'],
'synergie_section' => ['home', 'synergie_section'],
'ecosystem_core' => ['home', 'ecosystem_core'],
'vision_section' => ['home', 'vision_section'],
'brand_worlds' => ['home', 'brand_worlds'],
'integriertes_modell_b2in' => ['home', 'integriertes_modell_b2in'],
'immobilien_hero' => ['immobilien', 'hero'],
'immobilien_hero_v2' => ['immobilien', 'hero_v2'],
'immobilien_projects' => ['immobilien', 'projects_meta'],
'immobilien_moebel_vorteil' => ['immobilien', 'moebel_vorteil'],
'immobilien_trust' => ['immobilien', 'trust'],
'immobilien_warum_dubai' => ['immobilien', 'warum_dubai'],
'immobilien_image_break' => ['immobilien', 'image_break'],
'immobilien_kaufprozess' => ['immobilien', 'kaufprozess'],
'immobilien_bruecke' => ['immobilien', 'bruecke'],
'immobilien_mindset' => ['immobilien', 'mindset'],
'portfolio' => ['immobilien', 'portfolio'],
'netzwerk_hero' => ['netzwerk', 'hero'],
'netzwerk_image_break' => ['netzwerk', 'image_break'],
'netzwerk_teasers' => ['netzwerk', 'teasers'],
'netzwerk_cta' => ['netzwerk', 'cta'],
'netzwerk_cabinet_partner' => ['netzwerk', 'cabinet_partner'],
'netzwerk_immobilien_hint' => ['netzwerk', 'immobilien_hint'],
'interior_hero' => ['netzwerk', 'interior_hero'],
'interior_concept' => ['netzwerk', 'interior_concept'],
'interior_brands' => ['netzwerk', 'interior_brands'],
'interior_zielgruppen' => ['netzwerk', 'interior_zielgruppen'],
'interior_process' => ['netzwerk', 'interior_process'],
'interior_trust' => ['netzwerk', 'interior_trust'],
'faq' => ['faq', 'faq'],
'contact_form' => ['contact', 'contact_form'],
'about_hero' => ['about', 'hero'],
'our_story' => ['about', 'our_story'],
'about_image_break' => ['about', 'image_break'],
'our_values' => ['about', 'our_values'],
'leadership_team' => ['about', 'leadership_team'],
'broker_section' => ['netzwerk', 'broker_section'],
'commitment_section' => ['netzwerk', 'commitment_section'],
'dark_stats_section' => ['netzwerk', 'dark_stats_section'],
'ecosystem_hero' => ['netzwerk', 'ecosystem_hero'],
'ecosystem_stats' => ['netzwerk', 'ecosystem_stats'],
'ecosystem_start' => ['netzwerk', 'ecosystem_start'],
'ecosystem_hub' => ['netzwerk', 'ecosystem_hub'],
'ecosystem_result' => ['netzwerk', 'ecosystem_result'],
'end_customer_section' => ['netzwerk', 'end_customer_section'],
'final_commitment' => ['netzwerk', 'final_commitment'],
'digital_core' => ['netzwerk', 'digital_core'],
'supply_chain_intro' => ['netzwerk', 'supply_chain_intro'],
'partner_hero' => ['netzwerk', 'partner_hero'],
'partner_benefits' => ['netzwerk', 'partner_benefits'],
'partner_cta' => ['netzwerk', 'partner_cta'],
'partner_card_section' => ['netzwerk', 'partner_card_section'],
'card_section' => ['netzwerk', 'partner_card_section'],
'partner_benefits_developer' => ['netzwerk', 'partner_benefits_developer'],
'partner_benefits_retailer' => ['netzwerk', 'partner_benefits_retailer'],
'partner_benefits_supplier' => ['netzwerk', 'partner_benefits_supplier'],
'partner_benefits_broker' => ['netzwerk', 'partner_benefits_broker'],
'partner_process' => ['netzwerk', 'partner_process'],
'supplier_section' => ['netzwerk', 'supplier_section'],
'magazin_detail' => ['magazin', 'detail'],
'magazin_list' => ['magazin', 'list'],
],
];

File diff suppressed because it is too large Load diff

127
config/cookie-consent.php Normal file
View file

@ -0,0 +1,127 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Cookie Consent aktivieren
|--------------------------------------------------------------------------
|
| Hilfreich, um den Manager in bestimmten Umgebungen komplett auszuschalten.
|
*/
'enabled' => env('COOKIE_CONSENT_ENABLED', true),
/*
|--------------------------------------------------------------------------
| Google Analytics ID
|--------------------------------------------------------------------------
|
| Hier trägst du deine Tracking ID ein (z.B. G-XXXXXXXXXX).
| Wenn der Wert leer ist, wird der Analytics-Toggle nicht angezeigt.
|
*/
'analytics_id' => env('GOOGLE_ANALYTICS_ID', ''),
/*
|--------------------------------------------------------------------------
| Google Tag Manager ID
|--------------------------------------------------------------------------
|
| Optional: Wenn du den Google Tag Manager statt direktem Analytics nutzt,
| trage hier deine GTM-ID ein (z.B. GTM-XXXXXXXX).
|
| Wenn sowohl GTM als auch Analytics-ID gesetzt sind, wird GTM bevorzugt.
| Der Tag Manager lädt dann alle weiteren Tags (inkl. GA4) selbst.
|
*/
'gtm_id' => env('GOOGLE_TAG_MANAGER_ID', ''),
/*
|--------------------------------------------------------------------------
| Cookie Lebensdauer
|--------------------------------------------------------------------------
|
| Wie viele Tage soll die Entscheidung des Nutzers gespeichert bleiben?
| Standard: 365 Tage (1 Jahr). DSGVO empfiehlt max. 12 Monate.
|
*/
'cookie_lifetime' => env('COOKIE_CONSENT_LIFETIME', 365),
/*
|--------------------------------------------------------------------------
| Cookie Name
|--------------------------------------------------------------------------
|
| Der Name des Cookies, in dem die Einwilligung gespeichert wird.
|
*/
'cookie_name' => env('COOKIE_CONSENT_NAME', 'cookie_consent'),
/*
|--------------------------------------------------------------------------
| Links
|--------------------------------------------------------------------------
|
| URLs für Datenschutz und Impressum.
|
*/
'links' => [
'privacy' => '/privacy',
'imprint' => '/impressum',
],
/*
|--------------------------------------------------------------------------
| Position des Floating Buttons
|--------------------------------------------------------------------------
|
| Wo soll der Cookie-Settings-Button angezeigt werden?
| Optionen: 'bottom-left', 'bottom-right'
|
*/
'button_position' => 'bottom-left',
/*
|--------------------------------------------------------------------------
| IP-Anonymisierung
|--------------------------------------------------------------------------
|
| Google Analytics IP-Anonymisierung aktivieren (empfohlen für DSGVO).
|
*/
'anonymize_ip' => true,
/*
|--------------------------------------------------------------------------
| Farben (Theme)
|--------------------------------------------------------------------------
|
| Passe die Farben an dein Projekt-Design an.
| Du kannst Tailwind-Klassen oder CSS-Farbwerte verwenden.
|
| Für Tailwind-Projekte: Nutze deine definierten Farben wie 'primary', 'secondary'
| Für Standard-CSS: Nutze HEX-Werte wie '#009bdd'
|
*/
'colors' => [
// Primärfarbe für Akzente, aktive Toggles, Icons
'primary' => env('COOKIE_CONSENT_COLOR_PRIMARY', '#0088cc'),
// Sekundärfarbe / Hover-Zustand der Primärfarbe
'primary_hover' => env('COOKIE_CONSENT_COLOR_PRIMARY_HOVER', '#006699'),
// Akzeptieren-Button (grün)
'accept' => env('COOKIE_CONSENT_COLOR_ACCEPT', '#16a34a'),
'accept_hover' => env('COOKIE_CONSENT_COLOR_ACCEPT_HOVER', '#15803d'),
// Einstellungen speichern Button
'save' => env('COOKIE_CONSENT_COLOR_SAVE', '#a5a5a5'),
'save_hover' => env('COOKIE_CONSENT_COLOR_SAVE_HOVER', '#b3b3b3'),
// Floating Button
'button_bg' => env('COOKIE_CONSENT_COLOR_BUTTON_BG', '#0088cc'),
'button_hover' => env('COOKIE_CONSENT_COLOR_BUTTON_HOVER', '#006699'),
],
];

View file

@ -20,6 +20,14 @@ return [
*/
'protocol' => env('APP_PROTOCOL', 'https://'),
/*
|--------------------------------------------------------------------------
| Cabinet Quick-Status Key
|--------------------------------------------------------------------------
| Secret key for the keyless-login quick status page at /info/status?k=...
*/
'cabinet_status_key' => env('CABINET_STATUS_KEY', null),
/*
|--------------------------------------------------------------------------
| Domain-Namen (ohne Protokoll)

356
config/flux-cms.php Normal file
View file

@ -0,0 +1,356 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Flux CMS Configuration
|--------------------------------------------------------------------------
|
| This file contains the configuration options for Flux CMS.
|
*/
/*
|--------------------------------------------------------------------------
| Default Locale
|--------------------------------------------------------------------------
|
| The default locale for the CMS content.
|
*/
'default_locale' => env('FLUX_CMS_DEFAULT_LOCALE', 'de'),
/*
|--------------------------------------------------------------------------
| Available Locales
|--------------------------------------------------------------------------
|
| The available locales for the CMS content.
|
*/
'locales' => [
'de' => 'Deutsch',
'en' => 'English',
],
/*
|--------------------------------------------------------------------------
| Component Paths
|--------------------------------------------------------------------------
|
| The namespaces where the CMS will scan for components.
|
*/
'component_paths' => [
'App\\Livewire\\Components',
'FluxCms\\StarterComponents\\Components',
],
/*
|--------------------------------------------------------------------------
| Cache Configuration
|--------------------------------------------------------------------------
|
| Configuration for caching component registry and other CMS data.
|
*/
'cache' => [
'enabled' => env('FLUX_CMS_CACHE_ENABLED', true),
'ttl' => env('FLUX_CMS_CACHE_TTL', 3600), // 1 hour
'key_prefix' => 'flux_cms',
'store' => env('FLUX_CMS_CACHE_STORE', null), // null = default cache store
],
/*
|--------------------------------------------------------------------------
| Database Configuration
|--------------------------------------------------------------------------
|
| Database table configuration for Flux CMS.
|
*/
'database' => [
'table_prefix' => 'flux_cms_',
'connection' => env('FLUX_CMS_DB_CONNECTION', null), // null = default connection
],
/*
|--------------------------------------------------------------------------
| Authentication & Authorization
|--------------------------------------------------------------------------
|
| Configuration for user authentication and authorization.
|
*/
'auth' => [
'guard' => env('FLUX_CMS_AUTH_GUARD', 'web'),
'default_access' => env('FLUX_CMS_DEFAULT_ACCESS', false),
'super_admin_role' => 'admin',
'cms_role' => 'flux-cms',
'permissions' => [
'view' => 'flux-cms.view',
'edit' => 'flux-cms.edit',
'publish' => 'flux-cms.publish',
'delete' => 'flux-cms.delete',
'admin' => 'flux-cms.admin',
],
],
/*
|--------------------------------------------------------------------------
| Routes Configuration
|--------------------------------------------------------------------------
|
| Configuration for CMS routes.
|
*/
'routes' => [
'enabled' => env('FLUX_CMS_ROUTES_ENABLED', false),
'prefix' => env('FLUX_CMS_ROUTE_PREFIX', ''),
'middleware' => ['web'],
'admin_prefix' => env('FLUX_CMS_ADMIN_PREFIX', 'admin/cms'),
'admin_middleware' => ['web', 'auth'],
],
/*
|--------------------------------------------------------------------------
| SEO Configuration
|--------------------------------------------------------------------------
|
| SEO-related configuration options.
|
*/
'seo' => [
'site_name' => env('FLUX_CMS_SITE_NAME', config('app.name')),
'separator' => env('FLUX_CMS_SEO_SEPARATOR', ' - '),
'meta_keywords_limit' => 10,
'meta_description_limit' => 160,
'auto_sitemap' => true,
'auto_robots' => true,
'canonical_urls' => true,
'og_image_default' => null,
],
/*
|--------------------------------------------------------------------------
| Media Configuration
|--------------------------------------------------------------------------
|
| Configuration for media handling.
|
*/
'media' => [
'disk' => env('FLUX_CMS_MEDIA_DISK', 'public'),
'max_file_size' => env('FLUX_CMS_MAX_FILE_SIZE', 10240), // 10MB in KB
'originals_path' => 'cms/media/originals',
'conversions_path' => 'cms/media/conversions',
'allowed_extensions' => [
'images' => ['jpg', 'jpeg', 'png', 'gif', 'webp', 'svg'],
'documents' => ['pdf', 'doc', 'docx', 'xls', 'xlsx', 'ppt', 'pptx', 'txt', 'csv'],
],
'profiles' => [
'thumb' => [
'width' => 300,
'height' => 300,
'format' => 'webp',
'quality' => 80,
'fit' => 'cover',
],
'hero' => [
'width' => 1920,
'height' => 800,
'format' => 'webp',
'quality' => 85,
'fit' => 'cover',
],
'card' => [
'width' => 768,
'height' => 512,
'format' => 'webp',
'quality' => 80,
'fit' => 'cover',
],
'gallery' => [
'width' => 1200,
'height' => 900,
'format' => 'webp',
'quality' => 85,
'fit' => 'cover',
],
'service' => [
'width' => 800,
'height' => 600,
'format' => 'webp',
'quality' => 85,
'fit' => 'cover',
],
'avatar' => [
'width' => 400,
'height' => 400,
'format' => 'webp',
'quality' => 85,
'fit' => 'cover',
],
'thumbnail' => [
'width' => 600,
'height' => 400,
'format' => 'webp',
'quality' => 80,
'fit' => 'cover',
],
'og_image' => [
'width' => 1200,
'height' => 630,
'format' => 'jpg',
'quality' => 90,
'fit' => 'cover',
],
],
],
/*
|--------------------------------------------------------------------------
| Editor Configuration
|--------------------------------------------------------------------------
|
| Configuration for WYSIWYG editors.
|
*/
'editor' => [
'default' => env('FLUX_CMS_EDITOR', 'tiptap'), // tiptap, tinymce, quill
'upload_images' => true,
'max_image_size' => 2048, // 2MB in KB
'toolbar_presets' => [
'basic' => ['bold', 'italic'],
'standard' => ['bold', 'italic', 'link', 'bulletList', 'orderedList'],
'full' => [
'bold',
'italic',
'underline',
'strike',
'heading1',
'heading2',
'heading3',
'bulletList',
'orderedList',
'link',
'image',
'table',
'code',
'codeBlock',
'quote',
'rule',
],
],
],
/*
|--------------------------------------------------------------------------
| Versioning Configuration
|--------------------------------------------------------------------------
|
| Configuration for content versioning.
|
*/
'versioning' => [
'enabled' => env('FLUX_CMS_VERSIONING_ENABLED', true),
'auto_version' => env('FLUX_CMS_AUTO_VERSION', true),
'max_versions' => env('FLUX_CMS_MAX_VERSIONS', 50),
'cleanup_old_versions' => env('FLUX_CMS_CLEANUP_VERSIONS', true),
'cleanup_after_days' => env('FLUX_CMS_CLEANUP_AFTER_DAYS', 365),
],
/*
|--------------------------------------------------------------------------
| Performance Configuration
|--------------------------------------------------------------------------
|
| Performance-related configuration options.
|
*/
'performance' => [
'eager_load_relations' => ['components', 'media'],
'pagination_size' => 20,
'component_registry_cache' => true,
'query_cache_ttl' => 300, // 5 minutes
],
/*
|--------------------------------------------------------------------------
| Development Configuration
|--------------------------------------------------------------------------
|
| Configuration options for development mode.
|
*/
'development' => [
'debug_mode' => env('FLUX_CMS_DEBUG', false),
'show_component_info' => env('FLUX_CMS_SHOW_COMPONENT_INFO', false),
'log_queries' => env('FLUX_CMS_LOG_QUERIES', false),
'hot_reload_components' => env('FLUX_CMS_HOT_RELOAD', false),
],
/*
|--------------------------------------------------------------------------
| Frontend Configuration
|--------------------------------------------------------------------------
|
| Configuration for frontend rendering.
|
*/
'frontend' => [
'layout' => env('FLUX_CMS_LAYOUT', 'layouts.app'),
'theme' => env('FLUX_CMS_THEME', 'default'),
'css_framework' => env('FLUX_CMS_CSS_FRAMEWORK', 'tailwind'), // tailwind, bootstrap
'component_wrapper' => env('FLUX_CMS_COMPONENT_WRAPPER', true),
'preview_mode' => env('FLUX_CMS_PREVIEW_MODE', true),
],
/*
|--------------------------------------------------------------------------
| API Configuration
|--------------------------------------------------------------------------
|
| Configuration for CMS API endpoints.
|
*/
'api' => [
'enabled' => env('FLUX_CMS_API_ENABLED', false),
'prefix' => env('FLUX_CMS_API_PREFIX', 'api/cms'),
'middleware' => ['api', 'auth:sanctum'],
'rate_limiting' => env('FLUX_CMS_API_RATE_LIMIT', '60,1'),
],
/*
|--------------------------------------------------------------------------
| Backup Configuration
|--------------------------------------------------------------------------
|
| Configuration for content backups.
|
*/
'backup' => [
'enabled' => env('FLUX_CMS_BACKUP_ENABLED', true),
'disk' => env('FLUX_CMS_BACKUP_DISK', 'local'),
'auto_backup' => env('FLUX_CMS_AUTO_BACKUP', true),
'backup_schedule' => env('FLUX_CMS_BACKUP_SCHEDULE', 'daily'),
'keep_backups' => env('FLUX_CMS_KEEP_BACKUPS', 30),
],
/*
|--------------------------------------------------------------------------
| Domain Configuration
|--------------------------------------------------------------------------
|
| Multi-domain support configuration.
|
*/
'domains' => [
'enabled' => env('FLUX_CMS_MULTI_DOMAIN', true),
'config_source' => 'domains', // 'domains' config key or 'database'
'default_domain' => env('FLUX_CMS_DEFAULT_DOMAIN', 'default'),
'auto_detect' => env('FLUX_CMS_AUTO_DETECT_DOMAIN', true),
],
];