mirror of
https://github.com/QIDITECH/QIDIStudio.git
synced 2026-01-31 00:48:41 +03:00
174 lines
3.4 KiB
JavaScript
174 lines
3.4 KiB
JavaScript
const {
|
|
ClassicEditor,
|
|
Autosave,
|
|
Essentials,
|
|
Paragraph,
|
|
ImageUtils,
|
|
ImageEditing,
|
|
Link,
|
|
List,
|
|
Alignment,
|
|
Bold,
|
|
Italic,
|
|
Underline,
|
|
AutoLink,
|
|
Heading
|
|
} = window.CKEDITOR;
|
|
|
|
const LICENSE_KEY =
|
|
'GPL';
|
|
|
|
const CKEDITOR_LANGUAGE_MAP = {
|
|
en: 'en',
|
|
zh_CN: 'zh-cn',
|
|
ja_JP: 'ja',
|
|
it_IT: 'it',
|
|
fr_FR: 'fr',
|
|
de_DE: 'de',
|
|
hu_HU: 'hu',
|
|
es_ES: 'es',
|
|
sv_SE: 'sv',
|
|
cs_CZ: 'cs',
|
|
nl_NL: 'nl',
|
|
uk_UA: 'uk',
|
|
ru_RU: 'ru',
|
|
tr_TR: 'tr',
|
|
pt_BR: 'pt-br',
|
|
ko_KR: 'ko',
|
|
pl_PL: 'pl'
|
|
};
|
|
|
|
function detectEditorLanguage() {
|
|
let lang = typeof GetQueryString === 'function' ? GetQueryString('lang') : null;
|
|
const langStorageKey = typeof LANG_COOKIE_NAME !== 'undefined' ? LANG_COOKIE_NAME : 'QIDIWebLang';
|
|
try {
|
|
if (lang && typeof localStorage !== 'undefined') {
|
|
localStorage.setItem(langStorageKey, lang);
|
|
}
|
|
} catch (err) {}
|
|
if (!lang) {
|
|
try {
|
|
if (typeof localStorage !== 'undefined') {
|
|
lang = localStorage.getItem(langStorageKey);
|
|
}
|
|
} catch (err) {
|
|
lang = null;
|
|
}
|
|
}
|
|
if (!lang && typeof navigator !== 'undefined') {
|
|
lang = navigator.language || navigator.userLanguage;
|
|
}
|
|
if (!lang) {
|
|
return 'en';
|
|
}
|
|
const normalizedUnderscore = lang.replace('-', '_');
|
|
if (CKEDITOR_LANGUAGE_MAP[normalizedUnderscore]) {
|
|
return CKEDITOR_LANGUAGE_MAP[normalizedUnderscore];
|
|
}
|
|
if (CKEDITOR_LANGUAGE_MAP[lang]) {
|
|
return CKEDITOR_LANGUAGE_MAP[lang];
|
|
}
|
|
return normalizedUnderscore.replace('_', '-').toLowerCase();
|
|
}
|
|
|
|
const editorLanguage = detectEditorLanguage();
|
|
const script = document.createElement('script');
|
|
script.src = `../include/ckeditor5/translations/${editorLanguage}.umd.js`;
|
|
|
|
const editorConfig = {
|
|
toolbar: {
|
|
items: [
|
|
'heading',
|
|
'|',
|
|
'bold',
|
|
'italic',
|
|
'underline',
|
|
'|',
|
|
'alignment',
|
|
'|',
|
|
'bulletedList',
|
|
'numberedList',
|
|
'|',
|
|
'link',
|
|
'|',
|
|
'undo',
|
|
'redo',
|
|
],
|
|
shouldNotGroupWhenFull: false
|
|
},
|
|
plugins: [Alignment, AutoLink, Autosave, Bold, Essentials, Heading, ImageEditing, ImageUtils, Italic, Link, List, Paragraph, Underline],
|
|
heading: {
|
|
options: [
|
|
{
|
|
model: 'paragraph',
|
|
title: 'Paragraph',
|
|
class: 'ck-heading_paragraph'
|
|
},
|
|
{
|
|
model: 'heading1',
|
|
view: 'h1',
|
|
title: 'Heading 1',
|
|
class: 'ck-heading_heading1'
|
|
},
|
|
{
|
|
model: 'heading2',
|
|
view: 'h2',
|
|
title: 'Heading 2',
|
|
class: 'ck-heading_heading2'
|
|
},
|
|
{
|
|
model: 'heading3',
|
|
view: 'h3',
|
|
title: 'Heading 3',
|
|
class: 'ck-heading_heading3'
|
|
},
|
|
{
|
|
model: 'heading4',
|
|
view: 'h4',
|
|
title: 'Heading 4',
|
|
class: 'ck-heading_heading4'
|
|
},
|
|
{
|
|
model: 'heading5',
|
|
view: 'h5',
|
|
title: 'Heading 5',
|
|
class: 'ck-heading_heading5'
|
|
},
|
|
{
|
|
model: 'heading6',
|
|
view: 'h6',
|
|
title: 'Heading 6',
|
|
class: 'ck-heading_heading6'
|
|
}
|
|
]
|
|
},
|
|
initialData:
|
|
'',
|
|
licenseKey: LICENSE_KEY,
|
|
link: {
|
|
addTargetToExternalLinks: true,
|
|
defaultProtocol: 'https://',
|
|
decorators: {
|
|
toggleDownloadable: {
|
|
mode: 'manual',
|
|
label: 'Downloadable',
|
|
attributes: {
|
|
download: 'file'
|
|
}
|
|
}
|
|
}
|
|
},
|
|
placeholder: '',
|
|
language: editorLanguage
|
|
};
|
|
|
|
script.onload = () => {
|
|
ClassicEditor.create(document.querySelector('#editor'), editorConfig).then( editor => {
|
|
window.projectEditor = editor;
|
|
});
|
|
ClassicEditor.create(document.querySelector('#profile-editor'), editorConfig).then( editor => {
|
|
window.profileEditor = editor;
|
|
});
|
|
};
|
|
|
|
document.head.appendChild(script); |