From f4ec750fbfbe9110fcd1208d1cbde3c9cf8388ca Mon Sep 17 00:00:00 2001 From: ttg-wolfhoel <124867428+ttg-wolfhoel@users.noreply.github.com> Date: Fri, 16 Feb 2024 08:37:19 +0100 Subject: [PATCH 1/6] Update composer.json 12.4 supplemented --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 25aed09..2bfc6d9 100644 --- a/composer.json +++ b/composer.json @@ -12,7 +12,7 @@ "GPL-2.0-or-later" ], "require": { - "typo3/cms-rte-ckeditor": "^9.5 || ^10.4 || ^11.5" + "typo3/cms-rte-ckeditor": "^9.5 || ^10.4 || ^11.5 || ^12.4" }, "autoload": { "psr-4": { From 36ad521db932d0c248985f7193411950610afc50 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20H=C3=B6ller?= Date: Fri, 16 Feb 2024 08:52:33 +0100 Subject: [PATCH 2/6] [TASK] Update auf v12 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Lösungsbeschreibung --- Configuration/RTE/JavaScriptModules.php | 15 ++ Configuration/RTE/Plugin.yaml | 11 +- Readme.md | 13 +- Resources/Public/Css/Abbr.css | 24 +++ .../Public/JavaScript/Plugins/abbr/LICENSE.md | 42 ----- .../JavaScript/Plugins/abbr/dialogs/abbr.js | 152 ------------------ .../JavaScript/Plugins/abbr/icons/abbr.png | Bin 693 -> 0 bytes .../Public/JavaScript/Plugins/abbr/plugin.js | 70 -------- Resources/Public/JavaScript/abbreviation.js | 14 ++ .../Public/JavaScript/abbreviationediting.js | 55 +++++++ Resources/Public/JavaScript/abbreviationui.js | 106 ++++++++++++ .../Public/JavaScript/abbreviationview.js | 82 ++++++++++ composer.json | 5 + ext_emconf.php | 4 +- 14 files changed, 320 insertions(+), 273 deletions(-) create mode 100644 Configuration/RTE/JavaScriptModules.php create mode 100644 Resources/Public/Css/Abbr.css delete mode 100644 Resources/Public/JavaScript/Plugins/abbr/LICENSE.md delete mode 100644 Resources/Public/JavaScript/Plugins/abbr/dialogs/abbr.js delete mode 100644 Resources/Public/JavaScript/Plugins/abbr/icons/abbr.png delete mode 100644 Resources/Public/JavaScript/Plugins/abbr/plugin.js create mode 100644 Resources/Public/JavaScript/abbreviation.js create mode 100644 Resources/Public/JavaScript/abbreviationediting.js create mode 100644 Resources/Public/JavaScript/abbreviationui.js create mode 100644 Resources/Public/JavaScript/abbreviationview.js diff --git a/Configuration/RTE/JavaScriptModules.php b/Configuration/RTE/JavaScriptModules.php new file mode 100644 index 0000000..bf57b8d --- /dev/null +++ b/Configuration/RTE/JavaScriptModules.php @@ -0,0 +1,15 @@ + ['backend'], + 'tags' => [ + 'backend.form', + ], + 'imports' => [ + // recursive definiton, all *.js files in this folder are import-mapped + // trailing slash is required per importmap-specification + '@studiomitte/rte-ckeditor-abbr/' => 'EXT:rte_ckeditor_abbr/Resources/Public/JavaScript/', + ], +]; diff --git a/Configuration/RTE/Plugin.yaml b/Configuration/RTE/Plugin.yaml index 05d2cea..33e333d 100644 --- a/Configuration/RTE/Plugin.yaml +++ b/Configuration/RTE/Plugin.yaml @@ -1,4 +1,9 @@ editor: - externalPlugins: - abbr: - resource: "EXT:rte_ckeditor_abbr/Resources/Public/JavaScript/Plugins/abbr/plugin.js" + config: + importModules: + - '@studiomitte/rte-ckeditor-abbr/abbreviation.js' + contentsCss: + - "EXT:rte_ckeditor_abbr/Resources/Public/Css/Abbr.css" + toolbar: + item: + - abbreviation diff --git a/Readme.md b/Readme.md index 566a99b..bfea11d 100644 --- a/Readme.md +++ b/Readme.md @@ -13,8 +13,12 @@ All it takes to enable the plugin are the following changes in your `RTE.yaml`: 1. Import the configuration from the extension: ```yaml -imports: - - { resource: "EXT:rte_ckeditor_abbr/Configuration/RTE/Plugin.yaml" } +editor: + config: + importModules: + - '@studiomitte/rte-ckeditor-abbr/abbreviation.js' + contentCss: + - "EXT:rte_ckeditor_abbr/Resources/Public/Css/Abbr.css" ``` 2. Enable the plugin: @@ -22,8 +26,9 @@ imports: ```yaml editor: config: - extraPlugins: - - abbr + toolbar: + items: + - abbreviation ``` diff --git a/Resources/Public/Css/Abbr.css b/Resources/Public/Css/Abbr.css new file mode 100644 index 0000000..27f4e35 --- /dev/null +++ b/Resources/Public/Css/Abbr.css @@ -0,0 +1,24 @@ +.ck.ck-abbr-form { + padding: var(--ck-spacing-large); + display: grid; + grid-template-columns: repeat(2, 1fr); + grid-template-rows: repeat(3, 1fr); + grid-column-gap: 0; + grid-row-gap: var(--ck-spacing-standard); +} + +.ck.ck-abbr-form .ck.ck-labeled-field-view:nth-of-type(1) { + grid-area: 1 / 1 / 2 / 3; +} + +.ck.ck-abbr-form .ck.ck-labeled-field-view:nth-of-type(2) { + grid-area: 2 / 1 / 3 / 3; +} + +.ck.ck-abbr-form .ck-button:nth-of-type(1) { + grid-area: 3 / 1 / 4 / 2; +} + +.ck.ck-abbr-form .ck-button:nth-of-type(2) { + grid-area: 3 / 2 / 4 / 3; +} diff --git a/Resources/Public/JavaScript/Plugins/abbr/LICENSE.md b/Resources/Public/JavaScript/Plugins/abbr/LICENSE.md deleted file mode 100644 index 44f54b6..0000000 --- a/Resources/Public/JavaScript/Plugins/abbr/LICENSE.md +++ /dev/null @@ -1,42 +0,0 @@ -Software License Agreement -========================== - -Copyright (c) 2014-2020, CKSource - Frederico Knabben. All rights reserved. - -All sample plugins are licensed under the terms of the MIT License (see Appendix A): - - http://en.wikipedia.org/wiki/MIT_License - -Trademarks ----------- - -CKEditor is a trademark of CKSource - Frederico Knabben. All other brand -and product names are trademarks, registered trademarks or service -marks of their respective holders. - ---- - -Appendix A: The MIT License ---------------------------- - -The MIT License (MIT) - -Copyright (c) 2014-2020, CKSource - Frederico Knabben. All rights reserved. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. \ No newline at end of file diff --git a/Resources/Public/JavaScript/Plugins/abbr/dialogs/abbr.js b/Resources/Public/JavaScript/Plugins/abbr/dialogs/abbr.js deleted file mode 100644 index ea502f8..0000000 --- a/Resources/Public/JavaScript/Plugins/abbr/dialogs/abbr.js +++ /dev/null @@ -1,152 +0,0 @@ -/** - * Copyright (c) 2014-2020, CKSource - Frederico Knabben. All rights reserved. - * Licensed under the terms of the MIT License (see LICENSE.md). - * - * The abbr plugin dialog window definition. - * - * Created out of the CKEditor Plugin SDK: - * https://ckeditor.com/docs/ckeditor4/latest/guide/plugin_sdk_sample_1.html - */ - -// Our dialog definition. -CKEDITOR.dialog.add( 'abbrDialog', function( editor ) { - return { - - // Basic properties of the dialog window: title, minimum size. - title: 'Abbreviation Properties', - minWidth: 400, - minHeight: 200, - - // Dialog window content definition. - contents: [ - { - // Definition of the Basic Settings dialog tab (page). - id: 'tab-basic', - label: 'Basic Settings', - - // The tab content. - elements: [ - { - // Text input field for the abbreviation text. - type: 'text', - id: 'abbr', - label: 'Abbreviation', - - // Validation checking whether the field is not empty. - validate: CKEDITOR.dialog.validate.notEmpty( "Abbreviation field cannot be empty." ), - - // Called by the main setupContent method call on dialog initialization. - setup: function( element ) { - this.setValue( element.getText() ); - }, - - // Called by the main commitContent method call on dialog confirmation. - commit: function( element ) { - element.setText( this.getValue() ); - } - }, - { - // Text input field for the abbreviation title (explanation). - type: 'text', - id: 'title', - label: 'Explanation', - - // Require the title attribute to be enabled. - requiredContent: 'abbr[title]', - validate: CKEDITOR.dialog.validate.notEmpty( "Explanation field cannot be empty." ), - - // Called by the main setupContent method call on dialog initialization. - setup: function( element ) { - this.setValue( element.getAttribute( "title" ) ); - }, - - // Called by the main commitContent method call on dialog confirmation. - commit: function( element ) { - element.setAttribute( "title", this.getValue() ); - } - } - ] - }, - - // Definition of the Advanced Settings dialog tab (page). - { - id: 'tab-adv', - label: 'Advanced Settings', - - // Require the id attribute to be enabled. - requiredContent: 'abbr[id]', - elements: [ - { - // Another text field for the abbr element id. - type: 'text', - id: 'id', - label: 'Id', - - // Called by the main setupContent method call on dialog initialization. - setup: function( element ) { - this.setValue( element.getAttribute( "id" ) ); - }, - - // Called by the main commitContent method call on dialog confirmation. - commit: function ( element ) { - var id = this.getValue(); - if ( id ) - element.setAttribute( 'id', id ); - else if ( !this.insertMode ) - element.removeAttribute( 'id' ); - } - } - ] - } - ], - - // Invoked when the dialog is loaded. - onShow: function() { - - // Get the selection from the editor. - var selection = editor.getSelection(); - - // Get the element at the start of the selection. - var element = selection.getStartElement(); - - // Get the element closest to the selection, if it exists. - if ( element ) - element = element.getAscendant( 'abbr', true ); - - // Create a new element if it does not exist. - if ( !element || element.getName() != 'abbr' ) { - element = editor.document.createElement( 'abbr' ); - - // Flag the insertion mode for later use. - this.insertMode = true; - } - else - this.insertMode = false; - - // Store the reference to the element in an internal property, for later use. - this.element = element; - - // Invoke the setup methods of all dialog window elements, so they can load the element attributes. - if ( !this.insertMode ) - this.setupContent( this.element ); - }, - - // This method is invoked once a user clicks the OK button, confirming the dialog. - onOk: function() { - - // The context of this function is the dialog object itself. - // https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_dialog.html - var dialog = this; - - // Create a new element. - var abbr = this.element; - - // Invoke the commit methods of all dialog window elements, so the element gets modified. - this.commitContent( abbr ); - - // Finally, if in insert mode, insert the element into the editor at the caret position. - if ( this.insertMode ) - editor.insertElement( abbr ); - } - }; -}); diff --git a/Resources/Public/JavaScript/Plugins/abbr/icons/abbr.png b/Resources/Public/JavaScript/Plugins/abbr/icons/abbr.png deleted file mode 100644 index b3bbae5a88974ecf3ba5559c8743a5d09fe5174b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 693 zcmV;m0!safP)pF8gxZibW?9;ba!ELWdKlNX>N2bPDNB8 zb~7$DE-^7j^FlWO00J>dL_t(IPoK)GB-p-@0Bm*W(5Ivu+Zq>6J<2tcRw z`+c12THpw((IfLdFvRv9oD47fJ31Eo?4tyT-c<#OTd?2G}jXaT{f1LN_S z-{m-^M|Xun!D$F&Uz#jPlZE5sW0*`P?C{)m diff --git a/Resources/Public/JavaScript/Plugins/abbr/plugin.js b/Resources/Public/JavaScript/Plugins/abbr/plugin.js deleted file mode 100644 index c9ec8f6..0000000 --- a/Resources/Public/JavaScript/Plugins/abbr/plugin.js +++ /dev/null @@ -1,70 +0,0 @@ -/** - * Copyright (c) 2014-2020, CKSource - Frederico Knabben. All rights reserved. - * Licensed under the terms of the MIT License (see LICENSE.md). - * - * Basic sample plugin inserting abbreviation elements into the CKEditor editing area. - * - * Created out of the CKEditor Plugin SDK: - * https://ckeditor.com/docs/ckeditor4/latest/guide/plugin_sdk_sample_1.html - */ - -// Register the plugin within the editor. -CKEDITOR.plugins.add( 'abbr', { - - // Register the icons. - icons: 'abbr', - - // The plugin initialization logic goes inside this method. - init: function( editor ) { - - // Define an editor command that opens our dialog window. - editor.addCommand( 'abbr', new CKEDITOR.dialogCommand( 'abbrDialog', { - - // Allow the abbr tag with an optional title attribute. - allowedContent: 'abbr[title,id]', - - // Require the abbr tag to be allowed for the feature to work. - requiredContent: 'abbr', - - // Prefer abbr over acronym. Transform acronym elements into abbr elements. - contentForms: [ - 'abbr', - 'acronym' - ] - } ) ); - - // Create a toolbar button that executes the above command. - editor.ui.addButton( 'Abbr', { - - // The text part of the button (if available) and the tooltip. - label: 'Insert Abbreviation', - - // The command to execute on click. - command: 'abbr', - - // The button placement in the toolbar (toolbar group name). - toolbar: 'insert' - }); - - if ( editor.contextMenu ) { - - // Add a context menu group with the Edit Abbreviation item. - editor.addMenuGroup( 'abbrGroup' ); - editor.addMenuItem( 'abbrItem', { - label: 'Edit Abbreviation', - icon: this.path + 'icons/abbr.png', - command: 'abbr', - group: 'abbrGroup' - }); - - editor.contextMenu.addListener( function( element ) { - if ( element.getAscendant( 'abbr', true ) ) { - return { abbrItem: CKEDITOR.TRISTATE_OFF }; - } - }); - } - - // Register our dialog file -- this.path is the plugin folder path. - CKEDITOR.dialog.add( 'abbrDialog', this.path + 'dialogs/abbr.js' ); - } -}); diff --git a/Resources/Public/JavaScript/abbreviation.js b/Resources/Public/JavaScript/abbreviation.js new file mode 100644 index 0000000..1fee34c --- /dev/null +++ b/Resources/Public/JavaScript/abbreviation.js @@ -0,0 +1,14 @@ +/** + * @license Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. + * For licensing, see LICENSE.md. + */ + +import { Plugin } from '@ckeditor/ckeditor5-core'; +import AbbreviationEditing from './abbreviationediting.js'; +import AbbreviationUI from './abbreviationui.js'; + +export default class Abbreviation extends Plugin { + static get requires() { + return [AbbreviationEditing, AbbreviationUI]; + } +} \ No newline at end of file diff --git a/Resources/Public/JavaScript/abbreviationediting.js b/Resources/Public/JavaScript/abbreviationediting.js new file mode 100644 index 0000000..d2be2ad --- /dev/null +++ b/Resources/Public/JavaScript/abbreviationediting.js @@ -0,0 +1,55 @@ +/** + * @license Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. + * For licensing, see LICENSE.md. + */ + +import { Plugin } from '@ckeditor/ckeditor5-core'; + +export default class AbbreviationEditing extends Plugin { + init() { + this._defineSchema(); + this._defineConverters(); + } + _defineSchema() { + const schema = this.editor.model.schema; + + // Extend the text node's schema to accept the abbreviation attribute. + schema.extend('$text', { + allowAttributes: ['abbreviation'] + }); + } + _defineConverters() { + const conversion = this.editor.conversion; + + // Conversion from a model attribute to a view element + conversion.for('downcast').attributeToElement({ + model: 'abbreviation', + + // Callback function provides access to the model attribute value + // and the DowncastWriter + view: (modelAttributeValue, conversionApi) => { + const { writer } = conversionApi; + return writer.createAttributeElement('abbr', { + title: modelAttributeValue + }); + } + }); + + // Conversion from a view element to a model attribute + conversion.for('upcast').elementToAttribute({ + view: { + name: 'abbr', + attributes: ['title'] + }, + model: { + key: 'abbreviation', + + // Callback function provides access to the view element + value: viewElement => { + const title = viewElement.getAttribute('title'); + return title; + } + } + }); + } +} \ No newline at end of file diff --git a/Resources/Public/JavaScript/abbreviationui.js b/Resources/Public/JavaScript/abbreviationui.js new file mode 100644 index 0000000..0a79d80 --- /dev/null +++ b/Resources/Public/JavaScript/abbreviationui.js @@ -0,0 +1,106 @@ +/** + * @license Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. + * For licensing, see LICENSE.md. + */ + +import { Plugin } from '@ckeditor/ckeditor5-core'; +import { ButtonView, ContextualBalloon, clickOutsideHandler } from '@ckeditor/ckeditor5-ui'; +import FormView from './abbreviationview.js'; + +export default class AbbreviationUI extends Plugin { + static get requires() { + return [ContextualBalloon]; + } + + init() { + const editor = this.editor; + + // Create the balloon and the form view. + this._balloon = this.editor.plugins.get(ContextualBalloon); + this.formView = this._createFormView(); + + editor.ui.componentFactory.add('abbreviation', () => { + const button = new ButtonView(); + + button.label = 'Abbreviation'; + button.tooltip = true; + button.withText = true; + + // Show the UI on button click. + this.listenTo(button, 'execute', () => { + this._showUI(); + }); + + return button; + }); + } + + _createFormView() { + const editor = this.editor; + const formView = new FormView(editor.locale); + + // Execute the command after clicking the "Save" button. + this.listenTo(formView, 'submit', () => { + // Grab values from the abbreviation and title input fields. + const title = formView.titleInputView.fieldView.element.value; + const abbr = formView.abbrInputView.fieldView.element.value; + + editor.model.change(writer => { + editor.model.insertContent(writer.createText(abbr, { abbreviation: title })); + }); + + // Hide the form view after submit. + this._hideUI(); + }); + + // Hide the form view after clicking the "Cancel" button. + this.listenTo(formView, 'cancel', () => { + this._hideUI(); + }); + + // Hide the form view when clicking outside the balloon. + clickOutsideHandler({ + emitter: formView, + activator: () => this._balloon.visibleView === formView, + contextElements: [this._balloon.view.element], + callback: () => this._hideUI() + }); + + return formView; + } + + _showUI() { + this._balloon.add({ + view: this.formView, + position: this._getBalloonPositionData() + }); + + this.formView.focus(); + } + + _hideUI() { + // Clear the input field values and reset the form. + this.formView.abbrInputView.fieldView.value = ''; + this.formView.titleInputView.fieldView.value = ''; + this.formView.element.reset(); + + this._balloon.remove(this.formView); + + // Focus the editing view after inserting the abbreviation so the user can start typing the content + // right away and keep the editor focused. + this.editor.editing.view.focus(); + } + + _getBalloonPositionData() { + const view = this.editor.editing.view; + const viewDocument = view.document; + let target = null; + + // Set a target position by converting view selection range to DOM + target = () => view.domConverter.viewRangeToDom(viewDocument.selection.getFirstRange()); + + return { + target + }; + } +} \ No newline at end of file diff --git a/Resources/Public/JavaScript/abbreviationview.js b/Resources/Public/JavaScript/abbreviationview.js new file mode 100644 index 0000000..16c3e92 --- /dev/null +++ b/Resources/Public/JavaScript/abbreviationview.js @@ -0,0 +1,82 @@ +/** + * @license Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. + * For licensing, see LICENSE.md. + */ + +import { + View, + LabeledFieldView, + createLabeledInputText, + ButtonView, + submitHandler +} from '@ckeditor/ckeditor5-ui'; +import { icons } from '@ckeditor/ckeditor5-core'; + +export default class FormView extends View { + constructor(locale) { + super(locale); + + this.abbrInputView = this._createInput('Add abbreviation'); + this.titleInputView = this._createInput('Add title'); + + this.saveButtonView = this._createButton('Save', icons.check, 'ck-button-save'); + // Submit type of the button will trigger the submit event on entire form when clicked + // (see submitHandler() in render() below). + this.saveButtonView.type = 'submit'; + + this.cancelButtonView = this._createButton('Cancel', icons.cancel, 'ck-button-cancel'); + + // Delegate ButtonView#execute to FormView#cancel + this.cancelButtonView.delegate('execute').to(this, 'cancel'); + + this.childViews = this.createCollection([ + this.abbrInputView, + this.titleInputView, + this.saveButtonView, + this.cancelButtonView + ]); + + this.setTemplate({ + tag: 'form', + attributes: { + class: ['ck', 'ck-abbr-form'], + tabindex: '-1' + }, + children: this.childViews + }); + } + + render() { + super.render(); + + // Submit the form when the user clicked the save button or pressed enter in the input. + submitHandler({ + view: this + }); + } + + focus() { + this.childViews.first.focus(); + } + + _createInput(label) { + const labeledInput = new LabeledFieldView(this.locale, createLabeledInputText); + + labeledInput.label = label; + + return labeledInput; + } + + _createButton(label, icon, className) { + const button = new ButtonView(); + + button.set({ + label, + icon, + tooltip: true, + class: className + }); + + return button; + } +} \ No newline at end of file diff --git a/composer.json b/composer.json index 2bfc6d9..e542607 100644 --- a/composer.json +++ b/composer.json @@ -6,6 +6,11 @@ { "name": "Georg Ringer", "role": "Developer" + }, + { + "name": "Wolfgang Höller", + "role": "Developer" + } ], "license": [ diff --git a/ext_emconf.php b/ext_emconf.php index 134890b..d518b82 100644 --- a/ext_emconf.php +++ b/ext_emconf.php @@ -10,8 +10,8 @@ 'version' => '1.0.2', 'constraints' => [ 'depends' => [ - 'typo3' => '9.5.0-11.5.99', - 'rte_ckeditor' => '9.5.0-11.5.99' + 'typo3' => '9.5.0-12.4.99', + 'rte_ckeditor' => '9.5.0-12.4.99' ], ], ]; From f79046359687d1ac29e6dc61a6b2c7acbb9ed666 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20H=C3=B6ller?= Date: Fri, 16 Feb 2024 09:14:20 +0100 Subject: [PATCH 3/6] Installation Hint --- Readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Readme.md b/Readme.md index bfea11d..961ec37 100644 --- a/Readme.md +++ b/Readme.md @@ -4,7 +4,7 @@ This extension ships a simple plugin for the ckeditor to allow editors setting a ## Installation -Use `composer require studiomitte/rte-ckeditor-abbr` or download the extension from TER. +Use `ddev composer req studiomitte/rte-ckeditor-abbr:12.4` or download the extension from TER. ## Usage From 1500f2ff889f5308f001d0f63afd90133c3a13a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20H=C3=B6ller?= Date: Fri, 16 Feb 2024 09:19:48 +0100 Subject: [PATCH 4/6] [BUGFIX] JavaScriptModules.php copy to correct folder --- Configuration/{RTE => }/JavaScriptModules.php | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename Configuration/{RTE => }/JavaScriptModules.php (100%) diff --git a/Configuration/RTE/JavaScriptModules.php b/Configuration/JavaScriptModules.php similarity index 100% rename from Configuration/RTE/JavaScriptModules.php rename to Configuration/JavaScriptModules.php From 276b5ed94e2909d133ebb103555697662422df25 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20H=C3=B6ller?= Date: Fri, 16 Feb 2024 09:36:55 +0100 Subject: [PATCH 5/6] [TASK] version incremented --- ext_emconf.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ext_emconf.php b/ext_emconf.php index d518b82..b7faba2 100644 --- a/ext_emconf.php +++ b/ext_emconf.php @@ -7,7 +7,7 @@ 'clearCacheOnLoad' => true, 'author' => 'Georg Ringer', 'author_email' => 'gr@studiomitte.com', - 'version' => '1.0.2', + 'version' => '1.0.3', 'constraints' => [ 'depends' => [ 'typo3' => '9.5.0-12.4.99', From e9d0fef8469a6a012fc08c5b568dfb85d57dc7f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20H=C3=B6ller?= Date: Fri, 16 Feb 2024 14:18:53 +0100 Subject: [PATCH 6/6] [TASK] Adapted requirements for TYPO3 12.4.x Readme adpated with sample from https://github.com/ckeditor/ckeditor5-tutorials-examples --- Readme.md | 2 +- composer.json | 2 +- ext_emconf.php | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Readme.md b/Readme.md index 961ec37..32295f4 100644 --- a/Readme.md +++ b/Readme.md @@ -1,6 +1,6 @@ # TYPO3 Extension `rte_ckeditor_abbr` -This extension ships a simple plugin for the ckeditor to allow editors setting abbreviations. The plugin itself has been taken from https://ckeditor.com/docs/ckeditor4/latest/examples/abbr.html without any changes +This extension ships a simple plugin for the ckeditor to allow editors setting abbreviations. The plugin itself has been taken from https://github.com/ckeditor/ckeditor5-tutorials-examples/tree/main/abbreviation-plugin/part-1 without only little changes ## Installation diff --git a/composer.json b/composer.json index e542607..a91ada2 100644 --- a/composer.json +++ b/composer.json @@ -17,7 +17,7 @@ "GPL-2.0-or-later" ], "require": { - "typo3/cms-rte-ckeditor": "^9.5 || ^10.4 || ^11.5 || ^12.4" + "typo3/cms-rte-ckeditor": "^12.4" }, "autoload": { "psr-4": { diff --git a/ext_emconf.php b/ext_emconf.php index b7faba2..163ed92 100644 --- a/ext_emconf.php +++ b/ext_emconf.php @@ -10,8 +10,8 @@ 'version' => '1.0.3', 'constraints' => [ 'depends' => [ - 'typo3' => '9.5.0-12.4.99', - 'rte_ckeditor' => '9.5.0-12.4.99' + 'typo3' => '12.4.0-12.4.99', + 'rte_ckeditor' => '12.4.0-12.4.99' ], ], ];