diff --git a/aurora-livecam/SettingsManager.php b/aurora-livecam/SettingsManager.php
index 6c8b7a6..0db1f1d 100644
--- a/aurora-livecam/SettingsManager.php
+++ b/aurora-livecam/SettingsManager.php
@@ -26,7 +26,8 @@ class SettingsManager {
return [
'viewer_display' => [
'enabled' => true,
- 'min_viewers' => 1
+ 'min_viewers' => 1,
+ 'update_interval' => 5 // Sekunden
],
'video_mode' => [
'play_in_player' => true,
@@ -36,6 +37,42 @@ class SettingsManager {
'default_speed' => 1,
'available_speeds' => [1, 10, 100]
],
+ // Punkt 2: UI-Anzeige Features
+ 'ui_display' => [
+ 'show_recommendation_banner' => true,
+ 'show_qr_code' => true,
+ 'show_social_media' => true,
+ 'show_patrouille_suisse' => true
+ ],
+ // Punkt 3: Zoom & Timelapse
+ 'zoom_timelapse' => [
+ 'show_zoom_controls' => true,
+ 'max_zoom_level' => 4.0,
+ 'timelapse_reverse_enabled' => true
+ ],
+ // Punkt 5: Content Management
+ 'content' => [
+ 'guestbook_enabled' => true,
+ 'gallery_enabled' => true,
+ 'ai_events_enabled' => true,
+ 'max_guestbook_entries' => 50
+ ],
+ // Punkt 6: Technische Settings
+ 'technical' => [
+ 'viewer_update_interval' => 5, // Sekunden
+ 'session_timeout' => 30 // Sekunden
+ ],
+ // Punkt 7: Theme & Design
+ 'theme' => [
+ 'default_theme' => 'theme-legacy',
+ 'show_theme_switcher' => false
+ ],
+ // Punkt 8: SEO & Meta
+ 'seo' => [
+ 'custom_title' => '',
+ 'meta_description' => '',
+ 'meta_keywords' => ''
+ ],
'last_updated' => null,
'updated_by' => null
];
@@ -123,4 +160,83 @@ class SettingsManager {
public function shouldAllowDownload() {
return $this->get('video_mode.allow_download') === true;
}
+
+ // UI Display Helper
+ public function shouldShowRecommendationBanner() {
+ return $this->get('ui_display.show_recommendation_banner') === true;
+ }
+
+ public function shouldShowQRCode() {
+ return $this->get('ui_display.show_qr_code') === true;
+ }
+
+ public function shouldShowSocialMedia() {
+ return $this->get('ui_display.show_social_media') === true;
+ }
+
+ public function shouldShowPatrouillesuisse() {
+ return $this->get('ui_display.show_patrouille_suisse') === true;
+ }
+
+ // Content Management Helper
+ public function isGuestbookEnabled() {
+ return $this->get('content.guestbook_enabled') === true;
+ }
+
+ public function isGalleryEnabled() {
+ return $this->get('content.gallery_enabled') === true;
+ }
+
+ public function isAIEventsEnabled() {
+ return $this->get('content.ai_events_enabled') === true;
+ }
+
+ public function getMaxGuestbookEntries() {
+ return $this->get('content.max_guestbook_entries') ?? 50;
+ }
+
+ // Theme Helper
+ public function getDefaultTheme() {
+ return $this->get('theme.default_theme') ?? 'theme-legacy';
+ }
+
+ public function shouldShowThemeSwitcher() {
+ return $this->get('theme.show_theme_switcher') === true;
+ }
+
+ // Technical Helper
+ public function getViewerUpdateInterval() {
+ return $this->get('technical.viewer_update_interval') ?? 5;
+ }
+
+ public function getSessionTimeout() {
+ return $this->get('technical.session_timeout') ?? 30;
+ }
+
+ // Zoom & Timelapse Helper
+ public function shouldShowZoomControls() {
+ return $this->get('zoom_timelapse.show_zoom_controls') === true;
+ }
+
+ public function getMaxZoomLevel() {
+ return $this->get('zoom_timelapse.max_zoom_level') ?? 4.0;
+ }
+
+ public function isTimelapseReverseEnabled() {
+ return $this->get('zoom_timelapse.timelapse_reverse_enabled') === true;
+ }
+
+ // SEO Helper
+ public function getCustomTitle() {
+ $title = $this->get('seo.custom_title');
+ return !empty($title) ? $title : null;
+ }
+
+ public function getMetaDescription() {
+ return $this->get('seo.meta_description') ?? '';
+ }
+
+ public function getMetaKeywords() {
+ return $this->get('seo.meta_keywords') ?? '';
+ }
}
diff --git a/aurora-livecam/index.php b/aurora-livecam/index.php
index 3b12eed..5ac8104 100644
--- a/aurora-livecam/index.php
+++ b/aurora-livecam/index.php
@@ -559,7 +559,7 @@ class VisualCalendarManager {
}
// === AI-EREIGNISSE ===
- if (!empty($aiEvents)) {
+ if (!empty($aiEvents) && (!$this->settingsManager || $this->settingsManager->isAIEventsEnabled())) {
$output .= '
';
$output .= '
🤖 AI-erkannte Ereignisse
';
$output .= '
';
@@ -1073,6 +1073,197 @@ class AdminManager {
$output .= '
';
$output .= '
'; // settings-group
+ // UI Display Settings (Punkt 2)
+ $output .= '';
+ $output .= '
🖼️ UI Anzeige
';
+
+ $output .= '
';
+ $output .= '
Empfehlungs-Banner anzeigen';
+ $output .= '
';
+ $output .= '';
+ $output .= '
';
+ $output .= '
';
+
+ $output .= '
';
+ $output .= '
QR-Code Section anzeigen';
+ $output .= '
';
+ $output .= '';
+ $output .= '
';
+ $output .= '
';
+
+ $output .= '
';
+ $output .= '
Social Media Links anzeigen';
+ $output .= '
';
+ $output .= '';
+ $output .= '
';
+ $output .= '
';
+
+ $output .= '
';
+ $output .= '
Patrouille Suisse Section anzeigen';
+ $output .= '
';
+ $output .= '';
+ $output .= '
';
+ $output .= '
';
+ $output .= '
'; // settings-group
+
+ // Zoom & Timelapse Settings (Punkt 3)
+ $output .= '';
+ $output .= '
🔍 Zoom & Timelapse
';
+
+ $output .= '
';
+ $output .= '
Zoom-Controls anzeigen';
+ $output .= '
';
+ $output .= '';
+ $output .= '
';
+ $output .= '
';
+
+ $output .= '
';
+ $output .= '
Max Zoom-Level';
+ $output .= '
';
+ $output .= '';
+ $output .= '
';
+ $output .= '
';
+
+ $output .= '
';
+ $output .= '
Timelapse Rückwärts-Modus';
+ $output .= '
';
+ $output .= '';
+ $output .= '
';
+ $output .= '
';
+ $output .= '
'; // settings-group
+
+ // Content Management Settings (Punkt 5)
+ $output .= '';
+ $output .= '
📝 Content Management
';
+
+ $output .= '
';
+ $output .= '
Gästebuch aktivieren';
+ $output .= '
';
+ $output .= '';
+ $output .= '
';
+ $output .= '
';
+
+ $output .= '
';
+ $output .= '
Galerie aktivieren';
+ $output .= '
';
+ $output .= '';
+ $output .= '
';
+ $output .= '
';
+
+ $output .= '
';
+ $output .= '
KI-Events anzeigen';
+ $output .= '
';
+ $output .= '';
+ $output .= '
';
+ $output .= '
';
+
+ $output .= '
';
+ $output .= '
Max Gästebuch-Einträge';
+ $output .= '
';
+ $output .= '';
+ $output .= '
';
+ $output .= '
';
+ $output .= '
'; // settings-group
+
+ // Technical Settings (Punkt 6)
+ $output .= '';
+ $output .= '
⚙️ Technische Einstellungen
';
+
+ $output .= '
';
+ $output .= '
Viewer Update-Intervall (Sekunden)';
+ $output .= '
';
+ $output .= '';
+ $output .= '
';
+ $output .= '
';
+
+ $output .= '
';
+ $output .= '
Session Timeout (Sekunden)';
+ $output .= '
';
+ $output .= '';
+ $output .= '
';
+ $output .= '
';
+ $output .= '
'; // settings-group
+
+ // Theme Settings (Punkt 7)
+ $output .= '';
+ $output .= '
🎨 Theme & Design
';
+
+ $output .= '
';
+ $output .= '
Standard-Theme';
+ $output .= '
';
+ $output .= '';
+ $output .= '
';
+ $output .= '
';
+
+ $output .= '
';
+ $output .= '
Theme-Switcher anzeigen';
+ $output .= '
';
+ $output .= '';
+ $output .= '
';
+ $output .= '
';
+ $output .= '
'; // settings-group
+
+ // SEO Settings (Punkt 8)
+ $output .= '';
+ $output .= '
🔍 SEO & Meta
';
+
+ $output .= '
';
+ $output .= '
Custom Title (leer = Standard)';
+ $output .= '
';
+ $output .= '';
+ $output .= '
';
+ $output .= '
';
+
+ $output .= '
';
+ $output .= '
Meta Description';
+ $output .= '
';
+ $output .= '';
+ $output .= '
';
+ $output .= '
';
+
+ $output .= '
';
+ $output .= '
Meta Keywords';
+ $output .= '
';
+ $output .= '';
+ $output .= '
';
+ $output .= '
';
+ $output .= '
'; // settings-group
+
$output .= ''; // admin-settings-panel
// Bestehender Admin-Content
@@ -1383,11 +1574,11 @@ $minViewersToShow = $settingsManager->get('viewer_display.min_viewers');
-
+ getCustomTitle() ?: $siteConfig['siteTitle']; ?>
-
-
+
+
@@ -1896,6 +2087,119 @@ button[type="submit"]:hover { background-color: #45a049; }
.modal-next { right: 0; }
.modal-prev { left: 0; }
+/* Admin Settings Panel */
+#admin-settings-panel {
+ background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
+ padding: 30px;
+ border-radius: 12px;
+ margin-bottom: 30px;
+ box-shadow: 0 10px 30px rgba(102, 126, 234, 0.3);
+}
+#admin-settings-panel h3 {
+ color: white;
+ margin: 0 0 25px 0;
+ font-size: 24px;
+ text-align: center;
+}
+.settings-group {
+ background: rgba(255, 255, 255, 0.95);
+ padding: 20px;
+ border-radius: 8px;
+ margin-bottom: 15px;
+}
+.settings-group h4 {
+ margin: 0 0 15px 0;
+ color: #667eea;
+ font-size: 18px;
+ border-bottom: 2px solid #667eea;
+ padding-bottom: 8px;
+}
+.setting-row {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ padding: 12px 0;
+ border-bottom: 1px solid #f0f0f0;
+}
+.setting-row:last-child {
+ border-bottom: none;
+}
+.setting-label {
+ font-weight: 500;
+ color: #333;
+ flex: 1;
+}
+.setting-input {
+ display: flex;
+ align-items: center;
+ min-width: 200px;
+}
+.number-input, .text-input, .select-input {
+ width: 100%;
+ padding: 8px 12px;
+ border: 2px solid #ddd;
+ border-radius: 5px;
+ font-size: 14px;
+ transition: border-color 0.3s;
+}
+.number-input:focus, .text-input:focus, .select-input:focus {
+ outline: none;
+ border-color: #667eea;
+}
+.textarea-input {
+ width: 100%;
+ padding: 8px 12px;
+ border: 2px solid #ddd;
+ border-radius: 5px;
+ font-size: 14px;
+ font-family: Arial, sans-serif;
+ resize: vertical;
+ transition: border-color 0.3s;
+}
+.textarea-input:focus {
+ outline: none;
+ border-color: #667eea;
+}
+.toggle-switch {
+ position: relative;
+ display: inline-block;
+ width: 50px;
+ height: 24px;
+}
+.toggle-switch input {
+ opacity: 0;
+ width: 0;
+ height: 0;
+}
+.toggle-slider {
+ position: absolute;
+ cursor: pointer;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ background-color: #ccc;
+ transition: 0.3s;
+ border-radius: 24px;
+}
+.toggle-slider:before {
+ position: absolute;
+ content: "";
+ height: 18px;
+ width: 18px;
+ left: 3px;
+ bottom: 3px;
+ background-color: white;
+ transition: 0.3s;
+ border-radius: 50%;
+}
+.toggle-switch input:checked + .toggle-slider {
+ background: linear-gradient(135deg, #667eea, #764ba2);
+}
+.toggle-switch input:checked + .toggle-slider:before {
+ transform: translateX(26px);
+}
+
/* Language Switch */
#language-switch { position: fixed; top: 10px; right: 10px; z-index: 1000; background-color: rgba(255, 255, 255, 0.8); border-radius: 5px; padding: 5px; }
.lang-button { background: none; border: none; cursor: pointer; padding: 5px; opacity: 0.7; transition: opacity 0.3s; margin: 0 2px; }
@@ -2105,7 +2409,7 @@ body.theme-neo footer {
-
+
@@ -2147,12 +2451,12 @@ body.theme-neo footer {
-
+
@@ -2176,7 +2480,7 @@ body.theme-neo footer {
-