Skip to content

Cke5neo#217

Closed
skerbis wants to merge 44 commits into
mainfrom
cke5neo
Closed

Cke5neo#217
skerbis wants to merge 44 commits into
mainfrom
cke5neo

Conversation

@skerbis

@skerbis skerbis commented Jun 10, 2026

Copy link
Copy Markdown
Member

No description provided.

skerbis and others added 30 commits June 9, 2026 18:38
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.
Copilot AI review requested due to automatic review settings June 10, 2026 21:21

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 thread package.yml
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 thread pages/profiles.export.php
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>
*/
@skerbis skerbis closed this Jun 10, 2026
@skerbis skerbis deleted the cke5neo branch June 10, 2026 21:27
@skerbis skerbis restored the cke5neo branch June 10, 2026 21:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants