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:
@@ -0,0 +1,252 @@
|
||||
<?php
|
||||
return [
|
||||
// Brand & nav sections
|
||||
'admin_title' => 'CodePress Admin',
|
||||
'section_general' => 'General',
|
||||
'section_content' => 'Content',
|
||||
'section_settings' => 'Settings',
|
||||
'section_data' => 'Data',
|
||||
'section_system' => 'System',
|
||||
'section_plugins' => 'Plugins',
|
||||
'section_help' => 'Help',
|
||||
// Nav items
|
||||
'dashboard' => 'Dashboard',
|
||||
'content' => 'Content',
|
||||
'configuration' => 'Configuration',
|
||||
'theme' => 'Theme',
|
||||
'security' => 'Security',
|
||||
'statistics' => 'Statistics',
|
||||
'logs' => 'Logs',
|
||||
'plugins' => 'Plugins',
|
||||
'users' => 'Users',
|
||||
'update' => 'Update',
|
||||
'guide' => 'Guide',
|
||||
'view_website' => 'View website',
|
||||
'logout' => 'Logout',
|
||||
|
||||
// Generic buttons
|
||||
'save' => 'Save',
|
||||
'save_ctrl_s' => 'Save (Ctrl+S)',
|
||||
'cancel' => 'Cancel',
|
||||
'delete' => 'Delete',
|
||||
'edit' => 'Edit',
|
||||
'create' => 'Create',
|
||||
'back' => 'Back',
|
||||
'yes' => 'Yes',
|
||||
'no' => 'No',
|
||||
'search' => 'Search',
|
||||
'preview' => 'Preview',
|
||||
'open_new_tab' => 'Open in new tab',
|
||||
'download' => 'Download',
|
||||
'rename' => 'Rename',
|
||||
'move' => 'Move',
|
||||
'activate' => 'Activate',
|
||||
'deactivate' => 'Deactivate',
|
||||
'config' => 'Config',
|
||||
'essential' => 'Essential',
|
||||
'view_all' => 'View all →',
|
||||
|
||||
// Messages
|
||||
'saved' => 'Saved.',
|
||||
'save_failed' => 'Save failed.',
|
||||
'invalid_csrf' => 'Invalid CSRF token.',
|
||||
'no_permission' => 'You do not have permission to view this page.',
|
||||
'no_permission_title' => 'No access',
|
||||
|
||||
// Config page
|
||||
'site_title' => 'Site title',
|
||||
'admin_language' => 'Admin language',
|
||||
'admin_language_help' => 'Language of the admin panel (menu, buttons, labels).',
|
||||
'content_language' => 'Content language',
|
||||
'content_language_help' => 'Default language of website content (fallback when no language in URL).',
|
||||
'homepage' => 'Homepage',
|
||||
'homepage_mode' => 'Homepage mode',
|
||||
'homepage_auto' => 'Automatic — first available page',
|
||||
'homepage_newest' => 'Most recently modified page',
|
||||
'homepage_specific' => 'Specific page',
|
||||
'homepage_select' => 'Select page',
|
||||
'homepage_help' => 'Determine which page is shown on the homepage (the language root URL, e.g. /en).',
|
||||
'no_pages_found' => 'No pages found in content/',
|
||||
'author_section' => 'Author',
|
||||
'author_name' => 'Name',
|
||||
'author_email' => 'Email',
|
||||
'analytics_logging' => 'Analytics & Logging',
|
||||
'analytics_enabled' => 'Analytics enabled',
|
||||
'logging_enabled' => 'Logging enabled',
|
||||
|
||||
// Content page
|
||||
'upload' => 'Upload',
|
||||
'new_folder' => 'New folder',
|
||||
'new_file' => 'New file',
|
||||
'select_files' => 'Select files',
|
||||
'allowed_types' => 'Allowed: JPG, PNG, GIF, WebP, SVG, PDF, ZIP, MP4, WebM, MP3, WAV',
|
||||
'upload_to_folder' => 'Upload to this folder',
|
||||
'filter_placeholder' => 'Filter by file or folder name…',
|
||||
'filter_content' => 'Filter content',
|
||||
'col_name' => 'Name',
|
||||
'col_type' => 'Type',
|
||||
'col_size' => 'Size',
|
||||
'col_modified' => 'Modified',
|
||||
'col_actions' => 'Actions',
|
||||
'col_role' => 'Role',
|
||||
'col_created' => 'Created',
|
||||
'no_files_found' => 'No files found.',
|
||||
'folder_badge' => 'Folder',
|
||||
'confirm_delete_folder' => 'Are you sure you want to delete this folder? The folder must be empty.',
|
||||
'confirm_delete_file' => 'Are you sure you want to delete this file?',
|
||||
'no_filter_results' => 'No results for this filter.',
|
||||
'new_folder_title' => 'Create new folder',
|
||||
'folder_name' => 'Folder name',
|
||||
'name_help' => 'Only letters, numbers, dots, underscores and dashes.',
|
||||
|
||||
// Content edit / new
|
||||
'filename' => 'Filename',
|
||||
'template_layout' => 'Template / Layout',
|
||||
'visible_plugins' => 'Visible plugins',
|
||||
'new_page' => 'New page',
|
||||
'file_type' => 'File type',
|
||||
|
||||
// Content dir form
|
||||
'rename_folder' => 'Rename folder',
|
||||
'new_name_for' => 'New name for',
|
||||
|
||||
// Content move form
|
||||
'folder' => 'Folder',
|
||||
'file' => 'File',
|
||||
'move_suffix' => 'move',
|
||||
'move_prefix' => 'Move',
|
||||
'move_to' => 'to:',
|
||||
'target_folder' => 'Target folder',
|
||||
|
||||
// Dashboard
|
||||
'welcome' => 'Welcome,',
|
||||
'logged_in_as' => 'Logged in as',
|
||||
'views_30d' => 'Views (30 days)',
|
||||
'unique_visitors_30d' => 'Unique visitors (30 days)',
|
||||
'top_country' => 'Top country',
|
||||
'statistics_arrow' => 'Statistics →',
|
||||
'pages' => 'Pages',
|
||||
'folders' => 'Folders',
|
||||
'content_size' => 'Content size',
|
||||
'content_info' => 'Content information',
|
||||
'manage' => 'Manage',
|
||||
'site_info' => 'Site information',
|
||||
'default_lang' => 'Default language',
|
||||
'author' => 'Author',
|
||||
'cms_version' => 'CodePress version',
|
||||
'php_version' => 'PHP version',
|
||||
'os' => 'Operating system',
|
||||
'config_loaded' => 'Config loaded',
|
||||
'recent_activity' => 'Recent activity',
|
||||
'no_activity' => 'No activity recorded.',
|
||||
'recent_requests' => 'Recent requests',
|
||||
'no_requests' => 'No requests recorded.',
|
||||
'quick_actions' => 'Quick actions',
|
||||
'manage_content' => 'Manage content',
|
||||
'edit_config' => 'Edit configuration',
|
||||
'view_statistics' => 'View statistics',
|
||||
'manage_theme' => 'Manage theme',
|
||||
'manage_plugins' => 'Manage plugins',
|
||||
|
||||
// Error page
|
||||
'error' => 'Error',
|
||||
'page_not_found' => 'Page not found',
|
||||
'page_not_found_msg' => 'The requested page could not be found.',
|
||||
'to_dashboard' => 'To dashboard',
|
||||
|
||||
// Guide
|
||||
'navigation' => 'Navigation',
|
||||
'manuals' => 'Manuals',
|
||||
|
||||
// Logs
|
||||
'col_time' => 'Time',
|
||||
'col_level' => 'Level',
|
||||
'col_ip' => 'IP',
|
||||
'col_message' => 'Message',
|
||||
'no_logs' => 'No logs found.',
|
||||
|
||||
// Media
|
||||
'media' => 'Media',
|
||||
'no_media' => 'No media files found.',
|
||||
|
||||
// Plugins
|
||||
'new_plugin' => 'New plugin',
|
||||
'new_plugin_title' => 'Create new plugin',
|
||||
'plugin_name' => 'Plugin name',
|
||||
'plugin_name_help' => 'Only letters, numbers, underscores and dashes.',
|
||||
'active' => 'Active',
|
||||
'inactive' => 'Inactive',
|
||||
'no_description' => 'No description',
|
||||
'essential_title' => 'Essential plugin - cannot be edited, deactivated or deleted',
|
||||
'plugin_config' => 'Plugin Configuration: ',
|
||||
'plugin_edit' => 'Edit plugin: ',
|
||||
'confirm_delete_plugin' => 'Are you sure you want to delete this plugin?',
|
||||
'no_plugins' => 'No plugins found. Create a new plugin to get started.',
|
||||
|
||||
// Security
|
||||
'security_bots' => 'Security & Bot Protection',
|
||||
'bot_protection' => 'Bot Protection',
|
||||
'botguard_enabled' => 'BotGuard enabled',
|
||||
'block_bad_bots' => 'Block bad bots',
|
||||
'session_settings' => 'Session Settings',
|
||||
'session_timeout' => 'Session timeout (seconds)',
|
||||
'max_login_attempts' => 'Max login attempts',
|
||||
|
||||
// Statistics
|
||||
'total_views' => 'Total views',
|
||||
'unique_visitors' => 'Unique visitors',
|
||||
'page_views' => 'Page views',
|
||||
'countries' => 'Countries',
|
||||
'top_pages' => 'Top pages',
|
||||
'no_data' => 'No data',
|
||||
|
||||
// Theme
|
||||
'themes' => 'Themes',
|
||||
'activate_default' => 'Activate Default',
|
||||
'new_theme' => 'New theme',
|
||||
'new_theme_title' => 'Create new theme',
|
||||
'theme_name' => 'Theme name',
|
||||
'theme_name_help' => 'Only letters, numbers, underscores and dashes.',
|
||||
'name_label' => 'Name: ',
|
||||
'default_layout_label' => 'Default layout: ',
|
||||
'compile_scss' => 'Compile SCSS',
|
||||
'no_themes' => 'No themes found.',
|
||||
|
||||
// Update
|
||||
'system_update' => 'System Update',
|
||||
'git_not_writable' => 'The .git directory is not writable. Automatic updates are not possible.',
|
||||
'current_version' => 'Current version',
|
||||
'cms_version_label' => 'CodePress version: ',
|
||||
'update_options' => 'Update options',
|
||||
'check_updates' => 'Check for updates',
|
||||
'run_update' => 'Run update',
|
||||
|
||||
// Users
|
||||
'username' => 'Username',
|
||||
'password' => 'Password',
|
||||
'password_help' => 'At least 8 characters.',
|
||||
'login_email' => 'Login email',
|
||||
'author_name' => 'Author name',
|
||||
'author_name_help' => 'Shown as author on the website.',
|
||||
'author_email' => 'Author email',
|
||||
'my_profile' => 'My profile',
|
||||
'edit_profile' => 'Edit profile',
|
||||
'you' => 'You',
|
||||
'unknown' => 'Unknown',
|
||||
'confirm_delete_user' => 'Are you sure you want to delete this user?',
|
||||
'change_role' => 'Change role: ',
|
||||
'current_role' => 'Current role',
|
||||
'new_role' => 'New role',
|
||||
'change' => 'Change',
|
||||
'own_account' => 'Own account',
|
||||
'no_users' => 'No users found.',
|
||||
'new_user' => 'New user',
|
||||
'add_user' => 'Add user',
|
||||
|
||||
// Login
|
||||
'login_title' => 'CodePress Admin - Login',
|
||||
'username_label' => 'Username',
|
||||
'password_label' => 'Password',
|
||||
'login_btn' => 'Log in',
|
||||
'back_to_website' => 'Back to website',
|
||||
];
|
||||
Reference in New Issue
Block a user