v2.6.1d (Lyra): Plugin i18n, plugin editor vernieuwd, media invoegen

Plugin internationalisatie: plugins hebben eigen language/ mappen. Systeem
plugins volgen admin taal (admin.php), content plugins volgen content taal
(site.php). Fallback chain: geselecteerd -> plugin default_language -> CMS
default. PluginManager/AdminPluginAPI/CMSAPI uitgebreid met
getPluginTranslations()/t(). plugin.json settings ondersteunen
label_key/help_key/option_label_key.

Plugin uniformiteit: alle 6 plugins hebben uniforme structuur (README.md,
assets/.gitkeep, language/nl|en/). plugins/README.md herschreven.
guide plugin-development.md (NL+EN) volledig herschreven.

Plugin editor vernieuwd: geneste bestandsbrowser zijbalk, nieuw bestand
aanmaken, uploaden naar assets/, verwijderen en verplaatsen. Nieuwe routes:
plugins-file-upload, plugins-file-delete, plugins-file-move. Path-traversal
bescherming + protected plugins geblokkeerd.

Media invoegen in editor: nieuw /admin/media-list JSON endpoint + herbruikbare
_media-modal.twig include. Plugin-context scant assets/ map. editor-toolbar.js
modeMap uitgebreid voor css/scss/js/json.

Plugin overzicht knoppen: alleen iconen met title/aria-label.

Tests: pentest 30/30, WCAG 2.1 AA 25/25.
This commit is contained in:
2026-08-18 13:49:52 +00:00
parent 88fbaa5702
commit 6d5ca7cab4
64 changed files with 3503 additions and 366 deletions
+39
View File
@@ -168,6 +168,11 @@ return [
// Media
'media' => 'Media',
'no_media' => 'No media files found.',
'media_insert' => 'Insert media',
'media_filter' => 'Filter by filename...',
'media_loading' => 'Loading media...',
'media_empty' => 'No media files found in content/. Upload files first via Media in the menu.',
'media_empty_plugin' => 'No media files found in this plugin assets folder. Place files directly in plugins/{plugin}/assets/ to insert them here.',
// Plugins
'new_plugin' => 'New plugin',
@@ -262,4 +267,38 @@ return [
'password_label' => 'Password',
'login_btn' => 'Log in',
'back_to_website' => 'Back to website',
// Role switch (admin testing feature)
'role_switch' => 'Switch role',
'role_switch_title' => 'Switch role',
'role_switch_help' => 'Test the admin from another role. Your real account stays admin.',
'role_switch_btn' => 'Switch to role',
'role_testing' => 'Testing',
'role_reset_title' => 'Reset role',
'role_reset_btn' => 'Back to admin',
'role_reset_help' => 'Click below to return to your admin role.',
'role_override_active' => 'You are currently testing as',
'cannot_change_own_role' => 'You cannot change your own role.',
'cannot_change_password_role' => 'Changing passwords is not allowed in this role.',
'created' => 'Created',
// Plugin config
'plugin_settings' => 'Settings',
'plugin_no_settings' => 'This plugin has no configurable settings.',
'plugin_info' => 'Plugin information',
'plugin_name' => 'Name',
'version' => 'Version',
'type' => 'Type',
'description' => 'Description',
// Plugin editor (plugins-edit)
'plugin_files' => 'Plugin files',
'plugin_no_files' => 'No files found.',
'plugin_new_file' => 'New file',
'plugin_new_file_title' => 'Create new file',
'plugin_file_path' => 'File path within plugin',
'plugin_file_path_help' => 'Only letters, digits, dots, underscores, hyphens and slashes. Subdirectories are created automatically.',
'plugin_not_editable' => 'This file type cannot be edited in the editor.',
'plugin_select_file' => 'Select a file from the sidebar to edit.',
'plugin_upload_help' => 'Files are uploaded to assets/ of this plugin. Allowed: images, video, audio, PDF, ZIP, CSS, SCSS, JS, JSON, HTML, MD.',
];