Skip to content
Snippets Groups Projects
Commit a0b4395b authored by Marcus Eibrink-Lunzenauer's avatar Marcus Eibrink-Lunzenauer Committed by David Siegfried
Browse files

Un-hack the customization of CKE5, refs #1513

Closes #1513

Merge request studip/studip!998
parent 417b56d7
No related branches found
No related tags found
No related merge requests found
......@@ -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 = [
......
......@@ -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);
};
}
}
......@@ -134,4 +134,8 @@ class RemoveStudipQuoteCommand extends Command {
});
}
}
static get pluginName() {
return 'StudipBlockQuote';
}
}
......@@ -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) {
......
......@@ -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>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment