Conversation
chore: Review- und Rexstan-Fixes in boot/install/profile creator
CSS-Regeneration behandelt fehlende cke5_templates robust; Profil-Import bleibt kompatibel zu älteren Exports ohne media_embed_width_styles_definition.
Neue Profiloption document_title im Profilformular ergänzt und im Profile-Mapper auf das CKEditor-Title-Plugin gemappt. Bei deaktivierter Option wird das Plugin via removePlugins entfernt.
There was a problem hiding this comment.
Pull request overview
This PR moves the add-on toward the upcoming 7.0.0-dev line by switching to the official ckeditor5 npm distribution (“modern” vendor assets), introducing a more explicit plugin registration mechanism (native + external), and reworking profile defaults/seed/import/export (including replacing templates with snippets).
Changes:
- Replace SQL-based seeding with a JSON bundle (
install/default_bundle.json) and import it on install/update. - Introduce snippets + global defaults UI, and extend import/export to include related entities (styles, style groups, snippets).
- Add developer tooling (pnpm scripts) for vendor syncing and runtime checks; refactor asset loading to include the modern build + plugin registries.
Reviewed changes
Copilot reviewed 18 out of 249 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| update.php | Update routine now imports the default bundle and refreshes profiles/assets. |
| install.php | Install routine now seeds via default_bundle.json and copies default CSS assets. |
| db.php | Extends schema (editor modes, video/media options, snippets) and adds cke5_snippets table. |
| install/default_bundle.json | New single source of truth for demo profiles/styles/snippets seed data. |
| lib/Cke5/Handler/Cke5DefaultDataService.php | New service to import bundled JSON into DB and regenerate CSS. |
| lib/Cke5/Handler/Cke5DatabaseHandler.php | Adds snippets table constant and reorders constants. |
| lib/Cke5/Handler/Cke5CssHandler.php | Hardens template-table access and tightens CSS-path collection types. |
| lib/Cke5/Handler/Cke5UploadHandler.php | Normalizes media_path request handling for URL generation. |
| lib/Cke5/Handler/Cke5FileUploadHandler.php | Switches upload/restore paths from classic to modern vendor directory layout. |
| lib/Cke5/Handler/Cke5FileRestoreHandler.php | Restores editor/translation files from modern vendor paths and updates config keys. |
| lib/Cke5/Provider/Cke5AssetsProvider.php | Loads modern CKEditor assets, native plugin JS, and external plugin registry config. |
| lib/Cke5/Provider/Cke5NavigationProvider.php | Updates backend header rendering and attribution content. |
| lib/Cke5/Utils/Cke5PreviewHelper.php | Refactors preview code samples and adds YForm JSON example output. |
| lib/Cke5/PluginRegistry.php | New runtime registry for externally provided plugins + client config export. |
| pages/profiles.export.php | Export now includes related rows (styles/groups/snippets) and outputs pretty JSON. |
| pages/profiles.import.php | Import now supports new export format and treats media_embed_width_styles_definition as optional. |
| pages/profiles.customise.styles.php | Adds data attributes for client-side required validation messaging. |
| pages/profiles.customise.snippets.php | New CRUD UI for snippets with toggle/delete actions and CSRF validation. |
| pages/profiles.customise.global.php | New global defaults config page (mentions/sprog/ytable/media/font family/clear widget). |
| assets/js/cke5style_edit.js | Improves initialization guards and adds client-side validation for tag inputs. |
| assets/js/cke5customise_global.js | Adds collapse + multiinput initialization for the global defaults page. |
| assets/plugins/redaxo-link-integration.js | New native plugin hook to enhance CKEditor’s link UI. |
| assets/plugins/redaxo-media-image.js | New native toolbar button to insert/replace images via REDAXO media pool. |
| assets/plugins/redaxo-snippets.js | New native toolbar dropdown to insert snippets into the editor. |
| assets/plugins/redaxo-paste-plain-text-toggle.js | New native toggle command/button to force plain-text paste. |
| assets/plugins/redaxo-markdown-paste-toggle.js | New native toggle for markdown paste handling via ClipboardPipeline. |
| assets/plugins/redaxo-minimap-toggle.js | New native toggle to show/hide minimap container. |
| assets/vendor/rainbow-json/rainbowjson.js | Switches JSON input source to .text() and escapes plain JSON output. |
| scripts/vendor-update.js | New script to copy CKEditor dist assets into assets/vendor/ckeditor5-modern. |
| scripts/update-content-styles.js | New script to sync ckeditor5-content.css into addon + project public assets. |
| scripts/check-runtime.js | New runtime JS syntax check script used by npm run check:runtime. |
| scripts/add-demo-variant.js | New helper script to create demo profile variants in default_bundle.json. |
| package.json | Adds ckeditor5 dependency and developer scripts for vendor/content/style workflows. |
| pnpm-lock.yaml | Locks npm dependencies for the new JS tooling and CKEditor distribution. |
| package.yml | Bumps version/dev requirements, adjusts navigation, and updates REDAXO/PHP constraints. |
| dev.md | New developer documentation page linked into the backend navigation. |
| CHANGELOG.md | Adds 7.0.0-dev changelog entry documenting the major architecture changes. |
| boot.php | Adds a plugin registration extension point and ensures global-customise JS is loaded when needed. |
| LICENSE.md | Updates copyright/attribution and plugin licensing notes. |
| lang/en_gb.lang | Adds new strings for global settings, snippets, video/media options, and header credit. |
| lang/es_es.lang | Updates header title and adds new keys for snippets/video/media embed strings. |
| lang/sv_se.lang | Updates header title and adds new keys for snippets/video/media embed strings. |
| .gitignore | Ignores node_modules/ at repo root. |
| assets/vendor/multiinput/src/scss/jq.multiinput.scss | Removes vendored multiinput source SCSS. |
| assets/vendor/multiinput/src/js/jq.multiinput.js | Removes vendored multiinput source JS. |
| assets/vendor/multiinput/README.md | Removes vendored multiinput documentation. |
| assets/vendor/multiinput/package.json | Removes vendored multiinput package metadata. |
| assets/vendor/multiinput/index.html | Removes vendored multiinput demo page. |
| assets/vendor/multiinput/Gruntfile.js | Removes vendored multiinput build config. |
| assets/vendor/colpick/README.md | Removes vendored colpick documentation. |
| assets/vendor/colpick/package.json | Removes vendored colpick package metadata. |
| assets/vendor/colpick/example/index.html | Removes vendored colpick demo page. |
| assets/vendor/colpick/bower.json | Removes vendored colpick bower metadata. |
| assets/vendor/bootstrap-toggle/bootstrap-toggle.js | Removes vendored bootstrap-toggle JS. |
| assets/vendor/bootstrap-toggle/bootstrap-toggle.css | Removes vendored bootstrap-toggle CSS. |
| assets/vendor/ckeditor5-classic/ckeditor.d.ts | Removes classic build TypeScript definitions from vendored assets. |
| assets/vendor/ckeditor5-classic/translations/si.js | Removes classic build translation artifact. |
| assets/vendor/ckeditor5-classic/translations/oc.js | Removes classic build translation artifact. |
| assets/vendor/ckeditor5-classic/translations/kk.js | Removes classic build translation artifact. |
| assets/vendor/ckeditor5-classic/translations/hy.js | Removes classic build translation artifact. |
| assets/vendor/ckeditor5-classic/translations/gu.js | Removes classic build translation artifact. |
| assets/vendor/ckeditor5-classic/translations/ast.js | Removes classic build translation artifact. |
| assets/vendor/ckeditor5-classic/plugins/ckeditor5-rexlink/src/rexlink.d.ts | Removes classic build plugin TS declaration artifact. |
| assets/vendor/ckeditor5-classic/plugins/ckeditor5-rexlink/src/index.d.ts | Removes classic build plugin TS declaration artifact. |
| assets/vendor/ckeditor5-classic/plugins/ckeditor5-rexlink/src/augmentation.d.ts | Removes classic build plugin TS declaration artifact. |
| assets/vendor/ckeditor5-classic/plugins/ckeditor5-reximage/src/reximage.d.ts | Removes classic build plugin TS declaration artifact. |
| assets/vendor/ckeditor5-classic/plugins/ckeditor5-reximage/src/index.d.ts | Removes classic build plugin TS declaration artifact. |
| assets/vendor/ckeditor5-classic/plugins/ckeditor5-reximage/src/augmentation.d.ts | Removes classic build plugin TS declaration artifact. |
| assets/vendor/ckeditor5-classic/plugins/ckeditor5-paste-plaintext/src/translation.d.ts | Removes classic build plugin TS declaration artifact. |
| assets/vendor/ckeditor5-classic/plugins/ckeditor5-paste-plaintext/src/plaintextui.d.ts | Removes classic build plugin TS declaration artifact. |
| assets/vendor/ckeditor5-classic/plugins/ckeditor5-paste-plaintext/src/plaintextcommand.d.ts | Removes classic build plugin TS declaration artifact. |
| assets/vendor/ckeditor5-classic/plugins/ckeditor5-paste-plaintext/src/plaintext.d.ts | Removes classic build plugin TS declaration artifact. |
| assets/vendor/ckeditor5-classic/plugins/ckeditor5-paste-plaintext/src/index.d.ts | Removes classic build plugin TS declaration artifact. |
| assets/vendor/ckeditor5-classic/plugins/ckeditor5-paste-plaintext/src/augmentation.d.ts | Removes classic build plugin TS declaration artifact. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Comment on lines
49
to
+56
| requires: | ||
| redaxo: '^5.12' | ||
| redaxo: '^5.19' | ||
| php: | ||
| version: '>=7.2, <9' | ||
| version: '>=8.1, <9' | ||
| conflicts: | ||
| packages: | ||
| mblock: '<3.4.0' | ||
| mform: '<6.1.0' | ||
| mblock: '>=4.3.0' | ||
| mform: '>=7.0.0' |
Comment on lines
+101
to
+104
| clipboardPipeline.on('inputTransformation', (event, data) => { | ||
| if (!command || command.value !== false || !data || !data.dataTransfer || typeof data.dataTransfer.getData !== 'function') { | ||
| return; | ||
| } |
Comment on lines
+95
to
97
| $names = (strlen(implode('_', $exportNames)) > 100) ? substr(implode('_', $exportNames), 0, 100) . '_etc_' : implode('_', $exportNames); | ||
| $fileName = 'cke5_export_' . $names . '_' . date('YmdHis') . '.json'; | ||
| header('Content-Disposition: attachment; filename="' . $fileName . '"; charset=utf-8'); // create header info |
Comment on lines
115
to
118
| /** | ||
| * Lädt externe CSS-Dateien und gibt sie als Array zurück | ||
| * @return array | ||
| * @return list<string> | ||
| */ |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.