diff --git a/resources/assets/javascripts/chunks/wysiwyg.js b/resources/assets/javascripts/chunks/wysiwyg.js index 6f6544ed185e3ef2965126d7a5db8fa8ac66c7fb..580c12d1b7e8659b8674f86e321b3932ae23f3c3 100644 --- a/resources/assets/javascripts/chunks/wysiwyg.js +++ b/resources/assets/javascripts/chunks/wysiwyg.js @@ -53,7 +53,6 @@ import Mathematics from 'ckeditor5-math/src/math'; import StudipA11YDialog, { updateVoiceLabel } from '../cke/studip-a11y-dialog/a11y-dialog.js'; import StudipBlockQuote from '../cke/studip-quote/StudipBlockQuote.js'; import StudipUpload from '../cke/StudipUpload.js'; -import StudipWikiLink from '../cke/wiki-link/wiki-link.js'; import SpecialCharactersEmojiFood from '../cke/special_characters/SpecialCharactersEmojiFood.js'; import SpecialCharactersEmojiNature from '../cke/special_characters/SpecialCharactersEmojiNature.js'; import SpecialCharactersEmojiObjects from '../cke/special_characters/SpecialCharactersEmojiObjects.js'; @@ -123,7 +122,6 @@ ClassicEditor.builtinPlugins = [ Underline, FileRepository, StudipA11YDialog, - StudipWikiLink, ]; const customColorPalette = [ diff --git a/resources/assets/javascripts/cke/StudipUpload.js b/resources/assets/javascripts/cke/StudipUpload.js index 58297da914bfe4b513585c2a6d6999e2b1fda39e..e1d0eceee13212bfd818cd57e6764291164ddc42 100644 --- a/resources/assets/javascripts/cke/StudipUpload.js +++ b/resources/assets/javascripts/cke/StudipUpload.js @@ -35,7 +35,9 @@ class StudipUploadAdapter { } export default function StudipUpload(editor) { - editor.plugins.get('FileRepository').createUploadAdapter = (loader) => { - return new StudipUploadAdapter(loader); - }; + if (editor.plugins.has('FileRepository')) { + editor.plugins.get('FileRepository').createUploadAdapter = (loader) => { + return new StudipUploadAdapter(loader); + }; + } } diff --git a/resources/assets/javascripts/cke/studip-quote/StudipBlockQuote.js b/resources/assets/javascripts/cke/studip-quote/StudipBlockQuote.js index b1fc65d89e4ea6e1dc7e6e9138601872cdc3c58c..8b0b739ea80f30592e30de217f0f50f9881dd5e8 100644 --- a/resources/assets/javascripts/cke/studip-quote/StudipBlockQuote.js +++ b/resources/assets/javascripts/cke/studip-quote/StudipBlockQuote.js @@ -134,4 +134,8 @@ class RemoveStudipQuoteCommand extends Command { }); } } + + static get pluginName() { + return 'StudipBlockQuote'; + } } diff --git a/resources/assets/javascripts/lib/wysiwyg.js b/resources/assets/javascripts/lib/wysiwyg.js index 17e76ce0637c01806193ef002f5fd647064594c4..c14a0bf58e16eb9ae6cf8272e4b9e9bfcd09021b 100644 --- a/resources/assets/javascripts/lib/wysiwyg.js +++ b/resources/assets/javascripts/lib/wysiwyg.js @@ -2,6 +2,7 @@ * wysiwyg.js - Replace HTML textareas with WYSIWYG editor. */ import parseOptions from './parse_options.js'; +import WikiLink from '../cke/wiki-link/wiki-link.js'; const wysiwyg = { // NOTE keep this function in sync with Markup class @@ -59,8 +60,24 @@ function replaceTextarea(textarea) { setEditor(textarea, {}); const $textarea = textarea instanceof jQuery ? textarea : $(textarea); - // fetch ckeditor configuration - const options = $textarea.attr('data-editor') ? parseOptions($textarea.attr('data-editor')) : null; + let options = {}; + if ($textarea.attr('data-editor')) { + const parsed = parseOptions($textarea.attr('data-editor')); + + if (parsed.removePlugins) { + options.removePlugins = parsed.removePlugins.split(",") + } + + if (parsed.extraPlugins) { + const pluginMap = { WikiLink }; + options.extraPlugins = parsed.extraPlugins.split(",").reduce((memo, plugin) => { + if (plugin in pluginMap) { + memo.push(pluginMap[plugin]); + } + return memo; + }, []); + } + } return STUDIP.loadChunk('wysiwyg') .then(loadMathJax) @@ -70,10 +87,7 @@ function replaceTextarea(textarea) { .then(emitLoadEvent); function createEditor(ClassicEditor) { - // TODO: Das ist einfach nur gehackt. - const config = { removePlugins: options?.extraPlugins === 'studip-wiki' ? [] : ['WikiLink'] }; - - return ClassicEditor.create(textarea, config); + return ClassicEditor.create(textarea, options); } function setEditorInstance(ckeditor) { diff --git a/templates/wiki/edit.php b/templates/wiki/edit.php index eb6b356510ba1c555ba72159fdb0b4b7dd300367..3e42108a39d5f2ebbce11b9442e6cda1efe94d40 100644 --- a/templates/wiki/edit.php +++ b/templates/wiki/edit.php @@ -12,7 +12,7 @@ <input type="hidden" name="cmd" value="show"> <br> - <textarea name="body" class="wiki-editor add_toolbar wysiwyg size-l" data-editor="extraPlugins=studip-wiki" + <textarea name="body" class="wiki-editor add_toolbar wysiwyg size-l" data-editor="extraPlugins=WikiLink" ><?= wysiwygReady($body) ?></textarea> </fieldset>