v2.6.0: Content backup/git versioning, plugin type system, docs update

New features:
- ContentBackup class with ZIP backup/restore and git versioning
- Admin backup & restore page (content-backup.twig) with git init/commit/log/restore
- Plugin type system: system (blue) vs content (green) with visual badges
- PluginAPIInterface + AdminPluginAPI for plugin architecture
- Essential plugin flag (cannot edit/deactivate/delete)

Improvements:
- Consolidated enabled_plugins config (removed plugins.enabled)
- Removed Analytics/Logging toggles from admin config page
- Fixed Dashboard plugin Twig comments rendered as text
- Updated 20 guide files (NL+EN): configuratie, plugins, plugin-development,
  core-classes, theme-json, layouts, scss-styling, admin-beheerder, nieuw-thema, architectuur
- Improved accessibility test script (grep -E, min/max checks)

Cleanup:
- Removed unused classes: ARIAComponents, AccessibilityManager, ContentSecurityPolicy, etc.
- Removed vendor packages: mustache/mustache, php-mqtt/client
- Removed old templates: logs.twig, statistics.twig (now plugins)
- Moved language files to language/ directory

Tests:
- Pentest: 30/30 passed, 0 vulnerabilities
- WCAG 2.1 AA: 25/25 passed, 100% compliance
This commit is contained in:
2026-08-15 19:21:04 +02:00
parent 3a55ea4db6
commit 20adea7544
208 changed files with 3763 additions and 22688 deletions
+252
View File
@@ -0,0 +1,252 @@
<?php
return [
// Brand & nav sections
'admin_title' => 'CodePress Admin',
'section_general' => 'Allgemein',
'section_content' => 'Inhalt',
'section_settings' => 'Einstellungen',
'section_data' => 'Daten',
'section_system' => 'System',
'section_plugins' => 'Plugins',
'section_help' => 'Hilfe',
// Nav items
'dashboard' => 'Dashboard',
'content' => 'Inhalt',
'configuration' => 'Konfiguration',
'theme' => 'Theme',
'security' => 'Sicherheit',
'statistics' => 'Statistiken',
'logs' => 'Protokolle',
'plugins' => 'Plugins',
'users' => 'Benutzer',
'update' => 'Update',
'guide' => 'Handbuch',
'view_website' => 'Website ansehen',
'logout' => 'Abmelden',
// Generic buttons
'save' => 'Speichern',
'save_ctrl_s' => 'Speichern (Strg+S)',
'cancel' => 'Abbrechen',
'delete' => 'Löschen',
'edit' => 'Bearbeiten',
'create' => 'Erstellen',
'back' => 'Zurück',
'yes' => 'Ja',
'no' => 'Nein',
'search' => 'Suchen',
'preview' => 'Vorschau',
'open_new_tab' => 'In neuem Tab öffnen',
'download' => 'Herunterladen',
'rename' => 'Umbenennen',
'move' => 'Verschieben',
'activate' => 'Aktivieren',
'deactivate' => 'Deaktivieren',
'config' => 'Konfig',
'essential' => 'Essenziell',
'view_all' => 'Alle ansehen →',
// Messages
'saved' => 'Gespeichert.',
'save_failed' => 'Speichern fehlgeschlagen.',
'invalid_csrf' => 'Ungültiges CSRF-Token.',
'no_permission' => 'Sie haben keine Berechtigung, diese Seite anzuzeigen.',
'no_permission_title' => 'Kein Zugriff',
// Config page
'site_title' => 'Site-Titel',
'admin_language' => 'Admin-Sprache',
'admin_language_help' => 'Sprache des Admin-Panels (Menü, Schaltflächen, Beschriftungen).',
'content_language' => 'Inhalt-Sprache',
'content_language_help' => 'Standardsprache der Website-Inhalte (Fallback, wenn keine Sprache in der URL).',
'homepage' => 'Startseite',
'homepage_mode' => 'Startseiten-Modus',
'homepage_auto' => 'Automatisch — erste verfügbare Seite',
'homepage_newest' => 'Zuletzt geänderte Seite',
'homepage_specific' => 'Bestimmte Seite',
'homepage_select' => 'Seite auswählen',
'homepage_help' => 'Bestimmt, welche Seite auf der Startseite angezeigt wird (Sprach-Root-URL, z. B. /de).',
'no_pages_found' => 'Keine Seiten in content/ gefunden.',
'author_section' => 'Autor',
'author_name' => 'Name',
'author_email' => 'E-Mail',
'analytics_logging' => 'Analytics & Protokollierung',
'analytics_enabled' => 'Analytics aktiviert',
'logging_enabled' => 'Protokollierung aktiviert',
// Content page
'upload' => 'Hochladen',
'new_folder' => 'Neuer Ordner',
'new_file' => 'Neue Datei',
'select_files' => 'Dateien auswählen',
'allowed_types' => 'Erlaubt: JPG, PNG, GIF, WebP, SVG, PDF, ZIP, MP4, WebM, MP3, WAV',
'upload_to_folder' => 'In diesen Ordner hochladen',
'filter_placeholder' => 'Nach Datei- oder Ordnername filtern…',
'filter_content' => 'Inhalt filtern',
'col_name' => 'Name',
'col_type' => 'Typ',
'col_size' => 'Größe',
'col_modified' => 'Geändert',
'col_actions' => 'Aktionen',
'col_role' => 'Rolle',
'col_created' => 'Erstellt',
'no_files_found' => 'Keine Dateien gefunden.',
'folder_badge' => 'Ordner',
'confirm_delete_folder' => 'Sind Sie sicher, dass Sie diesen Ordner löschen möchten? Der Ordner muss leer sein.',
'confirm_delete_file' => 'Sind Sie sicher, dass Sie diese Datei löschen möchten?',
'no_filter_results' => 'Keine Ergebnisse für diesen Filter.',
'new_folder_title' => 'Neuen Ordner erstellen',
'folder_name' => 'Ordnername',
'name_help' => 'Nur Buchstaben, Zahlen, Punkte, Unterstriche und Bindestriche.',
// Content edit / new
'filename' => 'Dateiname',
'template_layout' => 'Vorlage / Layout',
'visible_plugins' => 'Sichtbare Plugins',
'new_page' => 'Neue Seite',
'file_type' => 'Dateityp',
// Content dir form
'rename_folder' => 'Ordner umbenennen',
'new_name_for' => 'Neuer Name für',
// Content move form
'folder' => 'Ordner',
'file' => 'Datei',
'move_suffix' => 'verschieben',
'move_prefix' => 'Verschiebe',
'move_to' => 'nach:',
'target_folder' => 'Zielordner',
// Dashboard
'welcome' => 'Willkommen,',
'logged_in_as' => 'Angemeldet als',
'views_30d' => 'Aufrufe (30 Tage)',
'unique_visitors_30d' => 'Eindeutige Besucher (30 Tage)',
'top_country' => 'Top-Land',
'statistics_arrow' => 'Statistiken →',
'pages' => 'Seiten',
'folders' => 'Ordner',
'content_size' => 'Inhalt-Größe',
'content_info' => 'Inhalt-Informationen',
'manage' => 'Verwalten',
'site_info' => 'Site-Informationen',
'default_lang' => 'Standardsprache',
'author' => 'Autor',
'cms_version' => 'CodePress-Version',
'php_version' => 'PHP-Version',
'os' => 'Betriebssystem',
'config_loaded' => 'Konfig geladen',
'recent_activity' => 'Letzte Aktivität',
'no_activity' => 'Keine Aktivität registriert.',
'recent_requests' => 'Letzte Anfragen',
'no_requests' => 'Keine Anfragen registriert.',
'quick_actions' => 'Schnellaktionen',
'manage_content' => 'Inhalt verwalten',
'edit_config' => 'Konfiguration bearbeiten',
'view_statistics' => 'Statistiken ansehen',
'manage_theme' => 'Theme verwalten',
'manage_plugins' => 'Plugins verwalten',
// Error page
'error' => 'Fehler',
'page_not_found' => 'Seite nicht gefunden',
'page_not_found_msg' => 'Die angeforderte Seite konnte nicht gefunden werden.',
'to_dashboard' => 'Zum Dashboard',
// Guide
'navigation' => 'Navigation',
'manuals' => 'Handbücher',
// Logs
'col_time' => 'Zeit',
'col_level' => 'Stufe',
'col_ip' => 'IP',
'col_message' => 'Nachricht',
'no_logs' => 'Keine Protokolle gefunden.',
// Media
'media' => 'Medien',
'no_media' => 'Keine Mediendateien gefunden.',
// Plugins
'new_plugin' => 'Neues Plugin',
'new_plugin_title' => 'Neues Plugin erstellen',
'plugin_name' => 'Plugin-Name',
'plugin_name_help' => 'Nur Buchstaben, Zahlen, Unterstriche und Bindestriche.',
'active' => 'Aktiv',
'inactive' => 'Inaktiv',
'no_description' => 'Keine Beschreibung',
'essential_title' => 'Essenzielles Plugin - kann nicht bearbeitet, deaktiviert oder gelöscht werden',
'plugin_config' => 'Plugin-Konfiguration: ',
'plugin_edit' => 'Plugin bearbeiten: ',
'confirm_delete_plugin' => 'Sind Sie sicher, dass Sie dieses Plugin löschen möchten?',
'no_plugins' => 'Keine Plugins gefunden. Erstellen Sie ein neues Plugin um zu beginnen.',
// Security
'security_bots' => 'Sicherheit & Bot-Schutz',
'bot_protection' => 'Bot-Schutz',
'botguard_enabled' => 'BotGuard aktiviert',
'block_bad_bots' => 'Schlechte Bots blockieren',
'session_settings' => 'Sitzungseinstellungen',
'session_timeout' => 'Sitzungs-Timeout (Sekunden)',
'max_login_attempts' => 'Max. Login-Versuche',
// Statistics
'total_views' => 'Aufrufe gesamt',
'unique_visitors' => 'Eindeutige Besucher',
'page_views' => 'Seitenaufrufe',
'countries' => 'Länder',
'top_pages' => 'Top-Seiten',
'no_data' => 'Keine Daten',
// Theme
'themes' => 'Themes',
'activate_default' => 'Default aktivieren',
'new_theme' => 'Neues Theme',
'new_theme_title' => 'Neues Theme erstellen',
'theme_name' => 'Theme-Name',
'theme_name_help' => 'Nur Buchstaben, Zahlen, Unterstriche und Bindestriche.',
'name_label' => 'Name: ',
'default_layout_label' => 'Standard-Layout: ',
'compile_scss' => 'SCSS kompilieren',
'no_themes' => 'Keine Themes gefunden.',
// Update
'system_update' => 'System-Update',
'git_not_writable' => 'Das .git-Verzeichnis ist nicht beschreibbar. Automatische Updates sind nicht möglich.',
'current_version' => 'Aktuelle Version',
'cms_version_label' => 'CodePress-Version: ',
'update_options' => 'Update-Optionen',
'check_updates' => 'Auf Updates prüfen',
'run_update' => 'Update ausführen',
// Users
'username' => 'Benutzername',
'password' => 'Passwort',
'password_help' => 'Mindestens 8 Zeichen.',
'login_email' => 'Login-E-Mail',
'author_name' => 'Autor-Name',
'author_name_help' => 'Wird als Autor auf der Website angezeigt.',
'author_email' => 'Autor-E-Mail',
'my_profile' => 'Mein Profil',
'edit_profile' => 'Profil bearbeiten',
'you' => 'Sie',
'unknown' => 'Unbekannt',
'confirm_delete_user' => 'Sind Sie sicher, dass Sie diesen Benutzer löschen möchten?',
'change_role' => 'Rolle ändern: ',
'current_role' => 'Aktuelle Rolle',
'new_role' => 'Neue Rolle',
'change' => 'Ändern',
'own_account' => 'Eigenes Konto',
'no_users' => 'Keine Benutzer gefunden.',
'new_user' => 'Neuer Benutzer',
'add_user' => 'Benutzer hinzufügen',
// Login
'login_title' => 'CodePress Admin - Anmeldung',
'username_label' => 'Benutzername',
'password_label' => 'Passwort',
'login_btn' => 'Anmelden',
'back_to_website' => 'Zurück zur Website',
];