mirror of
https://github.com/the-djmaze/snappymail.git
synced 2026-08-31 13:09:21 +03:00
Moved CKEditor to be plugin
This commit is contained in:
parent
240b0381f9
commit
af3c79ce80
217 changed files with 467 additions and 8683 deletions
|
|
@ -1,5 +1,3 @@
|
|||
import { createCKEditor } from 'External/CKEditor.js';
|
||||
|
||||
const
|
||||
htmlre = /[&<>"']/g,
|
||||
htmlmap = {
|
||||
|
|
@ -180,11 +178,11 @@ class HtmlEditor {
|
|||
this.onReady && this.onReady();
|
||||
};
|
||||
|
||||
if (window.CKEDITOR) {
|
||||
this.editor = createCKEditor(this.element);
|
||||
this.editor.on('instanceReady', onReady);
|
||||
} else {
|
||||
this.editor = new SquireUI(this.element, this.editor);
|
||||
if (rl.createWYSIWYG) {
|
||||
this.editor = rl.createWYSIWYG(this.element, onReady);
|
||||
}
|
||||
if (!this.editor) {
|
||||
this.editor = new SquireUI(this.element);
|
||||
setTimeout(onReady,1);
|
||||
}
|
||||
|
||||
|
|
|
|||
79
dev/External/CKEditor.js
vendored
79
dev/External/CKEditor.js
vendored
|
|
@ -1,79 +0,0 @@
|
|||
export function createCKEditor(element)
|
||||
{
|
||||
const language = (rl.settings.get('Language') || 'en').toLowerCase(),
|
||||
|
||||
htmlEditorLangsMap = {
|
||||
'ar_sa': 'ar-sa',
|
||||
'pt_br': 'pt-br',
|
||||
'zh_cn': 'zh-cn',
|
||||
};
|
||||
|
||||
const editor = CKEDITOR.appendTo(element, {
|
||||
title: false,
|
||||
stylesSet: false,
|
||||
// customConfig: '',
|
||||
// contentsCss: '',
|
||||
toolbarGroups: [
|
||||
{ name: 'spec' },
|
||||
{ name: 'styles' },
|
||||
{ name: 'basicstyles', groups: ['basicstyles', 'cleanup', 'bidi'] },
|
||||
{ name: 'colors' },
|
||||
{ name: 'paragraph', groups: ['list', 'indent', 'blocks', 'align'] },
|
||||
{ name: 'links' },
|
||||
{ name: 'insert' },
|
||||
{ name: 'document', groups: ['mode', 'document', 'doctools'] },
|
||||
{ name: 'others' }
|
||||
],
|
||||
|
||||
removePlugins: 'liststyle' + (rl.settings.app('allowHtmlEditorBitiButtons') ? '' : ',bidi'),
|
||||
removeButtons: 'Format,Undo,Redo,Cut,Copy,Paste,Anchor,Strike,Subscript,Superscript,Image,SelectAll'
|
||||
+ (rl.settings.app('allowHtmlEditorSourceButton') ? '' : ',Source'),
|
||||
removeDialogTabs: 'link:advanced;link:target;image:advanced;images:advanced',
|
||||
|
||||
extraPlugins: 'plain,signature',
|
||||
|
||||
allowedContent: true,
|
||||
extraAllowedContent: true,
|
||||
|
||||
fillEmptyBlocks: false,
|
||||
// ignoreEmptyParagraph: true,
|
||||
disableNativeSpellChecker: false,
|
||||
|
||||
colorButton_enableAutomatic: false,
|
||||
// colorButton_enableMore: true,
|
||||
|
||||
font_defaultLabel: 'Arial',
|
||||
fontSize_defaultLabel: '13',
|
||||
fontSize_sizes: '10/10px;12/12px;13/13px;14/14px;16/16px;18/18px;20/20px;24/24px;28/28px;36/36px;48/48px',
|
||||
|
||||
enterMode: CKEDITOR.ENTER_BR,
|
||||
shiftEnterMode: CKEDITOR.ENTER_P,
|
||||
language: htmlEditorLangsMap[language] || language.substr(0,2)
|
||||
});
|
||||
|
||||
editor.on('key', event => !(event && event.data && 'Tab' == event.data.key));
|
||||
|
||||
editor.on('drop', event => {
|
||||
const dt = event.data.dataTransfer,
|
||||
id = dt.id,
|
||||
file = dt.getFilesCount() ? dt.getFile(0) : 0;
|
||||
if (file && id && file.type && file.type.match(/^image/i)) {
|
||||
const imageId = `[img=${id}]`,
|
||||
reader = new FileReader();
|
||||
|
||||
reader.onloadend = () => {
|
||||
if (reader.result && 'wysiwyg' === editor.mode) {
|
||||
try {
|
||||
editor.setData(editor.getData().replace(imageId, `<img src="${reader.result}"/>`));
|
||||
} catch (e) {} // eslint-disable-line no-empty
|
||||
}
|
||||
};
|
||||
|
||||
reader.readAsDataURL(file);
|
||||
|
||||
dt.setData('text/html', imageId);
|
||||
}
|
||||
});
|
||||
|
||||
return editor;
|
||||
}
|
||||
|
|
@ -67,6 +67,3 @@
|
|||
@import "Animations.less";
|
||||
|
||||
@import "_End.less";
|
||||
/*
|
||||
@import "_CkeFix.less";
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -1,213 +0,0 @@
|
|||
/*.cke_button__sourcedialog_label {
|
||||
display: none !important;
|
||||
}*/
|
||||
|
||||
.cke_chrome {
|
||||
border: 1px solid #ccc !important;
|
||||
}
|
||||
|
||||
.cke_toolgroup {
|
||||
padding-right: 0 !important;
|
||||
background: #FBFBFB !important;
|
||||
}
|
||||
|
||||
.cke_toolgroup, .cke_combo_button {
|
||||
border: 1px solid #A6A6A6 !important;
|
||||
}
|
||||
|
||||
.cke_top {
|
||||
padding: 2px;
|
||||
box-shadow: none !important;
|
||||
border-bottom: 1px solid #b6b6b6 !important;
|
||||
background: #F0F0F0 !important;
|
||||
}
|
||||
|
||||
.cke_combo_on a.cke_combo_button,
|
||||
.cke_combo_off a.cke_combo_button:hover,
|
||||
.cke_combo_off a.cke_combo_button:focus,
|
||||
.cke_combo_off a.cke_combo_button:active {
|
||||
padding: 1px !important;
|
||||
margin-left: 0 !important;
|
||||
}
|
||||
|
||||
.cke_toolgroup a.cke_button:last-child:after,
|
||||
.cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after {
|
||||
border: none !important;
|
||||
height: 0 !important;
|
||||
width: 0 !important;
|
||||
margin: 0 !important;
|
||||
padding: 0 !important;
|
||||
}
|
||||
|
||||
.cke_button_on {
|
||||
background: #ddd !important;
|
||||
}
|
||||
|
||||
.cke_combo {
|
||||
margin-top: 1px !important;
|
||||
}
|
||||
|
||||
.cke_combo__fontsize {
|
||||
margin-left: 3px !important;
|
||||
.cke_combo_text {
|
||||
width: 40px !important;
|
||||
}
|
||||
}
|
||||
|
||||
.cke_combo_text {
|
||||
line-height: 24px !important;
|
||||
padding-left: 8px !important;
|
||||
}
|
||||
|
||||
.cke_combo_button {
|
||||
background: #FBFBFB !important;
|
||||
}
|
||||
|
||||
.cke_source {
|
||||
font-family: var(--fontMono) !important;
|
||||
padding: 10px !important;
|
||||
padding-right: 0 !important;
|
||||
box-shadow: none !important;
|
||||
}
|
||||
|
||||
.cke_plain {
|
||||
|
||||
background-color: #fff;
|
||||
outline: none;
|
||||
overflow: auto;
|
||||
z-index: 1;
|
||||
margin: 0;
|
||||
border: 0;
|
||||
|
||||
padding: 10px;
|
||||
padding-right: 0;
|
||||
white-space: pre-wrap;
|
||||
font-family: var(--fontMono), monospace;
|
||||
font-size: 13px;
|
||||
line-height: 16px;
|
||||
color: #333;
|
||||
resize: none;
|
||||
|
||||
border-radius: 0;
|
||||
box-shadow: none;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.cke_plain:focus, .cke_source:focus {
|
||||
border: 0;
|
||||
}
|
||||
|
||||
.b-compose .cke_chrome {
|
||||
border-right: 0;
|
||||
border-left: 0;
|
||||
border-bottom: 0;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
.cke_wysiwyg_div {
|
||||
|
||||
padding: 10px !important;
|
||||
font-family: var(--fontSans);
|
||||
font-size: 13px;
|
||||
line-height: 16px;
|
||||
color: #333;
|
||||
|
||||
ul {
|
||||
padding-left: 40px;
|
||||
li {
|
||||
list-style-type: disc !important;
|
||||
}
|
||||
}
|
||||
|
||||
ol {
|
||||
padding-left: 40px;
|
||||
li {
|
||||
list-style-type: decimal !important;
|
||||
}
|
||||
}
|
||||
|
||||
pre, code {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
background: #fff;
|
||||
border: none;
|
||||
border-radius: 0;
|
||||
font-family: var(--fontMono);
|
||||
display: block;
|
||||
word-break: normal;
|
||||
word-wrap: break-word;
|
||||
background-color: #f9f9f9;
|
||||
}
|
||||
|
||||
code {
|
||||
display: inline;
|
||||
padding: 2px 5px;
|
||||
}
|
||||
|
||||
pre {
|
||||
padding: 5px 10px;
|
||||
border-radius: 5px;
|
||||
background-color: #f9f9f9;
|
||||
}
|
||||
|
||||
pre > code {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
blockquote {
|
||||
border: 0;
|
||||
border-left: solid 2px #444;
|
||||
margin: 5px 0 5px 5px;
|
||||
padding-left: 5px;
|
||||
}
|
||||
|
||||
blockquote p {
|
||||
margin: 0 0 10px;
|
||||
font-size: 14px;
|
||||
line-height: 20px;
|
||||
}
|
||||
|
||||
img {
|
||||
vertical-align: bottom;
|
||||
}
|
||||
|
||||
a {
|
||||
color: blue;
|
||||
text-decoration: underline;
|
||||
|
||||
&:visited {
|
||||
color: #609;
|
||||
}
|
||||
&:active {
|
||||
color: red;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.cke_dialog {
|
||||
|
||||
a:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.cke_dialog_ui_labeled_content {
|
||||
margin-top: 5px;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
.cke_dialog_ui_input_select, .cke_dialog_ui_input_text, .cke_dialog_ui_input_textarea {
|
||||
|
||||
box-shadow: none;
|
||||
border-radius: 2px;
|
||||
|
||||
&:focus {
|
||||
outline: 0;
|
||||
border: 1px solid #999;
|
||||
}
|
||||
}
|
||||
|
||||
.cke_dialog_ui_input_select, .cke_dialog_ui_input_text {
|
||||
height: 25px;
|
||||
line-height: 25px;
|
||||
}
|
||||
}
|
||||
|
|
@ -153,12 +153,6 @@ win.rl = {
|
|||
.then(() => Promise.all([loadScript(appData.TemplatesLink), loadScript(appData.LangLink)]))
|
||||
.then(() => loadScript(appData.StaticAppJsLink))
|
||||
.then(() => appData.PluginsLink ? loadScript(appData.PluginsLink) : Promise.resolve())
|
||||
.then(() =>
|
||||
// Enable the old CKEditor?
|
||||
(appData.Auth && appData.StaticEditorJsLink)
|
||||
? loadScript(appData.StaticEditorJsLink)
|
||||
: Promise.resolve()
|
||||
)
|
||||
.then(() => win.__APP_BOOT ? win.__APP_BOOT(showError) : showError())
|
||||
.catch(e => {
|
||||
showError();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue