diff --git a/app/javascript/vue/shared/external_tinymce_plugins.js b/app/javascript/vue/shared/external_tinymce_plugins.js new file mode 100644 index 000000000..e69de29bb diff --git a/app/javascript/vue/shared/tinymce_editor.vue b/app/javascript/vue/shared/tinymce_editor.vue index 8d4bd7b4a..4f1e92c4c 100644 --- a/app/javascript/vue/shared/tinymce_editor.vue +++ b/app/javascript/vue/shared/tinymce_editor.vue @@ -36,6 +36,8 @@ import 'tinymce/plugins/help/js/i18n/keynav/en'; import 'tinymce/plugins/quickbars'; import 'tinymce/plugins/directionality'; +import './external_tinymce_plugins.js'; // Load external plugins + // Content styles, including inline UI like fake cursors // All the above CSS files are loaded on to the page but these two must // be loaded into the editor iframe so they are loaded as strings and passed @@ -68,8 +70,7 @@ export default { default: () => ` table autoresize link advlist codesample code autolink lists charmap anchor searchreplace wordcount visualblocks visualchars - insertdatetime nonbreaking save directionality help quickbars - ` + insertdatetime nonbreaking save directionality help quickbars` }, menubar: { default: 'file edit view insert format' @@ -86,13 +87,13 @@ export default { mounted() { tinyMCE.init({ selector: `#${this.textareaId}`, - plugins: this.plugins, + plugins: `${this.plugins} ${window.extraTinyMcePlugins || ''}`, menubar: this.menubar, skin: false, content_css: false, content_style: contentStyle, convert_urls: false, - toolbar: this.toolbar, + toolbar: window.customLightTinyMceToolbar || this.toolbar, contextmenu: '', promotion: false, menu: { @@ -185,7 +186,13 @@ export default { editor.setContent(this.modelValue); }); editor.on('change', () => { - this.$emit('update:modelValue', editor.getContent()); + let content = editor.getContent(); + + // Remove images + content = content.replace(/]*>/g, ''); + + editor.setContent(content); + this.$emit('update:modelValue', content); }); } }); @@ -202,6 +209,7 @@ export default { editorIframe.contents().find('head').append(``); editorIframe.contents().find('head').append($('#font-css-pack').clone()); }