upload adapter für ckeditor
This commit is contained in:
52
main.js
52
main.js
@@ -3,6 +3,54 @@
|
|||||||
* https://ckeditor.com/ckeditor-5/builder/#installation/NoNgNARATAdAnDADBSBWKUDsBGTjMAsiU6iAHBtgQMzZlVn2EjWYlTkhkiLKQAmAUxSIwwbGAkTRo7AF1Ig6kX4BjKBDlA==
|
* 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 {
|
import {
|
||||||
ClassicEditor,
|
ClassicEditor,
|
||||||
Autosave,
|
Autosave,
|
||||||
@@ -102,6 +150,7 @@ const editorConfig = {
|
|||||||
'emoji',
|
'emoji',
|
||||||
'horizontalLine',
|
'horizontalLine',
|
||||||
'link',
|
'link',
|
||||||
|
'uploadImage',
|
||||||
'mediaEmbed',
|
'mediaEmbed',
|
||||||
'insertTable',
|
'insertTable',
|
||||||
'highlight',
|
'highlight',
|
||||||
@@ -176,7 +225,8 @@ const editorConfig = {
|
|||||||
TextTransformation,
|
TextTransformation,
|
||||||
Title,
|
Title,
|
||||||
TodoList,
|
TodoList,
|
||||||
Underline
|
Underline,
|
||||||
|
SCCUploadAdapterPlugin
|
||||||
],
|
],
|
||||||
balloonToolbar: ['bold', 'italic', '|', 'link', '|', 'bulletedList', 'numberedList'],
|
balloonToolbar: ['bold', 'italic', '|', 'link', '|', 'bulletedList', 'numberedList'],
|
||||||
blockToolbar: [
|
blockToolbar: [
|
||||||
|
|||||||
Reference in New Issue
Block a user