diff --git a/main.js b/main.js index 6fb0e12..770d605 100644 --- a/main.js +++ b/main.js @@ -3,6 +3,54 @@ * https://ckeditor.com/ckeditor-5/builder/#installation/NoNgNARATAdAnDADBSBWKUDsBGTjMAsiU6iAHBtgQMzZlVn2EjWYlTkhkiLKQAmAUxSIwwbGAkTRo7AF1Ig6kX4BjKBDlA== */ +export default class SCCUploadAdapter { + constructor(loader, uploadUrl = 'upload.php') { + this.loader = loader; + this.uploadUrl = uploadUrl; + } + + // Startet den Upload + upload() { + return this.loader.file + .then(file => new Promise((resolve, reject) => { + const data = new FormData(); + data.append('upload', file); + + // Optional: cr_id über GET oder FormData + const crId = this.loader.crId || 0; + const url = `${this.uploadUrl}?cr_id=${crId}`; + + fetch(url, { + method: 'POST', + body: data + }) + .then(response => response.json()) + .then(json => { + if (json && json.url) { + resolve({ default: json.url }); + } else if (json && json.error) { + reject(json.error); + } else { + reject('Unbekannter Upload-Fehler.'); + } + }) + .catch(err => reject(err)); + })); + } + + // Optional: Upload abbrechen + abort() { + // Fetch API unterstützt AbortController, wenn gewünscht + } +} + +function SCCUploadAdapterPlugin(editor) { + editor.plugins.get('FileRepository').createUploadAdapter = (loader) => { + return new SCCUploadAdapter(loader, 'changereq.php?action=upload'+(window.ckUploadParams||'')); // URL zu deinem Upload-Endpunkt + }; +} + + import { ClassicEditor, Autosave, @@ -102,6 +150,7 @@ const editorConfig = { 'emoji', 'horizontalLine', 'link', + 'uploadImage', 'mediaEmbed', 'insertTable', 'highlight', @@ -176,7 +225,8 @@ const editorConfig = { TextTransformation, Title, TodoList, - Underline + Underline, + SCCUploadAdapterPlugin ], balloonToolbar: ['bold', 'italic', '|', 'link', '|', 'bulletedList', 'numberedList'], blockToolbar: [