ibms-dome/Frontend/js/yourteam/yourteam.ckeditor5.init.js

211 lines
8.3 KiB
JavaScript
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

var editor = [];
$(function () {
initCkeditor()
})
/* --Uplaod Adapater */
//class MyUploadAdapter {
// constructor(loader) {
// this.loader = loader;
// }
// // start upload methods
// upload() {
// return new Promise((resolve, reject) => {
// // 使用 FileReader() 物件讀取檔案
// const reader = this.reader = new window.FileReader();
// // 觸發錯誤事件,以 reject 丟回 Promise 失敗原因
// reader.addEventListener('error', err => {
// reject(err);
// });
// // 觸發 abort 事件時,以 reject() ,使 Promise 失敗
// reader.addEventListener('abort', () => {
// reject();
// });
// // 告訴 FileReader 物件用 url 格式讀取,用於設定 img.src 性質
// this.loader.file.then(file => {
// console.log(file)
// // 觸發 load 事件後resolve 丟回物件完成 Promise
// reader.addEventListener('load', () => {
// //file.src = reader.result;
// let myFile = new BICYCLER.Utility.File();
// let myMath = new BICYCLER.Utility.Math();
// let strExtName = "", strOrgName = "", strSaveName = ""
// strSaveName = myMath.guid().replace(' ', '');
// strExtName = myFile.getFileExtension(file.name);
// strOrgName = (strExtName === null || strExtName === "") ? file.name : file.name.replace('.' + strExtName, '');
// editorImage.push(file)
// resolve({
// filename: file.name,
// orgname: strOrgName,
// savename: strSaveName,
// extname: strExtName,
// size: file.size,
// urls: {
// default: reader.result
// }
// });
// });
// reader.readAsDataURL(file);
// });
// //this.loader.read().then(data => {
// // editor.editing.view.change(writer => {
// // writer.setAttribute('src', data, viewImg);
// // });
// //});
// });
// }
// // start abort()
// abort() {
// // 觸發 FileReader abort 事件
// this.reader.abort();
// }
//}
function initCkeditor() {
return new Promise((resolve) => {
let toolbar = {
toolbar: {
items: [
'heading',
'|',
'fontfamily', 'fontsize', 'fontColor', 'fontBackgroundColor',
'|',
'bold', 'italic', 'underline', 'strikethrough',
'-',
'alignment', 'numberedList', 'bulletedList',
'|',
'indent', 'outdent',
'|',
'link', 'blockquote', /*'ckfinder ,'*/ 'insertTable',
'|',
'undo', 'redo',
'|',
'fullScreen'
],
shouldNotGroupWhenFull: true,
language: "zh",
},
image: {
toolbar: [
'toggleImageCaption', 'linkImage',
'|',
'imageStyle:alignBlockLeft', 'imageStyle:alignCenter', 'imageStyle:alignBlockRight', 'imageStyle:wrapText',
"|",
'resizeImage:original', 'resizeImage:25', 'resizeImage:50', 'resizeImage:75'
],
},
table: {
contentToolbar: ['tableProperties', 'tableCellProperties', 'tableRow', 'tableColumn', 'mergeTableCells']
},
//image介面刪除callback
//imageRemoveEvent: {
// additionalElementTypes: null,
// callback: (imagesSrc, nodeObjects) => {
// console.log('callback called', imagesSrc, nodeObjects)
// }
//},
ckfinder: {
//ckfinder 連接器
uploadUrl: '/By_Admin/CKfinder/CKfinder/connector?command=Init&type=Images&lang=zh-tw&langCode=zh-tw',
options: {
language: 'zh-tw',
resourceType: 'Images'
}
}
}
$("[data-toggle^=ckeditor]").each((index, value) => {
//取得原有element class
let oriWidth = $(value).css("width");
let oriMaxWidth = $(value).css("max-width");
ClassicEditor.create(value, toolbar)
.then(NewEditor => {
if ($("[data-toggle^=ckeditor]").length == 1) {
editor = NewEditor;
//讀進來的Source element disabled時該CKEditor => enableReadOnlyMode('secret string')
if ($(value).prop("disabled") == true) {
editor.enableReadOnlyMode('bicycler');
}
//剪貼簿讀進來不呈現樣式
//const plugin = editor.plugins.get('Clipboard');
//plugin.on('inputTransformation', (evt, data) => {
// const dataTransfer = data.dataTransfer;
// data.content = editor.data.processor.toView(regexTextToHtml(dataTransfer.getData('text/plain')));
//})
//上傳照片(非CKfinder)配置UploadAdapter
//editor.plugins.get('FileRepository').createUploadAdapter = loader => {
// console.log(editor.plugins.get('FileRepository'))
// return new MyUploadAdapter(loader)
//}
//放入原有col- class
$(editor.ui.view.element).css("width", oriWidth);
$(editor.ui.view.element).css("max-width", oriMaxWidth);
resolve();
} else {
let sub = $(value).data("toggle").split("ckeditor")[1];
editor[sub] = NewEditor
//讀進來的Source element disabled時該CKEditor => enableReadOnlyMode('secret string')
if ($(value).prop("disabled") == true) {
editor[sub].enableReadOnlyMode('2421ww');
}
//貼上時指文字呈現
//const plugin = editor[sub].plugins.get('Clipboard');
//plugin.on('inputTransformation', (evt, data) => {
// const dataTransfer = data.dataTransfer;
// data.content = editor[sub].data.processor.toView(regexTextToHtml(dataTransfer.getData('text/plain')));
//})
//上傳照片(非CKfinder)配置UploadAdapter
editor[sub].plugins.get('FileRepository').createUploadAdapter = loader => {
console.log(editor[sub].plugins.get('FileRepository'))
return new MyUploadAdapter(loader)
}
//放入原有col- class
$(editor[sub].ui.view.element).css("width", oriWidth);
$(editor[sub].ui.view.element).css("max-width", oriMaxWidth);
resolve();
}
})
.catch(err => {
console.error(err.stack);
resolve();
});
})
})
}
function regexTextToHtml(text) {
let data = text;
data = data.replace(/\r/gm, "");
data = data.replace(/\n\n/gm, "\n");
data = data.replace(/^/gm, "<p>");
data = data.replace(/\n|\n\n/gm, "</p>");
return data;
}
function regexHtmlToText(html) {
let data = html;
data = data.replace(/<p>/gm, "");
data = data.replace(/<\/p>/gm, "\n");
data = data.replace(/&nbsp;/gm, " ");
data = data.replace(/&emsp;/gm, " ");
data = data.replace(/&ensp;/gm, " ");
return data;
}