From f3d0a0e3677535facf806dcb64b230181f6df42c Mon Sep 17 00:00:00 2001 From: Fabian Braun Date: Tue, 22 Mar 2022 13:06:29 +0100 Subject: [PATCH 01/86] Fix: Tests dj4 compatible --- tests/test_plugin.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tests/test_plugin.py b/tests/test_plugin.py index 1a5a89bae..4b75d5f57 100644 --- a/tests/test_plugin.py +++ b/tests/test_plugin.py @@ -9,7 +9,8 @@ from django.template import RequestContext from django.utils.encoding import force_str from django.utils.html import escape -from django.utils.http import urlencode, urlunquote +from urllib.parse import unquote +from django.utils.http import urlencode from cms.api import add_plugin, create_page, create_title from cms.models import CMSPlugin, Page, Title @@ -111,7 +112,7 @@ def get_post_request(self, data): return self.get_request(post_data=data) def get_plugin_id_from_response(self, response): - url = urlunquote(response.url) + url = unquote(response.url) # Ideal case, this looks like: # /en/admin/cms/page/edit-plugin/1/ return re.findall(r'\d+', url)[0] From 01766fc6dff6faecbd64f942acd1551c7c36fa3a Mon Sep 17 00:00:00 2001 From: Fabian Braun Date: Sun, 27 Mar 2022 22:16:57 +0200 Subject: [PATCH 02/86] Feature: Inline editing --- djangocms_text_ckeditor/cms_toolbars.py | 13 + .../js/cms.inline-editor.js | 223 ++++++++++++++++++ djangocms_text_ckeditor/widgets.py | 2 +- 3 files changed, 237 insertions(+), 1 deletion(-) create mode 100644 djangocms_text_ckeditor/cms_toolbars.py create mode 100644 djangocms_text_ckeditor/static/djangocms_text_ckeditor/js/cms.inline-editor.js diff --git a/djangocms_text_ckeditor/cms_toolbars.py b/djangocms_text_ckeditor/cms_toolbars.py new file mode 100644 index 000000000..c508bd7de --- /dev/null +++ b/djangocms_text_ckeditor/cms_toolbars.py @@ -0,0 +1,13 @@ +from cms.cms_toolbars import BasicToolbar, CMSToolbar +from cms.toolbar_pool import toolbar_pool + + +@toolbar_pool.register +class InlineEditingToolbar(CMSToolbar): + class Media: + ... + # css = {"all": ("djangocms_text_ckeditor/css/cms.ckeditor.inline.css",)} + js = ( + "djangocms_text_ckeditor/ckeditor/ckeditor.js", + "djangocms_text_ckeditor/js/cms.inline-editor.js", + ) diff --git a/djangocms_text_ckeditor/static/djangocms_text_ckeditor/js/cms.inline-editor.js b/djangocms_text_ckeditor/static/djangocms_text_ckeditor/js/cms.inline-editor.js new file mode 100644 index 000000000..377b2148c --- /dev/null +++ b/djangocms_text_ckeditor/static/djangocms_text_ckeditor/js/cms.inline-editor.js @@ -0,0 +1,223 @@ +(function ($) { + window.CKEDITOR_BASEPATH = $('[data-ckeditor-basepath]').attr('data-ckeditor-basepath') || + "/djangocms_text_ckeditor/ckeditor_plugins/"; + + // CMS.$ will be passed for $ + /** + * CMS.CKEditor + * + * @description: Adds cms specific plugins to CKEditor + */ + CMS.CKInlineEditor = { + + options: { + // ckeditor default settings, will be overwritten by CKEDITOR_SETTINGS + language: 'en', + skin: 'moono-lisa', + toolbar: [ + ['Undo', 'Redo'], + ['cmsplugins', 'cmswidget', '-', 'ShowBlocks'], + ['Format', 'Styles'], + ['TextColor', 'BGColor', '-', 'PasteText', 'PasteFromWord'], + ['Scayt'], + ['Maximize', ''], + '/', + ['Bold', 'Italic', 'Underline', 'Strike', '-', 'Subscript', 'Superscript', '-', 'RemoveFormat'], + ['JustifyLeft', 'JustifyCenter', 'JustifyRight', 'JustifyBlock'], + ['HorizontalRule'], + ['NumberedList', 'BulletedList'], + ['Outdent', 'Indent', '-', 'Blockquote', '-', 'Link', 'Unlink', '-', 'Table'], + ['Source'] + ], + + allowedContent: true, + toolbarCanCollapse: false, + removePlugins: 'resize', + extraPlugins: '' + }, + + init: function (wrapper, id, url, csrfmiddlewaretoken, settings) { + this.container = wrapper; + this.container.data('ckeditor-initialized', true); + // add additional settings to options + // this.options.toolbar = {}.toolbar; + this.options = $.extend(false, { + settings: settings + }, this.options, {}); + + // add extra plugins that we absolutely must have + // this.options.extraPlugins = this.options.extraPlugins += + // ',cmsplugins,cmswidget,cmsdialog,widget'; + + document.createElement('cms-plugin'); + CKEDITOR.dtd['cms-plugin'] = CKEDITOR.dtd.div; + CKEDITOR.dtd.$inline['cms-plugin'] = 1; + // has to be here, otherwise extra

tags appear + CKEDITOR.dtd.$nonEditable['cms-plugin'] = 1; + CKEDITOR.dtd.$transparent['cms-plugin'] = 1; + CKEDITOR.dtd.body['cms-plugin'] = 1; + + // add additional plugins (autoloads plugins.js) + CKEDITOR.skin.addIcon('cmsplugins', settings.static_url + + '/ckeditor_plugins/cmsplugins/icons/cmsplugins.svg'); + + // create ckeditor + CKEDITOR.disableAutoInline = true; + var editor = CKEDITOR.inline(wrapper[0], this.options); + this.editor = editor; + if(id in CMS.CKInlineEditors) { + CMS.CKInlineEditors[id].editor.destroy(false); + } + CMS.CKInlineEditors[id] = { + csrfmiddlewaretoken: csrfmiddlewaretoken, + url: url, + wrapper: wrapper, + id: id, + editor: editor, + }; + wrapper.on('dblclick', (event) => { + event.stopPropagation(); + }); + wrapper.on('pointerover', (event) => { + event.stopPropagation(); + }); + wrapper.on("blur", function click_outside(event) { + CMS.CKInlineEditor.save_data(id, editor.getData()); + }); + + // add additional styling + CKEDITOR.on('instanceReady', $.proxy(CMS.CKInlineEditor, 'setup')); + }, + + // setup is called after ckeditor has been initialized + setup: function () { + $("link[rel='stylesheet'][type='text/css'][href*='ckeditor'").each( + function (index, element) { + if (!CMS.CKInlineEditor.CSS.includes(element.href)) { + CMS.CKInlineEditor.CSS.push(element.href); + } + } + ); + // auto maximize modal if alone in a modal + var that = this; + var win = window.parent || window; + // 70px is hardcoded to make it more performant. 20px + 20px - paddings, 30px label height + var TOOLBAR_HEIGHT_WITH_PADDINGS = 70; + + + // add css tweks to the editor + this.styles(); + }, + + save_data: function (id, data, action) { + $.post(CMS.CKInlineEditors[id].url, { // send changes + csrfmiddlewaretoken: CMS.CKInlineEditors[id].csrfmiddlewaretoken, + body: data, + _save: "Save" + }, function (response) { + console.log("saved", id); + if (action !== undefined) { + action(); + } + var scripts = $(response).find("script").addClass("cms-ckeditor5-result"); + // $("body").append(scripts); + }).fail(function (error) { + console.log(error); + alert("Error saving data" + error) + }); + }, + + styles: function () { + // add styling to source and fullscreen view + $('.cke_button__maximize, .cke_button__source').parent() + .css('margin-right', 0).parent() + .css('float', 'right'); + }, + + + /** + * @method _repositionDialog + * @private + * @param {CKEDITOR.dialog} dialog instance + */ + _repositionDialog: function (dialog) { + var OFFSET = 80; + + if (!dialog) { + return; + } + var size = dialog.getSize(); + var position = dialog.getPosition(); + var win = CKEDITOR.document.getWindow(); + var viewSize = win.getViewPaneSize(); + var winWidth = viewSize.width; + var winHeight = viewSize.height; + + if (position.x < 0) { + dialog.move(0, position.y); + position.x = 0; + } + + if (position.y < 0) { + dialog.move(position.x, 0); + position.y = 0; + } + + if (position.y + size.height > winHeight) { + dialog.resize(size.width, winHeight - position.y - OFFSET); + } + + if (position.x + size.width > winWidth) { + dialog.resize(winWidth - position.x, size.height); + } + }, + + _initAll: function () { + CMS._plugins.forEach(function (plugin) { + if (plugin[1].plugin_type === "TextPlugin") { + console.log("Load editor for", plugin[1].plugin_id); + var url = plugin[1].urls.edit_plugin, + id = plugin[1].plugin_id, + container_id = "_ck_inline-" + plugin[1].plugin_id; + + $.get(url, {}, function (response) { + // get form incl. csrf token + var csrfmiddlewaretoken = $(response).find('input[name="csrfmiddlewaretoken"]'); + if (csrfmiddlewaretoken) { // success <=> middlewaretoken + var elements = $(".cms-plugin.cms-plugin-" + id) + .removeClass('cms-plugin') + .removeClass("cms-plugin-" + id), + wrapper = elements.wrapAll("

").parent(); + wrapper.addClass('cms-plugin').addClass("cms-plugin-" + id); + CMS.CKInlineEditor.init(wrapper, + id, + url, + csrfmiddlewaretoken.val(), + { + static_url: '/static' + }); + } + }); + } + }); + }, + + _resetInlineEditors: function () { + CMS.CKInlineEditor.CSS.forEach(function (stylefile) { + if($("link[href='"+stylefile+"']").length === 0) { + $("head").append($("")) + } + }); + CMS.CKInlineEditor._initAll(); + } + }; + + + setTimeout(function init() { + CMS.CKInlineEditors = CMS.CKInlineEditors || {}; + CMS.CKInlineEditor.CSS = []; + CMS.CKInlineEditor._initAll(); + }, 0); + $(window).on('cms-content-refresh', CMS.CKInlineEditor._resetInlineEditors); + +})(CMS.$); diff --git a/djangocms_text_ckeditor/widgets.py b/djangocms_text_ckeditor/widgets.py index 0a0b9e0b3..dde637220 100644 --- a/djangocms_text_ckeditor/widgets.py +++ b/djangocms_text_ckeditor/widgets.py @@ -15,7 +15,7 @@ # this path is changed automatically whenever you run `gulp bundle` -PATH_TO_JS = 'djangocms_text_ckeditor/js/dist/bundle-fb7663a06e.cms.ckeditor.min.js' +PATH_TO_JS = 'djangocms_text_ckeditor/js/dist/bundle-6e9d4c54cf.cms.ckeditor.min.js' class TextEditorWidget(forms.Textarea): From 096e2d513ee6b8b6bf279f8966837237006199e5 Mon Sep 17 00:00:00 2001 From: Fabian Braun Date: Sun, 27 Mar 2022 22:52:09 +0200 Subject: [PATCH 03/86] Make flake (8 happy) --- djangocms_text_ckeditor/cms_toolbars.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/djangocms_text_ckeditor/cms_toolbars.py b/djangocms_text_ckeditor/cms_toolbars.py index c508bd7de..509c00108 100644 --- a/djangocms_text_ckeditor/cms_toolbars.py +++ b/djangocms_text_ckeditor/cms_toolbars.py @@ -1,4 +1,4 @@ -from cms.cms_toolbars import BasicToolbar, CMSToolbar +from cms.cms_toolbars import CMSToolbar from cms.toolbar_pool import toolbar_pool From 10bfceb81e70824af861053af93298622d42eac9 Mon Sep 17 00:00:00 2001 From: Fabian Braun Date: Mon, 28 Mar 2022 08:48:06 +0200 Subject: [PATCH 04/86] Fix: Inline editing js only loaded in edit mode. --- djangocms_text_ckeditor/cms_toolbars.py | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/djangocms_text_ckeditor/cms_toolbars.py b/djangocms_text_ckeditor/cms_toolbars.py index 509c00108..6880c87b6 100644 --- a/djangocms_text_ckeditor/cms_toolbars.py +++ b/djangocms_text_ckeditor/cms_toolbars.py @@ -1,13 +1,18 @@ from cms.cms_toolbars import CMSToolbar from cms.toolbar_pool import toolbar_pool - +from django import forms @toolbar_pool.register class InlineEditingToolbar(CMSToolbar): - class Media: - ... - # css = {"all": ("djangocms_text_ckeditor/css/cms.ckeditor.inline.css",)} - js = ( - "djangocms_text_ckeditor/ckeditor/ckeditor.js", - "djangocms_text_ckeditor/js/cms.inline-editor.js", - ) + @property + def media(self): + if self.toolbar.edit_mode_active: + return forms.Media( + js = ( + "djangocms_text_ckeditor/ckeditor/ckeditor.js", + "djangocms_text_ckeditor/js/cms.inline-editor.js", + ) + ) + return forms.Media() + + From f3e8b19b9646b388bee7aa25f69c541af1968a4c Mon Sep 17 00:00:00 2001 From: Fabian Braun Date: Mon, 28 Mar 2022 09:11:54 +0200 Subject: [PATCH 05/86] Fix: Only create InlineEditor for visible elements --- .../js/cms.inline-editor.js | 134 +++++++++--------- 1 file changed, 69 insertions(+), 65 deletions(-) diff --git a/djangocms_text_ckeditor/static/djangocms_text_ckeditor/js/cms.inline-editor.js b/djangocms_text_ckeditor/static/djangocms_text_ckeditor/js/cms.inline-editor.js index 377b2148c..8cd384696 100644 --- a/djangocms_text_ckeditor/static/djangocms_text_ckeditor/js/cms.inline-editor.js +++ b/djangocms_text_ckeditor/static/djangocms_text_ckeditor/js/cms.inline-editor.js @@ -1,6 +1,6 @@ (function ($) { window.CKEDITOR_BASEPATH = $('[data-ckeditor-basepath]').attr('data-ckeditor-basepath') || - "/djangocms_text_ckeditor/ckeditor_plugins/"; + "../ckeditor_plugins/"; // CMS.$ will be passed for $ /** @@ -37,56 +37,58 @@ }, init: function (wrapper, id, url, csrfmiddlewaretoken, settings) { - this.container = wrapper; - this.container.data('ckeditor-initialized', true); - // add additional settings to options - // this.options.toolbar = {}.toolbar; - this.options = $.extend(false, { - settings: settings - }, this.options, {}); - - // add extra plugins that we absolutely must have - // this.options.extraPlugins = this.options.extraPlugins += - // ',cmsplugins,cmswidget,cmsdialog,widget'; - - document.createElement('cms-plugin'); - CKEDITOR.dtd['cms-plugin'] = CKEDITOR.dtd.div; - CKEDITOR.dtd.$inline['cms-plugin'] = 1; - // has to be here, otherwise extra

tags appear - CKEDITOR.dtd.$nonEditable['cms-plugin'] = 1; - CKEDITOR.dtd.$transparent['cms-plugin'] = 1; - CKEDITOR.dtd.body['cms-plugin'] = 1; - - // add additional plugins (autoloads plugins.js) - CKEDITOR.skin.addIcon('cmsplugins', settings.static_url + - '/ckeditor_plugins/cmsplugins/icons/cmsplugins.svg'); - - // create ckeditor - CKEDITOR.disableAutoInline = true; - var editor = CKEDITOR.inline(wrapper[0], this.options); - this.editor = editor; - if(id in CMS.CKInlineEditors) { - CMS.CKInlineEditors[id].editor.destroy(false); - } - CMS.CKInlineEditors[id] = { - csrfmiddlewaretoken: csrfmiddlewaretoken, - url: url, - wrapper: wrapper, - id: id, - editor: editor, - }; - wrapper.on('dblclick', (event) => { + if(wrapper !== undefined ) { + this.container = wrapper; + this.container.data('ckeditor-initialized', true); + // add additional settings to options + // this.options.toolbar = {}.toolbar; + this.options = $.extend(false, { + settings: settings + }, this.options, {}); + + // add extra plugins that we absolutely must have + // this.options.extraPlugins = this.options.extraPlugins += + // ',cmsplugins,cmswidget,cmsdialog,widget'; + + document.createElement('cms-plugin'); + CKEDITOR.dtd['cms-plugin'] = CKEDITOR.dtd.div; + CKEDITOR.dtd.$inline['cms-plugin'] = 1; + // has to be here, otherwise extra

tags appear + CKEDITOR.dtd.$nonEditable['cms-plugin'] = 1; + CKEDITOR.dtd.$transparent['cms-plugin'] = 1; + CKEDITOR.dtd.body['cms-plugin'] = 1; + + // add additional plugins (autoloads plugins.js) + CKEDITOR.skin.addIcon('cmsplugins', settings.static_url + + '/ckeditor_plugins/cmsplugins/icons/cmsplugins.svg'); + + // create ckeditor + CKEDITOR.disableAutoInline = true; + var editor = CKEDITOR.inline(wrapper[0], this.options); + this.editor = editor; + if (id in CMS.CKInlineEditors) { + CMS.CKInlineEditors[id].editor.destroy(false); + } + CMS.CKInlineEditors[id] = { + csrfmiddlewaretoken: csrfmiddlewaretoken, + url: url, + wrapper: wrapper, + id: id, + editor: editor, + }; + wrapper.on('dblclick', (event) => { event.stopPropagation(); }); - wrapper.on('pointerover', (event) => { + wrapper.on('pointerover', (event) => { event.stopPropagation(); }); - wrapper.on("blur", function click_outside(event) { - CMS.CKInlineEditor.save_data(id, editor.getData()); - }); + wrapper.on("blur", function click_outside(event) { + CMS.CKInlineEditor.save_data(id, editor.getData()); + }); - // add additional styling - CKEDITOR.on('instanceReady', $.proxy(CMS.CKInlineEditor, 'setup')); + // add additional styling + CKEDITOR.on('instanceReady', $.proxy(CMS.CKInlineEditor, 'setup')); + } }, // setup is called after ckeditor has been initialized @@ -179,25 +181,27 @@ var url = plugin[1].urls.edit_plugin, id = plugin[1].plugin_id, container_id = "_ck_inline-" + plugin[1].plugin_id; - - $.get(url, {}, function (response) { - // get form incl. csrf token - var csrfmiddlewaretoken = $(response).find('input[name="csrfmiddlewaretoken"]'); - if (csrfmiddlewaretoken) { // success <=> middlewaretoken - var elements = $(".cms-plugin.cms-plugin-" + id) - .removeClass('cms-plugin') - .removeClass("cms-plugin-" + id), - wrapper = elements.wrapAll("

").parent(); - wrapper.addClass('cms-plugin').addClass("cms-plugin-" + id); - CMS.CKInlineEditor.init(wrapper, - id, - url, - csrfmiddlewaretoken.val(), - { - static_url: '/static' - }); - } - }); + var elements = $(".cms-plugin.cms-plugin-" + id); + if (elements.length > 0) { + $.get(url, {}, function (response) { + // get form incl. csrf token + var csrfmiddlewaretoken = $(response).find('input[name="csrfmiddlewaretoken"]'); + if (csrfmiddlewaretoken) { // success <=> middlewaretoken + elements = elements + .removeClass('cms-plugin') + .removeClass("cms-plugin-" + id); + var wrapper = elements.wrapAll("
").parent(); + wrapper.addClass('cms-plugin').addClass("cms-plugin-" + id); + CMS.CKInlineEditor.init(wrapper, + id, + url, + csrfmiddlewaretoken.val(), + { + static_url: '/static' + }); + } + }); + } } }); }, From 94d67cb05d911bc8b8fabc95b02102b790e7b12a Mon Sep 17 00:00:00 2001 From: Fabian Braun Date: Mon, 28 Mar 2022 15:06:50 +0200 Subject: [PATCH 06/86] Fix: Keep child plugins in tact while inline editing --- djangocms_text_ckeditor/cms_toolbars.py | 8 +- .../js/cms.ckeditor.js | 8 +- .../{cms.inline-editor.js => cms.inline.js} | 37 +++++---- ... => bundle-7a07481198.cms.ckeditor.min.js} | 3 +- .../cms/plugins/widgets/ckeditor.html | 77 +++++++++++-------- djangocms_text_ckeditor/widgets.py | 2 +- gulpfile.js | 1 + 7 files changed, 80 insertions(+), 56 deletions(-) rename djangocms_text_ckeditor/static/djangocms_text_ckeditor/js/{cms.inline-editor.js => cms.inline.js} (84%) rename djangocms_text_ckeditor/static/djangocms_text_ckeditor/js/dist/{bundle-fb7663a06e.cms.ckeditor.min.js => bundle-7a07481198.cms.ckeditor.min.js} (99%) diff --git a/djangocms_text_ckeditor/cms_toolbars.py b/djangocms_text_ckeditor/cms_toolbars.py index 6880c87b6..2c8a6f312 100644 --- a/djangocms_text_ckeditor/cms_toolbars.py +++ b/djangocms_text_ckeditor/cms_toolbars.py @@ -1,6 +1,8 @@ from cms.cms_toolbars import CMSToolbar from cms.toolbar_pool import toolbar_pool from django import forms +from .widgets import PATH_TO_JS + @toolbar_pool.register class InlineEditingToolbar(CMSToolbar): @@ -8,11 +10,7 @@ class InlineEditingToolbar(CMSToolbar): def media(self): if self.toolbar.edit_mode_active: return forms.Media( - js = ( - "djangocms_text_ckeditor/ckeditor/ckeditor.js", - "djangocms_text_ckeditor/js/cms.inline-editor.js", - ) + js=(PATH_TO_JS,) ) return forms.Media() - diff --git a/djangocms_text_ckeditor/static/djangocms_text_ckeditor/js/cms.ckeditor.js b/djangocms_text_ckeditor/static/djangocms_text_ckeditor/js/cms.ckeditor.js index a0049fa71..3f1388808 100644 --- a/djangocms_text_ckeditor/static/djangocms_text_ckeditor/js/cms.ckeditor.js +++ b/djangocms_text_ckeditor/static/djangocms_text_ckeditor/js/cms.ckeditor.js @@ -65,6 +65,9 @@ this.options.extraPlugins = this.options.extraPlugins += ',cmsplugins,cmswidget,cmsdialog,cmsresize,widget'; + CMS.CKEditor = CMS.CKEditor || {}; + CMS.CKEditor.static_url = this.options.settings.static_url; + document.createElement('cms-plugin'); CKEDITOR.dtd['cms-plugin'] = CKEDITOR.dtd.div; CKEDITOR.dtd.$inline['cms-plugin'] = 1; @@ -91,7 +94,7 @@ var that = this; var win = window.parent || window; // 70px is hardcoded to make it more performant. 20px + 20px - paddings, 30px label height - var TOOLBAR_HEIGHT_WITH_PADDINGS = 70; + var TOOLBAR_HEIGHT_WITH_PADDINGS = 63; if (this._isAloneInModal()) { that.editor.resize('100%', win.CMS.$('.cms-modal-frame').height() - TOOLBAR_HEIGHT_WITH_PADDINGS); @@ -191,6 +194,9 @@ _initAll: function () { var dynamics = []; + if (!window._cmsCKEditors) { + return; + } window._cmsCKEditors.forEach(function (editorConfig) { var selector = editorConfig[0]; diff --git a/djangocms_text_ckeditor/static/djangocms_text_ckeditor/js/cms.inline-editor.js b/djangocms_text_ckeditor/static/djangocms_text_ckeditor/js/cms.inline.js similarity index 84% rename from djangocms_text_ckeditor/static/djangocms_text_ckeditor/js/cms.inline-editor.js rename to djangocms_text_ckeditor/static/djangocms_text_ckeditor/js/cms.inline.js index 8cd384696..fe2975b6a 100644 --- a/djangocms_text_ckeditor/static/djangocms_text_ckeditor/js/cms.inline-editor.js +++ b/djangocms_text_ckeditor/static/djangocms_text_ckeditor/js/cms.inline.js @@ -1,6 +1,6 @@ (function ($) { window.CKEDITOR_BASEPATH = $('[data-ckeditor-basepath]').attr('data-ckeditor-basepath') || - "../ckeditor_plugins/"; + "/static/djangocms_text_ckeditor/ckeditor/"; // CMS.$ will be passed for $ /** @@ -14,7 +14,7 @@ // ckeditor default settings, will be overwritten by CKEDITOR_SETTINGS language: 'en', skin: 'moono-lisa', - toolbar: [ + toolbar_CMS: [ ['Undo', 'Redo'], ['cmsplugins', 'cmswidget', '-', 'ShowBlocks'], ['Format', 'Styles'], @@ -29,7 +29,7 @@ ['Outdent', 'Indent', '-', 'Blockquote', '-', 'Link', 'Unlink', '-', 'Table'], ['Source'] ], - + toolbar: "CMS", allowedContent: true, toolbarCanCollapse: false, removePlugins: 'resize', @@ -45,10 +45,12 @@ this.options = $.extend(false, { settings: settings }, this.options, {}); - // add extra plugins that we absolutely must have // this.options.extraPlugins = this.options.extraPlugins += - // ',cmsplugins,cmswidget,cmsdialog,widget'; + // ',cmsplugins,cmswidget,cmsdialog,widget'; + + CMS.CKEditor = CMS.CKEditor || {}; + CMS.CKEditor.static_url = this.options.settings.static_url; document.createElement('cms-plugin'); CKEDITOR.dtd['cms-plugin'] = CKEDITOR.dtd.div; @@ -76,10 +78,10 @@ id: id, editor: editor, }; - wrapper.on('dblclick', (event) => { + wrapper.on('dblclick', function (event) { event.stopPropagation(); }); - wrapper.on('pointerover', (event) => { + wrapper.on('pointerover', function (event) { event.stopPropagation(); }); wrapper.on("blur", function click_outside(event) { @@ -117,7 +119,6 @@ body: data, _save: "Save" }, function (response) { - console.log("saved", id); if (action !== undefined) { action(); } @@ -177,7 +178,6 @@ _initAll: function () { CMS._plugins.forEach(function (plugin) { if (plugin[1].plugin_type === "TextPlugin") { - console.log("Load editor for", plugin[1].plugin_id); var url = plugin[1].urls.edit_plugin, id = plugin[1].plugin_id, container_id = "_ck_inline-" + plugin[1].plugin_id; @@ -185,20 +185,29 @@ if (elements.length > 0) { $.get(url, {}, function (response) { // get form incl. csrf token - var csrfmiddlewaretoken = $(response).find('input[name="csrfmiddlewaretoken"]'); + var responseDOM = $(response); + var csrfmiddlewaretoken = responseDOM.find('input[name="csrfmiddlewaretoken"]'); + var content = responseDOM.find('textarea[name="body"]'); + window.CKEDITOR_BASEPATH = responseDOM.find('[data-ckeditor-basepath]').attr('data-ckeditor-basepath'); if (csrfmiddlewaretoken) { // success <=> middlewaretoken elements = elements .removeClass('cms-plugin') .removeClass("cms-plugin-" + id); var wrapper = elements.wrapAll("
").parent(); wrapper.addClass('cms-plugin').addClass("cms-plugin-" + id); - CMS.CKInlineEditor.init(wrapper, + wrapper.html(content.val()); + var settings = {}, + settings_script_tag = responseDOM.find(".ck-settings")[0]; + for (var attr in settings_script_tag.dataset) { + settings[attr] = settings_script_tag.dataset[attr]; + if (attr === "lang" || attr === "plugins") { + settings[attr] = JSON.parse(settings[attr]) + } + } CMS.CKInlineEditor.init(wrapper, id, url, csrfmiddlewaretoken.val(), - { - static_url: '/static' - }); + settings); } }); } diff --git a/djangocms_text_ckeditor/static/djangocms_text_ckeditor/js/dist/bundle-fb7663a06e.cms.ckeditor.min.js b/djangocms_text_ckeditor/static/djangocms_text_ckeditor/js/dist/bundle-7a07481198.cms.ckeditor.min.js similarity index 99% rename from djangocms_text_ckeditor/static/djangocms_text_ckeditor/js/dist/bundle-fb7663a06e.cms.ckeditor.min.js rename to djangocms_text_ckeditor/static/djangocms_text_ckeditor/js/dist/bundle-7a07481198.cms.ckeditor.min.js index 1d9faad30..aabfb39fc 100644 --- a/djangocms_text_ckeditor/static/djangocms_text_ckeditor/js/dist/bundle-fb7663a06e.cms.ckeditor.min.js +++ b/djangocms_text_ckeditor/static/djangocms_text_ckeditor/js/dist/bundle-7a07481198.cms.ckeditor.min.js @@ -1,7 +1,8 @@ (function ($) { $(function () { -!function(t){window.CKEDITOR_BASEPATH=t("[data-ckeditor-basepath]").attr("data-ckeditor-basepath"),CMS.CKEditor={options:{language:"en",skin:"moono-lisa",toolbar_CMS:[["Undo","Redo"],["cmsplugins","cmswidget","-","ShowBlocks"],["Format","Styles"],["TextColor","BGColor","-","PasteText","PasteFromWord"],["Scayt"],["Maximize",""],"/",["Bold","Italic","Underline","Strike","-","Subscript","Superscript","-","RemoveFormat"],["JustifyLeft","JustifyCenter","JustifyRight","JustifyBlock"],["HorizontalRule"],["NumberedList","BulletedList"],["Outdent","Indent","-","Blockquote","-","Link","Unlink","-","Table"],["Source"]],toolbar_HTMLField:[["Undo","Redo"],["ShowBlocks"],["Format","Styles"],["TextColor","BGColor","-","PasteText","PasteFromWord"],["Scayt"],["Maximize",""],"/",["Bold","Italic","Underline","Strike","-","Subscript","Superscript","-","RemoveFormat"],["JustifyLeft","JustifyCenter","JustifyRight","JustifyBlock"],["HorizontalRule"],["Link","Unlink"],["NumberedList","BulletedList"],["Outdent","Indent","-","Blockqote","-","Link","Unlink","-","Table"],["Source"]],allowedContent:!0,toolbarCanCollapse:!1,removePlugins:"resize",extraPlugins:""},init:function(i,e,o){t("#"+i).length>0&&(this.container=t("#"+i),this.container.data("ckeditor-initialized",!0),this.options.toolbar=o.toolbar,this.options=t.extend(!1,{settings:o},this.options,e),this.options.extraPlugins=this.options.extraPlugins+=",cmsplugins,cmswidget,cmsdialog,cmsresize,widget",document.createElement("cms-plugin"),CKEDITOR.dtd["cms-plugin"]=CKEDITOR.dtd.div,CKEDITOR.dtd.$inline["cms-plugin"]=1,CKEDITOR.dtd.$nonEditable["cms-plugin"]=1,CKEDITOR.dtd.$transparent["cms-plugin"]=1,CKEDITOR.dtd.body["cms-plugin"]=1,CKEDITOR.skin.addIcon("cmsplugins",o.static_url+"/ckeditor_plugins/cmsplugins/icons/cmsplugins.svg"),this.editor=CKEDITOR.replace(i,this.options),CKEDITOR.on("instanceReady",t.proxy(CMS.CKEditor,"setup")))},setup:function(){var i=this,e=window.parent||window;this._isAloneInModal()&&(i.editor.resize("100%",e.CMS.$(".cms-modal-frame").height()-70),this.editor.execCommand("maximize"),t(window).on("resize.ckeditor",function(){i._repositionDialog(CKEDITOR.dialog.getCurrent(),e)}).trigger("resize.ckeditor"),e.CMS.API.Helpers.addEventListener("modal-maximized modal-restored",function(){try{t(".cke_maximized").length||(i.editor.resize("100%",e.CMS.$(".cms-modal-frame").height()-70),setTimeout(function(){i._repositionDialog(CKEDITOR.dialog.getCurrent(),e)},0))}catch(t){}})),this.styles(),this._resizing()},styles:function(){t(".cke_button__maximize, .cke_button__source").parent().css("margin-right",0).parent().css("float","right")},_resizing:function(){t(document).on("pointerdown",".cms-ckeditor-resizer",function(i){i.preventDefault();var e=new CMS.$.Event("mousedown");t.extend(e,{screenX:i.originalEvent.screenX,screenY:i.originalEvent.screenY}),t(this).trigger(e)})},_isAloneInModal:function(){var t=this.container.closest("body");return t.is(".app-djangocms_text_ckeditor.model-text")||t.is(".djangocms_text_ckeditor-text")},_repositionDialog:function(t){if(t){var i=t.getSize(),e=t.getPosition(),o=CKEDITOR.document.getWindow(),n=o.getViewPaneSize(),s=n.width,r=n.height;e.x<0&&(t.move(0,e.y),e.x=0),e.y<0&&(t.move(e.x,0),e.y=0),e.y+i.height>r&&t.resize(i.width,r-e.y-80),e.x+i.width>s&&t.resize(s-e.x,i.height)}},_initAll:function(){var i=[];window._cmsCKEditors.forEach(function(t){t[0].match(/__prefix__/)?i.push(t):CMS.CKEditor.init(t[0],t[1],t[2])}),t(".add-row a").on("click",function(){t(".CMS_CKEditor").each(function(e,o){var n=t(o);if(!n.data("ckeditor-initialized")){var s=n.attr("id");i.forEach(function(t){var i=t[0],e=new RegExp(i.replace("__prefix__","\\d+"));s.match(e)&&CMS.CKEditor.init(s,t[1],t[2])})}})})}},setTimeout(function(){CMS.CKEditor._initAll()},0)}(CMS.$); +!function(t){window.CKEDITOR_BASEPATH=t("[data-ckeditor-basepath]").attr("data-ckeditor-basepath"),CMS.CKEditor={options:{language:"en",skin:"moono-lisa",toolbar_CMS:[["Undo","Redo"],["cmsplugins","cmswidget","-","ShowBlocks"],["Format","Styles"],["TextColor","BGColor","-","PasteText","PasteFromWord"],["Scayt"],["Maximize",""],"/",["Bold","Italic","Underline","Strike","-","Subscript","Superscript","-","RemoveFormat"],["JustifyLeft","JustifyCenter","JustifyRight","JustifyBlock"],["HorizontalRule"],["NumberedList","BulletedList"],["Outdent","Indent","-","Blockquote","-","Link","Unlink","-","Table"],["Source"]],toolbar_HTMLField:[["Undo","Redo"],["ShowBlocks"],["Format","Styles"],["TextColor","BGColor","-","PasteText","PasteFromWord"],["Scayt"],["Maximize",""],"/",["Bold","Italic","Underline","Strike","-","Subscript","Superscript","-","RemoveFormat"],["JustifyLeft","JustifyCenter","JustifyRight","JustifyBlock"],["HorizontalRule"],["Link","Unlink"],["NumberedList","BulletedList"],["Outdent","Indent","-","Blockqote","-","Link","Unlink","-","Table"],["Source"]],allowedContent:!0,toolbarCanCollapse:!1,removePlugins:"resize",extraPlugins:""},init:function(i,e,o){t("#"+i).length>0&&(this.container=t("#"+i),this.container.data("ckeditor-initialized",!0),this.options.toolbar=o.toolbar,this.options=t.extend(!1,{settings:o},this.options,e),this.options.extraPlugins=this.options.extraPlugins+=",cmsplugins,cmswidget,cmsdialog,cmsresize,widget",CMS.CKEditor=CMS.CKEditor||{},CMS.CKEditor.static_url=this.options.settings.static_url,document.createElement("cms-plugin"),CKEDITOR.dtd["cms-plugin"]=CKEDITOR.dtd.div,CKEDITOR.dtd.$inline["cms-plugin"]=1,CKEDITOR.dtd.$nonEditable["cms-plugin"]=1,CKEDITOR.dtd.$transparent["cms-plugin"]=1,CKEDITOR.dtd.body["cms-plugin"]=1,CKEDITOR.skin.addIcon("cmsplugins",o.static_url+"/ckeditor_plugins/cmsplugins/icons/cmsplugins.svg"),this.editor=CKEDITOR.replace(i,this.options),CKEDITOR.on("instanceReady",t.proxy(CMS.CKEditor,"setup")))},setup:function(){var i=this,e=window.parent||window;this._isAloneInModal()&&(i.editor.resize("100%",e.CMS.$(".cms-modal-frame").height()-63),this.editor.execCommand("maximize"),t(window).on("resize.ckeditor",function(){i._repositionDialog(CKEDITOR.dialog.getCurrent(),e)}).trigger("resize.ckeditor"),e.CMS.API.Helpers.addEventListener("modal-maximized modal-restored",function(){try{t(".cke_maximized").length||(i.editor.resize("100%",e.CMS.$(".cms-modal-frame").height()-63),setTimeout(function(){i._repositionDialog(CKEDITOR.dialog.getCurrent(),e)},0))}catch(t){}})),this.styles(),this._resizing()},styles:function(){t(".cke_button__maximize, .cke_button__source").parent().css("margin-right",0).parent().css("float","right")},_resizing:function(){t(document).on("pointerdown",".cms-ckeditor-resizer",function(i){i.preventDefault();var e=new CMS.$.Event("mousedown");t.extend(e,{screenX:i.originalEvent.screenX,screenY:i.originalEvent.screenY}),t(this).trigger(e)})},_isAloneInModal:function(){var t=this.container.closest("body");return t.is(".app-djangocms_text_ckeditor.model-text")||t.is(".djangocms_text_ckeditor-text")},_repositionDialog:function(t){if(t){var i=t.getSize(),e=t.getPosition(),o=CKEDITOR.document.getWindow(),n=o.getViewPaneSize(),s=n.width,r=n.height;e.x<0&&(t.move(0,e.y),e.x=0),e.y<0&&(t.move(e.x,0),e.y=0),e.y+i.height>r&&t.resize(i.width,r-e.y-80),e.x+i.width>s&&t.resize(s-e.x,i.height)}},_initAll:function(){var i=[];window._cmsCKEditors&&(window._cmsCKEditors.forEach(function(t){t[0].match(/__prefix__/)?i.push(t):CMS.CKEditor.init(t[0],t[1],t[2])}),t(".add-row a").on("click",function(){t(".CMS_CKEditor").each(function(e,o){var n=t(o);if(!n.data("ckeditor-initialized")){var s=n.attr("id");i.forEach(function(t){var i=t[0],e=new RegExp(i.replace("__prefix__","\\d+"));s.match(e)&&CMS.CKEditor.init(s,t[1],t[2])})}})}))}},setTimeout(function(){CMS.CKEditor._initAll()},0)}(CMS.$); +!function(t){window.CKEDITOR_BASEPATH=t("[data-ckeditor-basepath]").attr("data-ckeditor-basepath")||"/static/djangocms_text_ckeditor/ckeditor/",CMS.CKInlineEditor={options:{language:"en",skin:"moono-lisa",toolbar_CMS:[["Undo","Redo"],["cmsplugins","cmswidget","-","ShowBlocks"],["Format","Styles"],["TextColor","BGColor","-","PasteText","PasteFromWord"],["Scayt"],["Maximize",""],"/",["Bold","Italic","Underline","Strike","-","Subscript","Superscript","-","RemoveFormat"],["JustifyLeft","JustifyCenter","JustifyRight","JustifyBlock"],["HorizontalRule"],["NumberedList","BulletedList"],["Outdent","Indent","-","Blockquote","-","Link","Unlink","-","Table"],["Source"]],toolbar:"CMS",allowedContent:!0,toolbarCanCollapse:!1,removePlugins:"resize",extraPlugins:""},init:function(i,n,e,o,s){if(void 0!==i){this.container=i,this.container.data("ckeditor-initialized",!0),this.options=t.extend(!1,{settings:s},this.options,{}),CMS.CKEditor=CMS.CKEditor||{},CMS.CKEditor.static_url=this.options.settings.static_url,document.createElement("cms-plugin"),CKEDITOR.dtd["cms-plugin"]=CKEDITOR.dtd.div,CKEDITOR.dtd.$inline["cms-plugin"]=1,CKEDITOR.dtd.$nonEditable["cms-plugin"]=1,CKEDITOR.dtd.$transparent["cms-plugin"]=1,CKEDITOR.dtd.body["cms-plugin"]=1,CKEDITOR.skin.addIcon("cmsplugins",s.static_url+"/ckeditor_plugins/cmsplugins/icons/cmsplugins.svg"),CKEDITOR.disableAutoInline=!0;var r=CKEDITOR.inline(i[0],this.options);this.editor=r,n in CMS.CKInlineEditors&&CMS.CKInlineEditors[n].editor.destroy(!1),CMS.CKInlineEditors[n]={csrfmiddlewaretoken:o,url:e,wrapper:i,id:n,editor:r},i.on("dblclick",function(t){t.stopPropagation()}),i.on("pointerover",function(t){t.stopPropagation()}),i.on("blur",function(t){CMS.CKInlineEditor.save_data(n,r.getData())}),CKEDITOR.on("instanceReady",t.proxy(CMS.CKInlineEditor,"setup"))}},setup:function(){t("link[rel='stylesheet'][type='text/css'][href*='ckeditor'").each(function(t,i){CMS.CKInlineEditor.CSS.includes(i.href)||CMS.CKInlineEditor.CSS.push(i.href)});window.parent||window;this.styles()},save_data:function(i,n,e){t.post(CMS.CKInlineEditors[i].url,{csrfmiddlewaretoken:CMS.CKInlineEditors[i].csrfmiddlewaretoken,body:n,_save:"Save"},function(i){void 0!==e&&e();t(i).find("script").addClass("cms-ckeditor5-result")}).fail(function(t){console.log(t),alert("Error saving data"+t)})},styles:function(){t(".cke_button__maximize, .cke_button__source").parent().css("margin-right",0).parent().css("float","right")},_repositionDialog:function(t){if(t){var i=t.getSize(),n=t.getPosition(),e=CKEDITOR.document.getWindow(),o=e.getViewPaneSize(),s=o.width,r=o.height;n.x<0&&(t.move(0,n.y),n.x=0),n.y<0&&(t.move(n.x,0),n.y=0),n.y+i.height>r&&t.resize(i.width,r-n.y-80),n.x+i.width>s&&t.resize(s-n.x,i.height)}},_initAll:function(){CMS._plugins.forEach(function(i){if("TextPlugin"===i[1].plugin_type){var n=i[1].urls.edit_plugin,e=i[1].plugin_id,o=(i[1].plugin_id,t(".cms-plugin.cms-plugin-"+e));o.length>0&&t.get(n,{},function(i){var s=t(i),r=s.find('input[name="csrfmiddlewaretoken"]'),l=s.find('textarea[name="body"]');if(window.CKEDITOR_BASEPATH=s.find("[data-ckeditor-basepath]").attr("data-ckeditor-basepath"),r){o=o.removeClass("cms-plugin").removeClass("cms-plugin-"+e);var d=o.wrapAll("
").parent();d.addClass("cms-plugin").addClass("cms-plugin-"+e),d.html(l.val());var a={},c=s.find(".ck-settings")[0];for(var u in c.dataset)a[u]=c.dataset[u],"lang"!==u&&"plugins"!==u||(a[u]=JSON.parse(a[u]));CMS.CKInlineEditor.init(d,e,n,r.val(),a)}})}})},_resetInlineEditors:function(){CMS.CKInlineEditor.CSS.forEach(function(i){0===t("link[href='"+i+"']").length&&t("head").append(t(""))}),CMS.CKInlineEditor._initAll()}},setTimeout(function(){CMS.CKInlineEditors=CMS.CKInlineEditors||{},CMS.CKInlineEditor.CSS=[],CMS.CKInlineEditor._initAll()},0),t(window).on("cms-content-refresh",CMS.CKInlineEditor._resetInlineEditors)}(CMS.$); /* Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license/ diff --git a/djangocms_text_ckeditor/templates/cms/plugins/widgets/ckeditor.html b/djangocms_text_ckeditor/templates/cms/plugins/widgets/ckeditor.html index 6626fe70a..621681ec8 100644 --- a/djangocms_text_ckeditor/templates/cms/plugins/widgets/ckeditor.html +++ b/djangocms_text_ckeditor/templates/cms/plugins/widgets/ckeditor.html @@ -1,44 +1,53 @@ {% load i18n l10n static cms_static sekizai_tags %} - diff --git a/djangocms_text_ckeditor/widgets.py b/djangocms_text_ckeditor/widgets.py index dde637220..192e2a9c7 100644 --- a/djangocms_text_ckeditor/widgets.py +++ b/djangocms_text_ckeditor/widgets.py @@ -15,7 +15,7 @@ # this path is changed automatically whenever you run `gulp bundle` -PATH_TO_JS = 'djangocms_text_ckeditor/js/dist/bundle-6e9d4c54cf.cms.ckeditor.min.js' +PATH_TO_JS = 'djangocms_text_ckeditor/js/dist/bundle-7a07481198.cms.ckeditor.min.js' class TextEditorWidget(forms.Textarea): diff --git a/gulpfile.js b/gulpfile.js index 2bc1dceab..4616cceed 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -50,6 +50,7 @@ const PROJECT_PATTERNS = { const JS_BUNDLE = [ PROJECT_PATH.js + '/pre.js', PROJECT_PATH.js + '/cms.ckeditor.js', + PROJECT_PATH.js + '/cms.inline.js', PROJECT_PATH.js + '/../ckeditor/ckeditor.js', PROJECT_PATH.js + '/../ckeditor_plugins/cmswidget/plugin.js', PROJECT_PATH.js + '/../ckeditor_plugins/cmsdialog/plugin.js', From 4d7149257f0139dc21f0e44b6f3811b96d19c5cb Mon Sep 17 00:00:00 2001 From: Fabian Braun Date: Mon, 28 Mar 2022 15:49:14 +0200 Subject: [PATCH 07/86] Fix: Tests --- tests/test_widget.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/test_widget.py b/tests/test_widget.py index 488d0e18e..274ea3316 100644 --- a/tests/test_widget.py +++ b/tests/test_widget.py @@ -28,10 +28,10 @@ def test_sub_plugin_config(self): with self.login_user_context(self.user): response = self.client.get(endpoint) - self.assertContains(response, "group: 'Extra'") - self.assertContains(response, "'title': 'Add a link'") - self.assertContains(response, "group: 'Generic'") - self.assertContains(response, "'title': 'Image'") + self.assertContains(response, '"group": "Extra"') + self.assertContains(response, '"title": "Add a link"') + self.assertContains(response, '"group": "Generic"') + self.assertContains(response, '"title": "Image"') def test_plugin_edit(self): page = create_page(title='pagina', template='page.html', language='en') From 41a0bfc75f85f074af98597d7626d7b2b0fce382 Mon Sep 17 00:00:00 2001 From: Fabian Braun Date: Mon, 28 Mar 2022 15:52:08 +0200 Subject: [PATCH 08/86] Fix: Flake8 and isort --- djangocms_text_ckeditor/cms_toolbars.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/djangocms_text_ckeditor/cms_toolbars.py b/djangocms_text_ckeditor/cms_toolbars.py index 2c8a6f312..e2fcac6bc 100644 --- a/djangocms_text_ckeditor/cms_toolbars.py +++ b/djangocms_text_ckeditor/cms_toolbars.py @@ -1,6 +1,8 @@ +from django import forms + from cms.cms_toolbars import CMSToolbar from cms.toolbar_pool import toolbar_pool -from django import forms + from .widgets import PATH_TO_JS @@ -13,4 +15,3 @@ def media(self): js=(PATH_TO_JS,) ) return forms.Media() - From 80ca9478a945e976a526ef890ce4608907152079 Mon Sep 17 00:00:00 2001 From: Fabian Braun Date: Wed, 30 Mar 2022 20:44:54 +0200 Subject: [PATCH 09/86] Fix: Add editor condig to dom using toolbar --- djangocms_text_ckeditor/cms_toolbars.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/djangocms_text_ckeditor/cms_toolbars.py b/djangocms_text_ckeditor/cms_toolbars.py index e2fcac6bc..c8466cd65 100644 --- a/djangocms_text_ckeditor/cms_toolbars.py +++ b/djangocms_text_ckeditor/cms_toolbars.py @@ -1,4 +1,5 @@ from django import forms +from cms.toolbar.items import BaseItem from cms.cms_toolbars import CMSToolbar from cms.toolbar_pool import toolbar_pool @@ -6,6 +7,14 @@ from .widgets import PATH_TO_JS +class InlineEditingItem(BaseItem): + """Make ckeditor config available for inline editing""" + def render(self): + return mark_safe( + f'') + + @toolbar_pool.register class InlineEditingToolbar(CMSToolbar): @property @@ -15,3 +24,6 @@ def media(self): js=(PATH_TO_JS,) ) return forms.Media() + + def populate(self): + self.toolbar.add_item(InlineEditingItem(), position=None) From 49ea26899a910c460808e92aee2f9139ae3f0fee Mon Sep 17 00:00:00 2001 From: Fabian Braun Date: Thu, 31 Mar 2022 20:39:01 +0200 Subject: [PATCH 10/86] Refactor: unify ckeditor management --- djangocms_text_ckeditor/cms_toolbars.py | 4 +- .../ckeditor/build-config.js | 4 +- .../ckeditor/ckeditor.js | 2 +- .../ckeditor/skins/moono-lisa/dialog.css | 3 +- .../ckeditor/skins/moono-lisa/dialog_ie.css | 3 +- .../ckeditor/skins/moono-lisa/dialog_ie8.css | 3 +- .../skins/moono-lisa/dialog_iequirks.css | 3 +- .../ckeditor/skins/moono-lisa/editor.css | 3 +- .../skins/moono-lisa/editor_gecko.css | 3 +- .../ckeditor/skins/moono-lisa/editor_ie.css | 3 +- .../ckeditor/skins/moono-lisa/editor_ie8.css | 3 +- .../skins/moono-lisa/editor_iequirks.css | 3 +- .../cmsplugins/icons/cmsplugins.svg | 2 +- .../ckeditor_plugins/cmsplugins/plugin.js | 4 +- .../js/cms.ckeditor-old.js | 335 ++++++++++++++++++ .../js/cms.ckeditor.js | 236 +++++++++--- .../djangocms_text_ckeditor/js/cms.inline.js | 4 +- ... => bundle-00276cc2c0.cms.ckeditor.min.js} | 8 +- .../cms/plugins/widgets/ckeditor.html | 12 +- djangocms_text_ckeditor/widgets.py | 2 +- gulpfile.js | 1 - 21 files changed, 570 insertions(+), 71 deletions(-) create mode 100644 djangocms_text_ckeditor/static/djangocms_text_ckeditor/js/cms.ckeditor-old.js rename djangocms_text_ckeditor/static/djangocms_text_ckeditor/js/dist/{bundle-7a07481198.cms.ckeditor.min.js => bundle-00276cc2c0.cms.ckeditor.min.js} (97%) diff --git a/djangocms_text_ckeditor/cms_toolbars.py b/djangocms_text_ckeditor/cms_toolbars.py index c8466cd65..9eb6df6f6 100644 --- a/djangocms_text_ckeditor/cms_toolbars.py +++ b/djangocms_text_ckeditor/cms_toolbars.py @@ -3,7 +3,9 @@ from cms.cms_toolbars import CMSToolbar from cms.toolbar_pool import toolbar_pool +from django.utils.safestring import mark_safe +from . import settings from .widgets import PATH_TO_JS @@ -11,7 +13,7 @@ class InlineEditingItem(BaseItem): """Make ckeditor config available for inline editing""" def render(self): return mark_safe( - f'') diff --git a/djangocms_text_ckeditor/static/djangocms_text_ckeditor/ckeditor/build-config.js b/djangocms_text_ckeditor/static/djangocms_text_ckeditor/ckeditor/build-config.js index 6d562ff93..07e1d96ff 100644 --- a/djangocms_text_ckeditor/static/djangocms_text_ckeditor/ckeditor/build-config.js +++ b/djangocms_text_ckeditor/static/djangocms_text_ckeditor/ckeditor/build-config.js @@ -71,7 +71,7 @@ var CKBUILDER_CONFIG = { 'entities' : 1, 'filebrowser' : 1, 'find' : 1, - 'flash' : 1, +// 'flash' : 1, 'floatingspace' : 1, 'font' : 1, 'format' : 1, @@ -187,4 +187,4 @@ var CKBUILDER_CONFIG = { 'zh' : 1, 'zh-cn' : 1 } -}; \ No newline at end of file +}; diff --git a/djangocms_text_ckeditor/static/djangocms_text_ckeditor/ckeditor/ckeditor.js b/djangocms_text_ckeditor/static/djangocms_text_ckeditor/ckeditor/ckeditor.js index cf1ba9334..b3ec627e6 100644 --- a/djangocms_text_ckeditor/static/djangocms_text_ckeditor/ckeditor/ckeditor.js +++ b/djangocms_text_ckeditor/static/djangocms_text_ckeditor/ckeditor/ckeditor.js @@ -1379,4 +1379,4 @@ this.editor.widgets.destroyAll(!1,this);this._.initialSetData=!1;a=this.editor.d Q={37:1,38:1,39:1,40:1,8:1,46:1};Q[CKEDITOR.SHIFT+121]=1;var u=CKEDITOR.tools.createClass({$:function(a,b){this._.createCopyBin(a,b);this._.createListeners(b)},_:{createCopyBin:function(a){var b=a.document,c=CKEDITOR.env.edge&&16<=CKEDITOR.env.version,d=!a.blockless&&!CKEDITOR.env.ie||c?"div":"span",c=b.createElement(d),b=b.createElement(d);b.setAttributes({id:"cke_copybin","data-cke-temp":"1"});c.setStyles({position:"absolute",width:"1px",height:"1px",overflow:"hidden"});c.setStyle("ltr"==a.config.contentsLangDirection? "left":"right","-5000px");this.editor=a;this.copyBin=c;this.container=b},createListeners:function(a){a&&(a.beforeDestroy&&(this.beforeDestroy=a.beforeDestroy),a.afterDestroy&&(this.afterDestroy=a.afterDestroy))}},proto:{handle:function(a){var b=this.copyBin,c=this.editor,d=this.container,e=CKEDITOR.env.ie&&9>CKEDITOR.env.version,f=c.document.getDocumentElement().$,g=c.createRange(),h=this,k=CKEDITOR.env.mac&&CKEDITOR.env.webkit,n=k?100:0,m=window.requestAnimationFrame&&!k?requestAnimationFrame:setTimeout, p,r,q;b.setHtml('\x3cspan data-cke-copybin-start\x3d"1"\x3e​\x3c/span\x3e'+a+'\x3cspan data-cke-copybin-end\x3d"1"\x3e​\x3c/span\x3e');c.fire("lockSnapshot");d.append(b);c.editable().append(d);p=c.on("selectionChange",K,null,null,0);r=c.widgets.on("checkSelection",K,null,null,0);e&&(q=f.scrollTop);g.selectNodeContents(b);g.select();e&&(f.scrollTop=q);return new CKEDITOR.tools.promise(function(a){m(function(){h.beforeDestroy&&h.beforeDestroy();d.remove();p.removeListener();r.removeListener();c.fire("unlockSnapshot"); -h.afterDestroy&&h.afterDestroy();a()},n)})}},statics:{hasCopyBin:function(a){return!!u.getCopyBin(a)},getCopyBin:function(a){return a.document.getById("cke_copybin")}}});CKEDITOR.plugins.widget=h;h.repository=q;h.nestedEditable=t})();CKEDITOR.config.widget_keystrokeInsertLineBefore=CKEDITOR.SHIFT+CKEDITOR.ALT+13;CKEDITOR.config.widget_keystrokeInsertLineAfter=CKEDITOR.SHIFT+13;CKEDITOR.config.plugins='dialogui,dialog,about,a11yhelp,dialogadvtab,basicstyles,bidi,blockquote,notification,button,toolbar,clipboard,panelbutton,panel,floatpanel,colorbutton,colordialog,xml,ajax,templates,menu,contextmenu,copyformatting,div,resize,elementspath,enterkey,entities,popup,filetools,filebrowser,find,flash,floatingspace,listblock,richcombo,font,fakeobjects,forms,format,horizontalrule,htmlwriter,iframe,wysiwygarea,image,indent,indentblock,indentlist,smiley,justify,menubutton,language,link,list,liststyle,magicline,maximize,newpage,pagebreak,pastetext,pastetools,pastefromword,preview,print,removeformat,save,selectall,showblocks,showborders,sourcearea,specialchar,scayt,stylescombo,tab,table,tabletools,undo,wsc,lineutils,widgetselection,widget';CKEDITOR.config.skin='moono-lisa';(function() {var setIcons = function(icons, strip) {var path = CKEDITOR.getUrl( 'plugins/' + strip );icons = icons.split( ',' );for ( var i = 0; i < icons.length; i++ )CKEDITOR.skin.icons[ icons[ i ] ] = { path: path, offset: -icons[ ++i ], bgsize : icons[ ++i ] };};if (CKEDITOR.env.hidpi) setIcons('about,0,,bold,24,,italic,48,,strike,72,,subscript,96,,superscript,120,,underline,144,,bidiltr,168,,bidirtl,192,,blockquote,216,,copy-rtl,240,,copy,264,,cut-rtl,288,,cut,312,,paste-rtl,336,,paste,360,,bgcolor,384,,textcolor,408,,templates-rtl,432,,templates,456,,copyformatting,480,,creatediv,504,,find-rtl,528,,find,552,,replace,576,,button,600,,checkbox,624,,form,648,,hiddenfield,672,,imagebutton,696,,radio,720,,select-rtl,744,,select,768,,textarea-rtl,792,,textarea,816,,textfield-rtl,840,,textfield,864,,horizontalrule,888,,iframe,912,,image,936,,indent-rtl,960,,indent,984,,outdent-rtl,1008,,outdent,1032,,smiley,1056,,justifyblock,1080,,justifycenter,1104,,justifyleft,1128,,justifyright,1152,,language,1176,,anchor-rtl,1200,,anchor,1224,,link,1248,,unlink,1272,,bulletedlist-rtl,1296,,bulletedlist,1320,,numberedlist-rtl,1344,,numberedlist,1368,,maximize,1392,,newpage-rtl,1416,,newpage,1440,,pagebreak-rtl,1464,,pagebreak,1488,,pastetext-rtl,1512,,pastetext,1536,,pastefromword-rtl,1560,,pastefromword,1584,,preview-rtl,1608,,preview,1632,,print,1656,,removeformat,1680,,save,1704,,selectall,1728,,showblocks-rtl,1752,,showblocks,1776,,source-rtl,1800,,source,1824,,specialchar,1848,,scayt,1872,,table,1896,,redo-rtl,1920,,redo,1944,,undo-rtl,1968,,undo,1992,,spellchecker,2016,','icons_hidpi.png');else setIcons('about,0,auto,bold,24,auto,italic,48,auto,strike,72,auto,subscript,96,auto,superscript,120,auto,underline,144,auto,bidiltr,168,auto,bidirtl,192,auto,blockquote,216,auto,copy-rtl,240,auto,copy,264,auto,cut-rtl,288,auto,cut,312,auto,paste-rtl,336,auto,paste,360,auto,bgcolor,384,auto,textcolor,408,auto,templates-rtl,432,auto,templates,456,auto,copyformatting,480,auto,creatediv,504,auto,find-rtl,528,auto,find,552,auto,replace,576,auto,button,600,auto,checkbox,624,auto,form,648,auto,hiddenfield,672,auto,imagebutton,696,auto,radio,720,auto,select-rtl,744,auto,select,768,auto,textarea-rtl,792,auto,textarea,816,auto,textfield-rtl,840,auto,textfield,864,auto,horizontalrule,888,auto,iframe,912,auto,image,936,auto,indent-rtl,960,auto,indent,984,auto,outdent-rtl,1008,auto,outdent,1032,auto,smiley,1056,auto,justifyblock,1080,auto,justifycenter,1104,auto,justifyleft,1128,auto,justifyright,1152,auto,language,1176,auto,anchor-rtl,1200,auto,anchor,1224,auto,link,1248,auto,unlink,1272,auto,bulletedlist-rtl,1296,auto,bulletedlist,1320,auto,numberedlist-rtl,1344,auto,numberedlist,1368,auto,maximize,1392,auto,newpage-rtl,1416,auto,newpage,1440,auto,pagebreak-rtl,1464,auto,pagebreak,1488,auto,pastetext-rtl,1512,auto,pastetext,1536,auto,pastefromword-rtl,1560,auto,pastefromword,1584,auto,preview-rtl,1608,auto,preview,1632,auto,print,1656,auto,removeformat,1680,auto,save,1704,auto,selectall,1728,auto,showblocks-rtl,1752,auto,showblocks,1776,auto,source-rtl,1800,auto,source,1824,auto,specialchar,1848,auto,scayt,1872,auto,table,1896,auto,redo-rtl,1920,auto,redo,1944,auto,undo-rtl,1968,auto,undo,1992,auto,spellchecker,2016,auto','icons.png');})();CKEDITOR.lang.languages={"af":1,"sq":1,"ar":1,"az":1,"eu":1,"bn":1,"bs":1,"bg":1,"ca":1,"zh-cn":1,"zh":1,"hr":1,"cs":1,"da":1,"nl":1,"en":1,"en-au":1,"en-ca":1,"en-gb":1,"eo":1,"et":1,"fo":1,"fi":1,"fr":1,"fr-ca":1,"gl":1,"ka":1,"de":1,"de-ch":1,"el":1,"gu":1,"he":1,"hi":1,"hu":1,"is":1,"id":1,"it":1,"ja":1,"km":1,"ko":1,"ku":1,"lv":1,"lt":1,"mk":1,"ms":1,"mn":1,"no":1,"nb":1,"oc":1,"fa":1,"pl":1,"pt-br":1,"pt":1,"ro":1,"ru":1,"sr":1,"sr-latn":1,"si":1,"sk":1,"sl":1,"es":1,"sv":1,"tt":1,"th":1,"tr":1,"ug":1,"uk":1,"vi":1,"cy":1};}()); \ No newline at end of file +h.afterDestroy&&h.afterDestroy();a()},n)})}},statics:{hasCopyBin:function(a){return!!u.getCopyBin(a)},getCopyBin:function(a){return a.document.getById("cke_copybin")}}});CKEDITOR.plugins.widget=h;h.repository=q;h.nestedEditable=t})();CKEDITOR.config.widget_keystrokeInsertLineBefore=CKEDITOR.SHIFT+CKEDITOR.ALT+13;CKEDITOR.config.widget_keystrokeInsertLineAfter=CKEDITOR.SHIFT+13;CKEDITOR.config.plugins='dialogui,dialog,about,a11yhelp,dialogadvtab,basicstyles,bidi,blockquote,notification,button,toolbar,clipboard,panelbutton,panel,floatpanel,colorbutton,colordialog,xml,ajax,templates,menu,contextmenu,copyformatting,div,resize,elementspath,enterkey,entities,popup,filetools,filebrowser,find,floatingspace,listblock,richcombo,font,fakeobjects,forms,format,horizontalrule,htmlwriter,iframe,wysiwygarea,image,indent,indentblock,indentlist,smiley,justify,menubutton,language,link,list,liststyle,magicline,maximize,newpage,pagebreak,pastetext,pastetools,pastefromword,preview,print,removeformat,save,selectall,showblocks,showborders,sourcearea,specialchar,scayt,stylescombo,tab,table,tabletools,undo,wsc,lineutils,widgetselection,widget';CKEDITOR.config.skin='moono-lisa';(function() {var setIcons = function(icons, strip) {var path = CKEDITOR.getUrl( 'plugins/' + strip );icons = icons.split( ',' );for ( var i = 0; i < icons.length; i++ )CKEDITOR.skin.icons[ icons[ i ] ] = { path: path, offset: -icons[ ++i ], bgsize : icons[ ++i ] };};if (CKEDITOR.env.hidpi) setIcons('about,0,,bold,24,,italic,48,,strike,72,,subscript,96,,superscript,120,,underline,144,,bidiltr,168,,bidirtl,192,,blockquote,216,,copy-rtl,240,,copy,264,,cut-rtl,288,,cut,312,,paste-rtl,336,,paste,360,,bgcolor,384,,textcolor,408,,templates-rtl,432,,templates,456,,copyformatting,480,,creatediv,504,,find-rtl,528,,find,552,,replace,576,,button,600,,checkbox,624,,form,648,,hiddenfield,672,,imagebutton,696,,radio,720,,select-rtl,744,,select,768,,textarea-rtl,792,,textarea,816,,textfield-rtl,840,,textfield,864,,horizontalrule,888,,iframe,912,,image,936,,indent-rtl,960,,indent,984,,outdent-rtl,1008,,outdent,1032,,smiley,1056,,justifyblock,1080,,justifycenter,1104,,justifyleft,1128,,justifyright,1152,,language,1176,,anchor-rtl,1200,,anchor,1224,,link,1248,,unlink,1272,,bulletedlist-rtl,1296,,bulletedlist,1320,,numberedlist-rtl,1344,,numberedlist,1368,,maximize,1392,,newpage-rtl,1416,,newpage,1440,,pagebreak-rtl,1464,,pagebreak,1488,,pastetext-rtl,1512,,pastetext,1536,,pastefromword-rtl,1560,,pastefromword,1584,,preview-rtl,1608,,preview,1632,,print,1656,,removeformat,1680,,save,1704,,selectall,1728,,showblocks-rtl,1752,,showblocks,1776,,source-rtl,1800,,source,1824,,specialchar,1848,,scayt,1872,,table,1896,,redo-rtl,1920,,redo,1944,,undo-rtl,1968,,undo,1992,,spellchecker,2016,','icons_hidpi.png');else setIcons('about,0,auto,bold,24,auto,italic,48,auto,strike,72,auto,subscript,96,auto,superscript,120,auto,underline,144,auto,bidiltr,168,auto,bidirtl,192,auto,blockquote,216,auto,copy-rtl,240,auto,copy,264,auto,cut-rtl,288,auto,cut,312,auto,paste-rtl,336,auto,paste,360,auto,bgcolor,384,auto,textcolor,408,auto,templates-rtl,432,auto,templates,456,auto,copyformatting,480,auto,creatediv,504,auto,find-rtl,528,auto,find,552,auto,replace,576,auto,button,600,auto,checkbox,624,auto,form,648,auto,hiddenfield,672,auto,imagebutton,696,auto,radio,720,auto,select-rtl,744,auto,select,768,auto,textarea-rtl,792,auto,textarea,816,auto,textfield-rtl,840,auto,textfield,864,auto,horizontalrule,888,auto,iframe,912,auto,image,936,auto,indent-rtl,960,auto,indent,984,auto,outdent-rtl,1008,auto,outdent,1032,auto,smiley,1056,auto,justifyblock,1080,auto,justifycenter,1104,auto,justifyleft,1128,auto,justifyright,1152,auto,language,1176,auto,anchor-rtl,1200,auto,anchor,1224,auto,link,1248,auto,unlink,1272,auto,bulletedlist-rtl,1296,auto,bulletedlist,1320,auto,numberedlist-rtl,1344,auto,numberedlist,1368,auto,maximize,1392,auto,newpage-rtl,1416,auto,newpage,1440,auto,pagebreak-rtl,1464,auto,pagebreak,1488,auto,pastetext-rtl,1512,auto,pastetext,1536,auto,pastefromword-rtl,1560,auto,pastefromword,1584,auto,preview-rtl,1608,auto,preview,1632,auto,print,1656,auto,removeformat,1680,auto,save,1704,auto,selectall,1728,auto,showblocks-rtl,1752,auto,showblocks,1776,auto,source-rtl,1800,auto,source,1824,auto,specialchar,1848,auto,scayt,1872,auto,table,1896,auto,redo-rtl,1920,auto,redo,1944,auto,undo-rtl,1968,auto,undo,1992,auto,spellchecker,2016,auto','icons.png');})();CKEDITOR.lang.languages={"af":1,"sq":1,"ar":1,"az":1,"eu":1,"bn":1,"bs":1,"bg":1,"ca":1,"zh-cn":1,"zh":1,"hr":1,"cs":1,"da":1,"nl":1,"en":1,"en-au":1,"en-ca":1,"en-gb":1,"eo":1,"et":1,"fo":1,"fi":1,"fr":1,"fr-ca":1,"gl":1,"ka":1,"de":1,"de-ch":1,"el":1,"gu":1,"he":1,"hi":1,"hu":1,"is":1,"id":1,"it":1,"ja":1,"km":1,"ko":1,"ku":1,"lv":1,"lt":1,"mk":1,"ms":1,"mn":1,"no":1,"nb":1,"oc":1,"fa":1,"pl":1,"pt-br":1,"pt":1,"ro":1,"ru":1,"sr":1,"sr-latn":1,"si":1,"sk":1,"sl":1,"es":1,"sv":1,"tt":1,"th":1,"tr":1,"ug":1,"uk":1,"vi":1,"cy":1};}()); diff --git a/djangocms_text_ckeditor/static/djangocms_text_ckeditor/ckeditor/skins/moono-lisa/dialog.css b/djangocms_text_ckeditor/static/djangocms_text_ckeditor/ckeditor/skins/moono-lisa/dialog.css index d63213720..c2ca246dc 100644 --- a/djangocms_text_ckeditor/static/djangocms_text_ckeditor/ckeditor/skins/moono-lisa/dialog.css +++ b/djangocms_text_ckeditor/static/djangocms_text_ckeditor/ckeditor/skins/moono-lisa/dialog.css @@ -2,4 +2,5 @@ Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -.cke_dialog{visibility:visible}.cke_dialog_body{z-index:1;background:#fff}.cke_dialog strong{font-weight:bold}.cke_dialog_title{font-weight:bold;font-size:12px;cursor:move;position:relative;color:#484848;border-bottom:1px solid #d1d1d1;padding:12px 19px 12px 12px;background:#f8f8f8;letter-spacing:.3px}.cke_dialog_spinner{border-radius:50%;width:12px;height:12px;overflow:hidden;text-indent:-9999em;border:2px solid rgba(102,102,102,0.2);border-left-color:rgba(102,102,102,1);-webkit-animation:dialog_spinner 1s infinite linear;animation:dialog_spinner 1s infinite linear}.cke_browser_ie8 .cke_dialog_spinner,.cke_browser_ie9 .cke_dialog_spinner{background:url(images/spinner.gif) center top no-repeat;width:16px;height:16px;border:0}@-webkit-keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.cke_dialog_contents{background-color:#fff;overflow:auto;padding:15px 10px 5px 10px;margin-top:43px;border-top:1px solid #d1d1d1}.cke_dialog_contents_body{overflow:auto;padding:9px 10px 5px 10px;margin-top:22px}.cke_dialog_footer{text-align:right;position:relative;border-top:1px solid #d1d1d1;background:#f8f8f8}.cke_rtl .cke_dialog_footer{text-align:left}.cke_hc .cke_dialog_footer{outline:0;border-top:1px solid #fff}.cke_dialog .cke_resizer{margin-top:22px}.cke_dialog .cke_resizer_rtl{margin-left:5px}.cke_dialog .cke_resizer_ltr{margin-right:5px}.cke_dialog_tabs{height:33px;display:inline-block;margin:9px 0 0;position:absolute;z-index:2;left:11px}.cke_rtl .cke_dialog_tabs{left:auto;right:11px}a.cke_dialog_tab{height:25px;padding:4px 8px;display:inline-block;cursor:pointer;line-height:26px;outline:0;color:#484848;border:1px solid #d1d1d1;border-radius:3px 3px 0 0;background:#f8f8f8;min-width:90px;text-align:center;margin-left:-1px;letter-spacing:.3px}a.cke_dialog_tab:hover{background-color:#fff}a.cke_dialog_tab:focus{border:2px solid #139ff7;border-bottom-color:#d1d1d1;padding:3px 7px;position:relative;z-index:1}a.cke_dialog_tab_selected{background:#fff;border-bottom-color:#fff;cursor:default;filter:none}a.cke_dialog_tab_selected:hover,a.cke_dialog_tab_selected:focus{border-bottom-color:#fff}.cke_hc a.cke_dialog_tab:hover,.cke_hc a.cke_dialog_tab:focus,.cke_hc a.cke_dialog_tab_selected{border:3px solid;padding:2px 6px}.cke_hc a.cke_dialog_tab:focus{text-decoration:underline}a.cke_dialog_tab_disabled{color:#bababa;cursor:default}.cke_single_page .cke_dialog_tabs{display:none}.cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:0;border-top:0}a.cke_dialog_close_button{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:16px;width:16px;top:11px;z-index:5;opacity:.7;filter:alpha(opacity = 70)}.cke_rtl .cke_dialog_close_button{left:12px}.cke_ltr .cke_dialog_close_button{right:12px}.cke_hc a.cke_dialog_close_button{background-image:none}.cke_hidpi a.cke_dialog_close_button{background-image:url(images/hidpi/close.png);background-size:16px}a.cke_dialog_close_button:hover{opacity:1;filter:alpha(opacity = 100)}a.cke_dialog_close_button span{display:none}.cke_hc a.cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px}div.cke_disabled .cke_dialog_ui_labeled_content div *{background-color:#ddd;cursor:default}.cke_dialog_ui_vbox table,.cke_dialog_ui_hbox table{margin:auto}.cke_dialog_ui_vbox_child{padding:5px 0}.cke_dialog_ui_hbox{width:100%;margin-top:12px}.cke_dialog_ui_hbox_first,.cke_dialog_ui_hbox_child,.cke_dialog_ui_hbox_last{vertical-align:top}.cke_ltr .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px}.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px}.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-right:5px}.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-left:5px;padding-right:0}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_tel,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:1px solid}textarea.cke_dialog_ui_input_textarea{overflow:auto;resize:none}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,input.cke_dialog_ui_input_tel,textarea.cke_dialog_ui_input_textarea{background-color:#fff;border:1px solid #bcbcbc;padding:4px 6px;outline:0;width:100%;*width:95%;box-sizing:border-box;border-radius:2px;min-height:28px;margin-left:1px}input.cke_dialog_ui_input_text:hover,input.cke_dialog_ui_input_password:hover,input.cke_dialog_ui_input_tel:hover,textarea.cke_dialog_ui_input_textarea:hover{border:1px solid #aeb3b9}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,input.cke_dialog_ui_input_tel:focus,textarea.cke_dialog_ui_input_textarea:focus,select.cke_dialog_ui_input_select:focus{outline:0;border:2px solid #139ff7}input.cke_dialog_ui_input_text:focus{padding-left:5px}textarea.cke_dialog_ui_input_textarea:focus{padding:3px 5px}select.cke_dialog_ui_input_select:focus{margin:0;width:100%!important}input.cke_dialog_ui_checkbox_input,input.cke_dialog_ui_radio_input{margin-left:1px;margin-right:2px}input.cke_dialog_ui_checkbox_input:focus,input.cke_dialog_ui_checkbox_input:active,input.cke_dialog_ui_radio_input:focus,input.cke_dialog_ui_radio_input:active{border:0;outline:2px solid #139ff7}a.cke_dialog_ui_button{display:inline-block;*display:inline;*zoom:1;padding:4px 1px;margin:0;text-align:center;color:#484848;vertical-align:middle;cursor:pointer;border:1px solid #bcbcbc;border-radius:2px;background:#f8f8f8;letter-spacing:.3px;line-height:18px;box-sizing:border-box}.cke_hc a.cke_dialog_ui_button{border-width:3px}span.cke_dialog_ui_button{padding:0 10px;cursor:pointer}a.cke_dialog_ui_button:hover{background:#fff}a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{border:2px solid #139ff7;outline:0;padding:3px 0}.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button:focus,.cke_hc a.cke_dialog_ui_button:active{border:3px solid}.cke_dialog_footer_buttons a.cke_dialog_ui_button span{color:inherit;font-size:12px;font-weight:bold;padding:0 12px}a.cke_dialog_ui_button_ok{color:#fff;background:#09863e;border:1px solid #09863e}.cke_hc a.cke_dialog_ui_button{border:1px solid #bcbcbc}a.cke_dialog_ui_button_ok:hover{background:#53aa78;border-color:#53aa78}a.cke_dialog_ui_button_ok:focus{box-shadow:inset 0 0 0 2px #FFF}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active{border-color:#139ff7}.cke_hc a.cke_dialog_ui_button_ok:hover,.cke_hc a.cke_dialog_ui_button_ok:focus,.cke_hc a.cke_dialog_ui_button_ok:active{border-color:#484848}a.cke_dialog_ui_button_ok.cke_disabled{background:#d1d1d1;border-color:#d1d1d1;cursor:default}a.cke_dialog_ui_button_ok.cke_disabled span{cursor:default}.cke_dialog_footer_buttons{display:inline-table;margin:5px;width:auto;position:relative;vertical-align:middle}div.cke_dialog_ui_input_select{display:table}select.cke_dialog_ui_input_select{height:28px;line-height:28px;background-color:#fff;border:1px solid #bcbcbc;padding:3px 3px 3px 6px;outline:0;border-radius:2px;margin:0 1px;box-sizing:border-box;width:calc(100% - 2px)!important}.cke_dialog_ui_input_file{width:100%;height:25px}.cke_hc .cke_dialog_ui_labeled_content input:focus,.cke_hc .cke_dialog_ui_labeled_content select:focus,.cke_hc .cke_dialog_ui_labeled_content textarea:focus{outline:1px dotted}.cke_dialog_ui_labeled_label{margin-left:1px}.cke_dialog_ui_labeled_required{font-weight:bold;font-size:1.2em}.cke_dialog .cke_dark_background{background-color:transparent}.cke_dialog .cke_light_background{background-color:#ebebeb}.cke_dialog .cke_centered{text-align:center}.cke_dialog a.cke_btn_reset{float:right;background:url(images/refresh.png) top left no-repeat;width:16px;height:16px;border:1px none;font-size:1px}.cke_hidpi .cke_dialog a.cke_btn_reset{background-size:16px;background-image:url(images/hidpi/refresh.png)}.cke_rtl .cke_dialog a.cke_btn_reset{float:left}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked{float:left;width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked,.cke_dialog a.cke_btn_reset{margin:2px}.cke_dialog a.cke_btn_locked{background-image:url(images/lock.png)}.cke_dialog a.cke_btn_unlocked{background-image:url(images/lock-open.png)}.cke_rtl .cke_dialog a.cke_btn_locked,.cke_rtl .cke_dialog a.cke_btn_unlocked{float:right}.cke_hidpi .cke_dialog a.cke_btn_unlocked,.cke_hidpi .cke_dialog a.cke_btn_locked{background-size:16px}.cke_hidpi .cke_dialog a.cke_btn_locked{background-image:url(images/hidpi/lock.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked{background-image:url(images/hidpi/lock-open.png)}.cke_dialog a.cke_btn_locked .cke_icon{display:none}.cke_dialog a.cke_btn_over,.cke_dialog a.cke_btn_locked:hover,.cke_dialog a.cke_btn_locked:focus,.cke_dialog a.cke_btn_locked:active,.cke_dialog a.cke_btn_unlocked:hover,.cke_dialog a.cke_btn_unlocked:focus,.cke_dialog a.cke_btn_unlocked:active,.cke_dialog a.cke_btn_reset:hover,.cke_dialog a.cke_btn_reset:focus,.cke_dialog a.cke_btn_reset:active{cursor:pointer;outline:0;margin:0;border:2px solid #139ff7}.cke_dialog fieldset{border:1px solid #bcbcbc}.cke_dialog fieldset legend{padding:0 6px}.cke_dialog_ui_checkbox,.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox{display:inline-block}.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox{padding-top:5px}.cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input,.cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input+label,.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input,.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input+label{vertical-align:middle}.cke_dialog .ImagePreviewBox{border:1px ridge #bcbcbc;overflow:scroll;height:200px;width:300px;padding:2px;background-color:white}.cke_dialog .ImagePreviewBox table td{white-space:normal}.cke_dialog .ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity = 90);background-color:#e4e4e4}.cke_dialog .cke_pastetext{width:346px;height:170px}.cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none}.cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:white;border:1px solid #aeb3b9;border-radius:3px}.cke_dialog .cke_hand{cursor:pointer}.cke_disabled{color:#a0a0a0}.cke_dialog_body .cke_label{display:none}.cke_dialog_body label{display:inline;cursor:default;letter-spacing:.3px}.cke_dialog_body label+.cke_dialog_ui_labeled_content{margin-top:2px}.cke_dialog_contents_body .cke_dialog_ui_text,.cke_dialog_contents_body .cke_dialog_ui_select,.cke_dialog_contents_body .cke_dialog_ui_hbox_last>a.cke_dialog_ui_button{margin-top:4px}a.cke_smile{overflow:hidden;display:block;text-align:center;padding:.3em 0}a.cke_smile img{vertical-align:middle}a.cke_specialchar{cursor:inherit;display:block;height:1.25em;padding:.2em .3em;text-align:center}a.cke_smile,a.cke_specialchar{border:2px solid transparent}a.cke_smile:hover,a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:hover,a.cke_specialchar:focus,a.cke_specialchar:active{background:#fff;outline:0}a.cke_smile:hover,a.cke_specialchar:hover{border-color:#888}a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:focus,a.cke_specialchar:active{border-color:#139ff7}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity = 0);width:100%;height:100%}.cke_dialog_contents_body .cke_accessibility_legend{margin:2px 7px 2px 2px}.cke_dialog_contents_body .cke_accessibility_legend:focus,.cke_dialog_contents_body .cke_accessibility_legend:active{outline:0;border:2px solid #139ff7;margin:0 5px 0 0}.cke_dialog_contents_body input[type=file]:focus,.cke_dialog_contents_body input[type=file]:active{border:2px solid #139ff7}.cke_dialog_find_fieldset{margin-top:10px!important}.cke_dialog_image_ratiolock{margin-top:52px!important}.cke_dialog_forms_select_order label.cke_dialog_ui_labeled_label{margin-left:0}.cke_dialog_forms_select_order div.cke_dialog_ui_input_select{width:100%}.cke_dialog_forms_select_order_txtsize .cke_dialog_ui_hbox_last{padding-top:4px}.cke_dialog_image_url .cke_dialog_ui_hbox_last{vertical-align:bottom}a.cke_dialog_ui_button.cke_dialog_image_browse{margin-top:10px}.cke_dialog_contents_body .cke_tpl_list{border:#bcbcbc 1px solid;margin:1px}.cke_dialog_contents_body .cke_tpl_list:focus,.cke_dialog_contents_body .cke_tpl_list:active{outline:0;margin:0;border:2px solid #139ff7}.cke_dialog_contents_body .cke_tpl_list a:focus,.cke_dialog_contents_body .cke_tpl_list a:active{outline:0}.cke_dialog_contents_body .cke_tpl_list a:focus .cke_tpl_item,.cke_dialog_contents_body .cke_tpl_list a:active .cke_tpl_item{border:2px solid #139ff7;padding:6px} \ No newline at end of file +.cke_dialog{visibility:visible}.cke_dialog_body{z-index:1;background:var(--dca-white, #fff)}.cke_dialog strong{font-weight:bold}.cke_dialog_title{font-weight:bold;font-size:12px;cursor:move;position:relative;color:var(--dca-gray-darker, #484848);border-bottom:1px solid var(--dca-gray-lighter, #d1d1d1);padding:12px 19px 12px 12px;background:var(--dca-gray-super-lightest, #f8f8f8);letter-spacing:.3px}.cke_dialog_spinner{border-radius:50%;width:12px;height:12px;overflow:hidden;text-indent:-9999em;border:2px solid rgba(102,102,102,0.2);border-left-color:rgba(102,102,102,1);-webkit-animation:dialog_spinner 1s infinite linear;animation:dialog_spinner 1s infinite linear}.cke_browser_ie8 .cke_dialog_spinner,.cke_browser_ie9 .cke_dialog_spinner{background:url(images/spinner.gif) center top no-repeat;width:16px;height:16px;border:0}@-webkit-keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.cke_dialog_contents{background-color:var(--dca-white, #fff);overflow:auto;padding:15px 10px 5px 10px;margin-top:43px;border-top:1px solid var(--dca-gray-lighter, #d1d1d1)}.cke_dialog_contents_body{overflow:auto;padding:9px 10px 5px 10px;margin-top:22px}.cke_dialog_footer{text-align:right;position:relative;border-top:1px solid var(--dca-gray-lighter, #d1d1d1);background:var(--dca-gray-super-lightest, #f8f8f8)}.cke_rtl .cke_dialog_footer{text-align:left}.cke_hc .cke_dialog_footer{outline:0;border-top:1px solid var(--dca-white, #fff)}.cke_dialog .cke_resizer{margin-top:22px}.cke_dialog .cke_resizer_rtl{margin-left:5px}.cke_dialog .cke_resizer_ltr{margin-right:5px}.cke_dialog_tabs{height:33px;display:inline-block;margin:9px 0 0;position:absolute;z-index:2;left:11px}.cke_rtl .cke_dialog_tabs{left:auto;right:11px}a.cke_dialog_tab{height:25px;padding:4px 8px;display:inline-block;cursor:pointer;line-height:26px;outline:0;color:var(--dca-gray-darker, #484848);border:1px solid var(--dca-gray-lighter, #d1d1d1);border-radius:3px 3px 0 0;background:var(--dca-gray-super-lightest, #f8f8f8);min-width:90px;text-align:center;margin-left:-1px;letter-spacing:.3px}a.cke_dialog_tab:hover{background-color:var(--dca-white, #fff)}a.cke_dialog_tab:focus{border:2px solid var(--dca-primary, #139ff7);border-bottom-color:var(--dca-gray-lighter, #d1d1d1);padding:3px 7px;position:relative;z-index:1}a.cke_dialog_tab_selected{background:var(--dca-white, #fff);border-bottom-color:var(--dca-white, #fff);cursor:default;filter:none}a.cke_dialog_tab_selected:hover,a.cke_dialog_tab_selected:focus{border-bottom-color:var(--dca-white, #fff)}.cke_hc a.cke_dialog_tab:hover,.cke_hc a.cke_dialog_tab:focus,.cke_hc a.cke_dialog_tab_selected{border:3px solid;padding:2px 6px}.cke_hc a.cke_dialog_tab:focus{text-decoration:underline}a.cke_dialog_tab_disabled{color:#bababa;cursor:default}.cke_single_page .cke_dialog_tabs{display:none}.cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:0;border-top:0}a.cke_dialog_close_button{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:16px;width:16px;top:11px;z-index:5;opacity:.7;filter:alpha(opacity = 70)}.cke_rtl .cke_dialog_close_button{left:12px}.cke_ltr .cke_dialog_close_button{right:12px}.cke_hc a.cke_dialog_close_button{background-image:none}.cke_hidpi a.cke_dialog_close_button{background-image:url(images/hidpi/close.png);background-size:16px}a.cke_dialog_close_button:hover{opacity:1;filter:alpha(opacity = 100)}a.cke_dialog_close_button span{display:none}.cke_hc a.cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px}div.cke_disabled .cke_dialog_ui_labeled_content div *{background-color:#ddd;cursor:default}.cke_dialog_ui_vbox table,.cke_dialog_ui_hbox table{margin:auto}.cke_dialog_ui_vbox_child{padding:5px 0}.cke_dialog_ui_hbox{width:100%;margin-top:12px}.cke_dialog_ui_hbox_first,.cke_dialog_ui_hbox_child,.cke_dialog_ui_hbox_last{vertical-align:top}.cke_ltr .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px}.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px}.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-right:5px}.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-left:5px;padding-right:0}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_tel,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:1px solid}textarea.cke_dialog_ui_input_textarea{overflow:auto;resize:none}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,input.cke_dialog_ui_input_tel,textarea.cke_dialog_ui_input_textarea{background-color:var(--dca-white, #fff);border:1px solid var(--dca-gray-lighter, #bcbcbc);padding:4px 6px;outline:0;width:100%;*width:95%;box-sizing:border-box;border-radius:2px;min-height:28px;margin-left:1px}input.cke_dialog_ui_input_text:hover,input.cke_dialog_ui_input_password:hover,input.cke_dialog_ui_input_tel:hover,textarea.cke_dialog_ui_input_textarea:hover{border:1px solid var(--dca-gray-lighter, #aeb3b9)}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,input.cke_dialog_ui_input_tel:focus,textarea.cke_dialog_ui_input_textarea:focus,select.cke_dialog_ui_input_select:focus{outline:0;border:2px solid var(--dca-primary, #139ff7)}input.cke_dialog_ui_input_text:focus{padding-left:5px}textarea.cke_dialog_ui_input_textarea:focus{padding:3px 5px}select.cke_dialog_ui_input_select:focus{margin:0;width:100%!important}input.cke_dialog_ui_checkbox_input,input.cke_dialog_ui_radio_input{margin-left:1px;margin-right:2px}input.cke_dialog_ui_checkbox_input:focus,input.cke_dialog_ui_checkbox_input:active,input.cke_dialog_ui_radio_input:focus,input.cke_dialog_ui_radio_input:active{border:0;outline:2px solid var(--dca-primary, #139ff7)}a.cke_dialog_ui_button{display:inline-block;*display:inline;*zoom:1;padding:4px 1px;margin:0;text-align:center;color:var(--dca-gray-darker, #484848);vertical-align:middle;cursor:pointer;border:1px solid var(--dca-gray-lighter, #bcbcbc);border-radius:2px;background:var(--dca-gray-super-lightest, #f8f8f8);letter-spacing:.3px;line-height:18px;box-sizing:border-box}.cke_hc a.cke_dialog_ui_button{border-width:3px}span.cke_dialog_ui_button{padding:0 10px;cursor:pointer}a.cke_dialog_ui_button:hover{background:var(--dca-white, #fff)}a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{border:2px solid var(--dca-primary, #139ff7);outline:0;padding:3px 0}.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button:focus,.cke_hc a.cke_dialog_ui_button:active{border:3px solid}.cke_dialog_footer_buttons a.cke_dialog_ui_button span{color:inherit;font-size:12px;font-weight:bold;padding:0 12px}a.cke_dialog_ui_button_ok{color:var(--dca-white, #fff);background:#09863e;border:1px solid #09863e}.cke_hc a.cke_dialog_ui_button{border:1px solid var(--dca-gray-lighter, #bcbcbc)}a.cke_dialog_ui_button_ok:hover{background:#53aa78;border-color:#53aa78}a.cke_dialog_ui_button_ok:focus{box-shadow:inset 0 0 0 2px var(--dca-white, #fff)}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active{border-color:var(--dca-primary, #139ff7)}.cke_hc a.cke_dialog_ui_button_ok:hover,.cke_hc a.cke_dialog_ui_button_ok:focus,.cke_hc a.cke_dialog_ui_button_ok:active{border-color:var(--dca-gray-darker, #484848)}a.cke_dialog_ui_button_ok.cke_disabled{background:var(--dca-gray-lighter, #d1d1d1);border-color:var(--dca-gray-lighter, #d1d1d1);cursor:default}a.cke_dialog_ui_button_ok.cke_disabled span{cursor:default}.cke_dialog_footer_buttons{display:inline-table;margin:5px;width:auto;position:relative;vertical-align:middle}div.cke_dialog_ui_input_select{display:table}select.cke_dialog_ui_input_select{height:28px;line-height:28px;background-color:var(--dca-white, #fff);border:1px solid var(--dca-gray-lighter, #bcbcbc);padding:3px 3px 3px 6px;outline:0;border-radius:2px;margin:0 1px;box-sizing:border-box;width:calc(100% - 2px)!important}.cke_dialog_ui_input_file{width:100%;height:25px}.cke_hc .cke_dialog_ui_labeled_content input:focus,.cke_hc .cke_dialog_ui_labeled_content select:focus,.cke_hc .cke_dialog_ui_labeled_content textarea:focus{outline:1px dotted}.cke_dialog_ui_labeled_label{margin-left:1px}.cke_dialog_ui_labeled_required{font-weight:bold;font-size:1.2em}.cke_dialog .cke_dark_background{background-color:transparent}.cke_dialog .cke_light_background{background-color:var(--dca-gray-lightest, #ebebeb)}.cke_dialog .cke_centered{text-align:center}.cke_dialog a.cke_btn_reset{float:right;background:url(images/refresh.png) top left no-repeat;width:16px;height:16px;border:1px none;font-size:1px}.cke_hidpi .cke_dialog a.cke_btn_reset{background-size:16px;background-image:url(images/hidpi/refresh.png)}.cke_rtl .cke_dialog a.cke_btn_reset{float:left}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked{float:left;width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked,.cke_dialog a.cke_btn_reset{margin:2px}.cke_dialog a.cke_btn_locked{background-image:url(images/lock.png)}.cke_dialog a.cke_btn_unlocked{background-image:url(images/lock-open.png)}.cke_rtl .cke_dialog a.cke_btn_locked,.cke_rtl .cke_dialog a.cke_btn_unlocked{float:right}.cke_hidpi .cke_dialog a.cke_btn_unlocked,.cke_hidpi .cke_dialog a.cke_btn_locked{background-size:16px}.cke_hidpi .cke_dialog a.cke_btn_locked{background-image:url(images/hidpi/lock.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked{background-image:url(images/hidpi/lock-open.png)}.cke_dialog a.cke_btn_locked .cke_icon{display:none}.cke_dialog a.cke_btn_over,.cke_dialog a.cke_btn_locked:hover,.cke_dialog a.cke_btn_locked:focus,.cke_dialog a.cke_btn_locked:active,.cke_dialog a.cke_btn_unlocked:hover,.cke_dialog a.cke_btn_unlocked:focus,.cke_dialog a.cke_btn_unlocked:active,.cke_dialog a.cke_btn_reset:hover,.cke_dialog a.cke_btn_reset:focus,.cke_dialog a.cke_btn_reset:active{cursor:pointer;outline:0;margin:0;border:2px solid var(--dca-primary, #139ff7)}.cke_dialog fieldset{border:1px solid var(--dca-gray-lighter, #bcbcbc)}.cke_dialog fieldset legend{padding:0 6px}.cke_dialog_ui_checkbox,.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox{display:inline-block}.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox{padding-top:5px}.cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input,.cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input+label,.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input,.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input+label{vertical-align:middle}.cke_dialog .ImagePreviewBox{border:1px ridge var(--dca-gray-lighter, #bcbcbc);overflow:scroll;height:200px;width:300px;padding:2px;background-color:white}.cke_dialog .ImagePreviewBox table td{white-space:normal}.cke_dialog .ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity = 90);background-color:var(--dca-gray-lightest, #e4e4e4)}.cke_dialog .cke_pastetext{width:346px;height:170px}.cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none}.cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:white;border:1px solid var(--dca-gray-lighter, #aeb3b9);border-radius:3px}.cke_dialog .cke_hand{cursor:pointer}.cke_disabled{color:var(--dca-gray-light, #a0a0a0)}.cke_dialog_body .cke_label{display:none}.cke_dialog_body label{display:inline;cursor:default;letter-spacing:.3px}.cke_dialog_body label+.cke_dialog_ui_labeled_content{margin-top:2px}.cke_dialog_contents_body .cke_dialog_ui_text,.cke_dialog_contents_body .cke_dialog_ui_select,.cke_dialog_contents_body .cke_dialog_ui_hbox_last>a.cke_dialog_ui_button{margin-top:4px}a.cke_smile{overflow:hidden;display:block;text-align:center;padding:.3em 0}a.cke_smile img{vertical-align:middle}a.cke_specialchar{cursor:inherit;display:block;height:1.25em;padding:.2em .3em;text-align:center}a.cke_smile,a.cke_specialchar{border:2px solid transparent}a.cke_smile:hover,a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:hover,a.cke_specialchar:focus,a.cke_specialchar:active{background:var(--dca-white, #fff);outline:0}a.cke_smile:hover,a.cke_specialchar:hover{border-color:var(--dca-gray, #888)}a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:focus,a.cke_specialchar:active{border-color:var(--dca-primary, #139ff7)}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity = 0);width:100%;height:100%}.cke_dialog_contents_body .cke_accessibility_legend{margin:2px 7px 2px 2px}.cke_dialog_contents_body .cke_accessibility_legend:focus,.cke_dialog_contents_body .cke_accessibility_legend:active{outline:0;border:2px solid var(--dca-primary, #139ff7);margin:0 5px 0 0}.cke_dialog_contents_body input[type=file]:focus,.cke_dialog_contents_body input[type=file]:active{border:2px solid var(--dca-primary, #139ff7)}.cke_dialog_find_fieldset{margin-top:10px!important}.cke_dialog_image_ratiolock{margin-top:52px!important}.cke_dialog_forms_select_order label.cke_dialog_ui_labeled_label{margin-left:0}.cke_dialog_forms_select_order div.cke_dialog_ui_input_select{width:100%}.cke_dialog_forms_select_order_txtsize .cke_dialog_ui_hbox_last{padding-top:4px}.cke_dialog_image_url .cke_dialog_ui_hbox_last{vertical-align:bottom}a.cke_dialog_ui_button.cke_dialog_image_browse{margin-top:10px}.cke_dialog_contents_body .cke_tpl_list{border:var(--dca-gray-lighter, #bcbcbc) 1px solid;margin:1px}.cke_dialog_contents_body .cke_tpl_list:focus,.cke_dialog_contents_body .cke_tpl_list:active{outline:0;margin:0;border:2px solid var(--dca-primary, #139ff7)}.cke_dialog_contents_body .cke_tpl_list a:focus,.cke_dialog_contents_body .cke_tpl_list a:active{outline:0}.cke_dialog_contents_body .cke_tpl_list a:focus .cke_tpl_item,.cke_dialog_contents_body .cke_tpl_list a:active .cke_tpl_item{border:2px solid var(--dca-primary, #139ff7);padding:6px} +/* Patched for djangocms-text-ckeditor */ diff --git a/djangocms_text_ckeditor/static/djangocms_text_ckeditor/ckeditor/skins/moono-lisa/dialog_ie.css b/djangocms_text_ckeditor/static/djangocms_text_ckeditor/ckeditor/skins/moono-lisa/dialog_ie.css index bbc2fea56..3f8330a6c 100644 --- a/djangocms_text_ckeditor/static/djangocms_text_ckeditor/ckeditor/skins/moono-lisa/dialog_ie.css +++ b/djangocms_text_ckeditor/static/djangocms_text_ckeditor/ckeditor/skins/moono-lisa/dialog_ie.css @@ -2,4 +2,5 @@ Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -.cke_dialog{visibility:visible}.cke_dialog_body{z-index:1;background:#fff}.cke_dialog strong{font-weight:bold}.cke_dialog_title{font-weight:bold;font-size:12px;cursor:move;position:relative;color:#484848;border-bottom:1px solid #d1d1d1;padding:12px 19px 12px 12px;background:#f8f8f8;letter-spacing:.3px}.cke_dialog_spinner{border-radius:50%;width:12px;height:12px;overflow:hidden;text-indent:-9999em;border:2px solid rgba(102,102,102,0.2);border-left-color:rgba(102,102,102,1);-webkit-animation:dialog_spinner 1s infinite linear;animation:dialog_spinner 1s infinite linear}.cke_browser_ie8 .cke_dialog_spinner,.cke_browser_ie9 .cke_dialog_spinner{background:url(images/spinner.gif) center top no-repeat;width:16px;height:16px;border:0}@-webkit-keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.cke_dialog_contents{background-color:#fff;overflow:auto;padding:15px 10px 5px 10px;margin-top:43px;border-top:1px solid #d1d1d1}.cke_dialog_contents_body{overflow:auto;padding:9px 10px 5px 10px;margin-top:22px}.cke_dialog_footer{text-align:right;position:relative;border-top:1px solid #d1d1d1;background:#f8f8f8}.cke_rtl .cke_dialog_footer{text-align:left}.cke_hc .cke_dialog_footer{outline:0;border-top:1px solid #fff}.cke_dialog .cke_resizer{margin-top:22px}.cke_dialog .cke_resizer_rtl{margin-left:5px}.cke_dialog .cke_resizer_ltr{margin-right:5px}.cke_dialog_tabs{height:33px;display:inline-block;margin:9px 0 0;position:absolute;z-index:2;left:11px}.cke_rtl .cke_dialog_tabs{left:auto;right:11px}a.cke_dialog_tab{height:25px;padding:4px 8px;display:inline-block;cursor:pointer;line-height:26px;outline:0;color:#484848;border:1px solid #d1d1d1;border-radius:3px 3px 0 0;background:#f8f8f8;min-width:90px;text-align:center;margin-left:-1px;letter-spacing:.3px}a.cke_dialog_tab:hover{background-color:#fff}a.cke_dialog_tab:focus{border:2px solid #139ff7;border-bottom-color:#d1d1d1;padding:3px 7px;position:relative;z-index:1}a.cke_dialog_tab_selected{background:#fff;border-bottom-color:#fff;cursor:default;filter:none}a.cke_dialog_tab_selected:hover,a.cke_dialog_tab_selected:focus{border-bottom-color:#fff}.cke_hc a.cke_dialog_tab:hover,.cke_hc a.cke_dialog_tab:focus,.cke_hc a.cke_dialog_tab_selected{border:3px solid;padding:2px 6px}.cke_hc a.cke_dialog_tab:focus{text-decoration:underline}a.cke_dialog_tab_disabled{color:#bababa;cursor:default}.cke_single_page .cke_dialog_tabs{display:none}.cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:0;border-top:0}a.cke_dialog_close_button{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:16px;width:16px;top:11px;z-index:5;opacity:.7;filter:alpha(opacity = 70)}.cke_rtl .cke_dialog_close_button{left:12px}.cke_ltr .cke_dialog_close_button{right:12px}.cke_hc a.cke_dialog_close_button{background-image:none}.cke_hidpi a.cke_dialog_close_button{background-image:url(images/hidpi/close.png);background-size:16px}a.cke_dialog_close_button:hover{opacity:1;filter:alpha(opacity = 100)}a.cke_dialog_close_button span{display:none}.cke_hc a.cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px}div.cke_disabled .cke_dialog_ui_labeled_content div *{background-color:#ddd;cursor:default}.cke_dialog_ui_vbox table,.cke_dialog_ui_hbox table{margin:auto}.cke_dialog_ui_vbox_child{padding:5px 0}.cke_dialog_ui_hbox{width:100%;margin-top:12px}.cke_dialog_ui_hbox_first,.cke_dialog_ui_hbox_child,.cke_dialog_ui_hbox_last{vertical-align:top}.cke_ltr .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px}.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px}.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-right:5px}.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-left:5px;padding-right:0}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_tel,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:1px solid}textarea.cke_dialog_ui_input_textarea{overflow:auto;resize:none}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,input.cke_dialog_ui_input_tel,textarea.cke_dialog_ui_input_textarea{background-color:#fff;border:1px solid #bcbcbc;padding:4px 6px;outline:0;width:100%;*width:95%;box-sizing:border-box;border-radius:2px;min-height:28px;margin-left:1px}input.cke_dialog_ui_input_text:hover,input.cke_dialog_ui_input_password:hover,input.cke_dialog_ui_input_tel:hover,textarea.cke_dialog_ui_input_textarea:hover{border:1px solid #aeb3b9}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,input.cke_dialog_ui_input_tel:focus,textarea.cke_dialog_ui_input_textarea:focus,select.cke_dialog_ui_input_select:focus{outline:0;border:2px solid #139ff7}input.cke_dialog_ui_input_text:focus{padding-left:5px}textarea.cke_dialog_ui_input_textarea:focus{padding:3px 5px}select.cke_dialog_ui_input_select:focus{margin:0;width:100%!important}input.cke_dialog_ui_checkbox_input,input.cke_dialog_ui_radio_input{margin-left:1px;margin-right:2px}input.cke_dialog_ui_checkbox_input:focus,input.cke_dialog_ui_checkbox_input:active,input.cke_dialog_ui_radio_input:focus,input.cke_dialog_ui_radio_input:active{border:0;outline:2px solid #139ff7}a.cke_dialog_ui_button{display:inline-block;*display:inline;*zoom:1;padding:4px 1px;margin:0;text-align:center;color:#484848;vertical-align:middle;cursor:pointer;border:1px solid #bcbcbc;border-radius:2px;background:#f8f8f8;letter-spacing:.3px;line-height:18px;box-sizing:border-box}.cke_hc a.cke_dialog_ui_button{border-width:3px}span.cke_dialog_ui_button{padding:0 10px;cursor:pointer}a.cke_dialog_ui_button:hover{background:#fff}a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{border:2px solid #139ff7;outline:0;padding:3px 0}.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button:focus,.cke_hc a.cke_dialog_ui_button:active{border:3px solid}.cke_dialog_footer_buttons a.cke_dialog_ui_button span{color:inherit;font-size:12px;font-weight:bold;padding:0 12px}a.cke_dialog_ui_button_ok{color:#fff;background:#09863e;border:1px solid #09863e}.cke_hc a.cke_dialog_ui_button{border:1px solid #bcbcbc}a.cke_dialog_ui_button_ok:hover{background:#53aa78;border-color:#53aa78}a.cke_dialog_ui_button_ok:focus{box-shadow:inset 0 0 0 2px #FFF}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active{border-color:#139ff7}.cke_hc a.cke_dialog_ui_button_ok:hover,.cke_hc a.cke_dialog_ui_button_ok:focus,.cke_hc a.cke_dialog_ui_button_ok:active{border-color:#484848}a.cke_dialog_ui_button_ok.cke_disabled{background:#d1d1d1;border-color:#d1d1d1;cursor:default}a.cke_dialog_ui_button_ok.cke_disabled span{cursor:default}.cke_dialog_footer_buttons{display:inline-table;margin:5px;width:auto;position:relative;vertical-align:middle}div.cke_dialog_ui_input_select{display:table}select.cke_dialog_ui_input_select{height:28px;line-height:28px;background-color:#fff;border:1px solid #bcbcbc;padding:3px 3px 3px 6px;outline:0;border-radius:2px;margin:0 1px;box-sizing:border-box;width:calc(100% - 2px)!important}.cke_dialog_ui_input_file{width:100%;height:25px}.cke_hc .cke_dialog_ui_labeled_content input:focus,.cke_hc .cke_dialog_ui_labeled_content select:focus,.cke_hc .cke_dialog_ui_labeled_content textarea:focus{outline:1px dotted}.cke_dialog_ui_labeled_label{margin-left:1px}.cke_dialog_ui_labeled_required{font-weight:bold;font-size:1.2em}.cke_dialog .cke_dark_background{background-color:transparent}.cke_dialog .cke_light_background{background-color:#ebebeb}.cke_dialog .cke_centered{text-align:center}.cke_dialog a.cke_btn_reset{float:right;background:url(images/refresh.png) top left no-repeat;width:16px;height:16px;border:1px none;font-size:1px}.cke_hidpi .cke_dialog a.cke_btn_reset{background-size:16px;background-image:url(images/hidpi/refresh.png)}.cke_rtl .cke_dialog a.cke_btn_reset{float:left}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked{float:left;width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked,.cke_dialog a.cke_btn_reset{margin:2px}.cke_dialog a.cke_btn_locked{background-image:url(images/lock.png)}.cke_dialog a.cke_btn_unlocked{background-image:url(images/lock-open.png)}.cke_rtl .cke_dialog a.cke_btn_locked,.cke_rtl .cke_dialog a.cke_btn_unlocked{float:right}.cke_hidpi .cke_dialog a.cke_btn_unlocked,.cke_hidpi .cke_dialog a.cke_btn_locked{background-size:16px}.cke_hidpi .cke_dialog a.cke_btn_locked{background-image:url(images/hidpi/lock.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked{background-image:url(images/hidpi/lock-open.png)}.cke_dialog a.cke_btn_locked .cke_icon{display:none}.cke_dialog a.cke_btn_over,.cke_dialog a.cke_btn_locked:hover,.cke_dialog a.cke_btn_locked:focus,.cke_dialog a.cke_btn_locked:active,.cke_dialog a.cke_btn_unlocked:hover,.cke_dialog a.cke_btn_unlocked:focus,.cke_dialog a.cke_btn_unlocked:active,.cke_dialog a.cke_btn_reset:hover,.cke_dialog a.cke_btn_reset:focus,.cke_dialog a.cke_btn_reset:active{cursor:pointer;outline:0;margin:0;border:2px solid #139ff7}.cke_dialog fieldset{border:1px solid #bcbcbc}.cke_dialog fieldset legend{padding:0 6px}.cke_dialog_ui_checkbox,.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox{display:inline-block}.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox{padding-top:5px}.cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input,.cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input+label,.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input,.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input+label{vertical-align:middle}.cke_dialog .ImagePreviewBox{border:1px ridge #bcbcbc;overflow:scroll;height:200px;width:300px;padding:2px;background-color:white}.cke_dialog .ImagePreviewBox table td{white-space:normal}.cke_dialog .ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity = 90);background-color:#e4e4e4}.cke_dialog .cke_pastetext{width:346px;height:170px}.cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none}.cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:white;border:1px solid #aeb3b9;border-radius:3px}.cke_dialog .cke_hand{cursor:pointer}.cke_disabled{color:#a0a0a0}.cke_dialog_body .cke_label{display:none}.cke_dialog_body label{display:inline;cursor:default;letter-spacing:.3px}.cke_dialog_body label+.cke_dialog_ui_labeled_content{margin-top:2px}.cke_dialog_contents_body .cke_dialog_ui_text,.cke_dialog_contents_body .cke_dialog_ui_select,.cke_dialog_contents_body .cke_dialog_ui_hbox_last>a.cke_dialog_ui_button{margin-top:4px}a.cke_smile{overflow:hidden;display:block;text-align:center;padding:.3em 0}a.cke_smile img{vertical-align:middle}a.cke_specialchar{cursor:inherit;display:block;height:1.25em;padding:.2em .3em;text-align:center}a.cke_smile,a.cke_specialchar{border:2px solid transparent}a.cke_smile:hover,a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:hover,a.cke_specialchar:focus,a.cke_specialchar:active{background:#fff;outline:0}a.cke_smile:hover,a.cke_specialchar:hover{border-color:#888}a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:focus,a.cke_specialchar:active{border-color:#139ff7}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity = 0);width:100%;height:100%}.cke_dialog_contents_body .cke_accessibility_legend{margin:2px 7px 2px 2px}.cke_dialog_contents_body .cke_accessibility_legend:focus,.cke_dialog_contents_body .cke_accessibility_legend:active{outline:0;border:2px solid #139ff7;margin:0 5px 0 0}.cke_dialog_contents_body input[type=file]:focus,.cke_dialog_contents_body input[type=file]:active{border:2px solid #139ff7}.cke_dialog_find_fieldset{margin-top:10px!important}.cke_dialog_image_ratiolock{margin-top:52px!important}.cke_dialog_forms_select_order label.cke_dialog_ui_labeled_label{margin-left:0}.cke_dialog_forms_select_order div.cke_dialog_ui_input_select{width:100%}.cke_dialog_forms_select_order_txtsize .cke_dialog_ui_hbox_last{padding-top:4px}.cke_dialog_image_url .cke_dialog_ui_hbox_last{vertical-align:bottom}a.cke_dialog_ui_button.cke_dialog_image_browse{margin-top:10px}.cke_dialog_contents_body .cke_tpl_list{border:#bcbcbc 1px solid;margin:1px}.cke_dialog_contents_body .cke_tpl_list:focus,.cke_dialog_contents_body .cke_tpl_list:active{outline:0;margin:0;border:2px solid #139ff7}.cke_dialog_contents_body .cke_tpl_list a:focus,.cke_dialog_contents_body .cke_tpl_list a:active{outline:0}.cke_dialog_contents_body .cke_tpl_list a:focus .cke_tpl_item,.cke_dialog_contents_body .cke_tpl_list a:active .cke_tpl_item{border:2px solid #139ff7;padding:6px}.cke_rtl input.cke_dialog_ui_input_text,.cke_rtl input.cke_dialog_ui_input_password,.cke_rtl input.cke_dialog_ui_input_tel{padding-right:2px}.cke_rtl div.cke_dialog_ui_input_text,.cke_rtl div.cke_dialog_ui_input_password,.cke_rtl div.cke_dialog_ui_input_tel{padding-left:2px}.cke_rtl div.cke_dialog_ui_input_text{padding-right:1px}.cke_rtl .cke_dialog_ui_vbox_child,.cke_rtl .cke_dialog_ui_hbox_child,.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_last{padding-right:2px!important}.cke_hc .cke_dialog_title,.cke_hc .cke_dialog_footer,.cke_hc a.cke_dialog_tab,.cke_hc a.cke_dialog_ui_button,.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button_ok,.cke_hc a.cke_dialog_ui_button_ok:hover{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_tel,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:0} \ No newline at end of file +.cke_dialog{visibility:visible}.cke_dialog_body{z-index:1;background:var(--dca-white, #fff)}.cke_dialog strong{font-weight:bold}.cke_dialog_title{font-weight:bold;font-size:12px;cursor:move;position:relative;color:var(--dca-gray-darker, #484848);border-bottom:1px solid var(--dca-gray-lighter, #d1d1d1);padding:12px 19px 12px 12px;background:var(--dca-gray-super-lightest, #f8f8f8);letter-spacing:.3px}.cke_dialog_spinner{border-radius:50%;width:12px;height:12px;overflow:hidden;text-indent:-9999em;border:2px solid rgba(102,102,102,0.2);border-left-color:rgba(102,102,102,1);-webkit-animation:dialog_spinner 1s infinite linear;animation:dialog_spinner 1s infinite linear}.cke_browser_ie8 .cke_dialog_spinner,.cke_browser_ie9 .cke_dialog_spinner{background:url(images/spinner.gif) center top no-repeat;width:16px;height:16px;border:0}@-webkit-keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.cke_dialog_contents{background-color:var(--dca-white, #fff);overflow:auto;padding:15px 10px 5px 10px;margin-top:43px;border-top:1px solid var(--dca-gray-lighter, #d1d1d1)}.cke_dialog_contents_body{overflow:auto;padding:9px 10px 5px 10px;margin-top:22px}.cke_dialog_footer{text-align:right;position:relative;border-top:1px solid var(--dca-gray-lighter, #d1d1d1);background:var(--dca-gray-super-lightest, #f8f8f8)}.cke_rtl .cke_dialog_footer{text-align:left}.cke_hc .cke_dialog_footer{outline:0;border-top:1px solid var(--dca-white, #fff)}.cke_dialog .cke_resizer{margin-top:22px}.cke_dialog .cke_resizer_rtl{margin-left:5px}.cke_dialog .cke_resizer_ltr{margin-right:5px}.cke_dialog_tabs{height:33px;display:inline-block;margin:9px 0 0;position:absolute;z-index:2;left:11px}.cke_rtl .cke_dialog_tabs{left:auto;right:11px}a.cke_dialog_tab{height:25px;padding:4px 8px;display:inline-block;cursor:pointer;line-height:26px;outline:0;color:var(--dca-gray-darker, #484848);border:1px solid var(--dca-gray-lighter, #d1d1d1);border-radius:3px 3px 0 0;background:var(--dca-gray-super-lightest, #f8f8f8);min-width:90px;text-align:center;margin-left:-1px;letter-spacing:.3px}a.cke_dialog_tab:hover{background-color:var(--dca-white, #fff)}a.cke_dialog_tab:focus{border:2px solid var(--dca-primary, #139ff7);border-bottom-color:var(--dca-gray-lighter, #d1d1d1);padding:3px 7px;position:relative;z-index:1}a.cke_dialog_tab_selected{background:var(--dca-white, #fff);border-bottom-color:var(--dca-white, #fff);cursor:default;filter:none}a.cke_dialog_tab_selected:hover,a.cke_dialog_tab_selected:focus{border-bottom-color:var(--dca-white, #fff)}.cke_hc a.cke_dialog_tab:hover,.cke_hc a.cke_dialog_tab:focus,.cke_hc a.cke_dialog_tab_selected{border:3px solid;padding:2px 6px}.cke_hc a.cke_dialog_tab:focus{text-decoration:underline}a.cke_dialog_tab_disabled{color:#bababa;cursor:default}.cke_single_page .cke_dialog_tabs{display:none}.cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:0;border-top:0}a.cke_dialog_close_button{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:16px;width:16px;top:11px;z-index:5;opacity:.7;filter:alpha(opacity = 70)}.cke_rtl .cke_dialog_close_button{left:12px}.cke_ltr .cke_dialog_close_button{right:12px}.cke_hc a.cke_dialog_close_button{background-image:none}.cke_hidpi a.cke_dialog_close_button{background-image:url(images/hidpi/close.png);background-size:16px}a.cke_dialog_close_button:hover{opacity:1;filter:alpha(opacity = 100)}a.cke_dialog_close_button span{display:none}.cke_hc a.cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px}div.cke_disabled .cke_dialog_ui_labeled_content div *{background-color:#ddd;cursor:default}.cke_dialog_ui_vbox table,.cke_dialog_ui_hbox table{margin:auto}.cke_dialog_ui_vbox_child{padding:5px 0}.cke_dialog_ui_hbox{width:100%;margin-top:12px}.cke_dialog_ui_hbox_first,.cke_dialog_ui_hbox_child,.cke_dialog_ui_hbox_last{vertical-align:top}.cke_ltr .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px}.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px}.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-right:5px}.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-left:5px;padding-right:0}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_tel,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:1px solid}textarea.cke_dialog_ui_input_textarea{overflow:auto;resize:none}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,input.cke_dialog_ui_input_tel,textarea.cke_dialog_ui_input_textarea{background-color:var(--dca-white, #fff);border:1px solid var(--dca-gray-lighter, #bcbcbc);padding:4px 6px;outline:0;width:100%;*width:95%;box-sizing:border-box;border-radius:2px;min-height:28px;margin-left:1px}input.cke_dialog_ui_input_text:hover,input.cke_dialog_ui_input_password:hover,input.cke_dialog_ui_input_tel:hover,textarea.cke_dialog_ui_input_textarea:hover{border:1px solid var(--dca-gray-lighter, #aeb3b9)}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,input.cke_dialog_ui_input_tel:focus,textarea.cke_dialog_ui_input_textarea:focus,select.cke_dialog_ui_input_select:focus{outline:0;border:2px solid var(--dca-primary, #139ff7)}input.cke_dialog_ui_input_text:focus{padding-left:5px}textarea.cke_dialog_ui_input_textarea:focus{padding:3px 5px}select.cke_dialog_ui_input_select:focus{margin:0;width:100%!important}input.cke_dialog_ui_checkbox_input,input.cke_dialog_ui_radio_input{margin-left:1px;margin-right:2px}input.cke_dialog_ui_checkbox_input:focus,input.cke_dialog_ui_checkbox_input:active,input.cke_dialog_ui_radio_input:focus,input.cke_dialog_ui_radio_input:active{border:0;outline:2px solid var(--dca-primary, #139ff7)}a.cke_dialog_ui_button{display:inline-block;*display:inline;*zoom:1;padding:4px 1px;margin:0;text-align:center;color:var(--dca-gray-darker, #484848);vertical-align:middle;cursor:pointer;border:1px solid var(--dca-gray-lighter, #bcbcbc);border-radius:2px;background:var(--dca-gray-super-lightest, #f8f8f8);letter-spacing:.3px;line-height:18px;box-sizing:border-box}.cke_hc a.cke_dialog_ui_button{border-width:3px}span.cke_dialog_ui_button{padding:0 10px;cursor:pointer}a.cke_dialog_ui_button:hover{background:var(--dca-white, #fff)}a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{border:2px solid var(--dca-primary, #139ff7);outline:0;padding:3px 0}.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button:focus,.cke_hc a.cke_dialog_ui_button:active{border:3px solid}.cke_dialog_footer_buttons a.cke_dialog_ui_button span{color:inherit;font-size:12px;font-weight:bold;padding:0 12px}a.cke_dialog_ui_button_ok{color:var(--dca-white, #fff);background:#09863e;border:1px solid #09863e}.cke_hc a.cke_dialog_ui_button{border:1px solid var(--dca-gray-lighter, #bcbcbc)}a.cke_dialog_ui_button_ok:hover{background:#53aa78;border-color:#53aa78}a.cke_dialog_ui_button_ok:focus{box-shadow:inset 0 0 0 2px var(--dca-white, #fff)}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active{border-color:var(--dca-primary, #139ff7)}.cke_hc a.cke_dialog_ui_button_ok:hover,.cke_hc a.cke_dialog_ui_button_ok:focus,.cke_hc a.cke_dialog_ui_button_ok:active{border-color:var(--dca-gray-darker, #484848)}a.cke_dialog_ui_button_ok.cke_disabled{background:var(--dca-gray-lighter, #d1d1d1);border-color:var(--dca-gray-lighter, #d1d1d1);cursor:default}a.cke_dialog_ui_button_ok.cke_disabled span{cursor:default}.cke_dialog_footer_buttons{display:inline-table;margin:5px;width:auto;position:relative;vertical-align:middle}div.cke_dialog_ui_input_select{display:table}select.cke_dialog_ui_input_select{height:28px;line-height:28px;background-color:var(--dca-white, #fff);border:1px solid var(--dca-gray-lighter, #bcbcbc);padding:3px 3px 3px 6px;outline:0;border-radius:2px;margin:0 1px;box-sizing:border-box;width:calc(100% - 2px)!important}.cke_dialog_ui_input_file{width:100%;height:25px}.cke_hc .cke_dialog_ui_labeled_content input:focus,.cke_hc .cke_dialog_ui_labeled_content select:focus,.cke_hc .cke_dialog_ui_labeled_content textarea:focus{outline:1px dotted}.cke_dialog_ui_labeled_label{margin-left:1px}.cke_dialog_ui_labeled_required{font-weight:bold;font-size:1.2em}.cke_dialog .cke_dark_background{background-color:transparent}.cke_dialog .cke_light_background{background-color:var(--dca-gray-lightest, #ebebeb)}.cke_dialog .cke_centered{text-align:center}.cke_dialog a.cke_btn_reset{float:right;background:url(images/refresh.png) top left no-repeat;width:16px;height:16px;border:1px none;font-size:1px}.cke_hidpi .cke_dialog a.cke_btn_reset{background-size:16px;background-image:url(images/hidpi/refresh.png)}.cke_rtl .cke_dialog a.cke_btn_reset{float:left}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked{float:left;width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked,.cke_dialog a.cke_btn_reset{margin:2px}.cke_dialog a.cke_btn_locked{background-image:url(images/lock.png)}.cke_dialog a.cke_btn_unlocked{background-image:url(images/lock-open.png)}.cke_rtl .cke_dialog a.cke_btn_locked,.cke_rtl .cke_dialog a.cke_btn_unlocked{float:right}.cke_hidpi .cke_dialog a.cke_btn_unlocked,.cke_hidpi .cke_dialog a.cke_btn_locked{background-size:16px}.cke_hidpi .cke_dialog a.cke_btn_locked{background-image:url(images/hidpi/lock.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked{background-image:url(images/hidpi/lock-open.png)}.cke_dialog a.cke_btn_locked .cke_icon{display:none}.cke_dialog a.cke_btn_over,.cke_dialog a.cke_btn_locked:hover,.cke_dialog a.cke_btn_locked:focus,.cke_dialog a.cke_btn_locked:active,.cke_dialog a.cke_btn_unlocked:hover,.cke_dialog a.cke_btn_unlocked:focus,.cke_dialog a.cke_btn_unlocked:active,.cke_dialog a.cke_btn_reset:hover,.cke_dialog a.cke_btn_reset:focus,.cke_dialog a.cke_btn_reset:active{cursor:pointer;outline:0;margin:0;border:2px solid var(--dca-primary, #139ff7)}.cke_dialog fieldset{border:1px solid var(--dca-gray-lighter, #bcbcbc)}.cke_dialog fieldset legend{padding:0 6px}.cke_dialog_ui_checkbox,.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox{display:inline-block}.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox{padding-top:5px}.cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input,.cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input+label,.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input,.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input+label{vertical-align:middle}.cke_dialog .ImagePreviewBox{border:1px ridge var(--dca-gray-lighter, #bcbcbc);overflow:scroll;height:200px;width:300px;padding:2px;background-color:white}.cke_dialog .ImagePreviewBox table td{white-space:normal}.cke_dialog .ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity = 90);background-color:var(--dca-gray-lightest, #e4e4e4)}.cke_dialog .cke_pastetext{width:346px;height:170px}.cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none}.cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:white;border:1px solid var(--dca-gray-lighter, #aeb3b9);border-radius:3px}.cke_dialog .cke_hand{cursor:pointer}.cke_disabled{color:var(--dca-gray-light, #a0a0a0)}.cke_dialog_body .cke_label{display:none}.cke_dialog_body label{display:inline;cursor:default;letter-spacing:.3px}.cke_dialog_body label+.cke_dialog_ui_labeled_content{margin-top:2px}.cke_dialog_contents_body .cke_dialog_ui_text,.cke_dialog_contents_body .cke_dialog_ui_select,.cke_dialog_contents_body .cke_dialog_ui_hbox_last>a.cke_dialog_ui_button{margin-top:4px}a.cke_smile{overflow:hidden;display:block;text-align:center;padding:.3em 0}a.cke_smile img{vertical-align:middle}a.cke_specialchar{cursor:inherit;display:block;height:1.25em;padding:.2em .3em;text-align:center}a.cke_smile,a.cke_specialchar{border:2px solid transparent}a.cke_smile:hover,a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:hover,a.cke_specialchar:focus,a.cke_specialchar:active{background:var(--dca-white, #fff);outline:0}a.cke_smile:hover,a.cke_specialchar:hover{border-color:var(--dca-gray, #888)}a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:focus,a.cke_specialchar:active{border-color:var(--dca-primary, #139ff7)}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity = 0);width:100%;height:100%}.cke_dialog_contents_body .cke_accessibility_legend{margin:2px 7px 2px 2px}.cke_dialog_contents_body .cke_accessibility_legend:focus,.cke_dialog_contents_body .cke_accessibility_legend:active{outline:0;border:2px solid var(--dca-primary, #139ff7);margin:0 5px 0 0}.cke_dialog_contents_body input[type=file]:focus,.cke_dialog_contents_body input[type=file]:active{border:2px solid var(--dca-primary, #139ff7)}.cke_dialog_find_fieldset{margin-top:10px!important}.cke_dialog_image_ratiolock{margin-top:52px!important}.cke_dialog_forms_select_order label.cke_dialog_ui_labeled_label{margin-left:0}.cke_dialog_forms_select_order div.cke_dialog_ui_input_select{width:100%}.cke_dialog_forms_select_order_txtsize .cke_dialog_ui_hbox_last{padding-top:4px}.cke_dialog_image_url .cke_dialog_ui_hbox_last{vertical-align:bottom}a.cke_dialog_ui_button.cke_dialog_image_browse{margin-top:10px}.cke_dialog_contents_body .cke_tpl_list{border:var(--dca-gray-lighter, #bcbcbc) 1px solid;margin:1px}.cke_dialog_contents_body .cke_tpl_list:focus,.cke_dialog_contents_body .cke_tpl_list:active{outline:0;margin:0;border:2px solid var(--dca-primary, #139ff7)}.cke_dialog_contents_body .cke_tpl_list a:focus,.cke_dialog_contents_body .cke_tpl_list a:active{outline:0}.cke_dialog_contents_body .cke_tpl_list a:focus .cke_tpl_item,.cke_dialog_contents_body .cke_tpl_list a:active .cke_tpl_item{border:2px solid var(--dca-primary, #139ff7);padding:6px}.cke_rtl input.cke_dialog_ui_input_text,.cke_rtl input.cke_dialog_ui_input_password,.cke_rtl input.cke_dialog_ui_input_tel{padding-right:2px}.cke_rtl div.cke_dialog_ui_input_text,.cke_rtl div.cke_dialog_ui_input_password,.cke_rtl div.cke_dialog_ui_input_tel{padding-left:2px}.cke_rtl div.cke_dialog_ui_input_text{padding-right:1px}.cke_rtl .cke_dialog_ui_vbox_child,.cke_rtl .cke_dialog_ui_hbox_child,.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_last{padding-right:2px!important}.cke_hc .cke_dialog_title,.cke_hc .cke_dialog_footer,.cke_hc a.cke_dialog_tab,.cke_hc a.cke_dialog_ui_button,.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button_ok,.cke_hc a.cke_dialog_ui_button_ok:hover{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_tel,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:0} +/* Patched for djangocms-text-ckeditor */ diff --git a/djangocms_text_ckeditor/static/djangocms_text_ckeditor/ckeditor/skins/moono-lisa/dialog_ie8.css b/djangocms_text_ckeditor/static/djangocms_text_ckeditor/ckeditor/skins/moono-lisa/dialog_ie8.css index 8627bc8b4..d5b2bc7be 100644 --- a/djangocms_text_ckeditor/static/djangocms_text_ckeditor/ckeditor/skins/moono-lisa/dialog_ie8.css +++ b/djangocms_text_ckeditor/static/djangocms_text_ckeditor/ckeditor/skins/moono-lisa/dialog_ie8.css @@ -2,4 +2,5 @@ Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -.cke_dialog{visibility:visible}.cke_dialog_body{z-index:1;background:#fff}.cke_dialog strong{font-weight:bold}.cke_dialog_title{font-weight:bold;font-size:12px;cursor:move;position:relative;color:#484848;border-bottom:1px solid #d1d1d1;padding:12px 19px 12px 12px;background:#f8f8f8;letter-spacing:.3px}.cke_dialog_spinner{border-radius:50%;width:12px;height:12px;overflow:hidden;text-indent:-9999em;border:2px solid rgba(102,102,102,0.2);border-left-color:rgba(102,102,102,1);-webkit-animation:dialog_spinner 1s infinite linear;animation:dialog_spinner 1s infinite linear}.cke_browser_ie8 .cke_dialog_spinner,.cke_browser_ie9 .cke_dialog_spinner{background:url(images/spinner.gif) center top no-repeat;width:16px;height:16px;border:0}@-webkit-keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.cke_dialog_contents{background-color:#fff;overflow:auto;padding:15px 10px 5px 10px;margin-top:43px;border-top:1px solid #d1d1d1}.cke_dialog_contents_body{overflow:auto;padding:9px 10px 5px 10px;margin-top:22px}.cke_dialog_footer{text-align:right;position:relative;border-top:1px solid #d1d1d1;background:#f8f8f8}.cke_rtl .cke_dialog_footer{text-align:left}.cke_hc .cke_dialog_footer{outline:0;border-top:1px solid #fff}.cke_dialog .cke_resizer{margin-top:22px}.cke_dialog .cke_resizer_rtl{margin-left:5px}.cke_dialog .cke_resizer_ltr{margin-right:5px}.cke_dialog_tabs{height:33px;display:inline-block;margin:9px 0 0;position:absolute;z-index:2;left:11px}.cke_rtl .cke_dialog_tabs{left:auto;right:11px}a.cke_dialog_tab{height:25px;padding:4px 8px;display:inline-block;cursor:pointer;line-height:26px;outline:0;color:#484848;border:1px solid #d1d1d1;border-radius:3px 3px 0 0;background:#f8f8f8;min-width:90px;text-align:center;margin-left:-1px;letter-spacing:.3px}a.cke_dialog_tab:hover{background-color:#fff}a.cke_dialog_tab:focus{border:2px solid #139ff7;border-bottom-color:#d1d1d1;padding:3px 7px;position:relative;z-index:1}a.cke_dialog_tab_selected{background:#fff;border-bottom-color:#fff;cursor:default;filter:none}a.cke_dialog_tab_selected:hover,a.cke_dialog_tab_selected:focus{border-bottom-color:#fff}.cke_hc a.cke_dialog_tab:hover,.cke_hc a.cke_dialog_tab:focus,.cke_hc a.cke_dialog_tab_selected{border:3px solid;padding:2px 6px}.cke_hc a.cke_dialog_tab:focus{text-decoration:underline}a.cke_dialog_tab_disabled{color:#bababa;cursor:default}.cke_single_page .cke_dialog_tabs{display:none}.cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:0;border-top:0}a.cke_dialog_close_button{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:16px;width:16px;top:11px;z-index:5;opacity:.7;filter:alpha(opacity = 70)}.cke_rtl .cke_dialog_close_button{left:12px}.cke_ltr .cke_dialog_close_button{right:12px}.cke_hc a.cke_dialog_close_button{background-image:none}.cke_hidpi a.cke_dialog_close_button{background-image:url(images/hidpi/close.png);background-size:16px}a.cke_dialog_close_button:hover{opacity:1;filter:alpha(opacity = 100)}a.cke_dialog_close_button span{display:none}.cke_hc a.cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px}div.cke_disabled .cke_dialog_ui_labeled_content div *{background-color:#ddd;cursor:default}.cke_dialog_ui_vbox table,.cke_dialog_ui_hbox table{margin:auto}.cke_dialog_ui_vbox_child{padding:5px 0}.cke_dialog_ui_hbox{width:100%;margin-top:12px}.cke_dialog_ui_hbox_first,.cke_dialog_ui_hbox_child,.cke_dialog_ui_hbox_last{vertical-align:top}.cke_ltr .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px}.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px}.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-right:5px}.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-left:5px;padding-right:0}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_tel,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:1px solid}textarea.cke_dialog_ui_input_textarea{overflow:auto;resize:none}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,input.cke_dialog_ui_input_tel,textarea.cke_dialog_ui_input_textarea{background-color:#fff;border:1px solid #bcbcbc;padding:4px 6px;outline:0;width:100%;*width:95%;box-sizing:border-box;border-radius:2px;min-height:28px;margin-left:1px}input.cke_dialog_ui_input_text:hover,input.cke_dialog_ui_input_password:hover,input.cke_dialog_ui_input_tel:hover,textarea.cke_dialog_ui_input_textarea:hover{border:1px solid #aeb3b9}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,input.cke_dialog_ui_input_tel:focus,textarea.cke_dialog_ui_input_textarea:focus,select.cke_dialog_ui_input_select:focus{outline:0;border:2px solid #139ff7}input.cke_dialog_ui_input_text:focus{padding-left:5px}textarea.cke_dialog_ui_input_textarea:focus{padding:3px 5px}select.cke_dialog_ui_input_select:focus{margin:0;width:100%!important}input.cke_dialog_ui_checkbox_input,input.cke_dialog_ui_radio_input{margin-left:1px;margin-right:2px}input.cke_dialog_ui_checkbox_input:focus,input.cke_dialog_ui_checkbox_input:active,input.cke_dialog_ui_radio_input:focus,input.cke_dialog_ui_radio_input:active{border:0;outline:2px solid #139ff7}a.cke_dialog_ui_button{display:inline-block;*display:inline;*zoom:1;padding:4px 1px;margin:0;text-align:center;color:#484848;vertical-align:middle;cursor:pointer;border:1px solid #bcbcbc;border-radius:2px;background:#f8f8f8;letter-spacing:.3px;line-height:18px;box-sizing:border-box}.cke_hc a.cke_dialog_ui_button{border-width:3px}span.cke_dialog_ui_button{padding:0 10px;cursor:pointer}a.cke_dialog_ui_button:hover{background:#fff}a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{border:2px solid #139ff7;outline:0;padding:3px 0}.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button:focus,.cke_hc a.cke_dialog_ui_button:active{border:3px solid}.cke_dialog_footer_buttons a.cke_dialog_ui_button span{color:inherit;font-size:12px;font-weight:bold;padding:0 12px}a.cke_dialog_ui_button_ok{color:#fff;background:#09863e;border:1px solid #09863e}.cke_hc a.cke_dialog_ui_button{border:1px solid #bcbcbc}a.cke_dialog_ui_button_ok:hover{background:#53aa78;border-color:#53aa78}a.cke_dialog_ui_button_ok:focus{box-shadow:inset 0 0 0 2px #FFF}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active{border-color:#139ff7}.cke_hc a.cke_dialog_ui_button_ok:hover,.cke_hc a.cke_dialog_ui_button_ok:focus,.cke_hc a.cke_dialog_ui_button_ok:active{border-color:#484848}a.cke_dialog_ui_button_ok.cke_disabled{background:#d1d1d1;border-color:#d1d1d1;cursor:default}a.cke_dialog_ui_button_ok.cke_disabled span{cursor:default}.cke_dialog_footer_buttons{display:inline-table;margin:5px;width:auto;position:relative;vertical-align:middle}div.cke_dialog_ui_input_select{display:table}select.cke_dialog_ui_input_select{height:28px;line-height:28px;background-color:#fff;border:1px solid #bcbcbc;padding:3px 3px 3px 6px;outline:0;border-radius:2px;margin:0 1px;box-sizing:border-box;width:calc(100% - 2px)!important}.cke_dialog_ui_input_file{width:100%;height:25px}.cke_hc .cke_dialog_ui_labeled_content input:focus,.cke_hc .cke_dialog_ui_labeled_content select:focus,.cke_hc .cke_dialog_ui_labeled_content textarea:focus{outline:1px dotted}.cke_dialog_ui_labeled_label{margin-left:1px}.cke_dialog_ui_labeled_required{font-weight:bold;font-size:1.2em}.cke_dialog .cke_dark_background{background-color:transparent}.cke_dialog .cke_light_background{background-color:#ebebeb}.cke_dialog .cke_centered{text-align:center}.cke_dialog a.cke_btn_reset{float:right;background:url(images/refresh.png) top left no-repeat;width:16px;height:16px;border:1px none;font-size:1px}.cke_hidpi .cke_dialog a.cke_btn_reset{background-size:16px;background-image:url(images/hidpi/refresh.png)}.cke_rtl .cke_dialog a.cke_btn_reset{float:left}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked{float:left;width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked,.cke_dialog a.cke_btn_reset{margin:2px}.cke_dialog a.cke_btn_locked{background-image:url(images/lock.png)}.cke_dialog a.cke_btn_unlocked{background-image:url(images/lock-open.png)}.cke_rtl .cke_dialog a.cke_btn_locked,.cke_rtl .cke_dialog a.cke_btn_unlocked{float:right}.cke_hidpi .cke_dialog a.cke_btn_unlocked,.cke_hidpi .cke_dialog a.cke_btn_locked{background-size:16px}.cke_hidpi .cke_dialog a.cke_btn_locked{background-image:url(images/hidpi/lock.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked{background-image:url(images/hidpi/lock-open.png)}.cke_dialog a.cke_btn_locked .cke_icon{display:none}.cke_dialog a.cke_btn_over,.cke_dialog a.cke_btn_locked:hover,.cke_dialog a.cke_btn_locked:focus,.cke_dialog a.cke_btn_locked:active,.cke_dialog a.cke_btn_unlocked:hover,.cke_dialog a.cke_btn_unlocked:focus,.cke_dialog a.cke_btn_unlocked:active,.cke_dialog a.cke_btn_reset:hover,.cke_dialog a.cke_btn_reset:focus,.cke_dialog a.cke_btn_reset:active{cursor:pointer;outline:0;margin:0;border:2px solid #139ff7}.cke_dialog fieldset{border:1px solid #bcbcbc}.cke_dialog fieldset legend{padding:0 6px}.cke_dialog_ui_checkbox,.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox{display:inline-block}.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox{padding-top:5px}.cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input,.cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input+label,.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input,.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input+label{vertical-align:middle}.cke_dialog .ImagePreviewBox{border:1px ridge #bcbcbc;overflow:scroll;height:200px;width:300px;padding:2px;background-color:white}.cke_dialog .ImagePreviewBox table td{white-space:normal}.cke_dialog .ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity = 90);background-color:#e4e4e4}.cke_dialog .cke_pastetext{width:346px;height:170px}.cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none}.cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:white;border:1px solid #aeb3b9;border-radius:3px}.cke_dialog .cke_hand{cursor:pointer}.cke_disabled{color:#a0a0a0}.cke_dialog_body .cke_label{display:none}.cke_dialog_body label{display:inline;cursor:default;letter-spacing:.3px}.cke_dialog_body label+.cke_dialog_ui_labeled_content{margin-top:2px}.cke_dialog_contents_body .cke_dialog_ui_text,.cke_dialog_contents_body .cke_dialog_ui_select,.cke_dialog_contents_body .cke_dialog_ui_hbox_last>a.cke_dialog_ui_button{margin-top:4px}a.cke_smile{overflow:hidden;display:block;text-align:center;padding:.3em 0}a.cke_smile img{vertical-align:middle}a.cke_specialchar{cursor:inherit;display:block;height:1.25em;padding:.2em .3em;text-align:center}a.cke_smile,a.cke_specialchar{border:2px solid transparent}a.cke_smile:hover,a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:hover,a.cke_specialchar:focus,a.cke_specialchar:active{background:#fff;outline:0}a.cke_smile:hover,a.cke_specialchar:hover{border-color:#888}a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:focus,a.cke_specialchar:active{border-color:#139ff7}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity = 0);width:100%;height:100%}.cke_dialog_contents_body .cke_accessibility_legend{margin:2px 7px 2px 2px}.cke_dialog_contents_body .cke_accessibility_legend:focus,.cke_dialog_contents_body .cke_accessibility_legend:active{outline:0;border:2px solid #139ff7;margin:0 5px 0 0}.cke_dialog_contents_body input[type=file]:focus,.cke_dialog_contents_body input[type=file]:active{border:2px solid #139ff7}.cke_dialog_find_fieldset{margin-top:10px!important}.cke_dialog_image_ratiolock{margin-top:52px!important}.cke_dialog_forms_select_order label.cke_dialog_ui_labeled_label{margin-left:0}.cke_dialog_forms_select_order div.cke_dialog_ui_input_select{width:100%}.cke_dialog_forms_select_order_txtsize .cke_dialog_ui_hbox_last{padding-top:4px}.cke_dialog_image_url .cke_dialog_ui_hbox_last{vertical-align:bottom}a.cke_dialog_ui_button.cke_dialog_image_browse{margin-top:10px}.cke_dialog_contents_body .cke_tpl_list{border:#bcbcbc 1px solid;margin:1px}.cke_dialog_contents_body .cke_tpl_list:focus,.cke_dialog_contents_body .cke_tpl_list:active{outline:0;margin:0;border:2px solid #139ff7}.cke_dialog_contents_body .cke_tpl_list a:focus,.cke_dialog_contents_body .cke_tpl_list a:active{outline:0}.cke_dialog_contents_body .cke_tpl_list a:focus .cke_tpl_item,.cke_dialog_contents_body .cke_tpl_list a:active .cke_tpl_item{border:2px solid #139ff7;padding:6px}.cke_rtl input.cke_dialog_ui_input_text,.cke_rtl input.cke_dialog_ui_input_password,.cke_rtl input.cke_dialog_ui_input_tel{padding-right:2px}.cke_rtl div.cke_dialog_ui_input_text,.cke_rtl div.cke_dialog_ui_input_password,.cke_rtl div.cke_dialog_ui_input_tel{padding-left:2px}.cke_rtl div.cke_dialog_ui_input_text{padding-right:1px}.cke_rtl .cke_dialog_ui_vbox_child,.cke_rtl .cke_dialog_ui_hbox_child,.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_last{padding-right:2px!important}.cke_hc .cke_dialog_title,.cke_hc .cke_dialog_footer,.cke_hc a.cke_dialog_tab,.cke_hc a.cke_dialog_ui_button,.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button_ok,.cke_hc a.cke_dialog_ui_button_ok:hover{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_tel,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:0}a.cke_dialog_ui_button{min-height:18px}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,input.cke_dialog_ui_input_tel,textarea.cke_dialog_ui_input_textarea{min-height:18px}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,input.cke_dialog_ui_input_tel:focus,textarea.cke_dialog_ui_input_textarea:focus{padding-top:4px;padding-bottom:2px}select.cke_dialog_ui_input_select{width:100%!important}select.cke_dialog_ui_input_select:focus{margin-left:1px;width:100%!important;padding-top:2px;padding-bottom:2px} \ No newline at end of file +.cke_dialog{visibility:visible}.cke_dialog_body{z-index:1;background:var(--dca-white, #fff)}.cke_dialog strong{font-weight:bold}.cke_dialog_title{font-weight:bold;font-size:12px;cursor:move;position:relative;color:var(--dca-gray-darker, #484848);border-bottom:1px solid var(--dca-gray-lighter, #d1d1d1);padding:12px 19px 12px 12px;background:var(--dca-gray-super-lightest, #f8f8f8);letter-spacing:.3px}.cke_dialog_spinner{border-radius:50%;width:12px;height:12px;overflow:hidden;text-indent:-9999em;border:2px solid rgba(102,102,102,0.2);border-left-color:rgba(102,102,102,1);-webkit-animation:dialog_spinner 1s infinite linear;animation:dialog_spinner 1s infinite linear}.cke_browser_ie8 .cke_dialog_spinner,.cke_browser_ie9 .cke_dialog_spinner{background:url(images/spinner.gif) center top no-repeat;width:16px;height:16px;border:0}@-webkit-keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.cke_dialog_contents{background-color:var(--dca-white, #fff);overflow:auto;padding:15px 10px 5px 10px;margin-top:43px;border-top:1px solid var(--dca-gray-lighter, #d1d1d1)}.cke_dialog_contents_body{overflow:auto;padding:9px 10px 5px 10px;margin-top:22px}.cke_dialog_footer{text-align:right;position:relative;border-top:1px solid var(--dca-gray-lighter, #d1d1d1);background:var(--dca-gray-super-lightest, #f8f8f8)}.cke_rtl .cke_dialog_footer{text-align:left}.cke_hc .cke_dialog_footer{outline:0;border-top:1px solid var(--dca-white, #fff)}.cke_dialog .cke_resizer{margin-top:22px}.cke_dialog .cke_resizer_rtl{margin-left:5px}.cke_dialog .cke_resizer_ltr{margin-right:5px}.cke_dialog_tabs{height:33px;display:inline-block;margin:9px 0 0;position:absolute;z-index:2;left:11px}.cke_rtl .cke_dialog_tabs{left:auto;right:11px}a.cke_dialog_tab{height:25px;padding:4px 8px;display:inline-block;cursor:pointer;line-height:26px;outline:0;color:var(--dca-gray-darker, #484848);border:1px solid var(--dca-gray-lighter, #d1d1d1);border-radius:3px 3px 0 0;background:var(--dca-gray-super-lightest, #f8f8f8);min-width:90px;text-align:center;margin-left:-1px;letter-spacing:.3px}a.cke_dialog_tab:hover{background-color:var(--dca-white, #fff)}a.cke_dialog_tab:focus{border:2px solid var(--dca-primary, #139ff7);border-bottom-color:var(--dca-gray-lighter, #d1d1d1);padding:3px 7px;position:relative;z-index:1}a.cke_dialog_tab_selected{background:var(--dca-white, #fff);border-bottom-color:var(--dca-white, #fff);cursor:default;filter:none}a.cke_dialog_tab_selected:hover,a.cke_dialog_tab_selected:focus{border-bottom-color:var(--dca-white, #fff)}.cke_hc a.cke_dialog_tab:hover,.cke_hc a.cke_dialog_tab:focus,.cke_hc a.cke_dialog_tab_selected{border:3px solid;padding:2px 6px}.cke_hc a.cke_dialog_tab:focus{text-decoration:underline}a.cke_dialog_tab_disabled{color:#bababa;cursor:default}.cke_single_page .cke_dialog_tabs{display:none}.cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:0;border-top:0}a.cke_dialog_close_button{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:16px;width:16px;top:11px;z-index:5;opacity:.7;filter:alpha(opacity = 70)}.cke_rtl .cke_dialog_close_button{left:12px}.cke_ltr .cke_dialog_close_button{right:12px}.cke_hc a.cke_dialog_close_button{background-image:none}.cke_hidpi a.cke_dialog_close_button{background-image:url(images/hidpi/close.png);background-size:16px}a.cke_dialog_close_button:hover{opacity:1;filter:alpha(opacity = 100)}a.cke_dialog_close_button span{display:none}.cke_hc a.cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px}div.cke_disabled .cke_dialog_ui_labeled_content div *{background-color:#ddd;cursor:default}.cke_dialog_ui_vbox table,.cke_dialog_ui_hbox table{margin:auto}.cke_dialog_ui_vbox_child{padding:5px 0}.cke_dialog_ui_hbox{width:100%;margin-top:12px}.cke_dialog_ui_hbox_first,.cke_dialog_ui_hbox_child,.cke_dialog_ui_hbox_last{vertical-align:top}.cke_ltr .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px}.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px}.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-right:5px}.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-left:5px;padding-right:0}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_tel,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:1px solid}textarea.cke_dialog_ui_input_textarea{overflow:auto;resize:none}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,input.cke_dialog_ui_input_tel,textarea.cke_dialog_ui_input_textarea{background-color:var(--dca-white, #fff);border:1px solid var(--dca-gray-lighter, #bcbcbc);padding:4px 6px;outline:0;width:100%;*width:95%;box-sizing:border-box;border-radius:2px;min-height:28px;margin-left:1px}input.cke_dialog_ui_input_text:hover,input.cke_dialog_ui_input_password:hover,input.cke_dialog_ui_input_tel:hover,textarea.cke_dialog_ui_input_textarea:hover{border:1px solid var(--dca-gray-lighter, #aeb3b9)}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,input.cke_dialog_ui_input_tel:focus,textarea.cke_dialog_ui_input_textarea:focus,select.cke_dialog_ui_input_select:focus{outline:0;border:2px solid var(--dca-primary, #139ff7)}input.cke_dialog_ui_input_text:focus{padding-left:5px}textarea.cke_dialog_ui_input_textarea:focus{padding:3px 5px}select.cke_dialog_ui_input_select:focus{margin:0;width:100%!important}input.cke_dialog_ui_checkbox_input,input.cke_dialog_ui_radio_input{margin-left:1px;margin-right:2px}input.cke_dialog_ui_checkbox_input:focus,input.cke_dialog_ui_checkbox_input:active,input.cke_dialog_ui_radio_input:focus,input.cke_dialog_ui_radio_input:active{border:0;outline:2px solid var(--dca-primary, #139ff7)}a.cke_dialog_ui_button{display:inline-block;*display:inline;*zoom:1;padding:4px 1px;margin:0;text-align:center;color:var(--dca-gray-darker, #484848);vertical-align:middle;cursor:pointer;border:1px solid var(--dca-gray-lighter, #bcbcbc);border-radius:2px;background:var(--dca-gray-super-lightest, #f8f8f8);letter-spacing:.3px;line-height:18px;box-sizing:border-box}.cke_hc a.cke_dialog_ui_button{border-width:3px}span.cke_dialog_ui_button{padding:0 10px;cursor:pointer}a.cke_dialog_ui_button:hover{background:var(--dca-white, #fff)}a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{border:2px solid var(--dca-primary, #139ff7);outline:0;padding:3px 0}.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button:focus,.cke_hc a.cke_dialog_ui_button:active{border:3px solid}.cke_dialog_footer_buttons a.cke_dialog_ui_button span{color:inherit;font-size:12px;font-weight:bold;padding:0 12px}a.cke_dialog_ui_button_ok{color:var(--dca-white, #fff);background:#09863e;border:1px solid #09863e}.cke_hc a.cke_dialog_ui_button{border:1px solid var(--dca-gray-lighter, #bcbcbc)}a.cke_dialog_ui_button_ok:hover{background:#53aa78;border-color:#53aa78}a.cke_dialog_ui_button_ok:focus{box-shadow:inset 0 0 0 2px var(--dca-white, #fff)}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active{border-color:var(--dca-primary, #139ff7)}.cke_hc a.cke_dialog_ui_button_ok:hover,.cke_hc a.cke_dialog_ui_button_ok:focus,.cke_hc a.cke_dialog_ui_button_ok:active{border-color:var(--dca-gray-darker, #484848)}a.cke_dialog_ui_button_ok.cke_disabled{background:var(--dca-gray-lighter, #d1d1d1);border-color:var(--dca-gray-lighter, #d1d1d1);cursor:default}a.cke_dialog_ui_button_ok.cke_disabled span{cursor:default}.cke_dialog_footer_buttons{display:inline-table;margin:5px;width:auto;position:relative;vertical-align:middle}div.cke_dialog_ui_input_select{display:table}select.cke_dialog_ui_input_select{height:28px;line-height:28px;background-color:var(--dca-white, #fff);border:1px solid var(--dca-gray-lighter, #bcbcbc);padding:3px 3px 3px 6px;outline:0;border-radius:2px;margin:0 1px;box-sizing:border-box;width:calc(100% - 2px)!important}.cke_dialog_ui_input_file{width:100%;height:25px}.cke_hc .cke_dialog_ui_labeled_content input:focus,.cke_hc .cke_dialog_ui_labeled_content select:focus,.cke_hc .cke_dialog_ui_labeled_content textarea:focus{outline:1px dotted}.cke_dialog_ui_labeled_label{margin-left:1px}.cke_dialog_ui_labeled_required{font-weight:bold;font-size:1.2em}.cke_dialog .cke_dark_background{background-color:transparent}.cke_dialog .cke_light_background{background-color:var(--dca-gray-lightest, #ebebeb)}.cke_dialog .cke_centered{text-align:center}.cke_dialog a.cke_btn_reset{float:right;background:url(images/refresh.png) top left no-repeat;width:16px;height:16px;border:1px none;font-size:1px}.cke_hidpi .cke_dialog a.cke_btn_reset{background-size:16px;background-image:url(images/hidpi/refresh.png)}.cke_rtl .cke_dialog a.cke_btn_reset{float:left}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked{float:left;width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked,.cke_dialog a.cke_btn_reset{margin:2px}.cke_dialog a.cke_btn_locked{background-image:url(images/lock.png)}.cke_dialog a.cke_btn_unlocked{background-image:url(images/lock-open.png)}.cke_rtl .cke_dialog a.cke_btn_locked,.cke_rtl .cke_dialog a.cke_btn_unlocked{float:right}.cke_hidpi .cke_dialog a.cke_btn_unlocked,.cke_hidpi .cke_dialog a.cke_btn_locked{background-size:16px}.cke_hidpi .cke_dialog a.cke_btn_locked{background-image:url(images/hidpi/lock.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked{background-image:url(images/hidpi/lock-open.png)}.cke_dialog a.cke_btn_locked .cke_icon{display:none}.cke_dialog a.cke_btn_over,.cke_dialog a.cke_btn_locked:hover,.cke_dialog a.cke_btn_locked:focus,.cke_dialog a.cke_btn_locked:active,.cke_dialog a.cke_btn_unlocked:hover,.cke_dialog a.cke_btn_unlocked:focus,.cke_dialog a.cke_btn_unlocked:active,.cke_dialog a.cke_btn_reset:hover,.cke_dialog a.cke_btn_reset:focus,.cke_dialog a.cke_btn_reset:active{cursor:pointer;outline:0;margin:0;border:2px solid var(--dca-primary, #139ff7)}.cke_dialog fieldset{border:1px solid var(--dca-gray-lighter, #bcbcbc)}.cke_dialog fieldset legend{padding:0 6px}.cke_dialog_ui_checkbox,.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox{display:inline-block}.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox{padding-top:5px}.cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input,.cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input+label,.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input,.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input+label{vertical-align:middle}.cke_dialog .ImagePreviewBox{border:1px ridge var(--dca-gray-lighter, #bcbcbc);overflow:scroll;height:200px;width:300px;padding:2px;background-color:white}.cke_dialog .ImagePreviewBox table td{white-space:normal}.cke_dialog .ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity = 90);background-color:var(--dca-gray-lightest, #e4e4e4)}.cke_dialog .cke_pastetext{width:346px;height:170px}.cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none}.cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:white;border:1px solid var(--dca-gray-lighter, #aeb3b9);border-radius:3px}.cke_dialog .cke_hand{cursor:pointer}.cke_disabled{color:var(--dca-gray-light, #a0a0a0)}.cke_dialog_body .cke_label{display:none}.cke_dialog_body label{display:inline;cursor:default;letter-spacing:.3px}.cke_dialog_body label+.cke_dialog_ui_labeled_content{margin-top:2px}.cke_dialog_contents_body .cke_dialog_ui_text,.cke_dialog_contents_body .cke_dialog_ui_select,.cke_dialog_contents_body .cke_dialog_ui_hbox_last>a.cke_dialog_ui_button{margin-top:4px}a.cke_smile{overflow:hidden;display:block;text-align:center;padding:.3em 0}a.cke_smile img{vertical-align:middle}a.cke_specialchar{cursor:inherit;display:block;height:1.25em;padding:.2em .3em;text-align:center}a.cke_smile,a.cke_specialchar{border:2px solid transparent}a.cke_smile:hover,a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:hover,a.cke_specialchar:focus,a.cke_specialchar:active{background:var(--dca-white, #fff);outline:0}a.cke_smile:hover,a.cke_specialchar:hover{border-color:var(--dca-gray, #888)}a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:focus,a.cke_specialchar:active{border-color:var(--dca-primary, #139ff7)}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity = 0);width:100%;height:100%}.cke_dialog_contents_body .cke_accessibility_legend{margin:2px 7px 2px 2px}.cke_dialog_contents_body .cke_accessibility_legend:focus,.cke_dialog_contents_body .cke_accessibility_legend:active{outline:0;border:2px solid var(--dca-primary, #139ff7);margin:0 5px 0 0}.cke_dialog_contents_body input[type=file]:focus,.cke_dialog_contents_body input[type=file]:active{border:2px solid var(--dca-primary, #139ff7)}.cke_dialog_find_fieldset{margin-top:10px!important}.cke_dialog_image_ratiolock{margin-top:52px!important}.cke_dialog_forms_select_order label.cke_dialog_ui_labeled_label{margin-left:0}.cke_dialog_forms_select_order div.cke_dialog_ui_input_select{width:100%}.cke_dialog_forms_select_order_txtsize .cke_dialog_ui_hbox_last{padding-top:4px}.cke_dialog_image_url .cke_dialog_ui_hbox_last{vertical-align:bottom}a.cke_dialog_ui_button.cke_dialog_image_browse{margin-top:10px}.cke_dialog_contents_body .cke_tpl_list{border:var(--dca-gray-lighter, #bcbcbc) 1px solid;margin:1px}.cke_dialog_contents_body .cke_tpl_list:focus,.cke_dialog_contents_body .cke_tpl_list:active{outline:0;margin:0;border:2px solid var(--dca-primary, #139ff7)}.cke_dialog_contents_body .cke_tpl_list a:focus,.cke_dialog_contents_body .cke_tpl_list a:active{outline:0}.cke_dialog_contents_body .cke_tpl_list a:focus .cke_tpl_item,.cke_dialog_contents_body .cke_tpl_list a:active .cke_tpl_item{border:2px solid var(--dca-primary, #139ff7);padding:6px}.cke_rtl input.cke_dialog_ui_input_text,.cke_rtl input.cke_dialog_ui_input_password,.cke_rtl input.cke_dialog_ui_input_tel{padding-right:2px}.cke_rtl div.cke_dialog_ui_input_text,.cke_rtl div.cke_dialog_ui_input_password,.cke_rtl div.cke_dialog_ui_input_tel{padding-left:2px}.cke_rtl div.cke_dialog_ui_input_text{padding-right:1px}.cke_rtl .cke_dialog_ui_vbox_child,.cke_rtl .cke_dialog_ui_hbox_child,.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_last{padding-right:2px!important}.cke_hc .cke_dialog_title,.cke_hc .cke_dialog_footer,.cke_hc a.cke_dialog_tab,.cke_hc a.cke_dialog_ui_button,.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button_ok,.cke_hc a.cke_dialog_ui_button_ok:hover{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_tel,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:0}a.cke_dialog_ui_button{min-height:18px}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,input.cke_dialog_ui_input_tel,textarea.cke_dialog_ui_input_textarea{min-height:18px}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,input.cke_dialog_ui_input_tel:focus,textarea.cke_dialog_ui_input_textarea:focus{padding-top:4px;padding-bottom:2px}select.cke_dialog_ui_input_select{width:100%!important}select.cke_dialog_ui_input_select:focus{margin-left:1px;width:100%!important;padding-top:2px;padding-bottom:2px} +/* Patched for djangocms-text-ckeditor */ diff --git a/djangocms_text_ckeditor/static/djangocms_text_ckeditor/ckeditor/skins/moono-lisa/dialog_iequirks.css b/djangocms_text_ckeditor/static/djangocms_text_ckeditor/ckeditor/skins/moono-lisa/dialog_iequirks.css index a9a450db9..6985724d8 100644 --- a/djangocms_text_ckeditor/static/djangocms_text_ckeditor/ckeditor/skins/moono-lisa/dialog_iequirks.css +++ b/djangocms_text_ckeditor/static/djangocms_text_ckeditor/ckeditor/skins/moono-lisa/dialog_iequirks.css @@ -2,4 +2,5 @@ Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -.cke_dialog{visibility:visible}.cke_dialog_body{z-index:1;background:#fff}.cke_dialog strong{font-weight:bold}.cke_dialog_title{font-weight:bold;font-size:12px;cursor:move;position:relative;color:#484848;border-bottom:1px solid #d1d1d1;padding:12px 19px 12px 12px;background:#f8f8f8;letter-spacing:.3px}.cke_dialog_spinner{border-radius:50%;width:12px;height:12px;overflow:hidden;text-indent:-9999em;border:2px solid rgba(102,102,102,0.2);border-left-color:rgba(102,102,102,1);-webkit-animation:dialog_spinner 1s infinite linear;animation:dialog_spinner 1s infinite linear}.cke_browser_ie8 .cke_dialog_spinner,.cke_browser_ie9 .cke_dialog_spinner{background:url(images/spinner.gif) center top no-repeat;width:16px;height:16px;border:0}@-webkit-keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.cke_dialog_contents{background-color:#fff;overflow:auto;padding:15px 10px 5px 10px;margin-top:43px;border-top:1px solid #d1d1d1}.cke_dialog_contents_body{overflow:auto;padding:9px 10px 5px 10px;margin-top:22px}.cke_dialog_footer{text-align:right;position:relative;border-top:1px solid #d1d1d1;background:#f8f8f8}.cke_rtl .cke_dialog_footer{text-align:left}.cke_hc .cke_dialog_footer{outline:0;border-top:1px solid #fff}.cke_dialog .cke_resizer{margin-top:22px}.cke_dialog .cke_resizer_rtl{margin-left:5px}.cke_dialog .cke_resizer_ltr{margin-right:5px}.cke_dialog_tabs{height:33px;display:inline-block;margin:9px 0 0;position:absolute;z-index:2;left:11px}.cke_rtl .cke_dialog_tabs{left:auto;right:11px}a.cke_dialog_tab{height:25px;padding:4px 8px;display:inline-block;cursor:pointer;line-height:26px;outline:0;color:#484848;border:1px solid #d1d1d1;border-radius:3px 3px 0 0;background:#f8f8f8;min-width:90px;text-align:center;margin-left:-1px;letter-spacing:.3px}a.cke_dialog_tab:hover{background-color:#fff}a.cke_dialog_tab:focus{border:2px solid #139ff7;border-bottom-color:#d1d1d1;padding:3px 7px;position:relative;z-index:1}a.cke_dialog_tab_selected{background:#fff;border-bottom-color:#fff;cursor:default;filter:none}a.cke_dialog_tab_selected:hover,a.cke_dialog_tab_selected:focus{border-bottom-color:#fff}.cke_hc a.cke_dialog_tab:hover,.cke_hc a.cke_dialog_tab:focus,.cke_hc a.cke_dialog_tab_selected{border:3px solid;padding:2px 6px}.cke_hc a.cke_dialog_tab:focus{text-decoration:underline}a.cke_dialog_tab_disabled{color:#bababa;cursor:default}.cke_single_page .cke_dialog_tabs{display:none}.cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:0;border-top:0}a.cke_dialog_close_button{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:16px;width:16px;top:11px;z-index:5;opacity:.7;filter:alpha(opacity = 70)}.cke_rtl .cke_dialog_close_button{left:12px}.cke_ltr .cke_dialog_close_button{right:12px}.cke_hc a.cke_dialog_close_button{background-image:none}.cke_hidpi a.cke_dialog_close_button{background-image:url(images/hidpi/close.png);background-size:16px}a.cke_dialog_close_button:hover{opacity:1;filter:alpha(opacity = 100)}a.cke_dialog_close_button span{display:none}.cke_hc a.cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px}div.cke_disabled .cke_dialog_ui_labeled_content div *{background-color:#ddd;cursor:default}.cke_dialog_ui_vbox table,.cke_dialog_ui_hbox table{margin:auto}.cke_dialog_ui_vbox_child{padding:5px 0}.cke_dialog_ui_hbox{width:100%;margin-top:12px}.cke_dialog_ui_hbox_first,.cke_dialog_ui_hbox_child,.cke_dialog_ui_hbox_last{vertical-align:top}.cke_ltr .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px}.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px}.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-right:5px}.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-left:5px;padding-right:0}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_tel,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:1px solid}textarea.cke_dialog_ui_input_textarea{overflow:auto;resize:none}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,input.cke_dialog_ui_input_tel,textarea.cke_dialog_ui_input_textarea{background-color:#fff;border:1px solid #bcbcbc;padding:4px 6px;outline:0;width:100%;*width:95%;box-sizing:border-box;border-radius:2px;min-height:28px;margin-left:1px}input.cke_dialog_ui_input_text:hover,input.cke_dialog_ui_input_password:hover,input.cke_dialog_ui_input_tel:hover,textarea.cke_dialog_ui_input_textarea:hover{border:1px solid #aeb3b9}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,input.cke_dialog_ui_input_tel:focus,textarea.cke_dialog_ui_input_textarea:focus,select.cke_dialog_ui_input_select:focus{outline:0;border:2px solid #139ff7}input.cke_dialog_ui_input_text:focus{padding-left:5px}textarea.cke_dialog_ui_input_textarea:focus{padding:3px 5px}select.cke_dialog_ui_input_select:focus{margin:0;width:100%!important}input.cke_dialog_ui_checkbox_input,input.cke_dialog_ui_radio_input{margin-left:1px;margin-right:2px}input.cke_dialog_ui_checkbox_input:focus,input.cke_dialog_ui_checkbox_input:active,input.cke_dialog_ui_radio_input:focus,input.cke_dialog_ui_radio_input:active{border:0;outline:2px solid #139ff7}a.cke_dialog_ui_button{display:inline-block;*display:inline;*zoom:1;padding:4px 1px;margin:0;text-align:center;color:#484848;vertical-align:middle;cursor:pointer;border:1px solid #bcbcbc;border-radius:2px;background:#f8f8f8;letter-spacing:.3px;line-height:18px;box-sizing:border-box}.cke_hc a.cke_dialog_ui_button{border-width:3px}span.cke_dialog_ui_button{padding:0 10px;cursor:pointer}a.cke_dialog_ui_button:hover{background:#fff}a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{border:2px solid #139ff7;outline:0;padding:3px 0}.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button:focus,.cke_hc a.cke_dialog_ui_button:active{border:3px solid}.cke_dialog_footer_buttons a.cke_dialog_ui_button span{color:inherit;font-size:12px;font-weight:bold;padding:0 12px}a.cke_dialog_ui_button_ok{color:#fff;background:#09863e;border:1px solid #09863e}.cke_hc a.cke_dialog_ui_button{border:1px solid #bcbcbc}a.cke_dialog_ui_button_ok:hover{background:#53aa78;border-color:#53aa78}a.cke_dialog_ui_button_ok:focus{box-shadow:inset 0 0 0 2px #FFF}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active{border-color:#139ff7}.cke_hc a.cke_dialog_ui_button_ok:hover,.cke_hc a.cke_dialog_ui_button_ok:focus,.cke_hc a.cke_dialog_ui_button_ok:active{border-color:#484848}a.cke_dialog_ui_button_ok.cke_disabled{background:#d1d1d1;border-color:#d1d1d1;cursor:default}a.cke_dialog_ui_button_ok.cke_disabled span{cursor:default}.cke_dialog_footer_buttons{display:inline-table;margin:5px;width:auto;position:relative;vertical-align:middle}div.cke_dialog_ui_input_select{display:table}select.cke_dialog_ui_input_select{height:28px;line-height:28px;background-color:#fff;border:1px solid #bcbcbc;padding:3px 3px 3px 6px;outline:0;border-radius:2px;margin:0 1px;box-sizing:border-box;width:calc(100% - 2px)!important}.cke_dialog_ui_input_file{width:100%;height:25px}.cke_hc .cke_dialog_ui_labeled_content input:focus,.cke_hc .cke_dialog_ui_labeled_content select:focus,.cke_hc .cke_dialog_ui_labeled_content textarea:focus{outline:1px dotted}.cke_dialog_ui_labeled_label{margin-left:1px}.cke_dialog_ui_labeled_required{font-weight:bold;font-size:1.2em}.cke_dialog .cke_dark_background{background-color:transparent}.cke_dialog .cke_light_background{background-color:#ebebeb}.cke_dialog .cke_centered{text-align:center}.cke_dialog a.cke_btn_reset{float:right;background:url(images/refresh.png) top left no-repeat;width:16px;height:16px;border:1px none;font-size:1px}.cke_hidpi .cke_dialog a.cke_btn_reset{background-size:16px;background-image:url(images/hidpi/refresh.png)}.cke_rtl .cke_dialog a.cke_btn_reset{float:left}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked{float:left;width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked,.cke_dialog a.cke_btn_reset{margin:2px}.cke_dialog a.cke_btn_locked{background-image:url(images/lock.png)}.cke_dialog a.cke_btn_unlocked{background-image:url(images/lock-open.png)}.cke_rtl .cke_dialog a.cke_btn_locked,.cke_rtl .cke_dialog a.cke_btn_unlocked{float:right}.cke_hidpi .cke_dialog a.cke_btn_unlocked,.cke_hidpi .cke_dialog a.cke_btn_locked{background-size:16px}.cke_hidpi .cke_dialog a.cke_btn_locked{background-image:url(images/hidpi/lock.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked{background-image:url(images/hidpi/lock-open.png)}.cke_dialog a.cke_btn_locked .cke_icon{display:none}.cke_dialog a.cke_btn_over,.cke_dialog a.cke_btn_locked:hover,.cke_dialog a.cke_btn_locked:focus,.cke_dialog a.cke_btn_locked:active,.cke_dialog a.cke_btn_unlocked:hover,.cke_dialog a.cke_btn_unlocked:focus,.cke_dialog a.cke_btn_unlocked:active,.cke_dialog a.cke_btn_reset:hover,.cke_dialog a.cke_btn_reset:focus,.cke_dialog a.cke_btn_reset:active{cursor:pointer;outline:0;margin:0;border:2px solid #139ff7}.cke_dialog fieldset{border:1px solid #bcbcbc}.cke_dialog fieldset legend{padding:0 6px}.cke_dialog_ui_checkbox,.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox{display:inline-block}.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox{padding-top:5px}.cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input,.cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input+label,.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input,.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input+label{vertical-align:middle}.cke_dialog .ImagePreviewBox{border:1px ridge #bcbcbc;overflow:scroll;height:200px;width:300px;padding:2px;background-color:white}.cke_dialog .ImagePreviewBox table td{white-space:normal}.cke_dialog .ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity = 90);background-color:#e4e4e4}.cke_dialog .cke_pastetext{width:346px;height:170px}.cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none}.cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:white;border:1px solid #aeb3b9;border-radius:3px}.cke_dialog .cke_hand{cursor:pointer}.cke_disabled{color:#a0a0a0}.cke_dialog_body .cke_label{display:none}.cke_dialog_body label{display:inline;cursor:default;letter-spacing:.3px}.cke_dialog_body label+.cke_dialog_ui_labeled_content{margin-top:2px}.cke_dialog_contents_body .cke_dialog_ui_text,.cke_dialog_contents_body .cke_dialog_ui_select,.cke_dialog_contents_body .cke_dialog_ui_hbox_last>a.cke_dialog_ui_button{margin-top:4px}a.cke_smile{overflow:hidden;display:block;text-align:center;padding:.3em 0}a.cke_smile img{vertical-align:middle}a.cke_specialchar{cursor:inherit;display:block;height:1.25em;padding:.2em .3em;text-align:center}a.cke_smile,a.cke_specialchar{border:2px solid transparent}a.cke_smile:hover,a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:hover,a.cke_specialchar:focus,a.cke_specialchar:active{background:#fff;outline:0}a.cke_smile:hover,a.cke_specialchar:hover{border-color:#888}a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:focus,a.cke_specialchar:active{border-color:#139ff7}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity = 0);width:100%;height:100%}.cke_dialog_contents_body .cke_accessibility_legend{margin:2px 7px 2px 2px}.cke_dialog_contents_body .cke_accessibility_legend:focus,.cke_dialog_contents_body .cke_accessibility_legend:active{outline:0;border:2px solid #139ff7;margin:0 5px 0 0}.cke_dialog_contents_body input[type=file]:focus,.cke_dialog_contents_body input[type=file]:active{border:2px solid #139ff7}.cke_dialog_find_fieldset{margin-top:10px!important}.cke_dialog_image_ratiolock{margin-top:52px!important}.cke_dialog_forms_select_order label.cke_dialog_ui_labeled_label{margin-left:0}.cke_dialog_forms_select_order div.cke_dialog_ui_input_select{width:100%}.cke_dialog_forms_select_order_txtsize .cke_dialog_ui_hbox_last{padding-top:4px}.cke_dialog_image_url .cke_dialog_ui_hbox_last{vertical-align:bottom}a.cke_dialog_ui_button.cke_dialog_image_browse{margin-top:10px}.cke_dialog_contents_body .cke_tpl_list{border:#bcbcbc 1px solid;margin:1px}.cke_dialog_contents_body .cke_tpl_list:focus,.cke_dialog_contents_body .cke_tpl_list:active{outline:0;margin:0;border:2px solid #139ff7}.cke_dialog_contents_body .cke_tpl_list a:focus,.cke_dialog_contents_body .cke_tpl_list a:active{outline:0}.cke_dialog_contents_body .cke_tpl_list a:focus .cke_tpl_item,.cke_dialog_contents_body .cke_tpl_list a:active .cke_tpl_item{border:2px solid #139ff7;padding:6px}.cke_rtl input.cke_dialog_ui_input_text,.cke_rtl input.cke_dialog_ui_input_password,.cke_rtl input.cke_dialog_ui_input_tel{padding-right:2px}.cke_rtl div.cke_dialog_ui_input_text,.cke_rtl div.cke_dialog_ui_input_password,.cke_rtl div.cke_dialog_ui_input_tel{padding-left:2px}.cke_rtl div.cke_dialog_ui_input_text{padding-right:1px}.cke_rtl .cke_dialog_ui_vbox_child,.cke_rtl .cke_dialog_ui_hbox_child,.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_last{padding-right:2px!important}.cke_hc .cke_dialog_title,.cke_hc .cke_dialog_footer,.cke_hc a.cke_dialog_tab,.cke_hc a.cke_dialog_ui_button,.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button_ok,.cke_hc a.cke_dialog_ui_button_ok:hover{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_tel,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:0}.cke_dialog_footer{filter:""} \ No newline at end of file +.cke_dialog{visibility:visible}.cke_dialog_body{z-index:1;background:var(--dca-white, #fff)}.cke_dialog strong{font-weight:bold}.cke_dialog_title{font-weight:bold;font-size:12px;cursor:move;position:relative;color:var(--dca-gray-darker, #484848);border-bottom:1px solid var(--dca-gray-lighter, #d1d1d1);padding:12px 19px 12px 12px;background:var(--dca-gray-super-lightest, #f8f8f8);letter-spacing:.3px}.cke_dialog_spinner{border-radius:50%;width:12px;height:12px;overflow:hidden;text-indent:-9999em;border:2px solid rgba(102,102,102,0.2);border-left-color:rgba(102,102,102,1);-webkit-animation:dialog_spinner 1s infinite linear;animation:dialog_spinner 1s infinite linear}.cke_browser_ie8 .cke_dialog_spinner,.cke_browser_ie9 .cke_dialog_spinner{background:url(images/spinner.gif) center top no-repeat;width:16px;height:16px;border:0}@-webkit-keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.cke_dialog_contents{background-color:var(--dca-white, #fff);overflow:auto;padding:15px 10px 5px 10px;margin-top:43px;border-top:1px solid var(--dca-gray-lighter, #d1d1d1)}.cke_dialog_contents_body{overflow:auto;padding:9px 10px 5px 10px;margin-top:22px}.cke_dialog_footer{text-align:right;position:relative;border-top:1px solid var(--dca-gray-lighter, #d1d1d1);background:var(--dca-gray-super-lightest, #f8f8f8)}.cke_rtl .cke_dialog_footer{text-align:left}.cke_hc .cke_dialog_footer{outline:0;border-top:1px solid var(--dca-white, #fff)}.cke_dialog .cke_resizer{margin-top:22px}.cke_dialog .cke_resizer_rtl{margin-left:5px}.cke_dialog .cke_resizer_ltr{margin-right:5px}.cke_dialog_tabs{height:33px;display:inline-block;margin:9px 0 0;position:absolute;z-index:2;left:11px}.cke_rtl .cke_dialog_tabs{left:auto;right:11px}a.cke_dialog_tab{height:25px;padding:4px 8px;display:inline-block;cursor:pointer;line-height:26px;outline:0;color:var(--dca-gray-darker, #484848);border:1px solid var(--dca-gray-lighter, #d1d1d1);border-radius:3px 3px 0 0;background:var(--dca-gray-super-lightest, #f8f8f8);min-width:90px;text-align:center;margin-left:-1px;letter-spacing:.3px}a.cke_dialog_tab:hover{background-color:var(--dca-white, #fff)}a.cke_dialog_tab:focus{border:2px solid var(--dca-primary, #139ff7);border-bottom-color:var(--dca-gray-lighter, #d1d1d1);padding:3px 7px;position:relative;z-index:1}a.cke_dialog_tab_selected{background:var(--dca-white, #fff);border-bottom-color:var(--dca-white, #fff);cursor:default;filter:none}a.cke_dialog_tab_selected:hover,a.cke_dialog_tab_selected:focus{border-bottom-color:var(--dca-white, #fff)}.cke_hc a.cke_dialog_tab:hover,.cke_hc a.cke_dialog_tab:focus,.cke_hc a.cke_dialog_tab_selected{border:3px solid;padding:2px 6px}.cke_hc a.cke_dialog_tab:focus{text-decoration:underline}a.cke_dialog_tab_disabled{color:#bababa;cursor:default}.cke_single_page .cke_dialog_tabs{display:none}.cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:0;border-top:0}a.cke_dialog_close_button{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:16px;width:16px;top:11px;z-index:5;opacity:.7;filter:alpha(opacity = 70)}.cke_rtl .cke_dialog_close_button{left:12px}.cke_ltr .cke_dialog_close_button{right:12px}.cke_hc a.cke_dialog_close_button{background-image:none}.cke_hidpi a.cke_dialog_close_button{background-image:url(images/hidpi/close.png);background-size:16px}a.cke_dialog_close_button:hover{opacity:1;filter:alpha(opacity = 100)}a.cke_dialog_close_button span{display:none}.cke_hc a.cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px}div.cke_disabled .cke_dialog_ui_labeled_content div *{background-color:#ddd;cursor:default}.cke_dialog_ui_vbox table,.cke_dialog_ui_hbox table{margin:auto}.cke_dialog_ui_vbox_child{padding:5px 0}.cke_dialog_ui_hbox{width:100%;margin-top:12px}.cke_dialog_ui_hbox_first,.cke_dialog_ui_hbox_child,.cke_dialog_ui_hbox_last{vertical-align:top}.cke_ltr .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px}.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px}.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-right:5px}.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-left:5px;padding-right:0}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_tel,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:1px solid}textarea.cke_dialog_ui_input_textarea{overflow:auto;resize:none}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,input.cke_dialog_ui_input_tel,textarea.cke_dialog_ui_input_textarea{background-color:var(--dca-white, #fff);border:1px solid var(--dca-gray-lighter, #bcbcbc);padding:4px 6px;outline:0;width:100%;*width:95%;box-sizing:border-box;border-radius:2px;min-height:28px;margin-left:1px}input.cke_dialog_ui_input_text:hover,input.cke_dialog_ui_input_password:hover,input.cke_dialog_ui_input_tel:hover,textarea.cke_dialog_ui_input_textarea:hover{border:1px solid var(--dca-gray-lighter, #aeb3b9)}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,input.cke_dialog_ui_input_tel:focus,textarea.cke_dialog_ui_input_textarea:focus,select.cke_dialog_ui_input_select:focus{outline:0;border:2px solid var(--dca-primary, #139ff7)}input.cke_dialog_ui_input_text:focus{padding-left:5px}textarea.cke_dialog_ui_input_textarea:focus{padding:3px 5px}select.cke_dialog_ui_input_select:focus{margin:0;width:100%!important}input.cke_dialog_ui_checkbox_input,input.cke_dialog_ui_radio_input{margin-left:1px;margin-right:2px}input.cke_dialog_ui_checkbox_input:focus,input.cke_dialog_ui_checkbox_input:active,input.cke_dialog_ui_radio_input:focus,input.cke_dialog_ui_radio_input:active{border:0;outline:2px solid var(--dca-primary, #139ff7)}a.cke_dialog_ui_button{display:inline-block;*display:inline;*zoom:1;padding:4px 1px;margin:0;text-align:center;color:var(--dca-gray-darker, #484848);vertical-align:middle;cursor:pointer;border:1px solid var(--dca-gray-lighter, #bcbcbc);border-radius:2px;background:var(--dca-gray-super-lightest, #f8f8f8);letter-spacing:.3px;line-height:18px;box-sizing:border-box}.cke_hc a.cke_dialog_ui_button{border-width:3px}span.cke_dialog_ui_button{padding:0 10px;cursor:pointer}a.cke_dialog_ui_button:hover{background:var(--dca-white, #fff)}a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{border:2px solid var(--dca-primary, #139ff7);outline:0;padding:3px 0}.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button:focus,.cke_hc a.cke_dialog_ui_button:active{border:3px solid}.cke_dialog_footer_buttons a.cke_dialog_ui_button span{color:inherit;font-size:12px;font-weight:bold;padding:0 12px}a.cke_dialog_ui_button_ok{color:var(--dca-white, #fff);background:#09863e;border:1px solid #09863e}.cke_hc a.cke_dialog_ui_button{border:1px solid var(--dca-gray-lighter, #bcbcbc)}a.cke_dialog_ui_button_ok:hover{background:#53aa78;border-color:#53aa78}a.cke_dialog_ui_button_ok:focus{box-shadow:inset 0 0 0 2px var(--dca-white, #fff)}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active{border-color:var(--dca-primary, #139ff7)}.cke_hc a.cke_dialog_ui_button_ok:hover,.cke_hc a.cke_dialog_ui_button_ok:focus,.cke_hc a.cke_dialog_ui_button_ok:active{border-color:var(--dca-gray-darker, #484848)}a.cke_dialog_ui_button_ok.cke_disabled{background:var(--dca-gray-lighter, #d1d1d1);border-color:var(--dca-gray-lighter, #d1d1d1);cursor:default}a.cke_dialog_ui_button_ok.cke_disabled span{cursor:default}.cke_dialog_footer_buttons{display:inline-table;margin:5px;width:auto;position:relative;vertical-align:middle}div.cke_dialog_ui_input_select{display:table}select.cke_dialog_ui_input_select{height:28px;line-height:28px;background-color:var(--dca-white, #fff);border:1px solid var(--dca-gray-lighter, #bcbcbc);padding:3px 3px 3px 6px;outline:0;border-radius:2px;margin:0 1px;box-sizing:border-box;width:calc(100% - 2px)!important}.cke_dialog_ui_input_file{width:100%;height:25px}.cke_hc .cke_dialog_ui_labeled_content input:focus,.cke_hc .cke_dialog_ui_labeled_content select:focus,.cke_hc .cke_dialog_ui_labeled_content textarea:focus{outline:1px dotted}.cke_dialog_ui_labeled_label{margin-left:1px}.cke_dialog_ui_labeled_required{font-weight:bold;font-size:1.2em}.cke_dialog .cke_dark_background{background-color:transparent}.cke_dialog .cke_light_background{background-color:var(--dca-gray-lightest, #ebebeb)}.cke_dialog .cke_centered{text-align:center}.cke_dialog a.cke_btn_reset{float:right;background:url(images/refresh.png) top left no-repeat;width:16px;height:16px;border:1px none;font-size:1px}.cke_hidpi .cke_dialog a.cke_btn_reset{background-size:16px;background-image:url(images/hidpi/refresh.png)}.cke_rtl .cke_dialog a.cke_btn_reset{float:left}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked{float:left;width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked,.cke_dialog a.cke_btn_reset{margin:2px}.cke_dialog a.cke_btn_locked{background-image:url(images/lock.png)}.cke_dialog a.cke_btn_unlocked{background-image:url(images/lock-open.png)}.cke_rtl .cke_dialog a.cke_btn_locked,.cke_rtl .cke_dialog a.cke_btn_unlocked{float:right}.cke_hidpi .cke_dialog a.cke_btn_unlocked,.cke_hidpi .cke_dialog a.cke_btn_locked{background-size:16px}.cke_hidpi .cke_dialog a.cke_btn_locked{background-image:url(images/hidpi/lock.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked{background-image:url(images/hidpi/lock-open.png)}.cke_dialog a.cke_btn_locked .cke_icon{display:none}.cke_dialog a.cke_btn_over,.cke_dialog a.cke_btn_locked:hover,.cke_dialog a.cke_btn_locked:focus,.cke_dialog a.cke_btn_locked:active,.cke_dialog a.cke_btn_unlocked:hover,.cke_dialog a.cke_btn_unlocked:focus,.cke_dialog a.cke_btn_unlocked:active,.cke_dialog a.cke_btn_reset:hover,.cke_dialog a.cke_btn_reset:focus,.cke_dialog a.cke_btn_reset:active{cursor:pointer;outline:0;margin:0;border:2px solid var(--dca-primary, #139ff7)}.cke_dialog fieldset{border:1px solid var(--dca-gray-lighter, #bcbcbc)}.cke_dialog fieldset legend{padding:0 6px}.cke_dialog_ui_checkbox,.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox{display:inline-block}.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox{padding-top:5px}.cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input,.cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input+label,.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input,.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input+label{vertical-align:middle}.cke_dialog .ImagePreviewBox{border:1px ridge var(--dca-gray-lighter, #bcbcbc);overflow:scroll;height:200px;width:300px;padding:2px;background-color:white}.cke_dialog .ImagePreviewBox table td{white-space:normal}.cke_dialog .ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity = 90);background-color:var(--dca-gray-lightest, #e4e4e4)}.cke_dialog .cke_pastetext{width:346px;height:170px}.cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none}.cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:white;border:1px solid var(--dca-gray-lighter, #aeb3b9);border-radius:3px}.cke_dialog .cke_hand{cursor:pointer}.cke_disabled{color:var(--dca-gray-light, #a0a0a0)}.cke_dialog_body .cke_label{display:none}.cke_dialog_body label{display:inline;cursor:default;letter-spacing:.3px}.cke_dialog_body label+.cke_dialog_ui_labeled_content{margin-top:2px}.cke_dialog_contents_body .cke_dialog_ui_text,.cke_dialog_contents_body .cke_dialog_ui_select,.cke_dialog_contents_body .cke_dialog_ui_hbox_last>a.cke_dialog_ui_button{margin-top:4px}a.cke_smile{overflow:hidden;display:block;text-align:center;padding:.3em 0}a.cke_smile img{vertical-align:middle}a.cke_specialchar{cursor:inherit;display:block;height:1.25em;padding:.2em .3em;text-align:center}a.cke_smile,a.cke_specialchar{border:2px solid transparent}a.cke_smile:hover,a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:hover,a.cke_specialchar:focus,a.cke_specialchar:active{background:var(--dca-white, #fff);outline:0}a.cke_smile:hover,a.cke_specialchar:hover{border-color:var(--dca-gray, #888)}a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:focus,a.cke_specialchar:active{border-color:var(--dca-primary, #139ff7)}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity = 0);width:100%;height:100%}.cke_dialog_contents_body .cke_accessibility_legend{margin:2px 7px 2px 2px}.cke_dialog_contents_body .cke_accessibility_legend:focus,.cke_dialog_contents_body .cke_accessibility_legend:active{outline:0;border:2px solid var(--dca-primary, #139ff7);margin:0 5px 0 0}.cke_dialog_contents_body input[type=file]:focus,.cke_dialog_contents_body input[type=file]:active{border:2px solid var(--dca-primary, #139ff7)}.cke_dialog_find_fieldset{margin-top:10px!important}.cke_dialog_image_ratiolock{margin-top:52px!important}.cke_dialog_forms_select_order label.cke_dialog_ui_labeled_label{margin-left:0}.cke_dialog_forms_select_order div.cke_dialog_ui_input_select{width:100%}.cke_dialog_forms_select_order_txtsize .cke_dialog_ui_hbox_last{padding-top:4px}.cke_dialog_image_url .cke_dialog_ui_hbox_last{vertical-align:bottom}a.cke_dialog_ui_button.cke_dialog_image_browse{margin-top:10px}.cke_dialog_contents_body .cke_tpl_list{border:var(--dca-gray-lighter, #bcbcbc) 1px solid;margin:1px}.cke_dialog_contents_body .cke_tpl_list:focus,.cke_dialog_contents_body .cke_tpl_list:active{outline:0;margin:0;border:2px solid var(--dca-primary, #139ff7)}.cke_dialog_contents_body .cke_tpl_list a:focus,.cke_dialog_contents_body .cke_tpl_list a:active{outline:0}.cke_dialog_contents_body .cke_tpl_list a:focus .cke_tpl_item,.cke_dialog_contents_body .cke_tpl_list a:active .cke_tpl_item{border:2px solid var(--dca-primary, #139ff7);padding:6px}.cke_rtl input.cke_dialog_ui_input_text,.cke_rtl input.cke_dialog_ui_input_password,.cke_rtl input.cke_dialog_ui_input_tel{padding-right:2px}.cke_rtl div.cke_dialog_ui_input_text,.cke_rtl div.cke_dialog_ui_input_password,.cke_rtl div.cke_dialog_ui_input_tel{padding-left:2px}.cke_rtl div.cke_dialog_ui_input_text{padding-right:1px}.cke_rtl .cke_dialog_ui_vbox_child,.cke_rtl .cke_dialog_ui_hbox_child,.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_last{padding-right:2px!important}.cke_hc .cke_dialog_title,.cke_hc .cke_dialog_footer,.cke_hc a.cke_dialog_tab,.cke_hc a.cke_dialog_ui_button,.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button_ok,.cke_hc a.cke_dialog_ui_button_ok:hover{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_tel,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:0}.cke_dialog_footer{filter:""} +/* Patched for djangocms-text-ckeditor */ diff --git a/djangocms_text_ckeditor/static/djangocms_text_ckeditor/ckeditor/skins/moono-lisa/editor.css b/djangocms_text_ckeditor/static/djangocms_text_ckeditor/ckeditor/skins/moono-lisa/editor.css index 8f7534e37..60f5ac645 100644 --- a/djangocms_text_ckeditor/static/djangocms_text_ckeditor/ckeditor/skins/moono-lisa/editor.css +++ b/djangocms_text_ckeditor/static/djangocms_text_ckeditor/ckeditor/skins/moono-lisa/editor.css @@ -2,4 +2,5 @@ Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none}.cke_reset_all,.cke_reset_all *,.cke_reset_all a,.cke_reset_all textarea{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre-wrap}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;border:1px solid #d1d1d1;padding:0}.cke_inner{display:block;background:#fff;padding:0;-webkit-touch-callout:none}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #d1d1d1;background:#f8f8f8;padding:6px 8px 2px;white-space:normal}.cke_float .cke_top{border:1px solid #d1d1d1}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #d1d1d1;background:#f8f8f8}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #bcbcbc transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #bcbcbc;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #d1d1d1}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_block:focus{outline:0}.cke_panel_list{margin:0;padding:0;list-style-type:none;white-space:nowrap}.cke_panel_listItem{margin:0;padding:0}.cke_panel_listItem a{padding:6px 7px;display:block;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis}.cke_hc .cke_panel_listItem a{border-style:none}.cke_panel_listItem.cke_selected a,.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{background-color:#e9e9e9}.cke_panel_listItem a:focus{outline:1px dotted #000}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:4px 5px}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:6px 6px 7px 6px;color:#484848;border-bottom:1px solid #d1d1d1;background:#f8f8f8}.cke_colorblock{padding:10px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}a.cke_colorbox{padding:2px;float:left;width:20px;height:20px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{outline:0;padding:0;border:2px solid #139ff7}a:hover.cke_colorbox{border-color:#bcbcbc}span.cke_colorbox{width:20px;height:20px;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:3px;display:block;cursor:pointer}a.cke_colorauto{padding:0;border:1px solid transparent;margin-bottom:6px;height:26px;line-height:26px}a.cke_colormore{margin-top:10px;height:20px;line-height:19px}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{outline:0;border:#139ff7 1px solid;background-color:#f8f8f8}a:hover.cke_colorauto,a:hover.cke_colormore{border-color:#bcbcbc}.cke_colorauto span.cke_colorbox{width:18px;height:18px;border:1px solid #808080;margin-left:1px;margin-top:3px}.cke_rtl .cke_colorauto span.cke_colorbox{margin-left:0;margin-right:1px}span.cke_colorbox[style*="#ffffff"],span.cke_colorbox[style*="#FFFFFF"],span.cke_colorbox[style="background-color:#fff"],span.cke_colorbox[style="background-color:#FFF"],span.cke_colorbox[style*="rgb(255,255,255)"],span.cke_colorbox[style*="rgb(255, 255, 255)"]{border:1px solid #808080;width:18px;height:18px}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{border:0;float:left;margin:1px 2px 6px 0;padding-right:3px}.cke_rtl .cke_toolgroup{float:right;margin:1px 0 6px 2px;padding-left:3px;padding-right:0}.cke_hc .cke_toolgroup{margin-right:5px;margin-bottom:5px}.cke_hc.cke_rtl .cke_toolgroup{margin-right:0;margin-left:5px}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0;position:relative}a.cke_button_expandable{padding:4px 5px}.cke_rtl a.cke_button{float:right}.cke_hc a.cke_button{border:1px solid black;padding:3px 5px;margin:0 3px 5px 0}.cke_hc.cke_rtl a.cke_button{margin:0 0 5px 3px}a.cke_button_on{background:#fff;border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_on{padding:3px 4px}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active{background:#e5e5e5;border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_off:hover,a.cke_button_expandable.cke_button_off:focus,a.cke_button_expandable.cke_button_off:active{padding:3px 4px}.cke_hc a.cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active{background:#e5e5e5;border:3px solid #000;padding:1px 3px}@media screen and (hover:none){a.cke_button_off:hover{background:transparent;border:0;padding:4px 6px}a.cke_button_expandable.cke_button_off:hover{padding:4px 5px}a.cke_button_off:active{background:#e5e5e5;border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_off:active{padding:3px 4px}}a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{border:0;padding:4px 6px;background-color:transparent}a.cke_button_expandable.cke_button_disabled:hover,a.cke_button_expandable.cke_button_disabled:active{padding:4px 5px}a.cke_button_disabled:focus{border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_disabled:focus{padding:3px 4px}.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border:1px solid #acacac;padding:3px 5px;margin:0 3px 5px 0}.cke_hc a.cke_button_disabled:focus{border:3px solid #000;padding:1px 3px}.cke_hc.cke_rtl a.cke_button_disabled:hover,.cke_hc.cke_rtl a.cke_button_disabled:focus,.cke_hc.cke_rtl a.cke_button_disabled:active{margin:0 0 5px 3px}a.cke_button_disabled .cke_button_icon,a.cke_button_disabled .cke_button_arrow{opacity:.3}.cke_hc a.cke_button_disabled{border-color:#acacac}.cke_hc a.cke_button_disabled .cke_button_icon,.cke_hc a.cke_button_disabled .cke_button_label{opacity:.5}.cke_toolgroup a.cke_button:last-child:after,.cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{content:"";position:absolute;height:18px;width:0;border-right:1px solid #bcbcbc;margin-top:4px;top:0;right:-3px}.cke_rtl .cke_toolgroup a.cke_button:last-child:after,.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{border-right:0;right:auto;border-left:1px solid #bcbcbc;top:0;left:-3px}.cke_hc .cke_toolgroup a.cke_button:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_disabled:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{border-color:#000;top:0;right:-7px}.cke_hc.cke_rtl .cke_toolgroup a.cke_button:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{top:0;right:auto;left:-7px}.cke_toolgroup a.cke_button:hover:last-child:after,.cke_toolgroup a.cke_button:focus:last-child:after,.cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-1px;right:-4px}.cke_rtl .cke_toolgroup a.cke_button:hover:last-child:after,.cke_rtl .cke_toolgroup a.cke_button:focus:last-child:after,.cke_rtl .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-1px;right:auto;left:-4px}.cke_hc .cke_toolgroup a.cke_button:hover:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-2px;right:-9px}.cke_hc.cke_rtl .cke_toolgroup a.cke_button:hover:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-2px;right:auto;left:-9px}.cke_toolbar.cke_toolbar_last .cke_toolgroup a.cke_button:last-child:after{content:none;border:0;width:0;height:0}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#484848}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 3px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #484848}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px 0 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#bcbcbc;margin:4px 2px 0 2px;height:18px;width:1px}.cke_rtl .cke_toolbar_separator{float:right}.cke_hc .cke_toolbar_separator{background-color:#000;margin-left:2px;margin-right:5px;margin-bottom:9px}.cke_hc.cke_rtl .cke_toolbar_separator{margin-left:5px;margin-right:2px}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}a.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #bcbcbc}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser:hover{background:#e5e5e5}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border:3px solid transparent;border-bottom-color:#484848}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#484848}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0}.cke_menuitem span{cursor:default}.cke_menubutton{display:block}.cke_hc .cke_menubutton{padding:2px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#e9e9e9;display:block;outline:1px dotted}.cke_menubutton:hover{outline:0}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_disabled:hover,.cke_menubutton_disabled:focus,.cke_menubutton_disabled:active{background-color:transparent;outline:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#f8f8f8;padding:6px 4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#e9e9e9}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{background-color:#f8f8f8;outline:0}.cke_menuitem .cke_menubutton_on{background-color:#e9e9e9;border:1px solid #dedede;outline:0}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px;background-color:#e9e9e9}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_shortcut{color:#979797}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d1d1d1;height:1px}.cke_menuarrow{background:transparent url(images/arrow.png) no-repeat 0 10px;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_hc .cke_menuarrow{background-image:none}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left;position:relative;margin-bottom:5px}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:1px;margin-bottom:10px}.cke_combo:after{content:"";position:absolute;height:18px;width:0;border-right:1px solid #bcbcbc;margin-top:5px;top:0;right:0}.cke_rtl .cke_combo:after{border-right:0;border-left:1px solid #bcbcbc;right:auto;left:0}.cke_hc .cke_combo:after{border-color:#000}a.cke_combo_button{cursor:default;display:inline-block;float:left;margin:0;padding:1px}.cke_rtl a.cke_combo_button{float:right}.cke_hc a.cke_combo_button{padding:4px}.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{background:#e5e5e5;border:1px solid #bcbcbc;padding:0 0 0 1px;margin-left:-1px}.cke_combo_off a.cke_combo_button:focus{outline:0}.cke_combo_on a.cke_combo_button,.cke_combo_off a.cke_combo_button:active{background:#fff}@media screen and (hover:none){.cke_combo_off a.cke_combo_button:hover{background:transparent;border-color:transparent}.cke_combo_off a.cke_combo_button:active{background:#fff;border:1px solid #bcbcbc}}.cke_rtl .cke_combo_on a.cke_combo_button,.cke_rtl .cke_combo_off a.cke_combo_button:hover,.cke_rtl .cke_combo_off a.cke_combo_button:focus,.cke_rtl .cke_combo_off a.cke_combo_button:active{padding:0 1px 0 0;margin-left:0;margin-right:-1px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border:3px solid #000;padding:1px 1px 1px 2px}.cke_hc.cke_rtl .cke_combo_on a.cke_combo_button,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:hover,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:focus,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:active{padding:1px 2px 1px 1px}.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0 0 0 3px;margin-left:-3px}.cke_rtl .cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0 3px 0 0;margin-left:0;margin-right:-3px}.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px 1px 1px 7px;margin-left:-6px}.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px 7px 1px 1px;margin-left:0;margin-right:-6px}.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0;margin:0}.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px;margin:0}.cke_toolbar .cke_combo+.cke_toolbar_end,.cke_toolbar .cke_combo+.cke_toolgroup{margin-right:0;margin-left:2px}.cke_rtl .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_rtl .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:0;margin-right:2px}.cke_hc .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_hc .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:5px}.cke_hc.cke_rtl .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_hc.cke_rtl .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:0;margin-right:5px}.cke_toolbar.cke_toolbar_last .cke_combo:nth-last-child(-n+2):after{content:none;border:0;width:0;height:0}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#484848;width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 10px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{cursor:default;margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #484848}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}a.cke_path_item,span.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#484848;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#e5e5e5}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combopanel__fontsize{width:135px}textarea.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre-wrap;border:0;padding:0;margin:0;display:block}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_notifications_area{pointer-events:none}.cke_notification{pointer-events:auto;position:relative;margin:10px;width:300px;color:white;text-align:center;opacity:.95;filter:alpha(opacity = 95);-webkit-animation:fadeIn .7s;animation:fadeIn .7s}.cke_notification_message a{color:#12306f}@-webkit-keyframes fadeIn{from{opacity:.4}to{opacity:.95}}@keyframes fadeIn{from{opacity:.4}to{opacity:.95}}.cke_notification_success{background:#72b572;border:1px solid #63a563}.cke_notification_warning{background:#c83939;border:1px solid #902b2b}.cke_notification_info{background:#2e9ad0;border:1px solid #0f74a8}.cke_notification_info span.cke_notification_progress{background-color:#0f74a8;display:block;padding:0;margin:0;height:100%;overflow:hidden;position:absolute;z-index:1}.cke_notification_message{position:relative;margin:4px 23px 3px;font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:18px;z-index:4;text-overflow:ellipsis;overflow:hidden}.cke_notification_close{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:1px;right:1px;padding:0;margin:0;z-index:5;opacity:.6;filter:alpha(opacity = 60)}.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_notification_close span{display:none}.cke_notification_warning a.cke_notification_close{opacity:.8;filter:alpha(opacity = 80)}.cke_notification_warning a.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}.cke_button__about_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -0px !important;}.cke_button__bold_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -24px !important;}.cke_button__italic_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -48px !important;}.cke_button__strike_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -72px !important;}.cke_button__subscript_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -96px !important;}.cke_button__superscript_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -120px !important;}.cke_button__underline_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -144px !important;}.cke_button__bidiltr_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -168px !important;}.cke_button__bidirtl_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -192px !important;}.cke_button__blockquote_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -216px !important;}.cke_rtl .cke_button__copy_icon, .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -240px !important;}.cke_ltr .cke_button__copy_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -264px !important;}.cke_rtl .cke_button__cut_icon, .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -288px !important;}.cke_ltr .cke_button__cut_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -312px !important;}.cke_rtl .cke_button__paste_icon, .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -336px !important;}.cke_ltr .cke_button__paste_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -360px !important;}.cke_button__bgcolor_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -384px !important;}.cke_button__textcolor_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -408px !important;}.cke_rtl .cke_button__templates_icon, .cke_mixed_dir_content .cke_rtl .cke_button__templates_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -432px !important;}.cke_ltr .cke_button__templates_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -456px !important;}.cke_button__copyformatting_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -480px !important;}.cke_button__creatediv_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -504px !important;}.cke_rtl .cke_button__find_icon, .cke_mixed_dir_content .cke_rtl .cke_button__find_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -528px !important;}.cke_ltr .cke_button__find_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -552px !important;}.cke_button__replace_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -576px !important;}.cke_button__button_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -600px !important;}.cke_button__checkbox_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -624px !important;}.cke_button__form_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -648px !important;}.cke_button__hiddenfield_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -672px !important;}.cke_button__imagebutton_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -696px !important;}.cke_button__radio_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -720px !important;}.cke_rtl .cke_button__select_icon, .cke_mixed_dir_content .cke_rtl .cke_button__select_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -744px !important;}.cke_ltr .cke_button__select_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -768px !important;}.cke_rtl .cke_button__textarea_icon, .cke_mixed_dir_content .cke_rtl .cke_button__textarea_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -792px !important;}.cke_ltr .cke_button__textarea_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -816px !important;}.cke_rtl .cke_button__textfield_icon, .cke_mixed_dir_content .cke_rtl .cke_button__textfield_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -840px !important;}.cke_ltr .cke_button__textfield_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -864px !important;}.cke_button__horizontalrule_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -888px !important;}.cke_button__iframe_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -912px !important;}.cke_button__image_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -936px !important;}.cke_rtl .cke_button__indent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -960px !important;}.cke_ltr .cke_button__indent_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -984px !important;}.cke_rtl .cke_button__outdent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1008px !important;}.cke_ltr .cke_button__outdent_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1032px !important;}.cke_button__smiley_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1056px !important;}.cke_button__justifyblock_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1080px !important;}.cke_button__justifycenter_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1104px !important;}.cke_button__justifyleft_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1128px !important;}.cke_button__justifyright_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1152px !important;}.cke_button__language_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1176px !important;}.cke_rtl .cke_button__anchor_icon, .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1200px !important;}.cke_ltr .cke_button__anchor_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1224px !important;}.cke_button__link_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1248px !important;}.cke_button__unlink_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1272px !important;}.cke_rtl .cke_button__bulletedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1296px !important;}.cke_ltr .cke_button__bulletedlist_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1320px !important;}.cke_rtl .cke_button__numberedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1344px !important;}.cke_ltr .cke_button__numberedlist_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1368px !important;}.cke_button__maximize_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1392px !important;}.cke_rtl .cke_button__newpage_icon, .cke_mixed_dir_content .cke_rtl .cke_button__newpage_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1416px !important;}.cke_ltr .cke_button__newpage_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1440px !important;}.cke_rtl .cke_button__pagebreak_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pagebreak_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1464px !important;}.cke_ltr .cke_button__pagebreak_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1488px !important;}.cke_rtl .cke_button__pastetext_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1512px !important;}.cke_ltr .cke_button__pastetext_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1536px !important;}.cke_rtl .cke_button__pastefromword_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1560px !important;}.cke_ltr .cke_button__pastefromword_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1584px !important;}.cke_rtl .cke_button__preview_icon, .cke_mixed_dir_content .cke_rtl .cke_button__preview_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1608px !important;}.cke_ltr .cke_button__preview_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1632px !important;}.cke_button__print_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1656px !important;}.cke_button__removeformat_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1680px !important;}.cke_button__save_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1704px !important;}.cke_button__selectall_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1728px !important;}.cke_rtl .cke_button__showblocks_icon, .cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1752px !important;}.cke_ltr .cke_button__showblocks_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1776px !important;}.cke_rtl .cke_button__source_icon, .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1800px !important;}.cke_ltr .cke_button__source_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1824px !important;}.cke_button__specialchar_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1848px !important;}.cke_button__scayt_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1872px !important;}.cke_button__table_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1896px !important;}.cke_rtl .cke_button__redo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1920px !important;}.cke_ltr .cke_button__redo_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1944px !important;}.cke_rtl .cke_button__undo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1968px !important;}.cke_ltr .cke_button__undo_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1992px !important;}.cke_button__spellchecker_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -2016px !important;}.cke_hidpi .cke_button__about_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -0px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bold_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -24px !important;background-size: 16px !important;}.cke_hidpi .cke_button__italic_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -48px !important;background-size: 16px !important;}.cke_hidpi .cke_button__strike_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -72px !important;background-size: 16px !important;}.cke_hidpi .cke_button__subscript_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -96px !important;background-size: 16px !important;}.cke_hidpi .cke_button__superscript_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -120px !important;background-size: 16px !important;}.cke_hidpi .cke_button__underline_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -144px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bidiltr_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -168px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bidirtl_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -192px !important;background-size: 16px !important;}.cke_hidpi .cke_button__blockquote_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -216px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__copy_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -240px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__copy_icon,.cke_ltr.cke_hidpi .cke_button__copy_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -264px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__cut_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -288px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__cut_icon,.cke_ltr.cke_hidpi .cke_button__cut_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -312px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__paste_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -336px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__paste_icon,.cke_ltr.cke_hidpi .cke_button__paste_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -360px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bgcolor_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -384px !important;background-size: 16px !important;}.cke_hidpi .cke_button__textcolor_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -408px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__templates_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__templates_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -432px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__templates_icon,.cke_ltr.cke_hidpi .cke_button__templates_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -456px !important;background-size: 16px !important;}.cke_hidpi .cke_button__copyformatting_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -480px !important;background-size: 16px !important;}.cke_hidpi .cke_button__creatediv_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -504px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__find_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__find_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -528px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__find_icon,.cke_ltr.cke_hidpi .cke_button__find_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -552px !important;background-size: 16px !important;}.cke_hidpi .cke_button__replace_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -576px !important;background-size: 16px !important;}.cke_hidpi .cke_button__button_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -600px !important;background-size: 16px !important;}.cke_hidpi .cke_button__checkbox_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -624px !important;background-size: 16px !important;}.cke_hidpi .cke_button__form_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -648px !important;background-size: 16px !important;}.cke_hidpi .cke_button__hiddenfield_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -672px !important;background-size: 16px !important;}.cke_hidpi .cke_button__imagebutton_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -696px !important;background-size: 16px !important;}.cke_hidpi .cke_button__radio_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -720px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__select_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__select_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -744px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__select_icon,.cke_ltr.cke_hidpi .cke_button__select_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -768px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__textarea_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__textarea_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -792px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__textarea_icon,.cke_ltr.cke_hidpi .cke_button__textarea_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -816px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__textfield_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__textfield_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -840px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__textfield_icon,.cke_ltr.cke_hidpi .cke_button__textfield_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -864px !important;background-size: 16px !important;}.cke_hidpi .cke_button__horizontalrule_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -888px !important;background-size: 16px !important;}.cke_hidpi .cke_button__iframe_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -912px !important;background-size: 16px !important;}.cke_hidpi .cke_button__image_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -936px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__indent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -960px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__indent_icon,.cke_ltr.cke_hidpi .cke_button__indent_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -984px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__outdent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1008px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__outdent_icon,.cke_ltr.cke_hidpi .cke_button__outdent_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1032px !important;background-size: 16px !important;}.cke_hidpi .cke_button__smiley_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1056px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyblock_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1080px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifycenter_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1104px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyleft_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1128px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyright_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1152px !important;background-size: 16px !important;}.cke_hidpi .cke_button__language_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1176px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__anchor_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1200px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__anchor_icon,.cke_ltr.cke_hidpi .cke_button__anchor_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1224px !important;background-size: 16px !important;}.cke_hidpi .cke_button__link_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1248px !important;background-size: 16px !important;}.cke_hidpi .cke_button__unlink_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1272px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__bulletedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1296px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__bulletedlist_icon,.cke_ltr.cke_hidpi .cke_button__bulletedlist_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1320px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__numberedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1344px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__numberedlist_icon,.cke_ltr.cke_hidpi .cke_button__numberedlist_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1368px !important;background-size: 16px !important;}.cke_hidpi .cke_button__maximize_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1392px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__newpage_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__newpage_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1416px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__newpage_icon,.cke_ltr.cke_hidpi .cke_button__newpage_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1440px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pagebreak_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pagebreak_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1464px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pagebreak_icon,.cke_ltr.cke_hidpi .cke_button__pagebreak_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1488px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastetext_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1512px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastetext_icon,.cke_ltr.cke_hidpi .cke_button__pastetext_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1536px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastefromword_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1560px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastefromword_icon,.cke_ltr.cke_hidpi .cke_button__pastefromword_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1584px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__preview_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__preview_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1608px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__preview_icon,.cke_ltr.cke_hidpi .cke_button__preview_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1632px !important;background-size: 16px !important;}.cke_hidpi .cke_button__print_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1656px !important;background-size: 16px !important;}.cke_hidpi .cke_button__removeformat_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1680px !important;background-size: 16px !important;}.cke_hidpi .cke_button__save_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1704px !important;background-size: 16px !important;}.cke_hidpi .cke_button__selectall_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1728px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__showblocks_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1752px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__showblocks_icon,.cke_ltr.cke_hidpi .cke_button__showblocks_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1776px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__source_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1800px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__source_icon,.cke_ltr.cke_hidpi .cke_button__source_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1824px !important;background-size: 16px !important;}.cke_hidpi .cke_button__specialchar_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1848px !important;background-size: 16px !important;}.cke_hidpi .cke_button__scayt_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1872px !important;background-size: 16px !important;}.cke_hidpi .cke_button__table_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1896px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__redo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1920px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__redo_icon,.cke_ltr.cke_hidpi .cke_button__redo_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1944px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__undo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1968px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__undo_icon,.cke_ltr.cke_hidpi .cke_button__undo_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1992px !important;background-size: 16px !important;}.cke_hidpi .cke_button__spellchecker_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -2016px !important;background-size: 16px !important;} \ No newline at end of file +.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none}.cke_reset_all,.cke_reset_all *,.cke_reset_all a,.cke_reset_all textarea{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:var(--dca-black, #000);text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre-wrap}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;border:1px solid var(--dca-gray-lighter, #d1d1d1);padding:0}.cke_inner{display:block;background:var(--dca-white, #fff);padding:0;-webkit-touch-callout:none}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid var(--dca-gray-lighter, #d1d1d1);background:var(--dca-gray-super-lightest, #f8f8f8);padding:6px 8px 2px;white-space:normal}.cke_float .cke_top{border:1px solid var(--dca-gray-lighter, #d1d1d1)}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid var(--dca-gray-lighter, #d1d1d1);background:var(--dca-gray-super-lightest, #f8f8f8)}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent var(--dca-gray-lighter, #bcbcbc) transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent var(--dca-gray-lighter, #bcbcbc);border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:var(--dca-white, #fff);border:1px solid var(--dca-gray-lighter, #d1d1d1)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_block:focus{outline:0}.cke_panel_list{margin:0;padding:0;list-style-type:none;white-space:nowrap}.cke_panel_listItem{margin:0;padding:0}.cke_panel_listItem a{padding:6px 7px;display:block;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis}.cke_hc .cke_panel_listItem a{border-style:none}.cke_panel_listItem.cke_selected a,.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{background-color:var(--dca-gray-lightest, #e9e9e9)}.cke_panel_listItem a:focus{outline:1px dotted var(--dca-black, #000)}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:4px 5px}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:6px 6px 7px 6px;color:var(--dca-gray-darker, #484848);border-bottom:1px solid var(--dca-gray-lighter, #d1d1d1);background:var(--dca-gray-super-lightest, #f8f8f8)}.cke_colorblock{padding:10px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:var(--dca-black, #000)}a.cke_colorbox{padding:2px;float:left;width:20px;height:20px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{outline:0;padding:0;border:2px solid var(--dca-primary, #139ff7)}a:hover.cke_colorbox{border-color:var(--dca-gray-lighter, #bcbcbc)}span.cke_colorbox{width:20px;height:20px;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorauto,a.cke_colormore{border:var(--dca-white, #fff) 1px solid;padding:3px;display:block;cursor:pointer}a.cke_colorauto{padding:0;border:1px solid transparent;margin-bottom:6px;height:26px;line-height:26px}a.cke_colormore{margin-top:10px;height:20px;line-height:19px}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{outline:0;border:var(--dca-primary, #139ff7) 1px solid;background-color:var(--dca-gray-super-lightest, #f8f8f8)}a:hover.cke_colorauto,a:hover.cke_colormore{border-color:var(--dca-gray-lighter, #bcbcbc)}.cke_colorauto span.cke_colorbox{width:18px;height:18px;border:1px solid var(--dca-gray, #80808)0;margin-left:1px;margin-top:3px}.cke_rtl .cke_colorauto span.cke_colorbox{margin-left:0;margin-right:1px}span.cke_colorbox[style*="var(--dca-white, #fff)fff"],span.cke_colorbox[style*="var(--dca-white, #fff)FFF"],span.cke_colorbox[style="background-color:var(--dca-white, #fff)"],span.cke_colorbox[style="background-color:var(--dca-white, #fff)"],span.cke_colorbox[style*="rgb(255,255,255)"],span.cke_colorbox[style*="rgb(255, 255, 255)"]{border:1px solid var(--dca-gray, #80808)0;width:18px;height:18px}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{border:0;float:left;margin:1px 2px 6px 0;padding-right:3px}.cke_rtl .cke_toolgroup{float:right;margin:1px 0 6px 2px;padding-left:3px;padding-right:0}.cke_hc .cke_toolgroup{margin-right:5px;margin-bottom:5px}.cke_hc.cke_rtl .cke_toolgroup{margin-right:0;margin-left:5px}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0;position:relative}a.cke_button_expandable{padding:4px 5px}.cke_rtl a.cke_button{float:right}.cke_hc a.cke_button{border:1px solid black;padding:3px 5px;margin:0 3px 5px 0}.cke_hc.cke_rtl a.cke_button{margin:0 0 5px 3px}a.cke_button_on{background:var(--dca-white, #fff);border:1px var(--dca-gray-lighter, #bcbcbc) solid;padding:3px 5px}a.cke_button_expandable.cke_button_on{padding:3px 4px}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active{background:var(--dca-gray-lightest, #e5e5e5);border:1px var(--dca-gray-lighter, #bcbcbc) solid;padding:3px 5px}a.cke_button_expandable.cke_button_off:hover,a.cke_button_expandable.cke_button_off:focus,a.cke_button_expandable.cke_button_off:active{padding:3px 4px}.cke_hc a.cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active{background:var(--dca-gray-lightest, #e5e5e5);border:3px solid var(--dca-black, #000);padding:1px 3px}@media screen and (hover:none){a.cke_button_off:hover{background:transparent;border:0;padding:4px 6px}a.cke_button_expandable.cke_button_off:hover{padding:4px 5px}a.cke_button_off:active{background:var(--dca-gray-lightest, #e5e5e5);border:1px var(--dca-gray-lighter, #bcbcbc) solid;padding:3px 5px}a.cke_button_expandable.cke_button_off:active{padding:3px 4px}}a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{border:0;padding:4px 6px;background-color:transparent}a.cke_button_expandable.cke_button_disabled:hover,a.cke_button_expandable.cke_button_disabled:active{padding:4px 5px}a.cke_button_disabled:focus{border:1px var(--dca-gray-lighter, #bcbcbc) solid;padding:3px 5px}a.cke_button_expandable.cke_button_disabled:focus{padding:3px 4px}.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border:1px solid var(--dca-gray-lighter, #acacac);padding:3px 5px;margin:0 3px 5px 0}.cke_hc a.cke_button_disabled:focus{border:3px solid var(--dca-black, #000);padding:1px 3px}.cke_hc.cke_rtl a.cke_button_disabled:hover,.cke_hc.cke_rtl a.cke_button_disabled:focus,.cke_hc.cke_rtl a.cke_button_disabled:active{margin:0 0 5px 3px}a.cke_button_disabled .cke_button_icon,a.cke_button_disabled .cke_button_arrow{opacity:.3}.cke_hc a.cke_button_disabled{border-color:var(--dca-gray-lighter, #acacac)}.cke_hc a.cke_button_disabled .cke_button_icon,.cke_hc a.cke_button_disabled .cke_button_label{opacity:.5}.cke_toolgroup a.cke_button:last-child:after,.cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{content:"";position:absolute;height:18px;width:0;border-right:1px solid var(--dca-gray-lighter, #bcbcbc);margin-top:4px;top:0;right:-3px}.cke_rtl .cke_toolgroup a.cke_button:last-child:after,.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{border-right:0;right:auto;border-left:1px solid var(--dca-gray-lighter, #bcbcbc);top:0;left:-3px}.cke_hc .cke_toolgroup a.cke_button:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_disabled:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{border-color:var(--dca-black, #000);top:0;right:-7px}.cke_hc.cke_rtl .cke_toolgroup a.cke_button:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{top:0;right:auto;left:-7px}.cke_toolgroup a.cke_button:hover:last-child:after,.cke_toolgroup a.cke_button:focus:last-child:after,.cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-1px;right:-4px}.cke_rtl .cke_toolgroup a.cke_button:hover:last-child:after,.cke_rtl .cke_toolgroup a.cke_button:focus:last-child:after,.cke_rtl .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-1px;right:auto;left:-4px}.cke_hc .cke_toolgroup a.cke_button:hover:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-2px;right:-9px}.cke_hc.cke_rtl .cke_toolgroup a.cke_button:hover:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-2px;right:auto;left:-9px}.cke_toolbar.cke_toolbar_last .cke_toolgroup a.cke_button:last-child:after{content:none;border:0;width:0;height:0}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:var(--dca-gray-darker, #484848)}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 3px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid var(--dca-gray-darker, #484848)}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px 0 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:var(--dca-gray-lighter, #bcbcbc);margin:4px 2px 0 2px;height:18px;width:1px}.cke_rtl .cke_toolbar_separator{float:right}.cke_hc .cke_toolbar_separator{background-color:var(--dca-black, #000);margin-left:2px;margin-right:5px;margin-bottom:9px}.cke_hc.cke_rtl .cke_toolbar_separator{margin-left:5px;margin-right:2px}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}a.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid var(--dca-gray-lighter, #bcbcbc)}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser:hover{background:var(--dca-gray-lightest, #e5e5e5)}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border:3px solid transparent;border-bottom-color:var(--dca-gray-darker, #484848)}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:var(--dca-gray-darker, #484848)}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0}.cke_menuitem span{cursor:default}.cke_menubutton{display:block}.cke_hc .cke_menubutton{padding:2px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:var(--dca-gray-lightest, #e9e9e9);display:block;outline:1px dotted}.cke_menubutton:hover{outline:0}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_disabled:hover,.cke_menubutton_disabled:focus,.cke_menubutton_disabled:active{background-color:transparent;outline:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:var(--dca-gray-super-lightest, #f8f8f8);padding:6px 4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:var(--dca-gray-lightest, #e9e9e9)}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{background-color:var(--dca-gray-super-lightest, #f8f8f8);outline:0}.cke_menuitem .cke_menubutton_on{background-color:var(--dca-gray-lightest, #e9e9e9);border:1px solid #dedede;outline:0}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px;background-color:var(--dca-gray-lightest, #e9e9e9)}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_shortcut{color:var(--dca-gray-light, #979797)}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:var(--dca-gray-lighter, #d1d1d1);height:1px}.cke_menuarrow{background:transparent url(images/arrow.png) no-repeat 0 10px;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_hc .cke_menuarrow{background-image:none}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left;position:relative;margin-bottom:5px}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:1px;margin-bottom:10px}.cke_combo:after{content:"";position:absolute;height:18px;width:0;border-right:1px solid var(--dca-gray-lighter, #bcbcbc);margin-top:5px;top:0;right:0}.cke_rtl .cke_combo:after{border-right:0;border-left:1px solid var(--dca-gray-lighter, #bcbcbc);right:auto;left:0}.cke_hc .cke_combo:after{border-color:var(--dca-black, #000)}a.cke_combo_button{cursor:default;display:inline-block;float:left;margin:0;padding:1px}.cke_rtl a.cke_combo_button{float:right}.cke_hc a.cke_combo_button{padding:4px}.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{background:var(--dca-gray-lightest, #e5e5e5);border:1px solid var(--dca-gray-lighter, #bcbcbc);padding:0 0 0 1px;margin-left:-1px}.cke_combo_off a.cke_combo_button:focus{outline:0}.cke_combo_on a.cke_combo_button,.cke_combo_off a.cke_combo_button:active{background:var(--dca-white, #fff)}@media screen and (hover:none){.cke_combo_off a.cke_combo_button:hover{background:transparent;border-color:transparent}.cke_combo_off a.cke_combo_button:active{background:var(--dca-white, #fff);border:1px solid var(--dca-gray-lighter, #bcbcbc)}}.cke_rtl .cke_combo_on a.cke_combo_button,.cke_rtl .cke_combo_off a.cke_combo_button:hover,.cke_rtl .cke_combo_off a.cke_combo_button:focus,.cke_rtl .cke_combo_off a.cke_combo_button:active{padding:0 1px 0 0;margin-left:0;margin-right:-1px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border:3px solid var(--dca-black, #000);padding:1px 1px 1px 2px}.cke_hc.cke_rtl .cke_combo_on a.cke_combo_button,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:hover,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:focus,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:active{padding:1px 2px 1px 1px}.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0 0 0 3px;margin-left:-3px}.cke_rtl .cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0 3px 0 0;margin-left:0;margin-right:-3px}.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px 1px 1px 7px;margin-left:-6px}.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px 7px 1px 1px;margin-left:0;margin-right:-6px}.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0;margin:0}.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px;margin:0}.cke_toolbar .cke_combo+.cke_toolbar_end,.cke_toolbar .cke_combo+.cke_toolgroup{margin-right:0;margin-left:2px}.cke_rtl .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_rtl .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:0;margin-right:2px}.cke_hc .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_hc .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:5px}.cke_hc.cke_rtl .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_hc.cke_rtl .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:0;margin-right:5px}.cke_toolbar.cke_toolbar_last .cke_combo:nth-last-child(-n+2):after{content:none;border:0;width:0;height:0}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:var(--dca-gray-darker, #484848);width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 10px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{cursor:default;margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid var(--dca-gray-darker, #484848)}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}a.cke_path_item,span.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:var(--dca-gray-darker, #484848);font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:var(--dca-gray-lightest, #e5e5e5)}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combopanel__fontsize{width:135px}textarea.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:var(--dca-white, #fff);white-space:pre-wrap;border:0;padding:0;margin:0;display:block}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:var(--dca-white, #fff)}.cke_notifications_area{pointer-events:none}.cke_notification{pointer-events:auto;position:relative;margin:10px;width:300px;color:white;text-align:center;opacity:.95;filter:alpha(opacity = 95);-webkit-animation:fadeIn .7s;animation:fadeIn .7s}.cke_notification_message a{color:#12306f}@-webkit-keyframes fadeIn{from{opacity:.4}to{opacity:.95}}@keyframes fadeIn{from{opacity:.4}to{opacity:.95}}.cke_notification_success{background:#72b572;border:1px solid #63a563}.cke_notification_warning{background:#c83939;border:1px solid #902b2b}.cke_notification_info{background:#2e9ad0;border:1px solid #0f74a8}.cke_notification_info span.cke_notification_progress{background-color:#0f74a8;display:block;padding:0;margin:0;height:100%;overflow:hidden;position:absolute;z-index:1}.cke_notification_message{position:relative;margin:4px 23px 3px;font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:18px;z-index:4;text-overflow:ellipsis;overflow:hidden}.cke_notification_close{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:1px;right:1px;padding:0;margin:0;z-index:5;opacity:.6;filter:alpha(opacity = 60)}.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_notification_close span{display:none}.cke_notification_warning a.cke_notification_close{opacity:.8;filter:alpha(opacity = 80)}.cke_notification_warning a.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}@media(prefers-color-scheme: dark){.cke_button_icon{filter:brightness(3);}} +/* Patched for djangocms-text-ckeditor */ diff --git a/djangocms_text_ckeditor/static/djangocms_text_ckeditor/ckeditor/skins/moono-lisa/editor_gecko.css b/djangocms_text_ckeditor/static/djangocms_text_ckeditor/ckeditor/skins/moono-lisa/editor_gecko.css index 87302ab6a..1c3eab415 100644 --- a/djangocms_text_ckeditor/static/djangocms_text_ckeditor/ckeditor/skins/moono-lisa/editor_gecko.css +++ b/djangocms_text_ckeditor/static/djangocms_text_ckeditor/ckeditor/skins/moono-lisa/editor_gecko.css @@ -2,4 +2,5 @@ Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none}.cke_reset_all,.cke_reset_all *,.cke_reset_all a,.cke_reset_all textarea{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre-wrap}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;border:1px solid #d1d1d1;padding:0}.cke_inner{display:block;background:#fff;padding:0;-webkit-touch-callout:none}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #d1d1d1;background:#f8f8f8;padding:6px 8px 2px;white-space:normal}.cke_float .cke_top{border:1px solid #d1d1d1}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #d1d1d1;background:#f8f8f8}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #bcbcbc transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #bcbcbc;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #d1d1d1}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_block:focus{outline:0}.cke_panel_list{margin:0;padding:0;list-style-type:none;white-space:nowrap}.cke_panel_listItem{margin:0;padding:0}.cke_panel_listItem a{padding:6px 7px;display:block;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis}.cke_hc .cke_panel_listItem a{border-style:none}.cke_panel_listItem.cke_selected a,.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{background-color:#e9e9e9}.cke_panel_listItem a:focus{outline:1px dotted #000}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:4px 5px}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:6px 6px 7px 6px;color:#484848;border-bottom:1px solid #d1d1d1;background:#f8f8f8}.cke_colorblock{padding:10px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}a.cke_colorbox{padding:2px;float:left;width:20px;height:20px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{outline:0;padding:0;border:2px solid #139ff7}a:hover.cke_colorbox{border-color:#bcbcbc}span.cke_colorbox{width:20px;height:20px;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:3px;display:block;cursor:pointer}a.cke_colorauto{padding:0;border:1px solid transparent;margin-bottom:6px;height:26px;line-height:26px}a.cke_colormore{margin-top:10px;height:20px;line-height:19px}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{outline:0;border:#139ff7 1px solid;background-color:#f8f8f8}a:hover.cke_colorauto,a:hover.cke_colormore{border-color:#bcbcbc}.cke_colorauto span.cke_colorbox{width:18px;height:18px;border:1px solid #808080;margin-left:1px;margin-top:3px}.cke_rtl .cke_colorauto span.cke_colorbox{margin-left:0;margin-right:1px}span.cke_colorbox[style*="#ffffff"],span.cke_colorbox[style*="#FFFFFF"],span.cke_colorbox[style="background-color:#fff"],span.cke_colorbox[style="background-color:#FFF"],span.cke_colorbox[style*="rgb(255,255,255)"],span.cke_colorbox[style*="rgb(255, 255, 255)"]{border:1px solid #808080;width:18px;height:18px}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{border:0;float:left;margin:1px 2px 6px 0;padding-right:3px}.cke_rtl .cke_toolgroup{float:right;margin:1px 0 6px 2px;padding-left:3px;padding-right:0}.cke_hc .cke_toolgroup{margin-right:5px;margin-bottom:5px}.cke_hc.cke_rtl .cke_toolgroup{margin-right:0;margin-left:5px}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0;position:relative}a.cke_button_expandable{padding:4px 5px}.cke_rtl a.cke_button{float:right}.cke_hc a.cke_button{border:1px solid black;padding:3px 5px;margin:0 3px 5px 0}.cke_hc.cke_rtl a.cke_button{margin:0 0 5px 3px}a.cke_button_on{background:#fff;border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_on{padding:3px 4px}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active{background:#e5e5e5;border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_off:hover,a.cke_button_expandable.cke_button_off:focus,a.cke_button_expandable.cke_button_off:active{padding:3px 4px}.cke_hc a.cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active{background:#e5e5e5;border:3px solid #000;padding:1px 3px}@media screen and (hover:none){a.cke_button_off:hover{background:transparent;border:0;padding:4px 6px}a.cke_button_expandable.cke_button_off:hover{padding:4px 5px}a.cke_button_off:active{background:#e5e5e5;border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_off:active{padding:3px 4px}}a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{border:0;padding:4px 6px;background-color:transparent}a.cke_button_expandable.cke_button_disabled:hover,a.cke_button_expandable.cke_button_disabled:active{padding:4px 5px}a.cke_button_disabled:focus{border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_disabled:focus{padding:3px 4px}.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border:1px solid #acacac;padding:3px 5px;margin:0 3px 5px 0}.cke_hc a.cke_button_disabled:focus{border:3px solid #000;padding:1px 3px}.cke_hc.cke_rtl a.cke_button_disabled:hover,.cke_hc.cke_rtl a.cke_button_disabled:focus,.cke_hc.cke_rtl a.cke_button_disabled:active{margin:0 0 5px 3px}a.cke_button_disabled .cke_button_icon,a.cke_button_disabled .cke_button_arrow{opacity:.3}.cke_hc a.cke_button_disabled{border-color:#acacac}.cke_hc a.cke_button_disabled .cke_button_icon,.cke_hc a.cke_button_disabled .cke_button_label{opacity:.5}.cke_toolgroup a.cke_button:last-child:after,.cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{content:"";position:absolute;height:18px;width:0;border-right:1px solid #bcbcbc;margin-top:4px;top:0;right:-3px}.cke_rtl .cke_toolgroup a.cke_button:last-child:after,.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{border-right:0;right:auto;border-left:1px solid #bcbcbc;top:0;left:-3px}.cke_hc .cke_toolgroup a.cke_button:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_disabled:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{border-color:#000;top:0;right:-7px}.cke_hc.cke_rtl .cke_toolgroup a.cke_button:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{top:0;right:auto;left:-7px}.cke_toolgroup a.cke_button:hover:last-child:after,.cke_toolgroup a.cke_button:focus:last-child:after,.cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-1px;right:-4px}.cke_rtl .cke_toolgroup a.cke_button:hover:last-child:after,.cke_rtl .cke_toolgroup a.cke_button:focus:last-child:after,.cke_rtl .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-1px;right:auto;left:-4px}.cke_hc .cke_toolgroup a.cke_button:hover:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-2px;right:-9px}.cke_hc.cke_rtl .cke_toolgroup a.cke_button:hover:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-2px;right:auto;left:-9px}.cke_toolbar.cke_toolbar_last .cke_toolgroup a.cke_button:last-child:after{content:none;border:0;width:0;height:0}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#484848}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 3px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #484848}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px 0 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#bcbcbc;margin:4px 2px 0 2px;height:18px;width:1px}.cke_rtl .cke_toolbar_separator{float:right}.cke_hc .cke_toolbar_separator{background-color:#000;margin-left:2px;margin-right:5px;margin-bottom:9px}.cke_hc.cke_rtl .cke_toolbar_separator{margin-left:5px;margin-right:2px}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}a.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #bcbcbc}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser:hover{background:#e5e5e5}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border:3px solid transparent;border-bottom-color:#484848}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#484848}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0}.cke_menuitem span{cursor:default}.cke_menubutton{display:block}.cke_hc .cke_menubutton{padding:2px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#e9e9e9;display:block;outline:1px dotted}.cke_menubutton:hover{outline:0}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_disabled:hover,.cke_menubutton_disabled:focus,.cke_menubutton_disabled:active{background-color:transparent;outline:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#f8f8f8;padding:6px 4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#e9e9e9}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{background-color:#f8f8f8;outline:0}.cke_menuitem .cke_menubutton_on{background-color:#e9e9e9;border:1px solid #dedede;outline:0}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px;background-color:#e9e9e9}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_shortcut{color:#979797}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d1d1d1;height:1px}.cke_menuarrow{background:transparent url(images/arrow.png) no-repeat 0 10px;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_hc .cke_menuarrow{background-image:none}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left;position:relative;margin-bottom:5px}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:1px;margin-bottom:10px}.cke_combo:after{content:"";position:absolute;height:18px;width:0;border-right:1px solid #bcbcbc;margin-top:5px;top:0;right:0}.cke_rtl .cke_combo:after{border-right:0;border-left:1px solid #bcbcbc;right:auto;left:0}.cke_hc .cke_combo:after{border-color:#000}a.cke_combo_button{cursor:default;display:inline-block;float:left;margin:0;padding:1px}.cke_rtl a.cke_combo_button{float:right}.cke_hc a.cke_combo_button{padding:4px}.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{background:#e5e5e5;border:1px solid #bcbcbc;padding:0 0 0 1px;margin-left:-1px}.cke_combo_off a.cke_combo_button:focus{outline:0}.cke_combo_on a.cke_combo_button,.cke_combo_off a.cke_combo_button:active{background:#fff}@media screen and (hover:none){.cke_combo_off a.cke_combo_button:hover{background:transparent;border-color:transparent}.cke_combo_off a.cke_combo_button:active{background:#fff;border:1px solid #bcbcbc}}.cke_rtl .cke_combo_on a.cke_combo_button,.cke_rtl .cke_combo_off a.cke_combo_button:hover,.cke_rtl .cke_combo_off a.cke_combo_button:focus,.cke_rtl .cke_combo_off a.cke_combo_button:active{padding:0 1px 0 0;margin-left:0;margin-right:-1px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border:3px solid #000;padding:1px 1px 1px 2px}.cke_hc.cke_rtl .cke_combo_on a.cke_combo_button,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:hover,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:focus,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:active{padding:1px 2px 1px 1px}.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0 0 0 3px;margin-left:-3px}.cke_rtl .cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0 3px 0 0;margin-left:0;margin-right:-3px}.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px 1px 1px 7px;margin-left:-6px}.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px 7px 1px 1px;margin-left:0;margin-right:-6px}.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0;margin:0}.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px;margin:0}.cke_toolbar .cke_combo+.cke_toolbar_end,.cke_toolbar .cke_combo+.cke_toolgroup{margin-right:0;margin-left:2px}.cke_rtl .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_rtl .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:0;margin-right:2px}.cke_hc .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_hc .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:5px}.cke_hc.cke_rtl .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_hc.cke_rtl .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:0;margin-right:5px}.cke_toolbar.cke_toolbar_last .cke_combo:nth-last-child(-n+2):after{content:none;border:0;width:0;height:0}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#484848;width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 10px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{cursor:default;margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #484848}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}a.cke_path_item,span.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#484848;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#e5e5e5}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combopanel__fontsize{width:135px}textarea.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre-wrap;border:0;padding:0;margin:0;display:block}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_notifications_area{pointer-events:none}.cke_notification{pointer-events:auto;position:relative;margin:10px;width:300px;color:white;text-align:center;opacity:.95;filter:alpha(opacity = 95);-webkit-animation:fadeIn .7s;animation:fadeIn .7s}.cke_notification_message a{color:#12306f}@-webkit-keyframes fadeIn{from{opacity:.4}to{opacity:.95}}@keyframes fadeIn{from{opacity:.4}to{opacity:.95}}.cke_notification_success{background:#72b572;border:1px solid #63a563}.cke_notification_warning{background:#c83939;border:1px solid #902b2b}.cke_notification_info{background:#2e9ad0;border:1px solid #0f74a8}.cke_notification_info span.cke_notification_progress{background-color:#0f74a8;display:block;padding:0;margin:0;height:100%;overflow:hidden;position:absolute;z-index:1}.cke_notification_message{position:relative;margin:4px 23px 3px;font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:18px;z-index:4;text-overflow:ellipsis;overflow:hidden}.cke_notification_close{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:1px;right:1px;padding:0;margin:0;z-index:5;opacity:.6;filter:alpha(opacity = 60)}.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_notification_close span{display:none}.cke_notification_warning a.cke_notification_close{opacity:.8;filter:alpha(opacity = 80)}.cke_notification_warning a.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}.cke_bottom{padding-bottom:3px}.cke_combo_text{margin-bottom:-1px;margin-top:1px}.cke_button__about_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -0px !important;}.cke_button__bold_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -24px !important;}.cke_button__italic_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -48px !important;}.cke_button__strike_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -72px !important;}.cke_button__subscript_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -96px !important;}.cke_button__superscript_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -120px !important;}.cke_button__underline_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -144px !important;}.cke_button__bidiltr_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -168px !important;}.cke_button__bidirtl_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -192px !important;}.cke_button__blockquote_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -216px !important;}.cke_rtl .cke_button__copy_icon, .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -240px !important;}.cke_ltr .cke_button__copy_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -264px !important;}.cke_rtl .cke_button__cut_icon, .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -288px !important;}.cke_ltr .cke_button__cut_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -312px !important;}.cke_rtl .cke_button__paste_icon, .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -336px !important;}.cke_ltr .cke_button__paste_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -360px !important;}.cke_button__bgcolor_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -384px !important;}.cke_button__textcolor_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -408px !important;}.cke_rtl .cke_button__templates_icon, .cke_mixed_dir_content .cke_rtl .cke_button__templates_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -432px !important;}.cke_ltr .cke_button__templates_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -456px !important;}.cke_button__copyformatting_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -480px !important;}.cke_button__creatediv_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -504px !important;}.cke_rtl .cke_button__find_icon, .cke_mixed_dir_content .cke_rtl .cke_button__find_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -528px !important;}.cke_ltr .cke_button__find_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -552px !important;}.cke_button__replace_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -576px !important;}.cke_button__button_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -600px !important;}.cke_button__checkbox_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -624px !important;}.cke_button__form_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -648px !important;}.cke_button__hiddenfield_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -672px !important;}.cke_button__imagebutton_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -696px !important;}.cke_button__radio_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -720px !important;}.cke_rtl .cke_button__select_icon, .cke_mixed_dir_content .cke_rtl .cke_button__select_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -744px !important;}.cke_ltr .cke_button__select_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -768px !important;}.cke_rtl .cke_button__textarea_icon, .cke_mixed_dir_content .cke_rtl .cke_button__textarea_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -792px !important;}.cke_ltr .cke_button__textarea_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -816px !important;}.cke_rtl .cke_button__textfield_icon, .cke_mixed_dir_content .cke_rtl .cke_button__textfield_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -840px !important;}.cke_ltr .cke_button__textfield_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -864px !important;}.cke_button__horizontalrule_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -888px !important;}.cke_button__iframe_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -912px !important;}.cke_button__image_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -936px !important;}.cke_rtl .cke_button__indent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -960px !important;}.cke_ltr .cke_button__indent_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -984px !important;}.cke_rtl .cke_button__outdent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1008px !important;}.cke_ltr .cke_button__outdent_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1032px !important;}.cke_button__smiley_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1056px !important;}.cke_button__justifyblock_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1080px !important;}.cke_button__justifycenter_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1104px !important;}.cke_button__justifyleft_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1128px !important;}.cke_button__justifyright_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1152px !important;}.cke_button__language_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1176px !important;}.cke_rtl .cke_button__anchor_icon, .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1200px !important;}.cke_ltr .cke_button__anchor_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1224px !important;}.cke_button__link_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1248px !important;}.cke_button__unlink_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1272px !important;}.cke_rtl .cke_button__bulletedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1296px !important;}.cke_ltr .cke_button__bulletedlist_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1320px !important;}.cke_rtl .cke_button__numberedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1344px !important;}.cke_ltr .cke_button__numberedlist_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1368px !important;}.cke_button__maximize_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1392px !important;}.cke_rtl .cke_button__newpage_icon, .cke_mixed_dir_content .cke_rtl .cke_button__newpage_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1416px !important;}.cke_ltr .cke_button__newpage_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1440px !important;}.cke_rtl .cke_button__pagebreak_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pagebreak_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1464px !important;}.cke_ltr .cke_button__pagebreak_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1488px !important;}.cke_rtl .cke_button__pastetext_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1512px !important;}.cke_ltr .cke_button__pastetext_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1536px !important;}.cke_rtl .cke_button__pastefromword_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1560px !important;}.cke_ltr .cke_button__pastefromword_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1584px !important;}.cke_rtl .cke_button__preview_icon, .cke_mixed_dir_content .cke_rtl .cke_button__preview_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1608px !important;}.cke_ltr .cke_button__preview_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1632px !important;}.cke_button__print_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1656px !important;}.cke_button__removeformat_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1680px !important;}.cke_button__save_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1704px !important;}.cke_button__selectall_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1728px !important;}.cke_rtl .cke_button__showblocks_icon, .cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1752px !important;}.cke_ltr .cke_button__showblocks_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1776px !important;}.cke_rtl .cke_button__source_icon, .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1800px !important;}.cke_ltr .cke_button__source_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1824px !important;}.cke_button__specialchar_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1848px !important;}.cke_button__scayt_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1872px !important;}.cke_button__table_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1896px !important;}.cke_rtl .cke_button__redo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1920px !important;}.cke_ltr .cke_button__redo_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1944px !important;}.cke_rtl .cke_button__undo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1968px !important;}.cke_ltr .cke_button__undo_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1992px !important;}.cke_button__spellchecker_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -2016px !important;}.cke_hidpi .cke_button__about_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -0px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bold_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -24px !important;background-size: 16px !important;}.cke_hidpi .cke_button__italic_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -48px !important;background-size: 16px !important;}.cke_hidpi .cke_button__strike_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -72px !important;background-size: 16px !important;}.cke_hidpi .cke_button__subscript_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -96px !important;background-size: 16px !important;}.cke_hidpi .cke_button__superscript_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -120px !important;background-size: 16px !important;}.cke_hidpi .cke_button__underline_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -144px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bidiltr_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -168px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bidirtl_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -192px !important;background-size: 16px !important;}.cke_hidpi .cke_button__blockquote_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -216px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__copy_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -240px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__copy_icon,.cke_ltr.cke_hidpi .cke_button__copy_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -264px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__cut_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -288px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__cut_icon,.cke_ltr.cke_hidpi .cke_button__cut_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -312px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__paste_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -336px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__paste_icon,.cke_ltr.cke_hidpi .cke_button__paste_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -360px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bgcolor_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -384px !important;background-size: 16px !important;}.cke_hidpi .cke_button__textcolor_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -408px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__templates_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__templates_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -432px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__templates_icon,.cke_ltr.cke_hidpi .cke_button__templates_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -456px !important;background-size: 16px !important;}.cke_hidpi .cke_button__copyformatting_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -480px !important;background-size: 16px !important;}.cke_hidpi .cke_button__creatediv_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -504px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__find_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__find_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -528px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__find_icon,.cke_ltr.cke_hidpi .cke_button__find_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -552px !important;background-size: 16px !important;}.cke_hidpi .cke_button__replace_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -576px !important;background-size: 16px !important;}.cke_hidpi .cke_button__button_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -600px !important;background-size: 16px !important;}.cke_hidpi .cke_button__checkbox_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -624px !important;background-size: 16px !important;}.cke_hidpi .cke_button__form_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -648px !important;background-size: 16px !important;}.cke_hidpi .cke_button__hiddenfield_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -672px !important;background-size: 16px !important;}.cke_hidpi .cke_button__imagebutton_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -696px !important;background-size: 16px !important;}.cke_hidpi .cke_button__radio_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -720px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__select_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__select_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -744px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__select_icon,.cke_ltr.cke_hidpi .cke_button__select_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -768px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__textarea_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__textarea_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -792px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__textarea_icon,.cke_ltr.cke_hidpi .cke_button__textarea_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -816px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__textfield_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__textfield_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -840px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__textfield_icon,.cke_ltr.cke_hidpi .cke_button__textfield_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -864px !important;background-size: 16px !important;}.cke_hidpi .cke_button__horizontalrule_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -888px !important;background-size: 16px !important;}.cke_hidpi .cke_button__iframe_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -912px !important;background-size: 16px !important;}.cke_hidpi .cke_button__image_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -936px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__indent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -960px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__indent_icon,.cke_ltr.cke_hidpi .cke_button__indent_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -984px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__outdent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1008px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__outdent_icon,.cke_ltr.cke_hidpi .cke_button__outdent_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1032px !important;background-size: 16px !important;}.cke_hidpi .cke_button__smiley_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1056px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyblock_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1080px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifycenter_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1104px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyleft_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1128px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyright_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1152px !important;background-size: 16px !important;}.cke_hidpi .cke_button__language_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1176px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__anchor_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1200px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__anchor_icon,.cke_ltr.cke_hidpi .cke_button__anchor_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1224px !important;background-size: 16px !important;}.cke_hidpi .cke_button__link_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1248px !important;background-size: 16px !important;}.cke_hidpi .cke_button__unlink_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1272px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__bulletedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1296px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__bulletedlist_icon,.cke_ltr.cke_hidpi .cke_button__bulletedlist_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1320px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__numberedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1344px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__numberedlist_icon,.cke_ltr.cke_hidpi .cke_button__numberedlist_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1368px !important;background-size: 16px !important;}.cke_hidpi .cke_button__maximize_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1392px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__newpage_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__newpage_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1416px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__newpage_icon,.cke_ltr.cke_hidpi .cke_button__newpage_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1440px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pagebreak_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pagebreak_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1464px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pagebreak_icon,.cke_ltr.cke_hidpi .cke_button__pagebreak_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1488px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastetext_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1512px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastetext_icon,.cke_ltr.cke_hidpi .cke_button__pastetext_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1536px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastefromword_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1560px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastefromword_icon,.cke_ltr.cke_hidpi .cke_button__pastefromword_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1584px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__preview_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__preview_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1608px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__preview_icon,.cke_ltr.cke_hidpi .cke_button__preview_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1632px !important;background-size: 16px !important;}.cke_hidpi .cke_button__print_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1656px !important;background-size: 16px !important;}.cke_hidpi .cke_button__removeformat_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1680px !important;background-size: 16px !important;}.cke_hidpi .cke_button__save_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1704px !important;background-size: 16px !important;}.cke_hidpi .cke_button__selectall_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1728px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__showblocks_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1752px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__showblocks_icon,.cke_ltr.cke_hidpi .cke_button__showblocks_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1776px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__source_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1800px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__source_icon,.cke_ltr.cke_hidpi .cke_button__source_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1824px !important;background-size: 16px !important;}.cke_hidpi .cke_button__specialchar_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1848px !important;background-size: 16px !important;}.cke_hidpi .cke_button__scayt_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1872px !important;background-size: 16px !important;}.cke_hidpi .cke_button__table_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1896px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__redo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1920px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__redo_icon,.cke_ltr.cke_hidpi .cke_button__redo_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1944px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__undo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1968px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__undo_icon,.cke_ltr.cke_hidpi .cke_button__undo_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1992px !important;background-size: 16px !important;}.cke_hidpi .cke_button__spellchecker_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -2016px !important;background-size: 16px !important;} \ No newline at end of file +.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none}.cke_reset_all,.cke_reset_all *,.cke_reset_all a,.cke_reset_all textarea{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:var(--dca-black, #000);text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre-wrap}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;border:1px solid var(--dca-gray-lighter, #d1d1d1);padding:0}.cke_inner{display:block;background:var(--dca-white, #fff);padding:0;-webkit-touch-callout:none}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid var(--dca-gray-lighter, #d1d1d1);background:var(--dca-gray-super-lightest, #f8f8f8);padding:6px 8px 2px;white-space:normal}.cke_float .cke_top{border:1px solid var(--dca-gray-lighter, #d1d1d1)}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid var(--dca-gray-lighter, #d1d1d1);background:var(--dca-gray-super-lightest, #f8f8f8)}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent var(--dca-gray-lighter, #bcbcbc) transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent var(--dca-gray-lighter, #bcbcbc);border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:var(--dca-white, #fff);border:1px solid var(--dca-gray-lighter, #d1d1d1)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_block:focus{outline:0}.cke_panel_list{margin:0;padding:0;list-style-type:none;white-space:nowrap}.cke_panel_listItem{margin:0;padding:0}.cke_panel_listItem a{padding:6px 7px;display:block;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis}.cke_hc .cke_panel_listItem a{border-style:none}.cke_panel_listItem.cke_selected a,.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{background-color:var(--dca-gray-lightest, #e9e9e9)}.cke_panel_listItem a:focus{outline:1px dotted var(--dca-black, #000)}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:4px 5px}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:6px 6px 7px 6px;color:var(--dca-gray-darker, #484848);border-bottom:1px solid var(--dca-gray-lighter, #d1d1d1);background:var(--dca-gray-super-lightest, #f8f8f8)}.cke_colorblock{padding:10px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:var(--dca-black, #000)}a.cke_colorbox{padding:2px;float:left;width:20px;height:20px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{outline:0;padding:0;border:2px solid var(--dca-primary, #139ff7)}a:hover.cke_colorbox{border-color:var(--dca-gray-lighter, #bcbcbc)}span.cke_colorbox{width:20px;height:20px;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorauto,a.cke_colormore{border:var(--dca-white, #fff) 1px solid;padding:3px;display:block;cursor:pointer}a.cke_colorauto{padding:0;border:1px solid transparent;margin-bottom:6px;height:26px;line-height:26px}a.cke_colormore{margin-top:10px;height:20px;line-height:19px}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{outline:0;border:var(--dca-primary, #139ff7) 1px solid;background-color:var(--dca-gray-super-lightest, #f8f8f8)}a:hover.cke_colorauto,a:hover.cke_colormore{border-color:var(--dca-gray-lighter, #bcbcbc)}.cke_colorauto span.cke_colorbox{width:18px;height:18px;border:1px solid var(--dca-gray, #80808)0;margin-left:1px;margin-top:3px}.cke_rtl .cke_colorauto span.cke_colorbox{margin-left:0;margin-right:1px}span.cke_colorbox[style*="var(--dca-white, #fff)fff"],span.cke_colorbox[style*="var(--dca-white, #fff)FFF"],span.cke_colorbox[style="background-color:var(--dca-white, #fff)"],span.cke_colorbox[style="background-color:var(--dca-white, #fff)"],span.cke_colorbox[style*="rgb(255,255,255)"],span.cke_colorbox[style*="rgb(255, 255, 255)"]{border:1px solid var(--dca-gray, #80808)0;width:18px;height:18px}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{border:0;float:left;margin:1px 2px 6px 0;padding-right:3px}.cke_rtl .cke_toolgroup{float:right;margin:1px 0 6px 2px;padding-left:3px;padding-right:0}.cke_hc .cke_toolgroup{margin-right:5px;margin-bottom:5px}.cke_hc.cke_rtl .cke_toolgroup{margin-right:0;margin-left:5px}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0;position:relative}a.cke_button_expandable{padding:4px 5px}.cke_rtl a.cke_button{float:right}.cke_hc a.cke_button{border:1px solid black;padding:3px 5px;margin:0 3px 5px 0}.cke_hc.cke_rtl a.cke_button{margin:0 0 5px 3px}a.cke_button_on{background:var(--dca-white, #fff);border:1px var(--dca-gray-lighter, #bcbcbc) solid;padding:3px 5px}a.cke_button_expandable.cke_button_on{padding:3px 4px}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active{background:var(--dca-gray-lightest, #e5e5e5);border:1px var(--dca-gray-lighter, #bcbcbc) solid;padding:3px 5px}a.cke_button_expandable.cke_button_off:hover,a.cke_button_expandable.cke_button_off:focus,a.cke_button_expandable.cke_button_off:active{padding:3px 4px}.cke_hc a.cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active{background:var(--dca-gray-lightest, #e5e5e5);border:3px solid var(--dca-black, #000);padding:1px 3px}@media screen and (hover:none){a.cke_button_off:hover{background:transparent;border:0;padding:4px 6px}a.cke_button_expandable.cke_button_off:hover{padding:4px 5px}a.cke_button_off:active{background:var(--dca-gray-lightest, #e5e5e5);border:1px var(--dca-gray-lighter, #bcbcbc) solid;padding:3px 5px}a.cke_button_expandable.cke_button_off:active{padding:3px 4px}}a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{border:0;padding:4px 6px;background-color:transparent}a.cke_button_expandable.cke_button_disabled:hover,a.cke_button_expandable.cke_button_disabled:active{padding:4px 5px}a.cke_button_disabled:focus{border:1px var(--dca-gray-lighter, #bcbcbc) solid;padding:3px 5px}a.cke_button_expandable.cke_button_disabled:focus{padding:3px 4px}.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border:1px solid var(--dca-gray-lighter, #acacac);padding:3px 5px;margin:0 3px 5px 0}.cke_hc a.cke_button_disabled:focus{border:3px solid var(--dca-black, #000);padding:1px 3px}.cke_hc.cke_rtl a.cke_button_disabled:hover,.cke_hc.cke_rtl a.cke_button_disabled:focus,.cke_hc.cke_rtl a.cke_button_disabled:active{margin:0 0 5px 3px}a.cke_button_disabled .cke_button_icon,a.cke_button_disabled .cke_button_arrow{opacity:.3}.cke_hc a.cke_button_disabled{border-color:var(--dca-gray-lighter, #acacac)}.cke_hc a.cke_button_disabled .cke_button_icon,.cke_hc a.cke_button_disabled .cke_button_label{opacity:.5}.cke_toolgroup a.cke_button:last-child:after,.cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{content:"";position:absolute;height:18px;width:0;border-right:1px solid var(--dca-gray-lighter, #bcbcbc);margin-top:4px;top:0;right:-3px}.cke_rtl .cke_toolgroup a.cke_button:last-child:after,.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{border-right:0;right:auto;border-left:1px solid var(--dca-gray-lighter, #bcbcbc);top:0;left:-3px}.cke_hc .cke_toolgroup a.cke_button:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_disabled:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{border-color:var(--dca-black, #000);top:0;right:-7px}.cke_hc.cke_rtl .cke_toolgroup a.cke_button:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{top:0;right:auto;left:-7px}.cke_toolgroup a.cke_button:hover:last-child:after,.cke_toolgroup a.cke_button:focus:last-child:after,.cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-1px;right:-4px}.cke_rtl .cke_toolgroup a.cke_button:hover:last-child:after,.cke_rtl .cke_toolgroup a.cke_button:focus:last-child:after,.cke_rtl .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-1px;right:auto;left:-4px}.cke_hc .cke_toolgroup a.cke_button:hover:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-2px;right:-9px}.cke_hc.cke_rtl .cke_toolgroup a.cke_button:hover:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-2px;right:auto;left:-9px}.cke_toolbar.cke_toolbar_last .cke_toolgroup a.cke_button:last-child:after{content:none;border:0;width:0;height:0}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:var(--dca-gray-darker, #484848)}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 3px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid var(--dca-gray-darker, #484848)}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px 0 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:var(--dca-gray-lighter, #bcbcbc);margin:4px 2px 0 2px;height:18px;width:1px}.cke_rtl .cke_toolbar_separator{float:right}.cke_hc .cke_toolbar_separator{background-color:var(--dca-black, #000);margin-left:2px;margin-right:5px;margin-bottom:9px}.cke_hc.cke_rtl .cke_toolbar_separator{margin-left:5px;margin-right:2px}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}a.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid var(--dca-gray-lighter, #bcbcbc)}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser:hover{background:var(--dca-gray-lightest, #e5e5e5)}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border:3px solid transparent;border-bottom-color:var(--dca-gray-darker, #484848)}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:var(--dca-gray-darker, #484848)}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0}.cke_menuitem span{cursor:default}.cke_menubutton{display:block}.cke_hc .cke_menubutton{padding:2px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:var(--dca-gray-lightest, #e9e9e9);display:block;outline:1px dotted}.cke_menubutton:hover{outline:0}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_disabled:hover,.cke_menubutton_disabled:focus,.cke_menubutton_disabled:active{background-color:transparent;outline:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:var(--dca-gray-super-lightest, #f8f8f8);padding:6px 4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:var(--dca-gray-lightest, #e9e9e9)}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{background-color:var(--dca-gray-super-lightest, #f8f8f8);outline:0}.cke_menuitem .cke_menubutton_on{background-color:var(--dca-gray-lightest, #e9e9e9);border:1px solid #dedede;outline:0}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px;background-color:var(--dca-gray-lightest, #e9e9e9)}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_shortcut{color:var(--dca-gray-light, #979797)}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:var(--dca-gray-lighter, #d1d1d1);height:1px}.cke_menuarrow{background:transparent url(images/arrow.png) no-repeat 0 10px;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_hc .cke_menuarrow{background-image:none}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left;position:relative;margin-bottom:5px}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:1px;margin-bottom:10px}.cke_combo:after{content:"";position:absolute;height:18px;width:0;border-right:1px solid var(--dca-gray-lighter, #bcbcbc);margin-top:5px;top:0;right:0}.cke_rtl .cke_combo:after{border-right:0;border-left:1px solid var(--dca-gray-lighter, #bcbcbc);right:auto;left:0}.cke_hc .cke_combo:after{border-color:var(--dca-black, #000)}a.cke_combo_button{cursor:default;display:inline-block;float:left;margin:0;padding:1px}.cke_rtl a.cke_combo_button{float:right}.cke_hc a.cke_combo_button{padding:4px}.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{background:var(--dca-gray-lightest, #e5e5e5);border:1px solid var(--dca-gray-lighter, #bcbcbc);padding:0 0 0 1px;margin-left:-1px}.cke_combo_off a.cke_combo_button:focus{outline:0}.cke_combo_on a.cke_combo_button,.cke_combo_off a.cke_combo_button:active{background:var(--dca-white, #fff)}@media screen and (hover:none){.cke_combo_off a.cke_combo_button:hover{background:transparent;border-color:transparent}.cke_combo_off a.cke_combo_button:active{background:var(--dca-white, #fff);border:1px solid var(--dca-gray-lighter, #bcbcbc)}}.cke_rtl .cke_combo_on a.cke_combo_button,.cke_rtl .cke_combo_off a.cke_combo_button:hover,.cke_rtl .cke_combo_off a.cke_combo_button:focus,.cke_rtl .cke_combo_off a.cke_combo_button:active{padding:0 1px 0 0;margin-left:0;margin-right:-1px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border:3px solid var(--dca-black, #000);padding:1px 1px 1px 2px}.cke_hc.cke_rtl .cke_combo_on a.cke_combo_button,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:hover,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:focus,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:active{padding:1px 2px 1px 1px}.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0 0 0 3px;margin-left:-3px}.cke_rtl .cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0 3px 0 0;margin-left:0;margin-right:-3px}.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px 1px 1px 7px;margin-left:-6px}.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px 7px 1px 1px;margin-left:0;margin-right:-6px}.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0;margin:0}.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px;margin:0}.cke_toolbar .cke_combo+.cke_toolbar_end,.cke_toolbar .cke_combo+.cke_toolgroup{margin-right:0;margin-left:2px}.cke_rtl .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_rtl .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:0;margin-right:2px}.cke_hc .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_hc .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:5px}.cke_hc.cke_rtl .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_hc.cke_rtl .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:0;margin-right:5px}.cke_toolbar.cke_toolbar_last .cke_combo:nth-last-child(-n+2):after{content:none;border:0;width:0;height:0}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:var(--dca-gray-darker, #484848);width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 10px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{cursor:default;margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid var(--dca-gray-darker, #484848)}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}a.cke_path_item,span.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:var(--dca-gray-darker, #484848);font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:var(--dca-gray-lightest, #e5e5e5)}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combopanel__fontsize{width:135px}textarea.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:var(--dca-white, #fff);white-space:pre-wrap;border:0;padding:0;margin:0;display:block}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:var(--dca-white, #fff)}.cke_notifications_area{pointer-events:none}.cke_notification{pointer-events:auto;position:relative;margin:10px;width:300px;color:white;text-align:center;opacity:.95;filter:alpha(opacity = 95);-webkit-animation:fadeIn .7s;animation:fadeIn .7s}.cke_notification_message a{color:#12306f}@-webkit-keyframes fadeIn{from{opacity:.4}to{opacity:.95}}@keyframes fadeIn{from{opacity:.4}to{opacity:.95}}.cke_notification_success{background:#72b572;border:1px solid #63a563}.cke_notification_warning{background:#c83939;border:1px solid #902b2b}.cke_notification_info{background:#2e9ad0;border:1px solid #0f74a8}.cke_notification_info span.cke_notification_progress{background-color:#0f74a8;display:block;padding:0;margin:0;height:100%;overflow:hidden;position:absolute;z-index:1}.cke_notification_message{position:relative;margin:4px 23px 3px;font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:18px;z-index:4;text-overflow:ellipsis;overflow:hidden}.cke_notification_close{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:1px;right:1px;padding:0;margin:0;z-index:5;opacity:.6;filter:alpha(opacity = 60)}.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_notification_close span{display:none}.cke_notification_warning a.cke_notification_close{opacity:.8;filter:alpha(opacity = 80)}.cke_notification_warning a.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}.cke_bottom{padding-bottom:3px}.cke_combo_text{margin-bottom:-1px;margin-top:1px}@media(prefers-color-scheme: dark){.cke_button_icon{filter:brightness(3);}} +/* Patched for djangocms-text-ckeditor */ diff --git a/djangocms_text_ckeditor/static/djangocms_text_ckeditor/ckeditor/skins/moono-lisa/editor_ie.css b/djangocms_text_ckeditor/static/djangocms_text_ckeditor/ckeditor/skins/moono-lisa/editor_ie.css index 64221ec99..138c5875e 100644 --- a/djangocms_text_ckeditor/static/djangocms_text_ckeditor/ckeditor/skins/moono-lisa/editor_ie.css +++ b/djangocms_text_ckeditor/static/djangocms_text_ckeditor/ckeditor/skins/moono-lisa/editor_ie.css @@ -2,4 +2,5 @@ Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none}.cke_reset_all,.cke_reset_all *,.cke_reset_all a,.cke_reset_all textarea{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre-wrap}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;border:1px solid #d1d1d1;padding:0}.cke_inner{display:block;background:#fff;padding:0;-webkit-touch-callout:none}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #d1d1d1;background:#f8f8f8;padding:6px 8px 2px;white-space:normal}.cke_float .cke_top{border:1px solid #d1d1d1}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #d1d1d1;background:#f8f8f8}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #bcbcbc transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #bcbcbc;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #d1d1d1}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_block:focus{outline:0}.cke_panel_list{margin:0;padding:0;list-style-type:none;white-space:nowrap}.cke_panel_listItem{margin:0;padding:0}.cke_panel_listItem a{padding:6px 7px;display:block;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis}.cke_hc .cke_panel_listItem a{border-style:none}.cke_panel_listItem.cke_selected a,.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{background-color:#e9e9e9}.cke_panel_listItem a:focus{outline:1px dotted #000}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:4px 5px}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:6px 6px 7px 6px;color:#484848;border-bottom:1px solid #d1d1d1;background:#f8f8f8}.cke_colorblock{padding:10px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}a.cke_colorbox{padding:2px;float:left;width:20px;height:20px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{outline:0;padding:0;border:2px solid #139ff7}a:hover.cke_colorbox{border-color:#bcbcbc}span.cke_colorbox{width:20px;height:20px;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:3px;display:block;cursor:pointer}a.cke_colorauto{padding:0;border:1px solid transparent;margin-bottom:6px;height:26px;line-height:26px}a.cke_colormore{margin-top:10px;height:20px;line-height:19px}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{outline:0;border:#139ff7 1px solid;background-color:#f8f8f8}a:hover.cke_colorauto,a:hover.cke_colormore{border-color:#bcbcbc}.cke_colorauto span.cke_colorbox{width:18px;height:18px;border:1px solid #808080;margin-left:1px;margin-top:3px}.cke_rtl .cke_colorauto span.cke_colorbox{margin-left:0;margin-right:1px}span.cke_colorbox[style*="#ffffff"],span.cke_colorbox[style*="#FFFFFF"],span.cke_colorbox[style="background-color:#fff"],span.cke_colorbox[style="background-color:#FFF"],span.cke_colorbox[style*="rgb(255,255,255)"],span.cke_colorbox[style*="rgb(255, 255, 255)"]{border:1px solid #808080;width:18px;height:18px}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{border:0;float:left;margin:1px 2px 6px 0;padding-right:3px}.cke_rtl .cke_toolgroup{float:right;margin:1px 0 6px 2px;padding-left:3px;padding-right:0}.cke_hc .cke_toolgroup{margin-right:5px;margin-bottom:5px}.cke_hc.cke_rtl .cke_toolgroup{margin-right:0;margin-left:5px}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0;position:relative}a.cke_button_expandable{padding:4px 5px}.cke_rtl a.cke_button{float:right}.cke_hc a.cke_button{border:1px solid black;padding:3px 5px;margin:0 3px 5px 0}.cke_hc.cke_rtl a.cke_button{margin:0 0 5px 3px}a.cke_button_on{background:#fff;border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_on{padding:3px 4px}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active{background:#e5e5e5;border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_off:hover,a.cke_button_expandable.cke_button_off:focus,a.cke_button_expandable.cke_button_off:active{padding:3px 4px}.cke_hc a.cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active{background:#e5e5e5;border:3px solid #000;padding:1px 3px}@media screen and (hover:none){a.cke_button_off:hover{background:transparent;border:0;padding:4px 6px}a.cke_button_expandable.cke_button_off:hover{padding:4px 5px}a.cke_button_off:active{background:#e5e5e5;border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_off:active{padding:3px 4px}}a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{border:0;padding:4px 6px;background-color:transparent}a.cke_button_expandable.cke_button_disabled:hover,a.cke_button_expandable.cke_button_disabled:active{padding:4px 5px}a.cke_button_disabled:focus{border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_disabled:focus{padding:3px 4px}.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border:1px solid #acacac;padding:3px 5px;margin:0 3px 5px 0}.cke_hc a.cke_button_disabled:focus{border:3px solid #000;padding:1px 3px}.cke_hc.cke_rtl a.cke_button_disabled:hover,.cke_hc.cke_rtl a.cke_button_disabled:focus,.cke_hc.cke_rtl a.cke_button_disabled:active{margin:0 0 5px 3px}a.cke_button_disabled .cke_button_icon,a.cke_button_disabled .cke_button_arrow{opacity:.3}.cke_hc a.cke_button_disabled{border-color:#acacac}.cke_hc a.cke_button_disabled .cke_button_icon,.cke_hc a.cke_button_disabled .cke_button_label{opacity:.5}.cke_toolgroup a.cke_button:last-child:after,.cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{content:"";position:absolute;height:18px;width:0;border-right:1px solid #bcbcbc;margin-top:4px;top:0;right:-3px}.cke_rtl .cke_toolgroup a.cke_button:last-child:after,.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{border-right:0;right:auto;border-left:1px solid #bcbcbc;top:0;left:-3px}.cke_hc .cke_toolgroup a.cke_button:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_disabled:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{border-color:#000;top:0;right:-7px}.cke_hc.cke_rtl .cke_toolgroup a.cke_button:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{top:0;right:auto;left:-7px}.cke_toolgroup a.cke_button:hover:last-child:after,.cke_toolgroup a.cke_button:focus:last-child:after,.cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-1px;right:-4px}.cke_rtl .cke_toolgroup a.cke_button:hover:last-child:after,.cke_rtl .cke_toolgroup a.cke_button:focus:last-child:after,.cke_rtl .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-1px;right:auto;left:-4px}.cke_hc .cke_toolgroup a.cke_button:hover:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-2px;right:-9px}.cke_hc.cke_rtl .cke_toolgroup a.cke_button:hover:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-2px;right:auto;left:-9px}.cke_toolbar.cke_toolbar_last .cke_toolgroup a.cke_button:last-child:after{content:none;border:0;width:0;height:0}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#484848}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 3px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #484848}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px 0 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#bcbcbc;margin:4px 2px 0 2px;height:18px;width:1px}.cke_rtl .cke_toolbar_separator{float:right}.cke_hc .cke_toolbar_separator{background-color:#000;margin-left:2px;margin-right:5px;margin-bottom:9px}.cke_hc.cke_rtl .cke_toolbar_separator{margin-left:5px;margin-right:2px}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}a.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #bcbcbc}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser:hover{background:#e5e5e5}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border:3px solid transparent;border-bottom-color:#484848}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#484848}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0}.cke_menuitem span{cursor:default}.cke_menubutton{display:block}.cke_hc .cke_menubutton{padding:2px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#e9e9e9;display:block;outline:1px dotted}.cke_menubutton:hover{outline:0}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_disabled:hover,.cke_menubutton_disabled:focus,.cke_menubutton_disabled:active{background-color:transparent;outline:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#f8f8f8;padding:6px 4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#e9e9e9}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{background-color:#f8f8f8;outline:0}.cke_menuitem .cke_menubutton_on{background-color:#e9e9e9;border:1px solid #dedede;outline:0}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px;background-color:#e9e9e9}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_shortcut{color:#979797}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d1d1d1;height:1px}.cke_menuarrow{background:transparent url(images/arrow.png) no-repeat 0 10px;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_hc .cke_menuarrow{background-image:none}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left;position:relative;margin-bottom:5px}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:1px;margin-bottom:10px}.cke_combo:after{content:"";position:absolute;height:18px;width:0;border-right:1px solid #bcbcbc;margin-top:5px;top:0;right:0}.cke_rtl .cke_combo:after{border-right:0;border-left:1px solid #bcbcbc;right:auto;left:0}.cke_hc .cke_combo:after{border-color:#000}a.cke_combo_button{cursor:default;display:inline-block;float:left;margin:0;padding:1px}.cke_rtl a.cke_combo_button{float:right}.cke_hc a.cke_combo_button{padding:4px}.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{background:#e5e5e5;border:1px solid #bcbcbc;padding:0 0 0 1px;margin-left:-1px}.cke_combo_off a.cke_combo_button:focus{outline:0}.cke_combo_on a.cke_combo_button,.cke_combo_off a.cke_combo_button:active{background:#fff}@media screen and (hover:none){.cke_combo_off a.cke_combo_button:hover{background:transparent;border-color:transparent}.cke_combo_off a.cke_combo_button:active{background:#fff;border:1px solid #bcbcbc}}.cke_rtl .cke_combo_on a.cke_combo_button,.cke_rtl .cke_combo_off a.cke_combo_button:hover,.cke_rtl .cke_combo_off a.cke_combo_button:focus,.cke_rtl .cke_combo_off a.cke_combo_button:active{padding:0 1px 0 0;margin-left:0;margin-right:-1px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border:3px solid #000;padding:1px 1px 1px 2px}.cke_hc.cke_rtl .cke_combo_on a.cke_combo_button,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:hover,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:focus,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:active{padding:1px 2px 1px 1px}.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0 0 0 3px;margin-left:-3px}.cke_rtl .cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0 3px 0 0;margin-left:0;margin-right:-3px}.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px 1px 1px 7px;margin-left:-6px}.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px 7px 1px 1px;margin-left:0;margin-right:-6px}.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0;margin:0}.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px;margin:0}.cke_toolbar .cke_combo+.cke_toolbar_end,.cke_toolbar .cke_combo+.cke_toolgroup{margin-right:0;margin-left:2px}.cke_rtl .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_rtl .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:0;margin-right:2px}.cke_hc .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_hc .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:5px}.cke_hc.cke_rtl .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_hc.cke_rtl .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:0;margin-right:5px}.cke_toolbar.cke_toolbar_last .cke_combo:nth-last-child(-n+2):after{content:none;border:0;width:0;height:0}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#484848;width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 10px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{cursor:default;margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #484848}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}a.cke_path_item,span.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#484848;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#e5e5e5}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combopanel__fontsize{width:135px}textarea.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre-wrap;border:0;padding:0;margin:0;display:block}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_notifications_area{pointer-events:none}.cke_notification{pointer-events:auto;position:relative;margin:10px;width:300px;color:white;text-align:center;opacity:.95;filter:alpha(opacity = 95);-webkit-animation:fadeIn .7s;animation:fadeIn .7s}.cke_notification_message a{color:#12306f}@-webkit-keyframes fadeIn{from{opacity:.4}to{opacity:.95}}@keyframes fadeIn{from{opacity:.4}to{opacity:.95}}.cke_notification_success{background:#72b572;border:1px solid #63a563}.cke_notification_warning{background:#c83939;border:1px solid #902b2b}.cke_notification_info{background:#2e9ad0;border:1px solid #0f74a8}.cke_notification_info span.cke_notification_progress{background-color:#0f74a8;display:block;padding:0;margin:0;height:100%;overflow:hidden;position:absolute;z-index:1}.cke_notification_message{position:relative;margin:4px 23px 3px;font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:18px;z-index:4;text-overflow:ellipsis;overflow:hidden}.cke_notification_close{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:1px;right:1px;padding:0;margin:0;z-index:5;opacity:.6;filter:alpha(opacity = 60)}.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_notification_close span{display:none}.cke_notification_warning a.cke_notification_close{opacity:.8;filter:alpha(opacity = 80)}.cke_notification_warning a.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}a.cke_button_disabled,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{filter:alpha(opacity = 30)}.cke_button_disabled .cke_button_icon{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#00ffffff,endColorstr=#00ffffff)}.cke_button_off:hover,.cke_button_off:focus,.cke_button_off:active{filter:alpha(opacity = 100)}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{filter:alpha(opacity = 30)}.cke_toolbox_collapser{border:1px solid #a6a6a6}.cke_toolbox_collapser .cke_arrow{margin-top:1px}.cke_hc .cke_top,.cke_hc .cke_bottom,.cke_hc .cke_combo_button,.cke_hc a.cke_combo_button:hover,.cke_hc a.cke_combo_button:focus,.cke_hc .cke_toolgroup,.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc .cke_toolbox_collapser,.cke_hc .cke_toolbox_collapser:hover,.cke_hc .cke_panel_grouptitle{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_button__about_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -0px !important;}.cke_button__bold_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -24px !important;}.cke_button__italic_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -48px !important;}.cke_button__strike_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -72px !important;}.cke_button__subscript_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -96px !important;}.cke_button__superscript_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -120px !important;}.cke_button__underline_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -144px !important;}.cke_button__bidiltr_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -168px !important;}.cke_button__bidirtl_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -192px !important;}.cke_button__blockquote_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -216px !important;}.cke_rtl .cke_button__copy_icon, .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -240px !important;}.cke_ltr .cke_button__copy_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -264px !important;}.cke_rtl .cke_button__cut_icon, .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -288px !important;}.cke_ltr .cke_button__cut_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -312px !important;}.cke_rtl .cke_button__paste_icon, .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -336px !important;}.cke_ltr .cke_button__paste_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -360px !important;}.cke_button__bgcolor_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -384px !important;}.cke_button__textcolor_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -408px !important;}.cke_rtl .cke_button__templates_icon, .cke_mixed_dir_content .cke_rtl .cke_button__templates_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -432px !important;}.cke_ltr .cke_button__templates_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -456px !important;}.cke_button__copyformatting_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -480px !important;}.cke_button__creatediv_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -504px !important;}.cke_rtl .cke_button__find_icon, .cke_mixed_dir_content .cke_rtl .cke_button__find_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -528px !important;}.cke_ltr .cke_button__find_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -552px !important;}.cke_button__replace_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -576px !important;}.cke_button__button_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -600px !important;}.cke_button__checkbox_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -624px !important;}.cke_button__form_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -648px !important;}.cke_button__hiddenfield_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -672px !important;}.cke_button__imagebutton_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -696px !important;}.cke_button__radio_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -720px !important;}.cke_rtl .cke_button__select_icon, .cke_mixed_dir_content .cke_rtl .cke_button__select_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -744px !important;}.cke_ltr .cke_button__select_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -768px !important;}.cke_rtl .cke_button__textarea_icon, .cke_mixed_dir_content .cke_rtl .cke_button__textarea_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -792px !important;}.cke_ltr .cke_button__textarea_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -816px !important;}.cke_rtl .cke_button__textfield_icon, .cke_mixed_dir_content .cke_rtl .cke_button__textfield_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -840px !important;}.cke_ltr .cke_button__textfield_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -864px !important;}.cke_button__horizontalrule_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -888px !important;}.cke_button__iframe_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -912px !important;}.cke_button__image_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -936px !important;}.cke_rtl .cke_button__indent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -960px !important;}.cke_ltr .cke_button__indent_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -984px !important;}.cke_rtl .cke_button__outdent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1008px !important;}.cke_ltr .cke_button__outdent_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1032px !important;}.cke_button__smiley_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1056px !important;}.cke_button__justifyblock_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1080px !important;}.cke_button__justifycenter_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1104px !important;}.cke_button__justifyleft_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1128px !important;}.cke_button__justifyright_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1152px !important;}.cke_button__language_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1176px !important;}.cke_rtl .cke_button__anchor_icon, .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1200px !important;}.cke_ltr .cke_button__anchor_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1224px !important;}.cke_button__link_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1248px !important;}.cke_button__unlink_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1272px !important;}.cke_rtl .cke_button__bulletedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1296px !important;}.cke_ltr .cke_button__bulletedlist_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1320px !important;}.cke_rtl .cke_button__numberedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1344px !important;}.cke_ltr .cke_button__numberedlist_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1368px !important;}.cke_button__maximize_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1392px !important;}.cke_rtl .cke_button__newpage_icon, .cke_mixed_dir_content .cke_rtl .cke_button__newpage_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1416px !important;}.cke_ltr .cke_button__newpage_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1440px !important;}.cke_rtl .cke_button__pagebreak_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pagebreak_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1464px !important;}.cke_ltr .cke_button__pagebreak_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1488px !important;}.cke_rtl .cke_button__pastetext_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1512px !important;}.cke_ltr .cke_button__pastetext_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1536px !important;}.cke_rtl .cke_button__pastefromword_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1560px !important;}.cke_ltr .cke_button__pastefromword_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1584px !important;}.cke_rtl .cke_button__preview_icon, .cke_mixed_dir_content .cke_rtl .cke_button__preview_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1608px !important;}.cke_ltr .cke_button__preview_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1632px !important;}.cke_button__print_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1656px !important;}.cke_button__removeformat_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1680px !important;}.cke_button__save_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1704px !important;}.cke_button__selectall_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1728px !important;}.cke_rtl .cke_button__showblocks_icon, .cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1752px !important;}.cke_ltr .cke_button__showblocks_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1776px !important;}.cke_rtl .cke_button__source_icon, .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1800px !important;}.cke_ltr .cke_button__source_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1824px !important;}.cke_button__specialchar_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1848px !important;}.cke_button__scayt_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1872px !important;}.cke_button__table_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1896px !important;}.cke_rtl .cke_button__redo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1920px !important;}.cke_ltr .cke_button__redo_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1944px !important;}.cke_rtl .cke_button__undo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1968px !important;}.cke_ltr .cke_button__undo_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1992px !important;}.cke_button__spellchecker_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -2016px !important;}.cke_hidpi .cke_button__about_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -0px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bold_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -24px !important;background-size: 16px !important;}.cke_hidpi .cke_button__italic_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -48px !important;background-size: 16px !important;}.cke_hidpi .cke_button__strike_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -72px !important;background-size: 16px !important;}.cke_hidpi .cke_button__subscript_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -96px !important;background-size: 16px !important;}.cke_hidpi .cke_button__superscript_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -120px !important;background-size: 16px !important;}.cke_hidpi .cke_button__underline_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -144px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bidiltr_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -168px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bidirtl_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -192px !important;background-size: 16px !important;}.cke_hidpi .cke_button__blockquote_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -216px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__copy_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -240px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__copy_icon,.cke_ltr.cke_hidpi .cke_button__copy_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -264px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__cut_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -288px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__cut_icon,.cke_ltr.cke_hidpi .cke_button__cut_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -312px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__paste_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -336px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__paste_icon,.cke_ltr.cke_hidpi .cke_button__paste_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -360px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bgcolor_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -384px !important;background-size: 16px !important;}.cke_hidpi .cke_button__textcolor_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -408px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__templates_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__templates_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -432px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__templates_icon,.cke_ltr.cke_hidpi .cke_button__templates_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -456px !important;background-size: 16px !important;}.cke_hidpi .cke_button__copyformatting_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -480px !important;background-size: 16px !important;}.cke_hidpi .cke_button__creatediv_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -504px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__find_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__find_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -528px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__find_icon,.cke_ltr.cke_hidpi .cke_button__find_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -552px !important;background-size: 16px !important;}.cke_hidpi .cke_button__replace_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -576px !important;background-size: 16px !important;}.cke_hidpi .cke_button__button_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -600px !important;background-size: 16px !important;}.cke_hidpi .cke_button__checkbox_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -624px !important;background-size: 16px !important;}.cke_hidpi .cke_button__form_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -648px !important;background-size: 16px !important;}.cke_hidpi .cke_button__hiddenfield_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -672px !important;background-size: 16px !important;}.cke_hidpi .cke_button__imagebutton_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -696px !important;background-size: 16px !important;}.cke_hidpi .cke_button__radio_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -720px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__select_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__select_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -744px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__select_icon,.cke_ltr.cke_hidpi .cke_button__select_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -768px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__textarea_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__textarea_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -792px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__textarea_icon,.cke_ltr.cke_hidpi .cke_button__textarea_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -816px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__textfield_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__textfield_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -840px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__textfield_icon,.cke_ltr.cke_hidpi .cke_button__textfield_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -864px !important;background-size: 16px !important;}.cke_hidpi .cke_button__horizontalrule_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -888px !important;background-size: 16px !important;}.cke_hidpi .cke_button__iframe_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -912px !important;background-size: 16px !important;}.cke_hidpi .cke_button__image_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -936px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__indent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -960px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__indent_icon,.cke_ltr.cke_hidpi .cke_button__indent_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -984px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__outdent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1008px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__outdent_icon,.cke_ltr.cke_hidpi .cke_button__outdent_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1032px !important;background-size: 16px !important;}.cke_hidpi .cke_button__smiley_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1056px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyblock_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1080px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifycenter_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1104px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyleft_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1128px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyright_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1152px !important;background-size: 16px !important;}.cke_hidpi .cke_button__language_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1176px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__anchor_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1200px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__anchor_icon,.cke_ltr.cke_hidpi .cke_button__anchor_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1224px !important;background-size: 16px !important;}.cke_hidpi .cke_button__link_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1248px !important;background-size: 16px !important;}.cke_hidpi .cke_button__unlink_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1272px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__bulletedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1296px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__bulletedlist_icon,.cke_ltr.cke_hidpi .cke_button__bulletedlist_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1320px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__numberedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1344px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__numberedlist_icon,.cke_ltr.cke_hidpi .cke_button__numberedlist_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1368px !important;background-size: 16px !important;}.cke_hidpi .cke_button__maximize_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1392px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__newpage_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__newpage_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1416px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__newpage_icon,.cke_ltr.cke_hidpi .cke_button__newpage_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1440px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pagebreak_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pagebreak_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1464px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pagebreak_icon,.cke_ltr.cke_hidpi .cke_button__pagebreak_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1488px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastetext_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1512px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastetext_icon,.cke_ltr.cke_hidpi .cke_button__pastetext_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1536px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastefromword_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1560px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastefromword_icon,.cke_ltr.cke_hidpi .cke_button__pastefromword_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1584px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__preview_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__preview_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1608px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__preview_icon,.cke_ltr.cke_hidpi .cke_button__preview_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1632px !important;background-size: 16px !important;}.cke_hidpi .cke_button__print_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1656px !important;background-size: 16px !important;}.cke_hidpi .cke_button__removeformat_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1680px !important;background-size: 16px !important;}.cke_hidpi .cke_button__save_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1704px !important;background-size: 16px !important;}.cke_hidpi .cke_button__selectall_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1728px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__showblocks_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1752px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__showblocks_icon,.cke_ltr.cke_hidpi .cke_button__showblocks_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1776px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__source_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1800px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__source_icon,.cke_ltr.cke_hidpi .cke_button__source_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1824px !important;background-size: 16px !important;}.cke_hidpi .cke_button__specialchar_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1848px !important;background-size: 16px !important;}.cke_hidpi .cke_button__scayt_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1872px !important;background-size: 16px !important;}.cke_hidpi .cke_button__table_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1896px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__redo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1920px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__redo_icon,.cke_ltr.cke_hidpi .cke_button__redo_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1944px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__undo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1968px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__undo_icon,.cke_ltr.cke_hidpi .cke_button__undo_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1992px !important;background-size: 16px !important;}.cke_hidpi .cke_button__spellchecker_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -2016px !important;background-size: 16px !important;} \ No newline at end of file +.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none}.cke_reset_all,.cke_reset_all *,.cke_reset_all a,.cke_reset_all textarea{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:var(--dca-black, #000);text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre-wrap}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;border:1px solid var(--dca-gray-lighter, #d1d1d1);padding:0}.cke_inner{display:block;background:var(--dca-white, #fff);padding:0;-webkit-touch-callout:none}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid var(--dca-gray-lighter, #d1d1d1);background:var(--dca-gray-super-lightest, #f8f8f8);padding:6px 8px 2px;white-space:normal}.cke_float .cke_top{border:1px solid var(--dca-gray-lighter, #d1d1d1)}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid var(--dca-gray-lighter, #d1d1d1);background:var(--dca-gray-super-lightest, #f8f8f8)}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent var(--dca-gray-lighter, #bcbcbc) transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent var(--dca-gray-lighter, #bcbcbc);border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:var(--dca-white, #fff);border:1px solid var(--dca-gray-lighter, #d1d1d1)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_block:focus{outline:0}.cke_panel_list{margin:0;padding:0;list-style-type:none;white-space:nowrap}.cke_panel_listItem{margin:0;padding:0}.cke_panel_listItem a{padding:6px 7px;display:block;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis}.cke_hc .cke_panel_listItem a{border-style:none}.cke_panel_listItem.cke_selected a,.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{background-color:var(--dca-gray-lightest, #e9e9e9)}.cke_panel_listItem a:focus{outline:1px dotted var(--dca-black, #000)}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:4px 5px}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:6px 6px 7px 6px;color:var(--dca-gray-darker, #484848);border-bottom:1px solid var(--dca-gray-lighter, #d1d1d1);background:var(--dca-gray-super-lightest, #f8f8f8)}.cke_colorblock{padding:10px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:var(--dca-black, #000)}a.cke_colorbox{padding:2px;float:left;width:20px;height:20px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{outline:0;padding:0;border:2px solid var(--dca-primary, #139ff7)}a:hover.cke_colorbox{border-color:var(--dca-gray-lighter, #bcbcbc)}span.cke_colorbox{width:20px;height:20px;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorauto,a.cke_colormore{border:var(--dca-white, #fff) 1px solid;padding:3px;display:block;cursor:pointer}a.cke_colorauto{padding:0;border:1px solid transparent;margin-bottom:6px;height:26px;line-height:26px}a.cke_colormore{margin-top:10px;height:20px;line-height:19px}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{outline:0;border:var(--dca-primary, #139ff7) 1px solid;background-color:var(--dca-gray-super-lightest, #f8f8f8)}a:hover.cke_colorauto,a:hover.cke_colormore{border-color:var(--dca-gray-lighter, #bcbcbc)}.cke_colorauto span.cke_colorbox{width:18px;height:18px;border:1px solid var(--dca-gray, #80808)0;margin-left:1px;margin-top:3px}.cke_rtl .cke_colorauto span.cke_colorbox{margin-left:0;margin-right:1px}span.cke_colorbox[style*="var(--dca-white, #fff)fff"],span.cke_colorbox[style*="var(--dca-white, #fff)FFF"],span.cke_colorbox[style="background-color:var(--dca-white, #fff)"],span.cke_colorbox[style="background-color:var(--dca-white, #fff)"],span.cke_colorbox[style*="rgb(255,255,255)"],span.cke_colorbox[style*="rgb(255, 255, 255)"]{border:1px solid var(--dca-gray, #80808)0;width:18px;height:18px}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{border:0;float:left;margin:1px 2px 6px 0;padding-right:3px}.cke_rtl .cke_toolgroup{float:right;margin:1px 0 6px 2px;padding-left:3px;padding-right:0}.cke_hc .cke_toolgroup{margin-right:5px;margin-bottom:5px}.cke_hc.cke_rtl .cke_toolgroup{margin-right:0;margin-left:5px}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0;position:relative}a.cke_button_expandable{padding:4px 5px}.cke_rtl a.cke_button{float:right}.cke_hc a.cke_button{border:1px solid black;padding:3px 5px;margin:0 3px 5px 0}.cke_hc.cke_rtl a.cke_button{margin:0 0 5px 3px}a.cke_button_on{background:var(--dca-white, #fff);border:1px var(--dca-gray-lighter, #bcbcbc) solid;padding:3px 5px}a.cke_button_expandable.cke_button_on{padding:3px 4px}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active{background:var(--dca-gray-lightest, #e5e5e5);border:1px var(--dca-gray-lighter, #bcbcbc) solid;padding:3px 5px}a.cke_button_expandable.cke_button_off:hover,a.cke_button_expandable.cke_button_off:focus,a.cke_button_expandable.cke_button_off:active{padding:3px 4px}.cke_hc a.cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active{background:var(--dca-gray-lightest, #e5e5e5);border:3px solid var(--dca-black, #000);padding:1px 3px}@media screen and (hover:none){a.cke_button_off:hover{background:transparent;border:0;padding:4px 6px}a.cke_button_expandable.cke_button_off:hover{padding:4px 5px}a.cke_button_off:active{background:var(--dca-gray-lightest, #e5e5e5);border:1px var(--dca-gray-lighter, #bcbcbc) solid;padding:3px 5px}a.cke_button_expandable.cke_button_off:active{padding:3px 4px}}a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{border:0;padding:4px 6px;background-color:transparent}a.cke_button_expandable.cke_button_disabled:hover,a.cke_button_expandable.cke_button_disabled:active{padding:4px 5px}a.cke_button_disabled:focus{border:1px var(--dca-gray-lighter, #bcbcbc) solid;padding:3px 5px}a.cke_button_expandable.cke_button_disabled:focus{padding:3px 4px}.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border:1px solid var(--dca-gray-lighter, #acacac);padding:3px 5px;margin:0 3px 5px 0}.cke_hc a.cke_button_disabled:focus{border:3px solid var(--dca-black, #000);padding:1px 3px}.cke_hc.cke_rtl a.cke_button_disabled:hover,.cke_hc.cke_rtl a.cke_button_disabled:focus,.cke_hc.cke_rtl a.cke_button_disabled:active{margin:0 0 5px 3px}a.cke_button_disabled .cke_button_icon,a.cke_button_disabled .cke_button_arrow{opacity:.3}.cke_hc a.cke_button_disabled{border-color:var(--dca-gray-lighter, #acacac)}.cke_hc a.cke_button_disabled .cke_button_icon,.cke_hc a.cke_button_disabled .cke_button_label{opacity:.5}.cke_toolgroup a.cke_button:last-child:after,.cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{content:"";position:absolute;height:18px;width:0;border-right:1px solid var(--dca-gray-lighter, #bcbcbc);margin-top:4px;top:0;right:-3px}.cke_rtl .cke_toolgroup a.cke_button:last-child:after,.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{border-right:0;right:auto;border-left:1px solid var(--dca-gray-lighter, #bcbcbc);top:0;left:-3px}.cke_hc .cke_toolgroup a.cke_button:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_disabled:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{border-color:var(--dca-black, #000);top:0;right:-7px}.cke_hc.cke_rtl .cke_toolgroup a.cke_button:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{top:0;right:auto;left:-7px}.cke_toolgroup a.cke_button:hover:last-child:after,.cke_toolgroup a.cke_button:focus:last-child:after,.cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-1px;right:-4px}.cke_rtl .cke_toolgroup a.cke_button:hover:last-child:after,.cke_rtl .cke_toolgroup a.cke_button:focus:last-child:after,.cke_rtl .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-1px;right:auto;left:-4px}.cke_hc .cke_toolgroup a.cke_button:hover:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-2px;right:-9px}.cke_hc.cke_rtl .cke_toolgroup a.cke_button:hover:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-2px;right:auto;left:-9px}.cke_toolbar.cke_toolbar_last .cke_toolgroup a.cke_button:last-child:after{content:none;border:0;width:0;height:0}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:var(--dca-gray-darker, #484848)}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 3px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid var(--dca-gray-darker, #484848)}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px 0 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:var(--dca-gray-lighter, #bcbcbc);margin:4px 2px 0 2px;height:18px;width:1px}.cke_rtl .cke_toolbar_separator{float:right}.cke_hc .cke_toolbar_separator{background-color:var(--dca-black, #000);margin-left:2px;margin-right:5px;margin-bottom:9px}.cke_hc.cke_rtl .cke_toolbar_separator{margin-left:5px;margin-right:2px}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}a.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid var(--dca-gray-lighter, #bcbcbc)}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser:hover{background:var(--dca-gray-lightest, #e5e5e5)}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border:3px solid transparent;border-bottom-color:var(--dca-gray-darker, #484848)}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:var(--dca-gray-darker, #484848)}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0}.cke_menuitem span{cursor:default}.cke_menubutton{display:block}.cke_hc .cke_menubutton{padding:2px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:var(--dca-gray-lightest, #e9e9e9);display:block;outline:1px dotted}.cke_menubutton:hover{outline:0}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_disabled:hover,.cke_menubutton_disabled:focus,.cke_menubutton_disabled:active{background-color:transparent;outline:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:var(--dca-gray-super-lightest, #f8f8f8);padding:6px 4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:var(--dca-gray-lightest, #e9e9e9)}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{background-color:var(--dca-gray-super-lightest, #f8f8f8);outline:0}.cke_menuitem .cke_menubutton_on{background-color:var(--dca-gray-lightest, #e9e9e9);border:1px solid #dedede;outline:0}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px;background-color:var(--dca-gray-lightest, #e9e9e9)}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_shortcut{color:var(--dca-gray-light, #979797)}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:var(--dca-gray-lighter, #d1d1d1);height:1px}.cke_menuarrow{background:transparent url(images/arrow.png) no-repeat 0 10px;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_hc .cke_menuarrow{background-image:none}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left;position:relative;margin-bottom:5px}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:1px;margin-bottom:10px}.cke_combo:after{content:"";position:absolute;height:18px;width:0;border-right:1px solid var(--dca-gray-lighter, #bcbcbc);margin-top:5px;top:0;right:0}.cke_rtl .cke_combo:after{border-right:0;border-left:1px solid var(--dca-gray-lighter, #bcbcbc);right:auto;left:0}.cke_hc .cke_combo:after{border-color:var(--dca-black, #000)}a.cke_combo_button{cursor:default;display:inline-block;float:left;margin:0;padding:1px}.cke_rtl a.cke_combo_button{float:right}.cke_hc a.cke_combo_button{padding:4px}.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{background:var(--dca-gray-lightest, #e5e5e5);border:1px solid var(--dca-gray-lighter, #bcbcbc);padding:0 0 0 1px;margin-left:-1px}.cke_combo_off a.cke_combo_button:focus{outline:0}.cke_combo_on a.cke_combo_button,.cke_combo_off a.cke_combo_button:active{background:var(--dca-white, #fff)}@media screen and (hover:none){.cke_combo_off a.cke_combo_button:hover{background:transparent;border-color:transparent}.cke_combo_off a.cke_combo_button:active{background:var(--dca-white, #fff);border:1px solid var(--dca-gray-lighter, #bcbcbc)}}.cke_rtl .cke_combo_on a.cke_combo_button,.cke_rtl .cke_combo_off a.cke_combo_button:hover,.cke_rtl .cke_combo_off a.cke_combo_button:focus,.cke_rtl .cke_combo_off a.cke_combo_button:active{padding:0 1px 0 0;margin-left:0;margin-right:-1px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border:3px solid var(--dca-black, #000);padding:1px 1px 1px 2px}.cke_hc.cke_rtl .cke_combo_on a.cke_combo_button,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:hover,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:focus,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:active{padding:1px 2px 1px 1px}.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0 0 0 3px;margin-left:-3px}.cke_rtl .cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0 3px 0 0;margin-left:0;margin-right:-3px}.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px 1px 1px 7px;margin-left:-6px}.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px 7px 1px 1px;margin-left:0;margin-right:-6px}.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0;margin:0}.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px;margin:0}.cke_toolbar .cke_combo+.cke_toolbar_end,.cke_toolbar .cke_combo+.cke_toolgroup{margin-right:0;margin-left:2px}.cke_rtl .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_rtl .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:0;margin-right:2px}.cke_hc .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_hc .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:5px}.cke_hc.cke_rtl .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_hc.cke_rtl .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:0;margin-right:5px}.cke_toolbar.cke_toolbar_last .cke_combo:nth-last-child(-n+2):after{content:none;border:0;width:0;height:0}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:var(--dca-gray-darker, #484848);width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 10px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{cursor:default;margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid var(--dca-gray-darker, #484848)}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}a.cke_path_item,span.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:var(--dca-gray-darker, #484848);font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:var(--dca-gray-lightest, #e5e5e5)}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combopanel__fontsize{width:135px}textarea.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:var(--dca-white, #fff);white-space:pre-wrap;border:0;padding:0;margin:0;display:block}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:var(--dca-white, #fff)}.cke_notifications_area{pointer-events:none}.cke_notification{pointer-events:auto;position:relative;margin:10px;width:300px;color:white;text-align:center;opacity:.95;filter:alpha(opacity = 95);-webkit-animation:fadeIn .7s;animation:fadeIn .7s}.cke_notification_message a{color:#12306f}@-webkit-keyframes fadeIn{from{opacity:.4}to{opacity:.95}}@keyframes fadeIn{from{opacity:.4}to{opacity:.95}}.cke_notification_success{background:#72b572;border:1px solid #63a563}.cke_notification_warning{background:#c83939;border:1px solid #902b2b}.cke_notification_info{background:#2e9ad0;border:1px solid #0f74a8}.cke_notification_info span.cke_notification_progress{background-color:#0f74a8;display:block;padding:0;margin:0;height:100%;overflow:hidden;position:absolute;z-index:1}.cke_notification_message{position:relative;margin:4px 23px 3px;font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:18px;z-index:4;text-overflow:ellipsis;overflow:hidden}.cke_notification_close{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:1px;right:1px;padding:0;margin:0;z-index:5;opacity:.6;filter:alpha(opacity = 60)}.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_notification_close span{display:none}.cke_notification_warning a.cke_notification_close{opacity:.8;filter:alpha(opacity = 80)}.cke_notification_warning a.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}a.cke_button_disabled,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{filter:alpha(opacity = 30)}.cke_button_disabled .cke_button_icon{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#00ffffff,endColorstr=#00ffffff)}.cke_button_off:hover,.cke_button_off:focus,.cke_button_off:active{filter:alpha(opacity = 100)}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{filter:alpha(opacity = 30)}.cke_toolbox_collapser{border:1px solid #a6a6a6}.cke_toolbox_collapser .cke_arrow{margin-top:1px}.cke_hc .cke_top,.cke_hc .cke_bottom,.cke_hc .cke_combo_button,.cke_hc a.cke_combo_button:hover,.cke_hc a.cke_combo_button:focus,.cke_hc .cke_toolgroup,.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc .cke_toolbox_collapser,.cke_hc .cke_toolbox_collapser:hover,.cke_hc .cke_panel_grouptitle{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}@media(prefers-color-scheme: dark){.cke_button_icon{filter:brightness(3);}} +/* Patched for djangocms-text-ckeditor */ diff --git a/djangocms_text_ckeditor/static/djangocms_text_ckeditor/ckeditor/skins/moono-lisa/editor_ie8.css b/djangocms_text_ckeditor/static/djangocms_text_ckeditor/ckeditor/skins/moono-lisa/editor_ie8.css index 2c7e417aa..c29343d69 100644 --- a/djangocms_text_ckeditor/static/djangocms_text_ckeditor/ckeditor/skins/moono-lisa/editor_ie8.css +++ b/djangocms_text_ckeditor/static/djangocms_text_ckeditor/ckeditor/skins/moono-lisa/editor_ie8.css @@ -2,4 +2,5 @@ Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none}.cke_reset_all,.cke_reset_all *,.cke_reset_all a,.cke_reset_all textarea{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre-wrap}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;border:1px solid #d1d1d1;padding:0}.cke_inner{display:block;background:#fff;padding:0;-webkit-touch-callout:none}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #d1d1d1;background:#f8f8f8;padding:6px 8px 2px;white-space:normal}.cke_float .cke_top{border:1px solid #d1d1d1}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #d1d1d1;background:#f8f8f8}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #bcbcbc transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #bcbcbc;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #d1d1d1}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_block:focus{outline:0}.cke_panel_list{margin:0;padding:0;list-style-type:none;white-space:nowrap}.cke_panel_listItem{margin:0;padding:0}.cke_panel_listItem a{padding:6px 7px;display:block;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis}.cke_hc .cke_panel_listItem a{border-style:none}.cke_panel_listItem.cke_selected a,.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{background-color:#e9e9e9}.cke_panel_listItem a:focus{outline:1px dotted #000}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:4px 5px}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:6px 6px 7px 6px;color:#484848;border-bottom:1px solid #d1d1d1;background:#f8f8f8}.cke_colorblock{padding:10px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}a.cke_colorbox{padding:2px;float:left;width:20px;height:20px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{outline:0;padding:0;border:2px solid #139ff7}a:hover.cke_colorbox{border-color:#bcbcbc}span.cke_colorbox{width:20px;height:20px;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:3px;display:block;cursor:pointer}a.cke_colorauto{padding:0;border:1px solid transparent;margin-bottom:6px;height:26px;line-height:26px}a.cke_colormore{margin-top:10px;height:20px;line-height:19px}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{outline:0;border:#139ff7 1px solid;background-color:#f8f8f8}a:hover.cke_colorauto,a:hover.cke_colormore{border-color:#bcbcbc}.cke_colorauto span.cke_colorbox{width:18px;height:18px;border:1px solid #808080;margin-left:1px;margin-top:3px}.cke_rtl .cke_colorauto span.cke_colorbox{margin-left:0;margin-right:1px}span.cke_colorbox[style*="#ffffff"],span.cke_colorbox[style*="#FFFFFF"],span.cke_colorbox[style="background-color:#fff"],span.cke_colorbox[style="background-color:#FFF"],span.cke_colorbox[style*="rgb(255,255,255)"],span.cke_colorbox[style*="rgb(255, 255, 255)"]{border:1px solid #808080;width:18px;height:18px}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{border:0;float:left;margin:1px 2px 6px 0;padding-right:3px}.cke_rtl .cke_toolgroup{float:right;margin:1px 0 6px 2px;padding-left:3px;padding-right:0}.cke_hc .cke_toolgroup{margin-right:5px;margin-bottom:5px}.cke_hc.cke_rtl .cke_toolgroup{margin-right:0;margin-left:5px}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0;position:relative}a.cke_button_expandable{padding:4px 5px}.cke_rtl a.cke_button{float:right}.cke_hc a.cke_button{border:1px solid black;padding:3px 5px;margin:0 3px 5px 0}.cke_hc.cke_rtl a.cke_button{margin:0 0 5px 3px}a.cke_button_on{background:#fff;border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_on{padding:3px 4px}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active{background:#e5e5e5;border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_off:hover,a.cke_button_expandable.cke_button_off:focus,a.cke_button_expandable.cke_button_off:active{padding:3px 4px}.cke_hc a.cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active{background:#e5e5e5;border:3px solid #000;padding:1px 3px}@media screen and (hover:none){a.cke_button_off:hover{background:transparent;border:0;padding:4px 6px}a.cke_button_expandable.cke_button_off:hover{padding:4px 5px}a.cke_button_off:active{background:#e5e5e5;border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_off:active{padding:3px 4px}}a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{border:0;padding:4px 6px;background-color:transparent}a.cke_button_expandable.cke_button_disabled:hover,a.cke_button_expandable.cke_button_disabled:active{padding:4px 5px}a.cke_button_disabled:focus{border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_disabled:focus{padding:3px 4px}.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border:1px solid #acacac;padding:3px 5px;margin:0 3px 5px 0}.cke_hc a.cke_button_disabled:focus{border:3px solid #000;padding:1px 3px}.cke_hc.cke_rtl a.cke_button_disabled:hover,.cke_hc.cke_rtl a.cke_button_disabled:focus,.cke_hc.cke_rtl a.cke_button_disabled:active{margin:0 0 5px 3px}a.cke_button_disabled .cke_button_icon,a.cke_button_disabled .cke_button_arrow{opacity:.3}.cke_hc a.cke_button_disabled{border-color:#acacac}.cke_hc a.cke_button_disabled .cke_button_icon,.cke_hc a.cke_button_disabled .cke_button_label{opacity:.5}.cke_toolgroup a.cke_button:last-child:after,.cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{content:"";position:absolute;height:18px;width:0;border-right:1px solid #bcbcbc;margin-top:4px;top:0;right:-3px}.cke_rtl .cke_toolgroup a.cke_button:last-child:after,.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{border-right:0;right:auto;border-left:1px solid #bcbcbc;top:0;left:-3px}.cke_hc .cke_toolgroup a.cke_button:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_disabled:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{border-color:#000;top:0;right:-7px}.cke_hc.cke_rtl .cke_toolgroup a.cke_button:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{top:0;right:auto;left:-7px}.cke_toolgroup a.cke_button:hover:last-child:after,.cke_toolgroup a.cke_button:focus:last-child:after,.cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-1px;right:-4px}.cke_rtl .cke_toolgroup a.cke_button:hover:last-child:after,.cke_rtl .cke_toolgroup a.cke_button:focus:last-child:after,.cke_rtl .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-1px;right:auto;left:-4px}.cke_hc .cke_toolgroup a.cke_button:hover:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-2px;right:-9px}.cke_hc.cke_rtl .cke_toolgroup a.cke_button:hover:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-2px;right:auto;left:-9px}.cke_toolbar.cke_toolbar_last .cke_toolgroup a.cke_button:last-child:after{content:none;border:0;width:0;height:0}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#484848}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 3px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #484848}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px 0 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#bcbcbc;margin:4px 2px 0 2px;height:18px;width:1px}.cke_rtl .cke_toolbar_separator{float:right}.cke_hc .cke_toolbar_separator{background-color:#000;margin-left:2px;margin-right:5px;margin-bottom:9px}.cke_hc.cke_rtl .cke_toolbar_separator{margin-left:5px;margin-right:2px}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}a.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #bcbcbc}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser:hover{background:#e5e5e5}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border:3px solid transparent;border-bottom-color:#484848}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#484848}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0}.cke_menuitem span{cursor:default}.cke_menubutton{display:block}.cke_hc .cke_menubutton{padding:2px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#e9e9e9;display:block;outline:1px dotted}.cke_menubutton:hover{outline:0}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_disabled:hover,.cke_menubutton_disabled:focus,.cke_menubutton_disabled:active{background-color:transparent;outline:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#f8f8f8;padding:6px 4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#e9e9e9}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{background-color:#f8f8f8;outline:0}.cke_menuitem .cke_menubutton_on{background-color:#e9e9e9;border:1px solid #dedede;outline:0}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px;background-color:#e9e9e9}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_shortcut{color:#979797}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d1d1d1;height:1px}.cke_menuarrow{background:transparent url(images/arrow.png) no-repeat 0 10px;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_hc .cke_menuarrow{background-image:none}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left;position:relative;margin-bottom:5px}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:1px;margin-bottom:10px}.cke_combo:after{content:"";position:absolute;height:18px;width:0;border-right:1px solid #bcbcbc;margin-top:5px;top:0;right:0}.cke_rtl .cke_combo:after{border-right:0;border-left:1px solid #bcbcbc;right:auto;left:0}.cke_hc .cke_combo:after{border-color:#000}a.cke_combo_button{cursor:default;display:inline-block;float:left;margin:0;padding:1px}.cke_rtl a.cke_combo_button{float:right}.cke_hc a.cke_combo_button{padding:4px}.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{background:#e5e5e5;border:1px solid #bcbcbc;padding:0 0 0 1px;margin-left:-1px}.cke_combo_off a.cke_combo_button:focus{outline:0}.cke_combo_on a.cke_combo_button,.cke_combo_off a.cke_combo_button:active{background:#fff}@media screen and (hover:none){.cke_combo_off a.cke_combo_button:hover{background:transparent;border-color:transparent}.cke_combo_off a.cke_combo_button:active{background:#fff;border:1px solid #bcbcbc}}.cke_rtl .cke_combo_on a.cke_combo_button,.cke_rtl .cke_combo_off a.cke_combo_button:hover,.cke_rtl .cke_combo_off a.cke_combo_button:focus,.cke_rtl .cke_combo_off a.cke_combo_button:active{padding:0 1px 0 0;margin-left:0;margin-right:-1px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border:3px solid #000;padding:1px 1px 1px 2px}.cke_hc.cke_rtl .cke_combo_on a.cke_combo_button,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:hover,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:focus,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:active{padding:1px 2px 1px 1px}.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0 0 0 3px;margin-left:-3px}.cke_rtl .cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0 3px 0 0;margin-left:0;margin-right:-3px}.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px 1px 1px 7px;margin-left:-6px}.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px 7px 1px 1px;margin-left:0;margin-right:-6px}.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0;margin:0}.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px;margin:0}.cke_toolbar .cke_combo+.cke_toolbar_end,.cke_toolbar .cke_combo+.cke_toolgroup{margin-right:0;margin-left:2px}.cke_rtl .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_rtl .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:0;margin-right:2px}.cke_hc .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_hc .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:5px}.cke_hc.cke_rtl .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_hc.cke_rtl .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:0;margin-right:5px}.cke_toolbar.cke_toolbar_last .cke_combo:nth-last-child(-n+2):after{content:none;border:0;width:0;height:0}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#484848;width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 10px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{cursor:default;margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #484848}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}a.cke_path_item,span.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#484848;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#e5e5e5}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combopanel__fontsize{width:135px}textarea.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre-wrap;border:0;padding:0;margin:0;display:block}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_notifications_area{pointer-events:none}.cke_notification{pointer-events:auto;position:relative;margin:10px;width:300px;color:white;text-align:center;opacity:.95;filter:alpha(opacity = 95);-webkit-animation:fadeIn .7s;animation:fadeIn .7s}.cke_notification_message a{color:#12306f}@-webkit-keyframes fadeIn{from{opacity:.4}to{opacity:.95}}@keyframes fadeIn{from{opacity:.4}to{opacity:.95}}.cke_notification_success{background:#72b572;border:1px solid #63a563}.cke_notification_warning{background:#c83939;border:1px solid #902b2b}.cke_notification_info{background:#2e9ad0;border:1px solid #0f74a8}.cke_notification_info span.cke_notification_progress{background-color:#0f74a8;display:block;padding:0;margin:0;height:100%;overflow:hidden;position:absolute;z-index:1}.cke_notification_message{position:relative;margin:4px 23px 3px;font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:18px;z-index:4;text-overflow:ellipsis;overflow:hidden}.cke_notification_close{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:1px;right:1px;padding:0;margin:0;z-index:5;opacity:.6;filter:alpha(opacity = 60)}.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_notification_close span{display:none}.cke_notification_warning a.cke_notification_close{opacity:.8;filter:alpha(opacity = 80)}.cke_notification_warning a.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}a.cke_button_disabled,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{filter:alpha(opacity = 30)}.cke_button_disabled .cke_button_icon{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#00ffffff,endColorstr=#00ffffff)}.cke_button_off:hover,.cke_button_off:focus,.cke_button_off:active{filter:alpha(opacity = 100)}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{filter:alpha(opacity = 30)}.cke_toolbox_collapser{border:1px solid #a6a6a6}.cke_toolbox_collapser .cke_arrow{margin-top:1px}.cke_hc .cke_top,.cke_hc .cke_bottom,.cke_hc .cke_combo_button,.cke_hc a.cke_combo_button:hover,.cke_hc a.cke_combo_button:focus,.cke_hc .cke_toolgroup,.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc .cke_toolbox_collapser,.cke_hc .cke_toolbox_collapser:hover,.cke_hc .cke_panel_grouptitle{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_toolbox_collapser .cke_arrow{border-width:4px}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{border-width:3px}.cke_toolbox_collapser .cke_arrow{margin-top:0}.cke_toolbar{position:relative}.cke_rtl .cke_toolbar_end{right:auto;left:0}.cke_toolbar_end:after{content:"";position:absolute;height:18px;width:0;border-right:1px solid #bcbcbc;margin-top:4px;top:1px;right:2px}.cke_rtl .cke_toolbar_end:after{right:auto;left:2px}.cke_hc .cke_toolbar_end:after{top:2px;right:5px;border-color:#000}.cke_hc.cke_rtl .cke_toolbar_end:after{right:auto;left:5px}.cke_combo+.cke_toolbar_end:after,.cke_toolbar.cke_toolbar_last .cke_toolbar_end:after{content:none;border:0}.cke_combo+.cke_toolgroup+.cke_toolbar_end:after{right:0}.cke_rtl .cke_combo+.cke_toolgroup+.cke_toolbar_end:after{right:auto;left:0}.cke_button__about_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -0px !important;}.cke_button__bold_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -24px !important;}.cke_button__italic_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -48px !important;}.cke_button__strike_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -72px !important;}.cke_button__subscript_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -96px !important;}.cke_button__superscript_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -120px !important;}.cke_button__underline_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -144px !important;}.cke_button__bidiltr_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -168px !important;}.cke_button__bidirtl_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -192px !important;}.cke_button__blockquote_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -216px !important;}.cke_rtl .cke_button__copy_icon, .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -240px !important;}.cke_ltr .cke_button__copy_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -264px !important;}.cke_rtl .cke_button__cut_icon, .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -288px !important;}.cke_ltr .cke_button__cut_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -312px !important;}.cke_rtl .cke_button__paste_icon, .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -336px !important;}.cke_ltr .cke_button__paste_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -360px !important;}.cke_button__bgcolor_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -384px !important;}.cke_button__textcolor_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -408px !important;}.cke_rtl .cke_button__templates_icon, .cke_mixed_dir_content .cke_rtl .cke_button__templates_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -432px !important;}.cke_ltr .cke_button__templates_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -456px !important;}.cke_button__copyformatting_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -480px !important;}.cke_button__creatediv_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -504px !important;}.cke_rtl .cke_button__find_icon, .cke_mixed_dir_content .cke_rtl .cke_button__find_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -528px !important;}.cke_ltr .cke_button__find_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -552px !important;}.cke_button__replace_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -576px !important;}.cke_button__button_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -600px !important;}.cke_button__checkbox_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -624px !important;}.cke_button__form_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -648px !important;}.cke_button__hiddenfield_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -672px !important;}.cke_button__imagebutton_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -696px !important;}.cke_button__radio_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -720px !important;}.cke_rtl .cke_button__select_icon, .cke_mixed_dir_content .cke_rtl .cke_button__select_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -744px !important;}.cke_ltr .cke_button__select_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -768px !important;}.cke_rtl .cke_button__textarea_icon, .cke_mixed_dir_content .cke_rtl .cke_button__textarea_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -792px !important;}.cke_ltr .cke_button__textarea_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -816px !important;}.cke_rtl .cke_button__textfield_icon, .cke_mixed_dir_content .cke_rtl .cke_button__textfield_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -840px !important;}.cke_ltr .cke_button__textfield_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -864px !important;}.cke_button__horizontalrule_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -888px !important;}.cke_button__iframe_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -912px !important;}.cke_button__image_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -936px !important;}.cke_rtl .cke_button__indent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -960px !important;}.cke_ltr .cke_button__indent_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -984px !important;}.cke_rtl .cke_button__outdent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1008px !important;}.cke_ltr .cke_button__outdent_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1032px !important;}.cke_button__smiley_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1056px !important;}.cke_button__justifyblock_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1080px !important;}.cke_button__justifycenter_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1104px !important;}.cke_button__justifyleft_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1128px !important;}.cke_button__justifyright_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1152px !important;}.cke_button__language_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1176px !important;}.cke_rtl .cke_button__anchor_icon, .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1200px !important;}.cke_ltr .cke_button__anchor_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1224px !important;}.cke_button__link_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1248px !important;}.cke_button__unlink_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1272px !important;}.cke_rtl .cke_button__bulletedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1296px !important;}.cke_ltr .cke_button__bulletedlist_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1320px !important;}.cke_rtl .cke_button__numberedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1344px !important;}.cke_ltr .cke_button__numberedlist_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1368px !important;}.cke_button__maximize_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1392px !important;}.cke_rtl .cke_button__newpage_icon, .cke_mixed_dir_content .cke_rtl .cke_button__newpage_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1416px !important;}.cke_ltr .cke_button__newpage_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1440px !important;}.cke_rtl .cke_button__pagebreak_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pagebreak_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1464px !important;}.cke_ltr .cke_button__pagebreak_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1488px !important;}.cke_rtl .cke_button__pastetext_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1512px !important;}.cke_ltr .cke_button__pastetext_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1536px !important;}.cke_rtl .cke_button__pastefromword_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1560px !important;}.cke_ltr .cke_button__pastefromword_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1584px !important;}.cke_rtl .cke_button__preview_icon, .cke_mixed_dir_content .cke_rtl .cke_button__preview_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1608px !important;}.cke_ltr .cke_button__preview_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1632px !important;}.cke_button__print_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1656px !important;}.cke_button__removeformat_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1680px !important;}.cke_button__save_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1704px !important;}.cke_button__selectall_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1728px !important;}.cke_rtl .cke_button__showblocks_icon, .cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1752px !important;}.cke_ltr .cke_button__showblocks_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1776px !important;}.cke_rtl .cke_button__source_icon, .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1800px !important;}.cke_ltr .cke_button__source_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1824px !important;}.cke_button__specialchar_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1848px !important;}.cke_button__scayt_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1872px !important;}.cke_button__table_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1896px !important;}.cke_rtl .cke_button__redo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1920px !important;}.cke_ltr .cke_button__redo_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1944px !important;}.cke_rtl .cke_button__undo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1968px !important;}.cke_ltr .cke_button__undo_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1992px !important;}.cke_button__spellchecker_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -2016px !important;}.cke_hidpi .cke_button__about_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -0px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bold_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -24px !important;background-size: 16px !important;}.cke_hidpi .cke_button__italic_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -48px !important;background-size: 16px !important;}.cke_hidpi .cke_button__strike_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -72px !important;background-size: 16px !important;}.cke_hidpi .cke_button__subscript_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -96px !important;background-size: 16px !important;}.cke_hidpi .cke_button__superscript_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -120px !important;background-size: 16px !important;}.cke_hidpi .cke_button__underline_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -144px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bidiltr_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -168px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bidirtl_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -192px !important;background-size: 16px !important;}.cke_hidpi .cke_button__blockquote_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -216px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__copy_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -240px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__copy_icon,.cke_ltr.cke_hidpi .cke_button__copy_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -264px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__cut_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -288px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__cut_icon,.cke_ltr.cke_hidpi .cke_button__cut_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -312px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__paste_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -336px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__paste_icon,.cke_ltr.cke_hidpi .cke_button__paste_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -360px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bgcolor_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -384px !important;background-size: 16px !important;}.cke_hidpi .cke_button__textcolor_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -408px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__templates_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__templates_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -432px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__templates_icon,.cke_ltr.cke_hidpi .cke_button__templates_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -456px !important;background-size: 16px !important;}.cke_hidpi .cke_button__copyformatting_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -480px !important;background-size: 16px !important;}.cke_hidpi .cke_button__creatediv_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -504px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__find_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__find_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -528px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__find_icon,.cke_ltr.cke_hidpi .cke_button__find_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -552px !important;background-size: 16px !important;}.cke_hidpi .cke_button__replace_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -576px !important;background-size: 16px !important;}.cke_hidpi .cke_button__button_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -600px !important;background-size: 16px !important;}.cke_hidpi .cke_button__checkbox_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -624px !important;background-size: 16px !important;}.cke_hidpi .cke_button__form_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -648px !important;background-size: 16px !important;}.cke_hidpi .cke_button__hiddenfield_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -672px !important;background-size: 16px !important;}.cke_hidpi .cke_button__imagebutton_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -696px !important;background-size: 16px !important;}.cke_hidpi .cke_button__radio_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -720px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__select_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__select_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -744px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__select_icon,.cke_ltr.cke_hidpi .cke_button__select_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -768px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__textarea_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__textarea_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -792px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__textarea_icon,.cke_ltr.cke_hidpi .cke_button__textarea_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -816px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__textfield_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__textfield_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -840px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__textfield_icon,.cke_ltr.cke_hidpi .cke_button__textfield_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -864px !important;background-size: 16px !important;}.cke_hidpi .cke_button__horizontalrule_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -888px !important;background-size: 16px !important;}.cke_hidpi .cke_button__iframe_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -912px !important;background-size: 16px !important;}.cke_hidpi .cke_button__image_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -936px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__indent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -960px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__indent_icon,.cke_ltr.cke_hidpi .cke_button__indent_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -984px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__outdent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1008px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__outdent_icon,.cke_ltr.cke_hidpi .cke_button__outdent_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1032px !important;background-size: 16px !important;}.cke_hidpi .cke_button__smiley_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1056px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyblock_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1080px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifycenter_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1104px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyleft_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1128px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyright_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1152px !important;background-size: 16px !important;}.cke_hidpi .cke_button__language_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1176px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__anchor_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1200px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__anchor_icon,.cke_ltr.cke_hidpi .cke_button__anchor_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1224px !important;background-size: 16px !important;}.cke_hidpi .cke_button__link_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1248px !important;background-size: 16px !important;}.cke_hidpi .cke_button__unlink_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1272px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__bulletedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1296px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__bulletedlist_icon,.cke_ltr.cke_hidpi .cke_button__bulletedlist_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1320px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__numberedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1344px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__numberedlist_icon,.cke_ltr.cke_hidpi .cke_button__numberedlist_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1368px !important;background-size: 16px !important;}.cke_hidpi .cke_button__maximize_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1392px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__newpage_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__newpage_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1416px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__newpage_icon,.cke_ltr.cke_hidpi .cke_button__newpage_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1440px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pagebreak_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pagebreak_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1464px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pagebreak_icon,.cke_ltr.cke_hidpi .cke_button__pagebreak_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1488px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastetext_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1512px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastetext_icon,.cke_ltr.cke_hidpi .cke_button__pastetext_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1536px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastefromword_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1560px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastefromword_icon,.cke_ltr.cke_hidpi .cke_button__pastefromword_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1584px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__preview_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__preview_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1608px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__preview_icon,.cke_ltr.cke_hidpi .cke_button__preview_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1632px !important;background-size: 16px !important;}.cke_hidpi .cke_button__print_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1656px !important;background-size: 16px !important;}.cke_hidpi .cke_button__removeformat_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1680px !important;background-size: 16px !important;}.cke_hidpi .cke_button__save_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1704px !important;background-size: 16px !important;}.cke_hidpi .cke_button__selectall_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1728px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__showblocks_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1752px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__showblocks_icon,.cke_ltr.cke_hidpi .cke_button__showblocks_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1776px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__source_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1800px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__source_icon,.cke_ltr.cke_hidpi .cke_button__source_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1824px !important;background-size: 16px !important;}.cke_hidpi .cke_button__specialchar_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1848px !important;background-size: 16px !important;}.cke_hidpi .cke_button__scayt_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1872px !important;background-size: 16px !important;}.cke_hidpi .cke_button__table_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1896px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__redo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1920px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__redo_icon,.cke_ltr.cke_hidpi .cke_button__redo_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1944px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__undo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1968px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__undo_icon,.cke_ltr.cke_hidpi .cke_button__undo_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1992px !important;background-size: 16px !important;}.cke_hidpi .cke_button__spellchecker_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -2016px !important;background-size: 16px !important;} \ No newline at end of file +.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none}.cke_reset_all,.cke_reset_all *,.cke_reset_all a,.cke_reset_all textarea{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:var(--dca-black, #000);text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre-wrap}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;border:1px solid var(--dca-gray-lighter, #d1d1d1);padding:0}.cke_inner{display:block;background:var(--dca-white, #fff);padding:0;-webkit-touch-callout:none}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid var(--dca-gray-lighter, #d1d1d1);background:var(--dca-gray-super-lightest, #f8f8f8);padding:6px 8px 2px;white-space:normal}.cke_float .cke_top{border:1px solid var(--dca-gray-lighter, #d1d1d1)}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid var(--dca-gray-lighter, #d1d1d1);background:var(--dca-gray-super-lightest, #f8f8f8)}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent var(--dca-gray-lighter, #bcbcbc) transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent var(--dca-gray-lighter, #bcbcbc);border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:var(--dca-white, #fff);border:1px solid var(--dca-gray-lighter, #d1d1d1)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_block:focus{outline:0}.cke_panel_list{margin:0;padding:0;list-style-type:none;white-space:nowrap}.cke_panel_listItem{margin:0;padding:0}.cke_panel_listItem a{padding:6px 7px;display:block;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis}.cke_hc .cke_panel_listItem a{border-style:none}.cke_panel_listItem.cke_selected a,.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{background-color:var(--dca-gray-lightest, #e9e9e9)}.cke_panel_listItem a:focus{outline:1px dotted var(--dca-black, #000)}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:4px 5px}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:6px 6px 7px 6px;color:var(--dca-gray-darker, #484848);border-bottom:1px solid var(--dca-gray-lighter, #d1d1d1);background:var(--dca-gray-super-lightest, #f8f8f8)}.cke_colorblock{padding:10px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:var(--dca-black, #000)}a.cke_colorbox{padding:2px;float:left;width:20px;height:20px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{outline:0;padding:0;border:2px solid var(--dca-primary, #139ff7)}a:hover.cke_colorbox{border-color:var(--dca-gray-lighter, #bcbcbc)}span.cke_colorbox{width:20px;height:20px;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorauto,a.cke_colormore{border:var(--dca-white, #fff) 1px solid;padding:3px;display:block;cursor:pointer}a.cke_colorauto{padding:0;border:1px solid transparent;margin-bottom:6px;height:26px;line-height:26px}a.cke_colormore{margin-top:10px;height:20px;line-height:19px}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{outline:0;border:var(--dca-primary, #139ff7) 1px solid;background-color:var(--dca-gray-super-lightest, #f8f8f8)}a:hover.cke_colorauto,a:hover.cke_colormore{border-color:var(--dca-gray-lighter, #bcbcbc)}.cke_colorauto span.cke_colorbox{width:18px;height:18px;border:1px solid var(--dca-gray, #80808)0;margin-left:1px;margin-top:3px}.cke_rtl .cke_colorauto span.cke_colorbox{margin-left:0;margin-right:1px}span.cke_colorbox[style*="var(--dca-white, #fff)fff"],span.cke_colorbox[style*="var(--dca-white, #fff)FFF"],span.cke_colorbox[style="background-color:var(--dca-white, #fff)"],span.cke_colorbox[style="background-color:var(--dca-white, #fff)"],span.cke_colorbox[style*="rgb(255,255,255)"],span.cke_colorbox[style*="rgb(255, 255, 255)"]{border:1px solid var(--dca-gray, #80808)0;width:18px;height:18px}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{border:0;float:left;margin:1px 2px 6px 0;padding-right:3px}.cke_rtl .cke_toolgroup{float:right;margin:1px 0 6px 2px;padding-left:3px;padding-right:0}.cke_hc .cke_toolgroup{margin-right:5px;margin-bottom:5px}.cke_hc.cke_rtl .cke_toolgroup{margin-right:0;margin-left:5px}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0;position:relative}a.cke_button_expandable{padding:4px 5px}.cke_rtl a.cke_button{float:right}.cke_hc a.cke_button{border:1px solid black;padding:3px 5px;margin:0 3px 5px 0}.cke_hc.cke_rtl a.cke_button{margin:0 0 5px 3px}a.cke_button_on{background:var(--dca-white, #fff);border:1px var(--dca-gray-lighter, #bcbcbc) solid;padding:3px 5px}a.cke_button_expandable.cke_button_on{padding:3px 4px}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active{background:var(--dca-gray-lightest, #e5e5e5);border:1px var(--dca-gray-lighter, #bcbcbc) solid;padding:3px 5px}a.cke_button_expandable.cke_button_off:hover,a.cke_button_expandable.cke_button_off:focus,a.cke_button_expandable.cke_button_off:active{padding:3px 4px}.cke_hc a.cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active{background:var(--dca-gray-lightest, #e5e5e5);border:3px solid var(--dca-black, #000);padding:1px 3px}@media screen and (hover:none){a.cke_button_off:hover{background:transparent;border:0;padding:4px 6px}a.cke_button_expandable.cke_button_off:hover{padding:4px 5px}a.cke_button_off:active{background:var(--dca-gray-lightest, #e5e5e5);border:1px var(--dca-gray-lighter, #bcbcbc) solid;padding:3px 5px}a.cke_button_expandable.cke_button_off:active{padding:3px 4px}}a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{border:0;padding:4px 6px;background-color:transparent}a.cke_button_expandable.cke_button_disabled:hover,a.cke_button_expandable.cke_button_disabled:active{padding:4px 5px}a.cke_button_disabled:focus{border:1px var(--dca-gray-lighter, #bcbcbc) solid;padding:3px 5px}a.cke_button_expandable.cke_button_disabled:focus{padding:3px 4px}.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border:1px solid var(--dca-gray-lighter, #acacac);padding:3px 5px;margin:0 3px 5px 0}.cke_hc a.cke_button_disabled:focus{border:3px solid var(--dca-black, #000);padding:1px 3px}.cke_hc.cke_rtl a.cke_button_disabled:hover,.cke_hc.cke_rtl a.cke_button_disabled:focus,.cke_hc.cke_rtl a.cke_button_disabled:active{margin:0 0 5px 3px}a.cke_button_disabled .cke_button_icon,a.cke_button_disabled .cke_button_arrow{opacity:.3}.cke_hc a.cke_button_disabled{border-color:var(--dca-gray-lighter, #acacac)}.cke_hc a.cke_button_disabled .cke_button_icon,.cke_hc a.cke_button_disabled .cke_button_label{opacity:.5}.cke_toolgroup a.cke_button:last-child:after,.cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{content:"";position:absolute;height:18px;width:0;border-right:1px solid var(--dca-gray-lighter, #bcbcbc);margin-top:4px;top:0;right:-3px}.cke_rtl .cke_toolgroup a.cke_button:last-child:after,.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{border-right:0;right:auto;border-left:1px solid var(--dca-gray-lighter, #bcbcbc);top:0;left:-3px}.cke_hc .cke_toolgroup a.cke_button:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_disabled:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{border-color:var(--dca-black, #000);top:0;right:-7px}.cke_hc.cke_rtl .cke_toolgroup a.cke_button:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{top:0;right:auto;left:-7px}.cke_toolgroup a.cke_button:hover:last-child:after,.cke_toolgroup a.cke_button:focus:last-child:after,.cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-1px;right:-4px}.cke_rtl .cke_toolgroup a.cke_button:hover:last-child:after,.cke_rtl .cke_toolgroup a.cke_button:focus:last-child:after,.cke_rtl .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-1px;right:auto;left:-4px}.cke_hc .cke_toolgroup a.cke_button:hover:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-2px;right:-9px}.cke_hc.cke_rtl .cke_toolgroup a.cke_button:hover:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-2px;right:auto;left:-9px}.cke_toolbar.cke_toolbar_last .cke_toolgroup a.cke_button:last-child:after{content:none;border:0;width:0;height:0}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:var(--dca-gray-darker, #484848)}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 3px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid var(--dca-gray-darker, #484848)}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px 0 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:var(--dca-gray-lighter, #bcbcbc);margin:4px 2px 0 2px;height:18px;width:1px}.cke_rtl .cke_toolbar_separator{float:right}.cke_hc .cke_toolbar_separator{background-color:var(--dca-black, #000);margin-left:2px;margin-right:5px;margin-bottom:9px}.cke_hc.cke_rtl .cke_toolbar_separator{margin-left:5px;margin-right:2px}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}a.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid var(--dca-gray-lighter, #bcbcbc)}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser:hover{background:var(--dca-gray-lightest, #e5e5e5)}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border:3px solid transparent;border-bottom-color:var(--dca-gray-darker, #484848)}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:var(--dca-gray-darker, #484848)}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0}.cke_menuitem span{cursor:default}.cke_menubutton{display:block}.cke_hc .cke_menubutton{padding:2px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:var(--dca-gray-lightest, #e9e9e9);display:block;outline:1px dotted}.cke_menubutton:hover{outline:0}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_disabled:hover,.cke_menubutton_disabled:focus,.cke_menubutton_disabled:active{background-color:transparent;outline:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:var(--dca-gray-super-lightest, #f8f8f8);padding:6px 4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:var(--dca-gray-lightest, #e9e9e9)}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{background-color:var(--dca-gray-super-lightest, #f8f8f8);outline:0}.cke_menuitem .cke_menubutton_on{background-color:var(--dca-gray-lightest, #e9e9e9);border:1px solid #dedede;outline:0}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px;background-color:var(--dca-gray-lightest, #e9e9e9)}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_shortcut{color:var(--dca-gray-light, #979797)}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:var(--dca-gray-lighter, #d1d1d1);height:1px}.cke_menuarrow{background:transparent url(images/arrow.png) no-repeat 0 10px;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_hc .cke_menuarrow{background-image:none}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left;position:relative;margin-bottom:5px}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:1px;margin-bottom:10px}.cke_combo:after{content:"";position:absolute;height:18px;width:0;border-right:1px solid var(--dca-gray-lighter, #bcbcbc);margin-top:5px;top:0;right:0}.cke_rtl .cke_combo:after{border-right:0;border-left:1px solid var(--dca-gray-lighter, #bcbcbc);right:auto;left:0}.cke_hc .cke_combo:after{border-color:var(--dca-black, #000)}a.cke_combo_button{cursor:default;display:inline-block;float:left;margin:0;padding:1px}.cke_rtl a.cke_combo_button{float:right}.cke_hc a.cke_combo_button{padding:4px}.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{background:var(--dca-gray-lightest, #e5e5e5);border:1px solid var(--dca-gray-lighter, #bcbcbc);padding:0 0 0 1px;margin-left:-1px}.cke_combo_off a.cke_combo_button:focus{outline:0}.cke_combo_on a.cke_combo_button,.cke_combo_off a.cke_combo_button:active{background:var(--dca-white, #fff)}@media screen and (hover:none){.cke_combo_off a.cke_combo_button:hover{background:transparent;border-color:transparent}.cke_combo_off a.cke_combo_button:active{background:var(--dca-white, #fff);border:1px solid var(--dca-gray-lighter, #bcbcbc)}}.cke_rtl .cke_combo_on a.cke_combo_button,.cke_rtl .cke_combo_off a.cke_combo_button:hover,.cke_rtl .cke_combo_off a.cke_combo_button:focus,.cke_rtl .cke_combo_off a.cke_combo_button:active{padding:0 1px 0 0;margin-left:0;margin-right:-1px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border:3px solid var(--dca-black, #000);padding:1px 1px 1px 2px}.cke_hc.cke_rtl .cke_combo_on a.cke_combo_button,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:hover,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:focus,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:active{padding:1px 2px 1px 1px}.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0 0 0 3px;margin-left:-3px}.cke_rtl .cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0 3px 0 0;margin-left:0;margin-right:-3px}.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px 1px 1px 7px;margin-left:-6px}.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px 7px 1px 1px;margin-left:0;margin-right:-6px}.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0;margin:0}.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px;margin:0}.cke_toolbar .cke_combo+.cke_toolbar_end,.cke_toolbar .cke_combo+.cke_toolgroup{margin-right:0;margin-left:2px}.cke_rtl .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_rtl .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:0;margin-right:2px}.cke_hc .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_hc .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:5px}.cke_hc.cke_rtl .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_hc.cke_rtl .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:0;margin-right:5px}.cke_toolbar.cke_toolbar_last .cke_combo:nth-last-child(-n+2):after{content:none;border:0;width:0;height:0}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:var(--dca-gray-darker, #484848);width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 10px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{cursor:default;margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid var(--dca-gray-darker, #484848)}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}a.cke_path_item,span.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:var(--dca-gray-darker, #484848);font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:var(--dca-gray-lightest, #e5e5e5)}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combopanel__fontsize{width:135px}textarea.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:var(--dca-white, #fff);white-space:pre-wrap;border:0;padding:0;margin:0;display:block}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:var(--dca-white, #fff)}.cke_notifications_area{pointer-events:none}.cke_notification{pointer-events:auto;position:relative;margin:10px;width:300px;color:white;text-align:center;opacity:.95;filter:alpha(opacity = 95);-webkit-animation:fadeIn .7s;animation:fadeIn .7s}.cke_notification_message a{color:#12306f}@-webkit-keyframes fadeIn{from{opacity:.4}to{opacity:.95}}@keyframes fadeIn{from{opacity:.4}to{opacity:.95}}.cke_notification_success{background:#72b572;border:1px solid #63a563}.cke_notification_warning{background:#c83939;border:1px solid #902b2b}.cke_notification_info{background:#2e9ad0;border:1px solid #0f74a8}.cke_notification_info span.cke_notification_progress{background-color:#0f74a8;display:block;padding:0;margin:0;height:100%;overflow:hidden;position:absolute;z-index:1}.cke_notification_message{position:relative;margin:4px 23px 3px;font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:18px;z-index:4;text-overflow:ellipsis;overflow:hidden}.cke_notification_close{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:1px;right:1px;padding:0;margin:0;z-index:5;opacity:.6;filter:alpha(opacity = 60)}.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_notification_close span{display:none}.cke_notification_warning a.cke_notification_close{opacity:.8;filter:alpha(opacity = 80)}.cke_notification_warning a.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}a.cke_button_disabled,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{filter:alpha(opacity = 30)}.cke_button_disabled .cke_button_icon{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#00ffffff,endColorstr=#00ffffff)}.cke_button_off:hover,.cke_button_off:focus,.cke_button_off:active{filter:alpha(opacity = 100)}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{filter:alpha(opacity = 30)}.cke_toolbox_collapser{border:1px solid #a6a6a6}.cke_toolbox_collapser .cke_arrow{margin-top:1px}.cke_hc .cke_top,.cke_hc .cke_bottom,.cke_hc .cke_combo_button,.cke_hc a.cke_combo_button:hover,.cke_hc a.cke_combo_button:focus,.cke_hc .cke_toolgroup,.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc .cke_toolbox_collapser,.cke_hc .cke_toolbox_collapser:hover,.cke_hc .cke_panel_grouptitle{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_toolbox_collapser .cke_arrow{border-width:4px}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{border-width:3px}.cke_toolbox_collapser .cke_arrow{margin-top:0}.cke_toolbar{position:relative}.cke_rtl .cke_toolbar_end{right:auto;left:0}.cke_toolbar_end:after{content:"";position:absolute;height:18px;width:0;border-right:1px solid var(--dca-gray-lighter, #bcbcbc);margin-top:4px;top:1px;right:2px}.cke_rtl .cke_toolbar_end:after{right:auto;left:2px}.cke_hc .cke_toolbar_end:after{top:2px;right:5px;border-color:var(--dca-black, #000)}.cke_hc.cke_rtl .cke_toolbar_end:after{right:auto;left:5px}.cke_combo+.cke_toolbar_end:after,.cke_toolbar.cke_toolbar_last .cke_toolbar_end:after{content:none;border:0}.cke_combo+.cke_toolgroup+.cke_toolbar_end:after{right:0}.cke_rtl .cke_combo+.cke_toolgroup+.cke_toolbar_end:after{right:auto;left:0}@media(prefers-color-scheme: dark){.cke_button_icon{filter:brightness(3);}} +/* Patched for djangocms-text-ckeditor */ diff --git a/djangocms_text_ckeditor/static/djangocms_text_ckeditor/ckeditor/skins/moono-lisa/editor_iequirks.css b/djangocms_text_ckeditor/static/djangocms_text_ckeditor/ckeditor/skins/moono-lisa/editor_iequirks.css index db4209ac8..f4bc2cc45 100644 --- a/djangocms_text_ckeditor/static/djangocms_text_ckeditor/ckeditor/skins/moono-lisa/editor_iequirks.css +++ b/djangocms_text_ckeditor/static/djangocms_text_ckeditor/ckeditor/skins/moono-lisa/editor_iequirks.css @@ -2,4 +2,5 @@ Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none}.cke_reset_all,.cke_reset_all *,.cke_reset_all a,.cke_reset_all textarea{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre-wrap}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;border:1px solid #d1d1d1;padding:0}.cke_inner{display:block;background:#fff;padding:0;-webkit-touch-callout:none}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #d1d1d1;background:#f8f8f8;padding:6px 8px 2px;white-space:normal}.cke_float .cke_top{border:1px solid #d1d1d1}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #d1d1d1;background:#f8f8f8}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #bcbcbc transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #bcbcbc;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #d1d1d1}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_block:focus{outline:0}.cke_panel_list{margin:0;padding:0;list-style-type:none;white-space:nowrap}.cke_panel_listItem{margin:0;padding:0}.cke_panel_listItem a{padding:6px 7px;display:block;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis}.cke_hc .cke_panel_listItem a{border-style:none}.cke_panel_listItem.cke_selected a,.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{background-color:#e9e9e9}.cke_panel_listItem a:focus{outline:1px dotted #000}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:4px 5px}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:6px 6px 7px 6px;color:#484848;border-bottom:1px solid #d1d1d1;background:#f8f8f8}.cke_colorblock{padding:10px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}a.cke_colorbox{padding:2px;float:left;width:20px;height:20px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{outline:0;padding:0;border:2px solid #139ff7}a:hover.cke_colorbox{border-color:#bcbcbc}span.cke_colorbox{width:20px;height:20px;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:3px;display:block;cursor:pointer}a.cke_colorauto{padding:0;border:1px solid transparent;margin-bottom:6px;height:26px;line-height:26px}a.cke_colormore{margin-top:10px;height:20px;line-height:19px}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{outline:0;border:#139ff7 1px solid;background-color:#f8f8f8}a:hover.cke_colorauto,a:hover.cke_colormore{border-color:#bcbcbc}.cke_colorauto span.cke_colorbox{width:18px;height:18px;border:1px solid #808080;margin-left:1px;margin-top:3px}.cke_rtl .cke_colorauto span.cke_colorbox{margin-left:0;margin-right:1px}span.cke_colorbox[style*="#ffffff"],span.cke_colorbox[style*="#FFFFFF"],span.cke_colorbox[style="background-color:#fff"],span.cke_colorbox[style="background-color:#FFF"],span.cke_colorbox[style*="rgb(255,255,255)"],span.cke_colorbox[style*="rgb(255, 255, 255)"]{border:1px solid #808080;width:18px;height:18px}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{border:0;float:left;margin:1px 2px 6px 0;padding-right:3px}.cke_rtl .cke_toolgroup{float:right;margin:1px 0 6px 2px;padding-left:3px;padding-right:0}.cke_hc .cke_toolgroup{margin-right:5px;margin-bottom:5px}.cke_hc.cke_rtl .cke_toolgroup{margin-right:0;margin-left:5px}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0;position:relative}a.cke_button_expandable{padding:4px 5px}.cke_rtl a.cke_button{float:right}.cke_hc a.cke_button{border:1px solid black;padding:3px 5px;margin:0 3px 5px 0}.cke_hc.cke_rtl a.cke_button{margin:0 0 5px 3px}a.cke_button_on{background:#fff;border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_on{padding:3px 4px}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active{background:#e5e5e5;border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_off:hover,a.cke_button_expandable.cke_button_off:focus,a.cke_button_expandable.cke_button_off:active{padding:3px 4px}.cke_hc a.cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active{background:#e5e5e5;border:3px solid #000;padding:1px 3px}@media screen and (hover:none){a.cke_button_off:hover{background:transparent;border:0;padding:4px 6px}a.cke_button_expandable.cke_button_off:hover{padding:4px 5px}a.cke_button_off:active{background:#e5e5e5;border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_off:active{padding:3px 4px}}a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{border:0;padding:4px 6px;background-color:transparent}a.cke_button_expandable.cke_button_disabled:hover,a.cke_button_expandable.cke_button_disabled:active{padding:4px 5px}a.cke_button_disabled:focus{border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_disabled:focus{padding:3px 4px}.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border:1px solid #acacac;padding:3px 5px;margin:0 3px 5px 0}.cke_hc a.cke_button_disabled:focus{border:3px solid #000;padding:1px 3px}.cke_hc.cke_rtl a.cke_button_disabled:hover,.cke_hc.cke_rtl a.cke_button_disabled:focus,.cke_hc.cke_rtl a.cke_button_disabled:active{margin:0 0 5px 3px}a.cke_button_disabled .cke_button_icon,a.cke_button_disabled .cke_button_arrow{opacity:.3}.cke_hc a.cke_button_disabled{border-color:#acacac}.cke_hc a.cke_button_disabled .cke_button_icon,.cke_hc a.cke_button_disabled .cke_button_label{opacity:.5}.cke_toolgroup a.cke_button:last-child:after,.cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{content:"";position:absolute;height:18px;width:0;border-right:1px solid #bcbcbc;margin-top:4px;top:0;right:-3px}.cke_rtl .cke_toolgroup a.cke_button:last-child:after,.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{border-right:0;right:auto;border-left:1px solid #bcbcbc;top:0;left:-3px}.cke_hc .cke_toolgroup a.cke_button:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_disabled:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{border-color:#000;top:0;right:-7px}.cke_hc.cke_rtl .cke_toolgroup a.cke_button:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{top:0;right:auto;left:-7px}.cke_toolgroup a.cke_button:hover:last-child:after,.cke_toolgroup a.cke_button:focus:last-child:after,.cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-1px;right:-4px}.cke_rtl .cke_toolgroup a.cke_button:hover:last-child:after,.cke_rtl .cke_toolgroup a.cke_button:focus:last-child:after,.cke_rtl .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-1px;right:auto;left:-4px}.cke_hc .cke_toolgroup a.cke_button:hover:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-2px;right:-9px}.cke_hc.cke_rtl .cke_toolgroup a.cke_button:hover:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-2px;right:auto;left:-9px}.cke_toolbar.cke_toolbar_last .cke_toolgroup a.cke_button:last-child:after{content:none;border:0;width:0;height:0}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#484848}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 3px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #484848}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px 0 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#bcbcbc;margin:4px 2px 0 2px;height:18px;width:1px}.cke_rtl .cke_toolbar_separator{float:right}.cke_hc .cke_toolbar_separator{background-color:#000;margin-left:2px;margin-right:5px;margin-bottom:9px}.cke_hc.cke_rtl .cke_toolbar_separator{margin-left:5px;margin-right:2px}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}a.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #bcbcbc}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser:hover{background:#e5e5e5}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border:3px solid transparent;border-bottom-color:#484848}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#484848}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0}.cke_menuitem span{cursor:default}.cke_menubutton{display:block}.cke_hc .cke_menubutton{padding:2px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#e9e9e9;display:block;outline:1px dotted}.cke_menubutton:hover{outline:0}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_disabled:hover,.cke_menubutton_disabled:focus,.cke_menubutton_disabled:active{background-color:transparent;outline:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#f8f8f8;padding:6px 4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#e9e9e9}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{background-color:#f8f8f8;outline:0}.cke_menuitem .cke_menubutton_on{background-color:#e9e9e9;border:1px solid #dedede;outline:0}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px;background-color:#e9e9e9}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_shortcut{color:#979797}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d1d1d1;height:1px}.cke_menuarrow{background:transparent url(images/arrow.png) no-repeat 0 10px;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_hc .cke_menuarrow{background-image:none}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left;position:relative;margin-bottom:5px}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:1px;margin-bottom:10px}.cke_combo:after{content:"";position:absolute;height:18px;width:0;border-right:1px solid #bcbcbc;margin-top:5px;top:0;right:0}.cke_rtl .cke_combo:after{border-right:0;border-left:1px solid #bcbcbc;right:auto;left:0}.cke_hc .cke_combo:after{border-color:#000}a.cke_combo_button{cursor:default;display:inline-block;float:left;margin:0;padding:1px}.cke_rtl a.cke_combo_button{float:right}.cke_hc a.cke_combo_button{padding:4px}.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{background:#e5e5e5;border:1px solid #bcbcbc;padding:0 0 0 1px;margin-left:-1px}.cke_combo_off a.cke_combo_button:focus{outline:0}.cke_combo_on a.cke_combo_button,.cke_combo_off a.cke_combo_button:active{background:#fff}@media screen and (hover:none){.cke_combo_off a.cke_combo_button:hover{background:transparent;border-color:transparent}.cke_combo_off a.cke_combo_button:active{background:#fff;border:1px solid #bcbcbc}}.cke_rtl .cke_combo_on a.cke_combo_button,.cke_rtl .cke_combo_off a.cke_combo_button:hover,.cke_rtl .cke_combo_off a.cke_combo_button:focus,.cke_rtl .cke_combo_off a.cke_combo_button:active{padding:0 1px 0 0;margin-left:0;margin-right:-1px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border:3px solid #000;padding:1px 1px 1px 2px}.cke_hc.cke_rtl .cke_combo_on a.cke_combo_button,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:hover,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:focus,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:active{padding:1px 2px 1px 1px}.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0 0 0 3px;margin-left:-3px}.cke_rtl .cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0 3px 0 0;margin-left:0;margin-right:-3px}.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px 1px 1px 7px;margin-left:-6px}.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px 7px 1px 1px;margin-left:0;margin-right:-6px}.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0;margin:0}.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px;margin:0}.cke_toolbar .cke_combo+.cke_toolbar_end,.cke_toolbar .cke_combo+.cke_toolgroup{margin-right:0;margin-left:2px}.cke_rtl .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_rtl .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:0;margin-right:2px}.cke_hc .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_hc .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:5px}.cke_hc.cke_rtl .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_hc.cke_rtl .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:0;margin-right:5px}.cke_toolbar.cke_toolbar_last .cke_combo:nth-last-child(-n+2):after{content:none;border:0;width:0;height:0}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#484848;width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 10px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{cursor:default;margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #484848}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}a.cke_path_item,span.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#484848;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#e5e5e5}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combopanel__fontsize{width:135px}textarea.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre-wrap;border:0;padding:0;margin:0;display:block}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_notifications_area{pointer-events:none}.cke_notification{pointer-events:auto;position:relative;margin:10px;width:300px;color:white;text-align:center;opacity:.95;filter:alpha(opacity = 95);-webkit-animation:fadeIn .7s;animation:fadeIn .7s}.cke_notification_message a{color:#12306f}@-webkit-keyframes fadeIn{from{opacity:.4}to{opacity:.95}}@keyframes fadeIn{from{opacity:.4}to{opacity:.95}}.cke_notification_success{background:#72b572;border:1px solid #63a563}.cke_notification_warning{background:#c83939;border:1px solid #902b2b}.cke_notification_info{background:#2e9ad0;border:1px solid #0f74a8}.cke_notification_info span.cke_notification_progress{background-color:#0f74a8;display:block;padding:0;margin:0;height:100%;overflow:hidden;position:absolute;z-index:1}.cke_notification_message{position:relative;margin:4px 23px 3px;font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:18px;z-index:4;text-overflow:ellipsis;overflow:hidden}.cke_notification_close{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:1px;right:1px;padding:0;margin:0;z-index:5;opacity:.6;filter:alpha(opacity = 60)}.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_notification_close span{display:none}.cke_notification_warning a.cke_notification_close{opacity:.8;filter:alpha(opacity = 80)}.cke_notification_warning a.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}a.cke_button_disabled,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{filter:alpha(opacity = 30)}.cke_button_disabled .cke_button_icon{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#00ffffff,endColorstr=#00ffffff)}.cke_button_off:hover,.cke_button_off:focus,.cke_button_off:active{filter:alpha(opacity = 100)}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{filter:alpha(opacity = 30)}.cke_toolbox_collapser{border:1px solid #a6a6a6}.cke_toolbox_collapser .cke_arrow{margin-top:1px}.cke_hc .cke_top,.cke_hc .cke_bottom,.cke_hc .cke_combo_button,.cke_hc a.cke_combo_button:hover,.cke_hc a.cke_combo_button:focus,.cke_hc .cke_toolgroup,.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc .cke_toolbox_collapser,.cke_hc .cke_toolbox_collapser:hover,.cke_hc .cke_panel_grouptitle{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_top,.cke_contents,.cke_bottom{width:100%}.cke_button_arrow{font-size:0}.cke_rtl .cke_toolgroup,.cke_rtl .cke_toolbar_separator,.cke_rtl .cke_button,.cke_rtl .cke_button *,.cke_rtl .cke_combo,.cke_rtl .cke_combo *,.cke_rtl .cke_path_item,.cke_rtl .cke_path_item *,.cke_rtl .cke_path_empty{float:none}.cke_rtl .cke_toolgroup,.cke_rtl .cke_toolbar_separator,.cke_rtl .cke_combo_button,.cke_rtl .cke_combo_button *,.cke_rtl .cke_button,.cke_rtl .cke_button_icon{display:inline-block;vertical-align:top}.cke_rtl .cke_button_icon{float:none}.cke_resizer{width:10px}.cke_source{white-space:normal}.cke_bottom{position:static}.cke_colorbox{font-size:0}.cke_button__about_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -0px !important;}.cke_button__bold_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -24px !important;}.cke_button__italic_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -48px !important;}.cke_button__strike_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -72px !important;}.cke_button__subscript_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -96px !important;}.cke_button__superscript_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -120px !important;}.cke_button__underline_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -144px !important;}.cke_button__bidiltr_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -168px !important;}.cke_button__bidirtl_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -192px !important;}.cke_button__blockquote_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -216px !important;}.cke_rtl .cke_button__copy_icon, .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -240px !important;}.cke_ltr .cke_button__copy_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -264px !important;}.cke_rtl .cke_button__cut_icon, .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -288px !important;}.cke_ltr .cke_button__cut_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -312px !important;}.cke_rtl .cke_button__paste_icon, .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -336px !important;}.cke_ltr .cke_button__paste_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -360px !important;}.cke_button__bgcolor_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -384px !important;}.cke_button__textcolor_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -408px !important;}.cke_rtl .cke_button__templates_icon, .cke_mixed_dir_content .cke_rtl .cke_button__templates_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -432px !important;}.cke_ltr .cke_button__templates_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -456px !important;}.cke_button__copyformatting_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -480px !important;}.cke_button__creatediv_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -504px !important;}.cke_rtl .cke_button__find_icon, .cke_mixed_dir_content .cke_rtl .cke_button__find_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -528px !important;}.cke_ltr .cke_button__find_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -552px !important;}.cke_button__replace_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -576px !important;}.cke_button__button_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -600px !important;}.cke_button__checkbox_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -624px !important;}.cke_button__form_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -648px !important;}.cke_button__hiddenfield_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -672px !important;}.cke_button__imagebutton_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -696px !important;}.cke_button__radio_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -720px !important;}.cke_rtl .cke_button__select_icon, .cke_mixed_dir_content .cke_rtl .cke_button__select_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -744px !important;}.cke_ltr .cke_button__select_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -768px !important;}.cke_rtl .cke_button__textarea_icon, .cke_mixed_dir_content .cke_rtl .cke_button__textarea_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -792px !important;}.cke_ltr .cke_button__textarea_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -816px !important;}.cke_rtl .cke_button__textfield_icon, .cke_mixed_dir_content .cke_rtl .cke_button__textfield_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -840px !important;}.cke_ltr .cke_button__textfield_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -864px !important;}.cke_button__horizontalrule_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -888px !important;}.cke_button__iframe_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -912px !important;}.cke_button__image_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -936px !important;}.cke_rtl .cke_button__indent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -960px !important;}.cke_ltr .cke_button__indent_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -984px !important;}.cke_rtl .cke_button__outdent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1008px !important;}.cke_ltr .cke_button__outdent_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1032px !important;}.cke_button__smiley_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1056px !important;}.cke_button__justifyblock_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1080px !important;}.cke_button__justifycenter_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1104px !important;}.cke_button__justifyleft_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1128px !important;}.cke_button__justifyright_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1152px !important;}.cke_button__language_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1176px !important;}.cke_rtl .cke_button__anchor_icon, .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1200px !important;}.cke_ltr .cke_button__anchor_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1224px !important;}.cke_button__link_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1248px !important;}.cke_button__unlink_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1272px !important;}.cke_rtl .cke_button__bulletedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1296px !important;}.cke_ltr .cke_button__bulletedlist_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1320px !important;}.cke_rtl .cke_button__numberedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1344px !important;}.cke_ltr .cke_button__numberedlist_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1368px !important;}.cke_button__maximize_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1392px !important;}.cke_rtl .cke_button__newpage_icon, .cke_mixed_dir_content .cke_rtl .cke_button__newpage_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1416px !important;}.cke_ltr .cke_button__newpage_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1440px !important;}.cke_rtl .cke_button__pagebreak_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pagebreak_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1464px !important;}.cke_ltr .cke_button__pagebreak_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1488px !important;}.cke_rtl .cke_button__pastetext_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1512px !important;}.cke_ltr .cke_button__pastetext_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1536px !important;}.cke_rtl .cke_button__pastefromword_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1560px !important;}.cke_ltr .cke_button__pastefromword_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1584px !important;}.cke_rtl .cke_button__preview_icon, .cke_mixed_dir_content .cke_rtl .cke_button__preview_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1608px !important;}.cke_ltr .cke_button__preview_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1632px !important;}.cke_button__print_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1656px !important;}.cke_button__removeformat_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1680px !important;}.cke_button__save_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1704px !important;}.cke_button__selectall_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1728px !important;}.cke_rtl .cke_button__showblocks_icon, .cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1752px !important;}.cke_ltr .cke_button__showblocks_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1776px !important;}.cke_rtl .cke_button__source_icon, .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1800px !important;}.cke_ltr .cke_button__source_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1824px !important;}.cke_button__specialchar_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1848px !important;}.cke_button__scayt_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1872px !important;}.cke_button__table_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1896px !important;}.cke_rtl .cke_button__redo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1920px !important;}.cke_ltr .cke_button__redo_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1944px !important;}.cke_rtl .cke_button__undo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1968px !important;}.cke_ltr .cke_button__undo_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -1992px !important;}.cke_button__spellchecker_icon {background: url(icons.png?t=cb93181c83) no-repeat 0 -2016px !important;}.cke_hidpi .cke_button__about_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -0px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bold_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -24px !important;background-size: 16px !important;}.cke_hidpi .cke_button__italic_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -48px !important;background-size: 16px !important;}.cke_hidpi .cke_button__strike_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -72px !important;background-size: 16px !important;}.cke_hidpi .cke_button__subscript_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -96px !important;background-size: 16px !important;}.cke_hidpi .cke_button__superscript_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -120px !important;background-size: 16px !important;}.cke_hidpi .cke_button__underline_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -144px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bidiltr_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -168px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bidirtl_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -192px !important;background-size: 16px !important;}.cke_hidpi .cke_button__blockquote_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -216px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__copy_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -240px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__copy_icon,.cke_ltr.cke_hidpi .cke_button__copy_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -264px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__cut_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -288px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__cut_icon,.cke_ltr.cke_hidpi .cke_button__cut_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -312px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__paste_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -336px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__paste_icon,.cke_ltr.cke_hidpi .cke_button__paste_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -360px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bgcolor_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -384px !important;background-size: 16px !important;}.cke_hidpi .cke_button__textcolor_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -408px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__templates_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__templates_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -432px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__templates_icon,.cke_ltr.cke_hidpi .cke_button__templates_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -456px !important;background-size: 16px !important;}.cke_hidpi .cke_button__copyformatting_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -480px !important;background-size: 16px !important;}.cke_hidpi .cke_button__creatediv_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -504px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__find_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__find_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -528px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__find_icon,.cke_ltr.cke_hidpi .cke_button__find_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -552px !important;background-size: 16px !important;}.cke_hidpi .cke_button__replace_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -576px !important;background-size: 16px !important;}.cke_hidpi .cke_button__button_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -600px !important;background-size: 16px !important;}.cke_hidpi .cke_button__checkbox_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -624px !important;background-size: 16px !important;}.cke_hidpi .cke_button__form_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -648px !important;background-size: 16px !important;}.cke_hidpi .cke_button__hiddenfield_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -672px !important;background-size: 16px !important;}.cke_hidpi .cke_button__imagebutton_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -696px !important;background-size: 16px !important;}.cke_hidpi .cke_button__radio_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -720px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__select_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__select_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -744px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__select_icon,.cke_ltr.cke_hidpi .cke_button__select_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -768px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__textarea_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__textarea_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -792px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__textarea_icon,.cke_ltr.cke_hidpi .cke_button__textarea_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -816px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__textfield_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__textfield_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -840px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__textfield_icon,.cke_ltr.cke_hidpi .cke_button__textfield_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -864px !important;background-size: 16px !important;}.cke_hidpi .cke_button__horizontalrule_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -888px !important;background-size: 16px !important;}.cke_hidpi .cke_button__iframe_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -912px !important;background-size: 16px !important;}.cke_hidpi .cke_button__image_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -936px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__indent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -960px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__indent_icon,.cke_ltr.cke_hidpi .cke_button__indent_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -984px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__outdent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1008px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__outdent_icon,.cke_ltr.cke_hidpi .cke_button__outdent_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1032px !important;background-size: 16px !important;}.cke_hidpi .cke_button__smiley_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1056px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyblock_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1080px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifycenter_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1104px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyleft_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1128px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyright_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1152px !important;background-size: 16px !important;}.cke_hidpi .cke_button__language_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1176px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__anchor_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1200px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__anchor_icon,.cke_ltr.cke_hidpi .cke_button__anchor_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1224px !important;background-size: 16px !important;}.cke_hidpi .cke_button__link_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1248px !important;background-size: 16px !important;}.cke_hidpi .cke_button__unlink_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1272px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__bulletedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1296px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__bulletedlist_icon,.cke_ltr.cke_hidpi .cke_button__bulletedlist_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1320px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__numberedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1344px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__numberedlist_icon,.cke_ltr.cke_hidpi .cke_button__numberedlist_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1368px !important;background-size: 16px !important;}.cke_hidpi .cke_button__maximize_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1392px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__newpage_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__newpage_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1416px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__newpage_icon,.cke_ltr.cke_hidpi .cke_button__newpage_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1440px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pagebreak_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pagebreak_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1464px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pagebreak_icon,.cke_ltr.cke_hidpi .cke_button__pagebreak_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1488px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastetext_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1512px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastetext_icon,.cke_ltr.cke_hidpi .cke_button__pastetext_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1536px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastefromword_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1560px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastefromword_icon,.cke_ltr.cke_hidpi .cke_button__pastefromword_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1584px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__preview_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__preview_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1608px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__preview_icon,.cke_ltr.cke_hidpi .cke_button__preview_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1632px !important;background-size: 16px !important;}.cke_hidpi .cke_button__print_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1656px !important;background-size: 16px !important;}.cke_hidpi .cke_button__removeformat_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1680px !important;background-size: 16px !important;}.cke_hidpi .cke_button__save_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1704px !important;background-size: 16px !important;}.cke_hidpi .cke_button__selectall_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1728px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__showblocks_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1752px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__showblocks_icon,.cke_ltr.cke_hidpi .cke_button__showblocks_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1776px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__source_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1800px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__source_icon,.cke_ltr.cke_hidpi .cke_button__source_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1824px !important;background-size: 16px !important;}.cke_hidpi .cke_button__specialchar_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1848px !important;background-size: 16px !important;}.cke_hidpi .cke_button__scayt_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1872px !important;background-size: 16px !important;}.cke_hidpi .cke_button__table_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1896px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__redo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1920px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__redo_icon,.cke_ltr.cke_hidpi .cke_button__redo_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1944px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__undo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1968px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__undo_icon,.cke_ltr.cke_hidpi .cke_button__undo_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -1992px !important;background-size: 16px !important;}.cke_hidpi .cke_button__spellchecker_icon {background: url(icons_hidpi.png?t=cb93181c83) no-repeat 0 -2016px !important;background-size: 16px !important;} \ No newline at end of file +.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none}.cke_reset_all,.cke_reset_all *,.cke_reset_all a,.cke_reset_all textarea{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:var(--dca-black, #000);text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre-wrap}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;border:1px solid var(--dca-gray-lighter, #d1d1d1);padding:0}.cke_inner{display:block;background:var(--dca-white, #fff);padding:0;-webkit-touch-callout:none}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid var(--dca-gray-lighter, #d1d1d1);background:var(--dca-gray-super-lightest, #f8f8f8);padding:6px 8px 2px;white-space:normal}.cke_float .cke_top{border:1px solid var(--dca-gray-lighter, #d1d1d1)}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid var(--dca-gray-lighter, #d1d1d1);background:var(--dca-gray-super-lightest, #f8f8f8)}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent var(--dca-gray-lighter, #bcbcbc) transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent var(--dca-gray-lighter, #bcbcbc);border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:var(--dca-white, #fff);border:1px solid var(--dca-gray-lighter, #d1d1d1)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_block:focus{outline:0}.cke_panel_list{margin:0;padding:0;list-style-type:none;white-space:nowrap}.cke_panel_listItem{margin:0;padding:0}.cke_panel_listItem a{padding:6px 7px;display:block;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis}.cke_hc .cke_panel_listItem a{border-style:none}.cke_panel_listItem.cke_selected a,.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{background-color:var(--dca-gray-lightest, #e9e9e9)}.cke_panel_listItem a:focus{outline:1px dotted var(--dca-black, #000)}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:4px 5px}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:6px 6px 7px 6px;color:var(--dca-gray-darker, #484848);border-bottom:1px solid var(--dca-gray-lighter, #d1d1d1);background:var(--dca-gray-super-lightest, #f8f8f8)}.cke_colorblock{padding:10px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:var(--dca-black, #000)}a.cke_colorbox{padding:2px;float:left;width:20px;height:20px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{outline:0;padding:0;border:2px solid var(--dca-primary, #139ff7)}a:hover.cke_colorbox{border-color:var(--dca-gray-lighter, #bcbcbc)}span.cke_colorbox{width:20px;height:20px;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorauto,a.cke_colormore{border:var(--dca-white, #fff) 1px solid;padding:3px;display:block;cursor:pointer}a.cke_colorauto{padding:0;border:1px solid transparent;margin-bottom:6px;height:26px;line-height:26px}a.cke_colormore{margin-top:10px;height:20px;line-height:19px}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{outline:0;border:var(--dca-primary, #139ff7) 1px solid;background-color:var(--dca-gray-super-lightest, #f8f8f8)}a:hover.cke_colorauto,a:hover.cke_colormore{border-color:var(--dca-gray-lighter, #bcbcbc)}.cke_colorauto span.cke_colorbox{width:18px;height:18px;border:1px solid var(--dca-gray, #80808)0;margin-left:1px;margin-top:3px}.cke_rtl .cke_colorauto span.cke_colorbox{margin-left:0;margin-right:1px}span.cke_colorbox[style*="var(--dca-white, #fff)fff"],span.cke_colorbox[style*="var(--dca-white, #fff)FFF"],span.cke_colorbox[style="background-color:var(--dca-white, #fff)"],span.cke_colorbox[style="background-color:var(--dca-white, #fff)"],span.cke_colorbox[style*="rgb(255,255,255)"],span.cke_colorbox[style*="rgb(255, 255, 255)"]{border:1px solid var(--dca-gray, #80808)0;width:18px;height:18px}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{border:0;float:left;margin:1px 2px 6px 0;padding-right:3px}.cke_rtl .cke_toolgroup{float:right;margin:1px 0 6px 2px;padding-left:3px;padding-right:0}.cke_hc .cke_toolgroup{margin-right:5px;margin-bottom:5px}.cke_hc.cke_rtl .cke_toolgroup{margin-right:0;margin-left:5px}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0;position:relative}a.cke_button_expandable{padding:4px 5px}.cke_rtl a.cke_button{float:right}.cke_hc a.cke_button{border:1px solid black;padding:3px 5px;margin:0 3px 5px 0}.cke_hc.cke_rtl a.cke_button{margin:0 0 5px 3px}a.cke_button_on{background:var(--dca-white, #fff);border:1px var(--dca-gray-lighter, #bcbcbc) solid;padding:3px 5px}a.cke_button_expandable.cke_button_on{padding:3px 4px}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active{background:var(--dca-gray-lightest, #e5e5e5);border:1px var(--dca-gray-lighter, #bcbcbc) solid;padding:3px 5px}a.cke_button_expandable.cke_button_off:hover,a.cke_button_expandable.cke_button_off:focus,a.cke_button_expandable.cke_button_off:active{padding:3px 4px}.cke_hc a.cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active{background:var(--dca-gray-lightest, #e5e5e5);border:3px solid var(--dca-black, #000);padding:1px 3px}@media screen and (hover:none){a.cke_button_off:hover{background:transparent;border:0;padding:4px 6px}a.cke_button_expandable.cke_button_off:hover{padding:4px 5px}a.cke_button_off:active{background:var(--dca-gray-lightest, #e5e5e5);border:1px var(--dca-gray-lighter, #bcbcbc) solid;padding:3px 5px}a.cke_button_expandable.cke_button_off:active{padding:3px 4px}}a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{border:0;padding:4px 6px;background-color:transparent}a.cke_button_expandable.cke_button_disabled:hover,a.cke_button_expandable.cke_button_disabled:active{padding:4px 5px}a.cke_button_disabled:focus{border:1px var(--dca-gray-lighter, #bcbcbc) solid;padding:3px 5px}a.cke_button_expandable.cke_button_disabled:focus{padding:3px 4px}.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border:1px solid var(--dca-gray-lighter, #acacac);padding:3px 5px;margin:0 3px 5px 0}.cke_hc a.cke_button_disabled:focus{border:3px solid var(--dca-black, #000);padding:1px 3px}.cke_hc.cke_rtl a.cke_button_disabled:hover,.cke_hc.cke_rtl a.cke_button_disabled:focus,.cke_hc.cke_rtl a.cke_button_disabled:active{margin:0 0 5px 3px}a.cke_button_disabled .cke_button_icon,a.cke_button_disabled .cke_button_arrow{opacity:.3}.cke_hc a.cke_button_disabled{border-color:var(--dca-gray-lighter, #acacac)}.cke_hc a.cke_button_disabled .cke_button_icon,.cke_hc a.cke_button_disabled .cke_button_label{opacity:.5}.cke_toolgroup a.cke_button:last-child:after,.cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{content:"";position:absolute;height:18px;width:0;border-right:1px solid var(--dca-gray-lighter, #bcbcbc);margin-top:4px;top:0;right:-3px}.cke_rtl .cke_toolgroup a.cke_button:last-child:after,.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{border-right:0;right:auto;border-left:1px solid var(--dca-gray-lighter, #bcbcbc);top:0;left:-3px}.cke_hc .cke_toolgroup a.cke_button:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_disabled:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{border-color:var(--dca-black, #000);top:0;right:-7px}.cke_hc.cke_rtl .cke_toolgroup a.cke_button:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{top:0;right:auto;left:-7px}.cke_toolgroup a.cke_button:hover:last-child:after,.cke_toolgroup a.cke_button:focus:last-child:after,.cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-1px;right:-4px}.cke_rtl .cke_toolgroup a.cke_button:hover:last-child:after,.cke_rtl .cke_toolgroup a.cke_button:focus:last-child:after,.cke_rtl .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-1px;right:auto;left:-4px}.cke_hc .cke_toolgroup a.cke_button:hover:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-2px;right:-9px}.cke_hc.cke_rtl .cke_toolgroup a.cke_button:hover:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-2px;right:auto;left:-9px}.cke_toolbar.cke_toolbar_last .cke_toolgroup a.cke_button:last-child:after{content:none;border:0;width:0;height:0}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:var(--dca-gray-darker, #484848)}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 3px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid var(--dca-gray-darker, #484848)}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px 0 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:var(--dca-gray-lighter, #bcbcbc);margin:4px 2px 0 2px;height:18px;width:1px}.cke_rtl .cke_toolbar_separator{float:right}.cke_hc .cke_toolbar_separator{background-color:var(--dca-black, #000);margin-left:2px;margin-right:5px;margin-bottom:9px}.cke_hc.cke_rtl .cke_toolbar_separator{margin-left:5px;margin-right:2px}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}a.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid var(--dca-gray-lighter, #bcbcbc)}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser:hover{background:var(--dca-gray-lightest, #e5e5e5)}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border:3px solid transparent;border-bottom-color:var(--dca-gray-darker, #484848)}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:var(--dca-gray-darker, #484848)}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0}.cke_menuitem span{cursor:default}.cke_menubutton{display:block}.cke_hc .cke_menubutton{padding:2px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:var(--dca-gray-lightest, #e9e9e9);display:block;outline:1px dotted}.cke_menubutton:hover{outline:0}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_disabled:hover,.cke_menubutton_disabled:focus,.cke_menubutton_disabled:active{background-color:transparent;outline:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:var(--dca-gray-super-lightest, #f8f8f8);padding:6px 4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:var(--dca-gray-lightest, #e9e9e9)}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{background-color:var(--dca-gray-super-lightest, #f8f8f8);outline:0}.cke_menuitem .cke_menubutton_on{background-color:var(--dca-gray-lightest, #e9e9e9);border:1px solid #dedede;outline:0}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px;background-color:var(--dca-gray-lightest, #e9e9e9)}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_shortcut{color:var(--dca-gray-light, #979797)}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:var(--dca-gray-lighter, #d1d1d1);height:1px}.cke_menuarrow{background:transparent url(images/arrow.png) no-repeat 0 10px;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_hc .cke_menuarrow{background-image:none}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left;position:relative;margin-bottom:5px}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:1px;margin-bottom:10px}.cke_combo:after{content:"";position:absolute;height:18px;width:0;border-right:1px solid var(--dca-gray-lighter, #bcbcbc);margin-top:5px;top:0;right:0}.cke_rtl .cke_combo:after{border-right:0;border-left:1px solid var(--dca-gray-lighter, #bcbcbc);right:auto;left:0}.cke_hc .cke_combo:after{border-color:var(--dca-black, #000)}a.cke_combo_button{cursor:default;display:inline-block;float:left;margin:0;padding:1px}.cke_rtl a.cke_combo_button{float:right}.cke_hc a.cke_combo_button{padding:4px}.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{background:var(--dca-gray-lightest, #e5e5e5);border:1px solid var(--dca-gray-lighter, #bcbcbc);padding:0 0 0 1px;margin-left:-1px}.cke_combo_off a.cke_combo_button:focus{outline:0}.cke_combo_on a.cke_combo_button,.cke_combo_off a.cke_combo_button:active{background:var(--dca-white, #fff)}@media screen and (hover:none){.cke_combo_off a.cke_combo_button:hover{background:transparent;border-color:transparent}.cke_combo_off a.cke_combo_button:active{background:var(--dca-white, #fff);border:1px solid var(--dca-gray-lighter, #bcbcbc)}}.cke_rtl .cke_combo_on a.cke_combo_button,.cke_rtl .cke_combo_off a.cke_combo_button:hover,.cke_rtl .cke_combo_off a.cke_combo_button:focus,.cke_rtl .cke_combo_off a.cke_combo_button:active{padding:0 1px 0 0;margin-left:0;margin-right:-1px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border:3px solid var(--dca-black, #000);padding:1px 1px 1px 2px}.cke_hc.cke_rtl .cke_combo_on a.cke_combo_button,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:hover,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:focus,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:active{padding:1px 2px 1px 1px}.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0 0 0 3px;margin-left:-3px}.cke_rtl .cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0 3px 0 0;margin-left:0;margin-right:-3px}.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px 1px 1px 7px;margin-left:-6px}.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px 7px 1px 1px;margin-left:0;margin-right:-6px}.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0;margin:0}.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px;margin:0}.cke_toolbar .cke_combo+.cke_toolbar_end,.cke_toolbar .cke_combo+.cke_toolgroup{margin-right:0;margin-left:2px}.cke_rtl .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_rtl .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:0;margin-right:2px}.cke_hc .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_hc .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:5px}.cke_hc.cke_rtl .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_hc.cke_rtl .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:0;margin-right:5px}.cke_toolbar.cke_toolbar_last .cke_combo:nth-last-child(-n+2):after{content:none;border:0;width:0;height:0}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:var(--dca-gray-darker, #484848);width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 10px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{cursor:default;margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid var(--dca-gray-darker, #484848)}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}a.cke_path_item,span.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:var(--dca-gray-darker, #484848);font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:var(--dca-gray-lightest, #e5e5e5)}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combopanel__fontsize{width:135px}textarea.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:var(--dca-white, #fff);white-space:pre-wrap;border:0;padding:0;margin:0;display:block}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:var(--dca-white, #fff)}.cke_notifications_area{pointer-events:none}.cke_notification{pointer-events:auto;position:relative;margin:10px;width:300px;color:white;text-align:center;opacity:.95;filter:alpha(opacity = 95);-webkit-animation:fadeIn .7s;animation:fadeIn .7s}.cke_notification_message a{color:#12306f}@-webkit-keyframes fadeIn{from{opacity:.4}to{opacity:.95}}@keyframes fadeIn{from{opacity:.4}to{opacity:.95}}.cke_notification_success{background:#72b572;border:1px solid #63a563}.cke_notification_warning{background:#c83939;border:1px solid #902b2b}.cke_notification_info{background:#2e9ad0;border:1px solid #0f74a8}.cke_notification_info span.cke_notification_progress{background-color:#0f74a8;display:block;padding:0;margin:0;height:100%;overflow:hidden;position:absolute;z-index:1}.cke_notification_message{position:relative;margin:4px 23px 3px;font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:18px;z-index:4;text-overflow:ellipsis;overflow:hidden}.cke_notification_close{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:1px;right:1px;padding:0;margin:0;z-index:5;opacity:.6;filter:alpha(opacity = 60)}.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_notification_close span{display:none}.cke_notification_warning a.cke_notification_close{opacity:.8;filter:alpha(opacity = 80)}.cke_notification_warning a.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}a.cke_button_disabled,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{filter:alpha(opacity = 30)}.cke_button_disabled .cke_button_icon{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#00ffffff,endColorstr=#00ffffff)}.cke_button_off:hover,.cke_button_off:focus,.cke_button_off:active{filter:alpha(opacity = 100)}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{filter:alpha(opacity = 30)}.cke_toolbox_collapser{border:1px solid #a6a6a6}.cke_toolbox_collapser .cke_arrow{margin-top:1px}.cke_hc .cke_top,.cke_hc .cke_bottom,.cke_hc .cke_combo_button,.cke_hc a.cke_combo_button:hover,.cke_hc a.cke_combo_button:focus,.cke_hc .cke_toolgroup,.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc .cke_toolbox_collapser,.cke_hc .cke_toolbox_collapser:hover,.cke_hc .cke_panel_grouptitle{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_top,.cke_contents,.cke_bottom{width:100%}.cke_button_arrow{font-size:0}.cke_rtl .cke_toolgroup,.cke_rtl .cke_toolbar_separator,.cke_rtl .cke_button,.cke_rtl .cke_button *,.cke_rtl .cke_combo,.cke_rtl .cke_combo *,.cke_rtl .cke_path_item,.cke_rtl .cke_path_item *,.cke_rtl .cke_path_empty{float:none}.cke_rtl .cke_toolgroup,.cke_rtl .cke_toolbar_separator,.cke_rtl .cke_combo_button,.cke_rtl .cke_combo_button *,.cke_rtl .cke_button,.cke_rtl .cke_button_icon{display:inline-block;vertical-align:top}.cke_rtl .cke_button_icon{float:none}.cke_resizer{width:10px}.cke_source{white-space:normal}.cke_bottom{position:static}.cke_colorbox{font-size:0}@media(prefers-color-scheme: dark){.cke_button_icon{filter:brightness(3);}} +/* Patched for djangocms-text-ckeditor */ diff --git a/djangocms_text_ckeditor/static/djangocms_text_ckeditor/ckeditor_plugins/cmsplugins/icons/cmsplugins.svg b/djangocms_text_ckeditor/static/djangocms_text_ckeditor/ckeditor_plugins/cmsplugins/icons/cmsplugins.svg index 0577e7d6d..8ee30c821 100644 --- a/djangocms_text_ckeditor/static/djangocms_text_ckeditor/ckeditor_plugins/cmsplugins/icons/cmsplugins.svg +++ b/djangocms_text_ckeditor/static/djangocms_text_ckeditor/ckeditor_plugins/cmsplugins/icons/cmsplugins.svg @@ -1 +1 @@ - \ No newline at end of file + diff --git a/djangocms_text_ckeditor/static/djangocms_text_ckeditor/ckeditor_plugins/cmsplugins/plugin.js b/djangocms_text_ckeditor/static/djangocms_text_ckeditor/ckeditor_plugins/cmsplugins/plugin.js index 2620737ef..3eff767af 100644 --- a/djangocms_text_ckeditor/static/djangocms_text_ckeditor/ckeditor_plugins/cmsplugins/plugin.js +++ b/djangocms_text_ckeditor/static/djangocms_text_ckeditor/ckeditor_plugins/cmsplugins/plugin.js @@ -145,11 +145,11 @@ }; this.editor.on('doubleclick', handleEdit); - this.editor.on('instanceReady', function () { +/* this.editor.on('instanceReady', function () { CMS.$('cms-plugin', CMS.$('iframe.cke_wysiwyg_frame')[0] .contentWindow.document.documentElement).on('click touchend', handleEdit); }); - +*/ this.setupDataProcessor(); }, diff --git a/djangocms_text_ckeditor/static/djangocms_text_ckeditor/js/cms.ckeditor-old.js b/djangocms_text_ckeditor/static/djangocms_text_ckeditor/js/cms.ckeditor-old.js new file mode 100644 index 000000000..95e0aff68 --- /dev/null +++ b/djangocms_text_ckeditor/static/djangocms_text_ckeditor/js/cms.ckeditor-old.js @@ -0,0 +1,335 @@ +(function ($) { + window.CKEDITOR_BASEPATH = $('[data-ckeditor-basepath]').attr('data-ckeditor-basepath'); + + // CMS.$ will be passed for $ + /** + * CMS.CKEditor + * + * @description: Adds cms specific plugins to CKEditor + */ + CMS.CKEditor = { + + options: { + // ckeditor default settings, will be overwritten by CKEDITOR_SETTINGS + language: 'en', + skin: 'moono-lisa', + toolbar_CMS: [ + ['Undo', 'Redo'], + ['cmsplugins', 'cmswidget', '-', 'ShowBlocks'], + ['Format', 'Styles'], + ['TextColor', 'BGColor', '-', 'PasteText', 'PasteFromWord'], + ['Scayt'], + ['Maximize', ''], + '/', + ['Bold', 'Italic', 'Underline', 'Strike', '-', 'Subscript', 'Superscript', '-', 'RemoveFormat'], + ['JustifyLeft', 'JustifyCenter', 'JustifyRight', 'JustifyBlock'], + ['HorizontalRule'], + ['NumberedList', 'BulletedList'], + ['Outdent', 'Indent', '-', 'Blockquote', '-', 'Link', 'Unlink', '-', 'Table'], + ['Source'] + ], + toolbar_HTMLField: [ + ['Undo', 'Redo'], + ['ShowBlocks'], + ['Format', 'Styles'], + ['TextColor', 'BGColor', '-', 'PasteText', 'PasteFromWord'], + ['Scayt'], + ['Maximize', ''], + '/', + ['Bold', 'Italic', 'Underline', 'Strike', '-', 'Subscript', 'Superscript', '-', 'RemoveFormat'], + ['JustifyLeft', 'JustifyCenter', 'JustifyRight', 'JustifyBlock'], + ['HorizontalRule'], + ['Link', 'Unlink'], + ['NumberedList', 'BulletedList'], + ['Outdent', 'Indent', '-', 'Blockqote', '-', 'Link', 'Unlink', '-', 'Table'], + ['Source'] + ], + + allowedContent: true, + toolbarCanCollapse: false, + removePlugins: 'resize', + extraPlugins: '' + }, + static_url: '/static/djangocms-text-ckeditor/', + ckeditor_basepath: '/static/djangocms-text-ckeditor/ckeditor/', + CSS: null, + editors: {}, + + + init: function (container, options, settings) { + this.container = $(container); + this.container.data('ckeditor-initialized', true); + // add additional settings to options + this.options.toolbar = settings.toolbar; + this.options = $.extend(false, { + settings: settings + }, this.options, options); + + // add extra plugins that we absolutely must have + this.options.extraPlugins = this.options.extraPlugins += + ',cmsplugins,cmswidget,cmsdialog,cmsresize,widget'; + + CMS.CKEditor = CMS.CKEditor || {}; + CMS.CKEditor.static_url = this.options.settings.static_url; + + document.createElement('cms-plugin'); + CKEDITOR.dtd['cms-plugin'] = CKEDITOR.dtd.div; + CKEDITOR.dtd.$inline['cms-plugin'] = 1; + // has to be here, otherwise extra

tags appear + CKEDITOR.dtd.$nonEditable['cms-plugin'] = 1; + CKEDITOR.dtd.$transparent['cms-plugin'] = 1; + CKEDITOR.dtd.body['cms-plugin'] = 1; + + // add additional plugins (autoloads plugins.js) + CKEDITOR.skin.addIcon('cmsplugins', settings.static_url + + '/ckeditor_plugins/cmsplugins/icons/cmsplugins.svg'); + + // render ckeditor + this.editor = CKEDITOR.replace(container, this.options); + + // add additional styling + CKEDITOR.on('instanceReady', $.proxy(CMS.CKEditor, 'setup')); + }, + + initInlineEditors: function () { + if (CMS._plugins === undefined) { + // no plugins -> no inline editors + return; + } + CMS._plugins.forEach(function (plugin) { + if (plugin[1].plugin_type === 'TextPlugin') { + var url = plugin[1].urls.edit_plugin, + id = plugin[1].plugin_id, + elements = $('.cms-plugin.cms-plugin-' + id); + + if (elements.length > 0) { + $.get(url, {}, function (response) { + // get form incl. csrf token + var responseDOM = $(response); + var csrfmiddlewaretoken = responseDOM.find('input[name="csrfmiddlewaretoken"]'); + var content = responseDOM.find('textarea[name="body"]'); + + if (csrfmiddlewaretoken) { // success <=> middleware token + var wrapper = elements + .wrapAll("

") + .parent(), + options = {}, + settings_script_tag = responseDOM.find('.ck-settings')[0]; + + elements = elements + .removeClass('cms-plugin') + .removeClass('cms-plugin-' + id); + wrapper.addClass('cms-plugin').addClass('cms-plugin-' + id); + wrapper.html(content.val()); + for (var attr in settings_script_tag.dataset) { + options[attr] = settings_script_tag.dataset[attr]; + if (attr === 'lang' || attr === 'plugins' || attr === "settings") { + options[attr] = JSON.parse(options[attr]); + } + } + CMS.CKEditor.init( + wrapper[0], + options, + { + editor: CKEDITOR.InlineEditor, + url: url, + csrfmiddlewaretoken: csrfmiddlewaretoken.val(), + callback: function () { + var styles = $('style[data-cke="true"]'); + + if (styles.length > 0) { + CMS.CKEditor5.CSS = styles.clone(); + } + wrapper.on('dblclick', function (event) { + event.stopPropagation(); + }); + wrapper.on('pointerover', function (event) { + event.stopPropagation(); + }); + wrapper.on('blur', function click_outside() { + CMS.CKEditor5.save_data(id); + }); + } + } + ); + } + }); + } + } + }); + }, + + save_data: function (id, action) { + var instance = CMS.CKEditor.editors[id]; + + if (instance.changed) { + var data = instance.editor.getData(); + + console.log('save called', id, instance.setup); + $.post(instance.setup.url, { // send changes + csrfmiddlewaretoken: instance.setup.csrfmiddlewaretoken, + body: data, + _save: 'Save' + }, function (response) { + if (action !== undefined) { + action(instance, response); + } + // var scripts = $(response).find("script").addClass("cms-ckeditor5-result"); + // $("body").append(scripts); + }).fail(function (error) { + console.log(error); + alert("Error saving data" + error) + }); + } + CMS.CKEditor5.editors[id].changed = false; + }, + + + // setup is called after ckeditor has been initialized + setup: function () { + // auto maximize modal if alone in a modal + var that = this; + var win = window.parent || window; + // 70px is hardcoded to make it more performant. 20px + 20px - paddings, 30px label height + var TOOLBAR_HEIGHT_WITH_PADDINGS = 63; + + if (this._isAloneInModal()) { + that.editor.resize('100%', win.CMS.$('.cms-modal-frame').height() - TOOLBAR_HEIGHT_WITH_PADDINGS); + this.editor.execCommand('maximize'); + + $(window).on('resize.ckeditor', function () { + that._repositionDialog(CKEDITOR.dialog.getCurrent(), win); + }).trigger('resize.ckeditor'); + + win.CMS.API.Helpers.addEventListener('modal-maximized modal-restored', function () { + try { + if (!$('.cke_maximized').length) { + that.editor.resize( + '100%', + win.CMS.$('.cms-modal-frame').height() - TOOLBAR_HEIGHT_WITH_PADDINGS + ); + setTimeout(function () { + that._repositionDialog(CKEDITOR.dialog.getCurrent(), win); + }, 0); + } + } catch (e) { + // sometimes throws errors if modal with text plugin is closed too fast + } + }); + } + + // add css tweks to the editor + this.styles(); + this._resizing(); + }, + + styles: function () { + // add styling to source and fullscreen view + $('.cke_button__maximize, .cke_button__source').parent() + .css('margin-right', 0).parent() + .css('float', 'right'); + }, + + _resizing: function () { + $(document).on('pointerdown', '.cms-ckeditor-resizer', function (e) { + e.preventDefault(); + var event = new CMS.$.Event('mousedown'); + + $.extend(event, { + screenX: e.originalEvent.screenX, + screenY: e.originalEvent.screenY + }); + $(this).trigger(event); + }); + }, + + _isAloneInModal: function () { + var body = this.container.closest('body'); + + // return true if the ckeditor is alone in a modal popup + return body.is('.app-djangocms_text_ckeditor.model-text') || // Django >= 1.7 + body.is('.djangocms_text_ckeditor-text'); // Django < 1.7 + }, + + /** + * @method _repositionDialog + * @private + * @param {CKEDITOR.dialog} dialog instance + */ + _repositionDialog: function (dialog) { + var OFFSET = 80; + + if (!dialog) { + return; + } + var size = dialog.getSize(); + var position = dialog.getPosition(); + var win = CKEDITOR.document.getWindow(); + var viewSize = win.getViewPaneSize(); + var winWidth = viewSize.width; + var winHeight = viewSize.height; + + if (position.x < 0) { + dialog.move(0, position.y); + position.x = 0; + } + + if (position.y < 0) { + dialog.move(position.x, 0); + position.y = 0; + } + + if (position.y + size.height > winHeight) { + dialog.resize(size.width, winHeight - position.y - OFFSET); + } + + if (position.x + size.width > winWidth) { + dialog.resize(winWidth - position.x, size.height); + } + }, + + _initAll: function () { + var dynamics = []; + + if (!window._cmsCKEditors) { + return; + } + window._cmsCKEditors.forEach(function (editorConfig) { + var selector = editorConfig[0]; + + if (selector.match(/__prefix__/)) { + dynamics.push(editorConfig); + } else { + CMS.CKEditor.init(editorConfig[0], editorConfig[1], editorConfig[2]); + } + }); + + $('.add-row a').on('click', function () { + $('.CMS_CKEditor').each(function (i, el) { + var container = $(el); + + if (container.data('ckeditor-initialized')) { + return; + } + + var containerId = container.attr('id'); + + // in case there are multiple different inlines we need to check + // newly added one against all of them + dynamics.forEach(function (config) { + var selector = config[0]; + var regex = new RegExp(selector.replace('__prefix__', '\\d+')); + + if (containerId.match(regex)) { + CMS.CKEditor.init(containerId, config[1], config[2]); + } + }); + }); + }); + } + }; + + setTimeout(function init() { + CMS.CKEditor._initAll(); + }, 0); +})(CMS.$); diff --git a/djangocms_text_ckeditor/static/djangocms_text_ckeditor/js/cms.ckeditor.js b/djangocms_text_ckeditor/static/djangocms_text_ckeditor/js/cms.ckeditor.js index 3f1388808..06be6a6d4 100644 --- a/djangocms_text_ckeditor/static/djangocms_text_ckeditor/js/cms.ckeditor.js +++ b/djangocms_text_ckeditor/static/djangocms_text_ckeditor/js/cms.ckeditor.js @@ -51,45 +51,165 @@ extraPlugins: '' }, - init: function (container, options, settings) { - if ($('#' + container).length > 0) { - this.container = $('#' + container); - this.container.data('ckeditor-initialized', true); - // add additional settings to options - this.options.toolbar = settings.toolbar; - this.options = $.extend(false, { - settings: settings - }, this.options, options); - - // add extra plugins that we absolutely must have - this.options.extraPlugins = this.options.extraPlugins += - ',cmsplugins,cmswidget,cmsdialog,cmsresize,widget'; - - CMS.CKEditor = CMS.CKEditor || {}; - CMS.CKEditor.static_url = this.options.settings.static_url; - - document.createElement('cms-plugin'); - CKEDITOR.dtd['cms-plugin'] = CKEDITOR.dtd.div; - CKEDITOR.dtd.$inline['cms-plugin'] = 1; - // has to be here, otherwise extra

tags appear - CKEDITOR.dtd.$nonEditable['cms-plugin'] = 1; - CKEDITOR.dtd.$transparent['cms-plugin'] = 1; - CKEDITOR.dtd.body['cms-plugin'] = 1; - - // add additional plugins (autoloads plugins.js) - CKEDITOR.skin.addIcon('cmsplugins', settings.static_url + - '/ckeditor_plugins/cmsplugins/icons/cmsplugins.svg'); - + static_url: '/static/djangocms-text-ckeditor/', + ckeditor_basepath: '/static/djangocms-text-ckeditor/ckeditor/', + CSS: [], + editors: {}, + + + init: function (container, mode, options, settings) { + this.container = $(container); + this.container.data('ckeditor-initialized', true); + // add additional settings to options + this.options.toolbar = settings.toolbar; + this.options = $.extend(false, { + settings: settings + }, this.options, options); + + // add extra plugins that we absolutely must have + this.options.extraPlugins = this.options.extraPlugins += + ',cmsplugins,cmswidget,cmsdialog,cmsresize,widget'; + + document.createElement('cms-plugin'); + CKEDITOR.dtd['cms-plugin'] = CKEDITOR.dtd.div; + CKEDITOR.dtd.$inline['cms-plugin'] = 1; + // has to be here, otherwise extra

tags appear + CKEDITOR.dtd.$nonEditable['cms-plugin'] = 1; + CKEDITOR.dtd.$transparent['cms-plugin'] = 1; + CKEDITOR.dtd.body['cms-plugin'] = 1; + + // add additional plugins (autoloads plugins.js) + CKEDITOR.skin.addIcon('cmsplugins', settings.static_url + + '/ckeditor_plugins/cmsplugins/icons/cmsplugins.svg'); + + if (mode === 'admin') { // render ckeditor this.editor = CKEDITOR.replace(container, this.options); // add additional styling - CKEDITOR.on('instanceReady', $.proxy(CMS.CKEditor, 'setup')); + CKEDITOR.on('instanceReady', $.proxy(CMS.CKEditor, 'setupAdmin')); + } else { + this.editor = CKEDITOR.inline(container, this.options); + CKEDITOR.on('instanceReady', settings.callback); + CKEDITOR.on('instanceReady', $.proxy(CMS.CKEditor, 'setupInline')); + } + CMS.CKEditor.editors[settings.plugin_id] = { + editor: this.editor, + options: options, + settings: settings, + container: container, + changed: false + }; + + }, + + initInlineEditors: function () { + if (CMS._plugins === undefined) { + // no plugins -> no inline editors + return; + } + CMS._plugins.forEach(function (plugin) { + if (plugin[1].plugin_type === 'TextPlugin') { + var url = plugin[1].urls.edit_plugin, + id = plugin[1].plugin_id, + elements = $('.cms-plugin.cms-plugin-' + id); + + if (elements.length > 0) { + $.get(url, {}, function (response) { + // get form incl. csrf token + var responseDOM = $(response); + var csrfmiddlewaretoken = responseDOM.find('input[name="csrfmiddlewaretoken"]'); + var content = responseDOM.find('textarea[name="body"]'); + + if (csrfmiddlewaretoken) { // success <=> middleware token + var wrapper = elements + .wrapAll("

") + .parent(), + settings = {}, + options = {}, + settings_script_tag = responseDOM.find('.ck-settings')[0]; + + elements = elements + .removeClass('cms-plugin') + .removeClass('cms-plugin-' + id); + wrapper.addClass('cms-plugin').addClass('cms-plugin-' + id); + wrapper.html(content.val()); + for (var attr in settings_script_tag.dataset) { + settings[attr] = settings_script_tag.dataset[attr]; + if (attr === 'lang' || attr === 'plugins') { + settings[attr] = JSON.parse(settings[attr]); + } else if (attr === 'options') { + options = JSON.parse(settings[attr]); + delete settings[attr]; + } + } + settings.callback = function () { + var styles = $('style[data-cke="true"]'); + + CMS.CKEditor.editors[id].editor.on('change', function () { + CMS.CKEditor.editors[id].changed = true; + console.log(id, "changed"); + }); + if (styles.length > 0) { + CMS.CKEditor5.CSS = styles.clone(); + } + wrapper.on('dblclick', function (event) { + event.stopPropagation(); + }); + wrapper.on('pointerover', function (event) { + event.stopPropagation(); + }); + wrapper.on('blur', function click_outside() { + CMS.CKEditor.save_data(id); + }); + }; + settings.csrfmiddlewaretoken = csrfmiddlewaretoken.val(); + settings.url = url; + if (options.title === undefined) { + options.title = "Click to edit"; + }; + + CMS.CKEditor.init( + wrapper[0], + 'inline', + options, + settings + ); + } + }); + } + } + }); + }, + + save_data: function (id, action) { + var instance = CMS.CKEditor.editors[id]; + + if (instance.changed) { + var data = instance.editor.getData(); + + console.log("Saving", id); + CMS.CKEditor.editors[id].changed = false; + $.post(instance.settings.url, { // send changes + csrfmiddlewaretoken: instance.settings.csrfmiddlewaretoken, + body: data, + _save: 'Save' + }, function (response) { + if (action !== undefined) { + action(instance, response); + } + // var scripts = $(response).find("script").addClass("cms-ckeditor5-result"); + // $("body").append(scripts); + }).fail(function (error) { + CMS.CKEditor.editors[id].changed = true; + console.error(error); + alert("Error saving data" + error); + }); } }, // setup is called after ckeditor has been initialized - setup: function () { + setupAdmin: function () { // auto maximize modal if alone in a modal var that = this; var win = window.parent || window; @@ -126,6 +246,16 @@ this._resizing(); }, + setupInline: function () { + $("link[rel='stylesheet'][type='text/css'][href*='ckeditor'").each( + function (index, element) { + if (!CMS.CKEditor.CSS.includes(element.href)) { + CMS.CKEditor.CSS.push(element.href); + } + } + ); + }, + styles: function () { // add styling to source and fullscreen view $('.cke_button__maximize, .cke_button__source').parent() @@ -150,8 +280,7 @@ var body = this.container.closest('body'); // return true if the ckeditor is alone in a modal popup - return body.is('.app-djangocms_text_ckeditor.model-text') || // Django >= 1.7 - body.is('.djangocms_text_ckeditor-text'); // Django < 1.7 + return body.is('.app-djangocms_text_ckeditor.model-text'); }, /** @@ -191,19 +320,20 @@ } }, - _initAll: function () { + initAdminEditors: function () { + window._cmsCKEditors = window._cmsCKEditors || []; var dynamics = []; - if (!window._cmsCKEditors) { - return; - } window._cmsCKEditors.forEach(function (editorConfig) { - var selector = editorConfig[0]; - - if (selector.match(/__prefix__/)) { + if (editorConfig[0].match(/__prefix__/)) { dynamics.push(editorConfig); } else { - CMS.CKEditor.init(editorConfig[0], editorConfig[1], editorConfig[2]); + CMS.CKEditor.init( + document.getElementById(editorConfig[0]), + 'admin', + editorConfig[1], + editorConfig[2] + ); } }); @@ -220,19 +350,39 @@ // in case there are multiple different inlines we need to check // newly added one against all of them dynamics.forEach(function (config) { - var selector = config[0]; + var selector = config[0].id; var regex = new RegExp(selector.replace('__prefix__', '\\d+')); if (containerId.match(regex)) { - CMS.CKEditor.init(containerId, config[1], config[2]); + CMS.CKEditor5.init( + document.getElementById(containerId), + config[1], + config[2] + ); } }); }); }); + }, + + + _initAll: function () { + CMS.CKEditor.initInlineEditors(); + CMS.CKEditor.initAdminEditors(); + }, + + _resetInlineEditors: function () { + CMS.CKEditor.CSS.forEach(function (stylefile) { + if($("link[href='"+stylefile+"']").length === 0) { + $("head").append($("")) + } + }); + CMS.CKEditor._initAll(); } }; setTimeout(function init() { CMS.CKEditor._initAll(); }, 0); + $(window).on('cms-content-refresh', CMS.CKEditor._resetInlineEditors); })(CMS.$); diff --git a/djangocms_text_ckeditor/static/djangocms_text_ckeditor/js/cms.inline.js b/djangocms_text_ckeditor/static/djangocms_text_ckeditor/js/cms.inline.js index fe2975b6a..bcc39a142 100644 --- a/djangocms_text_ckeditor/static/djangocms_text_ckeditor/js/cms.inline.js +++ b/djangocms_text_ckeditor/static/djangocms_text_ckeditor/js/cms.inline.js @@ -46,8 +46,8 @@ settings: settings }, this.options, {}); // add extra plugins that we absolutely must have - // this.options.extraPlugins = this.options.extraPlugins += - // ',cmsplugins,cmswidget,cmsdialog,widget'; + this.options.extraPlugins = this.options.extraPlugins += + ',cmsplugins,cmswidget,cmsdialog,widget'; CMS.CKEditor = CMS.CKEditor || {}; CMS.CKEditor.static_url = this.options.settings.static_url; diff --git a/djangocms_text_ckeditor/static/djangocms_text_ckeditor/js/dist/bundle-7a07481198.cms.ckeditor.min.js b/djangocms_text_ckeditor/static/djangocms_text_ckeditor/js/dist/bundle-00276cc2c0.cms.ckeditor.min.js similarity index 97% rename from djangocms_text_ckeditor/static/djangocms_text_ckeditor/js/dist/bundle-7a07481198.cms.ckeditor.min.js rename to djangocms_text_ckeditor/static/djangocms_text_ckeditor/js/dist/bundle-00276cc2c0.cms.ckeditor.min.js index aabfb39fc..ca9fbeec4 100644 --- a/djangocms_text_ckeditor/static/djangocms_text_ckeditor/js/dist/bundle-7a07481198.cms.ckeditor.min.js +++ b/djangocms_text_ckeditor/static/djangocms_text_ckeditor/js/dist/bundle-00276cc2c0.cms.ckeditor.min.js @@ -1,8 +1,7 @@ (function ($) { $(function () { -!function(t){window.CKEDITOR_BASEPATH=t("[data-ckeditor-basepath]").attr("data-ckeditor-basepath"),CMS.CKEditor={options:{language:"en",skin:"moono-lisa",toolbar_CMS:[["Undo","Redo"],["cmsplugins","cmswidget","-","ShowBlocks"],["Format","Styles"],["TextColor","BGColor","-","PasteText","PasteFromWord"],["Scayt"],["Maximize",""],"/",["Bold","Italic","Underline","Strike","-","Subscript","Superscript","-","RemoveFormat"],["JustifyLeft","JustifyCenter","JustifyRight","JustifyBlock"],["HorizontalRule"],["NumberedList","BulletedList"],["Outdent","Indent","-","Blockquote","-","Link","Unlink","-","Table"],["Source"]],toolbar_HTMLField:[["Undo","Redo"],["ShowBlocks"],["Format","Styles"],["TextColor","BGColor","-","PasteText","PasteFromWord"],["Scayt"],["Maximize",""],"/",["Bold","Italic","Underline","Strike","-","Subscript","Superscript","-","RemoveFormat"],["JustifyLeft","JustifyCenter","JustifyRight","JustifyBlock"],["HorizontalRule"],["Link","Unlink"],["NumberedList","BulletedList"],["Outdent","Indent","-","Blockqote","-","Link","Unlink","-","Table"],["Source"]],allowedContent:!0,toolbarCanCollapse:!1,removePlugins:"resize",extraPlugins:""},init:function(i,e,o){t("#"+i).length>0&&(this.container=t("#"+i),this.container.data("ckeditor-initialized",!0),this.options.toolbar=o.toolbar,this.options=t.extend(!1,{settings:o},this.options,e),this.options.extraPlugins=this.options.extraPlugins+=",cmsplugins,cmswidget,cmsdialog,cmsresize,widget",CMS.CKEditor=CMS.CKEditor||{},CMS.CKEditor.static_url=this.options.settings.static_url,document.createElement("cms-plugin"),CKEDITOR.dtd["cms-plugin"]=CKEDITOR.dtd.div,CKEDITOR.dtd.$inline["cms-plugin"]=1,CKEDITOR.dtd.$nonEditable["cms-plugin"]=1,CKEDITOR.dtd.$transparent["cms-plugin"]=1,CKEDITOR.dtd.body["cms-plugin"]=1,CKEDITOR.skin.addIcon("cmsplugins",o.static_url+"/ckeditor_plugins/cmsplugins/icons/cmsplugins.svg"),this.editor=CKEDITOR.replace(i,this.options),CKEDITOR.on("instanceReady",t.proxy(CMS.CKEditor,"setup")))},setup:function(){var i=this,e=window.parent||window;this._isAloneInModal()&&(i.editor.resize("100%",e.CMS.$(".cms-modal-frame").height()-63),this.editor.execCommand("maximize"),t(window).on("resize.ckeditor",function(){i._repositionDialog(CKEDITOR.dialog.getCurrent(),e)}).trigger("resize.ckeditor"),e.CMS.API.Helpers.addEventListener("modal-maximized modal-restored",function(){try{t(".cke_maximized").length||(i.editor.resize("100%",e.CMS.$(".cms-modal-frame").height()-63),setTimeout(function(){i._repositionDialog(CKEDITOR.dialog.getCurrent(),e)},0))}catch(t){}})),this.styles(),this._resizing()},styles:function(){t(".cke_button__maximize, .cke_button__source").parent().css("margin-right",0).parent().css("float","right")},_resizing:function(){t(document).on("pointerdown",".cms-ckeditor-resizer",function(i){i.preventDefault();var e=new CMS.$.Event("mousedown");t.extend(e,{screenX:i.originalEvent.screenX,screenY:i.originalEvent.screenY}),t(this).trigger(e)})},_isAloneInModal:function(){var t=this.container.closest("body");return t.is(".app-djangocms_text_ckeditor.model-text")||t.is(".djangocms_text_ckeditor-text")},_repositionDialog:function(t){if(t){var i=t.getSize(),e=t.getPosition(),o=CKEDITOR.document.getWindow(),n=o.getViewPaneSize(),s=n.width,r=n.height;e.x<0&&(t.move(0,e.y),e.x=0),e.y<0&&(t.move(e.x,0),e.y=0),e.y+i.height>r&&t.resize(i.width,r-e.y-80),e.x+i.width>s&&t.resize(s-e.x,i.height)}},_initAll:function(){var i=[];window._cmsCKEditors&&(window._cmsCKEditors.forEach(function(t){t[0].match(/__prefix__/)?i.push(t):CMS.CKEditor.init(t[0],t[1],t[2])}),t(".add-row a").on("click",function(){t(".CMS_CKEditor").each(function(e,o){var n=t(o);if(!n.data("ckeditor-initialized")){var s=n.attr("id");i.forEach(function(t){var i=t[0],e=new RegExp(i.replace("__prefix__","\\d+"));s.match(e)&&CMS.CKEditor.init(s,t[1],t[2])})}})}))}},setTimeout(function(){CMS.CKEditor._initAll()},0)}(CMS.$); -!function(t){window.CKEDITOR_BASEPATH=t("[data-ckeditor-basepath]").attr("data-ckeditor-basepath")||"/static/djangocms_text_ckeditor/ckeditor/",CMS.CKInlineEditor={options:{language:"en",skin:"moono-lisa",toolbar_CMS:[["Undo","Redo"],["cmsplugins","cmswidget","-","ShowBlocks"],["Format","Styles"],["TextColor","BGColor","-","PasteText","PasteFromWord"],["Scayt"],["Maximize",""],"/",["Bold","Italic","Underline","Strike","-","Subscript","Superscript","-","RemoveFormat"],["JustifyLeft","JustifyCenter","JustifyRight","JustifyBlock"],["HorizontalRule"],["NumberedList","BulletedList"],["Outdent","Indent","-","Blockquote","-","Link","Unlink","-","Table"],["Source"]],toolbar:"CMS",allowedContent:!0,toolbarCanCollapse:!1,removePlugins:"resize",extraPlugins:""},init:function(i,n,e,o,s){if(void 0!==i){this.container=i,this.container.data("ckeditor-initialized",!0),this.options=t.extend(!1,{settings:s},this.options,{}),CMS.CKEditor=CMS.CKEditor||{},CMS.CKEditor.static_url=this.options.settings.static_url,document.createElement("cms-plugin"),CKEDITOR.dtd["cms-plugin"]=CKEDITOR.dtd.div,CKEDITOR.dtd.$inline["cms-plugin"]=1,CKEDITOR.dtd.$nonEditable["cms-plugin"]=1,CKEDITOR.dtd.$transparent["cms-plugin"]=1,CKEDITOR.dtd.body["cms-plugin"]=1,CKEDITOR.skin.addIcon("cmsplugins",s.static_url+"/ckeditor_plugins/cmsplugins/icons/cmsplugins.svg"),CKEDITOR.disableAutoInline=!0;var r=CKEDITOR.inline(i[0],this.options);this.editor=r,n in CMS.CKInlineEditors&&CMS.CKInlineEditors[n].editor.destroy(!1),CMS.CKInlineEditors[n]={csrfmiddlewaretoken:o,url:e,wrapper:i,id:n,editor:r},i.on("dblclick",function(t){t.stopPropagation()}),i.on("pointerover",function(t){t.stopPropagation()}),i.on("blur",function(t){CMS.CKInlineEditor.save_data(n,r.getData())}),CKEDITOR.on("instanceReady",t.proxy(CMS.CKInlineEditor,"setup"))}},setup:function(){t("link[rel='stylesheet'][type='text/css'][href*='ckeditor'").each(function(t,i){CMS.CKInlineEditor.CSS.includes(i.href)||CMS.CKInlineEditor.CSS.push(i.href)});window.parent||window;this.styles()},save_data:function(i,n,e){t.post(CMS.CKInlineEditors[i].url,{csrfmiddlewaretoken:CMS.CKInlineEditors[i].csrfmiddlewaretoken,body:n,_save:"Save"},function(i){void 0!==e&&e();t(i).find("script").addClass("cms-ckeditor5-result")}).fail(function(t){console.log(t),alert("Error saving data"+t)})},styles:function(){t(".cke_button__maximize, .cke_button__source").parent().css("margin-right",0).parent().css("float","right")},_repositionDialog:function(t){if(t){var i=t.getSize(),n=t.getPosition(),e=CKEDITOR.document.getWindow(),o=e.getViewPaneSize(),s=o.width,r=o.height;n.x<0&&(t.move(0,n.y),n.x=0),n.y<0&&(t.move(n.x,0),n.y=0),n.y+i.height>r&&t.resize(i.width,r-n.y-80),n.x+i.width>s&&t.resize(s-n.x,i.height)}},_initAll:function(){CMS._plugins.forEach(function(i){if("TextPlugin"===i[1].plugin_type){var n=i[1].urls.edit_plugin,e=i[1].plugin_id,o=(i[1].plugin_id,t(".cms-plugin.cms-plugin-"+e));o.length>0&&t.get(n,{},function(i){var s=t(i),r=s.find('input[name="csrfmiddlewaretoken"]'),l=s.find('textarea[name="body"]');if(window.CKEDITOR_BASEPATH=s.find("[data-ckeditor-basepath]").attr("data-ckeditor-basepath"),r){o=o.removeClass("cms-plugin").removeClass("cms-plugin-"+e);var d=o.wrapAll("
").parent();d.addClass("cms-plugin").addClass("cms-plugin-"+e),d.html(l.val());var a={},c=s.find(".ck-settings")[0];for(var u in c.dataset)a[u]=c.dataset[u],"lang"!==u&&"plugins"!==u||(a[u]=JSON.parse(a[u]));CMS.CKInlineEditor.init(d,e,n,r.val(),a)}})}})},_resetInlineEditors:function(){CMS.CKInlineEditor.CSS.forEach(function(i){0===t("link[href='"+i+"']").length&&t("head").append(t(""))}),CMS.CKInlineEditor._initAll()}},setTimeout(function(){CMS.CKInlineEditors=CMS.CKInlineEditors||{},CMS.CKInlineEditor.CSS=[],CMS.CKInlineEditor._initAll()},0),t(window).on("cms-content-refresh",CMS.CKInlineEditor._resetInlineEditors)}(CMS.$); +!function(t){window.CKEDITOR_BASEPATH=t("[data-ckeditor-basepath]").attr("data-ckeditor-basepath"),CMS.CKEditor={options:{language:"en",skin:"moono-lisa",toolbar_CMS:[["Undo","Redo"],["cmsplugins","cmswidget","-","ShowBlocks"],["Format","Styles"],["TextColor","BGColor","-","PasteText","PasteFromWord"],["Scayt"],["Maximize",""],"/",["Bold","Italic","Underline","Strike","-","Subscript","Superscript","-","RemoveFormat"],["JustifyLeft","JustifyCenter","JustifyRight","JustifyBlock"],["HorizontalRule"],["NumberedList","BulletedList"],["Outdent","Indent","-","Blockquote","-","Link","Unlink","-","Table"],["Source"]],toolbar_HTMLField:[["Undo","Redo"],["ShowBlocks"],["Format","Styles"],["TextColor","BGColor","-","PasteText","PasteFromWord"],["Scayt"],["Maximize",""],"/",["Bold","Italic","Underline","Strike","-","Subscript","Superscript","-","RemoveFormat"],["JustifyLeft","JustifyCenter","JustifyRight","JustifyBlock"],["HorizontalRule"],["Link","Unlink"],["NumberedList","BulletedList"],["Outdent","Indent","-","Blockqote","-","Link","Unlink","-","Table"],["Source"]],allowedContent:!0,toolbarCanCollapse:!1,removePlugins:"resize",extraPlugins:""},static_url:"/static/djangocms-text-ckeditor/",ckeditor_basepath:"/static/djangocms-text-ckeditor/ckeditor/",CSS:[],editors:{},init:function(i,e,n,o){this.container=t(i),this.container.data("ckeditor-initialized",!0),this.options.toolbar=o.toolbar,this.options=t.extend(!1,{settings:o},this.options,n),this.options.extraPlugins=this.options.extraPlugins+=",cmsplugins,cmswidget,cmsdialog,cmsresize,widget",document.createElement("cms-plugin"),CKEDITOR.dtd["cms-plugin"]=CKEDITOR.dtd.div,CKEDITOR.dtd.$inline["cms-plugin"]=1,CKEDITOR.dtd.$nonEditable["cms-plugin"]=1,CKEDITOR.dtd.$transparent["cms-plugin"]=1,CKEDITOR.dtd.body["cms-plugin"]=1,CKEDITOR.skin.addIcon("cmsplugins",o.static_url+"/ckeditor_plugins/cmsplugins/icons/cmsplugins.svg"),"admin"===e?(this.editor=CKEDITOR.replace(i,this.options),CKEDITOR.on("instanceReady",t.proxy(CMS.CKEditor,"setupAdmin"))):(this.editor=CKEDITOR.inline(i,this.options),CKEDITOR.on("instanceReady",o.callback),CKEDITOR.on("instanceReady",t.proxy(CMS.CKEditor,"setupInline"))),CMS.CKEditor.editors[o.plugin_id]={editor:this.editor,options:n,settings:o,container:i,changed:!1}},initInlineEditors:function(){void 0!==CMS._plugins&&CMS._plugins.forEach(function(i){if("TextPlugin"===i[1].plugin_type){var e=i[1].urls.edit_plugin,n=i[1].plugin_id,o=t(".cms-plugin.cms-plugin-"+n);o.length>0&&t.get(e,{},function(i){var r=t(i),s=r.find('input[name="csrfmiddlewaretoken"]'),d=r.find('textarea[name="body"]');if(s){var a=o.wrapAll("
").parent(),l={},c={},u=r.find(".ck-settings")[0];o=o.removeClass("cms-plugin").removeClass("cms-plugin-"+n),a.addClass("cms-plugin").addClass("cms-plugin-"+n),a.html(d.val());for(var g in u.dataset)l[g]=u.dataset[g],"lang"===g||"plugins"===g?l[g]=JSON.parse(l[g]):"options"===g&&(c=JSON.parse(l[g]),delete l[g]);l.callback=function(){var i=t('style[data-cke="true"]');CMS.CKEditor.editors[n].editor.on("change",function(){CMS.CKEditor.editors[n].changed=!0,console.log(n,"changed")}),i.length>0&&(CMS.CKEditor5.CSS=i.clone()),a.on("dblclick",function(t){t.stopPropagation()}),a.on("pointerover",function(t){t.stopPropagation()}),a.on("blur",function(){CMS.CKEditor.save_data(n)})},l.csrfmiddlewaretoken=s.val(),l.url=e,void 0===c.title&&(c.title="Click to edit"),CMS.CKEditor.init(a[0],"inline",c,l)}})}})},save_data:function(i,e){var n=CMS.CKEditor.editors[i];if(n.changed){var o=n.editor.getData();console.log("Saving",i),CMS.CKEditor.editors[i].changed=!1,t.post(n.settings.url,{csrfmiddlewaretoken:n.settings.csrfmiddlewaretoken,body:o,_save:"Save"},function(t){void 0!==e&&e(n,t)}).fail(function(t){CMS.CKEditor.editors[i].changed=!0,console.error(t),alert("Error saving data"+t)})}},setupAdmin:function(){var i=this,e=window.parent||window;this._isAloneInModal()&&(i.editor.resize("100%",e.CMS.$(".cms-modal-frame").height()-63),this.editor.execCommand("maximize"),t(window).on("resize.ckeditor",function(){i._repositionDialog(CKEDITOR.dialog.getCurrent(),e)}).trigger("resize.ckeditor"),e.CMS.API.Helpers.addEventListener("modal-maximized modal-restored",function(){try{t(".cke_maximized").length||(i.editor.resize("100%",e.CMS.$(".cms-modal-frame").height()-63),setTimeout(function(){i._repositionDialog(CKEDITOR.dialog.getCurrent(),e)},0))}catch(t){}})),this.styles(),this._resizing()},setupInline:function(){t("link[rel='stylesheet'][type='text/css'][href*='ckeditor'").each(function(t,i){CMS.CKEditor.CSS.includes(i.href)||CMS.CKEditor.CSS.push(i.href)})},styles:function(){t(".cke_button__maximize, .cke_button__source").parent().css("margin-right",0).parent().css("float","right")},_resizing:function(){t(document).on("pointerdown",".cms-ckeditor-resizer",function(i){i.preventDefault();var e=new CMS.$.Event("mousedown");t.extend(e,{screenX:i.originalEvent.screenX,screenY:i.originalEvent.screenY}),t(this).trigger(e)})},_isAloneInModal:function(){return this.container.closest("body").is(".app-djangocms_text_ckeditor.model-text")},_repositionDialog:function(t){if(t){var i=t.getSize(),e=t.getPosition(),n=CKEDITOR.document.getWindow(),o=n.getViewPaneSize(),r=o.width,s=o.height;e.x<0&&(t.move(0,e.y),e.x=0),e.y<0&&(t.move(e.x,0),e.y=0),e.y+i.height>s&&t.resize(i.width,s-e.y-80),e.x+i.width>r&&t.resize(r-e.x,i.height)}},initAdminEditors:function(){window._cmsCKEditors=window._cmsCKEditors||[];var i=[];window._cmsCKEditors.forEach(function(t){t[0].match(/__prefix__/)?i.push(t):CMS.CKEditor.init(document.getElementById(t[0]),"admin",t[1],t[2])}),t(".add-row a").on("click",function(){t(".CMS_CKEditor").each(function(e,n){var o=t(n);if(!o.data("ckeditor-initialized")){var r=o.attr("id");i.forEach(function(t){var i=t[0].id,e=new RegExp(i.replace("__prefix__","\\d+"));r.match(e)&&CMS.CKEditor5.init(document.getElementById(r),t[1],t[2])})}})})},_initAll:function(){CMS.CKEditor.initInlineEditors(),CMS.CKEditor.initAdminEditors()},_resetInlineEditors:function(){CMS.CKEditor.CSS.forEach(function(i){0===t("link[href='"+i+"']").length&&t("head").append(t(""))}),CMS.CKEditor._initAll()}},setTimeout(function(){CMS.CKEditor._initAll()},0),t(window).on("cms-content-refresh",CMS.CKEditor._resetInlineEditors)}(CMS.$); /* Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license/ @@ -1384,7 +1383,8 @@ this.editor.widgets.destroyAll(!1,this);this._.initialSetData=!1;a=this.editor.d Q={37:1,38:1,39:1,40:1,8:1,46:1};Q[CKEDITOR.SHIFT+121]=1;var u=CKEDITOR.tools.createClass({$:function(a,b){this._.createCopyBin(a,b);this._.createListeners(b)},_:{createCopyBin:function(a){var b=a.document,c=CKEDITOR.env.edge&&16<=CKEDITOR.env.version,d=!a.blockless&&!CKEDITOR.env.ie||c?"div":"span",c=b.createElement(d),b=b.createElement(d);b.setAttributes({id:"cke_copybin","data-cke-temp":"1"});c.setStyles({position:"absolute",width:"1px",height:"1px",overflow:"hidden"});c.setStyle("ltr"==a.config.contentsLangDirection? "left":"right","-5000px");this.editor=a;this.copyBin=c;this.container=b},createListeners:function(a){a&&(a.beforeDestroy&&(this.beforeDestroy=a.beforeDestroy),a.afterDestroy&&(this.afterDestroy=a.afterDestroy))}},proto:{handle:function(a){var b=this.copyBin,c=this.editor,d=this.container,e=CKEDITOR.env.ie&&9>CKEDITOR.env.version,f=c.document.getDocumentElement().$,g=c.createRange(),h=this,k=CKEDITOR.env.mac&&CKEDITOR.env.webkit,n=k?100:0,m=window.requestAnimationFrame&&!k?requestAnimationFrame:setTimeout, p,r,q;b.setHtml('\x3cspan data-cke-copybin-start\x3d"1"\x3e​\x3c/span\x3e'+a+'\x3cspan data-cke-copybin-end\x3d"1"\x3e​\x3c/span\x3e');c.fire("lockSnapshot");d.append(b);c.editable().append(d);p=c.on("selectionChange",K,null,null,0);r=c.widgets.on("checkSelection",K,null,null,0);e&&(q=f.scrollTop);g.selectNodeContents(b);g.select();e&&(f.scrollTop=q);return new CKEDITOR.tools.promise(function(a){m(function(){h.beforeDestroy&&h.beforeDestroy();d.remove();p.removeListener();r.removeListener();c.fire("unlockSnapshot"); -h.afterDestroy&&h.afterDestroy();a()},n)})}},statics:{hasCopyBin:function(a){return!!u.getCopyBin(a)},getCopyBin:function(a){return a.document.getById("cke_copybin")}}});CKEDITOR.plugins.widget=h;h.repository=q;h.nestedEditable=t})();CKEDITOR.config.widget_keystrokeInsertLineBefore=CKEDITOR.SHIFT+CKEDITOR.ALT+13;CKEDITOR.config.widget_keystrokeInsertLineAfter=CKEDITOR.SHIFT+13;CKEDITOR.config.plugins='dialogui,dialog,about,a11yhelp,dialogadvtab,basicstyles,bidi,blockquote,notification,button,toolbar,clipboard,panelbutton,panel,floatpanel,colorbutton,colordialog,xml,ajax,templates,menu,contextmenu,copyformatting,div,resize,elementspath,enterkey,entities,popup,filetools,filebrowser,find,flash,floatingspace,listblock,richcombo,font,fakeobjects,forms,format,horizontalrule,htmlwriter,iframe,wysiwygarea,image,indent,indentblock,indentlist,smiley,justify,menubutton,language,link,list,liststyle,magicline,maximize,newpage,pagebreak,pastetext,pastetools,pastefromword,preview,print,removeformat,save,selectall,showblocks,showborders,sourcearea,specialchar,scayt,stylescombo,tab,table,tabletools,undo,wsc,lineutils,widgetselection,widget';CKEDITOR.config.skin='moono-lisa';(function() {var setIcons = function(icons, strip) {var path = CKEDITOR.getUrl( 'plugins/' + strip );icons = icons.split( ',' );for ( var i = 0; i < icons.length; i++ )CKEDITOR.skin.icons[ icons[ i ] ] = { path: path, offset: -icons[ ++i ], bgsize : icons[ ++i ] };};if (CKEDITOR.env.hidpi) setIcons('about,0,,bold,24,,italic,48,,strike,72,,subscript,96,,superscript,120,,underline,144,,bidiltr,168,,bidirtl,192,,blockquote,216,,copy-rtl,240,,copy,264,,cut-rtl,288,,cut,312,,paste-rtl,336,,paste,360,,bgcolor,384,,textcolor,408,,templates-rtl,432,,templates,456,,copyformatting,480,,creatediv,504,,find-rtl,528,,find,552,,replace,576,,button,600,,checkbox,624,,form,648,,hiddenfield,672,,imagebutton,696,,radio,720,,select-rtl,744,,select,768,,textarea-rtl,792,,textarea,816,,textfield-rtl,840,,textfield,864,,horizontalrule,888,,iframe,912,,image,936,,indent-rtl,960,,indent,984,,outdent-rtl,1008,,outdent,1032,,smiley,1056,,justifyblock,1080,,justifycenter,1104,,justifyleft,1128,,justifyright,1152,,language,1176,,anchor-rtl,1200,,anchor,1224,,link,1248,,unlink,1272,,bulletedlist-rtl,1296,,bulletedlist,1320,,numberedlist-rtl,1344,,numberedlist,1368,,maximize,1392,,newpage-rtl,1416,,newpage,1440,,pagebreak-rtl,1464,,pagebreak,1488,,pastetext-rtl,1512,,pastetext,1536,,pastefromword-rtl,1560,,pastefromword,1584,,preview-rtl,1608,,preview,1632,,print,1656,,removeformat,1680,,save,1704,,selectall,1728,,showblocks-rtl,1752,,showblocks,1776,,source-rtl,1800,,source,1824,,specialchar,1848,,scayt,1872,,table,1896,,redo-rtl,1920,,redo,1944,,undo-rtl,1968,,undo,1992,,spellchecker,2016,','icons_hidpi.png');else setIcons('about,0,auto,bold,24,auto,italic,48,auto,strike,72,auto,subscript,96,auto,superscript,120,auto,underline,144,auto,bidiltr,168,auto,bidirtl,192,auto,blockquote,216,auto,copy-rtl,240,auto,copy,264,auto,cut-rtl,288,auto,cut,312,auto,paste-rtl,336,auto,paste,360,auto,bgcolor,384,auto,textcolor,408,auto,templates-rtl,432,auto,templates,456,auto,copyformatting,480,auto,creatediv,504,auto,find-rtl,528,auto,find,552,auto,replace,576,auto,button,600,auto,checkbox,624,auto,form,648,auto,hiddenfield,672,auto,imagebutton,696,auto,radio,720,auto,select-rtl,744,auto,select,768,auto,textarea-rtl,792,auto,textarea,816,auto,textfield-rtl,840,auto,textfield,864,auto,horizontalrule,888,auto,iframe,912,auto,image,936,auto,indent-rtl,960,auto,indent,984,auto,outdent-rtl,1008,auto,outdent,1032,auto,smiley,1056,auto,justifyblock,1080,auto,justifycenter,1104,auto,justifyleft,1128,auto,justifyright,1152,auto,language,1176,auto,anchor-rtl,1200,auto,anchor,1224,auto,link,1248,auto,unlink,1272,auto,bulletedlist-rtl,1296,auto,bulletedlist,1320,auto,numberedlist-rtl,1344,auto,numberedlist,1368,auto,maximize,1392,auto,newpage-rtl,1416,auto,newpage,1440,auto,pagebreak-rtl,1464,auto,pagebreak,1488,auto,pastetext-rtl,1512,auto,pastetext,1536,auto,pastefromword-rtl,1560,auto,pastefromword,1584,auto,preview-rtl,1608,auto,preview,1632,auto,print,1656,auto,removeformat,1680,auto,save,1704,auto,selectall,1728,auto,showblocks-rtl,1752,auto,showblocks,1776,auto,source-rtl,1800,auto,source,1824,auto,specialchar,1848,auto,scayt,1872,auto,table,1896,auto,redo-rtl,1920,auto,redo,1944,auto,undo-rtl,1968,auto,undo,1992,auto,spellchecker,2016,auto','icons.png');})();CKEDITOR.lang.languages={"af":1,"sq":1,"ar":1,"az":1,"eu":1,"bn":1,"bs":1,"bg":1,"ca":1,"zh-cn":1,"zh":1,"hr":1,"cs":1,"da":1,"nl":1,"en":1,"en-au":1,"en-ca":1,"en-gb":1,"eo":1,"et":1,"fo":1,"fi":1,"fr":1,"fr-ca":1,"gl":1,"ka":1,"de":1,"de-ch":1,"el":1,"gu":1,"he":1,"hi":1,"hu":1,"is":1,"id":1,"it":1,"ja":1,"km":1,"ko":1,"ku":1,"lv":1,"lt":1,"mk":1,"ms":1,"mn":1,"no":1,"nb":1,"oc":1,"fa":1,"pl":1,"pt-br":1,"pt":1,"ro":1,"ru":1,"sr":1,"sr-latn":1,"si":1,"sk":1,"sl":1,"es":1,"sv":1,"tt":1,"th":1,"tr":1,"ug":1,"uk":1,"vi":1,"cy":1};}()); +h.afterDestroy&&h.afterDestroy();a()},n)})}},statics:{hasCopyBin:function(a){return!!u.getCopyBin(a)},getCopyBin:function(a){return a.document.getById("cke_copybin")}}});CKEDITOR.plugins.widget=h;h.repository=q;h.nestedEditable=t})();CKEDITOR.config.widget_keystrokeInsertLineBefore=CKEDITOR.SHIFT+CKEDITOR.ALT+13;CKEDITOR.config.widget_keystrokeInsertLineAfter=CKEDITOR.SHIFT+13;CKEDITOR.config.plugins='dialogui,dialog,about,a11yhelp,dialogadvtab,basicstyles,bidi,blockquote,notification,button,toolbar,clipboard,panelbutton,panel,floatpanel,colorbutton,colordialog,xml,ajax,templates,menu,contextmenu,copyformatting,div,resize,elementspath,enterkey,entities,popup,filetools,filebrowser,find,floatingspace,listblock,richcombo,font,fakeobjects,forms,format,horizontalrule,htmlwriter,iframe,wysiwygarea,image,indent,indentblock,indentlist,smiley,justify,menubutton,language,link,list,liststyle,magicline,maximize,newpage,pagebreak,pastetext,pastetools,pastefromword,preview,print,removeformat,save,selectall,showblocks,showborders,sourcearea,specialchar,scayt,stylescombo,tab,table,tabletools,undo,wsc,lineutils,widgetselection,widget';CKEDITOR.config.skin='moono-lisa';(function() {var setIcons = function(icons, strip) {var path = CKEDITOR.getUrl( 'plugins/' + strip );icons = icons.split( ',' );for ( var i = 0; i < icons.length; i++ )CKEDITOR.skin.icons[ icons[ i ] ] = { path: path, offset: -icons[ ++i ], bgsize : icons[ ++i ] };};if (CKEDITOR.env.hidpi) setIcons('about,0,,bold,24,,italic,48,,strike,72,,subscript,96,,superscript,120,,underline,144,,bidiltr,168,,bidirtl,192,,blockquote,216,,copy-rtl,240,,copy,264,,cut-rtl,288,,cut,312,,paste-rtl,336,,paste,360,,bgcolor,384,,textcolor,408,,templates-rtl,432,,templates,456,,copyformatting,480,,creatediv,504,,find-rtl,528,,find,552,,replace,576,,button,600,,checkbox,624,,form,648,,hiddenfield,672,,imagebutton,696,,radio,720,,select-rtl,744,,select,768,,textarea-rtl,792,,textarea,816,,textfield-rtl,840,,textfield,864,,horizontalrule,888,,iframe,912,,image,936,,indent-rtl,960,,indent,984,,outdent-rtl,1008,,outdent,1032,,smiley,1056,,justifyblock,1080,,justifycenter,1104,,justifyleft,1128,,justifyright,1152,,language,1176,,anchor-rtl,1200,,anchor,1224,,link,1248,,unlink,1272,,bulletedlist-rtl,1296,,bulletedlist,1320,,numberedlist-rtl,1344,,numberedlist,1368,,maximize,1392,,newpage-rtl,1416,,newpage,1440,,pagebreak-rtl,1464,,pagebreak,1488,,pastetext-rtl,1512,,pastetext,1536,,pastefromword-rtl,1560,,pastefromword,1584,,preview-rtl,1608,,preview,1632,,print,1656,,removeformat,1680,,save,1704,,selectall,1728,,showblocks-rtl,1752,,showblocks,1776,,source-rtl,1800,,source,1824,,specialchar,1848,,scayt,1872,,table,1896,,redo-rtl,1920,,redo,1944,,undo-rtl,1968,,undo,1992,,spellchecker,2016,','icons_hidpi.png');else setIcons('about,0,auto,bold,24,auto,italic,48,auto,strike,72,auto,subscript,96,auto,superscript,120,auto,underline,144,auto,bidiltr,168,auto,bidirtl,192,auto,blockquote,216,auto,copy-rtl,240,auto,copy,264,auto,cut-rtl,288,auto,cut,312,auto,paste-rtl,336,auto,paste,360,auto,bgcolor,384,auto,textcolor,408,auto,templates-rtl,432,auto,templates,456,auto,copyformatting,480,auto,creatediv,504,auto,find-rtl,528,auto,find,552,auto,replace,576,auto,button,600,auto,checkbox,624,auto,form,648,auto,hiddenfield,672,auto,imagebutton,696,auto,radio,720,auto,select-rtl,744,auto,select,768,auto,textarea-rtl,792,auto,textarea,816,auto,textfield-rtl,840,auto,textfield,864,auto,horizontalrule,888,auto,iframe,912,auto,image,936,auto,indent-rtl,960,auto,indent,984,auto,outdent-rtl,1008,auto,outdent,1032,auto,smiley,1056,auto,justifyblock,1080,auto,justifycenter,1104,auto,justifyleft,1128,auto,justifyright,1152,auto,language,1176,auto,anchor-rtl,1200,auto,anchor,1224,auto,link,1248,auto,unlink,1272,auto,bulletedlist-rtl,1296,auto,bulletedlist,1320,auto,numberedlist-rtl,1344,auto,numberedlist,1368,auto,maximize,1392,auto,newpage-rtl,1416,auto,newpage,1440,auto,pagebreak-rtl,1464,auto,pagebreak,1488,auto,pastetext-rtl,1512,auto,pastetext,1536,auto,pastefromword-rtl,1560,auto,pastefromword,1584,auto,preview-rtl,1608,auto,preview,1632,auto,print,1656,auto,removeformat,1680,auto,save,1704,auto,selectall,1728,auto,showblocks-rtl,1752,auto,showblocks,1776,auto,source-rtl,1800,auto,source,1824,auto,specialchar,1848,auto,scayt,1872,auto,table,1896,auto,redo-rtl,1920,auto,redo,1944,auto,undo-rtl,1968,auto,undo,1992,auto,spellchecker,2016,auto','icons.png');})();CKEDITOR.lang.languages={"af":1,"sq":1,"ar":1,"az":1,"eu":1,"bn":1,"bs":1,"bg":1,"ca":1,"zh-cn":1,"zh":1,"hr":1,"cs":1,"da":1,"nl":1,"en":1,"en-au":1,"en-ca":1,"en-gb":1,"eo":1,"et":1,"fo":1,"fi":1,"fr":1,"fr-ca":1,"gl":1,"ka":1,"de":1,"de-ch":1,"el":1,"gu":1,"he":1,"hi":1,"hu":1,"is":1,"id":1,"it":1,"ja":1,"km":1,"ko":1,"ku":1,"lv":1,"lt":1,"mk":1,"ms":1,"mn":1,"no":1,"nb":1,"oc":1,"fa":1,"pl":1,"pt-br":1,"pt":1,"ro":1,"ru":1,"sr":1,"sr-latn":1,"si":1,"sk":1,"sl":1,"es":1,"sv":1,"tt":1,"th":1,"tr":1,"ug":1,"uk":1,"vi":1,"cy":1};}()); + !function(e){function n(e){var n=e.widgets.focused;if(n&&"cmswidget"===n.name)return n;if((n=e.widgets.selected)&&n.length){var i=n.findIndex(function(e){return"cmswidget"===e.name});if(-1!==i)return n[i]}return null}function i(e){return!!e.inline&&!CMS.$(e.wrapper.$).hasClass("cke_widget_wrapper_force_block")}if(!(CKEDITOR&&CKEDITOR.plugins&&CKEDITOR.plugins.registered&&CKEDITOR.plugins.registered.cmswidget)){var t=function(e){var t=[];return function(r){var c=e.getCommand("justify"+r);c&&(t.push(function(){c.refresh(e,e.elementPath())}),c.on("exec",function(r){var c=n(e);if(c){if(!i(c)){for(var l=t.length;l--;)t[l]();r.cancel()}}}),c.on("refresh",function(t){var r=n(e);if(r){i(r)||(this.setState(CKEDITOR.TRISTATE_DISABLED),t.cancel())}}))}};CKEDITOR.plugins.add("cmswidget",{requires:"widget",onLoad:function(){CKEDITOR.addCss(".cke_widget_wrapper_force_block{display:block!important;}.cke_widget_block>.cke_widget_element{display:block!important;}span.cms-ckeditor-plugin-label{display: inline-block !important;padding-left: 8px;padding-right: 8px;}.cms-ckeditor-plugin-label{background: black;color: white;text-align: center;border-radius: 3px;height: 24px;line-height: 24px;font-size: 14px !important;}")},init:function(e){this.addWidgetDefinition(e)},afterInit:function(e){["left","right","center","block"].forEach(t(e))},addWidgetDefinition:function(n){n.widgets.add("cmswidget",{button:"CMS Plugin",template:'',allowedContent:"cms-plugin",disallowedContent:"cms-plugin{float}",requiredContent:"cms-plugin",upcast:function(e){return"cms-plugin"===e.name},init:function(){var n=e(this.element.$).children(),i=n.css("display");"inline"!==i&&"inline-block"!==i&&this.wrapper.addClass("cke_widget_wrapper_force_block")}})}})}}(CMS.$); !function(t){if(!(CKEDITOR&&CKEDITOR.plugins&&CKEDITOR.plugins.registered&&CKEDITOR.plugins.registered.cmsdialog)){/** * Modified version of the dialog plugin to support touch events. @@ -1401,6 +1401,6 @@ e.push('"'),e.push('align="',CKEDITOR.tools.htmlEncode(o&&o.align||("ltr"==t.get * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.add("cmsresize",{init:function(e){function i(i){var t=i.originalEvent.screenX-s.x,r=i.originalEvent.screenY-s.y,a=d.width,c=d.height,l=a+t*("rtl"==o?-1:1),z=c+r;m&&(a=Math.max(n.resize_minWidth,Math.min(l,n.resize_maxWidth))),h&&(c=Math.max(n.resize_minHeight,Math.min(z,n.resize_maxHeight))),e.resize(m?a:null,c)}function t(){CMS.$(CKEDITOR.document.$).off("pointermove",i),CMS.$(CKEDITOR.document.$).off("pointerup",t),e.document&&(CMS.$(e.document.$).off("pointermove",i),CMS.$(e.document.$).off("pointerup",t))}var n=e.config,r=e.ui.spaceId("resizer"),o=e.element?e.element.getDirection(1):"ltr";if(!n.resize_dir&&(n.resize_dir="vertical"),void 0===n.resize_maxWidth&&(n.resize_maxWidth=3e3),void 0===n.resize_maxHeight&&(n.resize_maxHeight=3e3),void 0===n.resize_minWidth&&(n.resize_minWidth=750),void 0===n.resize_minHeight&&(n.resize_minHeight=250),!1!==n.resize_enabled){var s,d,a=null,m=("both"==n.resize_dir||"horizontal"==n.resize_dir)&&n.resize_minWidth!=n.resize_maxWidth,h=("both"==n.resize_dir||"vertical"==n.resize_dir)&&n.resize_minHeight!=n.resize_maxHeight,c=CKEDITOR.tools.addFunction(function(r){a||(a=e.getResizable()),d={width:a.$.offsetWidth||0,height:a.$.offsetHeight||0},s={x:r.screenX,y:r.screenY},n.resize_minWidth>d.width&&(n.resize_minWidth=d.width),n.resize_minHeight>d.height&&(n.resize_minHeight=d.height),CMS.$(CKEDITOR.document.$).on("pointermove",i),CMS.$(CKEDITOR.document.$).on("pointerup",t),e.document&&(CMS.$(e.document.$).on("pointermove",i),CMS.$(e.document.$).on("pointerup",t)),r.preventDefault&&r.preventDefault()});CMS.$(CKEDITOR.document.$).find("html").attr("data-touch-action","none"),e.on("destroy",function(){CKEDITOR.tools.removeFunction(c)}),e.on("uiSpace",function(i){if("bottom"==i.data.space){var t="";m&&!h&&(t=" cke_resizer_horizontal"),!m&&h&&(t=" cke_resizer_vertical");var n=''+("ltr"==o?"◢":"◣")+"";"ltr"==o&&"ltr"==t?i.data.html+=n:i.data.html=n+i.data.html}},e,null,100),e.on("maximize",function(i){e.ui.space("resizer")[i.data==CKEDITOR.TRISTATE_ON?"hide":"show"]()})}}})}(CMS.$); -!function(e){function t(e){var t=(e.match(/<\s*([^>\s]+)[\s\S]*?>/)||[0,!1]).splice(1),i=t.some(function(e){return e&&CKEDITOR.dtd.$block[e]}),n="span";return i&&(n="div"),n}function i(t,i){t.each(function(t,n){var s,l=e(n);s=e("<"+i+">"),e.each(n.attributes,function(e,t){s.attr(t.nodeName,t.nodeValue)}),s.html(l.html()),l.replaceWith(s)})}CKEDITOR&&CKEDITOR.plugins&&CKEDITOR.plugins.registered&&CKEDITOR.plugins.registered.cmsplugins||CKEDITOR.plugins.add("cmsplugins",{icons:"cmsplugins",init:function(t){var i=this;if(this.options=CMS.CKEditor.options.settings,this.editor=t,this.child_plugins=[],this.setupCancelCleanupCallback(this.options),void 0===this.options||void 0===this.options.plugins)return!1;this.setupDialog(),this.editor.ui.add("cmsplugins",CKEDITOR.UI_PANELBUTTON,{toolbar:"cms,0",label:this.options.lang.toolbar,title:this.options.lang.toolbar,className:"cke_panelbutton__cmsplugins",modes:{wysiwyg:1},editorFocus:0,panel:{css:[CKEDITOR.skin.getPath("editor")].concat(i.editor.config.contentsCss),attributes:{role:"cmsplugins","aria-label":this.options.lang.aria}},onBlock:function(t,n){n.element.setHtml(i.editor.plugins.cmsplugins.setupDropdown()),e(n.element.$).find(".cke_panel_listItem a").bind("click",function(n){n.preventDefault(),i.addPlugin(e(this),t)})}}),this.editor.contextMenu&&this.setupContextMenu(),this.editor.addCommand("cmspluginsEdit",{exec:function(){var e=i.getElementFromSelection(),t=i.getPluginWidget(e);t&&i.editPlugin(t)}});var n=function(t){var n;if("touchend"===t.type||"click"===t.type){var s=e(t.currentTarget).closest("cms-plugin")[0];n=new CKEDITOR.dom.element(s).getParent(),t.data=t.data||{},i.editor.getSelection().fake(n)}i.editor.execCommand("cmspluginsEdit")};this.editor.on("doubleclick",n),this.editor.on("instanceReady",function(){CMS.$("cms-plugin",CMS.$("iframe.cke_wysiwyg_frame")[0].contentWindow.document.documentElement).on("click touchend",n)}),this.setupDataProcessor()},getElementFromSelection:function(){var e=this.editor.getSelection();return e.getSelectedElement()||e.getCommonAncestor().getAscendant("cms-plugin",!0)},getPluginWidget:function(e){return e?e.getAscendant("cms-plugin",!0)||e.findOne("cms-plugin"):null},setupDialog:function(){var t=this,i=function(){return{title:"",minWidth:200,minHeight:200,contents:[{elements:[{type:"html",html:'').appendTo(i.getParent())}return n.unselectable(),o.unselectable(),{element:e,parts:{dialog:e.getChild(0),title:n,close:o,tabs:i.getChild(2),contents:i.getChild([3,0,0,0]),footer:i.getChild([3,0,1,0])}}}function l(t,e,i){this.element=e,this.focusIndex=i,this.tabIndex=0,this.isFocusable=function(){return!e.getAttribute("disabled")&&e.isVisible()},this.focus=function(){t._.currentFocusIndex=this.focusIndex,this.element.focus()},e.on("keydown",function(t){t.data.getKeystroke()in{32:1,13:1}&&this.fire("click")}),e.on("focus",function(){this.fire("mouseover")}),e.on("blur",function(){this.fire("mouseout")})}function d(t){function e(){t.layout()}var i=CKEDITOR.document.getWindow();i.on("resize",e),t.on("hide",function(){i.removeListener("resize",e)})}function u(t,e){this.dialog=t;for(var i,n=e.contents,o=0;i=n[o];o++)n[o]=i&&new h(t,i);CKEDITOR.tools.extend(this,e)}function h(t,e){this._={dialog:t},CKEDITOR.tools.extend(this,e)}function c(t){function e(e){var i,l,d=t.getSize(),u=t.parts.dialog.getParent().getClientSize(),h=e.originalEvent.screenX,c=e.originalEvent.screenY,g=h-n.x,f=c-n.y;n={x:h,y:c},o.x+=g,o.y+=f,i=o.x+r[3]u.width-d.width-a?u.width-d.width+("rtl"==s.lang.dir?0:r[1]):o.x,l=o.y+r[0]u.height-d.height-a?u.height-d.height+r[2]:o.y,i=Math.floor(i),l=Math.floor(l),t.move(i,l,1),e.preventDefault()}function i(){if(CMS.$(CKEDITOR.document.$).off("pointermove",e),CMS.$(CKEDITOR.document.$).off("pointerup",i),CKEDITOR.env.ie6Compat){var t=R.getChild(0).getFrameDocument();t.removeListener("mousemove",e),t.removeListener("mouseup",i)}}var n=null,o=null,s=t.getParentEditor(),a=s.config.dialog_magnetDistance,r=CKEDITOR.skin.margins||[0,0,0,0];void 0===a&&(a=20),CMS.$(t.parts.title.$).on("pointerdown",function(s){if(!t._.moved){var a=t._.element;a.getFirst().setStyle("position","absolute"),a.removeStyle("display"),t._.moved=!0,t.layout()}if(n={x:s.originalEvent.screenX,y:s.originalEvent.screenY},CMS.$(CKEDITOR.document.$).on("pointermove",e),CMS.$(CKEDITOR.document.$).on("pointerup",i),o=t.getPosition(),CKEDITOR.env.ie6Compat){var r=R.getChild(0).getFrameDocument();r.on("mousemove",e),r.on("mouseup",i)}s.preventDefault()})}function g(t){function e(e){var i="rtl"==h.lang.dir,u=(e.originalEvent.screenX-l.x)*(i?-1:1),c=e.originalEvent.screenY-l.y,g=d.width,_=d.height,p=g+u*(t._.moved?1:2),I=_+c*(t._.moved?1:2),m=t._.element.getFirst(),v=i&&parseInt(m.getComputedStyle("right"),10),C=t.getPosition();if(C.x=C.x||0,C.y=C.y||0,C.y+I>r.height&&(I=r.height-C.y),(i?v:C.x)+p>r.width&&(p=r.width-(i?v:C.x)),I=Math.floor(I),p=Math.floor(p),o!=CKEDITOR.DIALOG_RESIZE_WIDTH&&o!=CKEDITOR.DIALOG_RESIZE_BOTH||(g=Math.max(n.minWidth||0,p-s)),o!=CKEDITOR.DIALOG_RESIZE_HEIGHT&&o!=CKEDITOR.DIALOG_RESIZE_BOTH||(_=Math.max(n.minHeight||0,I-a)),t.resize(g,_),t._.moved){var E=t._.position.x,D=t._.position.y;f(t,E,D)}t._.moved||t.layout(),e.preventDefault()}function i(){if(CMS.$(CKEDITOR.document.$).off("pointermove",e),CMS.$(CKEDITOR.document.$).off("pointerup",i),u&&(u.remove(),u=null),CKEDITOR.env.ie6Compat){var t=R.getChild(0).getFrameDocument();t.removeListener("mouseup",i),t.removeListener("mousemove",e)}}var n=t.definition,o=n.resizable;if(o!=CKEDITOR.DIALOG_RESIZE_NONE){var s,a,r,l,d,u,h=t.getParentEditor(),c=CKEDITOR.tools.addFunction(function(n){function o(t){return t.isVisible()}d=t.getSize();var h=t.parts.contents,c=h.$.getElementsByTagName("iframe").length,g=!(CKEDITOR.env.gecko||CKEDITOR.env.ie&&CKEDITOR.env.quirks);if(c&&(CMS.$(".cke_dialog_resize_cover").remove(),u=CKEDITOR.dom.element.createFromHtml('
'),h.append(u)),a=d.height-t.parts.contents.getFirst(o).getSize("height",g),s=d.width-t.parts.contents.getFirst(o).getSize("width",1),l={x:n.screenX,y:n.screenY},r=CKEDITOR.document.getWindow().getViewPaneSize(),CMS.$(CKEDITOR.document.$).on("pointermove",e),CMS.$(CKEDITOR.document.$).on("pointerup",i),CKEDITOR.env.ie6Compat){var f=R.getChild(0).getFrameDocument();f.on("mousemove",e),f.on("mouseup",i)}n.preventDefault&&n.preventDefault()});t.on("load",function(){var e="";o==CKEDITOR.DIALOG_RESIZE_WIDTH?e=" cke_resizer_horizontal":o==CKEDITOR.DIALOG_RESIZE_HEIGHT&&(e=" cke_resizer_vertical");var i=CKEDITOR.dom.element.createFromHtml('
'+("ltr"==h.lang.dir?"◢":"◣")+"
");t.parts.footer.append(i,1)}),h.on("destroy",function(){CKEDITOR.tools.removeFunction(c)})}}function f(t,e,i){var n=t.parts.dialog.getParent().getClientSize(),o=t.getSize(),s=t._.viewportRatio,a={width:Math.max(n.width-o.width,0),height:Math.max(n.height-o.height,0)};s.width=a.width?e/a.width:s.width,s.height=a.height?i/a.height:s.height,t._.viewportRatio=s}function _(t){t.data.preventDefault(1)}function p(t){var e=t.config,i=CKEDITOR.skinName||t.config.skin,n=e.dialog_backgroundCoverColor||("moono-lisa"==i?"black":"white"),o=e.dialog_backgroundCoverOpacity,s=e.baseFloatZIndex,a=CKEDITOR.tools.genKey(n,o,s),r=L[a];if(CKEDITOR.document.getBody().addClass("cke_dialog_open"),CMS.$(".cke_dialog_background_cover:not(.cms-ckeditor-dialog-background-cover)").remove(),r)r.show();else{var l=['
'];if(CKEDITOR.env.ie6Compat){var d="";l.push('')}l.push("
"),r=CKEDITOR.dom.element.createFromHtml(l.join("")),r.setOpacity(void 0!==o?o:.5),r.on("keydown",_),r.on("keypress",_),r.on("keyup",_),r.appendTo(CKEDITOR.document.getBody()),L[a]=r}t.focusManager.add(r),R=r,CKEDITOR.env.mac&&CKEDITOR.env.webkit||r.focus()}function I(t){CMS.$(".cke_dialog_background_cover:not(.cms-ckeditor-dialog-background-cover)").remove(),CKEDITOR.document.getBody().removeClass("cke_dialog_open"),R&&(t.focusManager.remove(R),R.hide())}function m(){for(var t in L)L[t].remove();L={}}function v(t){var e=t.data.$.ctrlKey||t.data.$.metaKey,i=t.data.$.altKey,n=t.data.$.shiftKey,o=String.fromCharCode(t.data.$.keyCode),s=M[(e?"CTRL+":"")+(i?"ALT+":"")+(n?"SHIFT+":"")+o];s&&s.length&&(s=s[s.length-1],s.keydown&&s.keydown.call(s.uiElement,s.dialog,s.key),t.data.preventDefault())}function C(t){var e=t.data.$.ctrlKey||t.data.$.metaKey,i=t.data.$.altKey,n=t.data.$.shiftKey,o=String.fromCharCode(t.data.$.keyCode),s=M[(e?"CTRL+":"")+(i?"ALT+":"")+(n?"SHIFT+":"")+o];s&&s.length&&(s=s[s.length-1],s.keyup&&(s.keyup.call(s.uiElement,s.dialog,s.key),t.data.preventDefault()))}function E(t,e,i,n,o){(M[i]||(M[i]=[])).push({uiElement:t,dialog:e,key:i,keyup:o||t.accessKeyUp,keydown:n||t.accessKeyDown})}function D(t){for(var e in M){for(var i=M[e],n=i.length-1;n>=0;n--)i[n].dialog!=t&&i[n].uiElement!=t||i.splice(n,1);0===i.length&&delete M[e]}}function T(t,e){t._.accessKeyMap[e]&&t.selectPage(t._.accessKeyMap[e])}function b(){}var O,R,K=CKEDITOR.tools.cssLength,y=!CKEDITOR.env.ie||CKEDITOR.env.edge,k='';CKEDITOR.dialog=function(e,o){function l(){var t=k._.focusList;t.sort(function(t,e){return t.tabIndex!=e.tabIndex?e.tabIndex-t.tabIndex:t.focusIndex-e.focusIndex});for(var e=t.length,i=0;i1;do{if(n+=t,o&&!k._.tabBarMode&&(n==e.length||-1==n))return k._.tabBarMode=!0,k._.tabs[k._.currentTabId][0].focus(),void(k._.currentFocusIndex=-1);if((n=(n+e.length)%e.length)==i)break}while(t&&!e[n].isFocusable());e[n].focus(),"text"==e[n].type&&e[n].select()}}function h(o){if(k==CKEDITOR.dialog._.currentTop){var s,a=o.data.getKeystroke(),r="rtl"==e.lang.dir,l=[37,38,39,40];if(p=I=0,9==a||a==CKEDITOR.SHIFT+9){d(a==CKEDITOR.SHIFT+9?-1:1),p=1}else if(a==CKEDITOR.ALT+121&&!k._.tabBarMode&&k.getPageCount()>1)t(k),p=1;else if(-1!=CKEDITOR.tools.indexOf(l,a)&&k._.tabBarMode){var u=[r?39:37,38],h=-1!=CKEDITOR.tools.indexOf(u,a)?i.call(k):n.call(k);k.selectPage(h),k._.tabs[h][0].focus(),p=1}else if(13!=a&&32!=a||!k._.tabBarMode)if(13==a){var c=o.data.getTarget();c.is("a","button","select","textarea")||c.is("input")&&"button"==c.$.type||(s=this.getButton("ok"),s&&CKEDITOR.tools.setTimeout(s.click,0,s),p=1),I=1}else{if(27!=a)return;s=this.getButton("cancel"),s?CKEDITOR.tools.setTimeout(s.click,0,s):!1!==this.fire("cancel",{hide:!0}).hide&&this.hide(),I=1}else this.selectPage(this._.currentTabId),this._.tabBarMode=!1,this._.currentFocusIndex=-1,d(1),p=1;f(o)}}function f(t){p?t.data.preventDefault(1):I&&t.data.stopPropagation()}var _,p,I,m=CKEDITOR.dialog._.dialogDefinitions[o],v=CKEDITOR.tools.clone(O),C=e.config.dialog_buttonsOrder||"OS",E=e.lang.dir,D={};("OS"==C&&CKEDITOR.env.mac||"rtl"==C&&"ltr"==E||"ltr"==C&&"rtl"==E)&&v.buttons.reverse(),m=CKEDITOR.tools.extend(m(e),v),m=CKEDITOR.tools.clone(m),m=new u(this,m);var T=r(e);this._={editor:e,element:T.element,name:o,model:null,contentSize:{width:0,height:0},size:{width:0,height:0},contents:{},buttons:{},accessKeyMap:{},viewportRatio:{width:.5,height:.5},tabs:{},tabIdList:[],currentTabId:null,currentTabIndex:null,pageCount:0,lastTab:null,tabBarMode:!1,focusList:[],currentFocusIndex:0,hasFocus:!1},this.parts=T.parts,CKEDITOR.tools.setTimeout(function(){e.fire("ariaWidget",this.parts.contents)},0,this);var b={top:0,visibility:"hidden"};if(CKEDITOR.env.ie6Compat&&(b.position="absolute"),b["rtl"==E?"right":"left"]=0,this.parts.dialog.setStyles(b),CKEDITOR.event.call(this),this.definition=m=CKEDITOR.fire("dialogDefinition",{name:o,definition:m,dialog:this},e).definition,!("removeDialogTabs"in e._)&&e.config.removeDialogTabs){var R=e.config.removeDialogTabs.split(";");for(_=0;_1;if(e.config.dialog_startupFocusTab&&t)k._.tabBarMode=!0,k._.tabs[k._.currentTabId][0].focus(),k._.currentFocusIndex=-1;else if(!this._.hasFocus)if(this._.currentFocusIndex=t?-1:this._.focusList.length-1,m.onFocus){var i=m.onFocus.call(this);i&&i.focus()}else d(1)},this,null,4294967295),CKEDITOR.env.ie6Compat&&this.on("load",function(){var t=this.getElement(),e=t.getFirst();e.remove(),e.appendTo(t)},this),c(this),g(this),new CKEDITOR.dom.text(m.title,CKEDITOR.document).appendTo(this.parts.title),_=0;_0?e:0)+"px"};d[o?"right":"left"]=(t>0?t:0)+"px",n.setStyles(d),i&&(this._.moved=1)},getPosition:function(){return CKEDITOR.tools.extend({},this._.position)},show:function(){var t=this._.element,e=this.definition,i=CKEDITOR.document.getBody(),n=this._.editor.config.baseFloatZIndex;if(t.getParent()&&t.getParent().equals(i)?t.setStyle("display",y?"flex":"block"):t.appendTo(i),this.resize(this._.contentSize&&this._.contentSize.width||e.width||e.minWidth,this._.contentSize&&this._.contentSize.height||e.height||e.minHeight),this.reset(),null===this._.currentTabId&&this.selectPage(this.definition.contents[0].id),null===CKEDITOR.dialog._.currentZIndex&&(CKEDITOR.dialog._.currentZIndex=n),this._.element.getFirst().setStyle("z-index",CKEDITOR.dialog._.currentZIndex+=10),this.getElement().setStyle("z-index",CKEDITOR.dialog._.currentZIndex),null===CKEDITOR.dialog._.currentTop)CKEDITOR.dialog._.currentTop=this,this._.parentDialog=null,p(this._.editor);else{this._.parentDialog=CKEDITOR.dialog._.currentTop;var o=this._.parentDialog.getElement().getFirst();o.$.style.zIndex-=Math.floor(n/2),this._.parentDialog.getElement().setStyle("z-index",o.$.style.zIndex),CKEDITOR.dialog._.currentTop=this}t.on("keydown",v),t.on("keyup",C),this._.hasFocus=!1;for(var s in e.contents)if(e.contents[s]){var a=e.contents[s],r=this._.tabs[a.id],l=a.requiredContent,u=0;if(r){for(var h in this._.contents[a.id]){var c=this._.contents[a.id][h];"hbox"!=c.type&&"vbox"!=c.type&&c.getInputElement()&&(c.requiredContent&&!this._.editor.activeFilter.check(c.requiredContent)?c.disable():(c.enable(),u++))}!u||l&&!this._.editor.activeFilter.check(l)?r[0].addClass("cke_dialog_tab_disabled"):r[0].removeClass("cke_dialog_tab_disabled")}}CKEDITOR.tools.setTimeout(function(){this.layout(),d(this),this.parts.dialog.setStyle("visibility",""),this.fireOnce("load",{}),CKEDITOR.ui.fire("ready",this),this.fire("show",{}),this._.editor.fire("dialogShow",this),this._.parentDialog||this._.editor.focusManager.lock(),this.foreach(function(t){t.setInitValue&&t.setInitValue()})},100,this)},layout:function(){var t=this.parts.dialog;if(this._.moved||!y){var e,i,n=this.getSize(),o=CKEDITOR.document.getWindow(),s=o.getViewPaneSize();this._.moved&&this._.position?(e=this._.position.x,i=this._.position.y):(e=(s.width-n.width)/2,i=(s.height-n.height)/2),CKEDITOR.env.ie6Compat||(t.setStyle("position","absolute"),t.removeStyle("margin")),e=Math.floor(e),i=Math.floor(i),this.move(e,i)}},foreach:function(t){for(var e in this._.contents)for(var i in this._.contents[e])t.call(this,this._.contents[e][i]);return this},reset:function(){var t=function(t){t.reset&&t.reset(1)};return function(){return this.foreach(t),this}}(),setupContent:function(){var t=arguments;this.foreach(function(e){e.setup&&e.setup.apply(e,t)})},commitContent:function(){var t=arguments;this.foreach(function(e){CKEDITOR.env.ie&&this._.currentFocusIndex==e.focusIndex&&e.getInputElement().$.blur(),e.commit&&e.commit.apply(e,t)})},hide:function(){if(this.parts.dialog.isVisible()){this.fire("hide",{}),this._.editor.fire("dialogHide",this),this.selectPage(this._.tabIdList[0]);var t=this._.element;for(t.setStyle("display","none"),this.parts.dialog.setStyle("visibility","hidden"),D(this);CKEDITOR.dialog._.currentTop!=this;)CKEDITOR.dialog._.currentTop.hide();if(this._.parentDialog){var e=this._.parentDialog.getElement().getFirst();this._.parentDialog.getElement().removeStyle("z-index"),e.setStyle("z-index",parseInt(e.$.style.zIndex,10)+Math.floor(this._.editor.config.baseFloatZIndex/2))}else I(this._.editor);if(CKEDITOR.dialog._.currentTop=this._.parentDialog,this._.parentDialog)CKEDITOR.dialog._.currentZIndex-=10;else{CKEDITOR.dialog._.currentZIndex=null,t.removeListener("keydown",v),t.removeListener("keyup",C);var i=this._.editor;i.focus(),setTimeout(function(){i.focusManager.unlock(),CKEDITOR.env.iOS&&i.window.focus()},0)}delete this._.parentDialog,this.foreach(function(t){t.resetInitValue&&t.resetInitValue()}),this.setState(CKEDITOR.DIALOG_STATE_IDLE)}},addPage:function(t){if(!t.requiredContent||this._.editor.filter.check(t.requiredContent)){for(var e,i=[],n=t.label?' title="'+CKEDITOR.tools.htmlEncode(t.label)+'"':"",o=CKEDITOR.dialog._.uiElementBuilders.vbox.build(this,{type:"vbox",className:"cke_dialog_page_contents",children:t.elements,expand:!!t.expand,padding:t.padding,style:t.style||"width: 100%;"},i),s=this._.contents[t.id]={},a=o.getChild(),r=0;e=a.shift();)e.notAllowed||"hbox"==e.type||"vbox"==e.type||r++,s[e.id]=e,"function"==typeof e.getChild&&a.push.apply(a,e.getChild());r||(t.hidden=!0);var l=CKEDITOR.dom.element.createFromHtml(i.join(""));l.setAttribute("role","tabpanel"),l.setStyle("min-height","100%");var d=CKEDITOR.env,u="cke_"+t.id+"_"+CKEDITOR.tools.getNextNumber(),h=CKEDITOR.dom.element.createFromHtml(['0?" cke_last":"cke_first",n,t.hidden?' style="display:none"':"",' id="',u,'"',d.gecko&&!d.hc?"":' href="javascript:void(0)"',' tabIndex="-1"',' hidefocus="true"',' role="tab">',t.label,""].join(""));l.setAttribute("aria-labelledby",u),this._.tabs[t.id]=[h,l],this._.tabIdList.push(t.id),!t.hidden&&this._.pageCount++,this._.lastTab=h,this.updateStyle(),l.setAttribute("name",t.id),l.appendTo(this.parts.contents),h.unselectable(),this.parts.tabs.append(h),t.accessKey&&(E(this,this,"CTRL+"+t.accessKey,b,T),this._.accessKeyMap["CTRL+"+t.accessKey]=t.id)}},selectPage:function(t){if(this._.currentTabId!=t&&!this._.tabs[t][0].hasClass("cke_dialog_tab_disabled")&&!1!==this.fire("selectPage",{page:t,currentPage:this._.currentTabId})){for(var e in this._.tabs){var i=this._.tabs[e][0],n=this._.tabs[e][1];e!=t&&(i.removeClass("cke_dialog_tab_selected"),i.removeAttribute("aria-selected"),n.hide()),n.setAttribute("aria-hidden",e!=t)}var s=this._.tabs[t];s[0].addClass("cke_dialog_tab_selected"),s[0].setAttribute("aria-selected",!0),CKEDITOR.env.ie6Compat||CKEDITOR.env.ie7Compat?(o(s[1]),s[1].show(),setTimeout(function(){o(s[1],1)},0)):s[1].show(),this._.currentTabId=t,this._.currentTabIndex=CKEDITOR.tools.indexOf(this._.tabIdList,t)}},updateStyle:function(){this.parts.dialog[(1===this._.pageCount?"add":"remove")+"Class"]("cke_single_page")},hidePage:function(t){var e=this._.tabs[t]&&this._.tabs[t][0];e&&1!=this._.pageCount&&e.isVisible()&&(t==this._.currentTabId&&this.selectPage(i.call(this)),e.hide(),this._.pageCount--,this.updateStyle())},showPage:function(t){var e=this._.tabs[t]&&this._.tabs[t][0];e&&(e.show(),this._.pageCount++,this.updateStyle())},getElement:function(){return this._.element},getName:function(){return this._.name},getContentElement:function(t,e){var i=this._.contents[t];return i&&i[e]},getValueOf:function(t,e){return this.getContentElement(t,e).getValue()},setValueOf:function(t,e,i){return this.getContentElement(t,e).setValue(i)},getButton:function(t){return this._.buttons[t]},click:function(t){return this._.buttons[t].click()},disableButton:function(t){return this._.buttons[t].disable()},enableButton:function(t){return this._.buttons[t].enable()},getPageCount:function(){return this._.pageCount},getParentEditor:function(){return this._.editor},getSelectedElement:function(){return this.getParentEditor().getSelection().getSelectedElement()},addFocusable:function(t,e){if(void 0===e)e=this._.focusList.length,this._.focusList.push(new l(this,t,e));else{this._.focusList.splice(e,0,new l(this,t,e));for(var i=e+1;i=0;r--)""===I[r]&&I.splice(r,1);I.length>0&&(h.style=(h.style?h.style+"; ":"")+I.join("; "));for(r in h)d.push(r+'="'+CKEDITOR.tools.htmlEncode(h[r])+'" ');d.push(">",c,""),i.push(d.join("")),(this._||(this._={})).dialog=t,"boolean"==typeof e.isChanged&&(this.isChanged=function(){return e.isChanged}),"function"==typeof e.isChanged&&(this.isChanged=e.isChanged),"function"==typeof e.setValue&&(this.setValue=CKEDITOR.tools.override(this.setValue,function(t){return function(i){t.call(this,e.setValue.call(this,i))}})),"function"==typeof e.getValue&&(this.getValue=CKEDITOR.tools.override(this.getValue,function(t){return function(){return e.getValue.call(this,t.call(this))}})),CKEDITOR.event.implementOn(this),this.registerEvents(e),this.accessKeyUp&&this.accessKeyDown&&e.accessKey&&E(this,t,"CTRL+"+e.accessKey);var v=this;t.on("load",function(){var e=v.getInputElement();if(e){var i=v.type in{checkbox:1,ratio:1}&&CKEDITOR.env.ie&&CKEDITOR.env.version<8?"cke_dialog_ui_focused":"";e.on("focus",function(){t._.tabBarMode=!1,t._.hasFocus=!0,v.fire("focus"),i&&this.addClass(i)}),e.on("blur",function(){v.fire("blur"),i&&this.removeClass(i)})}}),CKEDITOR.tools.extend(this,e),this.keyboardFocusable&&(this.tabIndex=e.tabIndex||0,this.focusIndex=t._.focusList.push(this)-1,this.on("focus",function(){t._.currentFocusIndex=v.focusIndex}))}},hbox:function(t,e,i,n,o){if(!(arguments.length<4)){this._||(this._={});var s,a=this._.children=e,r=o&&o.widths||null,l=o&&o.height||null,d={},u=function(){var t=[''];for(s=0;s0&&t.push('style="'+n.join("; ")+'" '),t.push(">",i[s],"")}return t.push(""),t.join("")},h={role:"presentation"};o&&o.align&&(h.align=o.align),CKEDITOR.ui.dialog.uiElement.call(this,t,o||{type:"hbox"},n,"table",d,h,u)}},vbox:function(t,e,i,n,o){if(!(arguments.length<3)){this._||(this._={});var s=this._.children=e,a=o&&o.width||null,r=o&&o.heights||null,l=function(){var e=['");for(var n=0;n")}return e.push("
0&&e.push('style="',l.join("; "),'" '),e.push(' class="cke_dialog_ui_vbox_child">',i[n],"
"),e.join("")};CKEDITOR.ui.dialog.uiElement.call(this,t,o||{type:"vbox"},n,"div",null,{role:"presentation"},l)}}}}(),CKEDITOR.ui.dialog.uiElement.prototype={getElement:function(){return CKEDITOR.document.getById(this.domId)},getInputElement:function(){return this.getElement()},getDialog:function(){return this._.dialog},setValue:function(t,e){return this.getInputElement().setValue(t),!e&&this.fire("change",{value:t}),this},getValue:function(){return this.getInputElement().getValue()},isChanged:function(){return!1},selectParentTab:function(){for(var t,e=this.getInputElement(),i=e;(i=i.getParent())&&-1==i.$.className.search("cke_dialog_page_contents"););return i?(t=i.getAttribute("name"),this._.dialog._.currentTabId!=t&&this._.dialog.selectPage(t),this):this},focus:function(){return this.selectParentTab().getInputElement().focus(),this},registerEvents:function(t){var e,i=/^on([A-Z]\w+)/;for(var n in t)(e=n.match(i))&&(this.eventProcessors[n]?this.eventProcessors[n].call(this,this._.dialog,t[n]):function(t,e,i,n){e.on("load",function(){t.getInputElement().on(i,n,t)})}(this,this._.dialog,e[1].toLowerCase(),t[n]));return this},eventProcessors:{onLoad:function(t,e){t.on("load",e,this)},onShow:function(t,e){t.on("show",e,this)},onHide:function(t,e){t.on("hide",e,this)}},accessKeyDown:function(){this.focus()},accessKeyUp:function(){},disable:function(){var t=this.getElement();this.getInputElement().setAttribute("disabled","true"),t.addClass("cke_disabled")},enable:function(){var t=this.getElement();this.getInputElement().removeAttribute("disabled"),t.removeClass("cke_disabled")},isEnabled:function(){return!this.getElement().hasClass("cke_disabled")},isVisible:function(){return this.getInputElement().isVisible()},isFocusable:function(){return!(!this.isEnabled()||!this.isVisible())}},CKEDITOR.ui.dialog.hbox.prototype=CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.uiElement,{getChild:function(t){return arguments.length<1?this._.children.concat():(t.splice||(t=[t]),t.length<2?this._.children[t[0]]:this._.children[t[0]]&&this._.children[t[0]].getChild?this._.children[t[0]].getChild(t.slice(1,t.length)):null)}},!0),CKEDITOR.ui.dialog.vbox.prototype=new CKEDITOR.ui.dialog.hbox,function(){var t={build:function(t,e,i){for(var n,o=e.children,s=[],a=[],r=0;rd.width&&(n.resize_minWidth=d.width),n.resize_minHeight>d.height&&(n.resize_minHeight=d.height),CMS.$(CKEDITOR.document.$).on("pointermove",i),CMS.$(CKEDITOR.document.$).on("pointerup",t),e.document&&(CMS.$(e.document.$).on("pointermove",i),CMS.$(e.document.$).on("pointerup",t)),r.preventDefault&&r.preventDefault()});CMS.$(CKEDITOR.document.$).find("html").attr("data-touch-action","none"),e.on("destroy",function(){CKEDITOR.tools.removeFunction(c)}),e.on("uiSpace",function(i){if("bottom"==i.data.space){var t="";m&&!h&&(t=" cke_resizer_horizontal"),!m&&h&&(t=" cke_resizer_vertical");var n=''+("ltr"==o?"◢":"◣")+"";"ltr"==o&&"ltr"==t?i.data.html+=n:i.data.html=n+i.data.html}},e,null,100),e.on("maximize",function(i){e.ui.space("resizer")[i.data==CKEDITOR.TRISTATE_ON?"hide":"show"]()})}}})}(CMS.$); -!function(t){function e(t){var e=(t.match(/<\s*([^>\s]+)[\s\S]*?>/)||[0,!1]).splice(1),i=e.some(function(t){return t&&CKEDITOR.dtd.$block[t]}),n="span";return i&&(n="div"),n}function i(e,i){e.each(function(e,n){var s,l=t(n);s=t("<"+i+">"),t.each(n.attributes,function(t,e){s.attr(e.nodeName,e.nodeValue)}),s.html(l.html()),l.replaceWith(s)})}CKEDITOR&&CKEDITOR.plugins&&CKEDITOR.plugins.registered&&CKEDITOR.plugins.registered.cmsplugins||CKEDITOR.plugins.add("cmsplugins",{icons:"cmsplugins",init:function(e){var i=this;if(this.options=CMS.CKEditor.options.settings,this.editor=e,this.child_plugins=[],this.setupCancelCleanupCallback(this.options),void 0===this.options||void 0===this.options.plugins)return!1;this.setupDialog(),this.editor.ui.add("cmsplugins",CKEDITOR.UI_PANELBUTTON,{toolbar:"cms,0",label:this.options.lang.toolbar,title:this.options.lang.toolbar,className:"cke_panelbutton__cmsplugins",modes:{wysiwyg:1},editorFocus:0,panel:{css:[CKEDITOR.skin.getPath("editor")].concat(i.editor.config.contentsCss),attributes:{role:"cmsplugins","aria-label":this.options.lang.aria}},onBlock:function(e,n){n.element.setHtml(i.editor.plugins.cmsplugins.setupDropdown()),t(n.element.$).find(".cke_panel_listItem a").bind("click",function(n){n.preventDefault(),i.addPlugin(t(this),e)})}}),this.editor.contextMenu&&this.setupContextMenu(),this.editor.addCommand("cmspluginsEdit",{exec:function(){var t=i.getElementFromSelection(),e=i.getPluginWidget(t);e&&i.editPlugin(e)}});var n=function(e){var n;if("touchend"===e.type||"click"===e.type){var s=t(e.currentTarget).closest("cms-plugin")[0];n=new CKEDITOR.dom.element(s).getParent(),e.data=e.data||{},i.editor.getSelection().fake(n)}i.editor.execCommand("cmspluginsEdit")};this.editor.on("doubleclick",n),this.setupDataProcessor()},getElementFromSelection:function(){var t=this.editor.getSelection();return t.getSelectedElement()||t.getCommonAncestor().getAscendant("cms-plugin",!0)},getPluginWidget:function(t){return t?t.getAscendant("cms-plugin",!0)||t.findOne("cms-plugin"):null},setupDialog:function(){var e=this,i=function(){return{title:"",minWidth:200,minHeight:200,contents:[{elements:[{type:"html",html:'' ); + iframe.appendTo( body.getParent() ); + } + + // Make the Title and Close Button unselectable. + title.unselectable(); + close.unselectable(); + + return { + element: element, + parts: { + dialog: element.getChild( 0 ), + title: title, + close: close, + tabs: body.getChild( 2 ), + contents: body.getChild( [ 3, 0, 0, 0 ] ), + footer: body.getChild( [ 3, 0, 1, 0 ] ) + } + }; + } + + /** + * This is the base class for runtime dialog objects. An instance of this + * class represents a single named dialog for a single editor instance. + * + * var dialogObj = new CKEDITOR.dialog( editor, 'smiley' ); + * + * @class + * @constructor Creates a dialog class instance. + * @param {Object} editor The editor which created the dialog. + * @param {String} dialogName The dialog's registered name. + */ + CKEDITOR.dialog = function( editor, dialogName ) { + // Load the dialog definition. + var definition = CKEDITOR.dialog._.dialogDefinitions[ dialogName ], + defaultDefinition = CKEDITOR.tools.clone( defaultDialogDefinition ), + buttonsOrder = editor.config.dialog_buttonsOrder || 'OS', + dir = editor.lang.dir, + tabsToRemove = {}, + i, processed, stopPropagation; + + if ( ( buttonsOrder == 'OS' && CKEDITOR.env.mac ) || // The buttons in MacOS Apps are in reverse order (https://dev.ckeditor.com/ticket/4750) + ( buttonsOrder == 'rtl' && dir == 'ltr' ) || ( buttonsOrder == 'ltr' && dir == 'rtl' ) ) + defaultDefinition.buttons.reverse(); + + + // Completes the definition with the default values. + definition = CKEDITOR.tools.extend( definition( editor ), defaultDefinition ); + + // Clone a functionally independent copy for this dialog. + definition = CKEDITOR.tools.clone( definition ); + + // Create a complex definition object, extending it with the API + // functions. + definition = new definitionObject( this, definition ); + + var themeBuilt = buildDialog( editor ); + + // Initialize some basic parameters. + this._ = { + editor: editor, + element: themeBuilt.element, + name: dialogName, + model: null, + contentSize: { width: 0, height: 0 }, + size: { width: 0, height: 0 }, + contents: {}, + buttons: {}, + accessKeyMap: {}, + // Default value is 0.5 which means a centered dialog. + viewportRatio: { + width: 0.5, + height: 0.5 + }, + + // Initialize the tab and page map. + tabs: {}, + tabIdList: [], + currentTabId: null, + currentTabIndex: null, + pageCount: 0, + lastTab: null, + tabBarMode: false, + + // Initialize the tab order array for input widgets. + focusList: [], + currentFocusIndex: 0, + hasFocus: false + }; + + this.parts = themeBuilt.parts; + + CKEDITOR.tools.setTimeout( function() { + editor.fire( 'ariaWidget', this.parts.contents ); + }, 0, this ); + + // Set the startup styles for the dialog, avoiding it enlarging the + // page size on the dialog creation. + var startStyles = { + top: 0, + visibility: 'hidden' + }; + + if ( CKEDITOR.env.ie6Compat ) { + startStyles.position = 'absolute'; + } + + startStyles[ dir == 'rtl' ? 'right' : 'left' ] = 0; + this.parts.dialog.setStyles( startStyles ); + + + // Call the CKEDITOR.event constructor to initialize this instance. + CKEDITOR.event.call( this ); + + // Fire the "dialogDefinition" event, making it possible to customize + // the dialog definition. + this.definition = definition = CKEDITOR.fire( 'dialogDefinition', { + name: dialogName, + definition: definition, + dialog: this + }, editor ).definition; + + // Cache tabs that should be removed. + if ( !( 'removeDialogTabs' in editor._ ) && editor.config.removeDialogTabs ) { + var removeContents = editor.config.removeDialogTabs.split( ';' ); + + for ( i = 0; i < removeContents.length; i++ ) { + var parts = removeContents[ i ].split( ':' ); + if ( parts.length == 2 ) { + var removeDialogName = parts[ 0 ]; + if ( !tabsToRemove[ removeDialogName ] ) + tabsToRemove[ removeDialogName ] = []; + tabsToRemove[ removeDialogName ].push( parts[ 1 ] ); + } + } + editor._.removeDialogTabs = tabsToRemove; + } + + // Remove tabs of this dialog. + if ( editor._.removeDialogTabs && ( tabsToRemove = editor._.removeDialogTabs[ dialogName ] ) ) { + for ( i = 0; i < tabsToRemove.length; i++ ) + definition.removeContents( tabsToRemove[ i ] ); + } + + // Initialize load, show, hide, ok and cancel events. + if ( definition.onLoad ) + this.on( 'load', definition.onLoad ); + + if ( definition.onShow ) + this.on( 'show', definition.onShow ); + + if ( definition.onHide ) + this.on( 'hide', definition.onHide ); + + if ( definition.onOk ) { + this.on( 'ok', function( evt ) { + // Dialog confirm might probably introduce content changes (https://dev.ckeditor.com/ticket/5415). + editor.fire( 'saveSnapshot' ); + setTimeout( function() { + editor.fire( 'saveSnapshot' ); + }, 0 ); + if ( definition.onOk.call( this, evt ) === false ) + evt.data.hide = false; + } ); + } + + // Set default dialog state. + this.state = CKEDITOR.DIALOG_STATE_IDLE; + + if ( definition.onCancel ) { + this.on( 'cancel', function( evt ) { + if ( definition.onCancel.call( this, evt ) === false ) + evt.data.hide = false; + } ); + } + + var me = this; + + // Iterates over all items inside all content in the dialog, calling a + // function for each of them. + var iterContents = function( func ) { + var contents = me._.contents, + stop = false; + + for ( var i in contents ) { + for ( var j in contents[ i ] ) { + stop = func.call( this, contents[ i ][ j ] ); + if ( stop ) + return; + } + } + }; + + this.on( 'ok', function( evt ) { + iterContents( function( item ) { + if ( item.validate ) { + var retval = item.validate( this ), + invalid = ( typeof retval == 'string' ) || retval === false; + + if ( invalid ) { + evt.data.hide = false; + evt.stop(); + } + + handleFieldValidated.call( item, !invalid, typeof retval == 'string' ? retval : undefined ); + return invalid; + } + } ); + }, this, null, 0 ); + + this.on( 'cancel', function( evt ) { + iterContents( function( item ) { + if ( item.isChanged() ) { + if ( !editor.config.dialog_noConfirmCancel && !confirm( editor.lang.common.confirmCancel ) ) // jshint ignore:line + evt.data.hide = false; + return true; + } + } ); + }, this, null, 0 ); + + this.parts.close.on( 'click', function( evt ) { + if ( this.fire( 'cancel', { hide: true } ).hide !== false ) + this.hide(); + evt.data.preventDefault(); + }, this ); + + // Sort focus list according to tab order definitions. + function setupFocus() { + var focusList = me._.focusList; + focusList.sort( function( a, b ) { + // Mimics browser tab order logics; + if ( a.tabIndex != b.tabIndex ) + return b.tabIndex - a.tabIndex; + // Sort is not stable in some browsers, + // fall-back the comparator to 'focusIndex'; + else + return a.focusIndex - b.focusIndex; + } ); + + var size = focusList.length; + for ( var i = 0; i < size; i++ ) + focusList[ i ].focusIndex = i; + } + + // Expects 1 or -1 as an offset, meaning direction of the offset change. + function changeFocus( offset ) { + var focusList = me._.focusList; + offset = offset || 0; + + if ( focusList.length < 1 ) + return; + + var startIndex = me._.currentFocusIndex; + + if ( me._.tabBarMode && offset < 0 ) { + // If we are in tab mode, we need to mimic that we started tabbing back from the first + // focusList (so it will go to the last one). + startIndex = 0; + } + + // Trigger the 'blur' event of any input element before anything, + // since certain UI updates may depend on it. + try { + focusList[ startIndex ].getInputElement().$.blur(); + } catch ( e ) {} + + var currentIndex = startIndex, + hasTabs = me._.pageCount > 1; + + do { + currentIndex = currentIndex + offset; + + if ( hasTabs && !me._.tabBarMode && ( currentIndex == focusList.length || currentIndex == -1 ) ) { + // If the dialog was not in tab mode, then focus the first tab (https://dev.ckeditor.com/ticket/13027). + me._.tabBarMode = true; + me._.tabs[ me._.currentTabId ][ 0 ].focus(); + me._.currentFocusIndex = -1; + + // Early return, in order to avoid accessing focusList[ -1 ]. + return; + } + + currentIndex = ( currentIndex + focusList.length ) % focusList.length; + + if ( currentIndex == startIndex ) { + break; + } + } while ( offset && !focusList[ currentIndex ].isFocusable() ); + + focusList[ currentIndex ].focus(); + + // Select whole field content. + if ( focusList[ currentIndex ].type == 'text' ) + focusList[ currentIndex ].select(); + } + + this.changeFocus = changeFocus; + + + function keydownHandler( evt ) { + // If I'm not the top dialog, ignore. + if ( me != CKEDITOR.dialog._.currentTop ) + return; + + var keystroke = evt.data.getKeystroke(), + rtl = editor.lang.dir == 'rtl', + arrowKeys = [ 37, 38, 39, 40 ], + button; + + processed = stopPropagation = 0; + + if ( keystroke == 9 || keystroke == CKEDITOR.SHIFT + 9 ) { + var shiftPressed = ( keystroke == CKEDITOR.SHIFT + 9 ); + changeFocus( shiftPressed ? -1 : 1 ); + processed = 1; + } else if ( keystroke == CKEDITOR.ALT + 121 && !me._.tabBarMode && me.getPageCount() > 1 ) { + // Alt-F10 puts focus into the current tab item in the tab bar. + focusActiveTab( me ); + processed = 1; + } else if ( CKEDITOR.tools.indexOf( arrowKeys, keystroke ) != -1 && me._.tabBarMode ) { + // Array with key codes that activate previous tab. + var prevKeyCodes = [ + // Depending on the lang dir: right or left key + rtl ? 39 : 37, + // Top/bot arrow: actually for both cases it's the same. + 38 + ], + nextId = CKEDITOR.tools.indexOf( prevKeyCodes, keystroke ) != -1 ? getPreviousVisibleTab.call( me ) : getNextVisibleTab.call( me ); + + me.selectPage( nextId ); + me._.tabs[ nextId ][ 0 ].focus(); + processed = 1; + } else if ( ( keystroke == 13 || keystroke == 32 ) && me._.tabBarMode ) { + this.selectPage( this._.currentTabId ); + this._.tabBarMode = false; + this._.currentFocusIndex = -1; + changeFocus( 1 ); + processed = 1; + } + // If user presses enter key in a text box, it implies clicking OK for the dialog. + else if ( keystroke == 13 /*ENTER*/ ) { + // Don't do that for a target that handles ENTER. + var target = evt.data.getTarget(); + if ( !target.is( 'a', 'button', 'select', 'textarea' ) && ( !target.is( 'input' ) || target.$.type != 'button' ) ) { + button = this.getButton( 'ok' ); + button && CKEDITOR.tools.setTimeout( button.click, 0, button ); + processed = 1; + } + stopPropagation = 1; // Always block the propagation (https://dev.ckeditor.com/ticket/4269) + } else if ( keystroke == 27 /*ESC*/ ) { + button = this.getButton( 'cancel' ); + + // If there's a Cancel button, click it, else just fire the cancel event and hide the dialog. + if ( button ) + CKEDITOR.tools.setTimeout( button.click, 0, button ); + else { + if ( this.fire( 'cancel', { hide: true } ).hide !== false ) + this.hide(); + } + stopPropagation = 1; // Always block the propagation (https://dev.ckeditor.com/ticket/4269) + } else { + return; + } + + keypressHandler( evt ); + } + + function keypressHandler( evt ) { + if ( processed ) + evt.data.preventDefault( 1 ); + else if ( stopPropagation ) + evt.data.stopPropagation(); + } + + var dialogElement = this._.element; + + editor.focusManager.add( dialogElement, 1 ); + + // Add the dialog keyboard handlers. + this.on( 'show', function() { + dialogElement.on( 'keydown', keydownHandler, this ); + + // Some browsers instead, don't cancel key events in the keydown, but in the + // keypress. So we must do a longer trip in those cases. (https://dev.ckeditor.com/ticket/4531,https://dev.ckeditor.com/ticket/8985) + if ( CKEDITOR.env.gecko ) + dialogElement.on( 'keypress', keypressHandler, this ); + + } ); + this.on( 'hide', function() { + dialogElement.removeListener( 'keydown', keydownHandler ); + if ( CKEDITOR.env.gecko ) + dialogElement.removeListener( 'keypress', keypressHandler ); + + // Reset fields state when closing dialog. + iterContents( function( item ) { + resetField.apply( item ); + } ); + } ); + this.on( 'iframeAdded', function( evt ) { + var doc = new CKEDITOR.dom.document( evt.data.iframe.$.contentWindow.document ); + doc.on( 'keydown', keydownHandler, this, null, 0 ); + } ); + + // Auto-focus logic in dialog. + this.on( 'show', function() { + // Setup tabIndex on showing the dialog instead of on loading + // to allow dynamic tab order happen in dialog definition. + setupFocus(); + + var hasTabs = me._.pageCount > 1; + + if ( editor.config.dialog_startupFocusTab && hasTabs ) { + me._.tabBarMode = true; + me._.tabs[ me._.currentTabId ][ 0 ].focus(); + me._.currentFocusIndex = -1; + } else if ( !this._.hasFocus ) { + // https://dev.ckeditor.com/ticket/13114#comment:4. + this._.currentFocusIndex = hasTabs ? -1 : this._.focusList.length - 1; + + // Decide where to put the initial focus. + if ( definition.onFocus ) { + var initialFocus = definition.onFocus.call( this ); + // Focus the field that the user specified. + initialFocus && initialFocus.focus(); + } + // Focus the first field in layout order. + else { + changeFocus( 1 ); + } + } + }, this, null, 0xffffffff ); + + // IE6 BUG: Text fields and text areas are only half-rendered the first time the dialog appears in IE6 (https://dev.ckeditor.com/ticket/2661). + // This is still needed after [2708] and [2709] because text fields in hidden TR tags are still broken. + if ( CKEDITOR.env.ie6Compat ) { + this.on( 'load', function() { + var outer = this.getElement(), + inner = outer.getFirst(); + inner.remove(); + inner.appendTo( outer ); + }, this ); + } + + initDragAndDrop( this ); + initResizeHandles( this ); + + // Insert the title. + ( new CKEDITOR.dom.text( definition.title, CKEDITOR.document ) ).appendTo( this.parts.title ); + + // Insert the tabs and contents. + for ( i = 0; i < definition.contents.length; i++ ) { + var page = definition.contents[ i ]; + page && this.addPage( page ); + } + + this.parts.tabs.on( 'click', function( evt ) { + var target = evt.data.getTarget(); + // If we aren't inside a tab, bail out. + if ( target.hasClass( 'cke_dialog_tab' ) ) { + // Get the ID of the tab, without the 'cke_' prefix and the unique number suffix. + var id = target.$.id; + this.selectPage( id.substring( 4, id.lastIndexOf( '_' ) ) ); + + focusActiveTab( this ); + + evt.data.preventDefault(); + } + }, this ); + + // Insert buttons. + var buttonsHtml = [], + buttons = CKEDITOR.dialog._.uiElementBuilders.hbox.build( this, { + type: 'hbox', + className: 'cke_dialog_footer_buttons', + widths: [], + children: definition.buttons + }, buttonsHtml ).getChild(); + this.parts.footer.setHtml( buttonsHtml.join( '' ) ); + + for ( i = 0; i < buttons.length; i++ ) + this._.buttons[ buttons[ i ].id ] = buttons[ i ]; + + /** + * Current state of the dialog. Use the {@link #setState} method to update it. + * See the {@link #event-state} event to know more. + * + * @readonly + * @property {Number} [state=CKEDITOR.DIALOG_STATE_IDLE] + */ + }; + + // Focusable interface. Use it via dialog.addFocusable. + function Focusable( dialog, element, index ) { + this.element = element; + this.focusIndex = index; + // TODO: support tabIndex for focusables. + this.tabIndex = 0; + this.isFocusable = function() { + return !element.getAttribute( 'disabled' ) && element.isVisible(); + }; + this.focus = function() { + dialog._.currentFocusIndex = this.focusIndex; + this.element.focus(); + }; + // Bind events + element.on( 'keydown', function( e ) { + if ( e.data.getKeystroke() in { 32: 1, 13: 1 } ) + this.fire( 'click' ); + } ); + element.on( 'focus', function() { + this.fire( 'mouseover' ); + } ); + element.on( 'blur', function() { + this.fire( 'mouseout' ); + } ); + } + + // Re-layout the dialog on window resize. + function resizeWithWindow( dialog ) { + var win = CKEDITOR.document.getWindow(); + function resizeHandler() { + dialog.layout(); + } + win.on( 'resize', resizeHandler ); + dialog.on( 'hide', function() { + win.removeListener( 'resize', resizeHandler ); + } ); + } + + CKEDITOR.dialog.prototype = { + destroy: function() { + this.hide(); + this._.element.remove(); + }, + + /** + * Resizes the dialog. + * + * dialogObj.resize( 800, 640 ); + * + * @method + * @param {Number} width The width of the dialog in pixels. + * @param {Number} height The height of the dialog in pixels. + */ + resize: function( width, height ) { + if ( this._.contentSize && this._.contentSize.width == width && this._.contentSize.height == height ) + return; + + CKEDITOR.dialog.fire( 'resize', { + dialog: this, + width: width, + height: height + }, this._.editor ); + + this.fire( 'resize', { + width: width, + height: height + }, this._.editor ); + + var contents = this.parts.contents; + contents.setStyles( { + width: width + 'px', + height: height + 'px' + } ); + + // Update dialog position when dimension get changed in RTL. + if ( this._.editor.lang.dir == 'rtl' && this._.position ) { + var containerWidth = this.parts.dialog.getParent().getClientSize().width; + + this._.position.x = containerWidth - this._.contentSize.width - parseInt( this._.element.getFirst().getStyle( 'right' ), 10 ); + } + + this._.contentSize = { width: width, height: height }; + }, + + /** + * Gets the current size of the dialog in pixels. + * + * var width = dialogObj.getSize().width; + * + * @returns {Object} + * @returns {Number} return.width + * @returns {Number} return.height + */ + getSize: function() { + var element = this._.element.getFirst(); + return { width: element.$.offsetWidth || 0, height: element.$.offsetHeight || 0 }; + }, + + /** + * Moves the dialog to an `(x, y)` coordinate relative to the window. + * + * dialogObj.move( 10, 40 ); + * + * @method + * @param {Number} x The target x-coordinate. + * @param {Number} y The target y-coordinate. + * @param {Boolean} save Flag indicate whether the dialog position should be remembered on next open up. + */ + move: function( x, y, save ) { + var element = this._.element.getFirst(), rtl = this._.editor.lang.dir == 'rtl'; + + // (https://dev.ckeditor.com/ticket/8888) In some cases of a very small viewport, dialog is incorrectly + // positioned in IE7. It also happens that it remains sticky and user cannot + // scroll down/up to reveal dialog's content below/above the viewport; this is + // cumbersome. + // The only way to fix this is to move mouse out of the browser and + // go back to see that dialog position is automagically fixed. No events, + // no style change - pure magic. This is a IE7 rendering issue, which can be + // fixed with dummy style redraw on each move. + if ( CKEDITOR.env.ie ) { + element.setStyle( 'zoom', '100%' ); + } + + var containerSize = this.parts.dialog.getParent().getClientSize(), + dialogSize = this.getSize(), + ratios = this._.viewportRatio, + freeSpace = { + width: Math.max( containerSize.width - dialogSize.width, 0 ), + height: Math.max( containerSize.height - dialogSize.height, 0 ) + }; + + if ( this._.position && this._.position.x == x && this._.position.y == y ) { + // If position didn't change window might have been resized. + x = Math.floor( freeSpace.width * ratios.width ); + y = Math.floor( freeSpace.height * ratios.height ); + } else { + updateRatios( this, x, y ); + } + + // Save the current position. + this._.position = { x: x, y: y }; + + // Translate coordinate for RTL. + if ( rtl ) { + x = freeSpace.width - x; + } + + var styles = { 'top': ( y > 0 ? y : 0 ) + 'px' }; + styles[ rtl ? 'right' : 'left' ] = ( x > 0 ? x : 0 ) + 'px'; + + element.setStyles( styles ); + + save && ( this._.moved = 1 ); + }, + + /** + * Gets the dialog's position in the window. + * + * var dialogX = dialogObj.getPosition().x; + * + * @returns {Object} + * @returns {Number} return.x + * @returns {Number} return.y + */ + getPosition: function() { + return CKEDITOR.tools.extend( {}, this._.position ); + }, + + /** + * Shows the dialog box. + * + * dialogObj.show(); + */ + show: function() { + // Insert the dialog's element to the root document. + var element = this._.element, + definition = this.definition, + documentBody = CKEDITOR.document.getBody(), + baseFloatZIndex = this._.editor.config.baseFloatZIndex; + + if ( !( element.getParent() && element.getParent().equals( documentBody ) ) ) { + element.appendTo( documentBody ); + } else { + element.setStyle( 'display', useFlex ? 'flex' : 'block' ); + } + + // First, set the dialog to an appropriate size. + this.resize( + this._.contentSize && this._.contentSize.width || definition.width || definition.minWidth, + this._.contentSize && this._.contentSize.height || definition.height || definition.minHeight + ); + + // Reset all inputs back to their default value. + this.reset(); + + // Selects the first tab if no tab is already selected. + if ( this._.currentTabId === null ) { + this.selectPage( this.definition.contents[ 0 ].id ); + } + + // Set z-index to dialog and container (#3559). + if ( CKEDITOR.dialog._.currentZIndex === null ) { + CKEDITOR.dialog._.currentZIndex = baseFloatZIndex; + } + this._.element.getFirst().setStyle( 'z-index', CKEDITOR.dialog._.currentZIndex += 10 ); + this.getElement().setStyle( 'z-index', CKEDITOR.dialog._.currentZIndex ); + + // Maintain the dialog ordering and dialog cover. + if ( CKEDITOR.dialog._.currentTop === null ) { + CKEDITOR.dialog._.currentTop = this; + this._.parentDialog = null; + showCover( this._.editor ); + } else { + this._.parentDialog = CKEDITOR.dialog._.currentTop; + + var parentElement = this._.parentDialog.getElement().getFirst(); + + parentElement.$.style.zIndex -= Math.floor( baseFloatZIndex / 2 ); + this._.parentDialog.getElement().setStyle( 'z-index', parentElement.$.style.zIndex ); + CKEDITOR.dialog._.currentTop = this; + } + + element.on( 'keydown', accessKeyDownHandler ); + element.on( 'keyup', accessKeyUpHandler ); + + // Reset the hasFocus state. + this._.hasFocus = false; + + for ( var i in definition.contents ) { + if ( !definition.contents[ i ] ) { + continue; + } + + var content = definition.contents[ i ], + tab = this._.tabs[ content.id ], + requiredContent = content.requiredContent, + enableElements = 0; + + if ( !tab ) { + continue; + } + + for ( var j in this._.contents[ content.id ] ) { + var elem = this._.contents[ content.id ][ j ]; + + if ( elem.type == 'hbox' || elem.type == 'vbox' || !elem.getInputElement() ) { + continue; + } + + if ( elem.requiredContent && !this._.editor.activeFilter.check( elem.requiredContent ) ) { + elem.disable(); + } else { + elem.enable(); + enableElements++; + } + } + + if ( !enableElements || ( requiredContent && !this._.editor.activeFilter.check( requiredContent ) ) ) { + tab[ 0 ].addClass( 'cke_dialog_tab_disabled' ); + } else { + tab[ 0 ].removeClass( 'cke_dialog_tab_disabled' ); + } + } + + CKEDITOR.tools.setTimeout( function() { + this.layout(); + resizeWithWindow( this ); + + this.parts.dialog.setStyle( 'visibility', '' ); + + // Execute onLoad for the first show. + this.fireOnce( 'load', {} ); + CKEDITOR.ui.fire( 'ready', this ); + + this.fire( 'show', {} ); + this._.editor.fire( 'dialogShow', this ); + + if ( !this._.parentDialog ) { + this._.editor.focusManager.lock(); + } + + // Save the initial values of the dialog. + this.foreach( function( contentObj ) { + contentObj.setInitValue && contentObj.setInitValue(); + } ); + + }, 100, this ); + }, + + /** + * Rearrange the dialog to its previous position or the middle of the window. + * + * @since 3.5.0 + */ + layout: function() { + var el = this.parts.dialog; + + if ( !this._.moved && useFlex ) { + return; + } + + var dialogSize = this.getSize(), + win = CKEDITOR.document.getWindow(), + viewSize = win.getViewPaneSize(), + posX, + posY; + + if ( this._.moved && this._.position ) { + posX = this._.position.x; + posY = this._.position.y; + } else { + posX = ( viewSize.width - dialogSize.width ) / 2; + posY = ( viewSize.height - dialogSize.height ) / 2; + } + + if ( !CKEDITOR.env.ie6Compat ) { + el.setStyle( 'position', 'absolute' ); + el.removeStyle( 'margin' ); + } + + posX = Math.floor( posX ); + posY = Math.floor( posY ); + + this.move( posX, posY ); + }, + + /** + * Executes a function for each UI element. + * + * @param {Function} fn Function to execute for each UI element. + * @returns {CKEDITOR.dialog} The current dialog object. + */ + foreach: function( fn ) { + for ( var i in this._.contents ) { + for ( var j in this._.contents[ i ] ) { + fn.call( this, this._.contents[i][j] ); + } + } + + return this; + }, + + /** + * Resets all input values in the dialog. + * + * dialogObj.reset(); + * + * @method + * @chainable + */ + reset: ( function() { + var fn = function( widget ) { + if ( widget.reset ) + widget.reset( 1 ); + }; + return function() { + this.foreach( fn ); + return this; + }; + } )(), + + + /** + * Calls the {@link CKEDITOR.dialog.definition.uiElement#setup} method of each + * of the UI elements, with the arguments passed through it. + * It is usually being called when the dialog is opened, to put the initial value inside the field. + * + * dialogObj.setupContent(); + * + * var timestamp = ( new Date() ).valueOf(); + * dialogObj.setupContent( timestamp ); + */ + setupContent: function() { + var args = arguments; + this.foreach( function( widget ) { + if ( widget.setup ) + widget.setup.apply( widget, args ); + } ); + }, + + /** + * Calls the {@link CKEDITOR.dialog.definition.uiElement#commit} method of each + * of the UI elements, with the arguments passed through it. + * It is usually being called when the user confirms the dialog, to process the values. + * + * dialogObj.commitContent(); + * + * var timestamp = ( new Date() ).valueOf(); + * dialogObj.commitContent( timestamp ); + */ + commitContent: function() { + var args = arguments; + this.foreach( function( widget ) { + // Make sure IE triggers "change" event on last focused input before closing the dialog. (https://dev.ckeditor.com/ticket/7915) + if ( CKEDITOR.env.ie && this._.currentFocusIndex == widget.focusIndex ) + widget.getInputElement().$.blur(); + + if ( widget.commit ) + widget.commit.apply( widget, args ); + } ); + }, + + /** + * Hides the dialog box. + * + * dialogObj.hide(); + */ + hide: function() { + if ( !this.parts.dialog.isVisible() ) { + return; + } + + this.fire( 'hide', {} ); + this._.editor.fire( 'dialogHide', this ); + // Reset the tab page. + this.selectPage( this._.tabIdList[ 0 ] ); + var element = this._.element; + element.setStyle( 'display', 'none' ); + this.parts.dialog.setStyle( 'visibility', 'hidden' ); + // Unregister all access keys associated with this dialog. + unregisterAccessKey( this ); + + // Close any child(top) dialogs first. + while ( CKEDITOR.dialog._.currentTop != this ) { + CKEDITOR.dialog._.currentTop.hide(); + } + + // Maintain dialog ordering and remove cover if needed. + if ( !this._.parentDialog ) { + hideCover( this._.editor ); + } else { + var parentElement = this._.parentDialog.getElement().getFirst(); + this._.parentDialog.getElement().removeStyle( 'z-index' ); + parentElement.setStyle( 'z-index', parseInt( parentElement.$.style.zIndex, 10 ) + Math.floor( this._.editor.config.baseFloatZIndex / 2 ) ); + } + CKEDITOR.dialog._.currentTop = this._.parentDialog; + + // Deduct or clear the z-index. + if ( !this._.parentDialog ) { + CKEDITOR.dialog._.currentZIndex = null; + + // Remove access key handlers. + element.removeListener( 'keydown', accessKeyDownHandler ); + element.removeListener( 'keyup', accessKeyUpHandler ); + + var editor = this._.editor; + editor.focus(); + + // Give a while before unlock, waiting for focus to return to the editable. (https://dev.ckeditor.com/ticket/172) + setTimeout( function() { + editor.focusManager.unlock(); + + // Fixed iOS focus issue (https://dev.ckeditor.com/ticket/12381). + // Keep in mind that editor.focus() does not work in this case. + if ( CKEDITOR.env.iOS ) { + editor.window.focus(); + } + }, 0 ); + + } else { + CKEDITOR.dialog._.currentZIndex -= 10; + } + + delete this._.parentDialog; + // Reset the initial values of the dialog. + this.foreach( function( contentObj ) { + contentObj.resetInitValue && contentObj.resetInitValue(); + } ); + + // Reset dialog state back to IDLE, if busy (https://dev.ckeditor.com/ticket/13213). + this.setState( CKEDITOR.DIALOG_STATE_IDLE ); + }, + + /** + * Adds a tabbed page into the dialog. + * + * @param {Object} contents Content definition. + */ + addPage: function( contents ) { + if ( contents.requiredContent && !this._.editor.filter.check( contents.requiredContent ) ) { + return; + } + + var pageHtml = [], + titleHtml = contents.label ? ' title="' + CKEDITOR.tools.htmlEncode( contents.label ) + '"' : '', + vbox = CKEDITOR.dialog._.uiElementBuilders.vbox.build( this, { + type: 'vbox', + className: 'cke_dialog_page_contents', + children: contents.elements, + expand: !!contents.expand, + padding: contents.padding, + style: contents.style || 'width: 100%;' + }, pageHtml ), + contentMap = this._.contents[ contents.id ] = {}, + cursor, + children = vbox.getChild(), + enabledFields = 0; + + while ( ( cursor = children.shift() ) ) { + // Count all allowed fields. + if ( !cursor.notAllowed && cursor.type != 'hbox' && cursor.type != 'vbox' ) { + enabledFields++; + } + + contentMap[ cursor.id ] = cursor; + if ( typeof cursor.getChild == 'function' ) { + children.push.apply( children, cursor.getChild() ); + } + } + + // If all fields are disabled (because they are not allowed) hide this tab. + if ( !enabledFields ) { + contents.hidden = true; + } + + // Create the HTML for the tab and the content block. + var page = CKEDITOR.dom.element.createFromHtml( pageHtml.join( '' ) ); + page.setAttribute( 'role', 'tabpanel' ); + page.setStyle( 'min-height', '100%' ); + + var env = CKEDITOR.env, + tabId = 'cke_' + contents.id + '_' + CKEDITOR.tools.getNextNumber(), + tab = CKEDITOR.dom.element.createFromHtml( [ + ' 0 ? ' cke_last' : 'cke_first' ), + titleHtml, + ( !!contents.hidden ? ' style="display:none"' : '' ), + ' id="', tabId, '"', + env.gecko && !env.hc ? '' : ' href="javascript:void(0)"', + ' tabIndex="-1"', + ' hidefocus="true"', + ' role="tab">', + contents.label, + '' + ].join( '' ) ); + + page.setAttribute( 'aria-labelledby', tabId ); + + // Take records for the tabs and elements created. + this._.tabs[ contents.id ] = [ tab, page ]; + this._.tabIdList.push( contents.id ); + !contents.hidden && this._.pageCount++; + this._.lastTab = tab; + this.updateStyle(); + + // Attach the DOM nodes. + + page.setAttribute( 'name', contents.id ); + page.appendTo( this.parts.contents ); + + tab.unselectable(); + this.parts.tabs.append( tab ); + + // Add access key handlers if access key is defined. + if ( contents.accessKey ) { + registerAccessKey( this, this, 'CTRL+' + contents.accessKey, tabAccessKeyDown, tabAccessKeyUp ); + this._.accessKeyMap[ 'CTRL+' + contents.accessKey ] = contents.id; + } + }, + + /** + * Activates a tab page in the dialog by its id. + * + * dialogObj.selectPage( 'tab_1' ); + * + * @param {String} id The id of the dialog tab to be activated. + */ + selectPage: function( id ) { + if ( this._.currentTabId == id ) + return; + + if ( this._.tabs[ id ][ 0 ].hasClass( 'cke_dialog_tab_disabled' ) ) + return; + + // If event was canceled - do nothing. + if ( this.fire( 'selectPage', { page: id, currentPage: this._.currentTabId } ) === false ) + return; + + // Hide the non-selected tabs and pages. + for ( var i in this._.tabs ) { + var tab = this._.tabs[ i ][ 0 ], + page = this._.tabs[ i ][ 1 ]; + if ( i != id ) { + tab.removeClass( 'cke_dialog_tab_selected' ); + tab.removeAttribute( 'aria-selected' ); + page.hide(); + } + page.setAttribute( 'aria-hidden', i != id ); + } + + var selected = this._.tabs[ id ]; + selected[ 0 ].addClass( 'cke_dialog_tab_selected' ); + selected[ 0 ].setAttribute( 'aria-selected', true ); + + // [IE] an invisible input[type='text'] will enlarge it's width + // if it's value is long when it shows, so we clear it's value + // before it shows and then recover it (https://dev.ckeditor.com/ticket/5649) + if ( CKEDITOR.env.ie6Compat || CKEDITOR.env.ie7Compat ) { + clearOrRecoverTextInputValue( selected[ 1 ] ); + selected[ 1 ].show(); + setTimeout( function() { + clearOrRecoverTextInputValue( selected[ 1 ], 1 ); + }, 0 ); + } else { + selected[ 1 ].show(); + } + + this._.currentTabId = id; + this._.currentTabIndex = CKEDITOR.tools.indexOf( this._.tabIdList, id ); + }, + + /** + * Dialog state-specific style updates. + */ + updateStyle: function() { + // If only a single page shown, a different style is used in the central pane. + this.parts.dialog[ ( this._.pageCount === 1 ? 'add' : 'remove' ) + 'Class' ]( 'cke_single_page' ); + }, + + /** + * Hides a page's tab away from the dialog. + * + * dialog.hidePage( 'tab_3' ); + * + * @param {String} id The page's Id. + */ + hidePage: function( id ) { + var tab = this._.tabs[ id ] && this._.tabs[ id ][ 0 ]; + if ( !tab || this._.pageCount == 1 || !tab.isVisible() ) + return; + // Switch to other tab first when we're hiding the active tab. + else if ( id == this._.currentTabId ) + this.selectPage( getPreviousVisibleTab.call( this ) ); + + tab.hide(); + this._.pageCount--; + this.updateStyle(); + }, + + /** + * Unhides a page's tab. + * + * dialog.showPage( 'tab_2' ); + * + * @param {String} id The page's Id. + */ + showPage: function( id ) { + var tab = this._.tabs[ id ] && this._.tabs[ id ][ 0 ]; + if ( !tab ) + return; + tab.show(); + this._.pageCount++; + this.updateStyle(); + }, + + /** + * Gets the root DOM element of the dialog. + * + * var dialogElement = dialogObj.getElement().getFirst(); + * dialogElement.setStyle( 'padding', '5px' ); + * + * @returns {CKEDITOR.dom.element} The `` element containing this dialog. + */ + getElement: function() { + return this._.element; + }, + + /** + * Gets the name of the dialog. + * + * var dialogName = dialogObj.getName(); + * + * @returns {String} The name of this dialog. + */ + getName: function() { + return this._.name; + }, + + /** + * Gets a dialog UI element object from a dialog page. + * + * dialogObj.getContentElement( 'tabId', 'elementId' ).setValue( 'Example' ); + * + * @param {String} pageId id of dialog page. + * @param {String} elementId id of UI element. + * @returns {CKEDITOR.ui.dialog.uiElement} The dialog UI element. + */ + getContentElement: function( pageId, elementId ) { + var page = this._.contents[ pageId ]; + return page && page[ elementId ]; + }, + + /** + * Gets the value of a dialog UI element. + * + * alert( dialogObj.getValueOf( 'tabId', 'elementId' ) ); + * + * @param {String} pageId id of dialog page. + * @param {String} elementId id of UI element. + * @returns {Object} The value of the UI element. + */ + getValueOf: function( pageId, elementId ) { + return this.getContentElement( pageId, elementId ).getValue(); + }, + + /** + * Sets the value of a dialog UI element. + * + * dialogObj.setValueOf( 'tabId', 'elementId', 'Example' ); + * + * @param {String} pageId id of the dialog page. + * @param {String} elementId id of the UI element. + * @param {Object} value The new value of the UI element. + */ + setValueOf: function( pageId, elementId, value ) { + return this.getContentElement( pageId, elementId ).setValue( value ); + }, + + /** + * Gets the UI element of a button in the dialog's button row. + * + * @returns {CKEDITOR.ui.dialog.button} The button object. + * + * @param {String} id The id of the button. + */ + getButton: function( id ) { + return this._.buttons[ id ]; + }, + + /** + * Simulates a click to a dialog button in the dialog's button row. + * + * @returns The return value of the dialog's `click` event. + * + * @param {String} id The id of the button. + */ + click: function( id ) { + return this._.buttons[ id ].click(); + }, + + /** + * Disables a dialog button. + * + * @param {String} id The id of the button. + */ + disableButton: function( id ) { + return this._.buttons[ id ].disable(); + }, + + /** + * Enables a dialog button. + * + * @param {String} id The id of the button. + */ + enableButton: function( id ) { + return this._.buttons[ id ].enable(); + }, + + /** + * Gets the number of pages in the dialog. + * + * @returns {Number} Page count. + */ + getPageCount: function() { + return this._.pageCount; + }, + + /** + * Gets the editor instance which opened this dialog. + * + * @returns {CKEDITOR.editor} Parent editor instances. + */ + getParentEditor: function() { + return this._.editor; + }, + + /** + * Gets the element that was selected when opening the dialog, if any. + * + * @returns {CKEDITOR.dom.element} The element that was selected, or `null`. + */ + getSelectedElement: function() { + return this.getParentEditor().getSelection().getSelectedElement(); + }, + + /** + * Adds element to dialog's focusable list. + * + * @param {CKEDITOR.dom.element} element + * @param {Number} [index] + */ + addFocusable: function( element, index ) { + if ( typeof index == 'undefined' ) { + index = this._.focusList.length; + this._.focusList.push( new Focusable( this, element, index ) ); + } else { + this._.focusList.splice( index, 0, new Focusable( this, element, index ) ); + for ( var i = index + 1; i < this._.focusList.length; i++ ) + this._.focusList[ i ].focusIndex++; + } + }, + + /** + * Sets the dialog {@link #property-state}. + * + * @since 4.5.0 + * @param {Number} state Either {@link CKEDITOR#DIALOG_STATE_IDLE} or {@link CKEDITOR#DIALOG_STATE_BUSY}. + */ + setState: function( state ) { + var oldState = this.state; + + if ( oldState == state ) { + return; + } + + this.state = state; + + if ( state == CKEDITOR.DIALOG_STATE_BUSY ) { + // Insert the spinner on demand. + if ( !this.parts.spinner ) { + var dir = this.getParentEditor().lang.dir, + spinnerDef = { + attributes: { + 'class': 'cke_dialog_spinner' + }, + styles: { + 'float': dir == 'rtl' ? 'right' : 'left' + } + }; + + spinnerDef.styles[ 'margin-' + ( dir == 'rtl' ? 'left' : 'right' ) ] = '8px'; + + this.parts.spinner = CKEDITOR.document.createElement( 'div', spinnerDef ); + + this.parts.spinner.setHtml( '⌛' ); + this.parts.spinner.appendTo( this.parts.title, 1 ); + } + + // Finally, show the spinner. + this.parts.spinner.show(); + + this.getButton( 'ok' ).disable(); + } else if ( state == CKEDITOR.DIALOG_STATE_IDLE ) { + // Hide the spinner. But don't do anything if there is no spinner yet. + this.parts.spinner && this.parts.spinner.hide(); + + this.getButton( 'ok' ).enable(); + } + + this.fire( 'state', state ); + }, + + /** + * @inheritdoc CKEDITOR.dialog.definition#getModel + */ + getModel: function( editor ) { + // Prioritize forced model. + if ( this._.model ) { + return this._.model; + } + + if ( this.definition.getModel ) { + return this.definition.getModel( editor ); + } + + return null; + }, + + /** + * Sets the given model as the subject of the dialog. + * + * For most plugins, like the `table` or `link` plugin, the given model should be a + * {@link CKEDITOR.dom.element DOM element instance} if there is an element related to the dialog. + * For widget plugins (`image2`, `placeholder`) you should provide a {@link CKEDITOR.plugins.widget} instance that + * is the subject of this dialog. + * + * @since 4.13.0 + * @private + * @param {CKEDITOR.dom.element/CKEDITOR.plugins.widget/Object/null} newModel The model to be set. + */ + setModel: function( newModel ) { + this._.model = newModel; + }, + + /** + * Returns the current dialog mode based on the state of the feature used with this dialog. + * + * In case if the dialog definition did not define the {@link CKEDITOR.dialog.definition#getMode} + * function, it will use the {@link #getModel} method to recognize the editor mode: + * + * The {@link CKEDITOR.dialog#EDITING_MODE editing mode} is used when the method returns: + * + * * A {@link CKEDITOR.dom.element} attached to the DOM. + * * A {@link CKEDITOR.plugins.widget} instance. + * + * Otherwise the {@link CKEDITOR.dialog#CREATION_MODE creation mode} is used. + * + * @since 4.13.0 + * @param {CKEDITOR.editor} editor + * @returns {Number} Dialog mode. + */ + getMode: function( editor ) { + if ( this.definition.getMode ) { + return this.definition.getMode( editor ); + } + + var model = this.getModel( editor ); + + if ( !model || ( model instanceof CKEDITOR.dom.element && !model.getParent() ) ) { + return CKEDITOR.dialog.CREATION_MODE; + } + + return CKEDITOR.dialog.EDITING_MODE; + } + }; + + CKEDITOR.tools.extend( CKEDITOR.dialog, { + + /** + * Indicates that the dialog is introducing new changes to the editor, for example inserting + * a newly created element as a part of a feature used with this dialog. + * + * @static + * @since 4.13.0 + */ + CREATION_MODE: 0, + + /** + * Indicates that the dialog is modifying the existing editor state, for example updating + * an existing element as a part of a feature used with this dialog. + * + * @static + * @since 4.13.0 + */ + EDITING_MODE: 1, + + /** + * Registers a dialog. + * + * // Full sample plugin, which does not only register a dialog window but also adds an item to the context menu. + * // To open the dialog window, choose "Open dialog" in the context menu. + * CKEDITOR.plugins.add( 'myplugin', { + * init: function( editor ) { + * editor.addCommand( 'mydialog',new CKEDITOR.dialogCommand( 'mydialog' ) ); + * + * if ( editor.contextMenu ) { + * editor.addMenuGroup( 'mygroup', 10 ); + * editor.addMenuItem( 'My Dialog', { + * label: 'Open dialog', + * command: 'mydialog', + * group: 'mygroup' + * } ); + * editor.contextMenu.addListener( function( element ) { + * return { 'My Dialog': CKEDITOR.TRISTATE_OFF }; + * } ); + * } + * + * CKEDITOR.dialog.add( 'mydialog', function( api ) { + * // CKEDITOR.dialog.definition + * var dialogDefinition = { + * title: 'Sample dialog', + * minWidth: 390, + * minHeight: 130, + * contents: [ + * { + * id: 'tab1', + * label: 'Label', + * title: 'Title', + * expand: true, + * padding: 0, + * elements: [ + * { + * type: 'html', + * html: '

This is some sample HTML content.

' + * }, + * { + * type: 'textarea', + * id: 'textareaId', + * rows: 4, + * cols: 40 + * } + * ] + * } + * ], + * buttons: [ CKEDITOR.dialog.okButton, CKEDITOR.dialog.cancelButton ], + * onOk: function() { + * // "this" is now a CKEDITOR.dialog object. + * // Accessing dialog elements: + * var textareaObj = this.getContentElement( 'tab1', 'textareaId' ); + * alert( "You have entered: " + textareaObj.getValue() ); + * } + * }; + * + * return dialogDefinition; + * } ); + * } + * } ); + * + * CKEDITOR.replace( 'editor1', { extraPlugins: 'myplugin' } ); + * + * @static + * @param {String} name The dialog's name. + * @param {Function/String} dialogDefinition + * A function returning the dialog's definition, or the URL to the `.js` file holding the function. + * The function should accept an argument `editor` which is the current editor instance, and + * return an object conforming to {@link CKEDITOR.dialog.definition}. + * @see CKEDITOR.dialog.definition + */ + add: function( name, dialogDefinition ) { + // Avoid path registration from multiple instances override definition. + if ( !this._.dialogDefinitions[ name ] || typeof dialogDefinition == 'function' ) + this._.dialogDefinitions[ name ] = dialogDefinition; + }, + + /** + * @static + * @todo + */ + exists: function( name ) { + return !!this._.dialogDefinitions[ name ]; + }, + + /** + * @static + * @todo + */ + getCurrent: function() { + return CKEDITOR.dialog._.currentTop; + }, + + /** + * Check whether tab wasn't removed by {@link CKEDITOR.config#removeDialogTabs}. + * + * @since 4.1.0 + * @static + * @param {CKEDITOR.editor} editor + * @param {String} dialogName + * @param {String} tabName + * @returns {Boolean} + */ + isTabEnabled: function( editor, dialogName, tabName ) { + var cfg = editor.config.removeDialogTabs; + + return !( cfg && cfg.match( new RegExp( '(?:^|;)' + dialogName + ':' + tabName + '(?:$|;)', 'i' ) ) ); + }, + + /** + * The default OK button for dialogs. Fires the `ok` event and closes the dialog if the event succeeds. + * + * @static + * @method + */ + okButton: ( function() { + var retval = function( editor, override ) { + override = override || {}; + return CKEDITOR.tools.extend( { + id: 'ok', + type: 'button', + label: editor.lang.common.ok, + 'class': 'cke_dialog_ui_button_ok', + onClick: function( evt ) { + var dialog = evt.data.dialog; + if ( dialog.fire( 'ok', { hide: true } ).hide !== false ) + dialog.hide(); + } + }, override, true ); + }; + retval.type = 'button'; + retval.override = function( override ) { + return CKEDITOR.tools.extend( function( editor ) { + return retval( editor, override ); + }, { type: 'button' }, true ); + }; + return retval; + } )(), + + /** + * The default cancel button for dialogs. Fires the `cancel` event and + * closes the dialog if no UI element value changed. + * + * @static + * @method + */ + cancelButton: ( function() { + var retval = function( editor, override ) { + override = override || {}; + return CKEDITOR.tools.extend( { + id: 'cancel', + type: 'button', + label: editor.lang.common.cancel, + 'class': 'cke_dialog_ui_button_cancel', + onClick: function( evt ) { + var dialog = evt.data.dialog; + if ( dialog.fire( 'cancel', { hide: true } ).hide !== false ) + dialog.hide(); + } + }, override, true ); + }; + retval.type = 'button'; + retval.override = function( override ) { + return CKEDITOR.tools.extend( function( editor ) { + return retval( editor, override ); + }, { type: 'button' }, true ); + }; + return retval; + } )(), + + /** + * Registers a dialog UI element. + * + * @static + * @param {String} typeName The name of the UI element. + * @param {Function} builder The function to build the UI element. + */ + addUIElement: function( typeName, builder ) { + this._.uiElementBuilders[ typeName ] = builder; + } + } ); + + CKEDITOR.dialog._ = { + uiElementBuilders: {}, + + dialogDefinitions: {}, + + currentTop: null, + + currentZIndex: null + }; + + // "Inherit" (copy actually) from CKEDITOR.event. + CKEDITOR.event.implementOn( CKEDITOR.dialog ); + CKEDITOR.event.implementOn( CKEDITOR.dialog.prototype ); + + defaultDialogDefinition = { + resizable: CKEDITOR.DIALOG_RESIZE_BOTH, + minWidth: 600, + minHeight: 400, + buttons: [ CKEDITOR.dialog.okButton, CKEDITOR.dialog.cancelButton ] + }; + + // Tool function used to return an item from an array based on its id + // property. + var getById = function( array, id, recurse ) { + for ( var i = 0, item; + ( item = array[ i ] ); i++ ) { + if ( item.id == id ) + return item; + if ( recurse && item[ recurse ] ) { + var retval = getById( item[ recurse ], id, recurse ); + if ( retval ) + return retval; + } + } + return null; + }; + + // Tool function used to add an item into an array. + var addById = function( array, newItem, nextSiblingId, recurse, nullIfNotFound ) { + if ( nextSiblingId ) { + for ( var i = 0, item; + ( item = array[ i ] ); i++ ) { + if ( item.id == nextSiblingId ) { + array.splice( i, 0, newItem ); + return newItem; + } + + if ( recurse && item[ recurse ] ) { + var retval = addById( item[ recurse ], newItem, nextSiblingId, recurse, true ); + if ( retval ) + return retval; + } + } + + if ( nullIfNotFound ) + return null; + } + + array.push( newItem ); + return newItem; + }; + + // Tool function used to remove an item from an array based on its id. + var removeById = function( array, id, recurse ) { + for ( var i = 0, item; + ( item = array[ i ] ); i++ ) { + if ( item.id == id ) + return array.splice( i, 1 ); + if ( recurse && item[ recurse ] ) { + var retval = removeById( item[ recurse ], id, recurse ); + if ( retval ) + return retval; + } + } + return null; + }; + + /** + * This class is not really part of the API. It is the `definition` property value + * passed to `dialogDefinition` event handlers. + * + * CKEDITOR.on( 'dialogDefinition', function( evt ) { + * var definition = evt.data.definition; + * var content = definition.getContents( 'page1' ); + * // ... + * } ); + * + * @private + * @class CKEDITOR.dialog.definitionObject + * @extends CKEDITOR.dialog.definition + * @constructor Creates a definitionObject class instance. + */ + function definitionObject( dialog, dialogDefinition ) { + // TODO : Check if needed. + this.dialog = dialog; + + // Transform the contents entries in contentObjects. + var contents = dialogDefinition.contents; + for ( var i = 0, content; + ( content = contents[ i ] ); i++ ) + contents[ i ] = content && new contentObject( dialog, content ); + + CKEDITOR.tools.extend( this, dialogDefinition ); + } + + definitionObject.prototype = { + /** + * Gets a content definition. + * + * @param {String} id The id of the content definition. + * @returns {CKEDITOR.dialog.definition.content} The content definition matching id. + */ + getContents: function( id ) { + return getById( this.contents, id ); + }, + + /** + * Gets a button definition. + * + * @param {String} id The id of the button definition. + * @returns {CKEDITOR.dialog.definition.button} The button definition matching id. + */ + getButton: function( id ) { + return getById( this.buttons, id ); + }, + + /** + * Adds a content definition object under this dialog definition. + * + * @param {CKEDITOR.dialog.definition.content} contentDefinition The + * content definition. + * @param {String} [nextSiblingId] The id of an existing content + * definition which the new content definition will be inserted + * before. Omit if the new content definition is to be inserted as + * the last item. + * @returns {CKEDITOR.dialog.definition.content} The inserted content definition. + */ + addContents: function( contentDefinition, nextSiblingId ) { + return addById( this.contents, contentDefinition, nextSiblingId ); + }, + + /** + * Adds a button definition object under this dialog definition. + * + * @param {CKEDITOR.dialog.definition.button} buttonDefinition The + * button definition. + * @param {String} [nextSiblingId] The id of an existing button + * definition which the new button definition will be inserted + * before. Omit if the new button definition is to be inserted as + * the last item. + * @returns {CKEDITOR.dialog.definition.button} The inserted button definition. + */ + addButton: function( buttonDefinition, nextSiblingId ) { + return addById( this.buttons, buttonDefinition, nextSiblingId ); + }, + + /** + * Removes a content definition from this dialog definition. + * + * @param {String} id The id of the content definition to be removed. + * @returns {CKEDITOR.dialog.definition.content} The removed content definition. + */ + removeContents: function( id ) { + removeById( this.contents, id ); + }, + + /** + * Removes a button definition from the dialog definition. + * + * @param {String} id The id of the button definition to be removed. + * @returns {CKEDITOR.dialog.definition.button} The removed button definition. + */ + removeButton: function( id ) { + removeById( this.buttons, id ); + } + }; + + /** + * This class is not really part of the API. It is the template of the + * objects representing content pages inside the + * CKEDITOR.dialog.definitionObject. + * + * CKEDITOR.on( 'dialogDefinition', function( evt ) { + * var definition = evt.data.definition; + * var content = definition.getContents( 'page1' ); + * content.remove( 'textInput1' ); + * // ... + * } ); + * + * @private + * @class CKEDITOR.dialog.definition.contentObject + * @constructor Creates a contentObject class instance. + */ + function contentObject( dialog, contentDefinition ) { + this._ = { + dialog: dialog + }; + + CKEDITOR.tools.extend( this, contentDefinition ); + } + + contentObject.prototype = { + /** + * Gets a UI element definition under the content definition. + * + * @param {String} id The id of the UI element definition. + * @returns {CKEDITOR.dialog.definition.uiElement} + */ + get: function( id ) { + return getById( this.elements, id, 'children' ); + }, + + /** + * Adds a UI element definition to the content definition. + * + * @param {CKEDITOR.dialog.definition.uiElement} elementDefinition The + * UI elemnet definition to be added. + * @param {String} nextSiblingId The id of an existing UI element + * definition which the new UI element definition will be inserted + * before. Omit if the new button definition is to be inserted as + * the last item. + * @returns {CKEDITOR.dialog.definition.uiElement} The element definition inserted. + */ + add: function( elementDefinition, nextSiblingId ) { + return addById( this.elements, elementDefinition, nextSiblingId, 'children' ); + }, + + /** + * Removes a UI element definition from the content definition. + * + * @param {String} id The id of the UI element definition to be removed. + * @returns {CKEDITOR.dialog.definition.uiElement} The element definition removed. + */ + remove: function( id ) { + removeById( this.elements, id, 'children' ); + } + }; + + function initDragAndDrop( dialog ) { + var lastCoords = null, + abstractDialogCoords = null, + editor = dialog.getParentEditor(), + magnetDistance = editor.config.dialog_magnetDistance, + margins = CKEDITOR.skin.margins || [ 0, 0, 0, 0 ]; + + if ( typeof magnetDistance == 'undefined' ) + magnetDistance = 20; + + function mouseMoveHandler( evt ) { + var dialogSize = dialog.getSize(), + containerSize = dialog.parts.dialog.getParent().getClientSize(), + x = evt.originalEvent.screenX, + y = evt.originalEvent.screenY, + dx = x - lastCoords.x, + dy = y - lastCoords.y, + realX, realY; + + lastCoords = { x: x, y: y }; + abstractDialogCoords.x += dx; + abstractDialogCoords.y += dy; + + if ( abstractDialogCoords.x + margins[ 3 ] < magnetDistance ) { + realX = -margins[ 3 ]; + } else if ( abstractDialogCoords.x - margins[ 1 ] > containerSize.width - dialogSize.width - magnetDistance ) { + realX = containerSize.width - dialogSize.width + ( editor.lang.dir == 'rtl' ? 0 : margins[ 1 ] ); + } else { + realX = abstractDialogCoords.x; + } + + if ( abstractDialogCoords.y + margins[ 0 ] < magnetDistance ) { + realY = -margins[ 0 ]; + } else if ( abstractDialogCoords.y - margins[ 2 ] > containerSize.height - dialogSize.height - magnetDistance ) { + realY = containerSize.height - dialogSize.height + margins[ 2 ]; + } else { + realY = abstractDialogCoords.y; + } + + realX = Math.floor( realX ); + realY = Math.floor( realY ); + + dialog.move( realX, realY, 1 ); + + evt.preventDefault(); + } + + function mouseUpHandler() { + CMS.$(CKEDITOR.document.$).off( 'pointermove', mouseMoveHandler ); + CMS.$(CKEDITOR.document.$).off( 'pointerup', mouseUpHandler ); + + if ( CKEDITOR.env.ie6Compat ) { + var coverDoc = currentCover.getChild( 0 ).getFrameDocument(); + coverDoc.removeListener( 'mousemove', mouseMoveHandler ); + coverDoc.removeListener( 'mouseup', mouseUpHandler ); + } + } + + CMS.$(dialog.parts.title.$).on( 'pointerdown', function( evt ) { + if ( !dialog._.moved ) { + var container = dialog._.element, + element = container.getFirst(); + + element.setStyle( 'position', 'absolute' ); + container.removeStyle( 'display' ); + + dialog._.moved = true; + dialog.layout(); + } + + lastCoords = { x: evt.originalEvent.screenX, y: evt.originalEvent.screenY }; + + CMS.$(CKEDITOR.document.$).on( 'pointermove', mouseMoveHandler ); + CMS.$(CKEDITOR.document.$).on( 'pointerup', mouseUpHandler ); + abstractDialogCoords = dialog.getPosition(); + + if ( CKEDITOR.env.ie6Compat ) { + var coverDoc = currentCover.getChild( 0 ).getFrameDocument(); + coverDoc.on( 'mousemove', mouseMoveHandler ); + coverDoc.on( 'mouseup', mouseUpHandler ); + } + + evt.preventDefault(); + }); + } + + function initResizeHandles( dialog ) { + var def = dialog.definition, + resizable = def.resizable; + + if ( resizable == CKEDITOR.DIALOG_RESIZE_NONE ) + return; + + var editor = dialog.getParentEditor(); + var wrapperWidth, wrapperHeight, viewSize, origin, startSize, dialogCover; + + var mouseDownFn = CKEDITOR.tools.addFunction( function( $event ) { + startSize = dialog.getSize(); + + var content = dialog.parts.contents, + iframeDialog = content.$.getElementsByTagName( 'iframe' ).length, + isBorderBox = !( CKEDITOR.env.gecko || CKEDITOR.env.ie && CKEDITOR.env.quirks ); + + // Shim to help capturing "mousemove" over iframe. + if ( iframeDialog ) { + CMS.$('.cke_dialog_resize_cover').remove(); + dialogCover = CKEDITOR.dom.element.createFromHtml( '
' ); + content.append( dialogCover ); + } + + // Calculate the offset between content and chrome size. + // Use size of current tab panel because we can't rely on size of contents container (#3144). + wrapperHeight = startSize.height - dialog.parts.contents.getFirst( isVisible ).getSize( 'height', isBorderBox ); + wrapperWidth = startSize.width - dialog.parts.contents.getFirst( isVisible ).getSize( 'width', 1 ); + + origin = { x: $event.screenX, y: $event.screenY }; + + viewSize = CKEDITOR.document.getWindow().getViewPaneSize(); + + CMS.$(CKEDITOR.document.$).on( 'pointermove', mouseMoveHandler ); + CMS.$(CKEDITOR.document.$).on( 'pointerup', mouseUpHandler ); + + if ( CKEDITOR.env.ie6Compat ) { + var coverDoc = currentCover.getChild( 0 ).getFrameDocument(); + coverDoc.on( 'mousemove', mouseMoveHandler ); + coverDoc.on( 'mouseup', mouseUpHandler ); + } + + $event.preventDefault && $event.preventDefault(); + + function isVisible( el ) { + return el.isVisible(); + } + } ); + + // Prepend the grip to the dialog. + dialog.on( 'load', function() { + var direction = ''; + if ( resizable == CKEDITOR.DIALOG_RESIZE_WIDTH ) + direction = ' cke_resizer_horizontal'; + else if ( resizable == CKEDITOR.DIALOG_RESIZE_HEIGHT ) + direction = ' cke_resizer_vertical'; + var resizer = CKEDITOR.dom.element.createFromHtml( + '' + + // BLACK LOWER RIGHT TRIANGLE (ltr) + // BLACK LOWER LEFT TRIANGLE (rtl) + ( editor.lang.dir == 'ltr' ? '\u25E2' : '\u25E3' ) + + '' ); + dialog.parts.footer.append( resizer, 1 ); + } ); + editor.on( 'destroy', function() { + CKEDITOR.tools.removeFunction( mouseDownFn ); + } ); + + function mouseMoveHandler( evt ) { + var rtl = editor.lang.dir == 'rtl', + dx = ( evt.originalEvent.screenX - origin.x ) * ( rtl ? -1 : 1 ), + dy = evt.originalEvent.screenY - origin.y, + width = startSize.width, + height = startSize.height, + internalWidth = width + dx * ( dialog._.moved ? 1 : 2 ), + internalHeight = height + dy * ( dialog._.moved ? 1 : 2 ), + element = dialog._.element.getFirst(), + right = rtl && parseInt( element.getComputedStyle( 'right' ), 10 ), + position = dialog.getPosition(); + + position.x = position.x || 0; + position.y = position.y || 0; + + if ( position.y + internalHeight > viewSize.height ) { + internalHeight = viewSize.height - position.y; + } + + if ( ( rtl ? right : position.x ) + internalWidth > viewSize.width ) { + internalWidth = viewSize.width - ( rtl ? right : position.x ); + } + + internalHeight = Math.floor( internalHeight ); + internalWidth = Math.floor( internalWidth ); + + // Make sure the dialog will not be resized to the wrong side when it's in the leftmost position for RTL. + if ( resizable == CKEDITOR.DIALOG_RESIZE_WIDTH || resizable == CKEDITOR.DIALOG_RESIZE_BOTH ) { + width = Math.max( def.minWidth || 0, internalWidth - wrapperWidth ); + } + + if ( resizable == CKEDITOR.DIALOG_RESIZE_HEIGHT || resizable == CKEDITOR.DIALOG_RESIZE_BOTH ) { + height = Math.max( def.minHeight || 0, internalHeight - wrapperHeight ); + } + + dialog.resize( width, height ); + + if ( dialog._.moved ) { + var x = dialog._.position.x, + y = dialog._.position.y; + + updateRatios( dialog, x, y ); + } + + if ( !dialog._.moved ) + dialog.layout(); + + evt.preventDefault(); + } + + function mouseUpHandler() { + CMS.$(CKEDITOR.document.$).off( 'pointermove', mouseMoveHandler ); + CMS.$(CKEDITOR.document.$).off( 'pointerup', mouseUpHandler ); + + if ( dialogCover ) { + dialogCover.remove(); + dialogCover = null; + } + + if ( CKEDITOR.env.ie6Compat ) { + var coverDoc = currentCover.getChild( 0 ).getFrameDocument(); + coverDoc.removeListener( 'mouseup', mouseUpHandler ); + coverDoc.removeListener( 'mousemove', mouseMoveHandler ); + } + } + } + + function updateRatios( dialog, x, y ) { + var containerSize = dialog.parts.dialog.getParent().getClientSize(), + dialogSize = dialog.getSize(), + ratios = dialog._.viewportRatio, + freeSpace = { + width: Math.max( containerSize.width - dialogSize.width, 0 ), + height: Math.max( containerSize.height - dialogSize.height, 0 ) + }; + + ratios.width = freeSpace.width ? ( x / freeSpace.width ) : ratios.width; + ratios.height = freeSpace.height ? ( y / freeSpace.height ) : ratios.height; + + dialog._.viewportRatio = ratios; + } + + // Caching reusable covers and allowing only one cover on screen. + var covers = {}; + + function cancelEvent( ev ) { + ev.data.preventDefault( 1 ); + } + + function showCover( editor ) { + var config = editor.config, + skinName = ( CKEDITOR.skinName || editor.config.skin ), + backgroundColorStyle = config.dialog_backgroundCoverColor || ( skinName == 'moono-lisa' ? 'black' : 'white' ), + backgroundCoverOpacity = config.dialog_backgroundCoverOpacity, + baseFloatZIndex = config.baseFloatZIndex, + coverKey = CKEDITOR.tools.genKey( backgroundColorStyle, backgroundCoverOpacity, baseFloatZIndex ), + coverElement = covers[ coverKey ]; + + CKEDITOR.document.getBody().addClass( 'cke_dialog_open' ); + CMS.$('.cke_dialog_background_cover:not(.cms-ckeditor-dialog-background-cover)').remove(); + + if ( !coverElement ) { + var html = [ + '
' + ]; + + if ( CKEDITOR.env.ie6Compat ) { + // Support for custom document.domain in IE. + var iframeHtml = ''; + + html.push( '' + + '' ); + } + + html.push( '
' ); + + coverElement = CKEDITOR.dom.element.createFromHtml( html.join( '' ) ); + coverElement.setOpacity( backgroundCoverOpacity !== undefined ? backgroundCoverOpacity : 0.5 ); + + coverElement.on( 'keydown', cancelEvent ); + coverElement.on( 'keypress', cancelEvent ); + coverElement.on( 'keyup', cancelEvent ); + + coverElement.appendTo( CKEDITOR.document.getBody() ); + covers[ coverKey ] = coverElement; + } else { + coverElement.show(); + } + + // Makes the dialog cover a focus holder as well. + editor.focusManager.add( coverElement ); + + currentCover = coverElement; + + // Using Safari/Mac, focus must be kept where it is (https://dev.ckeditor.com/ticket/7027) + if ( !( CKEDITOR.env.mac && CKEDITOR.env.webkit ) ) + coverElement.focus(); + } + + function hideCover( editor ) { + CMS.$('.cke_dialog_background_cover:not(.cms-ckeditor-dialog-background-cover)').remove(); + CKEDITOR.document.getBody().removeClass( 'cke_dialog_open' ); + if ( !currentCover ) + return; + + editor.focusManager.remove( currentCover ); + currentCover.hide(); + } + + function removeCovers() { + for ( var coverId in covers ) + covers[ coverId ].remove(); + covers = {}; + } + + var accessKeyProcessors = {}; + + function accessKeyDownHandler( evt ) { + var ctrl = evt.data.$.ctrlKey || evt.data.$.metaKey, + alt = evt.data.$.altKey, + shift = evt.data.$.shiftKey, + key = String.fromCharCode( evt.data.$.keyCode ), + keyProcessor = accessKeyProcessors[ ( ctrl ? 'CTRL+' : '' ) + ( alt ? 'ALT+' : '' ) + ( shift ? 'SHIFT+' : '' ) + key ]; + + if ( !keyProcessor || !keyProcessor.length ) + return; + + keyProcessor = keyProcessor[ keyProcessor.length - 1 ]; + keyProcessor.keydown && keyProcessor.keydown.call( keyProcessor.uiElement, keyProcessor.dialog, keyProcessor.key ); + evt.data.preventDefault(); + } + + function accessKeyUpHandler( evt ) { + var ctrl = evt.data.$.ctrlKey || evt.data.$.metaKey, + alt = evt.data.$.altKey, + shift = evt.data.$.shiftKey, + key = String.fromCharCode( evt.data.$.keyCode ), + keyProcessor = accessKeyProcessors[ ( ctrl ? 'CTRL+' : '' ) + ( alt ? 'ALT+' : '' ) + ( shift ? 'SHIFT+' : '' ) + key ]; + + if ( !keyProcessor || !keyProcessor.length ) + return; + + keyProcessor = keyProcessor[ keyProcessor.length - 1 ]; + if ( keyProcessor.keyup ) { + keyProcessor.keyup.call( keyProcessor.uiElement, keyProcessor.dialog, keyProcessor.key ); + evt.data.preventDefault(); + } + } + + function registerAccessKey( uiElement, dialog, key, downFunc, upFunc ) { + var procList = accessKeyProcessors[ key ] || ( accessKeyProcessors[ key ] = [] ); + procList.push( { + uiElement: uiElement, + dialog: dialog, + key: key, + keyup: upFunc || uiElement.accessKeyUp, + keydown: downFunc || uiElement.accessKeyDown + } ); + } + + function unregisterAccessKey( obj ) { + for ( var i in accessKeyProcessors ) { + var list = accessKeyProcessors[ i ]; + for ( var j = list.length - 1; j >= 0; j-- ) { + if ( list[ j ].dialog == obj || list[ j ].uiElement == obj ) + list.splice( j, 1 ); + } + if ( list.length === 0 ) + delete accessKeyProcessors[ i ]; + } + } + + function tabAccessKeyUp( dialog, key ) { + if ( dialog._.accessKeyMap[ key ] ) + dialog.selectPage( dialog._.accessKeyMap[ key ] ); + } + + function tabAccessKeyDown() {} + + ( function() { + CKEDITOR.ui.dialog = { + /** + * The base class of all dialog UI elements. + * + * @class CKEDITOR.ui.dialog.uiElement + * @constructor Creates a uiElement class instance. + * @param {CKEDITOR.dialog} dialog Parent dialog object. + * @param {CKEDITOR.dialog.definition.uiElement} elementDefinition Element + * definition. + * + * Accepted fields: + * + * * `id` (Required) The id of the UI element. See {@link CKEDITOR.dialog#getContentElement}. + * * `type` (Required) The type of the UI element. The + * value to this field specifies which UI element class will be used to + * generate the final widget. + * * `title` (Optional) The popup tooltip for the UI + * element. + * * `hidden` (Optional) A flag that tells if the element + * should be initially visible. + * * `className` (Optional) Additional CSS class names + * to add to the UI element. Separated by space. + * * `style` (Optional) Additional CSS inline styles + * to add to the UI element. A semicolon (;) is required after the last + * style declaration. + * * `accessKey` (Optional) The alphanumeric access key + * for this element. Access keys are automatically prefixed by CTRL. + * * `on*` (Optional) Any UI element definition field that + * starts with `on` followed immediately by a capital letter and + * probably more letters is an event handler. Event handlers may be further + * divided into registered event handlers and DOM event handlers. Please + * refer to {@link CKEDITOR.ui.dialog.uiElement#registerEvents} and + * {@link CKEDITOR.ui.dialog.uiElement#eventProcessors} for more information. + * + * @param {Array} htmlList + * List of HTML code to be added to the dialog's content area. + * @param {Function/String} [nodeNameArg='div'] + * A function returning a string, or a simple string for the node name for + * the root DOM node. + * @param {Function/Object} [stylesArg={}] + * A function returning an object, or a simple object for CSS styles applied + * to the DOM node. + * @param {Function/Object} [attributesArg={}] + * A fucntion returning an object, or a simple object for attributes applied + * to the DOM node. + * @param {Function/String} [contentsArg=''] + * A function returning a string, or a simple string for the HTML code inside + * the root DOM node. Default is empty string. + */ + uiElement: function( dialog, elementDefinition, htmlList, nodeNameArg, stylesArg, attributesArg, contentsArg ) { + if ( arguments.length < 4 ) + return; + + var nodeName = ( nodeNameArg.call ? nodeNameArg( elementDefinition ) : nodeNameArg ) || 'div', + html = [ '<', nodeName, ' ' ], + styles = ( stylesArg && stylesArg.call ? stylesArg( elementDefinition ) : stylesArg ) || {}, + attributes = ( attributesArg && attributesArg.call ? attributesArg( elementDefinition ) : attributesArg ) || {}, + innerHTML = ( contentsArg && contentsArg.call ? contentsArg.call( this, dialog, elementDefinition ) : contentsArg ) || '', + domId = this.domId = attributes.id || CKEDITOR.tools.getNextId() + '_uiElement', + i; + + if ( elementDefinition.requiredContent && !dialog.getParentEditor().filter.check( elementDefinition.requiredContent ) ) { + styles.display = 'none'; + this.notAllowed = true; + } + + // Set the id, a unique id is required for getElement() to work. + attributes.id = domId; + + // Set the type and definition CSS class names. + var classes = {}; + if ( elementDefinition.type ) + classes[ 'cke_dialog_ui_' + elementDefinition.type ] = 1; + if ( elementDefinition.className ) + classes[ elementDefinition.className ] = 1; + if ( elementDefinition.disabled ) + classes.cke_disabled = 1; + + var attributeClasses = ( attributes[ 'class' ] && attributes[ 'class' ].split ) ? attributes[ 'class' ].split( ' ' ) : []; + for ( i = 0; i < attributeClasses.length; i++ ) { + if ( attributeClasses[ i ] ) + classes[ attributeClasses[ i ] ] = 1; + } + var finalClasses = []; + for ( i in classes ) + finalClasses.push( i ); + attributes[ 'class' ] = finalClasses.join( ' ' ); + + // Set the popup tooltop. + if ( elementDefinition.title ) + attributes.title = elementDefinition.title; + + // Write the inline CSS styles. + var styleStr = ( elementDefinition.style || '' ).split( ';' ); + + // Element alignment support. + if ( elementDefinition.align ) { + var align = elementDefinition.align; + styles[ 'margin-left' ] = align == 'left' ? 0 : 'auto'; + styles[ 'margin-right' ] = align == 'right' ? 0 : 'auto'; + } + + for ( i in styles ) + styleStr.push( i + ':' + styles[ i ] ); + if ( elementDefinition.hidden ) + styleStr.push( 'display:none' ); + for ( i = styleStr.length - 1; i >= 0; i-- ) { + if ( styleStr[ i ] === '' ) + styleStr.splice( i, 1 ); + } + if ( styleStr.length > 0 ) + attributes.style = ( attributes.style ? ( attributes.style + '; ' ) : '' ) + styleStr.join( '; ' ); + + // Write the attributes. + for ( i in attributes ) + html.push( i + '="' + CKEDITOR.tools.htmlEncode( attributes[ i ] ) + '" ' ); + + // Write the content HTML. + html.push( '>', innerHTML, '' ); + + // Add contents to the parent HTML array. + htmlList.push( html.join( '' ) ); + + ( this._ || ( this._ = {} ) ).dialog = dialog; + + // Override isChanged if it is defined in element definition. + if ( typeof elementDefinition.isChanged == 'boolean' ) + this.isChanged = function() { + return elementDefinition.isChanged; + }; + if ( typeof elementDefinition.isChanged == 'function' ) + this.isChanged = elementDefinition.isChanged; + + // Overload 'get(set)Value' on definition. + if ( typeof elementDefinition.setValue == 'function' ) { + this.setValue = CKEDITOR.tools.override( this.setValue, function( org ) { + return function( val ) { + org.call( this, elementDefinition.setValue.call( this, val ) ); + }; + } ); + } + + if ( typeof elementDefinition.getValue == 'function' ) { + this.getValue = CKEDITOR.tools.override( this.getValue, function( org ) { + return function() { + return elementDefinition.getValue.call( this, org.call( this ) ); + }; + } ); + } + + // Add events. + CKEDITOR.event.implementOn( this ); + + this.registerEvents( elementDefinition ); + if ( this.accessKeyUp && this.accessKeyDown && elementDefinition.accessKey ) + registerAccessKey( this, dialog, 'CTRL+' + elementDefinition.accessKey ); + + var me = this; + dialog.on( 'load', function() { + var input = me.getInputElement(); + if ( input ) { + var focusClass = me.type in { 'checkbox': 1, 'ratio': 1 } && CKEDITOR.env.ie && CKEDITOR.env.version < 8 ? 'cke_dialog_ui_focused' : ''; + input.on( 'focus', function() { + dialog._.tabBarMode = false; + dialog._.hasFocus = true; + me.fire( 'focus' ); + focusClass && this.addClass( focusClass ); + + } ); + + input.on( 'blur', function() { + me.fire( 'blur' ); + focusClass && this.removeClass( focusClass ); + } ); + } + } ); + + // Completes this object with everything we have in the + // definition. + CKEDITOR.tools.extend( this, elementDefinition ); + + // Register the object as a tab focus if it can be included. + if ( this.keyboardFocusable ) { + this.tabIndex = elementDefinition.tabIndex || 0; + + this.focusIndex = dialog._.focusList.push( this ) - 1; + this.on( 'focus', function() { + dialog._.currentFocusIndex = me.focusIndex; + } ); + } + }, + + /** + * Horizontal layout box for dialog UI elements, auto-expends to available width of container. + * + * @class CKEDITOR.ui.dialog.hbox + * @extends CKEDITOR.ui.dialog.uiElement + * @constructor Creates a hbox class instance. + * @param {CKEDITOR.dialog} dialog Parent dialog object. + * @param {Array} childObjList + * Array of {@link CKEDITOR.ui.dialog.uiElement} objects inside this container. + * @param {Array} childHtmlList + * Array of HTML code that correspond to the HTML output of all the + * objects in childObjList. + * @param {Array} htmlList + * Array of HTML code that this element will output to. + * @param {CKEDITOR.dialog.definition.uiElement} elementDefinition + * The element definition. Accepted fields: + * + * * `widths` (Optional) The widths of child cells. + * * `height` (Optional) The height of the layout. + * * `padding` (Optional) The padding width inside child cells. + * * `align` (Optional) The alignment of the whole layout. + */ + hbox: function( dialog, childObjList, childHtmlList, htmlList, elementDefinition ) { + if ( arguments.length < 4 ) + return; + + this._ || ( this._ = {} ); + + var children = this._.children = childObjList, + widths = elementDefinition && elementDefinition.widths || null, + height = elementDefinition && elementDefinition.height || null, + styles = {}, + i; + /** @ignore */ + var innerHTML = function() { + var html = [ '' ]; + for ( i = 0; i < childHtmlList.length; i++ ) { + var className = 'cke_dialog_ui_hbox_child', + styles = []; + if ( i === 0 ) { + className = 'cke_dialog_ui_hbox_first'; + } + if ( i == childHtmlList.length - 1 ) { + className = 'cke_dialog_ui_hbox_last'; + } + + html.push( ' 0 ) { + html.push( 'style="' + styles.join( '; ' ) + '" ' ); + } + html.push( '>', childHtmlList[ i ], '' ); + } + html.push( '' ); + return html.join( '' ); + }; + + var attribs = { role: 'presentation' }; + elementDefinition && elementDefinition.align && ( attribs.align = elementDefinition.align ); + + CKEDITOR.ui.dialog.uiElement.call( this, dialog, elementDefinition || { type: 'hbox' }, htmlList, 'table', styles, attribs, innerHTML ); + }, + + /** + * Vertical layout box for dialog UI elements. + * + * @class CKEDITOR.ui.dialog.vbox + * @extends CKEDITOR.ui.dialog.hbox + * @constructor Creates a vbox class instance. + * @param {CKEDITOR.dialog} dialog Parent dialog object. + * @param {Array} childObjList + * Array of {@link CKEDITOR.ui.dialog.uiElement} objects inside this container. + * @param {Array} childHtmlList + * Array of HTML code that correspond to the HTML output of all the + * objects in childObjList. + * @param {Array} htmlList Array of HTML code that this element will output to. + * @param {CKEDITOR.dialog.definition.uiElement} elementDefinition + * The element definition. Accepted fields: + * + * * `width` (Optional) The width of the layout. + * * `heights` (Optional) The heights of individual cells. + * * `align` (Optional) The alignment of the layout. + * * `padding` (Optional) The padding width inside child cells. + * * `expand` (Optional) Whether the layout should expand + * vertically to fill its container. + */ + vbox: function( dialog, childObjList, childHtmlList, htmlList, elementDefinition ) { + if ( arguments.length < 3 ) + return; + + this._ || ( this._ = {} ); + + var children = this._.children = childObjList, + width = elementDefinition && elementDefinition.width || null, + heights = elementDefinition && elementDefinition.heights || null; + /** @ignore */ + var innerHTML = function() { + var html = [ '' ); + for ( var i = 0; i < childHtmlList.length; i++ ) { + var styles = []; + html.push( '' ); + } + html.push( '
0 ) + html.push( 'style="', styles.join( '; ' ), '" ' ); + html.push( ' class="cke_dialog_ui_vbox_child">', childHtmlList[ i ], '
' ); + return html.join( '' ); + }; + CKEDITOR.ui.dialog.uiElement.call( this, dialog, elementDefinition || { type: 'vbox' }, htmlList, 'div', null, { role: 'presentation' }, innerHTML ); + } + }; + } )(); + + /** @class CKEDITOR.ui.dialog.uiElement */ + CKEDITOR.ui.dialog.uiElement.prototype = { + /** + * Gets the root DOM element of this dialog UI object. + * + * uiElement.getElement().hide(); + * + * @returns {CKEDITOR.dom.element} Root DOM element of UI object. + */ + getElement: function() { + return CKEDITOR.document.getById( this.domId ); + }, + + /** + * Gets the DOM element that the user inputs values. + * + * This function is used by {@link #setValue}, {@link #getValue} and {@link #focus}. It should + * be overrided in child classes where the input element isn't the root + * element. + * + * var rawValue = textInput.getInputElement().$.value; + * + * @returns {CKEDITOR.dom.element} The element where the user input values. + */ + getInputElement: function() { + return this.getElement(); + }, + + /** + * Gets the parent dialog object containing this UI element. + * + * var dialog = uiElement.getDialog(); + * + * @returns {CKEDITOR.dialog} Parent dialog object. + */ + getDialog: function() { + return this._.dialog; + }, + + /** + * Sets the value of this dialog UI object. + * + * uiElement.setValue( 'Dingo' ); + * + * @chainable + * @param {Object} value The new value. + * @param {Boolean} noChangeEvent Internal commit, to supress `change` event on this element. + */ + setValue: function( value, noChangeEvent ) { + this.getInputElement().setValue( value ); + !noChangeEvent && this.fire( 'change', { value: value } ); + return this; + }, + + /** + * Gets the current value of this dialog UI object. + * + * var myValue = uiElement.getValue(); + * + * @returns {Object} The current value. + */ + getValue: function() { + return this.getInputElement().getValue(); + }, + + /** + * Tells whether the UI object's value has changed. + * + * if ( uiElement.isChanged() ) + * confirm( 'Value changed! Continue?' ); + * + * @returns {Boolean} `true` if changed, `false` if not changed. + */ + isChanged: function() { + // Override in input classes. + return false; + }, + + /** + * Selects the parent tab of this element. Usually called by focus() or overridden focus() methods. + * + * focus : function() { + * this.selectParentTab(); + * // do something else. + * } + * + * @chainable + */ + selectParentTab: function() { + var element = this.getInputElement(), + cursor = element, + tabId; + while ( ( cursor = cursor.getParent() ) && cursor.$.className.search( 'cke_dialog_page_contents' ) == -1 ) { + + } + + // Some widgets don't have parent tabs (e.g. OK and Cancel buttons). + if ( !cursor ) + return this; + + tabId = cursor.getAttribute( 'name' ); + // Avoid duplicate select. + if ( this._.dialog._.currentTabId != tabId ) + this._.dialog.selectPage( tabId ); + return this; + }, + + /** + * Puts the focus to the UI object. Switches tabs if the UI object isn't in the active tab page. + * + * uiElement.focus(); + * + * @chainable + */ + focus: function() { + this.selectParentTab().getInputElement().focus(); + return this; + }, + + /** + * Registers the `on*` event handlers defined in the element definition. + * + * The default behavior of this function is: + * + * 1. If the on* event is defined in the class's eventProcesors list, + * then the registration is delegated to the corresponding function + * in the eventProcessors list. + * 2. If the on* event is not defined in the eventProcessors list, then + * register the event handler under the corresponding DOM event of + * the UI element's input DOM element (as defined by the return value + * of {@link #getInputElement}). + * + * This function is only called at UI element instantiation, but can + * be overridded in child classes if they require more flexibility. + * + * @chainable + * @param {CKEDITOR.dialog.definition.uiElement} definition The UI element + * definition. + */ + registerEvents: function( definition ) { + var regex = /^on([A-Z]\w+)/, + match; + + var registerDomEvent = function( uiElement, dialog, eventName, func ) { + dialog.on( 'load', function() { + uiElement.getInputElement().on( eventName, func, uiElement ); + } ); + }; + + for ( var i in definition ) { + if ( !( match = i.match( regex ) ) ) + continue; + if ( this.eventProcessors[ i ] ) + this.eventProcessors[ i ].call( this, this._.dialog, definition[ i ] ); + else + registerDomEvent( this, this._.dialog, match[ 1 ].toLowerCase(), definition[ i ] ); + } + + return this; + }, + + /** + * The event processor list used by + * {@link CKEDITOR.ui.dialog.uiElement#getInputElement} at UI element + * instantiation. The default list defines three `on*` events: + * + * 1. `onLoad` - Called when the element's parent dialog opens for the + * first time. + * 2. `onShow` - Called whenever the element's parent dialog opens. + * 3. `onHide` - Called whenever the element's parent dialog closes. + * + * // This connects the 'click' event in CKEDITOR.ui.dialog.button to onClick + * // handlers in the UI element's definitions. + * CKEDITOR.ui.dialog.button.eventProcessors = CKEDITOR.tools.extend( {}, + * CKEDITOR.ui.dialog.uiElement.prototype.eventProcessors, + * { onClick : function( dialog, func ) { this.on( 'click', func ); } }, + * true + * ); + * + * @property {Object} + */ + eventProcessors: { + onLoad: function( dialog, func ) { + dialog.on( 'load', func, this ); + }, + + onShow: function( dialog, func ) { + dialog.on( 'show', func, this ); + }, + + onHide: function( dialog, func ) { + dialog.on( 'hide', func, this ); + } + }, + + /** + * The default handler for a UI element's access key down event, which + * tries to put focus to the UI element. + * + * Can be overridded in child classes for more sophisticaed behavior. + * + * @param {CKEDITOR.dialog} dialog The parent dialog object. + * @param {String} key The key combination pressed. Since access keys + * are defined to always include the `CTRL` key, its value should always + * include a `'CTRL+'` prefix. + */ + accessKeyDown: function() { + this.focus(); + }, + + /** + * The default handler for a UI element's access key up event, which + * does nothing. + * + * Can be overridded in child classes for more sophisticated behavior. + * + * @param {CKEDITOR.dialog} dialog The parent dialog object. + * @param {String} key The key combination pressed. Since access keys + * are defined to always include the `CTRL` key, its value should always + * include a `'CTRL+'` prefix. + */ + accessKeyUp: function() {}, + + /** + * Disables a UI element. + */ + disable: function() { + var element = this.getElement(), + input = this.getInputElement(); + input.setAttribute( 'disabled', 'true' ); + element.addClass( 'cke_disabled' ); + }, + + /** + * Enables a UI element. + */ + enable: function() { + var element = this.getElement(), + input = this.getInputElement(); + input.removeAttribute( 'disabled' ); + element.removeClass( 'cke_disabled' ); + }, + + /** + * Determines whether an UI element is enabled or not. + * + * @returns {Boolean} Whether the UI element is enabled. + */ + isEnabled: function() { + return !this.getElement().hasClass( 'cke_disabled' ); + }, + + /** + * Determines whether an UI element is visible or not. + * + * @returns {Boolean} Whether the UI element is visible. + */ + isVisible: function() { + return this.getInputElement().isVisible(); + }, + + /** + * Determines whether an UI element is focus-able or not. + * Focus-able is defined as being both visible and enabled. + * + * @returns {Boolean} Whether the UI element can be focused. + */ + isFocusable: function() { + if ( !this.isEnabled() || !this.isVisible() ) + return false; + return true; + } + }; + + /** @class CKEDITOR.ui.dialog.hbox */ + CKEDITOR.ui.dialog.hbox.prototype = CKEDITOR.tools.extend( new CKEDITOR.ui.dialog.uiElement(), { + /** + * Gets a child UI element inside this container. + * + * var checkbox = hbox.getChild( [0,1] ); + * checkbox.setValue( true ); + * + * @param {Array/Number} indices An array or a single number to indicate the child's + * position in the container's descendant tree. Omit to get all the children in an array. + * @returns {Array/CKEDITOR.ui.dialog.uiElement} Array of all UI elements in the container + * if no argument given, or the specified UI element if indices is given. + */ + getChild: function( indices ) { + // If no arguments, return a clone of the children array. + if ( arguments.length < 1 ) + return this._.children.concat(); + + // If indices isn't array, make it one. + if ( !indices.splice ) + indices = [ indices ]; + + // Retrieve the child element according to tree position. + if ( indices.length < 2 ) + return this._.children[ indices[ 0 ] ]; + else + return ( this._.children[ indices[ 0 ] ] && this._.children[ indices[ 0 ] ].getChild ) ? this._.children[ indices[ 0 ] ].getChild( indices.slice( 1, indices.length ) ) : null; + } + }, true ); + + CKEDITOR.ui.dialog.vbox.prototype = new CKEDITOR.ui.dialog.hbox(); + + ( function() { + var commonBuilder = { + build: function( dialog, elementDefinition, output ) { + var children = elementDefinition.children, + child, + childHtmlList = [], + childObjList = []; + for ( var i = 0; + ( i < children.length && ( child = children[ i ] ) ); i++ ) { + var childHtml = []; + childHtmlList.push( childHtml ); + childObjList.push( CKEDITOR.dialog._.uiElementBuilders[ child.type ].build( dialog, child, childHtml ) ); + } + return new CKEDITOR.ui.dialog[ elementDefinition.type ]( dialog, childObjList, childHtmlList, output, elementDefinition ); + } + }; + + CKEDITOR.dialog.addUIElement( 'hbox', commonBuilder ); + CKEDITOR.dialog.addUIElement( 'vbox', commonBuilder ); + } )(); + + /** + * Generic dialog command. It opens a specific dialog when executed. + * + * // Register the "link" command which opens the "link" dialog. + * editor.addCommand( 'link', new CKEDITOR.dialogCommand( 'link' ) ); + * + * @class + * @constructor Creates a dialogCommand class instance. + * @extends CKEDITOR.commandDefinition + * @param {String} dialogName The name of the dialog to open when executing + * this command. + * @param {Object} [ext] Additional command definition's properties. + * @param {String} [ext.tabId] You can provide additional property (`tabId`) if you wish to open the dialog on a specific tabId. + * + * // Open the dialog on the 'keystroke' tabId. + * editor.addCommand( 'keystroke', new CKEDITOR.dialogCommand( 'a11yHelp', { tabId: 'keystroke' } ) ); + */ + CKEDITOR.dialogCommand = function( dialogName, ext ) { + this.dialogName = dialogName; + CKEDITOR.tools.extend( this, ext, true ); + }; + + CKEDITOR.dialogCommand.prototype = { + exec: function( editor ) { + var tabId = this.tabId; + editor.openDialog( this.dialogName, function( dialog ) { + // Select different tab if it's provided (#830). + if ( tabId ) { + dialog.selectPage( tabId ); + } + } ); + }, + + // Dialog commands just open a dialog ui, thus require no undo logic, + // undo support should dedicate to specific dialog implementation. + canUndo: false, + + editorFocus: 1 + }; + + ( function() { + var notEmptyRegex = /^([a]|[^a])+$/, + integerRegex = /^\d*$/, + numberRegex = /^\d*(?:\.\d+)?$/, + htmlLengthRegex = /^(((\d*(\.\d+))|(\d*))(px|\%)?)?$/, + cssLengthRegex = /^(((\d*(\.\d+))|(\d*))(px|em|ex|in|cm|mm|pt|pc|\%)?)?$/i, + inlineStyleRegex = /^(\s*[\w-]+\s*:\s*[^:;]+(?:;|$))*$/; + + /** + * {@link CKEDITOR.dialog Dialog} `OR` logical value indicates the + * relation between validation functions. + * + * @readonly + * @property {Number} [=1] + * @member CKEDITOR + */ + CKEDITOR.VALIDATE_OR = 1; + + /** + * {@link CKEDITOR.dialog Dialog} `AND` logical value indicates the + * relation between validation functions. + * + * @readonly + * @property {Number} [=2] + * @member CKEDITOR + */ + CKEDITOR.VALIDATE_AND = 2; + + /** + * The namespace with dialog helper validation functions. + * + * @class + * @singleton + */ + CKEDITOR.dialog.validate = { + /** + * Performs validation functions composition. + * + * ```javascript + * CKEDITOR.dialog.validate.functions( + * CKEDITOR.dialog.validate.notEmpty( 'Value is required.' ), + * CKEDITOR.dialog.validate.number( 'Value is not a number.' ), + * 'error!' + * ); + * ``` + * + * @param {Function...} validators Validation functions which will be composed into a single validator. + * @param {String} [msg] Error message returned by the composed validation function. + * @param {Number} [relation=CKEDITOR.VALIDATE_OR] Indicates a relation between validation functions. + * Use {@link CKEDITOR#VALIDATE_OR} or {@link CKEDITOR#VALIDATE_AND}. + * + * @returns {Function} Composed validation function. + */ + functions: function() { + var args = arguments; + return function() { + // It's important for validate functions to be able to accept the value + // as argument in addition to this.getValue(), so that it is possible to + // combine validate functions together to make more sophisticated + // validators. + var value = this && this.getValue ? this.getValue() : args[ 0 ]; + + var msg, + relation = CKEDITOR.VALIDATE_AND, + functions = [], + i; + + for ( i = 0; i < args.length; i++ ) { + if ( typeof args[ i ] == 'function' ) + functions.push( args[ i ] ); + else + break; + } + + if ( i < args.length && typeof args[ i ] == 'string' ) { + msg = args[ i ]; + i++; + } + + if ( i < args.length && typeof args[ i ] == 'number' ) + relation = args[ i ]; + + var passed = ( relation == CKEDITOR.VALIDATE_AND ? true : false ); + for ( i = 0; i < functions.length; i++ ) { + if ( relation == CKEDITOR.VALIDATE_AND ) + passed = passed && functions[ i ]( value ); + else + passed = passed || functions[ i ]( value ); + } + + return !passed ? msg : true; + }; + }, + + /** + * Checks if a dialog UI element value meets the regex condition. + * + * ```javascript + * CKEDITOR.dialog.validate.regex( 'error!', /^\d*$/ )( '123' ) // true + * CKEDITOR.dialog.validate.regex( 'error!' )( '123.321' ) // error! + * ``` + * + * @param {RegExp} regex Regular expression used to validate the value. + * @param {String} msg Validator error message. + * @returns {Function} Validation function. + */ + regex: function( regex, msg ) { + /* + * Can be greatly shortened by deriving from functions validator if code size + * turns out to be more important than performance. + */ + return function() { + var value = this && this.getValue ? this.getValue() : arguments[ 0 ]; + return !regex.test( value ) ? msg : true; + }; + }, + + /** + * Checks if a dialog UI element value is not an empty string. + * + * ```javascript + * CKEDITOR.dialog.validate.notEmpty( 'error!' )( 'test' ) // true + * CKEDITOR.dialog.validate.notEmpty( 'error!' )( ' ' ) // error! + * ``` + * + * @param {String} msg Validator error message. + * @returns {Function} Validation function. + */ + notEmpty: function( msg ) { + return this.regex( notEmptyRegex, msg ); + }, + + /** + * Checks if a dialog UI element value is an Integer. + * + * ```javascript + * CKEDITOR.dialog.validate.integer( 'error!' )( '123' ) // true + * CKEDITOR.dialog.validate.integer( 'error!' )( '123.321' ) // error! + * ``` + * + * @param {String} msg Validator error message. + * @returns {Function} Validation function. + */ + integer: function( msg ) { + return this.regex( integerRegex, msg ); + }, + + /** + * Checks if a dialog UI element value is a Number. + * + * ```javascript + * CKEDITOR.dialog.validate.number( 'error!' )( '123' ) // true + * CKEDITOR.dialog.validate.number( 'error!' )( 'test' ) // error! + * ``` + * + * @param {String} msg Validator error message. + * @returns {Function} Validation function. + */ + 'number': function( msg ) { + return this.regex( numberRegex, msg ); + }, + + /** + * Checks if a dialog UI element value is a correct CSS length value. + * + * It allows `px`, `em`, `ex`, `in`, `cm`, `mm`, `pt`, `pc` units. + * + * ```javascript + * CKEDITOR.dialog.validate.cssLength( 'error!' )( '10pt' ) // true + * CKEDITOR.dialog.validate.cssLength( 'error!' )( 'solid' ) // error! + * ``` + * + * @param {String} msg Validator error message. + * @returns {Function} Validation function. + */ + 'cssLength': function( msg ) { + return this.functions( function( val ) { + return cssLengthRegex.test( CKEDITOR.tools.trim( val ) ); + }, msg ); + }, + + /** + * Checks if a dialog UI element value is a correct HTML length value. + * + * It allows `px` units. + * + * ```javascript + * CKEDITOR.dialog.validate.htmlLength( 'error!' )( '10px' ) // true + * CKEDITOR.dialog.validate.htmlLength( 'error!' )( 'solid' ) // error! + * ``` + * + * @param {String} msg Validator error message. + * @returns {Function} Validation function. + */ + 'htmlLength': function( msg ) { + return this.functions( function( val ) { + return htmlLengthRegex.test( CKEDITOR.tools.trim( val ) ); + }, msg ); + }, + + /** + * Checks if a dialog UI element value is a correct CSS inline style. + * + * ```javascript + * CKEDITOR.dialog.validate.inlineStyle( 'error!' )( 'height: 10px; width: 20px;' ) // true + * CKEDITOR.dialog.validate.inlineStyle( 'error!' )( 'test' ) // error! + * ``` + * + * @param {String} msg Validator error message. + * @returns {Function} Validation function. + */ + 'inlineStyle': function( msg ) { + return this.functions( function( val ) { + return inlineStyleRegex.test( CKEDITOR.tools.trim( val ) ); + }, msg ); + }, + + /** + * Checks if a dialog UI element value and the given value are equal. + * + * ```javascript + * CKEDITOR.dialog.validate.equals( 'foo', 'error!' )( 'foo' ) // true + * CKEDITOR.dialog.validate.equals( 'foo', 'error!' )( 'baz' ) // error! + * ``` + * + * @param {String} value The value to compare. + * @param {String} msg Validator error message. + * @returns {Function} Validation function. + */ + equals: function( value, msg ) { + return this.functions( function( val ) { + return val == value; + }, msg ); + }, + + /** + * Checks if a dialog UI element value and the given value are not equal. + * + * ```javascript + * CKEDITOR.dialog.validate.notEqual( 'foo', 'error!' )( 'baz' ) // true + * CKEDITOR.dialog.validate.notEqual( 'foo', 'error!' )( 'foo' ) // error! + * ``` + * + * @param {String} value The value to compare. + * @param {String} msg Validator error message. + * @returns {Function} Validation function. + */ + notEqual: function( value, msg ) { + return this.functions( function( val ) { + return val != value; + }, msg ); + } + }; + + CKEDITOR.on( 'instanceDestroyed', function( evt ) { + // Remove dialog cover on last instance destroy. + if ( CKEDITOR.tools.isEmpty( CKEDITOR.instances ) ) { + var currentTopDialog; + while ( ( currentTopDialog = CKEDITOR.dialog._.currentTop ) ) + currentTopDialog.hide(); + removeCovers(); + } + + var dialogs = evt.editor._.storedDialogs; + for ( var name in dialogs ) + dialogs[ name ].destroy(); + + } ); + + } )(); + + // Extend the CKEDITOR.editor class with dialog specific functions. + CKEDITOR.tools.extend( CKEDITOR.editor.prototype, { + /** + * Loads and opens a registered dialog. + * + * CKEDITOR.instances.editor1.openDialog( 'smiley' ); + * + * @member CKEDITOR.editor + * @param {String} dialogName The registered name of the dialog. + * @param {Function} callback The function to be invoked after a dialog instance is created. + * @param {CKEDITOR.dom.element/CKEDITOR.plugins.widget/Object} [forceModel] Forces opening the dialog + * using the given model as a subject. The forced model will take precedence before the + * {@link CKEDITOR.dialog.definition#getModel} method. Available since 4.13.0. + * @returns {CKEDITOR.dialog} The dialog object corresponding to the dialog displayed or + * `null` if the dialog name is not registered. + * @see CKEDITOR.dialog#add + */ + openDialog: function( dialogName, callback, forceModel ) { + var dialog = null, dialogDefinitions = CKEDITOR.dialog._.dialogDefinitions[ dialogName ]; + + if ( CKEDITOR.dialog._.currentTop === null ) + showCover( this ); + + // If the dialogDefinition is already loaded, open it immediately. + if ( typeof dialogDefinitions == 'function' ) { + var storedDialogs = this._.storedDialogs || ( this._.storedDialogs = {} ); + + dialog = storedDialogs[ dialogName ] || ( storedDialogs[ dialogName ] = new CKEDITOR.dialog( this, dialogName ) ); + + dialog.setModel( forceModel ); + + callback && callback.call( dialog, dialog ); + dialog.show(); + + } else if ( dialogDefinitions == 'failed' ) { + hideCover( this ); + throw new Error( '[CKEDITOR.dialog.openDialog] Dialog "' + dialogName + '" failed when loading definition.' ); + } else if ( typeof dialogDefinitions == 'string' ) { + + CKEDITOR.scriptLoader.load( CKEDITOR.getUrl( dialogDefinitions ), + function() { + var dialogDefinition = CKEDITOR.dialog._.dialogDefinitions[ dialogName ]; + // In case of plugin error, mark it as loading failed. + if ( typeof dialogDefinition != 'function' ) + CKEDITOR.dialog._.dialogDefinitions[ dialogName ] = 'failed'; + + this.openDialog( dialogName, callback, forceModel ); + }, this, 0, 1 ); + } + + CKEDITOR.skin.loadPart( 'dialog' ); + + // Dissolve model, so `definition.getModel` can take precedence + // in the next dialog opening (#2423). + if ( dialog ) { + dialog.once( 'hide', function() { + dialog.setModel( null ); + }, null, null, 999 ); + } + + return dialog; + } + } ); +} )(); + +var stylesLoaded = false; + +CKEDITOR.plugins.registered['dialog'] = null; +CKEDITOR.plugins.add( 'dialog', { + requires: 'dialogui', + init: function( editor ) { + if ( !stylesLoaded ) { + CKEDITOR.document.appendStyleSheet( this.path + 'styles/dialog.css' ); + stylesLoaded = true; + } + + editor.on( 'doubleclick', function( evt ) { + if ( evt.data.dialog ) + editor.openDialog( evt.data.dialog ); + }, null, null, 999 ); + } +} ); +CKEDITOR.plugins.add( 'cmsdialog', { + requires: 'dialogui', + init: function( editor ) { + } +} ); + +// Dialog related configurations. + +/** + * The color of the dialog background cover. It should be a valid CSS color string. + * + * config.dialog_backgroundCoverColor = 'rgb(255, 254, 253)'; + * + * @cfg {String} [dialog_backgroundCoverColor='white'] + * @member CKEDITOR.config + */ + +/** + * The opacity of the dialog background cover. It should be a number within the + * range `[0.0, 1.0]`. + * + * config.dialog_backgroundCoverOpacity = 0.7; + * + * @cfg {Number} [dialog_backgroundCoverOpacity=0.5] + * @member CKEDITOR.config + */ + +/** + * If the dialog has more than one tab, put focus into the first tab as soon as dialog is opened. + * + * config.dialog_startupFocusTab = true; + * + * @cfg {Boolean} [dialog_startupFocusTab=false] + * @member CKEDITOR.config + */ + +/** + * The distance of magnetic borders used in moving and resizing dialogs, + * measured in pixels. + * + * config.dialog_magnetDistance = 30; + * + * @cfg {Number} [dialog_magnetDistance=20] + * @member CKEDITOR.config + */ + +/** + * The guideline to follow when generating the dialog buttons. There are 3 possible options: + * + * * `'OS'` - the buttons will be displayed in the default order of the user's OS; + * * `'ltr'` - for Left-To-Right order; + * * `'rtl'` - for Right-To-Left order. + * + * Example: + * + * config.dialog_buttonsOrder = 'rtl'; + * + * @since 3.5.0 + * @cfg {String} [dialog_buttonsOrder='OS'] + * @member CKEDITOR.config + */ + +/** + * The dialog contents to removed. It's a string composed by dialog name and tab name with a colon between them. + * + * Separate each pair with semicolon (see example). + * + * **Note:** All names are case-sensitive. + * + * **Note:** Be cautious when specifying dialog tabs that are mandatory, + * like `'info'`, dialog functionality might be broken because of this! + * + * config.removeDialogTabs = 'flash:advanced;image:Link'; + * + * @since 3.5.0 + * @cfg {String} [removeDialogTabs=''] + * @member CKEDITOR.config + */ + +/** + * Tells if user should not be asked to confirm close, if any dialog field was modified. + * By default it is set to `false` meaning that the confirmation dialog will be shown. + * + * config.dialog_noConfirmCancel = true; + * + * @since 4.3.0 + * @cfg {Boolean} [dialog_noConfirmCancel=false] + * @member CKEDITOR.config + */ + +/** + * Event fired when a dialog definition is about to be used to create a dialog in + * an editor instance. This event makes it possible to customize the definition + * before creating it. + * + * Note that this event is called only the first time a specific dialog is + * opened. Successive openings will use the cached dialog, and this event will + * not get fired. + * + * @event dialogDefinition + * @member CKEDITOR + * @param {Object} data + * @param {String} data.name The name of the dialog. + * @param {CKEDITOR.dialog.definition} data.definition The dialog definition that + * is being loaded. + * @param {CKEDITOR.dialog} data.dialog A dialog instance that the definition is loaded + * for. Introduced in **CKEditor 4.13.0**. + * @param {CKEDITOR.editor} editor The editor instance that will use the dialog. + */ + +/** + * Event fired when a tab is going to be selected in a dialog. + * + * @event selectPage + * @member CKEDITOR.dialog + * @param data + * @param {String} data.page The ID of the page that is going to be selected. + * @param {String} data.currentPage The ID of the current page. + */ + +/** + * Event fired when the user tries to dismiss a dialog. + * + * @event cancel + * @member CKEDITOR.dialog + * @param data + * @param {Boolean} data.hide Whether the event should proceed or not. + */ + +/** + * Event fired when the user tries to confirm a dialog. + * + * @event ok + * @member CKEDITOR.dialog + * @param data + * @param {Boolean} data.hide Whether the event should proceed or not. + */ + +/** + * Event fired when a dialog is shown. + * + * @event show + * @member CKEDITOR.dialog + */ + +/** + * Event fired when a dialog is shown. + * + * @event dialogShow + * @member CKEDITOR.editor + * @param {CKEDITOR.editor} editor This editor instance. + * @param {CKEDITOR.dialog} data The opened dialog instance. + */ + +/** + * Event fired when a dialog is hidden. + * + * @event hide + * @member CKEDITOR.dialog + */ + +/** + * Event fired when a dialog is hidden. + * + * @event dialogHide + * @member CKEDITOR.editor + * @param {CKEDITOR.editor} editor This editor instance. + * @param {CKEDITOR.dialog} data The hidden dialog instance. + */ + +/** + * Event fired when a dialog is being resized. The event is fired on + * both the {@link CKEDITOR.dialog} object and the dialog instance + * since 3.5.3, previously it was only available in the global object. + * + * @static + * @event resize + * @member CKEDITOR.dialog + * @param data + * @param {CKEDITOR.dialog} data.dialog The dialog being resized (if + * it is fired on the dialog itself, this parameter is not sent). + * @param {String} data.skin The skin name. + * @param {Number} data.width The new width. + * @param {Number} data.height The new height. + */ + +/** + * Event fired when a dialog is being resized. The event is fired on + * both the {@link CKEDITOR.dialog} object and the dialog instance + * since 3.5.3, previously it was only available in the global object. + * + * @since 3.5.0 + * @event resize + * @member CKEDITOR.dialog + * @param data + * @param {Number} data.width The new width. + * @param {Number} data.height The new height. + */ + +/** + * Event fired when the dialog state changes, usually by {@link CKEDITOR.dialog#setState}. + * + * @since 4.5.0 + * @event state + * @member CKEDITOR.dialog + * @param data + * @param {Number} data The new state. Either {@link CKEDITOR#DIALOG_STATE_IDLE} or {@link CKEDITOR#DIALOG_STATE_BUSY}. + */ +})(CMS.$); + +(function ($) { +if (CKEDITOR && CKEDITOR.plugins && CKEDITOR.plugins.registered && CKEDITOR.plugins.registered.cmsresize) { + return; +} +/** ++ * Modified version of the resize plugin to support touch events. ++ * + * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license + */ + +CKEDITOR.plugins.add( 'cmsresize', { + init: function( editor ) { + function dragHandler( evt ) { + var dx = evt.originalEvent.screenX - origin.x, + dy = evt.originalEvent.screenY - origin.y, + width = startSize.width, + height = startSize.height, + internalWidth = width + dx * ( resizeDir == 'rtl' ? -1 : 1 ), + internalHeight = height + dy; + + if ( resizeHorizontal ) + width = Math.max( config.resize_minWidth, Math.min( internalWidth, config.resize_maxWidth ) ); + + if ( resizeVertical ) + height = Math.max( config.resize_minHeight, Math.min( internalHeight, config.resize_maxHeight ) ); + + // DO NOT impose fixed size with single direction resize. (https://dev.ckeditor.com/ticket/6308) + editor.resize( resizeHorizontal ? width : null, height ); + } + + function dragEndHandler() { + CMS.$(CKEDITOR.document.$).off( 'pointermove', dragHandler ); + CMS.$(CKEDITOR.document.$).off( 'pointerup', dragEndHandler ); + + if ( editor.document ) { + CMS.$(editor.document.$).off( 'pointermove', dragHandler ); + CMS.$(editor.document.$).off( 'pointerup', dragEndHandler ); + } + } + + var config = editor.config; + var spaceId = editor.ui.spaceId( 'resizer' ); + + // Resize in the same direction of chrome, + // which is identical to dir of editor element. (https://dev.ckeditor.com/ticket/6614) + var resizeDir = editor.element ? editor.element.getDirection( 1 ) : 'ltr'; + + !config.resize_dir && ( config.resize_dir = 'vertical' ); + ( config.resize_maxWidth === undefined ) && ( config.resize_maxWidth = 3000 ); + ( config.resize_maxHeight === undefined ) && ( config.resize_maxHeight = 3000 ); + ( config.resize_minWidth === undefined ) && ( config.resize_minWidth = 750 ); + ( config.resize_minHeight === undefined ) && ( config.resize_minHeight = 250 ); + + if ( config.resize_enabled !== false ) { + var container = null, + origin, startSize, + resizeHorizontal = ( config.resize_dir == 'both' || config.resize_dir == 'horizontal' ) && ( config.resize_minWidth != config.resize_maxWidth ), + resizeVertical = ( config.resize_dir == 'both' || config.resize_dir == 'vertical' ) && ( config.resize_minHeight != config.resize_maxHeight ); + + var mouseDownFn = CKEDITOR.tools.addFunction( function( $event ) { + if ( !container ) + container = editor.getResizable(); + + startSize = { width: container.$.offsetWidth || 0, height: container.$.offsetHeight || 0 }; + origin = { x: $event.screenX, y: $event.screenY }; + + config.resize_minWidth > startSize.width && ( config.resize_minWidth = startSize.width ); + config.resize_minHeight > startSize.height && ( config.resize_minHeight = startSize.height ); + + CMS.$(CKEDITOR.document.$).on( 'pointermove', dragHandler ); + CMS.$(CKEDITOR.document.$).on( 'pointerup', dragEndHandler ); + + if ( editor.document ) { + CMS.$(editor.document.$).on( 'pointermove', dragHandler ); + CMS.$(editor.document.$).on( 'pointerup', dragEndHandler ); + } + + $event.preventDefault && $event.preventDefault(); + } ); + + CMS.$(CKEDITOR.document.$).find('html').attr('data-touch-action', 'none'); + + editor.on( 'destroy', function() { + CKEDITOR.tools.removeFunction( mouseDownFn ); + } ); + + editor.on( 'uiSpace', function( event ) { + if ( event.data.space == 'bottom' ) { + var direction = ''; + if ( resizeHorizontal && !resizeVertical ) + direction = ' cke_resizer_horizontal'; + if ( !resizeHorizontal && resizeVertical ) + direction = ' cke_resizer_vertical'; + + var resizerHtml = + '' + + // BLACK LOWER RIGHT TRIANGLE (ltr) + // BLACK LOWER LEFT TRIANGLE (rtl) + ( resizeDir == 'ltr' ? '\u25E2' : '\u25E3' ) + + '
'; + + // Always sticks the corner of botttom space. + resizeDir == 'ltr' && direction == 'ltr' ? event.data.html += resizerHtml : event.data.html = resizerHtml + event.data.html; + } + }, editor, null, 100 ); + + // Toggle the visibility of the resizer when an editor is being maximized or minimized. + editor.on( 'maximize', function( event ) { + editor.ui.space( 'resizer' )[ event.data == CKEDITOR.TRISTATE_ON ? 'hide' : 'show' ](); + } ); + } + } +} ); + +/** + * The minimum editor width, in pixels, when resizing the editor interface by using the resize handle. + * Note: It falls back to editor's actual width if it is smaller than the default value. + * + * Read more in the {@glink features/resize documentation} + * and see the {@glink examples/resize example}. + * + * config.resize_minWidth = 500; + * + * @cfg {Number} [resize_minWidth=750] + * @member CKEDITOR.config + */ + +/** + * The minimum editor height, in pixels, when resizing the editor interface by using the resize handle. + * Note: It falls back to editor's actual height if it is smaller than the default value. + * + * Read more in the {@glink features/resize documentation} + * and see the {@glink examples/resize example}. + * + * config.resize_minHeight = 600; + * + * @cfg {Number} [resize_minHeight=250] + * @member CKEDITOR.config + */ + +/** + * The maximum editor width, in pixels, when resizing the editor interface by using the resize handle. + * + * Read more in the {@glink features/resize documentation} + * and see the {@glink examples/resize example}. + * + * config.resize_maxWidth = 750; + * + * @cfg {Number} [resize_maxWidth=3000] + * @member CKEDITOR.config + */ + +/** + * The maximum editor height, in pixels, when resizing the editor interface by using the resize handle. + * + * Read more in the {@glink features/resize documentation} + * and see the {@glink examples/resize example}. + * + * config.resize_maxHeight = 600; + * + * @cfg {Number} [resize_maxHeight=3000] + * @member CKEDITOR.config + */ + +/** + * Whether to enable the resizing feature. If this feature is disabled, the resize handle will not be visible. + * + * Read more in the {@glink features/resize documentation} + * and see the {@glink examples/resize example}. + * + * config.resize_enabled = false; + * + * @cfg {Boolean} [resize_enabled=true] + * @member CKEDITOR.config + */ + +/** + * The dimensions for which the editor resizing is enabled. Possible values + * are `both`, `vertical`, and `horizontal`. + * + * Read more in the {@glink features/resize documentation} + * and see the {@glink examples/resize example}. + * + * config.resize_dir = 'both'; + * + * @since 3.3.0 + * @cfg {String} [resize_dir='vertical'] + * @member CKEDITOR.config + */ +})(CMS.$); + +(function ($) { + if (CKEDITOR && CKEDITOR.plugins && CKEDITOR.plugins.registered && CKEDITOR.plugins.registered.cmsplugins) { + return; + } + + /** + * Determine if we should return `div` or `span` based on the + * plugin markup. + * + * @function getFakePluginElement + * @private + * @param {String} pluginMarkup valid html hopefully + * @returns {String} div|span + */ + function getFakePluginElement(pluginMarkup) { + var innerTags = (pluginMarkup.match(/<\s*([^>\s]+)[\s\S]*?>/) || [0, false]).splice(1); + + var containsAnyBlockLikeElements = innerTags.some(function (tag) { + return tag && CKEDITOR.dtd.$block[tag]; + }); + + var fakeRealType = 'span'; + + if (containsAnyBlockLikeElements) { + fakeRealType = 'div'; + } + + return fakeRealType; + } + + /** + * @function replaceTagName + * @private + * @param {jQuery} elements + * @param {String} tagName + */ + function replaceTagName(elements, tagName) { + elements.each(function (i, el) { + var newElement; + + var element = $(el); + + newElement = $('<' + tagName + '>'); + + // attributes + $.each(el.attributes, function (index, attribute) { + newElement.attr(attribute.nodeName, attribute.nodeValue); + }); + + // content + newElement.html(element.html()); + + element.replaceWith(newElement); + }); + } + + CKEDITOR.plugins.add('cmsplugins', { + + // Register the icons. They must match command names. + icons: 'cmsplugins', + + // The plugin initialization logic goes inside this method. + init: function (editor) { + var that = this; + + this.options = CMS.CKEditor.options.settings; + this.editor = editor; + + /** + * populated with _fresh_ child plugins + */ + this.child_plugins = []; + this.setupCancelCleanupCallback(this.options); + + // don't do anything if there are no plugins defined + if (this.options === undefined || this.options.plugins === undefined) { + return false; + } + + this.setupDialog(); + + // add the button + this.editor.ui.add('cmsplugins', CKEDITOR.UI_PANELBUTTON, { + toolbar: 'cms,0', + label: this.options.lang.toolbar, + title: this.options.lang.toolbar, + className: 'cke_panelbutton__cmsplugins', + modes: { wysiwyg: 1 }, + editorFocus: 0, + + panel: { + css: [CKEDITOR.skin.getPath('editor')].concat(that.editor.config.contentsCss), + attributes: { 'role': 'cmsplugins', 'aria-label': this.options.lang.aria } + }, + + // this is called when creating the dropdown list + onBlock: function (panel, block) { + block.element.setHtml(that.editor.plugins.cmsplugins.setupDropdown()); + + var anchors = $(block.element.$).find('.cke_panel_listItem a'); + + anchors.bind('click', function (e) { + e.preventDefault(); + + that.addPlugin($(this), panel); + }); + } + }); + + // handle edit event via context menu + if (this.editor.contextMenu) { + this.setupContextMenu(); + } + + this.editor.addCommand('cmspluginsEdit', { + exec: function () { + var element = that.getElementFromSelection(); + var plugin = that.getPluginWidget(element); + console.log("cmspluginsEdit", element, plugin); + if (plugin) { + that.editPlugin(plugin); + } + } + }); + + // handle edit event on double click + // if event is a jQuery event (touchend), than we mutate + // event a bit so we make the payload similar to what ckeditor.event produces + var handleEdit = function (event) { + var element; + + if (event.type === 'touchend' || event.type === 'click') { + var cmsPluginNode = $(event.currentTarget).closest('cms-plugin')[0]; + + // pick cke_widget span + // eslint-disable-next-line new-cap + console.log ("plugin edit", cmsPluginNode, cmsPluginNode.parentElement); + element = new CKEDITOR.dom.element(cmsPluginNode).getParent(); + + event.data = event.data || {}; + // have to fake selection to be able to replace markup after editing + that.editor.getSelection().fake(element); + } + + that.editor.execCommand('cmspluginsEdit'); + }; + + this.editor.on('doubleclick', handleEdit); + this.editor.on('instanceReady', function () { +/* + var context = CMS.$('iframe.cke_wysiwyg_frame'); + if (context.length > 0) { + context = context.contentWindow.document.documentElement; + } else { + context = null; + } + CMS.$('cms-plugin', CMS.$('iframe.cke_wysiwyg_frame')[0] + .contentWindow.document.documentElement).on('click touchend', handleEdit); +*/ + }); + + this.setupDataProcessor(); + }, + + getElementFromSelection: function () { + var selection = this.editor.getSelection(); + var element = selection.getSelectedElement() || + selection.getCommonAncestor().getAscendant('cms-plugin', true); + + return element; + }, + + getPluginWidget: function (element) { + if (!element) { + return null; + } + return element.getAscendant('cms-plugin', true) || element.findOne('cms-plugin'); + }, + + setupDialog: function () { + var that = this; + var definition = function () { + return { + title: '', + minWidth: 200, + minHeight: 200, + contents: [{ + elements: [ + { + type: 'html', + html: '' ); - iframe.appendTo( body.getParent() ); - } - - // Make the Title and Close Button unselectable. - title.unselectable(); - close.unselectable(); - - return { - element: element, - parts: { - dialog: element.getChild( 0 ), - title: title, - close: close, - tabs: body.getChild( 2 ), - contents: body.getChild( [ 3, 0, 0, 0 ] ), - footer: body.getChild( [ 3, 0, 1, 0 ] ) - } - }; - } - - /** - * This is the base class for runtime dialog objects. An instance of this - * class represents a single named dialog for a single editor instance. - * - * var dialogObj = new CKEDITOR.dialog( editor, 'smiley' ); - * - * @class - * @constructor Creates a dialog class instance. - * @param {Object} editor The editor which created the dialog. - * @param {String} dialogName The dialog's registered name. - */ - CKEDITOR.dialog = function( editor, dialogName ) { - // Load the dialog definition. - var definition = CKEDITOR.dialog._.dialogDefinitions[ dialogName ], - defaultDefinition = CKEDITOR.tools.clone( defaultDialogDefinition ), - buttonsOrder = editor.config.dialog_buttonsOrder || 'OS', - dir = editor.lang.dir, - tabsToRemove = {}, - i, processed, stopPropagation; - - if ( ( buttonsOrder == 'OS' && CKEDITOR.env.mac ) || // The buttons in MacOS Apps are in reverse order (https://dev.ckeditor.com/ticket/4750) - ( buttonsOrder == 'rtl' && dir == 'ltr' ) || ( buttonsOrder == 'ltr' && dir == 'rtl' ) ) - defaultDefinition.buttons.reverse(); - - - // Completes the definition with the default values. - definition = CKEDITOR.tools.extend( definition( editor ), defaultDefinition ); - - // Clone a functionally independent copy for this dialog. - definition = CKEDITOR.tools.clone( definition ); - - // Create a complex definition object, extending it with the API - // functions. - definition = new definitionObject( this, definition ); - - var themeBuilt = buildDialog( editor ); - - // Initialize some basic parameters. - this._ = { - editor: editor, - element: themeBuilt.element, - name: dialogName, - model: null, - contentSize: { width: 0, height: 0 }, - size: { width: 0, height: 0 }, - contents: {}, - buttons: {}, - accessKeyMap: {}, - // Default value is 0.5 which means a centered dialog. - viewportRatio: { - width: 0.5, - height: 0.5 - }, - - // Initialize the tab and page map. - tabs: {}, - tabIdList: [], - currentTabId: null, - currentTabIndex: null, - pageCount: 0, - lastTab: null, - tabBarMode: false, - - // Initialize the tab order array for input widgets. - focusList: [], - currentFocusIndex: 0, - hasFocus: false - }; - - this.parts = themeBuilt.parts; - - CKEDITOR.tools.setTimeout( function() { - editor.fire( 'ariaWidget', this.parts.contents ); - }, 0, this ); - - // Set the startup styles for the dialog, avoiding it enlarging the - // page size on the dialog creation. - var startStyles = { - top: 0, - visibility: 'hidden' - }; - - if ( CKEDITOR.env.ie6Compat ) { - startStyles.position = 'absolute'; - } - - startStyles[ dir == 'rtl' ? 'right' : 'left' ] = 0; - this.parts.dialog.setStyles( startStyles ); - - - // Call the CKEDITOR.event constructor to initialize this instance. - CKEDITOR.event.call( this ); - - // Fire the "dialogDefinition" event, making it possible to customize - // the dialog definition. - this.definition = definition = CKEDITOR.fire( 'dialogDefinition', { - name: dialogName, - definition: definition, - dialog: this - }, editor ).definition; - - // Cache tabs that should be removed. - if ( !( 'removeDialogTabs' in editor._ ) && editor.config.removeDialogTabs ) { - var removeContents = editor.config.removeDialogTabs.split( ';' ); - - for ( i = 0; i < removeContents.length; i++ ) { - var parts = removeContents[ i ].split( ':' ); - if ( parts.length == 2 ) { - var removeDialogName = parts[ 0 ]; - if ( !tabsToRemove[ removeDialogName ] ) - tabsToRemove[ removeDialogName ] = []; - tabsToRemove[ removeDialogName ].push( parts[ 1 ] ); - } - } - editor._.removeDialogTabs = tabsToRemove; - } - - // Remove tabs of this dialog. - if ( editor._.removeDialogTabs && ( tabsToRemove = editor._.removeDialogTabs[ dialogName ] ) ) { - for ( i = 0; i < tabsToRemove.length; i++ ) - definition.removeContents( tabsToRemove[ i ] ); - } - - // Initialize load, show, hide, ok and cancel events. - if ( definition.onLoad ) - this.on( 'load', definition.onLoad ); - - if ( definition.onShow ) - this.on( 'show', definition.onShow ); - - if ( definition.onHide ) - this.on( 'hide', definition.onHide ); - - if ( definition.onOk ) { - this.on( 'ok', function( evt ) { - // Dialog confirm might probably introduce content changes (https://dev.ckeditor.com/ticket/5415). - editor.fire( 'saveSnapshot' ); - setTimeout( function() { - editor.fire( 'saveSnapshot' ); - }, 0 ); - if ( definition.onOk.call( this, evt ) === false ) - evt.data.hide = false; - } ); - } - - // Set default dialog state. - this.state = CKEDITOR.DIALOG_STATE_IDLE; - - if ( definition.onCancel ) { - this.on( 'cancel', function( evt ) { - if ( definition.onCancel.call( this, evt ) === false ) - evt.data.hide = false; - } ); - } - - var me = this; - - // Iterates over all items inside all content in the dialog, calling a - // function for each of them. - var iterContents = function( func ) { - var contents = me._.contents, - stop = false; - - for ( var i in contents ) { - for ( var j in contents[ i ] ) { - stop = func.call( this, contents[ i ][ j ] ); - if ( stop ) - return; - } - } - }; - - this.on( 'ok', function( evt ) { - iterContents( function( item ) { - if ( item.validate ) { - var retval = item.validate( this ), - invalid = ( typeof retval == 'string' ) || retval === false; - - if ( invalid ) { - evt.data.hide = false; - evt.stop(); - } - - handleFieldValidated.call( item, !invalid, typeof retval == 'string' ? retval : undefined ); - return invalid; - } - } ); - }, this, null, 0 ); - - this.on( 'cancel', function( evt ) { - iterContents( function( item ) { - if ( item.isChanged() ) { - if ( !editor.config.dialog_noConfirmCancel && !confirm( editor.lang.common.confirmCancel ) ) // jshint ignore:line - evt.data.hide = false; - return true; - } - } ); - }, this, null, 0 ); - - this.parts.close.on( 'click', function( evt ) { - if ( this.fire( 'cancel', { hide: true } ).hide !== false ) - this.hide(); - evt.data.preventDefault(); - }, this ); - - // Sort focus list according to tab order definitions. - function setupFocus() { - var focusList = me._.focusList; - focusList.sort( function( a, b ) { - // Mimics browser tab order logics; - if ( a.tabIndex != b.tabIndex ) - return b.tabIndex - a.tabIndex; - // Sort is not stable in some browsers, - // fall-back the comparator to 'focusIndex'; - else - return a.focusIndex - b.focusIndex; - } ); - - var size = focusList.length; - for ( var i = 0; i < size; i++ ) - focusList[ i ].focusIndex = i; - } - - // Expects 1 or -1 as an offset, meaning direction of the offset change. - function changeFocus( offset ) { - var focusList = me._.focusList; - offset = offset || 0; - - if ( focusList.length < 1 ) - return; - - var startIndex = me._.currentFocusIndex; - - if ( me._.tabBarMode && offset < 0 ) { - // If we are in tab mode, we need to mimic that we started tabbing back from the first - // focusList (so it will go to the last one). - startIndex = 0; - } - - // Trigger the 'blur' event of any input element before anything, - // since certain UI updates may depend on it. - try { - focusList[ startIndex ].getInputElement().$.blur(); - } catch ( e ) {} - - var currentIndex = startIndex, - hasTabs = me._.pageCount > 1; - - do { - currentIndex = currentIndex + offset; - - if ( hasTabs && !me._.tabBarMode && ( currentIndex == focusList.length || currentIndex == -1 ) ) { - // If the dialog was not in tab mode, then focus the first tab (https://dev.ckeditor.com/ticket/13027). - me._.tabBarMode = true; - me._.tabs[ me._.currentTabId ][ 0 ].focus(); - me._.currentFocusIndex = -1; - - // Early return, in order to avoid accessing focusList[ -1 ]. - return; - } - - currentIndex = ( currentIndex + focusList.length ) % focusList.length; - - if ( currentIndex == startIndex ) { - break; - } - } while ( offset && !focusList[ currentIndex ].isFocusable() ); - - focusList[ currentIndex ].focus(); - - // Select whole field content. - if ( focusList[ currentIndex ].type == 'text' ) - focusList[ currentIndex ].select(); - } - - this.changeFocus = changeFocus; - - - function keydownHandler( evt ) { - // If I'm not the top dialog, ignore. - if ( me != CKEDITOR.dialog._.currentTop ) - return; - - var keystroke = evt.data.getKeystroke(), - rtl = editor.lang.dir == 'rtl', - arrowKeys = [ 37, 38, 39, 40 ], - button; - - processed = stopPropagation = 0; - - if ( keystroke == 9 || keystroke == CKEDITOR.SHIFT + 9 ) { - var shiftPressed = ( keystroke == CKEDITOR.SHIFT + 9 ); - changeFocus( shiftPressed ? -1 : 1 ); - processed = 1; - } else if ( keystroke == CKEDITOR.ALT + 121 && !me._.tabBarMode && me.getPageCount() > 1 ) { - // Alt-F10 puts focus into the current tab item in the tab bar. - focusActiveTab( me ); - processed = 1; - } else if ( CKEDITOR.tools.indexOf( arrowKeys, keystroke ) != -1 && me._.tabBarMode ) { - // Array with key codes that activate previous tab. - var prevKeyCodes = [ - // Depending on the lang dir: right or left key - rtl ? 39 : 37, - // Top/bot arrow: actually for both cases it's the same. - 38 - ], - nextId = CKEDITOR.tools.indexOf( prevKeyCodes, keystroke ) != -1 ? getPreviousVisibleTab.call( me ) : getNextVisibleTab.call( me ); - - me.selectPage( nextId ); - me._.tabs[ nextId ][ 0 ].focus(); - processed = 1; - } else if ( ( keystroke == 13 || keystroke == 32 ) && me._.tabBarMode ) { - this.selectPage( this._.currentTabId ); - this._.tabBarMode = false; - this._.currentFocusIndex = -1; - changeFocus( 1 ); - processed = 1; - } - // If user presses enter key in a text box, it implies clicking OK for the dialog. - else if ( keystroke == 13 /*ENTER*/ ) { - // Don't do that for a target that handles ENTER. - var target = evt.data.getTarget(); - if ( !target.is( 'a', 'button', 'select', 'textarea' ) && ( !target.is( 'input' ) || target.$.type != 'button' ) ) { - button = this.getButton( 'ok' ); - button && CKEDITOR.tools.setTimeout( button.click, 0, button ); - processed = 1; - } - stopPropagation = 1; // Always block the propagation (https://dev.ckeditor.com/ticket/4269) - } else if ( keystroke == 27 /*ESC*/ ) { - button = this.getButton( 'cancel' ); - - // If there's a Cancel button, click it, else just fire the cancel event and hide the dialog. - if ( button ) - CKEDITOR.tools.setTimeout( button.click, 0, button ); - else { - if ( this.fire( 'cancel', { hide: true } ).hide !== false ) - this.hide(); - } - stopPropagation = 1; // Always block the propagation (https://dev.ckeditor.com/ticket/4269) - } else { - return; - } - - keypressHandler( evt ); - } - - function keypressHandler( evt ) { - if ( processed ) - evt.data.preventDefault( 1 ); - else if ( stopPropagation ) - evt.data.stopPropagation(); - } - - var dialogElement = this._.element; - - editor.focusManager.add( dialogElement, 1 ); - - // Add the dialog keyboard handlers. - this.on( 'show', function() { - dialogElement.on( 'keydown', keydownHandler, this ); - - // Some browsers instead, don't cancel key events in the keydown, but in the - // keypress. So we must do a longer trip in those cases. (https://dev.ckeditor.com/ticket/4531,https://dev.ckeditor.com/ticket/8985) - if ( CKEDITOR.env.gecko ) - dialogElement.on( 'keypress', keypressHandler, this ); - - } ); - this.on( 'hide', function() { - dialogElement.removeListener( 'keydown', keydownHandler ); - if ( CKEDITOR.env.gecko ) - dialogElement.removeListener( 'keypress', keypressHandler ); - - // Reset fields state when closing dialog. - iterContents( function( item ) { - resetField.apply( item ); - } ); - } ); - this.on( 'iframeAdded', function( evt ) { - var doc = new CKEDITOR.dom.document( evt.data.iframe.$.contentWindow.document ); - doc.on( 'keydown', keydownHandler, this, null, 0 ); - } ); - - // Auto-focus logic in dialog. - this.on( 'show', function() { - // Setup tabIndex on showing the dialog instead of on loading - // to allow dynamic tab order happen in dialog definition. - setupFocus(); - - var hasTabs = me._.pageCount > 1; - - if ( editor.config.dialog_startupFocusTab && hasTabs ) { - me._.tabBarMode = true; - me._.tabs[ me._.currentTabId ][ 0 ].focus(); - me._.currentFocusIndex = -1; - } else if ( !this._.hasFocus ) { - // https://dev.ckeditor.com/ticket/13114#comment:4. - this._.currentFocusIndex = hasTabs ? -1 : this._.focusList.length - 1; - - // Decide where to put the initial focus. - if ( definition.onFocus ) { - var initialFocus = definition.onFocus.call( this ); - // Focus the field that the user specified. - initialFocus && initialFocus.focus(); - } - // Focus the first field in layout order. - else { - changeFocus( 1 ); - } - } - }, this, null, 0xffffffff ); - - // IE6 BUG: Text fields and text areas are only half-rendered the first time the dialog appears in IE6 (https://dev.ckeditor.com/ticket/2661). - // This is still needed after [2708] and [2709] because text fields in hidden TR tags are still broken. - if ( CKEDITOR.env.ie6Compat ) { - this.on( 'load', function() { - var outer = this.getElement(), - inner = outer.getFirst(); - inner.remove(); - inner.appendTo( outer ); - }, this ); - } - - initDragAndDrop( this ); - initResizeHandles( this ); - - // Insert the title. - ( new CKEDITOR.dom.text( definition.title, CKEDITOR.document ) ).appendTo( this.parts.title ); - - // Insert the tabs and contents. - for ( i = 0; i < definition.contents.length; i++ ) { - var page = definition.contents[ i ]; - page && this.addPage( page ); - } - - this.parts.tabs.on( 'click', function( evt ) { - var target = evt.data.getTarget(); - // If we aren't inside a tab, bail out. - if ( target.hasClass( 'cke_dialog_tab' ) ) { - // Get the ID of the tab, without the 'cke_' prefix and the unique number suffix. - var id = target.$.id; - this.selectPage( id.substring( 4, id.lastIndexOf( '_' ) ) ); - - focusActiveTab( this ); - - evt.data.preventDefault(); - } - }, this ); - - // Insert buttons. - var buttonsHtml = [], - buttons = CKEDITOR.dialog._.uiElementBuilders.hbox.build( this, { - type: 'hbox', - className: 'cke_dialog_footer_buttons', - widths: [], - children: definition.buttons - }, buttonsHtml ).getChild(); - this.parts.footer.setHtml( buttonsHtml.join( '' ) ); - - for ( i = 0; i < buttons.length; i++ ) - this._.buttons[ buttons[ i ].id ] = buttons[ i ]; - - /** - * Current state of the dialog. Use the {@link #setState} method to update it. - * See the {@link #event-state} event to know more. - * - * @readonly - * @property {Number} [state=CKEDITOR.DIALOG_STATE_IDLE] - */ - }; - - // Focusable interface. Use it via dialog.addFocusable. - function Focusable( dialog, element, index ) { - this.element = element; - this.focusIndex = index; - // TODO: support tabIndex for focusables. - this.tabIndex = 0; - this.isFocusable = function() { - return !element.getAttribute( 'disabled' ) && element.isVisible(); - }; - this.focus = function() { - dialog._.currentFocusIndex = this.focusIndex; - this.element.focus(); - }; - // Bind events - element.on( 'keydown', function( e ) { - if ( e.data.getKeystroke() in { 32: 1, 13: 1 } ) - this.fire( 'click' ); - } ); - element.on( 'focus', function() { - this.fire( 'mouseover' ); - } ); - element.on( 'blur', function() { - this.fire( 'mouseout' ); - } ); - } - - // Re-layout the dialog on window resize. - function resizeWithWindow( dialog ) { - var win = CKEDITOR.document.getWindow(); - function resizeHandler() { - dialog.layout(); - } - win.on( 'resize', resizeHandler ); - dialog.on( 'hide', function() { - win.removeListener( 'resize', resizeHandler ); - } ); - } - - CKEDITOR.dialog.prototype = { - destroy: function() { - this.hide(); - this._.element.remove(); - }, - - /** - * Resizes the dialog. - * - * dialogObj.resize( 800, 640 ); - * - * @method - * @param {Number} width The width of the dialog in pixels. - * @param {Number} height The height of the dialog in pixels. - */ - resize: function( width, height ) { - if ( this._.contentSize && this._.contentSize.width == width && this._.contentSize.height == height ) - return; - - CKEDITOR.dialog.fire( 'resize', { - dialog: this, - width: width, - height: height - }, this._.editor ); - - this.fire( 'resize', { - width: width, - height: height - }, this._.editor ); - - var contents = this.parts.contents; - contents.setStyles( { - width: width + 'px', - height: height + 'px' - } ); - - // Update dialog position when dimension get changed in RTL. - if ( this._.editor.lang.dir == 'rtl' && this._.position ) { - var containerWidth = this.parts.dialog.getParent().getClientSize().width; - - this._.position.x = containerWidth - this._.contentSize.width - parseInt( this._.element.getFirst().getStyle( 'right' ), 10 ); - } - - this._.contentSize = { width: width, height: height }; - }, - - /** - * Gets the current size of the dialog in pixels. - * - * var width = dialogObj.getSize().width; - * - * @returns {Object} - * @returns {Number} return.width - * @returns {Number} return.height - */ - getSize: function() { - var element = this._.element.getFirst(); - return { width: element.$.offsetWidth || 0, height: element.$.offsetHeight || 0 }; - }, - - /** - * Moves the dialog to an `(x, y)` coordinate relative to the window. - * - * dialogObj.move( 10, 40 ); - * - * @method - * @param {Number} x The target x-coordinate. - * @param {Number} y The target y-coordinate. - * @param {Boolean} save Flag indicate whether the dialog position should be remembered on next open up. - */ - move: function( x, y, save ) { - var element = this._.element.getFirst(), rtl = this._.editor.lang.dir == 'rtl'; - - // (https://dev.ckeditor.com/ticket/8888) In some cases of a very small viewport, dialog is incorrectly - // positioned in IE7. It also happens that it remains sticky and user cannot - // scroll down/up to reveal dialog's content below/above the viewport; this is - // cumbersome. - // The only way to fix this is to move mouse out of the browser and - // go back to see that dialog position is automagically fixed. No events, - // no style change - pure magic. This is a IE7 rendering issue, which can be - // fixed with dummy style redraw on each move. - if ( CKEDITOR.env.ie ) { - element.setStyle( 'zoom', '100%' ); - } - - var containerSize = this.parts.dialog.getParent().getClientSize(), - dialogSize = this.getSize(), - ratios = this._.viewportRatio, - freeSpace = { - width: Math.max( containerSize.width - dialogSize.width, 0 ), - height: Math.max( containerSize.height - dialogSize.height, 0 ) - }; - - if ( this._.position && this._.position.x == x && this._.position.y == y ) { - // If position didn't change window might have been resized. - x = Math.floor( freeSpace.width * ratios.width ); - y = Math.floor( freeSpace.height * ratios.height ); - } else { - updateRatios( this, x, y ); - } - - // Save the current position. - this._.position = { x: x, y: y }; - - // Translate coordinate for RTL. - if ( rtl ) { - x = freeSpace.width - x; - } - - var styles = { 'top': ( y > 0 ? y : 0 ) + 'px' }; - styles[ rtl ? 'right' : 'left' ] = ( x > 0 ? x : 0 ) + 'px'; - - element.setStyles( styles ); - - save && ( this._.moved = 1 ); - }, - - /** - * Gets the dialog's position in the window. - * - * var dialogX = dialogObj.getPosition().x; - * - * @returns {Object} - * @returns {Number} return.x - * @returns {Number} return.y - */ - getPosition: function() { - return CKEDITOR.tools.extend( {}, this._.position ); - }, - - /** - * Shows the dialog box. - * - * dialogObj.show(); - */ - show: function() { - // Insert the dialog's element to the root document. - var element = this._.element, - definition = this.definition, - documentBody = CKEDITOR.document.getBody(), - baseFloatZIndex = this._.editor.config.baseFloatZIndex; - - if ( !( element.getParent() && element.getParent().equals( documentBody ) ) ) { - element.appendTo( documentBody ); - } else { - element.setStyle( 'display', useFlex ? 'flex' : 'block' ); - } - - // First, set the dialog to an appropriate size. - this.resize( - this._.contentSize && this._.contentSize.width || definition.width || definition.minWidth, - this._.contentSize && this._.contentSize.height || definition.height || definition.minHeight - ); - - // Reset all inputs back to their default value. - this.reset(); - - // Selects the first tab if no tab is already selected. - if ( this._.currentTabId === null ) { - this.selectPage( this.definition.contents[ 0 ].id ); - } - - // Set z-index to dialog and container (#3559). - if ( CKEDITOR.dialog._.currentZIndex === null ) { - CKEDITOR.dialog._.currentZIndex = baseFloatZIndex; - } - this._.element.getFirst().setStyle( 'z-index', CKEDITOR.dialog._.currentZIndex += 10 ); - this.getElement().setStyle( 'z-index', CKEDITOR.dialog._.currentZIndex ); - - // Maintain the dialog ordering and dialog cover. - if ( CKEDITOR.dialog._.currentTop === null ) { - CKEDITOR.dialog._.currentTop = this; - this._.parentDialog = null; - showCover( this._.editor ); - } else { - this._.parentDialog = CKEDITOR.dialog._.currentTop; - - var parentElement = this._.parentDialog.getElement().getFirst(); - - parentElement.$.style.zIndex -= Math.floor( baseFloatZIndex / 2 ); - this._.parentDialog.getElement().setStyle( 'z-index', parentElement.$.style.zIndex ); - CKEDITOR.dialog._.currentTop = this; - } - - element.on( 'keydown', accessKeyDownHandler ); - element.on( 'keyup', accessKeyUpHandler ); - - // Reset the hasFocus state. - this._.hasFocus = false; - - for ( var i in definition.contents ) { - if ( !definition.contents[ i ] ) { - continue; - } - - var content = definition.contents[ i ], - tab = this._.tabs[ content.id ], - requiredContent = content.requiredContent, - enableElements = 0; - - if ( !tab ) { - continue; - } - - for ( var j in this._.contents[ content.id ] ) { - var elem = this._.contents[ content.id ][ j ]; - - if ( elem.type == 'hbox' || elem.type == 'vbox' || !elem.getInputElement() ) { - continue; - } - - if ( elem.requiredContent && !this._.editor.activeFilter.check( elem.requiredContent ) ) { - elem.disable(); - } else { - elem.enable(); - enableElements++; - } - } - - if ( !enableElements || ( requiredContent && !this._.editor.activeFilter.check( requiredContent ) ) ) { - tab[ 0 ].addClass( 'cke_dialog_tab_disabled' ); - } else { - tab[ 0 ].removeClass( 'cke_dialog_tab_disabled' ); - } - } - - CKEDITOR.tools.setTimeout( function() { - this.layout(); - resizeWithWindow( this ); - - this.parts.dialog.setStyle( 'visibility', '' ); - - // Execute onLoad for the first show. - this.fireOnce( 'load', {} ); - CKEDITOR.ui.fire( 'ready', this ); - - this.fire( 'show', {} ); - this._.editor.fire( 'dialogShow', this ); - - if ( !this._.parentDialog ) { - this._.editor.focusManager.lock(); - } - - // Save the initial values of the dialog. - this.foreach( function( contentObj ) { - contentObj.setInitValue && contentObj.setInitValue(); - } ); - - }, 100, this ); - }, - - /** - * Rearrange the dialog to its previous position or the middle of the window. - * - * @since 3.5.0 - */ - layout: function() { - var el = this.parts.dialog; - - if ( !this._.moved && useFlex ) { - return; - } - - var dialogSize = this.getSize(), - win = CKEDITOR.document.getWindow(), - viewSize = win.getViewPaneSize(), - posX, - posY; - - if ( this._.moved && this._.position ) { - posX = this._.position.x; - posY = this._.position.y; - } else { - posX = ( viewSize.width - dialogSize.width ) / 2; - posY = ( viewSize.height - dialogSize.height ) / 2; - } - - if ( !CKEDITOR.env.ie6Compat ) { - el.setStyle( 'position', 'absolute' ); - el.removeStyle( 'margin' ); - } - - posX = Math.floor( posX ); - posY = Math.floor( posY ); - - this.move( posX, posY ); - }, - - /** - * Executes a function for each UI element. - * - * @param {Function} fn Function to execute for each UI element. - * @returns {CKEDITOR.dialog} The current dialog object. - */ - foreach: function( fn ) { - for ( var i in this._.contents ) { - for ( var j in this._.contents[ i ] ) { - fn.call( this, this._.contents[i][j] ); - } - } - - return this; - }, - - /** - * Resets all input values in the dialog. - * - * dialogObj.reset(); - * - * @method - * @chainable - */ - reset: ( function() { - var fn = function( widget ) { - if ( widget.reset ) - widget.reset( 1 ); - }; - return function() { - this.foreach( fn ); - return this; - }; - } )(), - - - /** - * Calls the {@link CKEDITOR.dialog.definition.uiElement#setup} method of each - * of the UI elements, with the arguments passed through it. - * It is usually being called when the dialog is opened, to put the initial value inside the field. - * - * dialogObj.setupContent(); - * - * var timestamp = ( new Date() ).valueOf(); - * dialogObj.setupContent( timestamp ); - */ - setupContent: function() { - var args = arguments; - this.foreach( function( widget ) { - if ( widget.setup ) - widget.setup.apply( widget, args ); - } ); - }, - - /** - * Calls the {@link CKEDITOR.dialog.definition.uiElement#commit} method of each - * of the UI elements, with the arguments passed through it. - * It is usually being called when the user confirms the dialog, to process the values. - * - * dialogObj.commitContent(); - * - * var timestamp = ( new Date() ).valueOf(); - * dialogObj.commitContent( timestamp ); - */ - commitContent: function() { - var args = arguments; - this.foreach( function( widget ) { - // Make sure IE triggers "change" event on last focused input before closing the dialog. (https://dev.ckeditor.com/ticket/7915) - if ( CKEDITOR.env.ie && this._.currentFocusIndex == widget.focusIndex ) - widget.getInputElement().$.blur(); - - if ( widget.commit ) - widget.commit.apply( widget, args ); - } ); - }, - - /** - * Hides the dialog box. - * - * dialogObj.hide(); - */ - hide: function() { - if ( !this.parts.dialog.isVisible() ) { - return; - } - - this.fire( 'hide', {} ); - this._.editor.fire( 'dialogHide', this ); - // Reset the tab page. - this.selectPage( this._.tabIdList[ 0 ] ); - var element = this._.element; - element.setStyle( 'display', 'none' ); - this.parts.dialog.setStyle( 'visibility', 'hidden' ); - // Unregister all access keys associated with this dialog. - unregisterAccessKey( this ); - - // Close any child(top) dialogs first. - while ( CKEDITOR.dialog._.currentTop != this ) { - CKEDITOR.dialog._.currentTop.hide(); - } - - // Maintain dialog ordering and remove cover if needed. - if ( !this._.parentDialog ) { - hideCover( this._.editor ); - } else { - var parentElement = this._.parentDialog.getElement().getFirst(); - this._.parentDialog.getElement().removeStyle( 'z-index' ); - parentElement.setStyle( 'z-index', parseInt( parentElement.$.style.zIndex, 10 ) + Math.floor( this._.editor.config.baseFloatZIndex / 2 ) ); - } - CKEDITOR.dialog._.currentTop = this._.parentDialog; - - // Deduct or clear the z-index. - if ( !this._.parentDialog ) { - CKEDITOR.dialog._.currentZIndex = null; - - // Remove access key handlers. - element.removeListener( 'keydown', accessKeyDownHandler ); - element.removeListener( 'keyup', accessKeyUpHandler ); - - var editor = this._.editor; - editor.focus(); - - // Give a while before unlock, waiting for focus to return to the editable. (https://dev.ckeditor.com/ticket/172) - setTimeout( function() { - editor.focusManager.unlock(); - - // Fixed iOS focus issue (https://dev.ckeditor.com/ticket/12381). - // Keep in mind that editor.focus() does not work in this case. - if ( CKEDITOR.env.iOS ) { - editor.window.focus(); - } - }, 0 ); - - } else { - CKEDITOR.dialog._.currentZIndex -= 10; - } - - delete this._.parentDialog; - // Reset the initial values of the dialog. - this.foreach( function( contentObj ) { - contentObj.resetInitValue && contentObj.resetInitValue(); - } ); - - // Reset dialog state back to IDLE, if busy (https://dev.ckeditor.com/ticket/13213). - this.setState( CKEDITOR.DIALOG_STATE_IDLE ); - }, - - /** - * Adds a tabbed page into the dialog. - * - * @param {Object} contents Content definition. - */ - addPage: function( contents ) { - if ( contents.requiredContent && !this._.editor.filter.check( contents.requiredContent ) ) { - return; - } - - var pageHtml = [], - titleHtml = contents.label ? ' title="' + CKEDITOR.tools.htmlEncode( contents.label ) + '"' : '', - vbox = CKEDITOR.dialog._.uiElementBuilders.vbox.build( this, { - type: 'vbox', - className: 'cke_dialog_page_contents', - children: contents.elements, - expand: !!contents.expand, - padding: contents.padding, - style: contents.style || 'width: 100%;' - }, pageHtml ), - contentMap = this._.contents[ contents.id ] = {}, - cursor, - children = vbox.getChild(), - enabledFields = 0; - - while ( ( cursor = children.shift() ) ) { - // Count all allowed fields. - if ( !cursor.notAllowed && cursor.type != 'hbox' && cursor.type != 'vbox' ) { - enabledFields++; - } - - contentMap[ cursor.id ] = cursor; - if ( typeof cursor.getChild == 'function' ) { - children.push.apply( children, cursor.getChild() ); - } - } - - // If all fields are disabled (because they are not allowed) hide this tab. - if ( !enabledFields ) { - contents.hidden = true; - } - - // Create the HTML for the tab and the content block. - var page = CKEDITOR.dom.element.createFromHtml( pageHtml.join( '' ) ); - page.setAttribute( 'role', 'tabpanel' ); - page.setStyle( 'min-height', '100%' ); - - var env = CKEDITOR.env, - tabId = 'cke_' + contents.id + '_' + CKEDITOR.tools.getNextNumber(), - tab = CKEDITOR.dom.element.createFromHtml( [ - ' 0 ? ' cke_last' : 'cke_first' ), - titleHtml, - ( !!contents.hidden ? ' style="display:none"' : '' ), - ' id="', tabId, '"', - env.gecko && !env.hc ? '' : ' href="javascript:void(0)"', - ' tabIndex="-1"', - ' hidefocus="true"', - ' role="tab">', - contents.label, - '' - ].join( '' ) ); - - page.setAttribute( 'aria-labelledby', tabId ); - - // Take records for the tabs and elements created. - this._.tabs[ contents.id ] = [ tab, page ]; - this._.tabIdList.push( contents.id ); - !contents.hidden && this._.pageCount++; - this._.lastTab = tab; - this.updateStyle(); - - // Attach the DOM nodes. - - page.setAttribute( 'name', contents.id ); - page.appendTo( this.parts.contents ); - - tab.unselectable(); - this.parts.tabs.append( tab ); - - // Add access key handlers if access key is defined. - if ( contents.accessKey ) { - registerAccessKey( this, this, 'CTRL+' + contents.accessKey, tabAccessKeyDown, tabAccessKeyUp ); - this._.accessKeyMap[ 'CTRL+' + contents.accessKey ] = contents.id; - } - }, - - /** - * Activates a tab page in the dialog by its id. - * - * dialogObj.selectPage( 'tab_1' ); - * - * @param {String} id The id of the dialog tab to be activated. - */ - selectPage: function( id ) { - if ( this._.currentTabId == id ) - return; - - if ( this._.tabs[ id ][ 0 ].hasClass( 'cke_dialog_tab_disabled' ) ) - return; - - // If event was canceled - do nothing. - if ( this.fire( 'selectPage', { page: id, currentPage: this._.currentTabId } ) === false ) - return; - - // Hide the non-selected tabs and pages. - for ( var i in this._.tabs ) { - var tab = this._.tabs[ i ][ 0 ], - page = this._.tabs[ i ][ 1 ]; - if ( i != id ) { - tab.removeClass( 'cke_dialog_tab_selected' ); - tab.removeAttribute( 'aria-selected' ); - page.hide(); - } - page.setAttribute( 'aria-hidden', i != id ); - } - - var selected = this._.tabs[ id ]; - selected[ 0 ].addClass( 'cke_dialog_tab_selected' ); - selected[ 0 ].setAttribute( 'aria-selected', true ); - - // [IE] an invisible input[type='text'] will enlarge it's width - // if it's value is long when it shows, so we clear it's value - // before it shows and then recover it (https://dev.ckeditor.com/ticket/5649) - if ( CKEDITOR.env.ie6Compat || CKEDITOR.env.ie7Compat ) { - clearOrRecoverTextInputValue( selected[ 1 ] ); - selected[ 1 ].show(); - setTimeout( function() { - clearOrRecoverTextInputValue( selected[ 1 ], 1 ); - }, 0 ); - } else { - selected[ 1 ].show(); - } - - this._.currentTabId = id; - this._.currentTabIndex = CKEDITOR.tools.indexOf( this._.tabIdList, id ); - }, - - /** - * Dialog state-specific style updates. - */ - updateStyle: function() { - // If only a single page shown, a different style is used in the central pane. - this.parts.dialog[ ( this._.pageCount === 1 ? 'add' : 'remove' ) + 'Class' ]( 'cke_single_page' ); - }, - - /** - * Hides a page's tab away from the dialog. - * - * dialog.hidePage( 'tab_3' ); - * - * @param {String} id The page's Id. - */ - hidePage: function( id ) { - var tab = this._.tabs[ id ] && this._.tabs[ id ][ 0 ]; - if ( !tab || this._.pageCount == 1 || !tab.isVisible() ) - return; - // Switch to other tab first when we're hiding the active tab. - else if ( id == this._.currentTabId ) - this.selectPage( getPreviousVisibleTab.call( this ) ); - - tab.hide(); - this._.pageCount--; - this.updateStyle(); - }, - - /** - * Unhides a page's tab. - * - * dialog.showPage( 'tab_2' ); - * - * @param {String} id The page's Id. - */ - showPage: function( id ) { - var tab = this._.tabs[ id ] && this._.tabs[ id ][ 0 ]; - if ( !tab ) - return; - tab.show(); - this._.pageCount++; - this.updateStyle(); - }, - - /** - * Gets the root DOM element of the dialog. - * - * var dialogElement = dialogObj.getElement().getFirst(); - * dialogElement.setStyle( 'padding', '5px' ); - * - * @returns {CKEDITOR.dom.element} The `` element containing this dialog. - */ - getElement: function() { - return this._.element; - }, - - /** - * Gets the name of the dialog. - * - * var dialogName = dialogObj.getName(); - * - * @returns {String} The name of this dialog. - */ - getName: function() { - return this._.name; - }, - - /** - * Gets a dialog UI element object from a dialog page. - * - * dialogObj.getContentElement( 'tabId', 'elementId' ).setValue( 'Example' ); - * - * @param {String} pageId id of dialog page. - * @param {String} elementId id of UI element. - * @returns {CKEDITOR.ui.dialog.uiElement} The dialog UI element. - */ - getContentElement: function( pageId, elementId ) { - var page = this._.contents[ pageId ]; - return page && page[ elementId ]; - }, - - /** - * Gets the value of a dialog UI element. - * - * alert( dialogObj.getValueOf( 'tabId', 'elementId' ) ); - * - * @param {String} pageId id of dialog page. - * @param {String} elementId id of UI element. - * @returns {Object} The value of the UI element. - */ - getValueOf: function( pageId, elementId ) { - return this.getContentElement( pageId, elementId ).getValue(); - }, - - /** - * Sets the value of a dialog UI element. - * - * dialogObj.setValueOf( 'tabId', 'elementId', 'Example' ); - * - * @param {String} pageId id of the dialog page. - * @param {String} elementId id of the UI element. - * @param {Object} value The new value of the UI element. - */ - setValueOf: function( pageId, elementId, value ) { - return this.getContentElement( pageId, elementId ).setValue( value ); - }, - - /** - * Gets the UI element of a button in the dialog's button row. - * - * @returns {CKEDITOR.ui.dialog.button} The button object. - * - * @param {String} id The id of the button. - */ - getButton: function( id ) { - return this._.buttons[ id ]; - }, - - /** - * Simulates a click to a dialog button in the dialog's button row. - * - * @returns The return value of the dialog's `click` event. - * - * @param {String} id The id of the button. - */ - click: function( id ) { - return this._.buttons[ id ].click(); - }, - - /** - * Disables a dialog button. - * - * @param {String} id The id of the button. - */ - disableButton: function( id ) { - return this._.buttons[ id ].disable(); - }, - - /** - * Enables a dialog button. - * - * @param {String} id The id of the button. - */ - enableButton: function( id ) { - return this._.buttons[ id ].enable(); - }, - - /** - * Gets the number of pages in the dialog. - * - * @returns {Number} Page count. - */ - getPageCount: function() { - return this._.pageCount; - }, - - /** - * Gets the editor instance which opened this dialog. - * - * @returns {CKEDITOR.editor} Parent editor instances. - */ - getParentEditor: function() { - return this._.editor; - }, - - /** - * Gets the element that was selected when opening the dialog, if any. - * - * @returns {CKEDITOR.dom.element} The element that was selected, or `null`. - */ - getSelectedElement: function() { - return this.getParentEditor().getSelection().getSelectedElement(); - }, - - /** - * Adds element to dialog's focusable list. - * - * @param {CKEDITOR.dom.element} element - * @param {Number} [index] - */ - addFocusable: function( element, index ) { - if ( typeof index == 'undefined' ) { - index = this._.focusList.length; - this._.focusList.push( new Focusable( this, element, index ) ); - } else { - this._.focusList.splice( index, 0, new Focusable( this, element, index ) ); - for ( var i = index + 1; i < this._.focusList.length; i++ ) - this._.focusList[ i ].focusIndex++; - } - }, - - /** - * Sets the dialog {@link #property-state}. - * - * @since 4.5.0 - * @param {Number} state Either {@link CKEDITOR#DIALOG_STATE_IDLE} or {@link CKEDITOR#DIALOG_STATE_BUSY}. - */ - setState: function( state ) { - var oldState = this.state; - - if ( oldState == state ) { - return; - } - - this.state = state; - - if ( state == CKEDITOR.DIALOG_STATE_BUSY ) { - // Insert the spinner on demand. - if ( !this.parts.spinner ) { - var dir = this.getParentEditor().lang.dir, - spinnerDef = { - attributes: { - 'class': 'cke_dialog_spinner' - }, - styles: { - 'float': dir == 'rtl' ? 'right' : 'left' - } - }; - - spinnerDef.styles[ 'margin-' + ( dir == 'rtl' ? 'left' : 'right' ) ] = '8px'; - - this.parts.spinner = CKEDITOR.document.createElement( 'div', spinnerDef ); - - this.parts.spinner.setHtml( '⌛' ); - this.parts.spinner.appendTo( this.parts.title, 1 ); - } - - // Finally, show the spinner. - this.parts.spinner.show(); - - this.getButton( 'ok' ).disable(); - } else if ( state == CKEDITOR.DIALOG_STATE_IDLE ) { - // Hide the spinner. But don't do anything if there is no spinner yet. - this.parts.spinner && this.parts.spinner.hide(); - - this.getButton( 'ok' ).enable(); - } - - this.fire( 'state', state ); - }, - - /** - * @inheritdoc CKEDITOR.dialog.definition#getModel - */ - getModel: function( editor ) { - // Prioritize forced model. - if ( this._.model ) { - return this._.model; - } - - if ( this.definition.getModel ) { - return this.definition.getModel( editor ); - } - - return null; - }, - - /** - * Sets the given model as the subject of the dialog. - * - * For most plugins, like the `table` or `link` plugin, the given model should be a - * {@link CKEDITOR.dom.element DOM element instance} if there is an element related to the dialog. - * For widget plugins (`image2`, `placeholder`) you should provide a {@link CKEDITOR.plugins.widget} instance that - * is the subject of this dialog. - * - * @since 4.13.0 - * @private - * @param {CKEDITOR.dom.element/CKEDITOR.plugins.widget/Object/null} newModel The model to be set. - */ - setModel: function( newModel ) { - this._.model = newModel; - }, - - /** - * Returns the current dialog mode based on the state of the feature used with this dialog. - * - * In case if the dialog definition did not define the {@link CKEDITOR.dialog.definition#getMode} - * function, it will use the {@link #getModel} method to recognize the editor mode: - * - * The {@link CKEDITOR.dialog#EDITING_MODE editing mode} is used when the method returns: - * - * * A {@link CKEDITOR.dom.element} attached to the DOM. - * * A {@link CKEDITOR.plugins.widget} instance. - * - * Otherwise the {@link CKEDITOR.dialog#CREATION_MODE creation mode} is used. - * - * @since 4.13.0 - * @param {CKEDITOR.editor} editor - * @returns {Number} Dialog mode. - */ - getMode: function( editor ) { - if ( this.definition.getMode ) { - return this.definition.getMode( editor ); - } - - var model = this.getModel( editor ); - - if ( !model || ( model instanceof CKEDITOR.dom.element && !model.getParent() ) ) { - return CKEDITOR.dialog.CREATION_MODE; - } - - return CKEDITOR.dialog.EDITING_MODE; - } - }; - - CKEDITOR.tools.extend( CKEDITOR.dialog, { - - /** - * Indicates that the dialog is introducing new changes to the editor, for example inserting - * a newly created element as a part of a feature used with this dialog. - * - * @static - * @since 4.13.0 - */ - CREATION_MODE: 0, - - /** - * Indicates that the dialog is modifying the existing editor state, for example updating - * an existing element as a part of a feature used with this dialog. - * - * @static - * @since 4.13.0 - */ - EDITING_MODE: 1, - - /** - * Registers a dialog. - * - * // Full sample plugin, which does not only register a dialog window but also adds an item to the context menu. - * // To open the dialog window, choose "Open dialog" in the context menu. - * CKEDITOR.plugins.add( 'myplugin', { - * init: function( editor ) { - * editor.addCommand( 'mydialog',new CKEDITOR.dialogCommand( 'mydialog' ) ); - * - * if ( editor.contextMenu ) { - * editor.addMenuGroup( 'mygroup', 10 ); - * editor.addMenuItem( 'My Dialog', { - * label: 'Open dialog', - * command: 'mydialog', - * group: 'mygroup' - * } ); - * editor.contextMenu.addListener( function( element ) { - * return { 'My Dialog': CKEDITOR.TRISTATE_OFF }; - * } ); - * } - * - * CKEDITOR.dialog.add( 'mydialog', function( api ) { - * // CKEDITOR.dialog.definition - * var dialogDefinition = { - * title: 'Sample dialog', - * minWidth: 390, - * minHeight: 130, - * contents: [ - * { - * id: 'tab1', - * label: 'Label', - * title: 'Title', - * expand: true, - * padding: 0, - * elements: [ - * { - * type: 'html', - * html: '

This is some sample HTML content.

' - * }, - * { - * type: 'textarea', - * id: 'textareaId', - * rows: 4, - * cols: 40 - * } - * ] - * } - * ], - * buttons: [ CKEDITOR.dialog.okButton, CKEDITOR.dialog.cancelButton ], - * onOk: function() { - * // "this" is now a CKEDITOR.dialog object. - * // Accessing dialog elements: - * var textareaObj = this.getContentElement( 'tab1', 'textareaId' ); - * alert( "You have entered: " + textareaObj.getValue() ); - * } - * }; - * - * return dialogDefinition; - * } ); - * } - * } ); - * - * CKEDITOR.replace( 'editor1', { extraPlugins: 'myplugin' } ); - * - * @static - * @param {String} name The dialog's name. - * @param {Function/String} dialogDefinition - * A function returning the dialog's definition, or the URL to the `.js` file holding the function. - * The function should accept an argument `editor` which is the current editor instance, and - * return an object conforming to {@link CKEDITOR.dialog.definition}. - * @see CKEDITOR.dialog.definition - */ - add: function( name, dialogDefinition ) { - // Avoid path registration from multiple instances override definition. - if ( !this._.dialogDefinitions[ name ] || typeof dialogDefinition == 'function' ) - this._.dialogDefinitions[ name ] = dialogDefinition; - }, - - /** - * @static - * @todo - */ - exists: function( name ) { - return !!this._.dialogDefinitions[ name ]; - }, - - /** - * @static - * @todo - */ - getCurrent: function() { - return CKEDITOR.dialog._.currentTop; - }, - - /** - * Check whether tab wasn't removed by {@link CKEDITOR.config#removeDialogTabs}. - * - * @since 4.1.0 - * @static - * @param {CKEDITOR.editor} editor - * @param {String} dialogName - * @param {String} tabName - * @returns {Boolean} - */ - isTabEnabled: function( editor, dialogName, tabName ) { - var cfg = editor.config.removeDialogTabs; - - return !( cfg && cfg.match( new RegExp( '(?:^|;)' + dialogName + ':' + tabName + '(?:$|;)', 'i' ) ) ); - }, - - /** - * The default OK button for dialogs. Fires the `ok` event and closes the dialog if the event succeeds. - * - * @static - * @method - */ - okButton: ( function() { - var retval = function( editor, override ) { - override = override || {}; - return CKEDITOR.tools.extend( { - id: 'ok', - type: 'button', - label: editor.lang.common.ok, - 'class': 'cke_dialog_ui_button_ok', - onClick: function( evt ) { - var dialog = evt.data.dialog; - if ( dialog.fire( 'ok', { hide: true } ).hide !== false ) - dialog.hide(); - } - }, override, true ); - }; - retval.type = 'button'; - retval.override = function( override ) { - return CKEDITOR.tools.extend( function( editor ) { - return retval( editor, override ); - }, { type: 'button' }, true ); - }; - return retval; - } )(), - - /** - * The default cancel button for dialogs. Fires the `cancel` event and - * closes the dialog if no UI element value changed. - * - * @static - * @method - */ - cancelButton: ( function() { - var retval = function( editor, override ) { - override = override || {}; - return CKEDITOR.tools.extend( { - id: 'cancel', - type: 'button', - label: editor.lang.common.cancel, - 'class': 'cke_dialog_ui_button_cancel', - onClick: function( evt ) { - var dialog = evt.data.dialog; - if ( dialog.fire( 'cancel', { hide: true } ).hide !== false ) - dialog.hide(); - } - }, override, true ); - }; - retval.type = 'button'; - retval.override = function( override ) { - return CKEDITOR.tools.extend( function( editor ) { - return retval( editor, override ); - }, { type: 'button' }, true ); - }; - return retval; - } )(), - - /** - * Registers a dialog UI element. - * - * @static - * @param {String} typeName The name of the UI element. - * @param {Function} builder The function to build the UI element. - */ - addUIElement: function( typeName, builder ) { - this._.uiElementBuilders[ typeName ] = builder; - } - } ); - - CKEDITOR.dialog._ = { - uiElementBuilders: {}, - - dialogDefinitions: {}, - - currentTop: null, - - currentZIndex: null - }; - - // "Inherit" (copy actually) from CKEDITOR.event. - CKEDITOR.event.implementOn( CKEDITOR.dialog ); - CKEDITOR.event.implementOn( CKEDITOR.dialog.prototype ); - - defaultDialogDefinition = { - resizable: CKEDITOR.DIALOG_RESIZE_BOTH, - minWidth: 600, - minHeight: 400, - buttons: [ CKEDITOR.dialog.okButton, CKEDITOR.dialog.cancelButton ] - }; - - // Tool function used to return an item from an array based on its id - // property. - var getById = function( array, id, recurse ) { - for ( var i = 0, item; - ( item = array[ i ] ); i++ ) { - if ( item.id == id ) - return item; - if ( recurse && item[ recurse ] ) { - var retval = getById( item[ recurse ], id, recurse ); - if ( retval ) - return retval; - } - } - return null; - }; - - // Tool function used to add an item into an array. - var addById = function( array, newItem, nextSiblingId, recurse, nullIfNotFound ) { - if ( nextSiblingId ) { - for ( var i = 0, item; - ( item = array[ i ] ); i++ ) { - if ( item.id == nextSiblingId ) { - array.splice( i, 0, newItem ); - return newItem; - } - - if ( recurse && item[ recurse ] ) { - var retval = addById( item[ recurse ], newItem, nextSiblingId, recurse, true ); - if ( retval ) - return retval; - } - } - - if ( nullIfNotFound ) - return null; - } - - array.push( newItem ); - return newItem; - }; - - // Tool function used to remove an item from an array based on its id. - var removeById = function( array, id, recurse ) { - for ( var i = 0, item; - ( item = array[ i ] ); i++ ) { - if ( item.id == id ) - return array.splice( i, 1 ); - if ( recurse && item[ recurse ] ) { - var retval = removeById( item[ recurse ], id, recurse ); - if ( retval ) - return retval; - } - } - return null; - }; - - /** - * This class is not really part of the API. It is the `definition` property value - * passed to `dialogDefinition` event handlers. - * - * CKEDITOR.on( 'dialogDefinition', function( evt ) { - * var definition = evt.data.definition; - * var content = definition.getContents( 'page1' ); - * // ... - * } ); - * - * @private - * @class CKEDITOR.dialog.definitionObject - * @extends CKEDITOR.dialog.definition - * @constructor Creates a definitionObject class instance. - */ - function definitionObject( dialog, dialogDefinition ) { - // TODO : Check if needed. - this.dialog = dialog; - - // Transform the contents entries in contentObjects. - var contents = dialogDefinition.contents; - for ( var i = 0, content; - ( content = contents[ i ] ); i++ ) - contents[ i ] = content && new contentObject( dialog, content ); - - CKEDITOR.tools.extend( this, dialogDefinition ); - } - - definitionObject.prototype = { - /** - * Gets a content definition. - * - * @param {String} id The id of the content definition. - * @returns {CKEDITOR.dialog.definition.content} The content definition matching id. - */ - getContents: function( id ) { - return getById( this.contents, id ); - }, - - /** - * Gets a button definition. - * - * @param {String} id The id of the button definition. - * @returns {CKEDITOR.dialog.definition.button} The button definition matching id. - */ - getButton: function( id ) { - return getById( this.buttons, id ); - }, - - /** - * Adds a content definition object under this dialog definition. - * - * @param {CKEDITOR.dialog.definition.content} contentDefinition The - * content definition. - * @param {String} [nextSiblingId] The id of an existing content - * definition which the new content definition will be inserted - * before. Omit if the new content definition is to be inserted as - * the last item. - * @returns {CKEDITOR.dialog.definition.content} The inserted content definition. - */ - addContents: function( contentDefinition, nextSiblingId ) { - return addById( this.contents, contentDefinition, nextSiblingId ); - }, - - /** - * Adds a button definition object under this dialog definition. - * - * @param {CKEDITOR.dialog.definition.button} buttonDefinition The - * button definition. - * @param {String} [nextSiblingId] The id of an existing button - * definition which the new button definition will be inserted - * before. Omit if the new button definition is to be inserted as - * the last item. - * @returns {CKEDITOR.dialog.definition.button} The inserted button definition. - */ - addButton: function( buttonDefinition, nextSiblingId ) { - return addById( this.buttons, buttonDefinition, nextSiblingId ); - }, - - /** - * Removes a content definition from this dialog definition. - * - * @param {String} id The id of the content definition to be removed. - * @returns {CKEDITOR.dialog.definition.content} The removed content definition. - */ - removeContents: function( id ) { - removeById( this.contents, id ); - }, - - /** - * Removes a button definition from the dialog definition. - * - * @param {String} id The id of the button definition to be removed. - * @returns {CKEDITOR.dialog.definition.button} The removed button definition. - */ - removeButton: function( id ) { - removeById( this.buttons, id ); - } - }; - - /** - * This class is not really part of the API. It is the template of the - * objects representing content pages inside the - * CKEDITOR.dialog.definitionObject. - * - * CKEDITOR.on( 'dialogDefinition', function( evt ) { - * var definition = evt.data.definition; - * var content = definition.getContents( 'page1' ); - * content.remove( 'textInput1' ); - * // ... - * } ); - * - * @private - * @class CKEDITOR.dialog.definition.contentObject - * @constructor Creates a contentObject class instance. - */ - function contentObject( dialog, contentDefinition ) { - this._ = { - dialog: dialog - }; - - CKEDITOR.tools.extend( this, contentDefinition ); - } - - contentObject.prototype = { - /** - * Gets a UI element definition under the content definition. - * - * @param {String} id The id of the UI element definition. - * @returns {CKEDITOR.dialog.definition.uiElement} - */ - get: function( id ) { - return getById( this.elements, id, 'children' ); - }, - - /** - * Adds a UI element definition to the content definition. - * - * @param {CKEDITOR.dialog.definition.uiElement} elementDefinition The - * UI elemnet definition to be added. - * @param {String} nextSiblingId The id of an existing UI element - * definition which the new UI element definition will be inserted - * before. Omit if the new button definition is to be inserted as - * the last item. - * @returns {CKEDITOR.dialog.definition.uiElement} The element definition inserted. - */ - add: function( elementDefinition, nextSiblingId ) { - return addById( this.elements, elementDefinition, nextSiblingId, 'children' ); - }, - - /** - * Removes a UI element definition from the content definition. - * - * @param {String} id The id of the UI element definition to be removed. - * @returns {CKEDITOR.dialog.definition.uiElement} The element definition removed. - */ - remove: function( id ) { - removeById( this.elements, id, 'children' ); - } - }; - - function initDragAndDrop( dialog ) { - var lastCoords = null, - abstractDialogCoords = null, - editor = dialog.getParentEditor(), - magnetDistance = editor.config.dialog_magnetDistance, - margins = CKEDITOR.skin.margins || [ 0, 0, 0, 0 ]; - - if ( typeof magnetDistance == 'undefined' ) - magnetDistance = 20; - - function mouseMoveHandler( evt ) { - var dialogSize = dialog.getSize(), - containerSize = dialog.parts.dialog.getParent().getClientSize(), - x = evt.originalEvent.screenX, - y = evt.originalEvent.screenY, - dx = x - lastCoords.x, - dy = y - lastCoords.y, - realX, realY; - - lastCoords = { x: x, y: y }; - abstractDialogCoords.x += dx; - abstractDialogCoords.y += dy; - - if ( abstractDialogCoords.x + margins[ 3 ] < magnetDistance ) { - realX = -margins[ 3 ]; - } else if ( abstractDialogCoords.x - margins[ 1 ] > containerSize.width - dialogSize.width - magnetDistance ) { - realX = containerSize.width - dialogSize.width + ( editor.lang.dir == 'rtl' ? 0 : margins[ 1 ] ); - } else { - realX = abstractDialogCoords.x; - } - - if ( abstractDialogCoords.y + margins[ 0 ] < magnetDistance ) { - realY = -margins[ 0 ]; - } else if ( abstractDialogCoords.y - margins[ 2 ] > containerSize.height - dialogSize.height - magnetDistance ) { - realY = containerSize.height - dialogSize.height + margins[ 2 ]; - } else { - realY = abstractDialogCoords.y; - } - - realX = Math.floor( realX ); - realY = Math.floor( realY ); - - dialog.move( realX, realY, 1 ); - - evt.preventDefault(); - } - - function mouseUpHandler() { - CMS.$(CKEDITOR.document.$).off( 'pointermove', mouseMoveHandler ); - CMS.$(CKEDITOR.document.$).off( 'pointerup', mouseUpHandler ); - - if ( CKEDITOR.env.ie6Compat ) { - var coverDoc = currentCover.getChild( 0 ).getFrameDocument(); - coverDoc.removeListener( 'mousemove', mouseMoveHandler ); - coverDoc.removeListener( 'mouseup', mouseUpHandler ); - } - } - - CMS.$(dialog.parts.title.$).on( 'pointerdown', function( evt ) { - if ( !dialog._.moved ) { - var container = dialog._.element, - element = container.getFirst(); - - element.setStyle( 'position', 'absolute' ); - container.removeStyle( 'display' ); - - dialog._.moved = true; - dialog.layout(); - } - - lastCoords = { x: evt.originalEvent.screenX, y: evt.originalEvent.screenY }; - - CMS.$(CKEDITOR.document.$).on( 'pointermove', mouseMoveHandler ); - CMS.$(CKEDITOR.document.$).on( 'pointerup', mouseUpHandler ); - abstractDialogCoords = dialog.getPosition(); - - if ( CKEDITOR.env.ie6Compat ) { - var coverDoc = currentCover.getChild( 0 ).getFrameDocument(); - coverDoc.on( 'mousemove', mouseMoveHandler ); - coverDoc.on( 'mouseup', mouseUpHandler ); - } - - evt.preventDefault(); - }); - } - - function initResizeHandles( dialog ) { - var def = dialog.definition, - resizable = def.resizable; - - if ( resizable == CKEDITOR.DIALOG_RESIZE_NONE ) - return; - - var editor = dialog.getParentEditor(); - var wrapperWidth, wrapperHeight, viewSize, origin, startSize, dialogCover; - - var mouseDownFn = CKEDITOR.tools.addFunction( function( $event ) { - startSize = dialog.getSize(); - - var content = dialog.parts.contents, - iframeDialog = content.$.getElementsByTagName( 'iframe' ).length, - isBorderBox = !( CKEDITOR.env.gecko || CKEDITOR.env.ie && CKEDITOR.env.quirks ); - - // Shim to help capturing "mousemove" over iframe. - if ( iframeDialog ) { - CMS.$('.cke_dialog_resize_cover').remove(); - dialogCover = CKEDITOR.dom.element.createFromHtml( '
' ); - content.append( dialogCover ); - } - - // Calculate the offset between content and chrome size. - // Use size of current tab panel because we can't rely on size of contents container (#3144). - wrapperHeight = startSize.height - dialog.parts.contents.getFirst( isVisible ).getSize( 'height', isBorderBox ); - wrapperWidth = startSize.width - dialog.parts.contents.getFirst( isVisible ).getSize( 'width', 1 ); - - origin = { x: $event.screenX, y: $event.screenY }; - - viewSize = CKEDITOR.document.getWindow().getViewPaneSize(); - - CMS.$(CKEDITOR.document.$).on( 'pointermove', mouseMoveHandler ); - CMS.$(CKEDITOR.document.$).on( 'pointerup', mouseUpHandler ); - - if ( CKEDITOR.env.ie6Compat ) { - var coverDoc = currentCover.getChild( 0 ).getFrameDocument(); - coverDoc.on( 'mousemove', mouseMoveHandler ); - coverDoc.on( 'mouseup', mouseUpHandler ); - } - - $event.preventDefault && $event.preventDefault(); - - function isVisible( el ) { - return el.isVisible(); - } - } ); - - // Prepend the grip to the dialog. - dialog.on( 'load', function() { - var direction = ''; - if ( resizable == CKEDITOR.DIALOG_RESIZE_WIDTH ) - direction = ' cke_resizer_horizontal'; - else if ( resizable == CKEDITOR.DIALOG_RESIZE_HEIGHT ) - direction = ' cke_resizer_vertical'; - var resizer = CKEDITOR.dom.element.createFromHtml( - '' + - // BLACK LOWER RIGHT TRIANGLE (ltr) - // BLACK LOWER LEFT TRIANGLE (rtl) - ( editor.lang.dir == 'ltr' ? '\u25E2' : '\u25E3' ) + - '' ); - dialog.parts.footer.append( resizer, 1 ); - } ); - editor.on( 'destroy', function() { - CKEDITOR.tools.removeFunction( mouseDownFn ); - } ); - - function mouseMoveHandler( evt ) { - var rtl = editor.lang.dir == 'rtl', - dx = ( evt.originalEvent.screenX - origin.x ) * ( rtl ? -1 : 1 ), - dy = evt.originalEvent.screenY - origin.y, - width = startSize.width, - height = startSize.height, - internalWidth = width + dx * ( dialog._.moved ? 1 : 2 ), - internalHeight = height + dy * ( dialog._.moved ? 1 : 2 ), - element = dialog._.element.getFirst(), - right = rtl && parseInt( element.getComputedStyle( 'right' ), 10 ), - position = dialog.getPosition(); - - position.x = position.x || 0; - position.y = position.y || 0; - - if ( position.y + internalHeight > viewSize.height ) { - internalHeight = viewSize.height - position.y; - } - - if ( ( rtl ? right : position.x ) + internalWidth > viewSize.width ) { - internalWidth = viewSize.width - ( rtl ? right : position.x ); - } - - internalHeight = Math.floor( internalHeight ); - internalWidth = Math.floor( internalWidth ); - - // Make sure the dialog will not be resized to the wrong side when it's in the leftmost position for RTL. - if ( resizable == CKEDITOR.DIALOG_RESIZE_WIDTH || resizable == CKEDITOR.DIALOG_RESIZE_BOTH ) { - width = Math.max( def.minWidth || 0, internalWidth - wrapperWidth ); - } - - if ( resizable == CKEDITOR.DIALOG_RESIZE_HEIGHT || resizable == CKEDITOR.DIALOG_RESIZE_BOTH ) { - height = Math.max( def.minHeight || 0, internalHeight - wrapperHeight ); - } - - dialog.resize( width, height ); - - if ( dialog._.moved ) { - var x = dialog._.position.x, - y = dialog._.position.y; - - updateRatios( dialog, x, y ); - } - - if ( !dialog._.moved ) - dialog.layout(); - - evt.preventDefault(); - } - - function mouseUpHandler() { - CMS.$(CKEDITOR.document.$).off( 'pointermove', mouseMoveHandler ); - CMS.$(CKEDITOR.document.$).off( 'pointerup', mouseUpHandler ); - - if ( dialogCover ) { - dialogCover.remove(); - dialogCover = null; - } - - if ( CKEDITOR.env.ie6Compat ) { - var coverDoc = currentCover.getChild( 0 ).getFrameDocument(); - coverDoc.removeListener( 'mouseup', mouseUpHandler ); - coverDoc.removeListener( 'mousemove', mouseMoveHandler ); - } - } - } - - function updateRatios( dialog, x, y ) { - var containerSize = dialog.parts.dialog.getParent().getClientSize(), - dialogSize = dialog.getSize(), - ratios = dialog._.viewportRatio, - freeSpace = { - width: Math.max( containerSize.width - dialogSize.width, 0 ), - height: Math.max( containerSize.height - dialogSize.height, 0 ) - }; - - ratios.width = freeSpace.width ? ( x / freeSpace.width ) : ratios.width; - ratios.height = freeSpace.height ? ( y / freeSpace.height ) : ratios.height; - - dialog._.viewportRatio = ratios; - } - - // Caching reusable covers and allowing only one cover on screen. - var covers = {}; - - function cancelEvent( ev ) { - ev.data.preventDefault( 1 ); - } - - function showCover( editor ) { - var config = editor.config, - skinName = ( CKEDITOR.skinName || editor.config.skin ), - backgroundColorStyle = config.dialog_backgroundCoverColor || ( skinName == 'moono-lisa' ? 'black' : 'white' ), - backgroundCoverOpacity = config.dialog_backgroundCoverOpacity, - baseFloatZIndex = config.baseFloatZIndex, - coverKey = CKEDITOR.tools.genKey( backgroundColorStyle, backgroundCoverOpacity, baseFloatZIndex ), - coverElement = covers[ coverKey ]; - - CKEDITOR.document.getBody().addClass( 'cke_dialog_open' ); - CMS.$('.cke_dialog_background_cover:not(.cms-ckeditor-dialog-background-cover)').remove(); - - if ( !coverElement ) { - var html = [ - '
' - ]; - - if ( CKEDITOR.env.ie6Compat ) { - // Support for custom document.domain in IE. - var iframeHtml = ''; - - html.push( '' + - '' ); - } - - html.push( '
' ); - - coverElement = CKEDITOR.dom.element.createFromHtml( html.join( '' ) ); - coverElement.setOpacity( backgroundCoverOpacity !== undefined ? backgroundCoverOpacity : 0.5 ); - - coverElement.on( 'keydown', cancelEvent ); - coverElement.on( 'keypress', cancelEvent ); - coverElement.on( 'keyup', cancelEvent ); - - coverElement.appendTo( CKEDITOR.document.getBody() ); - covers[ coverKey ] = coverElement; - } else { - coverElement.show(); - } - - // Makes the dialog cover a focus holder as well. - editor.focusManager.add( coverElement ); - - currentCover = coverElement; - - // Using Safari/Mac, focus must be kept where it is (https://dev.ckeditor.com/ticket/7027) - if ( !( CKEDITOR.env.mac && CKEDITOR.env.webkit ) ) - coverElement.focus(); - } - - function hideCover( editor ) { - CMS.$('.cke_dialog_background_cover:not(.cms-ckeditor-dialog-background-cover)').remove(); - CKEDITOR.document.getBody().removeClass( 'cke_dialog_open' ); - if ( !currentCover ) - return; - - editor.focusManager.remove( currentCover ); - currentCover.hide(); - } - - function removeCovers() { - for ( var coverId in covers ) - covers[ coverId ].remove(); - covers = {}; - } - - var accessKeyProcessors = {}; - - function accessKeyDownHandler( evt ) { - var ctrl = evt.data.$.ctrlKey || evt.data.$.metaKey, - alt = evt.data.$.altKey, - shift = evt.data.$.shiftKey, - key = String.fromCharCode( evt.data.$.keyCode ), - keyProcessor = accessKeyProcessors[ ( ctrl ? 'CTRL+' : '' ) + ( alt ? 'ALT+' : '' ) + ( shift ? 'SHIFT+' : '' ) + key ]; - - if ( !keyProcessor || !keyProcessor.length ) - return; - - keyProcessor = keyProcessor[ keyProcessor.length - 1 ]; - keyProcessor.keydown && keyProcessor.keydown.call( keyProcessor.uiElement, keyProcessor.dialog, keyProcessor.key ); - evt.data.preventDefault(); - } - - function accessKeyUpHandler( evt ) { - var ctrl = evt.data.$.ctrlKey || evt.data.$.metaKey, - alt = evt.data.$.altKey, - shift = evt.data.$.shiftKey, - key = String.fromCharCode( evt.data.$.keyCode ), - keyProcessor = accessKeyProcessors[ ( ctrl ? 'CTRL+' : '' ) + ( alt ? 'ALT+' : '' ) + ( shift ? 'SHIFT+' : '' ) + key ]; - - if ( !keyProcessor || !keyProcessor.length ) - return; - - keyProcessor = keyProcessor[ keyProcessor.length - 1 ]; - if ( keyProcessor.keyup ) { - keyProcessor.keyup.call( keyProcessor.uiElement, keyProcessor.dialog, keyProcessor.key ); - evt.data.preventDefault(); - } - } - - function registerAccessKey( uiElement, dialog, key, downFunc, upFunc ) { - var procList = accessKeyProcessors[ key ] || ( accessKeyProcessors[ key ] = [] ); - procList.push( { - uiElement: uiElement, - dialog: dialog, - key: key, - keyup: upFunc || uiElement.accessKeyUp, - keydown: downFunc || uiElement.accessKeyDown - } ); - } - - function unregisterAccessKey( obj ) { - for ( var i in accessKeyProcessors ) { - var list = accessKeyProcessors[ i ]; - for ( var j = list.length - 1; j >= 0; j-- ) { - if ( list[ j ].dialog == obj || list[ j ].uiElement == obj ) - list.splice( j, 1 ); - } - if ( list.length === 0 ) - delete accessKeyProcessors[ i ]; - } - } - - function tabAccessKeyUp( dialog, key ) { - if ( dialog._.accessKeyMap[ key ] ) - dialog.selectPage( dialog._.accessKeyMap[ key ] ); - } - - function tabAccessKeyDown() {} - - ( function() { - CKEDITOR.ui.dialog = { - /** - * The base class of all dialog UI elements. - * - * @class CKEDITOR.ui.dialog.uiElement - * @constructor Creates a uiElement class instance. - * @param {CKEDITOR.dialog} dialog Parent dialog object. - * @param {CKEDITOR.dialog.definition.uiElement} elementDefinition Element - * definition. - * - * Accepted fields: - * - * * `id` (Required) The id of the UI element. See {@link CKEDITOR.dialog#getContentElement}. - * * `type` (Required) The type of the UI element. The - * value to this field specifies which UI element class will be used to - * generate the final widget. - * * `title` (Optional) The popup tooltip for the UI - * element. - * * `hidden` (Optional) A flag that tells if the element - * should be initially visible. - * * `className` (Optional) Additional CSS class names - * to add to the UI element. Separated by space. - * * `style` (Optional) Additional CSS inline styles - * to add to the UI element. A semicolon (;) is required after the last - * style declaration. - * * `accessKey` (Optional) The alphanumeric access key - * for this element. Access keys are automatically prefixed by CTRL. - * * `on*` (Optional) Any UI element definition field that - * starts with `on` followed immediately by a capital letter and - * probably more letters is an event handler. Event handlers may be further - * divided into registered event handlers and DOM event handlers. Please - * refer to {@link CKEDITOR.ui.dialog.uiElement#registerEvents} and - * {@link CKEDITOR.ui.dialog.uiElement#eventProcessors} for more information. - * - * @param {Array} htmlList - * List of HTML code to be added to the dialog's content area. - * @param {Function/String} [nodeNameArg='div'] - * A function returning a string, or a simple string for the node name for - * the root DOM node. - * @param {Function/Object} [stylesArg={}] - * A function returning an object, or a simple object for CSS styles applied - * to the DOM node. - * @param {Function/Object} [attributesArg={}] - * A fucntion returning an object, or a simple object for attributes applied - * to the DOM node. - * @param {Function/String} [contentsArg=''] - * A function returning a string, or a simple string for the HTML code inside - * the root DOM node. Default is empty string. - */ - uiElement: function( dialog, elementDefinition, htmlList, nodeNameArg, stylesArg, attributesArg, contentsArg ) { - if ( arguments.length < 4 ) - return; - - var nodeName = ( nodeNameArg.call ? nodeNameArg( elementDefinition ) : nodeNameArg ) || 'div', - html = [ '<', nodeName, ' ' ], - styles = ( stylesArg && stylesArg.call ? stylesArg( elementDefinition ) : stylesArg ) || {}, - attributes = ( attributesArg && attributesArg.call ? attributesArg( elementDefinition ) : attributesArg ) || {}, - innerHTML = ( contentsArg && contentsArg.call ? contentsArg.call( this, dialog, elementDefinition ) : contentsArg ) || '', - domId = this.domId = attributes.id || CKEDITOR.tools.getNextId() + '_uiElement', - i; - - if ( elementDefinition.requiredContent && !dialog.getParentEditor().filter.check( elementDefinition.requiredContent ) ) { - styles.display = 'none'; - this.notAllowed = true; - } - - // Set the id, a unique id is required for getElement() to work. - attributes.id = domId; - - // Set the type and definition CSS class names. - var classes = {}; - if ( elementDefinition.type ) - classes[ 'cke_dialog_ui_' + elementDefinition.type ] = 1; - if ( elementDefinition.className ) - classes[ elementDefinition.className ] = 1; - if ( elementDefinition.disabled ) - classes.cke_disabled = 1; - - var attributeClasses = ( attributes[ 'class' ] && attributes[ 'class' ].split ) ? attributes[ 'class' ].split( ' ' ) : []; - for ( i = 0; i < attributeClasses.length; i++ ) { - if ( attributeClasses[ i ] ) - classes[ attributeClasses[ i ] ] = 1; - } - var finalClasses = []; - for ( i in classes ) - finalClasses.push( i ); - attributes[ 'class' ] = finalClasses.join( ' ' ); - - // Set the popup tooltop. - if ( elementDefinition.title ) - attributes.title = elementDefinition.title; - - // Write the inline CSS styles. - var styleStr = ( elementDefinition.style || '' ).split( ';' ); - - // Element alignment support. - if ( elementDefinition.align ) { - var align = elementDefinition.align; - styles[ 'margin-left' ] = align == 'left' ? 0 : 'auto'; - styles[ 'margin-right' ] = align == 'right' ? 0 : 'auto'; - } - - for ( i in styles ) - styleStr.push( i + ':' + styles[ i ] ); - if ( elementDefinition.hidden ) - styleStr.push( 'display:none' ); - for ( i = styleStr.length - 1; i >= 0; i-- ) { - if ( styleStr[ i ] === '' ) - styleStr.splice( i, 1 ); - } - if ( styleStr.length > 0 ) - attributes.style = ( attributes.style ? ( attributes.style + '; ' ) : '' ) + styleStr.join( '; ' ); - - // Write the attributes. - for ( i in attributes ) - html.push( i + '="' + CKEDITOR.tools.htmlEncode( attributes[ i ] ) + '" ' ); - - // Write the content HTML. - html.push( '>', innerHTML, '' ); - - // Add contents to the parent HTML array. - htmlList.push( html.join( '' ) ); - - ( this._ || ( this._ = {} ) ).dialog = dialog; - - // Override isChanged if it is defined in element definition. - if ( typeof elementDefinition.isChanged == 'boolean' ) - this.isChanged = function() { - return elementDefinition.isChanged; - }; - if ( typeof elementDefinition.isChanged == 'function' ) - this.isChanged = elementDefinition.isChanged; - - // Overload 'get(set)Value' on definition. - if ( typeof elementDefinition.setValue == 'function' ) { - this.setValue = CKEDITOR.tools.override( this.setValue, function( org ) { - return function( val ) { - org.call( this, elementDefinition.setValue.call( this, val ) ); - }; - } ); - } - - if ( typeof elementDefinition.getValue == 'function' ) { - this.getValue = CKEDITOR.tools.override( this.getValue, function( org ) { - return function() { - return elementDefinition.getValue.call( this, org.call( this ) ); - }; - } ); - } - - // Add events. - CKEDITOR.event.implementOn( this ); - - this.registerEvents( elementDefinition ); - if ( this.accessKeyUp && this.accessKeyDown && elementDefinition.accessKey ) - registerAccessKey( this, dialog, 'CTRL+' + elementDefinition.accessKey ); - - var me = this; - dialog.on( 'load', function() { - var input = me.getInputElement(); - if ( input ) { - var focusClass = me.type in { 'checkbox': 1, 'ratio': 1 } && CKEDITOR.env.ie && CKEDITOR.env.version < 8 ? 'cke_dialog_ui_focused' : ''; - input.on( 'focus', function() { - dialog._.tabBarMode = false; - dialog._.hasFocus = true; - me.fire( 'focus' ); - focusClass && this.addClass( focusClass ); - - } ); - - input.on( 'blur', function() { - me.fire( 'blur' ); - focusClass && this.removeClass( focusClass ); - } ); - } - } ); - - // Completes this object with everything we have in the - // definition. - CKEDITOR.tools.extend( this, elementDefinition ); - - // Register the object as a tab focus if it can be included. - if ( this.keyboardFocusable ) { - this.tabIndex = elementDefinition.tabIndex || 0; - - this.focusIndex = dialog._.focusList.push( this ) - 1; - this.on( 'focus', function() { - dialog._.currentFocusIndex = me.focusIndex; - } ); - } - }, - - /** - * Horizontal layout box for dialog UI elements, auto-expends to available width of container. - * - * @class CKEDITOR.ui.dialog.hbox - * @extends CKEDITOR.ui.dialog.uiElement - * @constructor Creates a hbox class instance. - * @param {CKEDITOR.dialog} dialog Parent dialog object. - * @param {Array} childObjList - * Array of {@link CKEDITOR.ui.dialog.uiElement} objects inside this container. - * @param {Array} childHtmlList - * Array of HTML code that correspond to the HTML output of all the - * objects in childObjList. - * @param {Array} htmlList - * Array of HTML code that this element will output to. - * @param {CKEDITOR.dialog.definition.uiElement} elementDefinition - * The element definition. Accepted fields: - * - * * `widths` (Optional) The widths of child cells. - * * `height` (Optional) The height of the layout. - * * `padding` (Optional) The padding width inside child cells. - * * `align` (Optional) The alignment of the whole layout. - */ - hbox: function( dialog, childObjList, childHtmlList, htmlList, elementDefinition ) { - if ( arguments.length < 4 ) - return; - - this._ || ( this._ = {} ); - - var children = this._.children = childObjList, - widths = elementDefinition && elementDefinition.widths || null, - height = elementDefinition && elementDefinition.height || null, - styles = {}, - i; - /** @ignore */ - var innerHTML = function() { - var html = [ '' ]; - for ( i = 0; i < childHtmlList.length; i++ ) { - var className = 'cke_dialog_ui_hbox_child', - styles = []; - if ( i === 0 ) { - className = 'cke_dialog_ui_hbox_first'; - } - if ( i == childHtmlList.length - 1 ) { - className = 'cke_dialog_ui_hbox_last'; - } - - html.push( ' 0 ) { - html.push( 'style="' + styles.join( '; ' ) + '" ' ); - } - html.push( '>', childHtmlList[ i ], '' ); - } - html.push( '' ); - return html.join( '' ); - }; - - var attribs = { role: 'presentation' }; - elementDefinition && elementDefinition.align && ( attribs.align = elementDefinition.align ); - - CKEDITOR.ui.dialog.uiElement.call( this, dialog, elementDefinition || { type: 'hbox' }, htmlList, 'table', styles, attribs, innerHTML ); - }, - - /** - * Vertical layout box for dialog UI elements. - * - * @class CKEDITOR.ui.dialog.vbox - * @extends CKEDITOR.ui.dialog.hbox - * @constructor Creates a vbox class instance. - * @param {CKEDITOR.dialog} dialog Parent dialog object. - * @param {Array} childObjList - * Array of {@link CKEDITOR.ui.dialog.uiElement} objects inside this container. - * @param {Array} childHtmlList - * Array of HTML code that correspond to the HTML output of all the - * objects in childObjList. - * @param {Array} htmlList Array of HTML code that this element will output to. - * @param {CKEDITOR.dialog.definition.uiElement} elementDefinition - * The element definition. Accepted fields: - * - * * `width` (Optional) The width of the layout. - * * `heights` (Optional) The heights of individual cells. - * * `align` (Optional) The alignment of the layout. - * * `padding` (Optional) The padding width inside child cells. - * * `expand` (Optional) Whether the layout should expand - * vertically to fill its container. - */ - vbox: function( dialog, childObjList, childHtmlList, htmlList, elementDefinition ) { - if ( arguments.length < 3 ) - return; - - this._ || ( this._ = {} ); - - var children = this._.children = childObjList, - width = elementDefinition && elementDefinition.width || null, - heights = elementDefinition && elementDefinition.heights || null; - /** @ignore */ - var innerHTML = function() { - var html = [ '' ); - for ( var i = 0; i < childHtmlList.length; i++ ) { - var styles = []; - html.push( '' ); - } - html.push( '
0 ) - html.push( 'style="', styles.join( '; ' ), '" ' ); - html.push( ' class="cke_dialog_ui_vbox_child">', childHtmlList[ i ], '
' ); - return html.join( '' ); - }; - CKEDITOR.ui.dialog.uiElement.call( this, dialog, elementDefinition || { type: 'vbox' }, htmlList, 'div', null, { role: 'presentation' }, innerHTML ); - } - }; - } )(); - - /** @class CKEDITOR.ui.dialog.uiElement */ - CKEDITOR.ui.dialog.uiElement.prototype = { - /** - * Gets the root DOM element of this dialog UI object. - * - * uiElement.getElement().hide(); - * - * @returns {CKEDITOR.dom.element} Root DOM element of UI object. - */ - getElement: function() { - return CKEDITOR.document.getById( this.domId ); - }, - - /** - * Gets the DOM element that the user inputs values. - * - * This function is used by {@link #setValue}, {@link #getValue} and {@link #focus}. It should - * be overrided in child classes where the input element isn't the root - * element. - * - * var rawValue = textInput.getInputElement().$.value; - * - * @returns {CKEDITOR.dom.element} The element where the user input values. - */ - getInputElement: function() { - return this.getElement(); - }, - - /** - * Gets the parent dialog object containing this UI element. - * - * var dialog = uiElement.getDialog(); - * - * @returns {CKEDITOR.dialog} Parent dialog object. - */ - getDialog: function() { - return this._.dialog; - }, - - /** - * Sets the value of this dialog UI object. - * - * uiElement.setValue( 'Dingo' ); - * - * @chainable - * @param {Object} value The new value. - * @param {Boolean} noChangeEvent Internal commit, to supress `change` event on this element. - */ - setValue: function( value, noChangeEvent ) { - this.getInputElement().setValue( value ); - !noChangeEvent && this.fire( 'change', { value: value } ); - return this; - }, - - /** - * Gets the current value of this dialog UI object. - * - * var myValue = uiElement.getValue(); - * - * @returns {Object} The current value. - */ - getValue: function() { - return this.getInputElement().getValue(); - }, - - /** - * Tells whether the UI object's value has changed. - * - * if ( uiElement.isChanged() ) - * confirm( 'Value changed! Continue?' ); - * - * @returns {Boolean} `true` if changed, `false` if not changed. - */ - isChanged: function() { - // Override in input classes. - return false; - }, - - /** - * Selects the parent tab of this element. Usually called by focus() or overridden focus() methods. - * - * focus : function() { - * this.selectParentTab(); - * // do something else. - * } - * - * @chainable - */ - selectParentTab: function() { - var element = this.getInputElement(), - cursor = element, - tabId; - while ( ( cursor = cursor.getParent() ) && cursor.$.className.search( 'cke_dialog_page_contents' ) == -1 ) { - - } - - // Some widgets don't have parent tabs (e.g. OK and Cancel buttons). - if ( !cursor ) - return this; - - tabId = cursor.getAttribute( 'name' ); - // Avoid duplicate select. - if ( this._.dialog._.currentTabId != tabId ) - this._.dialog.selectPage( tabId ); - return this; - }, - - /** - * Puts the focus to the UI object. Switches tabs if the UI object isn't in the active tab page. - * - * uiElement.focus(); - * - * @chainable - */ - focus: function() { - this.selectParentTab().getInputElement().focus(); - return this; - }, - - /** - * Registers the `on*` event handlers defined in the element definition. - * - * The default behavior of this function is: - * - * 1. If the on* event is defined in the class's eventProcesors list, - * then the registration is delegated to the corresponding function - * in the eventProcessors list. - * 2. If the on* event is not defined in the eventProcessors list, then - * register the event handler under the corresponding DOM event of - * the UI element's input DOM element (as defined by the return value - * of {@link #getInputElement}). - * - * This function is only called at UI element instantiation, but can - * be overridded in child classes if they require more flexibility. - * - * @chainable - * @param {CKEDITOR.dialog.definition.uiElement} definition The UI element - * definition. - */ - registerEvents: function( definition ) { - var regex = /^on([A-Z]\w+)/, - match; - - var registerDomEvent = function( uiElement, dialog, eventName, func ) { - dialog.on( 'load', function() { - uiElement.getInputElement().on( eventName, func, uiElement ); - } ); - }; - - for ( var i in definition ) { - if ( !( match = i.match( regex ) ) ) - continue; - if ( this.eventProcessors[ i ] ) - this.eventProcessors[ i ].call( this, this._.dialog, definition[ i ] ); - else - registerDomEvent( this, this._.dialog, match[ 1 ].toLowerCase(), definition[ i ] ); - } - - return this; - }, - - /** - * The event processor list used by - * {@link CKEDITOR.ui.dialog.uiElement#getInputElement} at UI element - * instantiation. The default list defines three `on*` events: - * - * 1. `onLoad` - Called when the element's parent dialog opens for the - * first time. - * 2. `onShow` - Called whenever the element's parent dialog opens. - * 3. `onHide` - Called whenever the element's parent dialog closes. - * - * // This connects the 'click' event in CKEDITOR.ui.dialog.button to onClick - * // handlers in the UI element's definitions. - * CKEDITOR.ui.dialog.button.eventProcessors = CKEDITOR.tools.extend( {}, - * CKEDITOR.ui.dialog.uiElement.prototype.eventProcessors, - * { onClick : function( dialog, func ) { this.on( 'click', func ); } }, - * true - * ); - * - * @property {Object} - */ - eventProcessors: { - onLoad: function( dialog, func ) { - dialog.on( 'load', func, this ); - }, - - onShow: function( dialog, func ) { - dialog.on( 'show', func, this ); - }, - - onHide: function( dialog, func ) { - dialog.on( 'hide', func, this ); - } - }, - - /** - * The default handler for a UI element's access key down event, which - * tries to put focus to the UI element. - * - * Can be overridded in child classes for more sophisticaed behavior. - * - * @param {CKEDITOR.dialog} dialog The parent dialog object. - * @param {String} key The key combination pressed. Since access keys - * are defined to always include the `CTRL` key, its value should always - * include a `'CTRL+'` prefix. - */ - accessKeyDown: function() { - this.focus(); - }, - - /** - * The default handler for a UI element's access key up event, which - * does nothing. - * - * Can be overridded in child classes for more sophisticated behavior. - * - * @param {CKEDITOR.dialog} dialog The parent dialog object. - * @param {String} key The key combination pressed. Since access keys - * are defined to always include the `CTRL` key, its value should always - * include a `'CTRL+'` prefix. - */ - accessKeyUp: function() {}, - - /** - * Disables a UI element. - */ - disable: function() { - var element = this.getElement(), - input = this.getInputElement(); - input.setAttribute( 'disabled', 'true' ); - element.addClass( 'cke_disabled' ); - }, - - /** - * Enables a UI element. - */ - enable: function() { - var element = this.getElement(), - input = this.getInputElement(); - input.removeAttribute( 'disabled' ); - element.removeClass( 'cke_disabled' ); - }, - - /** - * Determines whether an UI element is enabled or not. - * - * @returns {Boolean} Whether the UI element is enabled. - */ - isEnabled: function() { - return !this.getElement().hasClass( 'cke_disabled' ); - }, - - /** - * Determines whether an UI element is visible or not. - * - * @returns {Boolean} Whether the UI element is visible. - */ - isVisible: function() { - return this.getInputElement().isVisible(); - }, - - /** - * Determines whether an UI element is focus-able or not. - * Focus-able is defined as being both visible and enabled. - * - * @returns {Boolean} Whether the UI element can be focused. - */ - isFocusable: function() { - if ( !this.isEnabled() || !this.isVisible() ) - return false; - return true; - } - }; - - /** @class CKEDITOR.ui.dialog.hbox */ - CKEDITOR.ui.dialog.hbox.prototype = CKEDITOR.tools.extend( new CKEDITOR.ui.dialog.uiElement(), { - /** - * Gets a child UI element inside this container. - * - * var checkbox = hbox.getChild( [0,1] ); - * checkbox.setValue( true ); - * - * @param {Array/Number} indices An array or a single number to indicate the child's - * position in the container's descendant tree. Omit to get all the children in an array. - * @returns {Array/CKEDITOR.ui.dialog.uiElement} Array of all UI elements in the container - * if no argument given, or the specified UI element if indices is given. - */ - getChild: function( indices ) { - // If no arguments, return a clone of the children array. - if ( arguments.length < 1 ) - return this._.children.concat(); - - // If indices isn't array, make it one. - if ( !indices.splice ) - indices = [ indices ]; - - // Retrieve the child element according to tree position. - if ( indices.length < 2 ) - return this._.children[ indices[ 0 ] ]; - else - return ( this._.children[ indices[ 0 ] ] && this._.children[ indices[ 0 ] ].getChild ) ? this._.children[ indices[ 0 ] ].getChild( indices.slice( 1, indices.length ) ) : null; - } - }, true ); - - CKEDITOR.ui.dialog.vbox.prototype = new CKEDITOR.ui.dialog.hbox(); - - ( function() { - var commonBuilder = { - build: function( dialog, elementDefinition, output ) { - var children = elementDefinition.children, - child, - childHtmlList = [], - childObjList = []; - for ( var i = 0; - ( i < children.length && ( child = children[ i ] ) ); i++ ) { - var childHtml = []; - childHtmlList.push( childHtml ); - childObjList.push( CKEDITOR.dialog._.uiElementBuilders[ child.type ].build( dialog, child, childHtml ) ); - } - return new CKEDITOR.ui.dialog[ elementDefinition.type ]( dialog, childObjList, childHtmlList, output, elementDefinition ); - } - }; - - CKEDITOR.dialog.addUIElement( 'hbox', commonBuilder ); - CKEDITOR.dialog.addUIElement( 'vbox', commonBuilder ); - } )(); - - /** - * Generic dialog command. It opens a specific dialog when executed. - * - * // Register the "link" command which opens the "link" dialog. - * editor.addCommand( 'link', new CKEDITOR.dialogCommand( 'link' ) ); - * - * @class - * @constructor Creates a dialogCommand class instance. - * @extends CKEDITOR.commandDefinition - * @param {String} dialogName The name of the dialog to open when executing - * this command. - * @param {Object} [ext] Additional command definition's properties. - * @param {String} [ext.tabId] You can provide additional property (`tabId`) if you wish to open the dialog on a specific tabId. - * - * // Open the dialog on the 'keystroke' tabId. - * editor.addCommand( 'keystroke', new CKEDITOR.dialogCommand( 'a11yHelp', { tabId: 'keystroke' } ) ); - */ - CKEDITOR.dialogCommand = function( dialogName, ext ) { - this.dialogName = dialogName; - CKEDITOR.tools.extend( this, ext, true ); - }; - - CKEDITOR.dialogCommand.prototype = { - exec: function( editor ) { - var tabId = this.tabId; - editor.openDialog( this.dialogName, function( dialog ) { - // Select different tab if it's provided (#830). - if ( tabId ) { - dialog.selectPage( tabId ); - } - } ); - }, - - // Dialog commands just open a dialog ui, thus require no undo logic, - // undo support should dedicate to specific dialog implementation. - canUndo: false, - - editorFocus: 1 - }; - - ( function() { - var notEmptyRegex = /^([a]|[^a])+$/, - integerRegex = /^\d*$/, - numberRegex = /^\d*(?:\.\d+)?$/, - htmlLengthRegex = /^(((\d*(\.\d+))|(\d*))(px|\%)?)?$/, - cssLengthRegex = /^(((\d*(\.\d+))|(\d*))(px|em|ex|in|cm|mm|pt|pc|\%)?)?$/i, - inlineStyleRegex = /^(\s*[\w-]+\s*:\s*[^:;]+(?:;|$))*$/; - - /** - * {@link CKEDITOR.dialog Dialog} `OR` logical value indicates the - * relation between validation functions. - * - * @readonly - * @property {Number} [=1] - * @member CKEDITOR - */ - CKEDITOR.VALIDATE_OR = 1; - - /** - * {@link CKEDITOR.dialog Dialog} `AND` logical value indicates the - * relation between validation functions. - * - * @readonly - * @property {Number} [=2] - * @member CKEDITOR - */ - CKEDITOR.VALIDATE_AND = 2; - - /** - * The namespace with dialog helper validation functions. - * - * @class - * @singleton - */ - CKEDITOR.dialog.validate = { - /** - * Performs validation functions composition. - * - * ```javascript - * CKEDITOR.dialog.validate.functions( - * CKEDITOR.dialog.validate.notEmpty( 'Value is required.' ), - * CKEDITOR.dialog.validate.number( 'Value is not a number.' ), - * 'error!' - * ); - * ``` - * - * @param {Function...} validators Validation functions which will be composed into a single validator. - * @param {String} [msg] Error message returned by the composed validation function. - * @param {Number} [relation=CKEDITOR.VALIDATE_OR] Indicates a relation between validation functions. - * Use {@link CKEDITOR#VALIDATE_OR} or {@link CKEDITOR#VALIDATE_AND}. - * - * @returns {Function} Composed validation function. - */ - functions: function() { - var args = arguments; - return function() { - // It's important for validate functions to be able to accept the value - // as argument in addition to this.getValue(), so that it is possible to - // combine validate functions together to make more sophisticated - // validators. - var value = this && this.getValue ? this.getValue() : args[ 0 ]; - - var msg, - relation = CKEDITOR.VALIDATE_AND, - functions = [], - i; - - for ( i = 0; i < args.length; i++ ) { - if ( typeof args[ i ] == 'function' ) - functions.push( args[ i ] ); - else - break; - } - - if ( i < args.length && typeof args[ i ] == 'string' ) { - msg = args[ i ]; - i++; - } - - if ( i < args.length && typeof args[ i ] == 'number' ) - relation = args[ i ]; - - var passed = ( relation == CKEDITOR.VALIDATE_AND ? true : false ); - for ( i = 0; i < functions.length; i++ ) { - if ( relation == CKEDITOR.VALIDATE_AND ) - passed = passed && functions[ i ]( value ); - else - passed = passed || functions[ i ]( value ); - } - - return !passed ? msg : true; - }; - }, - - /** - * Checks if a dialog UI element value meets the regex condition. - * - * ```javascript - * CKEDITOR.dialog.validate.regex( 'error!', /^\d*$/ )( '123' ) // true - * CKEDITOR.dialog.validate.regex( 'error!' )( '123.321' ) // error! - * ``` - * - * @param {RegExp} regex Regular expression used to validate the value. - * @param {String} msg Validator error message. - * @returns {Function} Validation function. - */ - regex: function( regex, msg ) { - /* - * Can be greatly shortened by deriving from functions validator if code size - * turns out to be more important than performance. - */ - return function() { - var value = this && this.getValue ? this.getValue() : arguments[ 0 ]; - return !regex.test( value ) ? msg : true; - }; - }, - - /** - * Checks if a dialog UI element value is not an empty string. - * - * ```javascript - * CKEDITOR.dialog.validate.notEmpty( 'error!' )( 'test' ) // true - * CKEDITOR.dialog.validate.notEmpty( 'error!' )( ' ' ) // error! - * ``` - * - * @param {String} msg Validator error message. - * @returns {Function} Validation function. - */ - notEmpty: function( msg ) { - return this.regex( notEmptyRegex, msg ); - }, - - /** - * Checks if a dialog UI element value is an Integer. - * - * ```javascript - * CKEDITOR.dialog.validate.integer( 'error!' )( '123' ) // true - * CKEDITOR.dialog.validate.integer( 'error!' )( '123.321' ) // error! - * ``` - * - * @param {String} msg Validator error message. - * @returns {Function} Validation function. - */ - integer: function( msg ) { - return this.regex( integerRegex, msg ); - }, - - /** - * Checks if a dialog UI element value is a Number. - * - * ```javascript - * CKEDITOR.dialog.validate.number( 'error!' )( '123' ) // true - * CKEDITOR.dialog.validate.number( 'error!' )( 'test' ) // error! - * ``` - * - * @param {String} msg Validator error message. - * @returns {Function} Validation function. - */ - 'number': function( msg ) { - return this.regex( numberRegex, msg ); - }, - - /** - * Checks if a dialog UI element value is a correct CSS length value. - * - * It allows `px`, `em`, `ex`, `in`, `cm`, `mm`, `pt`, `pc` units. - * - * ```javascript - * CKEDITOR.dialog.validate.cssLength( 'error!' )( '10pt' ) // true - * CKEDITOR.dialog.validate.cssLength( 'error!' )( 'solid' ) // error! - * ``` - * - * @param {String} msg Validator error message. - * @returns {Function} Validation function. - */ - 'cssLength': function( msg ) { - return this.functions( function( val ) { - return cssLengthRegex.test( CKEDITOR.tools.trim( val ) ); - }, msg ); - }, - - /** - * Checks if a dialog UI element value is a correct HTML length value. - * - * It allows `px` units. - * - * ```javascript - * CKEDITOR.dialog.validate.htmlLength( 'error!' )( '10px' ) // true - * CKEDITOR.dialog.validate.htmlLength( 'error!' )( 'solid' ) // error! - * ``` - * - * @param {String} msg Validator error message. - * @returns {Function} Validation function. - */ - 'htmlLength': function( msg ) { - return this.functions( function( val ) { - return htmlLengthRegex.test( CKEDITOR.tools.trim( val ) ); - }, msg ); - }, - - /** - * Checks if a dialog UI element value is a correct CSS inline style. - * - * ```javascript - * CKEDITOR.dialog.validate.inlineStyle( 'error!' )( 'height: 10px; width: 20px;' ) // true - * CKEDITOR.dialog.validate.inlineStyle( 'error!' )( 'test' ) // error! - * ``` - * - * @param {String} msg Validator error message. - * @returns {Function} Validation function. - */ - 'inlineStyle': function( msg ) { - return this.functions( function( val ) { - return inlineStyleRegex.test( CKEDITOR.tools.trim( val ) ); - }, msg ); - }, - - /** - * Checks if a dialog UI element value and the given value are equal. - * - * ```javascript - * CKEDITOR.dialog.validate.equals( 'foo', 'error!' )( 'foo' ) // true - * CKEDITOR.dialog.validate.equals( 'foo', 'error!' )( 'baz' ) // error! - * ``` - * - * @param {String} value The value to compare. - * @param {String} msg Validator error message. - * @returns {Function} Validation function. - */ - equals: function( value, msg ) { - return this.functions( function( val ) { - return val == value; - }, msg ); - }, - - /** - * Checks if a dialog UI element value and the given value are not equal. - * - * ```javascript - * CKEDITOR.dialog.validate.notEqual( 'foo', 'error!' )( 'baz' ) // true - * CKEDITOR.dialog.validate.notEqual( 'foo', 'error!' )( 'foo' ) // error! - * ``` - * - * @param {String} value The value to compare. - * @param {String} msg Validator error message. - * @returns {Function} Validation function. - */ - notEqual: function( value, msg ) { - return this.functions( function( val ) { - return val != value; - }, msg ); - } - }; - - CKEDITOR.on( 'instanceDestroyed', function( evt ) { - // Remove dialog cover on last instance destroy. - if ( CKEDITOR.tools.isEmpty( CKEDITOR.instances ) ) { - var currentTopDialog; - while ( ( currentTopDialog = CKEDITOR.dialog._.currentTop ) ) - currentTopDialog.hide(); - removeCovers(); - } - - var dialogs = evt.editor._.storedDialogs; - for ( var name in dialogs ) - dialogs[ name ].destroy(); - - } ); - - } )(); - - // Extend the CKEDITOR.editor class with dialog specific functions. - CKEDITOR.tools.extend( CKEDITOR.editor.prototype, { - /** - * Loads and opens a registered dialog. - * - * CKEDITOR.instances.editor1.openDialog( 'smiley' ); - * - * @member CKEDITOR.editor - * @param {String} dialogName The registered name of the dialog. - * @param {Function} callback The function to be invoked after a dialog instance is created. - * @param {CKEDITOR.dom.element/CKEDITOR.plugins.widget/Object} [forceModel] Forces opening the dialog - * using the given model as a subject. The forced model will take precedence before the - * {@link CKEDITOR.dialog.definition#getModel} method. Available since 4.13.0. - * @returns {CKEDITOR.dialog} The dialog object corresponding to the dialog displayed or - * `null` if the dialog name is not registered. - * @see CKEDITOR.dialog#add - */ - openDialog: function( dialogName, callback, forceModel ) { - var dialog = null, dialogDefinitions = CKEDITOR.dialog._.dialogDefinitions[ dialogName ]; - - if ( CKEDITOR.dialog._.currentTop === null ) - showCover( this ); - - // If the dialogDefinition is already loaded, open it immediately. - if ( typeof dialogDefinitions == 'function' ) { - var storedDialogs = this._.storedDialogs || ( this._.storedDialogs = {} ); - - dialog = storedDialogs[ dialogName ] || ( storedDialogs[ dialogName ] = new CKEDITOR.dialog( this, dialogName ) ); - - dialog.setModel( forceModel ); - - callback && callback.call( dialog, dialog ); - dialog.show(); - - } else if ( dialogDefinitions == 'failed' ) { - hideCover( this ); - throw new Error( '[CKEDITOR.dialog.openDialog] Dialog "' + dialogName + '" failed when loading definition.' ); - } else if ( typeof dialogDefinitions == 'string' ) { - - CKEDITOR.scriptLoader.load( CKEDITOR.getUrl( dialogDefinitions ), - function() { - var dialogDefinition = CKEDITOR.dialog._.dialogDefinitions[ dialogName ]; - // In case of plugin error, mark it as loading failed. - if ( typeof dialogDefinition != 'function' ) - CKEDITOR.dialog._.dialogDefinitions[ dialogName ] = 'failed'; - - this.openDialog( dialogName, callback, forceModel ); - }, this, 0, 1 ); - } - - CKEDITOR.skin.loadPart( 'dialog' ); - - // Dissolve model, so `definition.getModel` can take precedence - // in the next dialog opening (#2423). - if ( dialog ) { - dialog.once( 'hide', function() { - dialog.setModel( null ); - }, null, null, 999 ); - } - - return dialog; - } - } ); -} )(); - -var stylesLoaded = false; - -CKEDITOR.plugins.registered['dialog'] = null; -CKEDITOR.plugins.add( 'dialog', { - requires: 'dialogui', - init: function( editor ) { - if ( !stylesLoaded ) { - CKEDITOR.document.appendStyleSheet( this.path + 'styles/dialog.css' ); - stylesLoaded = true; - } - - editor.on( 'doubleclick', function( evt ) { - if ( evt.data.dialog ) - editor.openDialog( evt.data.dialog ); - }, null, null, 999 ); - } -} ); -CKEDITOR.plugins.add( 'cmsdialog', { - requires: 'dialogui', - init: function( editor ) { - } -} ); - -// Dialog related configurations. - -/** - * The color of the dialog background cover. It should be a valid CSS color string. - * - * config.dialog_backgroundCoverColor = 'rgb(255, 254, 253)'; - * - * @cfg {String} [dialog_backgroundCoverColor='white'] - * @member CKEDITOR.config - */ - -/** - * The opacity of the dialog background cover. It should be a number within the - * range `[0.0, 1.0]`. - * - * config.dialog_backgroundCoverOpacity = 0.7; - * - * @cfg {Number} [dialog_backgroundCoverOpacity=0.5] - * @member CKEDITOR.config - */ - -/** - * If the dialog has more than one tab, put focus into the first tab as soon as dialog is opened. - * - * config.dialog_startupFocusTab = true; - * - * @cfg {Boolean} [dialog_startupFocusTab=false] - * @member CKEDITOR.config - */ - -/** - * The distance of magnetic borders used in moving and resizing dialogs, - * measured in pixels. - * - * config.dialog_magnetDistance = 30; - * - * @cfg {Number} [dialog_magnetDistance=20] - * @member CKEDITOR.config - */ - -/** - * The guideline to follow when generating the dialog buttons. There are 3 possible options: - * - * * `'OS'` - the buttons will be displayed in the default order of the user's OS; - * * `'ltr'` - for Left-To-Right order; - * * `'rtl'` - for Right-To-Left order. - * - * Example: - * - * config.dialog_buttonsOrder = 'rtl'; - * - * @since 3.5.0 - * @cfg {String} [dialog_buttonsOrder='OS'] - * @member CKEDITOR.config - */ - -/** - * The dialog contents to removed. It's a string composed by dialog name and tab name with a colon between them. - * - * Separate each pair with semicolon (see example). - * - * **Note:** All names are case-sensitive. - * - * **Note:** Be cautious when specifying dialog tabs that are mandatory, - * like `'info'`, dialog functionality might be broken because of this! - * - * config.removeDialogTabs = 'flash:advanced;image:Link'; - * - * @since 3.5.0 - * @cfg {String} [removeDialogTabs=''] - * @member CKEDITOR.config - */ - -/** - * Tells if user should not be asked to confirm close, if any dialog field was modified. - * By default it is set to `false` meaning that the confirmation dialog will be shown. - * - * config.dialog_noConfirmCancel = true; - * - * @since 4.3.0 - * @cfg {Boolean} [dialog_noConfirmCancel=false] - * @member CKEDITOR.config - */ - -/** - * Event fired when a dialog definition is about to be used to create a dialog in - * an editor instance. This event makes it possible to customize the definition - * before creating it. - * - * Note that this event is called only the first time a specific dialog is - * opened. Successive openings will use the cached dialog, and this event will - * not get fired. - * - * @event dialogDefinition - * @member CKEDITOR - * @param {Object} data - * @param {String} data.name The name of the dialog. - * @param {CKEDITOR.dialog.definition} data.definition The dialog definition that - * is being loaded. - * @param {CKEDITOR.dialog} data.dialog A dialog instance that the definition is loaded - * for. Introduced in **CKEditor 4.13.0**. - * @param {CKEDITOR.editor} editor The editor instance that will use the dialog. - */ - -/** - * Event fired when a tab is going to be selected in a dialog. - * - * @event selectPage - * @member CKEDITOR.dialog - * @param data - * @param {String} data.page The ID of the page that is going to be selected. - * @param {String} data.currentPage The ID of the current page. - */ - -/** - * Event fired when the user tries to dismiss a dialog. - * - * @event cancel - * @member CKEDITOR.dialog - * @param data - * @param {Boolean} data.hide Whether the event should proceed or not. - */ - -/** - * Event fired when the user tries to confirm a dialog. - * - * @event ok - * @member CKEDITOR.dialog - * @param data - * @param {Boolean} data.hide Whether the event should proceed or not. - */ - -/** - * Event fired when a dialog is shown. - * - * @event show - * @member CKEDITOR.dialog - */ - -/** - * Event fired when a dialog is shown. - * - * @event dialogShow - * @member CKEDITOR.editor - * @param {CKEDITOR.editor} editor This editor instance. - * @param {CKEDITOR.dialog} data The opened dialog instance. - */ - -/** - * Event fired when a dialog is hidden. - * - * @event hide - * @member CKEDITOR.dialog - */ - -/** - * Event fired when a dialog is hidden. - * - * @event dialogHide - * @member CKEDITOR.editor - * @param {CKEDITOR.editor} editor This editor instance. - * @param {CKEDITOR.dialog} data The hidden dialog instance. - */ - -/** - * Event fired when a dialog is being resized. The event is fired on - * both the {@link CKEDITOR.dialog} object and the dialog instance - * since 3.5.3, previously it was only available in the global object. - * - * @static - * @event resize - * @member CKEDITOR.dialog - * @param data - * @param {CKEDITOR.dialog} data.dialog The dialog being resized (if - * it is fired on the dialog itself, this parameter is not sent). - * @param {String} data.skin The skin name. - * @param {Number} data.width The new width. - * @param {Number} data.height The new height. - */ - -/** - * Event fired when a dialog is being resized. The event is fired on - * both the {@link CKEDITOR.dialog} object and the dialog instance - * since 3.5.3, previously it was only available in the global object. - * - * @since 3.5.0 - * @event resize - * @member CKEDITOR.dialog - * @param data - * @param {Number} data.width The new width. - * @param {Number} data.height The new height. - */ - -/** - * Event fired when the dialog state changes, usually by {@link CKEDITOR.dialog#setState}. - * - * @since 4.5.0 - * @event state - * @member CKEDITOR.dialog - * @param data - * @param {Number} data The new state. Either {@link CKEDITOR#DIALOG_STATE_IDLE} or {@link CKEDITOR#DIALOG_STATE_BUSY}. - */ -})(CMS.$); - -(function ($) { -if (CKEDITOR && CKEDITOR.plugins && CKEDITOR.plugins.registered && CKEDITOR.plugins.registered.cmsresize) { - return; -} -/** -+ * Modified version of the resize plugin to support touch events. -+ * - * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved. - * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license - */ - -CKEDITOR.plugins.add( 'cmsresize', { - init: function( editor ) { - function dragHandler( evt ) { - var dx = evt.originalEvent.screenX - origin.x, - dy = evt.originalEvent.screenY - origin.y, - width = startSize.width, - height = startSize.height, - internalWidth = width + dx * ( resizeDir == 'rtl' ? -1 : 1 ), - internalHeight = height + dy; - - if ( resizeHorizontal ) - width = Math.max( config.resize_minWidth, Math.min( internalWidth, config.resize_maxWidth ) ); - - if ( resizeVertical ) - height = Math.max( config.resize_minHeight, Math.min( internalHeight, config.resize_maxHeight ) ); - - // DO NOT impose fixed size with single direction resize. (https://dev.ckeditor.com/ticket/6308) - editor.resize( resizeHorizontal ? width : null, height ); - } - - function dragEndHandler() { - CMS.$(CKEDITOR.document.$).off( 'pointermove', dragHandler ); - CMS.$(CKEDITOR.document.$).off( 'pointerup', dragEndHandler ); - - if ( editor.document ) { - CMS.$(editor.document.$).off( 'pointermove', dragHandler ); - CMS.$(editor.document.$).off( 'pointerup', dragEndHandler ); - } - } - - var config = editor.config; - var spaceId = editor.ui.spaceId( 'resizer' ); - - // Resize in the same direction of chrome, - // which is identical to dir of editor element. (https://dev.ckeditor.com/ticket/6614) - var resizeDir = editor.element ? editor.element.getDirection( 1 ) : 'ltr'; - - !config.resize_dir && ( config.resize_dir = 'vertical' ); - ( config.resize_maxWidth === undefined ) && ( config.resize_maxWidth = 3000 ); - ( config.resize_maxHeight === undefined ) && ( config.resize_maxHeight = 3000 ); - ( config.resize_minWidth === undefined ) && ( config.resize_minWidth = 750 ); - ( config.resize_minHeight === undefined ) && ( config.resize_minHeight = 250 ); - - if ( config.resize_enabled !== false ) { - var container = null, - origin, startSize, - resizeHorizontal = ( config.resize_dir == 'both' || config.resize_dir == 'horizontal' ) && ( config.resize_minWidth != config.resize_maxWidth ), - resizeVertical = ( config.resize_dir == 'both' || config.resize_dir == 'vertical' ) && ( config.resize_minHeight != config.resize_maxHeight ); - - var mouseDownFn = CKEDITOR.tools.addFunction( function( $event ) { - if ( !container ) - container = editor.getResizable(); - - startSize = { width: container.$.offsetWidth || 0, height: container.$.offsetHeight || 0 }; - origin = { x: $event.screenX, y: $event.screenY }; - - config.resize_minWidth > startSize.width && ( config.resize_minWidth = startSize.width ); - config.resize_minHeight > startSize.height && ( config.resize_minHeight = startSize.height ); - - CMS.$(CKEDITOR.document.$).on( 'pointermove', dragHandler ); - CMS.$(CKEDITOR.document.$).on( 'pointerup', dragEndHandler ); - - if ( editor.document ) { - CMS.$(editor.document.$).on( 'pointermove', dragHandler ); - CMS.$(editor.document.$).on( 'pointerup', dragEndHandler ); - } - - $event.preventDefault && $event.preventDefault(); - } ); - - CMS.$(CKEDITOR.document.$).find('html').attr('data-touch-action', 'none'); - - editor.on( 'destroy', function() { - CKEDITOR.tools.removeFunction( mouseDownFn ); - } ); - - editor.on( 'uiSpace', function( event ) { - if ( event.data.space == 'bottom' ) { - var direction = ''; - if ( resizeHorizontal && !resizeVertical ) - direction = ' cke_resizer_horizontal'; - if ( !resizeHorizontal && resizeVertical ) - direction = ' cke_resizer_vertical'; - - var resizerHtml = - '' + - // BLACK LOWER RIGHT TRIANGLE (ltr) - // BLACK LOWER LEFT TRIANGLE (rtl) - ( resizeDir == 'ltr' ? '\u25E2' : '\u25E3' ) + - '
'; - - // Always sticks the corner of botttom space. - resizeDir == 'ltr' && direction == 'ltr' ? event.data.html += resizerHtml : event.data.html = resizerHtml + event.data.html; - } - }, editor, null, 100 ); - - // Toggle the visibility of the resizer when an editor is being maximized or minimized. - editor.on( 'maximize', function( event ) { - editor.ui.space( 'resizer' )[ event.data == CKEDITOR.TRISTATE_ON ? 'hide' : 'show' ](); - } ); - } - } -} ); - -/** - * The minimum editor width, in pixels, when resizing the editor interface by using the resize handle. - * Note: It falls back to editor's actual width if it is smaller than the default value. - * - * Read more in the {@glink features/resize documentation} - * and see the {@glink examples/resize example}. - * - * config.resize_minWidth = 500; - * - * @cfg {Number} [resize_minWidth=750] - * @member CKEDITOR.config - */ - -/** - * The minimum editor height, in pixels, when resizing the editor interface by using the resize handle. - * Note: It falls back to editor's actual height if it is smaller than the default value. - * - * Read more in the {@glink features/resize documentation} - * and see the {@glink examples/resize example}. - * - * config.resize_minHeight = 600; - * - * @cfg {Number} [resize_minHeight=250] - * @member CKEDITOR.config - */ - -/** - * The maximum editor width, in pixels, when resizing the editor interface by using the resize handle. - * - * Read more in the {@glink features/resize documentation} - * and see the {@glink examples/resize example}. - * - * config.resize_maxWidth = 750; - * - * @cfg {Number} [resize_maxWidth=3000] - * @member CKEDITOR.config - */ - -/** - * The maximum editor height, in pixels, when resizing the editor interface by using the resize handle. - * - * Read more in the {@glink features/resize documentation} - * and see the {@glink examples/resize example}. - * - * config.resize_maxHeight = 600; - * - * @cfg {Number} [resize_maxHeight=3000] - * @member CKEDITOR.config - */ - -/** - * Whether to enable the resizing feature. If this feature is disabled, the resize handle will not be visible. - * - * Read more in the {@glink features/resize documentation} - * and see the {@glink examples/resize example}. - * - * config.resize_enabled = false; - * - * @cfg {Boolean} [resize_enabled=true] - * @member CKEDITOR.config - */ - -/** - * The dimensions for which the editor resizing is enabled. Possible values - * are `both`, `vertical`, and `horizontal`. - * - * Read more in the {@glink features/resize documentation} - * and see the {@glink examples/resize example}. - * - * config.resize_dir = 'both'; - * - * @since 3.3.0 - * @cfg {String} [resize_dir='vertical'] - * @member CKEDITOR.config - */ -})(CMS.$); - -(function ($) { - if (CKEDITOR && CKEDITOR.plugins && CKEDITOR.plugins.registered && CKEDITOR.plugins.registered.cmsplugins) { - return; - } - - /** - * Determine if we should return `div` or `span` based on the - * plugin markup. - * - * @function getFakePluginElement - * @private - * @param {String} pluginMarkup valid html hopefully - * @returns {String} div|span - */ - function getFakePluginElement(pluginMarkup) { - var innerTags = (pluginMarkup.match(/<\s*([^>\s]+)[\s\S]*?>/) || [0, false]).splice(1); - - var containsAnyBlockLikeElements = innerTags.some(function (tag) { - return tag && CKEDITOR.dtd.$block[tag]; - }); - - var fakeRealType = 'span'; - - if (containsAnyBlockLikeElements) { - fakeRealType = 'div'; - } - - return fakeRealType; - } - - /** - * @function replaceTagName - * @private - * @param {jQuery} elements - * @param {String} tagName - */ - function replaceTagName(elements, tagName) { - elements.each(function (i, el) { - var newElement; - - var element = $(el); - - newElement = $('<' + tagName + '>'); - - // attributes - $.each(el.attributes, function (index, attribute) { - newElement.attr(attribute.nodeName, attribute.nodeValue); - }); - - // content - newElement.html(element.html()); - - element.replaceWith(newElement); - }); - } - - CKEDITOR.plugins.add('cmsplugins', { - - // Register the icons. They must match command names. - icons: 'cmsplugins', - - // The plugin initialization logic goes inside this method. - init: function (editor) { - var that = this; - - this.options = CMS.CKEditor.options.settings; - this.editor = editor; - - /** - * populated with _fresh_ child plugins - */ - this.child_plugins = []; - this.setupCancelCleanupCallback(this.options); - - // don't do anything if there are no plugins defined - if (this.options === undefined || this.options.plugins === undefined) { - return false; - } - - this.setupDialog(); - - // add the button - this.editor.ui.add('cmsplugins', CKEDITOR.UI_PANELBUTTON, { - toolbar: 'cms,0', - label: this.options.lang.toolbar, - title: this.options.lang.toolbar, - className: 'cke_panelbutton__cmsplugins', - modes: { wysiwyg: 1 }, - editorFocus: 0, - - panel: { - css: [CKEDITOR.skin.getPath('editor')].concat(that.editor.config.contentsCss), - attributes: { 'role': 'cmsplugins', 'aria-label': this.options.lang.aria } - }, - - // this is called when creating the dropdown list - onBlock: function (panel, block) { - block.element.setHtml(that.editor.plugins.cmsplugins.setupDropdown()); - - var anchors = $(block.element.$).find('.cke_panel_listItem a'); - - anchors.bind('click', function (e) { - e.preventDefault(); - - that.addPlugin($(this), panel); - }); - } - }); - - // handle edit event via context menu - if (this.editor.contextMenu) { - this.setupContextMenu(); - } - - this.editor.addCommand('cmspluginsEdit', { - exec: function () { - var element = that.getElementFromSelection(); - var plugin = that.getPluginWidget(element); - console.log("cmspluginsEdit", element, plugin); - if (plugin) { - that.editPlugin(plugin); - } - } - }); - - // handle edit event on double click - // if event is a jQuery event (touchend), than we mutate - // event a bit so we make the payload similar to what ckeditor.event produces - var handleEdit = function (event) { - var element; - - if (event.type === 'touchend' || event.type === 'click') { - var cmsPluginNode = $(event.currentTarget).closest('cms-plugin')[0]; - - // pick cke_widget span - // eslint-disable-next-line new-cap - console.log ("plugin edit", cmsPluginNode, cmsPluginNode.parentElement); - element = new CKEDITOR.dom.element(cmsPluginNode).getParent(); - - event.data = event.data || {}; - // have to fake selection to be able to replace markup after editing - that.editor.getSelection().fake(element); - } - - that.editor.execCommand('cmspluginsEdit'); - }; - - this.editor.on('doubleclick', handleEdit); - this.editor.on('instanceReady', function () { -/* - var context = CMS.$('iframe.cke_wysiwyg_frame'); - if (context.length > 0) { - context = context.contentWindow.document.documentElement; - } else { - context = null; - } - CMS.$('cms-plugin', CMS.$('iframe.cke_wysiwyg_frame')[0] - .contentWindow.document.documentElement).on('click touchend', handleEdit); -*/ - }); - - this.setupDataProcessor(); - }, - - getElementFromSelection: function () { - var selection = this.editor.getSelection(); - var element = selection.getSelectedElement() || - selection.getCommonAncestor().getAscendant('cms-plugin', true); - - return element; - }, - - getPluginWidget: function (element) { - if (!element) { - return null; - } - return element.getAscendant('cms-plugin', true) || element.findOne('cms-plugin'); - }, - - setupDialog: function () { - var that = this; - var definition = function () { - return { - title: '', - minWidth: 200, - minHeight: 200, - contents: [{ - elements: [ - { - type: 'html', - html: '').appendTo(i.getParent())}return n.unselectable(),o.unselectable(),{element:e,parts:{dialog:e.getChild(0),title:n,close:o,tabs:i.getChild(2),contents:i.getChild([3,0,0,0]),footer:i.getChild([3,0,1,0])}}}function l(t,e,i){this.element=e,this.focusIndex=i,this.tabIndex=0,this.isFocusable=function(){return!e.getAttribute("disabled")&&e.isVisible()},this.focus=function(){t._.currentFocusIndex=this.focusIndex,this.element.focus()},e.on("keydown",function(t){t.data.getKeystroke()in{32:1,13:1}&&this.fire("click")}),e.on("focus",function(){this.fire("mouseover")}),e.on("blur",function(){this.fire("mouseout")})}function d(t){function e(){t.layout()}var i=CKEDITOR.document.getWindow();i.on("resize",e),t.on("hide",function(){i.removeListener("resize",e)})}function u(t,e){this.dialog=t;for(var i,n=e.contents,o=0;i=n[o];o++)n[o]=i&&new h(t,i);CKEDITOR.tools.extend(this,e)}function h(t,e){this._={dialog:t},CKEDITOR.tools.extend(this,e)}function c(t){function e(e){var i,l,d=t.getSize(),u=t.parts.dialog.getParent().getClientSize(),h=e.originalEvent.screenX,c=e.originalEvent.screenY,g=h-n.x,f=c-n.y;n={x:h,y:c},o.x+=g,o.y+=f,i=o.x+r[3]u.width-d.width-a?u.width-d.width+("rtl"==s.lang.dir?0:r[1]):o.x,l=o.y+r[0]u.height-d.height-a?u.height-d.height+r[2]:o.y,i=Math.floor(i),l=Math.floor(l),t.move(i,l,1),e.preventDefault()}function i(){if(CMS.$(CKEDITOR.document.$).off("pointermove",e),CMS.$(CKEDITOR.document.$).off("pointerup",i),CKEDITOR.env.ie6Compat){var t=R.getChild(0).getFrameDocument();t.removeListener("mousemove",e),t.removeListener("mouseup",i)}}var n=null,o=null,s=t.getParentEditor(),a=s.config.dialog_magnetDistance,r=CKEDITOR.skin.margins||[0,0,0,0];void 0===a&&(a=20),CMS.$(t.parts.title.$).on("pointerdown",function(s){if(!t._.moved){var a=t._.element;a.getFirst().setStyle("position","absolute"),a.removeStyle("display"),t._.moved=!0,t.layout()}if(n={x:s.originalEvent.screenX,y:s.originalEvent.screenY},CMS.$(CKEDITOR.document.$).on("pointermove",e),CMS.$(CKEDITOR.document.$).on("pointerup",i),o=t.getPosition(),CKEDITOR.env.ie6Compat){var r=R.getChild(0).getFrameDocument();r.on("mousemove",e),r.on("mouseup",i)}s.preventDefault()})}function g(t){function e(e){var i="rtl"==h.lang.dir,u=(e.originalEvent.screenX-l.x)*(i?-1:1),c=e.originalEvent.screenY-l.y,g=d.width,_=d.height,p=g+u*(t._.moved?1:2),I=_+c*(t._.moved?1:2),m=t._.element.getFirst(),v=i&&parseInt(m.getComputedStyle("right"),10),C=t.getPosition();if(C.x=C.x||0,C.y=C.y||0,C.y+I>r.height&&(I=r.height-C.y),(i?v:C.x)+p>r.width&&(p=r.width-(i?v:C.x)),I=Math.floor(I),p=Math.floor(p),o!=CKEDITOR.DIALOG_RESIZE_WIDTH&&o!=CKEDITOR.DIALOG_RESIZE_BOTH||(g=Math.max(n.minWidth||0,p-s)),o!=CKEDITOR.DIALOG_RESIZE_HEIGHT&&o!=CKEDITOR.DIALOG_RESIZE_BOTH||(_=Math.max(n.minHeight||0,I-a)),t.resize(g,_),t._.moved){var E=t._.position.x,D=t._.position.y;f(t,E,D)}t._.moved||t.layout(),e.preventDefault()}function i(){if(CMS.$(CKEDITOR.document.$).off("pointermove",e),CMS.$(CKEDITOR.document.$).off("pointerup",i),u&&(u.remove(),u=null),CKEDITOR.env.ie6Compat){var t=R.getChild(0).getFrameDocument();t.removeListener("mouseup",i),t.removeListener("mousemove",e)}}var n=t.definition,o=n.resizable;if(o!=CKEDITOR.DIALOG_RESIZE_NONE){var s,a,r,l,d,u,h=t.getParentEditor(),c=CKEDITOR.tools.addFunction(function(n){function o(t){return t.isVisible()}d=t.getSize();var h=t.parts.contents,c=h.$.getElementsByTagName("iframe").length,g=!(CKEDITOR.env.gecko||CKEDITOR.env.ie&&CKEDITOR.env.quirks);if(c&&(CMS.$(".cke_dialog_resize_cover").remove(),u=CKEDITOR.dom.element.createFromHtml('
'),h.append(u)),a=d.height-t.parts.contents.getFirst(o).getSize("height",g),s=d.width-t.parts.contents.getFirst(o).getSize("width",1),l={x:n.screenX,y:n.screenY},r=CKEDITOR.document.getWindow().getViewPaneSize(),CMS.$(CKEDITOR.document.$).on("pointermove",e),CMS.$(CKEDITOR.document.$).on("pointerup",i),CKEDITOR.env.ie6Compat){var f=R.getChild(0).getFrameDocument();f.on("mousemove",e),f.on("mouseup",i)}n.preventDefault&&n.preventDefault()});t.on("load",function(){var e="";o==CKEDITOR.DIALOG_RESIZE_WIDTH?e=" cke_resizer_horizontal":o==CKEDITOR.DIALOG_RESIZE_HEIGHT&&(e=" cke_resizer_vertical");var i=CKEDITOR.dom.element.createFromHtml('
'+("ltr"==h.lang.dir?"◢":"◣")+"
");t.parts.footer.append(i,1)}),h.on("destroy",function(){CKEDITOR.tools.removeFunction(c)})}}function f(t,e,i){var n=t.parts.dialog.getParent().getClientSize(),o=t.getSize(),s=t._.viewportRatio,a={width:Math.max(n.width-o.width,0),height:Math.max(n.height-o.height,0)};s.width=a.width?e/a.width:s.width,s.height=a.height?i/a.height:s.height,t._.viewportRatio=s}function _(t){t.data.preventDefault(1)}function p(t){var e=t.config,i=CKEDITOR.skinName||t.config.skin,n=e.dialog_backgroundCoverColor||("moono-lisa"==i?"black":"white"),o=e.dialog_backgroundCoverOpacity,s=e.baseFloatZIndex,a=CKEDITOR.tools.genKey(n,o,s),r=L[a];if(CKEDITOR.document.getBody().addClass("cke_dialog_open"),CMS.$(".cke_dialog_background_cover:not(.cms-ckeditor-dialog-background-cover)").remove(),r)r.show();else{var l=['
'];if(CKEDITOR.env.ie6Compat){var d="";l.push('')}l.push("
"),r=CKEDITOR.dom.element.createFromHtml(l.join("")),r.setOpacity(void 0!==o?o:.5),r.on("keydown",_),r.on("keypress",_),r.on("keyup",_),r.appendTo(CKEDITOR.document.getBody()),L[a]=r}t.focusManager.add(r),R=r,CKEDITOR.env.mac&&CKEDITOR.env.webkit||r.focus()}function I(t){CMS.$(".cke_dialog_background_cover:not(.cms-ckeditor-dialog-background-cover)").remove(),CKEDITOR.document.getBody().removeClass("cke_dialog_open"),R&&(t.focusManager.remove(R),R.hide())}function m(){for(var t in L)L[t].remove();L={}}function v(t){var e=t.data.$.ctrlKey||t.data.$.metaKey,i=t.data.$.altKey,n=t.data.$.shiftKey,o=String.fromCharCode(t.data.$.keyCode),s=M[(e?"CTRL+":"")+(i?"ALT+":"")+(n?"SHIFT+":"")+o];s&&s.length&&(s=s[s.length-1],s.keydown&&s.keydown.call(s.uiElement,s.dialog,s.key),t.data.preventDefault())}function C(t){var e=t.data.$.ctrlKey||t.data.$.metaKey,i=t.data.$.altKey,n=t.data.$.shiftKey,o=String.fromCharCode(t.data.$.keyCode),s=M[(e?"CTRL+":"")+(i?"ALT+":"")+(n?"SHIFT+":"")+o];s&&s.length&&(s=s[s.length-1],s.keyup&&(s.keyup.call(s.uiElement,s.dialog,s.key),t.data.preventDefault()))}function E(t,e,i,n,o){(M[i]||(M[i]=[])).push({uiElement:t,dialog:e,key:i,keyup:o||t.accessKeyUp,keydown:n||t.accessKeyDown})}function D(t){for(var e in M){for(var i=M[e],n=i.length-1;n>=0;n--)i[n].dialog!=t&&i[n].uiElement!=t||i.splice(n,1);0===i.length&&delete M[e]}}function T(t,e){t._.accessKeyMap[e]&&t.selectPage(t._.accessKeyMap[e])}function b(){}var O,R,K=CKEDITOR.tools.cssLength,y=!CKEDITOR.env.ie||CKEDITOR.env.edge,k='';CKEDITOR.dialog=function(e,o){function l(){var t=k._.focusList;t.sort(function(t,e){return t.tabIndex!=e.tabIndex?e.tabIndex-t.tabIndex:t.focusIndex-e.focusIndex});for(var e=t.length,i=0;i1;do{if(n+=t,o&&!k._.tabBarMode&&(n==e.length||-1==n))return k._.tabBarMode=!0,k._.tabs[k._.currentTabId][0].focus(),void(k._.currentFocusIndex=-1);if((n=(n+e.length)%e.length)==i)break}while(t&&!e[n].isFocusable());e[n].focus(),"text"==e[n].type&&e[n].select()}}function h(o){if(k==CKEDITOR.dialog._.currentTop){var s,a=o.data.getKeystroke(),r="rtl"==e.lang.dir,l=[37,38,39,40];if(p=I=0,9==a||a==CKEDITOR.SHIFT+9){d(a==CKEDITOR.SHIFT+9?-1:1),p=1}else if(a==CKEDITOR.ALT+121&&!k._.tabBarMode&&k.getPageCount()>1)t(k),p=1;else if(-1!=CKEDITOR.tools.indexOf(l,a)&&k._.tabBarMode){var u=[r?39:37,38],h=-1!=CKEDITOR.tools.indexOf(u,a)?i.call(k):n.call(k);k.selectPage(h),k._.tabs[h][0].focus(),p=1}else if(13!=a&&32!=a||!k._.tabBarMode)if(13==a){var c=o.data.getTarget();c.is("a","button","select","textarea")||c.is("input")&&"button"==c.$.type||(s=this.getButton("ok"),s&&CKEDITOR.tools.setTimeout(s.click,0,s),p=1),I=1}else{if(27!=a)return;s=this.getButton("cancel"),s?CKEDITOR.tools.setTimeout(s.click,0,s):!1!==this.fire("cancel",{hide:!0}).hide&&this.hide(),I=1}else this.selectPage(this._.currentTabId),this._.tabBarMode=!1,this._.currentFocusIndex=-1,d(1),p=1;f(o)}}function f(t){p?t.data.preventDefault(1):I&&t.data.stopPropagation()}var _,p,I,m=CKEDITOR.dialog._.dialogDefinitions[o],v=CKEDITOR.tools.clone(O),C=e.config.dialog_buttonsOrder||"OS",E=e.lang.dir,D={};("OS"==C&&CKEDITOR.env.mac||"rtl"==C&&"ltr"==E||"ltr"==C&&"rtl"==E)&&v.buttons.reverse(),m=CKEDITOR.tools.extend(m(e),v),m=CKEDITOR.tools.clone(m),m=new u(this,m);var T=r(e);this._={editor:e,element:T.element,name:o,model:null,contentSize:{width:0,height:0},size:{width:0,height:0},contents:{},buttons:{},accessKeyMap:{},viewportRatio:{width:.5,height:.5},tabs:{},tabIdList:[],currentTabId:null,currentTabIndex:null,pageCount:0,lastTab:null,tabBarMode:!1,focusList:[],currentFocusIndex:0,hasFocus:!1},this.parts=T.parts,CKEDITOR.tools.setTimeout(function(){e.fire("ariaWidget",this.parts.contents)},0,this);var b={top:0,visibility:"hidden"};if(CKEDITOR.env.ie6Compat&&(b.position="absolute"),b["rtl"==E?"right":"left"]=0,this.parts.dialog.setStyles(b),CKEDITOR.event.call(this),this.definition=m=CKEDITOR.fire("dialogDefinition",{name:o,definition:m,dialog:this},e).definition,!("removeDialogTabs"in e._)&&e.config.removeDialogTabs){var R=e.config.removeDialogTabs.split(";");for(_=0;_1;if(e.config.dialog_startupFocusTab&&t)k._.tabBarMode=!0,k._.tabs[k._.currentTabId][0].focus(),k._.currentFocusIndex=-1;else if(!this._.hasFocus)if(this._.currentFocusIndex=t?-1:this._.focusList.length-1,m.onFocus){var i=m.onFocus.call(this);i&&i.focus()}else d(1)},this,null,4294967295),CKEDITOR.env.ie6Compat&&this.on("load",function(){var t=this.getElement(),e=t.getFirst();e.remove(),e.appendTo(t)},this),c(this),g(this),new CKEDITOR.dom.text(m.title,CKEDITOR.document).appendTo(this.parts.title),_=0;_0?e:0)+"px"};d[o?"right":"left"]=(t>0?t:0)+"px",n.setStyles(d),i&&(this._.moved=1)},getPosition:function(){return CKEDITOR.tools.extend({},this._.position)},show:function(){var t=this._.element,e=this.definition,i=CKEDITOR.document.getBody(),n=this._.editor.config.baseFloatZIndex;if(t.getParent()&&t.getParent().equals(i)?t.setStyle("display",y?"flex":"block"):t.appendTo(i),this.resize(this._.contentSize&&this._.contentSize.width||e.width||e.minWidth,this._.contentSize&&this._.contentSize.height||e.height||e.minHeight),this.reset(),null===this._.currentTabId&&this.selectPage(this.definition.contents[0].id),null===CKEDITOR.dialog._.currentZIndex&&(CKEDITOR.dialog._.currentZIndex=n),this._.element.getFirst().setStyle("z-index",CKEDITOR.dialog._.currentZIndex+=10),this.getElement().setStyle("z-index",CKEDITOR.dialog._.currentZIndex),null===CKEDITOR.dialog._.currentTop)CKEDITOR.dialog._.currentTop=this,this._.parentDialog=null,p(this._.editor);else{this._.parentDialog=CKEDITOR.dialog._.currentTop;var o=this._.parentDialog.getElement().getFirst();o.$.style.zIndex-=Math.floor(n/2),this._.parentDialog.getElement().setStyle("z-index",o.$.style.zIndex),CKEDITOR.dialog._.currentTop=this}t.on("keydown",v),t.on("keyup",C),this._.hasFocus=!1;for(var s in e.contents)if(e.contents[s]){var a=e.contents[s],r=this._.tabs[a.id],l=a.requiredContent,u=0;if(r){for(var h in this._.contents[a.id]){var c=this._.contents[a.id][h];"hbox"!=c.type&&"vbox"!=c.type&&c.getInputElement()&&(c.requiredContent&&!this._.editor.activeFilter.check(c.requiredContent)?c.disable():(c.enable(),u++))}!u||l&&!this._.editor.activeFilter.check(l)?r[0].addClass("cke_dialog_tab_disabled"):r[0].removeClass("cke_dialog_tab_disabled")}}CKEDITOR.tools.setTimeout(function(){this.layout(),d(this),this.parts.dialog.setStyle("visibility",""),this.fireOnce("load",{}),CKEDITOR.ui.fire("ready",this),this.fire("show",{}),this._.editor.fire("dialogShow",this),this._.parentDialog||this._.editor.focusManager.lock(),this.foreach(function(t){t.setInitValue&&t.setInitValue()})},100,this)},layout:function(){var t=this.parts.dialog;if(this._.moved||!y){var e,i,n=this.getSize(),o=CKEDITOR.document.getWindow(),s=o.getViewPaneSize();this._.moved&&this._.position?(e=this._.position.x,i=this._.position.y):(e=(s.width-n.width)/2,i=(s.height-n.height)/2),CKEDITOR.env.ie6Compat||(t.setStyle("position","absolute"),t.removeStyle("margin")),e=Math.floor(e),i=Math.floor(i),this.move(e,i)}},foreach:function(t){for(var e in this._.contents)for(var i in this._.contents[e])t.call(this,this._.contents[e][i]);return this},reset:function(){var t=function(t){t.reset&&t.reset(1)};return function(){return this.foreach(t),this}}(),setupContent:function(){var t=arguments;this.foreach(function(e){e.setup&&e.setup.apply(e,t)})},commitContent:function(){var t=arguments;this.foreach(function(e){CKEDITOR.env.ie&&this._.currentFocusIndex==e.focusIndex&&e.getInputElement().$.blur(),e.commit&&e.commit.apply(e,t)})},hide:function(){if(this.parts.dialog.isVisible()){this.fire("hide",{}),this._.editor.fire("dialogHide",this),this.selectPage(this._.tabIdList[0]);var t=this._.element;for(t.setStyle("display","none"),this.parts.dialog.setStyle("visibility","hidden"),D(this);CKEDITOR.dialog._.currentTop!=this;)CKEDITOR.dialog._.currentTop.hide();if(this._.parentDialog){var e=this._.parentDialog.getElement().getFirst();this._.parentDialog.getElement().removeStyle("z-index"),e.setStyle("z-index",parseInt(e.$.style.zIndex,10)+Math.floor(this._.editor.config.baseFloatZIndex/2))}else I(this._.editor);if(CKEDITOR.dialog._.currentTop=this._.parentDialog,this._.parentDialog)CKEDITOR.dialog._.currentZIndex-=10;else{CKEDITOR.dialog._.currentZIndex=null,t.removeListener("keydown",v),t.removeListener("keyup",C);var i=this._.editor;i.focus(),setTimeout(function(){i.focusManager.unlock(),CKEDITOR.env.iOS&&i.window.focus()},0)}delete this._.parentDialog,this.foreach(function(t){t.resetInitValue&&t.resetInitValue()}),this.setState(CKEDITOR.DIALOG_STATE_IDLE)}},addPage:function(t){if(!t.requiredContent||this._.editor.filter.check(t.requiredContent)){for(var e,i=[],n=t.label?' title="'+CKEDITOR.tools.htmlEncode(t.label)+'"':"",o=CKEDITOR.dialog._.uiElementBuilders.vbox.build(this,{type:"vbox",className:"cke_dialog_page_contents",children:t.elements,expand:!!t.expand,padding:t.padding,style:t.style||"width: 100%;"},i),s=this._.contents[t.id]={},a=o.getChild(),r=0;e=a.shift();)e.notAllowed||"hbox"==e.type||"vbox"==e.type||r++,s[e.id]=e,"function"==typeof e.getChild&&a.push.apply(a,e.getChild());r||(t.hidden=!0);var l=CKEDITOR.dom.element.createFromHtml(i.join(""));l.setAttribute("role","tabpanel"),l.setStyle("min-height","100%");var d=CKEDITOR.env,u="cke_"+t.id+"_"+CKEDITOR.tools.getNextNumber(),h=CKEDITOR.dom.element.createFromHtml(['0?" cke_last":"cke_first",n,t.hidden?' style="display:none"':"",' id="',u,'"',d.gecko&&!d.hc?"":' href="javascript:void(0)"',' tabIndex="-1"',' hidefocus="true"',' role="tab">',t.label,""].join(""));l.setAttribute("aria-labelledby",u),this._.tabs[t.id]=[h,l],this._.tabIdList.push(t.id),!t.hidden&&this._.pageCount++,this._.lastTab=h,this.updateStyle(),l.setAttribute("name",t.id),l.appendTo(this.parts.contents),h.unselectable(),this.parts.tabs.append(h),t.accessKey&&(E(this,this,"CTRL+"+t.accessKey,b,T),this._.accessKeyMap["CTRL+"+t.accessKey]=t.id)}},selectPage:function(t){if(this._.currentTabId!=t&&!this._.tabs[t][0].hasClass("cke_dialog_tab_disabled")&&!1!==this.fire("selectPage",{page:t,currentPage:this._.currentTabId})){for(var e in this._.tabs){var i=this._.tabs[e][0],n=this._.tabs[e][1];e!=t&&(i.removeClass("cke_dialog_tab_selected"),i.removeAttribute("aria-selected"),n.hide()),n.setAttribute("aria-hidden",e!=t)}var s=this._.tabs[t];s[0].addClass("cke_dialog_tab_selected"),s[0].setAttribute("aria-selected",!0),CKEDITOR.env.ie6Compat||CKEDITOR.env.ie7Compat?(o(s[1]),s[1].show(),setTimeout(function(){o(s[1],1)},0)):s[1].show(),this._.currentTabId=t,this._.currentTabIndex=CKEDITOR.tools.indexOf(this._.tabIdList,t)}},updateStyle:function(){this.parts.dialog[(1===this._.pageCount?"add":"remove")+"Class"]("cke_single_page")},hidePage:function(t){var e=this._.tabs[t]&&this._.tabs[t][0];e&&1!=this._.pageCount&&e.isVisible()&&(t==this._.currentTabId&&this.selectPage(i.call(this)),e.hide(),this._.pageCount--,this.updateStyle())},showPage:function(t){var e=this._.tabs[t]&&this._.tabs[t][0];e&&(e.show(),this._.pageCount++,this.updateStyle())},getElement:function(){return this._.element},getName:function(){return this._.name},getContentElement:function(t,e){var i=this._.contents[t];return i&&i[e]},getValueOf:function(t,e){return this.getContentElement(t,e).getValue()},setValueOf:function(t,e,i){return this.getContentElement(t,e).setValue(i)},getButton:function(t){return this._.buttons[t]},click:function(t){return this._.buttons[t].click()},disableButton:function(t){return this._.buttons[t].disable()},enableButton:function(t){return this._.buttons[t].enable()},getPageCount:function(){return this._.pageCount},getParentEditor:function(){return this._.editor},getSelectedElement:function(){return this.getParentEditor().getSelection().getSelectedElement()},addFocusable:function(t,e){if(void 0===e)e=this._.focusList.length,this._.focusList.push(new l(this,t,e));else{this._.focusList.splice(e,0,new l(this,t,e));for(var i=e+1;i=0;r--)""===I[r]&&I.splice(r,1);I.length>0&&(h.style=(h.style?h.style+"; ":"")+I.join("; "));for(r in h)d.push(r+'="'+CKEDITOR.tools.htmlEncode(h[r])+'" ');d.push(">",c,""),i.push(d.join("")),(this._||(this._={})).dialog=t,"boolean"==typeof e.isChanged&&(this.isChanged=function(){return e.isChanged}),"function"==typeof e.isChanged&&(this.isChanged=e.isChanged),"function"==typeof e.setValue&&(this.setValue=CKEDITOR.tools.override(this.setValue,function(t){return function(i){t.call(this,e.setValue.call(this,i))}})),"function"==typeof e.getValue&&(this.getValue=CKEDITOR.tools.override(this.getValue,function(t){return function(){return e.getValue.call(this,t.call(this))}})),CKEDITOR.event.implementOn(this),this.registerEvents(e),this.accessKeyUp&&this.accessKeyDown&&e.accessKey&&E(this,t,"CTRL+"+e.accessKey);var v=this;t.on("load",function(){var e=v.getInputElement();if(e){var i=v.type in{checkbox:1,ratio:1}&&CKEDITOR.env.ie&&CKEDITOR.env.version<8?"cke_dialog_ui_focused":"";e.on("focus",function(){t._.tabBarMode=!1,t._.hasFocus=!0,v.fire("focus"),i&&this.addClass(i)}),e.on("blur",function(){v.fire("blur"),i&&this.removeClass(i)})}}),CKEDITOR.tools.extend(this,e),this.keyboardFocusable&&(this.tabIndex=e.tabIndex||0,this.focusIndex=t._.focusList.push(this)-1,this.on("focus",function(){t._.currentFocusIndex=v.focusIndex}))}},hbox:function(t,e,i,n,o){if(!(arguments.length<4)){this._||(this._={});var s,a=this._.children=e,r=o&&o.widths||null,l=o&&o.height||null,d={},u=function(){var t=[''];for(s=0;s0&&t.push('style="'+n.join("; ")+'" '),t.push(">",i[s],"")}return t.push(""),t.join("")},h={role:"presentation"};o&&o.align&&(h.align=o.align),CKEDITOR.ui.dialog.uiElement.call(this,t,o||{type:"hbox"},n,"table",d,h,u)}},vbox:function(t,e,i,n,o){if(!(arguments.length<3)){this._||(this._={});var s=this._.children=e,a=o&&o.width||null,r=o&&o.heights||null,l=function(){var e=['");for(var n=0;n")}return e.push("
0&&e.push('style="',l.join("; "),'" '),e.push(' class="cke_dialog_ui_vbox_child">',i[n],"
"),e.join("")};CKEDITOR.ui.dialog.uiElement.call(this,t,o||{type:"vbox"},n,"div",null,{role:"presentation"},l)}}}}(),CKEDITOR.ui.dialog.uiElement.prototype={getElement:function(){return CKEDITOR.document.getById(this.domId)},getInputElement:function(){return this.getElement()},getDialog:function(){return this._.dialog},setValue:function(t,e){return this.getInputElement().setValue(t),!e&&this.fire("change",{value:t}),this},getValue:function(){return this.getInputElement().getValue()},isChanged:function(){return!1},selectParentTab:function(){for(var t,e=this.getInputElement(),i=e;(i=i.getParent())&&-1==i.$.className.search("cke_dialog_page_contents"););return i?(t=i.getAttribute("name"),this._.dialog._.currentTabId!=t&&this._.dialog.selectPage(t),this):this},focus:function(){return this.selectParentTab().getInputElement().focus(),this},registerEvents:function(t){var e,i=/^on([A-Z]\w+)/;for(var n in t)(e=n.match(i))&&(this.eventProcessors[n]?this.eventProcessors[n].call(this,this._.dialog,t[n]):function(t,e,i,n){e.on("load",function(){t.getInputElement().on(i,n,t)})}(this,this._.dialog,e[1].toLowerCase(),t[n]));return this},eventProcessors:{onLoad:function(t,e){t.on("load",e,this)},onShow:function(t,e){t.on("show",e,this)},onHide:function(t,e){t.on("hide",e,this)}},accessKeyDown:function(){this.focus()},accessKeyUp:function(){},disable:function(){var t=this.getElement();this.getInputElement().setAttribute("disabled","true"),t.addClass("cke_disabled")},enable:function(){var t=this.getElement();this.getInputElement().removeAttribute("disabled"),t.removeClass("cke_disabled")},isEnabled:function(){return!this.getElement().hasClass("cke_disabled")},isVisible:function(){return this.getInputElement().isVisible()},isFocusable:function(){return!(!this.isEnabled()||!this.isVisible())}},CKEDITOR.ui.dialog.hbox.prototype=CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.uiElement,{getChild:function(t){return arguments.length<1?this._.children.concat():(t.splice||(t=[t]),t.length<2?this._.children[t[0]]:this._.children[t[0]]&&this._.children[t[0]].getChild?this._.children[t[0]].getChild(t.slice(1,t.length)):null)}},!0),CKEDITOR.ui.dialog.vbox.prototype=new CKEDITOR.ui.dialog.hbox,function(){var t={build:function(t,e,i){for(var n,o=e.children,s=[],a=[],r=0;rd.width&&(n.resize_minWidth=d.width),n.resize_minHeight>d.height&&(n.resize_minHeight=d.height),CMS.$(CKEDITOR.document.$).on("pointermove",i),CMS.$(CKEDITOR.document.$).on("pointerup",t),e.document&&(CMS.$(e.document.$).on("pointermove",i),CMS.$(e.document.$).on("pointerup",t)),r.preventDefault&&r.preventDefault()});CMS.$(CKEDITOR.document.$).find("html").attr("data-touch-action","none"),e.on("destroy",function(){CKEDITOR.tools.removeFunction(c)}),e.on("uiSpace",function(i){if("bottom"==i.data.space){var t="";m&&!h&&(t=" cke_resizer_horizontal"),!m&&h&&(t=" cke_resizer_vertical");var n=''+("ltr"==o?"◢":"◣")+"";"ltr"==o&&"ltr"==t?i.data.html+=n:i.data.html=n+i.data.html}},e,null,100),e.on("maximize",function(i){e.ui.space("resizer")[i.data==CKEDITOR.TRISTATE_ON?"hide":"show"]()})}}})}(CMS.$); +!function(t){function e(t){var e=(t.match(/<\s*([^>\s]+)[\s\S]*?>/)||[0,!1]).splice(1),i=e.some(function(t){return t&&CKEDITOR.dtd.$block[t]}),n="span";return i&&(n="div"),n}function i(e,i){e.each(function(e,n){var s,l=t(n);s=t("<"+i+">"),t.each(n.attributes,function(t,e){s.attr(e.nodeName,e.nodeValue)}),s.html(l.html()),l.replaceWith(s)})}CKEDITOR&&CKEDITOR.plugins&&CKEDITOR.plugins.registered&&CKEDITOR.plugins.registered.cmsplugins||CKEDITOR.plugins.add("cmsplugins",{icons:"cmsplugins",init:function(e){var i=this;if(this.options=CMS.CKEditor.options.settings,this.editor=e,this.child_plugins=[],this.setupCancelCleanupCallback(this.options),void 0===this.options||void 0===this.options.plugins)return!1;this.setupDialog(),this.editor.ui.add("cmsplugins",CKEDITOR.UI_PANELBUTTON,{toolbar:"cms,0",label:this.options.lang.toolbar,title:this.options.lang.toolbar,className:"cke_panelbutton__cmsplugins",modes:{wysiwyg:1},editorFocus:0,panel:{css:[CKEDITOR.skin.getPath("editor")].concat(i.editor.config.contentsCss),attributes:{role:"cmsplugins","aria-label":this.options.lang.aria}},onBlock:function(e,n){n.element.setHtml(i.editor.plugins.cmsplugins.setupDropdown()),t(n.element.$).find(".cke_panel_listItem a").bind("click",function(n){n.preventDefault(),i.addPlugin(t(this),e)})}}),this.editor.contextMenu&&this.setupContextMenu(),this.editor.addCommand("cmspluginsEdit",{exec:function(){var t=i.getElementFromSelection(),e=i.getPluginWidget(t);console.log("cmspluginsEdit",t,e),e&&i.editPlugin(e)}});var n=function(e){var n;if("touchend"===e.type||"click"===e.type){var s=t(e.currentTarget).closest("cms-plugin")[0];console.log("plugin edit",s,s.parentElement),n=new CKEDITOR.dom.element(s).getParent(),e.data=e.data||{},i.editor.getSelection().fake(n)}i.editor.execCommand("cmspluginsEdit")};this.editor.on("doubleclick",n),this.editor.on("instanceReady",function(){}),this.setupDataProcessor()},getElementFromSelection:function(){var t=this.editor.getSelection();return t.getSelectedElement()||t.getCommonAncestor().getAscendant("cms-plugin",!0)},getPluginWidget:function(t){return t?t.getAscendant("cms-plugin",!0)||t.findOne("cms-plugin"):null},setupDialog:function(){var e=this,i=function(){return{title:"",minWidth:200,minHeight:200,contents:[{elements:[{type:"html",html:'').appendTo(i.getParent())}return n.unselectable(),o.unselectable(),{element:e,parts:{dialog:e.getChild(0),title:n,close:o,tabs:i.getChild(2),contents:i.getChild([3,0,0,0]),footer:i.getChild([3,0,1,0])}}}function l(t,e,i){this.element=e,this.focusIndex=i,this.tabIndex=0,this.isFocusable=function(){return!e.getAttribute("disabled")&&e.isVisible()},this.focus=function(){t._.currentFocusIndex=this.focusIndex,this.element.focus()},e.on("keydown",function(t){t.data.getKeystroke()in{32:1,13:1}&&this.fire("click")}),e.on("focus",function(){this.fire("mouseover")}),e.on("blur",function(){this.fire("mouseout")})}function d(t){function e(){t.layout()}var i=CKEDITOR.document.getWindow();i.on("resize",e),t.on("hide",function(){i.removeListener("resize",e)})}function u(t,e){this.dialog=t;for(var i,n=e.contents,o=0;i=n[o];o++)n[o]=i&&new h(t,i);CKEDITOR.tools.extend(this,e)}function h(t,e){this._={dialog:t},CKEDITOR.tools.extend(this,e)}function c(t){function e(e){var i,l,d=t.getSize(),u=t.parts.dialog.getParent().getClientSize(),h=e.originalEvent.screenX,c=e.originalEvent.screenY,g=h-n.x,f=c-n.y;n={x:h,y:c},o.x+=g,o.y+=f,i=o.x+r[3]u.width-d.width-a?u.width-d.width+("rtl"==s.lang.dir?0:r[1]):o.x,l=o.y+r[0]u.height-d.height-a?u.height-d.height+r[2]:o.y,i=Math.floor(i),l=Math.floor(l),t.move(i,l,1),e.preventDefault()}function i(){if(CMS.$(CKEDITOR.document.$).off("pointermove",e),CMS.$(CKEDITOR.document.$).off("pointerup",i),CKEDITOR.env.ie6Compat){var t=R.getChild(0).getFrameDocument();t.removeListener("mousemove",e),t.removeListener("mouseup",i)}}var n=null,o=null,s=t.getParentEditor(),a=s.config.dialog_magnetDistance,r=CKEDITOR.skin.margins||[0,0,0,0];void 0===a&&(a=20),CMS.$(t.parts.title.$).on("pointerdown",function(s){if(!t._.moved){var a=t._.element;a.getFirst().setStyle("position","absolute"),a.removeStyle("display"),t._.moved=!0,t.layout()}if(n={x:s.originalEvent.screenX,y:s.originalEvent.screenY},CMS.$(CKEDITOR.document.$).on("pointermove",e),CMS.$(CKEDITOR.document.$).on("pointerup",i),o=t.getPosition(),CKEDITOR.env.ie6Compat){var r=R.getChild(0).getFrameDocument();r.on("mousemove",e),r.on("mouseup",i)}s.preventDefault()})}function g(t){function e(e){var i="rtl"==h.lang.dir,u=(e.originalEvent.screenX-l.x)*(i?-1:1),c=e.originalEvent.screenY-l.y,g=d.width,_=d.height,p=g+u*(t._.moved?1:2),I=_+c*(t._.moved?1:2),m=t._.element.getFirst(),v=i&&parseInt(m.getComputedStyle("right"),10),C=t.getPosition();if(C.x=C.x||0,C.y=C.y||0,C.y+I>r.height&&(I=r.height-C.y),(i?v:C.x)+p>r.width&&(p=r.width-(i?v:C.x)),I=Math.floor(I),p=Math.floor(p),o!=CKEDITOR.DIALOG_RESIZE_WIDTH&&o!=CKEDITOR.DIALOG_RESIZE_BOTH||(g=Math.max(n.minWidth||0,p-s)),o!=CKEDITOR.DIALOG_RESIZE_HEIGHT&&o!=CKEDITOR.DIALOG_RESIZE_BOTH||(_=Math.max(n.minHeight||0,I-a)),t.resize(g,_),t._.moved){var E=t._.position.x,D=t._.position.y;f(t,E,D)}t._.moved||t.layout(),e.preventDefault()}function i(){if(CMS.$(CKEDITOR.document.$).off("pointermove",e),CMS.$(CKEDITOR.document.$).off("pointerup",i),u&&(u.remove(),u=null),CKEDITOR.env.ie6Compat){var t=R.getChild(0).getFrameDocument();t.removeListener("mouseup",i),t.removeListener("mousemove",e)}}var n=t.definition,o=n.resizable;if(o!=CKEDITOR.DIALOG_RESIZE_NONE){var s,a,r,l,d,u,h=t.getParentEditor(),c=CKEDITOR.tools.addFunction(function(n){function o(t){return t.isVisible()}d=t.getSize();var h=t.parts.contents,c=h.$.getElementsByTagName("iframe").length,g=!(CKEDITOR.env.gecko||CKEDITOR.env.ie&&CKEDITOR.env.quirks);if(c&&(CMS.$(".cke_dialog_resize_cover").remove(),u=CKEDITOR.dom.element.createFromHtml('
'),h.append(u)),a=d.height-t.parts.contents.getFirst(o).getSize("height",g),s=d.width-t.parts.contents.getFirst(o).getSize("width",1),l={x:n.screenX,y:n.screenY},r=CKEDITOR.document.getWindow().getViewPaneSize(),CMS.$(CKEDITOR.document.$).on("pointermove",e),CMS.$(CKEDITOR.document.$).on("pointerup",i),CKEDITOR.env.ie6Compat){var f=R.getChild(0).getFrameDocument();f.on("mousemove",e),f.on("mouseup",i)}n.preventDefault&&n.preventDefault()});t.on("load",function(){var e="";o==CKEDITOR.DIALOG_RESIZE_WIDTH?e=" cke_resizer_horizontal":o==CKEDITOR.DIALOG_RESIZE_HEIGHT&&(e=" cke_resizer_vertical");var i=CKEDITOR.dom.element.createFromHtml('
'+("ltr"==h.lang.dir?"◢":"◣")+"
");t.parts.footer.append(i,1)}),h.on("destroy",function(){CKEDITOR.tools.removeFunction(c)})}}function f(t,e,i){var n=t.parts.dialog.getParent().getClientSize(),o=t.getSize(),s=t._.viewportRatio,a={width:Math.max(n.width-o.width,0),height:Math.max(n.height-o.height,0)};s.width=a.width?e/a.width:s.width,s.height=a.height?i/a.height:s.height,t._.viewportRatio=s}function _(t){t.data.preventDefault(1)}function p(t){var e=t.config,i=CKEDITOR.skinName||t.config.skin,n=e.dialog_backgroundCoverColor||("moono-lisa"==i?"black":"white"),o=e.dialog_backgroundCoverOpacity,s=e.baseFloatZIndex,a=CKEDITOR.tools.genKey(n,o,s),r=L[a];if(CKEDITOR.document.getBody().addClass("cke_dialog_open"),CMS.$(".cke_dialog_background_cover:not(.cms-ckeditor-dialog-background-cover)").remove(),r)r.show();else{var l=['
'];if(CKEDITOR.env.ie6Compat){var d="";l.push('')}l.push("
"),r=CKEDITOR.dom.element.createFromHtml(l.join("")),r.setOpacity(void 0!==o?o:.5),r.on("keydown",_),r.on("keypress",_),r.on("keyup",_),r.appendTo(CKEDITOR.document.getBody()),L[a]=r}t.focusManager.add(r),R=r,CKEDITOR.env.mac&&CKEDITOR.env.webkit||r.focus()}function I(t){CMS.$(".cke_dialog_background_cover:not(.cms-ckeditor-dialog-background-cover)").remove(),CKEDITOR.document.getBody().removeClass("cke_dialog_open"),R&&(t.focusManager.remove(R),R.hide())}function m(){for(var t in L)L[t].remove();L={}}function v(t){var e=t.data.$.ctrlKey||t.data.$.metaKey,i=t.data.$.altKey,n=t.data.$.shiftKey,o=String.fromCharCode(t.data.$.keyCode),s=M[(e?"CTRL+":"")+(i?"ALT+":"")+(n?"SHIFT+":"")+o];s&&s.length&&(s=s[s.length-1],s.keydown&&s.keydown.call(s.uiElement,s.dialog,s.key),t.data.preventDefault())}function C(t){var e=t.data.$.ctrlKey||t.data.$.metaKey,i=t.data.$.altKey,n=t.data.$.shiftKey,o=String.fromCharCode(t.data.$.keyCode),s=M[(e?"CTRL+":"")+(i?"ALT+":"")+(n?"SHIFT+":"")+o];s&&s.length&&(s=s[s.length-1],s.keyup&&(s.keyup.call(s.uiElement,s.dialog,s.key),t.data.preventDefault()))}function E(t,e,i,n,o){(M[i]||(M[i]=[])).push({uiElement:t,dialog:e,key:i,keyup:o||t.accessKeyUp,keydown:n||t.accessKeyDown})}function D(t){for(var e in M){for(var i=M[e],n=i.length-1;n>=0;n--)i[n].dialog!=t&&i[n].uiElement!=t||i.splice(n,1);0===i.length&&delete M[e]}}function T(t,e){t._.accessKeyMap[e]&&t.selectPage(t._.accessKeyMap[e])}function b(){}var O,R,K=CKEDITOR.tools.cssLength,y=!CKEDITOR.env.ie||CKEDITOR.env.edge,k='';CKEDITOR.dialog=function(e,o){function l(){var t=k._.focusList;t.sort(function(t,e){return t.tabIndex!=e.tabIndex?e.tabIndex-t.tabIndex:t.focusIndex-e.focusIndex});for(var e=t.length,i=0;i1;do{if(n+=t,o&&!k._.tabBarMode&&(n==e.length||-1==n))return k._.tabBarMode=!0,k._.tabs[k._.currentTabId][0].focus(),void(k._.currentFocusIndex=-1);if((n=(n+e.length)%e.length)==i)break}while(t&&!e[n].isFocusable());e[n].focus(),"text"==e[n].type&&e[n].select()}}function h(o){if(k==CKEDITOR.dialog._.currentTop){var s,a=o.data.getKeystroke(),r="rtl"==e.lang.dir,l=[37,38,39,40];if(p=I=0,9==a||a==CKEDITOR.SHIFT+9){d(a==CKEDITOR.SHIFT+9?-1:1),p=1}else if(a==CKEDITOR.ALT+121&&!k._.tabBarMode&&k.getPageCount()>1)t(k),p=1;else if(-1!=CKEDITOR.tools.indexOf(l,a)&&k._.tabBarMode){var u=[r?39:37,38],h=-1!=CKEDITOR.tools.indexOf(u,a)?i.call(k):n.call(k);k.selectPage(h),k._.tabs[h][0].focus(),p=1}else if(13!=a&&32!=a||!k._.tabBarMode)if(13==a){var c=o.data.getTarget();c.is("a","button","select","textarea")||c.is("input")&&"button"==c.$.type||(s=this.getButton("ok"),s&&CKEDITOR.tools.setTimeout(s.click,0,s),p=1),I=1}else{if(27!=a)return;s=this.getButton("cancel"),s?CKEDITOR.tools.setTimeout(s.click,0,s):!1!==this.fire("cancel",{hide:!0}).hide&&this.hide(),I=1}else this.selectPage(this._.currentTabId),this._.tabBarMode=!1,this._.currentFocusIndex=-1,d(1),p=1;f(o)}}function f(t){p?t.data.preventDefault(1):I&&t.data.stopPropagation()}var _,p,I,m=CKEDITOR.dialog._.dialogDefinitions[o],v=CKEDITOR.tools.clone(O),C=e.config.dialog_buttonsOrder||"OS",E=e.lang.dir,D={};("OS"==C&&CKEDITOR.env.mac||"rtl"==C&&"ltr"==E||"ltr"==C&&"rtl"==E)&&v.buttons.reverse(),m=CKEDITOR.tools.extend(m(e),v),m=CKEDITOR.tools.clone(m),m=new u(this,m);var T=r(e);this._={editor:e,element:T.element,name:o,model:null,contentSize:{width:0,height:0},size:{width:0,height:0},contents:{},buttons:{},accessKeyMap:{},viewportRatio:{width:.5,height:.5},tabs:{},tabIdList:[],currentTabId:null,currentTabIndex:null,pageCount:0,lastTab:null,tabBarMode:!1,focusList:[],currentFocusIndex:0,hasFocus:!1},this.parts=T.parts,CKEDITOR.tools.setTimeout(function(){e.fire("ariaWidget",this.parts.contents)},0,this);var b={top:0,visibility:"hidden"};if(CKEDITOR.env.ie6Compat&&(b.position="absolute"),b["rtl"==E?"right":"left"]=0,this.parts.dialog.setStyles(b),CKEDITOR.event.call(this),this.definition=m=CKEDITOR.fire("dialogDefinition",{name:o,definition:m,dialog:this},e).definition,!("removeDialogTabs"in e._)&&e.config.removeDialogTabs){var R=e.config.removeDialogTabs.split(";");for(_=0;_1;if(e.config.dialog_startupFocusTab&&t)k._.tabBarMode=!0,k._.tabs[k._.currentTabId][0].focus(),k._.currentFocusIndex=-1;else if(!this._.hasFocus)if(this._.currentFocusIndex=t?-1:this._.focusList.length-1,m.onFocus){var i=m.onFocus.call(this);i&&i.focus()}else d(1)},this,null,4294967295),CKEDITOR.env.ie6Compat&&this.on("load",function(){var t=this.getElement(),e=t.getFirst();e.remove(),e.appendTo(t)},this),c(this),g(this),new CKEDITOR.dom.text(m.title,CKEDITOR.document).appendTo(this.parts.title),_=0;_0?e:0)+"px"};d[o?"right":"left"]=(t>0?t:0)+"px",n.setStyles(d),i&&(this._.moved=1)},getPosition:function(){return CKEDITOR.tools.extend({},this._.position)},show:function(){var t=this._.element,e=this.definition,i=CKEDITOR.document.getBody(),n=this._.editor.config.baseFloatZIndex;if(t.getParent()&&t.getParent().equals(i)?t.setStyle("display",y?"flex":"block"):t.appendTo(i),this.resize(this._.contentSize&&this._.contentSize.width||e.width||e.minWidth,this._.contentSize&&this._.contentSize.height||e.height||e.minHeight),this.reset(),null===this._.currentTabId&&this.selectPage(this.definition.contents[0].id),null===CKEDITOR.dialog._.currentZIndex&&(CKEDITOR.dialog._.currentZIndex=n),this._.element.getFirst().setStyle("z-index",CKEDITOR.dialog._.currentZIndex+=10),this.getElement().setStyle("z-index",CKEDITOR.dialog._.currentZIndex),null===CKEDITOR.dialog._.currentTop)CKEDITOR.dialog._.currentTop=this,this._.parentDialog=null,p(this._.editor);else{this._.parentDialog=CKEDITOR.dialog._.currentTop;var o=this._.parentDialog.getElement().getFirst();o.$.style.zIndex-=Math.floor(n/2),this._.parentDialog.getElement().setStyle("z-index",o.$.style.zIndex),CKEDITOR.dialog._.currentTop=this}t.on("keydown",v),t.on("keyup",C),this._.hasFocus=!1;for(var s in e.contents)if(e.contents[s]){var a=e.contents[s],r=this._.tabs[a.id],l=a.requiredContent,u=0;if(r){for(var h in this._.contents[a.id]){var c=this._.contents[a.id][h];"hbox"!=c.type&&"vbox"!=c.type&&c.getInputElement()&&(c.requiredContent&&!this._.editor.activeFilter.check(c.requiredContent)?c.disable():(c.enable(),u++))}!u||l&&!this._.editor.activeFilter.check(l)?r[0].addClass("cke_dialog_tab_disabled"):r[0].removeClass("cke_dialog_tab_disabled")}}CKEDITOR.tools.setTimeout(function(){this.layout(),d(this),this.parts.dialog.setStyle("visibility",""),this.fireOnce("load",{}),CKEDITOR.ui.fire("ready",this),this.fire("show",{}),this._.editor.fire("dialogShow",this),this._.parentDialog||this._.editor.focusManager.lock(),this.foreach(function(t){t.setInitValue&&t.setInitValue()})},100,this)},layout:function(){var t=this.parts.dialog;if(this._.moved||!y){var e,i,n=this.getSize(),o=CKEDITOR.document.getWindow(),s=o.getViewPaneSize();this._.moved&&this._.position?(e=this._.position.x,i=this._.position.y):(e=(s.width-n.width)/2,i=(s.height-n.height)/2),CKEDITOR.env.ie6Compat||(t.setStyle("position","absolute"),t.removeStyle("margin")),e=Math.floor(e),i=Math.floor(i),this.move(e,i)}},foreach:function(t){for(var e in this._.contents)for(var i in this._.contents[e])t.call(this,this._.contents[e][i]);return this},reset:function(){var t=function(t){t.reset&&t.reset(1)};return function(){return this.foreach(t),this}}(),setupContent:function(){var t=arguments;this.foreach(function(e){e.setup&&e.setup.apply(e,t)})},commitContent:function(){var t=arguments;this.foreach(function(e){CKEDITOR.env.ie&&this._.currentFocusIndex==e.focusIndex&&e.getInputElement().$.blur(),e.commit&&e.commit.apply(e,t)})},hide:function(){if(this.parts.dialog.isVisible()){this.fire("hide",{}),this._.editor.fire("dialogHide",this),this.selectPage(this._.tabIdList[0]);var t=this._.element;for(t.setStyle("display","none"),this.parts.dialog.setStyle("visibility","hidden"),D(this);CKEDITOR.dialog._.currentTop!=this;)CKEDITOR.dialog._.currentTop.hide();if(this._.parentDialog){var e=this._.parentDialog.getElement().getFirst();this._.parentDialog.getElement().removeStyle("z-index"),e.setStyle("z-index",parseInt(e.$.style.zIndex,10)+Math.floor(this._.editor.config.baseFloatZIndex/2))}else I(this._.editor);if(CKEDITOR.dialog._.currentTop=this._.parentDialog,this._.parentDialog)CKEDITOR.dialog._.currentZIndex-=10;else{CKEDITOR.dialog._.currentZIndex=null,t.removeListener("keydown",v),t.removeListener("keyup",C);var i=this._.editor;i.focus(),setTimeout(function(){i.focusManager.unlock(),CKEDITOR.env.iOS&&i.window.focus()},0)}delete this._.parentDialog,this.foreach(function(t){t.resetInitValue&&t.resetInitValue()}),this.setState(CKEDITOR.DIALOG_STATE_IDLE)}},addPage:function(t){if(!t.requiredContent||this._.editor.filter.check(t.requiredContent)){for(var e,i=[],n=t.label?' title="'+CKEDITOR.tools.htmlEncode(t.label)+'"':"",o=CKEDITOR.dialog._.uiElementBuilders.vbox.build(this,{type:"vbox",className:"cke_dialog_page_contents",children:t.elements,expand:!!t.expand,padding:t.padding,style:t.style||"width: 100%;"},i),s=this._.contents[t.id]={},a=o.getChild(),r=0;e=a.shift();)e.notAllowed||"hbox"==e.type||"vbox"==e.type||r++,s[e.id]=e,"function"==typeof e.getChild&&a.push.apply(a,e.getChild());r||(t.hidden=!0);var l=CKEDITOR.dom.element.createFromHtml(i.join(""));l.setAttribute("role","tabpanel"),l.setStyle("min-height","100%");var d=CKEDITOR.env,u="cke_"+t.id+"_"+CKEDITOR.tools.getNextNumber(),h=CKEDITOR.dom.element.createFromHtml(['0?" cke_last":"cke_first",n,t.hidden?' style="display:none"':"",' id="',u,'"',d.gecko&&!d.hc?"":' href="javascript:void(0)"',' tabIndex="-1"',' hidefocus="true"',' role="tab">',t.label,""].join(""));l.setAttribute("aria-labelledby",u),this._.tabs[t.id]=[h,l],this._.tabIdList.push(t.id),!t.hidden&&this._.pageCount++,this._.lastTab=h,this.updateStyle(),l.setAttribute("name",t.id),l.appendTo(this.parts.contents),h.unselectable(),this.parts.tabs.append(h),t.accessKey&&(E(this,this,"CTRL+"+t.accessKey,b,T),this._.accessKeyMap["CTRL+"+t.accessKey]=t.id)}},selectPage:function(t){if(this._.currentTabId!=t&&!this._.tabs[t][0].hasClass("cke_dialog_tab_disabled")&&!1!==this.fire("selectPage",{page:t,currentPage:this._.currentTabId})){for(var e in this._.tabs){var i=this._.tabs[e][0],n=this._.tabs[e][1];e!=t&&(i.removeClass("cke_dialog_tab_selected"),i.removeAttribute("aria-selected"),n.hide()),n.setAttribute("aria-hidden",e!=t)}var s=this._.tabs[t];s[0].addClass("cke_dialog_tab_selected"),s[0].setAttribute("aria-selected",!0),CKEDITOR.env.ie6Compat||CKEDITOR.env.ie7Compat?(o(s[1]),s[1].show(),setTimeout(function(){o(s[1],1)},0)):s[1].show(),this._.currentTabId=t,this._.currentTabIndex=CKEDITOR.tools.indexOf(this._.tabIdList,t)}},updateStyle:function(){this.parts.dialog[(1===this._.pageCount?"add":"remove")+"Class"]("cke_single_page")},hidePage:function(t){var e=this._.tabs[t]&&this._.tabs[t][0];e&&1!=this._.pageCount&&e.isVisible()&&(t==this._.currentTabId&&this.selectPage(i.call(this)),e.hide(),this._.pageCount--,this.updateStyle())},showPage:function(t){var e=this._.tabs[t]&&this._.tabs[t][0];e&&(e.show(),this._.pageCount++,this.updateStyle())},getElement:function(){return this._.element},getName:function(){return this._.name},getContentElement:function(t,e){var i=this._.contents[t];return i&&i[e]},getValueOf:function(t,e){return this.getContentElement(t,e).getValue()},setValueOf:function(t,e,i){return this.getContentElement(t,e).setValue(i)},getButton:function(t){return this._.buttons[t]},click:function(t){return this._.buttons[t].click()},disableButton:function(t){return this._.buttons[t].disable()},enableButton:function(t){return this._.buttons[t].enable()},getPageCount:function(){return this._.pageCount},getParentEditor:function(){return this._.editor},getSelectedElement:function(){return this.getParentEditor().getSelection().getSelectedElement()},addFocusable:function(t,e){if(void 0===e)e=this._.focusList.length,this._.focusList.push(new l(this,t,e));else{this._.focusList.splice(e,0,new l(this,t,e));for(var i=e+1;i=0;r--)""===I[r]&&I.splice(r,1);I.length>0&&(h.style=(h.style?h.style+"; ":"")+I.join("; "));for(r in h)d.push(r+'="'+CKEDITOR.tools.htmlEncode(h[r])+'" ');d.push(">",c,""),i.push(d.join("")),(this._||(this._={})).dialog=t,"boolean"==typeof e.isChanged&&(this.isChanged=function(){return e.isChanged}),"function"==typeof e.isChanged&&(this.isChanged=e.isChanged),"function"==typeof e.setValue&&(this.setValue=CKEDITOR.tools.override(this.setValue,function(t){return function(i){t.call(this,e.setValue.call(this,i))}})),"function"==typeof e.getValue&&(this.getValue=CKEDITOR.tools.override(this.getValue,function(t){return function(){return e.getValue.call(this,t.call(this))}})),CKEDITOR.event.implementOn(this),this.registerEvents(e),this.accessKeyUp&&this.accessKeyDown&&e.accessKey&&E(this,t,"CTRL+"+e.accessKey);var v=this;t.on("load",function(){var e=v.getInputElement();if(e){var i=v.type in{checkbox:1,ratio:1}&&CKEDITOR.env.ie&&CKEDITOR.env.version<8?"cke_dialog_ui_focused":"";e.on("focus",function(){t._.tabBarMode=!1,t._.hasFocus=!0,v.fire("focus"),i&&this.addClass(i)}),e.on("blur",function(){v.fire("blur"),i&&this.removeClass(i)})}}),CKEDITOR.tools.extend(this,e),this.keyboardFocusable&&(this.tabIndex=e.tabIndex||0,this.focusIndex=t._.focusList.push(this)-1,this.on("focus",function(){t._.currentFocusIndex=v.focusIndex}))}},hbox:function(t,e,i,n,o){if(!(arguments.length<4)){this._||(this._={});var s,a=this._.children=e,r=o&&o.widths||null,l=o&&o.height||null,d={},u=function(){var t=[''];for(s=0;s0&&t.push('style="'+n.join("; ")+'" '),t.push(">",i[s],"")}return t.push(""),t.join("")},h={role:"presentation"};o&&o.align&&(h.align=o.align),CKEDITOR.ui.dialog.uiElement.call(this,t,o||{type:"hbox"},n,"table",d,h,u)}},vbox:function(t,e,i,n,o){if(!(arguments.length<3)){this._||(this._={});var s=this._.children=e,a=o&&o.width||null,r=o&&o.heights||null,l=function(){var e=['");for(var n=0;n")}return e.push("
0&&e.push('style="',l.join("; "),'" '),e.push(' class="cke_dialog_ui_vbox_child">',i[n],"
"),e.join("")};CKEDITOR.ui.dialog.uiElement.call(this,t,o||{type:"vbox"},n,"div",null,{role:"presentation"},l)}}}}(),CKEDITOR.ui.dialog.uiElement.prototype={getElement:function(){return CKEDITOR.document.getById(this.domId)},getInputElement:function(){return this.getElement()},getDialog:function(){return this._.dialog},setValue:function(t,e){return this.getInputElement().setValue(t),!e&&this.fire("change",{value:t}),this},getValue:function(){return this.getInputElement().getValue()},isChanged:function(){return!1},selectParentTab:function(){for(var t,e=this.getInputElement(),i=e;(i=i.getParent())&&-1==i.$.className.search("cke_dialog_page_contents"););return i?(t=i.getAttribute("name"),this._.dialog._.currentTabId!=t&&this._.dialog.selectPage(t),this):this},focus:function(){return this.selectParentTab().getInputElement().focus(),this},registerEvents:function(t){var e,i=/^on([A-Z]\w+)/;for(var n in t)(e=n.match(i))&&(this.eventProcessors[n]?this.eventProcessors[n].call(this,this._.dialog,t[n]):function(t,e,i,n){e.on("load",function(){t.getInputElement().on(i,n,t)})}(this,this._.dialog,e[1].toLowerCase(),t[n]));return this},eventProcessors:{onLoad:function(t,e){t.on("load",e,this)},onShow:function(t,e){t.on("show",e,this)},onHide:function(t,e){t.on("hide",e,this)}},accessKeyDown:function(){this.focus()},accessKeyUp:function(){},disable:function(){var t=this.getElement();this.getInputElement().setAttribute("disabled","true"),t.addClass("cke_disabled")},enable:function(){var t=this.getElement();this.getInputElement().removeAttribute("disabled"),t.removeClass("cke_disabled")},isEnabled:function(){return!this.getElement().hasClass("cke_disabled")},isVisible:function(){return this.getInputElement().isVisible()},isFocusable:function(){return!(!this.isEnabled()||!this.isVisible())}},CKEDITOR.ui.dialog.hbox.prototype=CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.uiElement,{getChild:function(t){return arguments.length<1?this._.children.concat():(t.splice||(t=[t]),t.length<2?this._.children[t[0]]:this._.children[t[0]]&&this._.children[t[0]].getChild?this._.children[t[0]].getChild(t.slice(1,t.length)):null)}},!0),CKEDITOR.ui.dialog.vbox.prototype=new CKEDITOR.ui.dialog.hbox,function(){var t={build:function(t,e,i){for(var n,o=e.children,s=[],a=[],r=0;rn-i;o--)if(e.call(this,this._.tabIdList[o%i]))return this._.tabIdList[o%i];return null}function n(){for(var t=this._.currentTabId,i=this._.tabIdList.length,n=CKEDITOR.tools.indexOf(this._.tabIdList,t),o=n+1;o').appendTo(i.getParent())}return n.unselectable(),o.unselectable(),{element:e,parts:{dialog:e.getChild(0),title:n,close:o,tabs:i.getChild(2),contents:i.getChild([3,0,0,0]),footer:i.getChild([3,0,1,0])}}}function l(t,e,i){this.element=e,this.focusIndex=i,this.tabIndex=0,this.isFocusable=function(){return!e.getAttribute("disabled")&&e.isVisible()},this.focus=function(){t._.currentFocusIndex=this.focusIndex,this.element.focus()},e.on("keydown",function(t){t.data.getKeystroke()in{32:1,13:1}&&this.fire("click")}),e.on("focus",function(){this.fire("mouseover")}),e.on("blur",function(){this.fire("mouseout")})}function d(t){function e(){t.layout()}var i=CKEDITOR.document.getWindow();i.on("resize",e),t.on("hide",function(){i.removeListener("resize",e)})}function u(t,e){this.dialog=t;for(var i,n=e.contents,o=0;i=n[o];o++)n[o]=i&&new h(t,i);CKEDITOR.tools.extend(this,e)}function h(t,e){this._={dialog:t},CKEDITOR.tools.extend(this,e)}function c(t){function e(e){var i,l,d=t.getSize(),u=t.parts.dialog.getParent().getClientSize(),h=e.originalEvent.screenX,c=e.originalEvent.screenY,g=h-n.x,f=c-n.y;n={x:h,y:c},o.x+=g,o.y+=f,i=o.x+r[3]u.width-d.width-a?u.width-d.width+("rtl"==s.lang.dir?0:r[1]):o.x,l=o.y+r[0]u.height-d.height-a?u.height-d.height+r[2]:o.y,i=Math.floor(i),l=Math.floor(l),t.move(i,l,1),e.preventDefault()}function i(){if(CMS.$(CKEDITOR.document.$).off("pointermove",e),CMS.$(CKEDITOR.document.$).off("pointerup",i),CKEDITOR.env.ie6Compat){var t=R.getChild(0).getFrameDocument();t.removeListener("mousemove",e),t.removeListener("mouseup",i)}}var n=null,o=null,s=t.getParentEditor(),a=s.config.dialog_magnetDistance,r=CKEDITOR.skin.margins||[0,0,0,0];void 0===a&&(a=20),CMS.$(t.parts.title.$).on("pointerdown",function(s){if(!t._.moved){var a=t._.element;a.getFirst().setStyle("position","absolute"),a.removeStyle("display"),t._.moved=!0,t.layout()}if(n={x:s.originalEvent.screenX,y:s.originalEvent.screenY},CMS.$(CKEDITOR.document.$).on("pointermove",e),CMS.$(CKEDITOR.document.$).on("pointerup",i),o=t.getPosition(),CKEDITOR.env.ie6Compat){var r=R.getChild(0).getFrameDocument();r.on("mousemove",e),r.on("mouseup",i)}s.preventDefault()})}function g(t){function e(e){var i="rtl"==h.lang.dir,u=(e.originalEvent.screenX-l.x)*(i?-1:1),c=e.originalEvent.screenY-l.y,g=d.width,_=d.height,p=g+u*(t._.moved?1:2),I=_+c*(t._.moved?1:2),m=t._.element.getFirst(),v=i&&parseInt(m.getComputedStyle("right"),10),C=t.getPosition();if(C.x=C.x||0,C.y=C.y||0,C.y+I>r.height&&(I=r.height-C.y),(i?v:C.x)+p>r.width&&(p=r.width-(i?v:C.x)),I=Math.floor(I),p=Math.floor(p),o!=CKEDITOR.DIALOG_RESIZE_WIDTH&&o!=CKEDITOR.DIALOG_RESIZE_BOTH||(g=Math.max(n.minWidth||0,p-s)),o!=CKEDITOR.DIALOG_RESIZE_HEIGHT&&o!=CKEDITOR.DIALOG_RESIZE_BOTH||(_=Math.max(n.minHeight||0,I-a)),t.resize(g,_),t._.moved){var E=t._.position.x,D=t._.position.y;f(t,E,D)}t._.moved||t.layout(),e.preventDefault()}function i(){if(CMS.$(CKEDITOR.document.$).off("pointermove",e),CMS.$(CKEDITOR.document.$).off("pointerup",i),u&&(u.remove(),u=null),CKEDITOR.env.ie6Compat){var t=R.getChild(0).getFrameDocument();t.removeListener("mouseup",i),t.removeListener("mousemove",e)}}var n=t.definition,o=n.resizable;if(o!=CKEDITOR.DIALOG_RESIZE_NONE){var s,a,r,l,d,u,h=t.getParentEditor(),c=CKEDITOR.tools.addFunction(function(n){function o(t){return t.isVisible()}d=t.getSize();var h=t.parts.contents,c=h.$.getElementsByTagName("iframe").length,g=!(CKEDITOR.env.gecko||CKEDITOR.env.ie&&CKEDITOR.env.quirks);if(c&&(CMS.$(".cke_dialog_resize_cover").remove(),u=CKEDITOR.dom.element.createFromHtml('
'),h.append(u)),a=d.height-t.parts.contents.getFirst(o).getSize("height",g),s=d.width-t.parts.contents.getFirst(o).getSize("width",1),l={x:n.screenX,y:n.screenY},r=CKEDITOR.document.getWindow().getViewPaneSize(),CMS.$(CKEDITOR.document.$).on("pointermove",e),CMS.$(CKEDITOR.document.$).on("pointerup",i),CKEDITOR.env.ie6Compat){var f=R.getChild(0).getFrameDocument();f.on("mousemove",e),f.on("mouseup",i)}n.preventDefault&&n.preventDefault()});t.on("load",function(){var e="";o==CKEDITOR.DIALOG_RESIZE_WIDTH?e=" cke_resizer_horizontal":o==CKEDITOR.DIALOG_RESIZE_HEIGHT&&(e=" cke_resizer_vertical");var i=CKEDITOR.dom.element.createFromHtml('
'+("ltr"==h.lang.dir?"◢":"◣")+"
");t.parts.footer.append(i,1)}),h.on("destroy",function(){CKEDITOR.tools.removeFunction(c)})}}function f(t,e,i){var n=t.parts.dialog.getParent().getClientSize(),o=t.getSize(),s=t._.viewportRatio,a={width:Math.max(n.width-o.width,0),height:Math.max(n.height-o.height,0)};s.width=a.width?e/a.width:s.width,s.height=a.height?i/a.height:s.height,t._.viewportRatio=s}function _(t){t.data.preventDefault(1)}function p(t){var e=t.config,i=CKEDITOR.skinName||t.config.skin,n=e.dialog_backgroundCoverColor||("moono-lisa"==i?"black":"white"),o=e.dialog_backgroundCoverOpacity,s=e.baseFloatZIndex+1e7,a=CKEDITOR.tools.genKey(n,o,s),r=L[a];if(CKEDITOR.document.getBody().addClass("cke_dialog_open"),CMS.$(".cke_dialog_background_cover:not(.cms-ckeditor-dialog-background-cover)").remove(),r)r.show();else{var l=['
'];if(CKEDITOR.env.ie6Compat){var d="";l.push('')}l.push("
"),r=CKEDITOR.dom.element.createFromHtml(l.join("")),r.setOpacity(void 0!==o?o:.5),r.on("keydown",_),r.on("keypress",_),r.on("keyup",_),r.appendTo(CKEDITOR.document.getBody()),L[a]=r}t.focusManager.add(r),R=r,CKEDITOR.env.mac&&CKEDITOR.env.webkit||r.focus()}function I(t){CMS.$(".cke_dialog_background_cover:not(.cms-ckeditor-dialog-background-cover)").remove(),CKEDITOR.document.getBody().removeClass("cke_dialog_open"),R&&(t.focusManager.remove(R),R.hide())}function m(){for(var t in L)L[t].remove();L={}}function v(t){var e=t.data.$.ctrlKey||t.data.$.metaKey,i=t.data.$.altKey,n=t.data.$.shiftKey,o=String.fromCharCode(t.data.$.keyCode),s=M[(e?"CTRL+":"")+(i?"ALT+":"")+(n?"SHIFT+":"")+o];s&&s.length&&(s=s[s.length-1],s.keydown&&s.keydown.call(s.uiElement,s.dialog,s.key),t.data.preventDefault())}function C(t){var e=t.data.$.ctrlKey||t.data.$.metaKey,i=t.data.$.altKey,n=t.data.$.shiftKey,o=String.fromCharCode(t.data.$.keyCode),s=M[(e?"CTRL+":"")+(i?"ALT+":"")+(n?"SHIFT+":"")+o];s&&s.length&&(s=s[s.length-1],s.keyup&&(s.keyup.call(s.uiElement,s.dialog,s.key),t.data.preventDefault()))}function E(t,e,i,n,o){(M[i]||(M[i]=[])).push({uiElement:t,dialog:e,key:i,keyup:o||t.accessKeyUp,keydown:n||t.accessKeyDown})}function D(t){for(var e in M){for(var i=M[e],n=i.length-1;n>=0;n--)i[n].dialog!=t&&i[n].uiElement!=t||i.splice(n,1);0===i.length&&delete M[e]}}function T(t,e){t._.accessKeyMap[e]&&t.selectPage(t._.accessKeyMap[e])}function b(){}var O,R,K=CKEDITOR.tools.cssLength,y=!CKEDITOR.env.ie||CKEDITOR.env.edge,k='';CKEDITOR.dialog=function(e,o){function l(){var t=k._.focusList;t.sort(function(t,e){return t.tabIndex!=e.tabIndex?e.tabIndex-t.tabIndex:t.focusIndex-e.focusIndex});for(var e=t.length,i=0;i1;do{if(n+=t,o&&!k._.tabBarMode&&(n==e.length||-1==n))return k._.tabBarMode=!0,k._.tabs[k._.currentTabId][0].focus(),void(k._.currentFocusIndex=-1);if((n=(n+e.length)%e.length)==i)break}while(t&&!e[n].isFocusable());e[n].focus(),"text"==e[n].type&&e[n].select()}}function h(o){if(k==CKEDITOR.dialog._.currentTop){var s,a=o.data.getKeystroke(),r="rtl"==e.lang.dir,l=[37,38,39,40];if(p=I=0,9==a||a==CKEDITOR.SHIFT+9){d(a==CKEDITOR.SHIFT+9?-1:1),p=1}else if(a==CKEDITOR.ALT+121&&!k._.tabBarMode&&k.getPageCount()>1)t(k),p=1;else if(-1!=CKEDITOR.tools.indexOf(l,a)&&k._.tabBarMode){var u=[r?39:37,38],h=-1!=CKEDITOR.tools.indexOf(u,a)?i.call(k):n.call(k);k.selectPage(h),k._.tabs[h][0].focus(),p=1}else if(13!=a&&32!=a||!k._.tabBarMode)if(13==a){var c=o.data.getTarget();c.is("a","button","select","textarea")||c.is("input")&&"button"==c.$.type||(s=this.getButton("ok"),s&&CKEDITOR.tools.setTimeout(s.click,0,s),p=1),I=1}else{if(27!=a)return;s=this.getButton("cancel"),s?CKEDITOR.tools.setTimeout(s.click,0,s):!1!==this.fire("cancel",{hide:!0}).hide&&this.hide(),I=1}else this.selectPage(this._.currentTabId),this._.tabBarMode=!1,this._.currentFocusIndex=-1,d(1),p=1;f(o)}}function f(t){p?t.data.preventDefault(1):I&&t.data.stopPropagation()}var _,p,I,m=CKEDITOR.dialog._.dialogDefinitions[o],v=CKEDITOR.tools.clone(O),C=e.config.dialog_buttonsOrder||"OS",E=e.lang.dir,D={};("OS"==C&&CKEDITOR.env.mac||"rtl"==C&&"ltr"==E||"ltr"==C&&"rtl"==E)&&v.buttons.reverse(),m=CKEDITOR.tools.extend(m(e),v),m=CKEDITOR.tools.clone(m),m=new u(this,m);var T=r(e);this._={editor:e,element:T.element,name:o,model:null,contentSize:{width:0,height:0},size:{width:0,height:0},contents:{},buttons:{},accessKeyMap:{},viewportRatio:{width:.5,height:.5},tabs:{},tabIdList:[],currentTabId:null,currentTabIndex:null,pageCount:0,lastTab:null,tabBarMode:!1,focusList:[],currentFocusIndex:0,hasFocus:!1},this.parts=T.parts,CKEDITOR.tools.setTimeout(function(){e.fire("ariaWidget",this.parts.contents)},0,this);var b={top:0,visibility:"hidden"};if(CKEDITOR.env.ie6Compat&&(b.position="absolute"),b["rtl"==E?"right":"left"]=0,this.parts.dialog.setStyles(b),CKEDITOR.event.call(this),this.definition=m=CKEDITOR.fire("dialogDefinition",{name:o,definition:m,dialog:this},e).definition,!("removeDialogTabs"in e._)&&e.config.removeDialogTabs){var R=e.config.removeDialogTabs.split(";");for(_=0;_1;if(e.config.dialog_startupFocusTab&&t)k._.tabBarMode=!0,k._.tabs[k._.currentTabId][0].focus(),k._.currentFocusIndex=-1;else if(!this._.hasFocus)if(this._.currentFocusIndex=t?-1:this._.focusList.length-1,m.onFocus){var i=m.onFocus.call(this);i&&i.focus()}else d(1)},this,null,4294967295),CKEDITOR.env.ie6Compat&&this.on("load",function(){var t=this.getElement(),e=t.getFirst();e.remove(),e.appendTo(t)},this),c(this),g(this),new CKEDITOR.dom.text(m.title,CKEDITOR.document).appendTo(this.parts.title),_=0;_0?e:0)+"px"};d[o?"right":"left"]=(t>0?t:0)+"px",n.setStyles(d),i&&(this._.moved=1)},getPosition:function(){return CKEDITOR.tools.extend({},this._.position)},show:function(){var t=this._.element,e=this.definition,i=CKEDITOR.document.getBody(),n=this._.editor.config.baseFloatZIndex+1e7;if(t.getParent()&&t.getParent().equals(i)?t.setStyle("display",y?"flex":"block"):t.appendTo(i),this.resize(this._.contentSize&&this._.contentSize.width||e.width||e.minWidth,this._.contentSize&&this._.contentSize.height||e.height||e.minHeight),this.reset(),null===this._.currentTabId&&this.selectPage(this.definition.contents[0].id),null===CKEDITOR.dialog._.currentZIndex&&(CKEDITOR.dialog._.currentZIndex=n),this._.element.getFirst().setStyle("z-index",CKEDITOR.dialog._.currentZIndex+=10),this.getElement().setStyle("z-index",CKEDITOR.dialog._.currentZIndex),null===CKEDITOR.dialog._.currentTop)CKEDITOR.dialog._.currentTop=this,this._.parentDialog=null,p(this._.editor);else{this._.parentDialog=CKEDITOR.dialog._.currentTop;var o=this._.parentDialog.getElement().getFirst();o.$.style.zIndex-=Math.floor(n/2),this._.parentDialog.getElement().setStyle("z-index",o.$.style.zIndex),CKEDITOR.dialog._.currentTop=this}t.on("keydown",v),t.on("keyup",C),this._.hasFocus=!1;for(var s in e.contents)if(e.contents[s]){var a=e.contents[s],r=this._.tabs[a.id],l=a.requiredContent,u=0;if(r){for(var h in this._.contents[a.id]){var c=this._.contents[a.id][h];"hbox"!=c.type&&"vbox"!=c.type&&c.getInputElement()&&(c.requiredContent&&!this._.editor.activeFilter.check(c.requiredContent)?c.disable():(c.enable(),u++))}!u||l&&!this._.editor.activeFilter.check(l)?r[0].addClass("cke_dialog_tab_disabled"):r[0].removeClass("cke_dialog_tab_disabled")}}CKEDITOR.tools.setTimeout(function(){this.layout(),d(this),this.parts.dialog.setStyle("visibility",""),this.fireOnce("load",{}),CKEDITOR.ui.fire("ready",this),this.fire("show",{}),this._.editor.fire("dialogShow",this),this._.parentDialog||this._.editor.focusManager.lock(),this.foreach(function(t){t.setInitValue&&t.setInitValue()})},100,this)},layout:function(){var t=this.parts.dialog;if(this._.moved||!y){var e,i,n=this.getSize(),o=CKEDITOR.document.getWindow(),s=o.getViewPaneSize();this._.moved&&this._.position?(e=this._.position.x,i=this._.position.y):(e=(s.width-n.width)/2,i=(s.height-n.height)/2),CKEDITOR.env.ie6Compat||(t.setStyle("position","absolute"),t.removeStyle("margin")),e=Math.floor(e),i=Math.floor(i),this.move(e,i)}},foreach:function(t){for(var e in this._.contents)for(var i in this._.contents[e])t.call(this,this._.contents[e][i]);return this},reset:function(){var t=function(t){t.reset&&t.reset(1)};return function(){return this.foreach(t),this}}(),setupContent:function(){var t=arguments;this.foreach(function(e){e.setup&&e.setup.apply(e,t)})},commitContent:function(){var t=arguments;this.foreach(function(e){CKEDITOR.env.ie&&this._.currentFocusIndex==e.focusIndex&&e.getInputElement().$.blur(),e.commit&&e.commit.apply(e,t)})},hide:function(){if(this.parts.dialog.isVisible()){this.fire("hide",{}),this._.editor.fire("dialogHide",this),this.selectPage(this._.tabIdList[0]);var t=this._.element;for(t.setStyle("display","none"),this.parts.dialog.setStyle("visibility","hidden"),D(this);CKEDITOR.dialog._.currentTop!=this;)CKEDITOR.dialog._.currentTop.hide();if(this._.parentDialog){var e=this._.parentDialog.getElement().getFirst();this._.parentDialog.getElement().removeStyle("z-index"),e.setStyle("z-index",parseInt(e.$.style.zIndex,10)+Math.floor(this._.editor.config.baseFloatZIndex/2))}else I(this._.editor);if(CKEDITOR.dialog._.currentTop=this._.parentDialog,this._.parentDialog)CKEDITOR.dialog._.currentZIndex-=10;else{CKEDITOR.dialog._.currentZIndex=null,t.removeListener("keydown",v),t.removeListener("keyup",C);var i=this._.editor;i.focus(),setTimeout(function(){i.focusManager.unlock(),CKEDITOR.env.iOS&&i.window.focus()},0)}delete this._.parentDialog,this.foreach(function(t){t.resetInitValue&&t.resetInitValue()}),this.setState(CKEDITOR.DIALOG_STATE_IDLE)}},addPage:function(t){if(!t.requiredContent||this._.editor.filter.check(t.requiredContent)){for(var e,i=[],n=t.label?' title="'+CKEDITOR.tools.htmlEncode(t.label)+'"':"",o=CKEDITOR.dialog._.uiElementBuilders.vbox.build(this,{type:"vbox",className:"cke_dialog_page_contents",children:t.elements,expand:!!t.expand,padding:t.padding,style:t.style||"width: 100%;"},i),s=this._.contents[t.id]={},a=o.getChild(),r=0;e=a.shift();)e.notAllowed||"hbox"==e.type||"vbox"==e.type||r++,s[e.id]=e,"function"==typeof e.getChild&&a.push.apply(a,e.getChild());r||(t.hidden=!0);var l=CKEDITOR.dom.element.createFromHtml(i.join(""));l.setAttribute("role","tabpanel"),l.setStyle("min-height","100%");var d=CKEDITOR.env,u="cke_"+t.id+"_"+CKEDITOR.tools.getNextNumber(),h=CKEDITOR.dom.element.createFromHtml(['0?" cke_last":"cke_first",n,t.hidden?' style="display:none"':"",' id="',u,'"',d.gecko&&!d.hc?"":' href="javascript:void(0)"',' tabIndex="-1"',' hidefocus="true"',' role="tab">',t.label,""].join(""));l.setAttribute("aria-labelledby",u),this._.tabs[t.id]=[h,l],this._.tabIdList.push(t.id),!t.hidden&&this._.pageCount++,this._.lastTab=h,this.updateStyle(),l.setAttribute("name",t.id),l.appendTo(this.parts.contents),h.unselectable(),this.parts.tabs.append(h),t.accessKey&&(E(this,this,"CTRL+"+t.accessKey,b,T),this._.accessKeyMap["CTRL+"+t.accessKey]=t.id)}},selectPage:function(t){if(this._.currentTabId!=t&&!this._.tabs[t][0].hasClass("cke_dialog_tab_disabled")&&!1!==this.fire("selectPage",{page:t,currentPage:this._.currentTabId})){for(var e in this._.tabs){var i=this._.tabs[e][0],n=this._.tabs[e][1];e!=t&&(i.removeClass("cke_dialog_tab_selected"),i.removeAttribute("aria-selected"),n.hide()),n.setAttribute("aria-hidden",e!=t)}var s=this._.tabs[t];s[0].addClass("cke_dialog_tab_selected"),s[0].setAttribute("aria-selected",!0),CKEDITOR.env.ie6Compat||CKEDITOR.env.ie7Compat?(o(s[1]),s[1].show(),setTimeout(function(){o(s[1],1)},0)):s[1].show(),this._.currentTabId=t,this._.currentTabIndex=CKEDITOR.tools.indexOf(this._.tabIdList,t)}},updateStyle:function(){this.parts.dialog[(1===this._.pageCount?"add":"remove")+"Class"]("cke_single_page")},hidePage:function(t){var e=this._.tabs[t]&&this._.tabs[t][0];e&&1!=this._.pageCount&&e.isVisible()&&(t==this._.currentTabId&&this.selectPage(i.call(this)),e.hide(),this._.pageCount--,this.updateStyle())},showPage:function(t){var e=this._.tabs[t]&&this._.tabs[t][0];e&&(e.show(),this._.pageCount++,this.updateStyle())},getElement:function(){return this._.element},getName:function(){return this._.name},getContentElement:function(t,e){var i=this._.contents[t];return i&&i[e]},getValueOf:function(t,e){return this.getContentElement(t,e).getValue()},setValueOf:function(t,e,i){return this.getContentElement(t,e).setValue(i)},getButton:function(t){return this._.buttons[t]},click:function(t){return this._.buttons[t].click()},disableButton:function(t){return this._.buttons[t].disable()},enableButton:function(t){return this._.buttons[t].enable()},getPageCount:function(){return this._.pageCount},getParentEditor:function(){return this._.editor},getSelectedElement:function(){return this.getParentEditor().getSelection().getSelectedElement()},addFocusable:function(t,e){if(void 0===e)e=this._.focusList.length,this._.focusList.push(new l(this,t,e));else{this._.focusList.splice(e,0,new l(this,t,e));for(var i=e+1;i=0;r--)""===I[r]&&I.splice(r,1);I.length>0&&(h.style=(h.style?h.style+"; ":"")+I.join("; "));for(r in h)d.push(r+'="'+CKEDITOR.tools.htmlEncode(h[r])+'" ');d.push(">",c,""),i.push(d.join("")),(this._||(this._={})).dialog=t,"boolean"==typeof e.isChanged&&(this.isChanged=function(){return e.isChanged}),"function"==typeof e.isChanged&&(this.isChanged=e.isChanged),"function"==typeof e.setValue&&(this.setValue=CKEDITOR.tools.override(this.setValue,function(t){return function(i){t.call(this,e.setValue.call(this,i))}})),"function"==typeof e.getValue&&(this.getValue=CKEDITOR.tools.override(this.getValue,function(t){return function(){return e.getValue.call(this,t.call(this))}})),CKEDITOR.event.implementOn(this),this.registerEvents(e),this.accessKeyUp&&this.accessKeyDown&&e.accessKey&&E(this,t,"CTRL+"+e.accessKey);var v=this;t.on("load",function(){var e=v.getInputElement();if(e){var i=v.type in{checkbox:1,ratio:1}&&CKEDITOR.env.ie&&CKEDITOR.env.version<8?"cke_dialog_ui_focused":"";e.on("focus",function(){t._.tabBarMode=!1,t._.hasFocus=!0,v.fire("focus"),i&&this.addClass(i)}),e.on("blur",function(){v.fire("blur"),i&&this.removeClass(i)})}}),CKEDITOR.tools.extend(this,e),this.keyboardFocusable&&(this.tabIndex=e.tabIndex||0,this.focusIndex=t._.focusList.push(this)-1,this.on("focus",function(){t._.currentFocusIndex=v.focusIndex}))}},hbox:function(t,e,i,n,o){if(!(arguments.length<4)){this._||(this._={});var s,a=this._.children=e,r=o&&o.widths||null,l=o&&o.height||null,d={},u=function(){var t=[''];for(s=0;s0&&t.push('style="'+n.join("; ")+'" '),t.push(">",i[s],"")}return t.push(""),t.join("")},h={role:"presentation"};o&&o.align&&(h.align=o.align),CKEDITOR.ui.dialog.uiElement.call(this,t,o||{type:"hbox"},n,"table",d,h,u)}},vbox:function(t,e,i,n,o){if(!(arguments.length<3)){this._||(this._={});var s=this._.children=e,a=o&&o.width||null,r=o&&o.heights||null,l=function(){var e=['");for(var n=0;n")}return e.push("
0&&e.push('style="',l.join("; "),'" '),e.push(' class="cke_dialog_ui_vbox_child">',i[n],"
"),e.join("")};CKEDITOR.ui.dialog.uiElement.call(this,t,o||{type:"vbox"},n,"div",null,{role:"presentation"},l)}}}}(),CKEDITOR.ui.dialog.uiElement.prototype={getElement:function(){return CKEDITOR.document.getById(this.domId)},getInputElement:function(){return this.getElement()},getDialog:function(){return this._.dialog},setValue:function(t,e){return this.getInputElement().setValue(t),!e&&this.fire("change",{value:t}),this},getValue:function(){return this.getInputElement().getValue()},isChanged:function(){return!1},selectParentTab:function(){for(var t,e=this.getInputElement(),i=e;(i=i.getParent())&&-1==i.$.className.search("cke_dialog_page_contents"););return i?(t=i.getAttribute("name"),this._.dialog._.currentTabId!=t&&this._.dialog.selectPage(t),this):this},focus:function(){return this.selectParentTab().getInputElement().focus(),this},registerEvents:function(t){var e,i=/^on([A-Z]\w+)/;for(var n in t)(e=n.match(i))&&(this.eventProcessors[n]?this.eventProcessors[n].call(this,this._.dialog,t[n]):function(t,e,i,n){e.on("load",function(){t.getInputElement().on(i,n,t)})}(this,this._.dialog,e[1].toLowerCase(),t[n]));return this},eventProcessors:{onLoad:function(t,e){t.on("load",e,this)},onShow:function(t,e){t.on("show",e,this)},onHide:function(t,e){t.on("hide",e,this)}},accessKeyDown:function(){this.focus()},accessKeyUp:function(){},disable:function(){var t=this.getElement();this.getInputElement().setAttribute("disabled","true"),t.addClass("cke_disabled")},enable:function(){var t=this.getElement();this.getInputElement().removeAttribute("disabled"),t.removeClass("cke_disabled")},isEnabled:function(){return!this.getElement().hasClass("cke_disabled")},isVisible:function(){return this.getInputElement().isVisible()},isFocusable:function(){return!(!this.isEnabled()||!this.isVisible())}},CKEDITOR.ui.dialog.hbox.prototype=CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.uiElement,{getChild:function(t){return arguments.length<1?this._.children.concat():(t.splice||(t=[t]),t.length<2?this._.children[t[0]]:this._.children[t[0]]&&this._.children[t[0]].getChild?this._.children[t[0]].getChild(t.slice(1,t.length)):null)}},!0),CKEDITOR.ui.dialog.vbox.prototype=new CKEDITOR.ui.dialog.hbox,function(){var t={build:function(t,e,i){for(var n,o=e.children,s=[],a=[],r=0;r Date: Wed, 8 Jun 2022 11:35:14 +0200 Subject: [PATCH 82/86] Update: readme.rst --- README.rst | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/README.rst b/README.rst index 5b4d37133..3d9fdebdb 100644 --- a/README.rst +++ b/README.rst @@ -57,7 +57,7 @@ One of the easiest contributions you can make is helping to translate this addon Documentation ============= -See ``REQUIREMENTS`` in the `setup.py `_ +See ``REQUIREMENTS`` in the `setup.py `_ file for additional dependencies listed in the The current integrated Version of CKEditor is: **4.17.2** @@ -97,14 +97,22 @@ the text field and can be used normally. Changes are saved as soon as the text field leaves focus. Inline editing requires to encapsulate the HTML text in a ``
`` in -edit mode. This might cause some side effects with a site's CSS. +edit mode. This might cause some side effects with a site's CSS, e.g. direct +child rules. To activate inline editing add the following line in your project's ``settings.py``:: TEXT_INLINE_EDITING = True +This will add a toggle button to the toolbar to allow to switch inline editing +on and off for the current session. +When inline editing is active the editor will save the plugin's content each time it loses +focus. If only text has changed the user can immediately continue to edit. If +a text-enabled plugin was changed, added, or removed he page will refresh to +update the page tree and get the correctly rendered version of the changed +plugin. Default content in Placeholder ****************************** @@ -115,7 +123,7 @@ If you use Django-CMS >= 3.0, you can use ``TextPlugin`` in "default_plugins" HTML content. If you want to add some "default children" to your automagically added plugin (i.e. a ``LinkPlugin``), you have to put children references in the body. References are ``"%(_tag_child_)s"`` with the -inserted order of chidren. For example:: +inserted order of children. For example:: CMS_PLACEHOLDER_CONF = { 'content': { @@ -230,7 +238,7 @@ configuration parameter in your settings:: #. Add `configuration='MYSETTING'` to the `HTMLField` usage(s) you want to customize; #. Define a setting parameter named as the string used in the `configuration` - argument of the `HTMLField` instance with the desidered configuration; + argument of the `HTMLField` instance with the desired configuration; Values not specified in your custom configuration will be taken from the global ``CKEDITOR_SETTINGS``. @@ -270,7 +278,7 @@ to note: .. _add styles and js configuration: https://github.com/divio/django-cms-demo/blob/7a104acaa749c52a8ed4870a74898e38daf20e46/src/settings.py#L318-L324 .. _stop CKEditor from removing empty spans: https://github.com/divio/django-cms-explorer/blob/908a88afa4e1d1176e267e77eb5c61e31ef0f9e5/static/js/addons/ckeditor.wysiwyg.js#L73 .. _allowedContent: http://docs.ckeditor.com/#!/guide/dev_allowed_content_rules -.. _to contain: https://github.com/divio/djangocms-text-ckeditor/issues/405#issuecomment-276814197 +.. _to contain: https://github.com/django-cms/djangocms-text-ckeditor/issues/405#issuecomment-276814197 Drag & Drop Images @@ -280,7 +288,7 @@ In IE and Firefox based browsers it is possible to drag and drop a picture into This image is base64 encoded and lives in the 'src' attribute as a 'data' tag. We detect this images, encode them and convert them to picture plugins. -If you want to overwirite this behavior for your own picture plugin: +If you want to overwrite this behavior for your own picture plugin: There is a setting called:: From c40564746af8eb599b1e433ab5292879edd92e1d Mon Sep 17 00:00:00 2001 From: Fabian Braun Date: Wed, 8 Jun 2022 15:16:46 +0200 Subject: [PATCH 83/86] NO NEWLINE AT THE END! From 320ee5b1154cccdd3736d6811657bee0423261c2 Mon Sep 17 00:00:00 2001 From: Fabian Braun Date: Wed, 8 Jun 2022 15:17:52 +0200 Subject: [PATCH 84/86] NO NEWLINE AT THE END From 8d6bfe21fb210b4c7353ccf243abab8f55d79910 Mon Sep 17 00:00:00 2001 From: Fabian Braun Date: Wed, 8 Jun 2022 15:40:46 +0200 Subject: [PATCH 85/86] Fix: remove newlines at end of text.html and inline.html --- djangocms_text_ckeditor/templates/cms/plugins/inline.html | 2 +- djangocms_text_ckeditor/templates/cms/plugins/text.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/djangocms_text_ckeditor/templates/cms/plugins/inline.html b/djangocms_text_ckeditor/templates/cms/plugins/inline.html index 7d12c5794..232ee2afd 100644 --- a/djangocms_text_ckeditor/templates/cms/plugins/inline.html +++ b/djangocms_text_ckeditor/templates/cms/plugins/inline.html @@ -1 +1 @@ -{% include "cms/plugins/text.html" %}{% if ckeditor_settings %}{% load sekizai_tags %}{% addtoblock 'js' %}{{ ckeditor_settings|json_script:ckeditor_settings_id }}{% endaddtoblock %}{% endif %} +{% include "cms/plugins/text.html" %}{% if ckeditor_settings %}{% load sekizai_tags %}{% addtoblock 'js' %}{{ ckeditor_settings|json_script:ckeditor_settings_id }}{% endaddtoblock %}{% endif %} \ No newline at end of file diff --git a/djangocms_text_ckeditor/templates/cms/plugins/text.html b/djangocms_text_ckeditor/templates/cms/plugins/text.html index 77100f17e..54e989136 100644 --- a/djangocms_text_ckeditor/templates/cms/plugins/text.html +++ b/djangocms_text_ckeditor/templates/cms/plugins/text.html @@ -1 +1 @@ -{{ body|safe }} +{{ body|safe }} \ No newline at end of file From 3481820459670dc4090791688659bf8d5c4720a5 Mon Sep 17 00:00:00 2001 From: Fabian Braun Date: Wed, 8 Jun 2022 16:59:08 +0200 Subject: [PATCH 86/86] Fix: displayStyle undefined bug --- .../ckeditor_plugins/cmswidget/plugin.js | 2 +- .../static/djangocms_text_ckeditor/js/cms.ckeditor.js | 5 +++-- ...ckeditor.min.js => bundle-1c5205cc04.cms.ckeditor.min.js} | 4 ++-- djangocms_text_ckeditor/widgets.py | 2 +- 4 files changed, 7 insertions(+), 6 deletions(-) rename djangocms_text_ckeditor/static/djangocms_text_ckeditor/js/dist/{bundle-11200553a7.cms.ckeditor.min.js => bundle-1c5205cc04.cms.ckeditor.min.js} (99%) diff --git a/djangocms_text_ckeditor/static/djangocms_text_ckeditor/ckeditor_plugins/cmswidget/plugin.js b/djangocms_text_ckeditor/static/djangocms_text_ckeditor/ckeditor_plugins/cmswidget/plugin.js index 127aecaa3..7fd340117 100644 --- a/djangocms_text_ckeditor/static/djangocms_text_ckeditor/ckeditor_plugins/cmswidget/plugin.js +++ b/djangocms_text_ckeditor/static/djangocms_text_ckeditor/ckeditor_plugins/cmswidget/plugin.js @@ -162,7 +162,7 @@ init: function () { var contents = $(this.element.$).children(); - var displayProp = contents.css('display'); + var displayProp = contents.css('display') || ''; if (!displayProp.includes('inline')) { this.wrapper.addClass('cke_widget_wrapper_force_block'); diff --git a/djangocms_text_ckeditor/static/djangocms_text_ckeditor/js/cms.ckeditor.js b/djangocms_text_ckeditor/static/djangocms_text_ckeditor/js/cms.ckeditor.js index 064a7d980..21eda4c60 100644 --- a/djangocms_text_ckeditor/static/djangocms_text_ckeditor/js/cms.ckeditor.js +++ b/djangocms_text_ckeditor/static/djangocms_text_ckeditor/js/cms.ckeditor.js @@ -147,7 +147,6 @@ } wrapper.data('cms_edit_url', url); wrapper.data('cms_plugin_id', id); - // wrapper.data('cms_placeholder_id', plugin[1].placeholder_id); wrapper.on('dblclick.cms-ckeditor', function (event) { // Double-click is needed by CKEditor event.stopPropagation(); @@ -174,7 +173,7 @@ }, startInlineEditor: function (plugin_id, url) { - var options = {}; + var options; var settings = JSON.parse(document.getElementById('ck-cfg-' + plugin_id).textContent); var wrapper = $('.cms-plugin.cms-plugin-' + plugin_id); @@ -184,6 +183,8 @@ settings.plugin_id = plugin_id; settings.url = url; + options = settings.options; + delete settings.options; CMS.CKEditor.init( wrapper[0], diff --git a/djangocms_text_ckeditor/static/djangocms_text_ckeditor/js/dist/bundle-11200553a7.cms.ckeditor.min.js b/djangocms_text_ckeditor/static/djangocms_text_ckeditor/js/dist/bundle-1c5205cc04.cms.ckeditor.min.js similarity index 99% rename from djangocms_text_ckeditor/static/djangocms_text_ckeditor/js/dist/bundle-11200553a7.cms.ckeditor.min.js rename to djangocms_text_ckeditor/static/djangocms_text_ckeditor/js/dist/bundle-1c5205cc04.cms.ckeditor.min.js index c0b1f79d1..20ffd395f 100644 --- a/djangocms_text_ckeditor/static/djangocms_text_ckeditor/js/dist/bundle-11200553a7.cms.ckeditor.min.js +++ b/djangocms_text_ckeditor/static/djangocms_text_ckeditor/js/dist/bundle-1c5205cc04.cms.ckeditor.min.js @@ -1,7 +1,7 @@ (function ($) { $(function () { -!function(t,i){"use strict";window.CKEDITOR_BASEPATH=t("[data-ckeditor-basepath]").attr("data-ckeditor-basepath"),i.CKEditor={options:{language:"en",skin:"moono-lisa",toolbar_CMS:[["Undo","Redo"],["cmsplugins","cmswidget","-","ShowBlocks"],["Format","Styles"],["TextColor","BGColor","-","PasteText","PasteFromWord"],["Scayt"],["Maximize",""],"/",["Bold","Italic","Underline","Strike","-","Subscript","Superscript","-","RemoveFormat"],["JustifyLeft","JustifyCenter","JustifyRight","JustifyBlock"],["HorizontalRule"],["NumberedList","BulletedList"],["Outdent","Indent","-","Blockquote","-","Link","Unlink","-","Table"],["Source"]],toolbar_HTMLField:[["Undo","Redo"],["ShowBlocks"],["Format","Styles"],["TextColor","BGColor","-","PasteText","PasteFromWord"],["Scayt"],["Maximize",""],"/",["Bold","Italic","Underline","Strike","-","Subscript","Superscript","-","RemoveFormat"],["JustifyLeft","JustifyCenter","JustifyRight","JustifyBlock"],["HorizontalRule"],["Link","Unlink"],["NumberedList","BulletedList"],["Outdent","Indent","-","Blockqote","-","Link","Unlink","-","Table"],["Source"]],allowedContent:!0,toolbarCanCollapse:!1,removePlugins:"resize",extraPlugins:""},static_url:"/static/djangocms-text-ckeditor",CSS:[],editors:{},init:function(e,o,n,r,d){var s=t(e);s.data("ckeditor-initialized",!0),s.attr("contenteditable",!0),this.options.toolbar=r.toolbar,this.options=t.extend(!1,{settings:r},this.options,n),this.options.extraPlugins=this.options.extraPlugins+=",cmsplugins,cmswidget,cmsdialog,cmsresize,widget",document.createElement("cms-plugin"),CKEDITOR.dtd["cms-plugin"]=CKEDITOR.dtd.div,CKEDITOR.dtd.$inline["cms-plugin"]=1,CKEDITOR.dtd.$nonEditable["cms-plugin"]=1,CKEDITOR.dtd.$transparent["cms-plugin"]=1,CKEDITOR.dtd.body["cms-plugin"]=1,CKEDITOR.skin.addIcon("cmsplugins",r.static_url+"/ckeditor_plugins/cmsplugins/icons/cmsplugins.svg");var a;a="admin"===o?CKEDITOR.replace(s[0],this.options):CKEDITOR.inline(s[0],this.options),i.CKEditor.editors[a.id]={editor:a,options:n,settings:r,container:s,changed:!1,child_changed:!1},a.on("instanceReady",d)},initInlineEditors:function(){void 0!==i._plugins&&(i.CKEditor.observer=i.CKEditor.observer||new IntersectionObserver(function(e,o){e.forEach(function(e){if(e.isIntersecting){var o=t(e.target),n=o.data("cms_plugin_id"),r=o.data("cms_edit_url");i.CKEditor.startInlineEditor(n,r)}})},{root:null,threshold:.05}),i._plugins.forEach(function(e){if("TextPlugin"===e[1].plugin_type){var o,n=e[1].urls.edit_plugin,r=e[1].plugin_id,d=t(".cms-plugin.cms-plugin-"+r);d.length>0&&(1===d.length&&"DIV"===d.prop("tagName")?o=d.addClass("cms-ckeditor-inline-wrapper"):(o=d.wrapAll('
').parent(),d.removeClass("cms-plugin").removeClass("cms-plugin-"+r),o.addClass("cms-plugin").addClass("cms-plugin-"+r)),o.data("cms_edit_url",n),o.data("cms_plugin_id",r),o.on("dblclick.cms-ckeditor",function(t){t.stopPropagation()}),o.on("pointerover.cms-ckeditor",function(t){setTimeout(function(){i.API.Tooltip.displayToggle(!1,t.target,"",r)},0)}),i.CKEditor.observer.observe(o[0]))}}),t(window).on("beforeunload.cms-ckeditor",function(){for(var t in i.CKEditor.editors)if(i.CKEditor.editors.hasOwnProperty(t)&&i.CKEditor.editors[t].changed)return"Do you really want to leave this page?"}))},startInlineEditor:function(e,o){var n={},r=JSON.parse(document.getElementById("ck-cfg-"+e).textContent),d=t(".cms-plugin.cms-plugin-"+e);d.data("ckeditor-initialized")||(r.plugin_id=e,r.url=o,i.CKEditor.init(d[0],"inline",n,r,function(t){t.editor.element.removeAttribute("title"),t.editor.on("change",function(){i.CKEditor.editors[t.editor.id].changed=!0}),d.on("blur.cms-ckeditor",function(){setTimeout(function(){document.activeElement.classList.contains("cke_panel_frame")||document.activeElement.classList.contains("cke_dialog_ui_button")||i.CKEditor.save_data(t.editor.id)},0)}),d.on("click.cms-ckeditor",function(){i.CKEditor._highlight_Textplugin(e)}),i.CKEditor.storeCSSlinks()}))},save_data:function(e,o){var n=i.CKEditor.editors[e];if(n&&n.changed){i.CKEditor.storeCSSlinks();var r=n.editor.getData();i.API.Toolbar.showLoader(),t.post(i.API.Helpers.updateUrlWithPath(n.settings.url),{csrfmiddlewaretoken:i.config.csrf,body:r,_save:"Save"},function(e){if(n.changed=!1,i.API.Toolbar.hideLoader(),void 0!==o&&o(n,e),n.child_changed){var r=t(e).find("script:not([src])").addClass("cms-ckeditor-result");i.CKEditor._destroyAll(),r.each(function(i,e){t("body").append(e)})}else i.CKEditor.loadToolbar()}).fail(function(t){n.changed=!0,i.API.Messages.open({message:t.message,error:!0})})}},loadToolbar:function(){i.API.StructureBoard._loadToolbar().done(function(e){i.API.Toolbar._refreshMarkup(t(e).find(".cms-toolbar"))}).fail(i.API.Helpers.reloadBrowser)},storeCSSlinks:function(){t("link[rel='stylesheet'][type='text/css'][href*='ckeditor']").each(function(t,e){i.CKEditor.CSS.includes(e.href)||i.CKEditor.CSS.push(e.href)})},setupAdmin:function(e){var o=this,n=window.parent||window;this._isAloneInModal(i.CKEditor.editors[e.id].container)&&(e.resize("100%",n.CMS.$(".cms-modal-frame").height()-70),e.execCommand("maximize"),t(window).on("resize.ckeditor",function(){o._repositionDialog(CKEDITOR.dialog.getCurrent(),n)}).trigger("resize.ckeditor"),n.CMS.API.Helpers.addEventListener("modal-maximized modal-restored",function(){try{t(".cke_maximized").length||(e.resize("100%",n.CMS.$(".cms-modal-frame").height()-70),setTimeout(function(){o._repositionDialog(CKEDITOR.dialog.getCurrent(),n)},0))}catch(t){}})),this.styles(),this._resizing()},styles:function(){t(".cke_button__maximize, .cke_button__source").parent().css("margin-right",0).parent().css("float","right")},_resizing:function(){t(document).on("pointerdown",".cms-ckeditor-resizer",function(e){e.preventDefault();var o=new i.$.Event("mousedown");t.extend(o,{screenX:e.originalEvent.screenX,screenY:e.originalEvent.screenY}),t(this).trigger(o)})},_isAloneInModal:function(t){return t.closest("body").is(".app-djangocms_text_ckeditor.model-text")},_repositionDialog:function(t){if(t){var i=t.getSize(),e=t.getPosition(),o=CKEDITOR.document.getWindow(),n=o.getViewPaneSize(),r=n.width,d=n.height;e.x<0&&(t.move(0,e.y),e.x=0),e.y<0&&(t.move(e.x,0),e.y=0),e.y+i.height>d&&t.resize(i.width,d-e.y-80),e.x+i.width>r&&t.resize(r-e.x,i.height)}},initAdminEditors:function(){window._cmsCKEditors=window._cmsCKEditors||[];var e,o,n=[];window._cmsCKEditors.forEach(function(t){var r="ck-cfg-"+(t[1]?t[1]:t[0]);e=JSON.parse(document.getElementById(r).textContent),o=e.options,delete e.options,t[0].match(/__prefix__/)?n.push(t):i.CKEditor.init(document.getElementById(t[0]),"admin",o,e,function(t){return i.CKEditor.setupAdmin(t.editor)})}),t(".add-row a").on("click",function(){t(".CMS_CKEditor").each(function(r,d){var s=t(d);if(!s.data("ckeditor-initialized")){var a=s.attr("id");n.forEach(function(t){var n=t[0].id,r=new RegExp(n.replace("__prefix__","\\d+"));a.match(r)&&i.CKEditor.init(document.getElementById(a),o,e)})}})})},_highlight_Textplugin:function(e){var o=t(".cms-draggable-"+e),n=t(document),r=n.data("expandmode");n.data("expandmode",!1),o.parents(".cms-draggable").find('> .cms-dragitem-collapsable:not(".cms-dragitem-expanded") > .cms-dragitem-text').each(function(e,o){t(o).triggerHandler(i.Plugin.click)}),o.length>0&&(setTimeout(function(){n.data("expandmode",r)}),setTimeout(function(){i.Plugin._highlightPluginStructure(o.find(".cms-dragitem:first"),{successTimeout:200,delay:2e3,seeThrough:!0})},10))},_initAll:function(){i.CKEditor.touchdevice="ontouchstart"in window||navigator.msMaxTouchPoints,i.CKEditor.touchdevice||i.CKEditor.initInlineEditors(),i.CKEditor.initAdminEditors()},_destroyAll:function(){for(var e in i.CKEditor.editors)i.CKEditor.editors.hasOwnProperty(e)&&(i.CKEditor.editors[e].editor.destroy(),t(i.CKEditor.editors[e].container).off(".cms-ckeditor"),delete i.CKEditor.editors[e]);t(window).off(".cms-ckeditor")},_resetInlineEditors:function(){i.CKEditor.CSS.forEach(function(i){0===t("link[href='"+i+"']").length&&t("head").append(t(""))}),i.CKEditor._destroyAll(),i.CKEditor._initAll()}},setTimeout(function(){i.CKEditor._initAll()},0),t(window).on("cms-content-refresh",i.CKEditor._resetInlineEditors)}(window.CMS.$,window.CMS); +!function(t,i){"use strict";window.CKEDITOR_BASEPATH=t("[data-ckeditor-basepath]").attr("data-ckeditor-basepath"),i.CKEditor={options:{language:"en",skin:"moono-lisa",toolbar_CMS:[["Undo","Redo"],["cmsplugins","cmswidget","-","ShowBlocks"],["Format","Styles"],["TextColor","BGColor","-","PasteText","PasteFromWord"],["Scayt"],["Maximize",""],"/",["Bold","Italic","Underline","Strike","-","Subscript","Superscript","-","RemoveFormat"],["JustifyLeft","JustifyCenter","JustifyRight","JustifyBlock"],["HorizontalRule"],["NumberedList","BulletedList"],["Outdent","Indent","-","Blockquote","-","Link","Unlink","-","Table"],["Source"]],toolbar_HTMLField:[["Undo","Redo"],["ShowBlocks"],["Format","Styles"],["TextColor","BGColor","-","PasteText","PasteFromWord"],["Scayt"],["Maximize",""],"/",["Bold","Italic","Underline","Strike","-","Subscript","Superscript","-","RemoveFormat"],["JustifyLeft","JustifyCenter","JustifyRight","JustifyBlock"],["HorizontalRule"],["Link","Unlink"],["NumberedList","BulletedList"],["Outdent","Indent","-","Blockqote","-","Link","Unlink","-","Table"],["Source"]],allowedContent:!0,toolbarCanCollapse:!1,removePlugins:"resize",extraPlugins:""},static_url:"/static/djangocms-text-ckeditor",CSS:[],editors:{},init:function(e,o,n,r,d){var s=t(e);s.data("ckeditor-initialized",!0),s.attr("contenteditable",!0),this.options.toolbar=r.toolbar,this.options=t.extend(!1,{settings:r},this.options,n),this.options.extraPlugins=this.options.extraPlugins+=",cmsplugins,cmswidget,cmsdialog,cmsresize,widget",document.createElement("cms-plugin"),CKEDITOR.dtd["cms-plugin"]=CKEDITOR.dtd.div,CKEDITOR.dtd.$inline["cms-plugin"]=1,CKEDITOR.dtd.$nonEditable["cms-plugin"]=1,CKEDITOR.dtd.$transparent["cms-plugin"]=1,CKEDITOR.dtd.body["cms-plugin"]=1,CKEDITOR.skin.addIcon("cmsplugins",r.static_url+"/ckeditor_plugins/cmsplugins/icons/cmsplugins.svg");var a;a="admin"===o?CKEDITOR.replace(s[0],this.options):CKEDITOR.inline(s[0],this.options),i.CKEditor.editors[a.id]={editor:a,options:n,settings:r,container:s,changed:!1,child_changed:!1},a.on("instanceReady",d)},initInlineEditors:function(){void 0!==i._plugins&&(i.CKEditor.observer=i.CKEditor.observer||new IntersectionObserver(function(e,o){e.forEach(function(e){if(e.isIntersecting){var o=t(e.target),n=o.data("cms_plugin_id"),r=o.data("cms_edit_url");i.CKEditor.startInlineEditor(n,r)}})},{root:null,threshold:.05}),i._plugins.forEach(function(e){if("TextPlugin"===e[1].plugin_type){var o,n=e[1].urls.edit_plugin,r=e[1].plugin_id,d=t(".cms-plugin.cms-plugin-"+r);d.length>0&&(1===d.length&&"DIV"===d.prop("tagName")?o=d.addClass("cms-ckeditor-inline-wrapper"):(o=d.wrapAll('
').parent(),d.removeClass("cms-plugin").removeClass("cms-plugin-"+r),o.addClass("cms-plugin").addClass("cms-plugin-"+r)),o.data("cms_edit_url",n),o.data("cms_plugin_id",r),o.on("dblclick.cms-ckeditor",function(t){t.stopPropagation()}),o.on("pointerover.cms-ckeditor",function(t){setTimeout(function(){i.API.Tooltip.displayToggle(!1,t.target,"",r)},0)}),i.CKEditor.observer.observe(o[0]))}}),t(window).on("beforeunload.cms-ckeditor",function(){for(var t in i.CKEditor.editors)if(i.CKEditor.editors.hasOwnProperty(t)&&i.CKEditor.editors[t].changed)return"Do you really want to leave this page?"}))},startInlineEditor:function(e,o){var n,r=JSON.parse(document.getElementById("ck-cfg-"+e).textContent),d=t(".cms-plugin.cms-plugin-"+e);d.data("ckeditor-initialized")||(r.plugin_id=e,r.url=o,n=r.options,delete r.options,i.CKEditor.init(d[0],"inline",n,r,function(t){t.editor.element.removeAttribute("title"),t.editor.on("change",function(){i.CKEditor.editors[t.editor.id].changed=!0}),d.on("blur.cms-ckeditor",function(){setTimeout(function(){document.activeElement.classList.contains("cke_panel_frame")||document.activeElement.classList.contains("cke_dialog_ui_button")||i.CKEditor.save_data(t.editor.id)},0)}),d.on("click.cms-ckeditor",function(){i.CKEditor._highlight_Textplugin(e)}),i.CKEditor.storeCSSlinks()}))},save_data:function(e,o){var n=i.CKEditor.editors[e];if(n&&n.changed){i.CKEditor.storeCSSlinks();var r=n.editor.getData();i.API.Toolbar.showLoader(),t.post(i.API.Helpers.updateUrlWithPath(n.settings.url),{csrfmiddlewaretoken:i.config.csrf,body:r,_save:"Save"},function(e){if(n.changed=!1,i.API.Toolbar.hideLoader(),void 0!==o&&o(n,e),n.child_changed){var r=t(e).find("script:not([src])").addClass("cms-ckeditor-result");i.CKEditor._destroyAll(),r.each(function(i,e){t("body").append(e)})}else i.CKEditor.loadToolbar()}).fail(function(t){n.changed=!0,i.API.Messages.open({message:t.message,error:!0})})}},loadToolbar:function(){i.API.StructureBoard._loadToolbar().done(function(e){i.API.Toolbar._refreshMarkup(t(e).find(".cms-toolbar"))}).fail(i.API.Helpers.reloadBrowser)},storeCSSlinks:function(){t("link[rel='stylesheet'][type='text/css'][href*='ckeditor']").each(function(t,e){i.CKEditor.CSS.includes(e.href)||i.CKEditor.CSS.push(e.href)})},setupAdmin:function(e){var o=this,n=window.parent||window;this._isAloneInModal(i.CKEditor.editors[e.id].container)&&(e.resize("100%",n.CMS.$(".cms-modal-frame").height()-70),e.execCommand("maximize"),t(window).on("resize.ckeditor",function(){o._repositionDialog(CKEDITOR.dialog.getCurrent(),n)}).trigger("resize.ckeditor"),n.CMS.API.Helpers.addEventListener("modal-maximized modal-restored",function(){try{t(".cke_maximized").length||(e.resize("100%",n.CMS.$(".cms-modal-frame").height()-70),setTimeout(function(){o._repositionDialog(CKEDITOR.dialog.getCurrent(),n)},0))}catch(t){}})),this.styles(),this._resizing()},styles:function(){t(".cke_button__maximize, .cke_button__source").parent().css("margin-right",0).parent().css("float","right")},_resizing:function(){t(document).on("pointerdown",".cms-ckeditor-resizer",function(e){e.preventDefault();var o=new i.$.Event("mousedown");t.extend(o,{screenX:e.originalEvent.screenX,screenY:e.originalEvent.screenY}),t(this).trigger(o)})},_isAloneInModal:function(t){return t.closest("body").is(".app-djangocms_text_ckeditor.model-text")},_repositionDialog:function(t){if(t){var i=t.getSize(),e=t.getPosition(),o=CKEDITOR.document.getWindow(),n=o.getViewPaneSize(),r=n.width,d=n.height;e.x<0&&(t.move(0,e.y),e.x=0),e.y<0&&(t.move(e.x,0),e.y=0),e.y+i.height>d&&t.resize(i.width,d-e.y-80),e.x+i.width>r&&t.resize(r-e.x,i.height)}},initAdminEditors:function(){window._cmsCKEditors=window._cmsCKEditors||[];var e,o,n=[];window._cmsCKEditors.forEach(function(t){var r="ck-cfg-"+(t[1]?t[1]:t[0]);e=JSON.parse(document.getElementById(r).textContent),o=e.options,delete e.options,t[0].match(/__prefix__/)?n.push(t):i.CKEditor.init(document.getElementById(t[0]),"admin",o,e,function(t){return i.CKEditor.setupAdmin(t.editor)})}),t(".add-row a").on("click",function(){t(".CMS_CKEditor").each(function(r,d){var s=t(d);if(!s.data("ckeditor-initialized")){var a=s.attr("id");n.forEach(function(t){var n=t[0].id,r=new RegExp(n.replace("__prefix__","\\d+"));a.match(r)&&i.CKEditor.init(document.getElementById(a),o,e)})}})})},_highlight_Textplugin:function(e){var o=t(".cms-draggable-"+e),n=t(document),r=n.data("expandmode");n.data("expandmode",!1),o.parents(".cms-draggable").find('> .cms-dragitem-collapsable:not(".cms-dragitem-expanded") > .cms-dragitem-text').each(function(e,o){t(o).triggerHandler(i.Plugin.click)}),o.length>0&&(setTimeout(function(){n.data("expandmode",r)}),setTimeout(function(){i.Plugin._highlightPluginStructure(o.find(".cms-dragitem:first"),{successTimeout:200,delay:2e3,seeThrough:!0})},10))},_initAll:function(){i.CKEditor.touchdevice="ontouchstart"in window||navigator.msMaxTouchPoints,i.CKEditor.touchdevice||i.CKEditor.initInlineEditors(),i.CKEditor.initAdminEditors()},_destroyAll:function(){for(var e in i.CKEditor.editors)i.CKEditor.editors.hasOwnProperty(e)&&(i.CKEditor.editors[e].editor.destroy(),t(i.CKEditor.editors[e].container).off(".cms-ckeditor"),delete i.CKEditor.editors[e]);t(window).off(".cms-ckeditor")},_resetInlineEditors:function(){i.CKEditor.CSS.forEach(function(i){0===t("link[href='"+i+"']").length&&t("head").append(t(""))}),i.CKEditor._destroyAll(),i.CKEditor._initAll()}},setTimeout(function(){i.CKEditor._initAll()},0),t(window).on("cms-content-refresh",i.CKEditor._resetInlineEditors)}(window.CMS.$,window.CMS); /* Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license/ @@ -1385,7 +1385,7 @@ Q={37:1,38:1,39:1,40:1,8:1,46:1};Q[CKEDITOR.SHIFT+121]=1;var u=CKEDITOR.tools.cr p,r,q;b.setHtml('\x3cspan data-cke-copybin-start\x3d"1"\x3e​\x3c/span\x3e'+a+'\x3cspan data-cke-copybin-end\x3d"1"\x3e​\x3c/span\x3e');c.fire("lockSnapshot");d.append(b);c.editable().append(d);p=c.on("selectionChange",K,null,null,0);r=c.widgets.on("checkSelection",K,null,null,0);e&&(q=f.scrollTop);g.selectNodeContents(b);g.select();e&&(f.scrollTop=q);return new CKEDITOR.tools.promise(function(a){m(function(){h.beforeDestroy&&h.beforeDestroy();d.remove();p.removeListener();r.removeListener();c.fire("unlockSnapshot"); h.afterDestroy&&h.afterDestroy();a()},n)})}},statics:{hasCopyBin:function(a){return!!u.getCopyBin(a)},getCopyBin:function(a){return a.document.getById("cke_copybin")}}});CKEDITOR.plugins.widget=h;h.repository=q;h.nestedEditable=t})();CKEDITOR.config.widget_keystrokeInsertLineBefore=CKEDITOR.SHIFT+CKEDITOR.ALT+13;CKEDITOR.config.widget_keystrokeInsertLineAfter=CKEDITOR.SHIFT+13;CKEDITOR.config.plugins='dialogui,dialog,about,a11yhelp,dialogadvtab,basicstyles,bidi,blockquote,notification,button,toolbar,clipboard,panelbutton,panel,floatpanel,colorbutton,colordialog,xml,ajax,templates,menu,contextmenu,copyformatting,div,resize,elementspath,enterkey,entities,popup,filetools,filebrowser,find,floatingspace,listblock,richcombo,font,fakeobjects,forms,format,horizontalrule,htmlwriter,iframe,wysiwygarea,image,indent,indentblock,indentlist,smiley,justify,menubutton,language,link,list,liststyle,magicline,maximize,newpage,pagebreak,pastetext,pastetools,pastefromword,preview,print,removeformat,save,selectall,showblocks,showborders,sourcearea,specialchar,scayt,stylescombo,tab,table,tabletools,undo,wsc,lineutils,widgetselection,widget';CKEDITOR.config.skin='moono-lisa';(function() {var setIcons = function(icons, strip) {var path = CKEDITOR.getUrl( 'plugins/' + strip );icons = icons.split( ',' );for ( var i = 0; i < icons.length; i++ )CKEDITOR.skin.icons[ icons[ i ] ] = { path: path, offset: -icons[ ++i ], bgsize : icons[ ++i ] };};if (CKEDITOR.env.hidpi) setIcons('about,0,,bold,24,,italic,48,,strike,72,,subscript,96,,superscript,120,,underline,144,,bidiltr,168,,bidirtl,192,,blockquote,216,,copy-rtl,240,,copy,264,,cut-rtl,288,,cut,312,,paste-rtl,336,,paste,360,,bgcolor,384,,textcolor,408,,templates-rtl,432,,templates,456,,copyformatting,480,,creatediv,504,,find-rtl,528,,find,552,,replace,576,,button,600,,checkbox,624,,form,648,,hiddenfield,672,,imagebutton,696,,radio,720,,select-rtl,744,,select,768,,textarea-rtl,792,,textarea,816,,textfield-rtl,840,,textfield,864,,horizontalrule,888,,iframe,912,,image,936,,indent-rtl,960,,indent,984,,outdent-rtl,1008,,outdent,1032,,smiley,1056,,justifyblock,1080,,justifycenter,1104,,justifyleft,1128,,justifyright,1152,,language,1176,,anchor-rtl,1200,,anchor,1224,,link,1248,,unlink,1272,,bulletedlist-rtl,1296,,bulletedlist,1320,,numberedlist-rtl,1344,,numberedlist,1368,,maximize,1392,,newpage-rtl,1416,,newpage,1440,,pagebreak-rtl,1464,,pagebreak,1488,,pastetext-rtl,1512,,pastetext,1536,,pastefromword-rtl,1560,,pastefromword,1584,,preview-rtl,1608,,preview,1632,,print,1656,,removeformat,1680,,save,1704,,selectall,1728,,showblocks-rtl,1752,,showblocks,1776,,source-rtl,1800,,source,1824,,specialchar,1848,,scayt,1872,,table,1896,,redo-rtl,1920,,redo,1944,,undo-rtl,1968,,undo,1992,,spellchecker,2016,','icons_hidpi.png');else setIcons('about,0,auto,bold,24,auto,italic,48,auto,strike,72,auto,subscript,96,auto,superscript,120,auto,underline,144,auto,bidiltr,168,auto,bidirtl,192,auto,blockquote,216,auto,copy-rtl,240,auto,copy,264,auto,cut-rtl,288,auto,cut,312,auto,paste-rtl,336,auto,paste,360,auto,bgcolor,384,auto,textcolor,408,auto,templates-rtl,432,auto,templates,456,auto,copyformatting,480,auto,creatediv,504,auto,find-rtl,528,auto,find,552,auto,replace,576,auto,button,600,auto,checkbox,624,auto,form,648,auto,hiddenfield,672,auto,imagebutton,696,auto,radio,720,auto,select-rtl,744,auto,select,768,auto,textarea-rtl,792,auto,textarea,816,auto,textfield-rtl,840,auto,textfield,864,auto,horizontalrule,888,auto,iframe,912,auto,image,936,auto,indent-rtl,960,auto,indent,984,auto,outdent-rtl,1008,auto,outdent,1032,auto,smiley,1056,auto,justifyblock,1080,auto,justifycenter,1104,auto,justifyleft,1128,auto,justifyright,1152,auto,language,1176,auto,anchor-rtl,1200,auto,anchor,1224,auto,link,1248,auto,unlink,1272,auto,bulletedlist-rtl,1296,auto,bulletedlist,1320,auto,numberedlist-rtl,1344,auto,numberedlist,1368,auto,maximize,1392,auto,newpage-rtl,1416,auto,newpage,1440,auto,pagebreak-rtl,1464,auto,pagebreak,1488,auto,pastetext-rtl,1512,auto,pastetext,1536,auto,pastefromword-rtl,1560,auto,pastefromword,1584,auto,preview-rtl,1608,auto,preview,1632,auto,print,1656,auto,removeformat,1680,auto,save,1704,auto,selectall,1728,auto,showblocks-rtl,1752,auto,showblocks,1776,auto,source-rtl,1800,auto,source,1824,auto,specialchar,1848,auto,scayt,1872,auto,table,1896,auto,redo-rtl,1920,auto,redo,1944,auto,undo-rtl,1968,auto,undo,1992,auto,spellchecker,2016,auto','icons.png');})();CKEDITOR.lang.languages={"af":1,"sq":1,"ar":1,"az":1,"eu":1,"bn":1,"bs":1,"bg":1,"ca":1,"zh-cn":1,"zh":1,"hr":1,"cs":1,"da":1,"nl":1,"en":1,"en-au":1,"en-ca":1,"en-gb":1,"eo":1,"et":1,"fo":1,"fi":1,"fr":1,"fr-ca":1,"gl":1,"ka":1,"de":1,"de-ch":1,"el":1,"gu":1,"he":1,"hi":1,"hu":1,"is":1,"id":1,"it":1,"ja":1,"km":1,"ko":1,"ku":1,"lv":1,"lt":1,"mk":1,"ms":1,"mn":1,"no":1,"nb":1,"oc":1,"fa":1,"pl":1,"pt-br":1,"pt":1,"ro":1,"ru":1,"sr":1,"sr-latn":1,"si":1,"sk":1,"sl":1,"es":1,"sv":1,"tt":1,"th":1,"tr":1,"ug":1,"uk":1,"vi":1,"cy":1};}()); -!function(e){function n(e){var n=e.widgets.focused;if(n&&"cmswidget"===n.name)return n;if((n=e.widgets.selected)&&n.length){var i=n.findIndex(function(e){return"cmswidget"===e.name});if(-1!==i)return n[i]}return null}function i(e){return!!e.inline&&!CMS.$(e.wrapper.$).hasClass("cke_widget_wrapper_force_block")}if(!(CKEDITOR&&CKEDITOR.plugins&&CKEDITOR.plugins.registered&&CKEDITOR.plugins.registered.cmswidget)){var t=function(e){var t=[];return function(r){var c=e.getCommand("justify"+r);c&&(t.push(function(){c.refresh(e,e.elementPath())}),c.on("exec",function(r){var c=n(e);if(c){if(!i(c)){for(var l=t.length;l--;)t[l]();r.cancel()}}}),c.on("refresh",function(t){var r=n(e);if(r){i(r)||(this.setState(CKEDITOR.TRISTATE_DISABLED),t.cancel())}}))}};CKEDITOR.plugins.add("cmswidget",{requires:"widget",onLoad:function(){CKEDITOR.addCss(".cke_widget_wrapper_force_block{display:block!important;}.cke_widget_block>.cke_widget_element{display:block!important;}span.cms-ckeditor-plugin-label{display: inline-block !important;padding-left: 8px;padding-right: 8px;}.cms-ckeditor-plugin-label{background: black;color: white;text-align: center;border-radius: 3px;height: 24px;line-height: 24px;font-size: 14px !important;}")},init:function(e){this.addWidgetDefinition(e)},afterInit:function(e){["left","right","center","block"].forEach(t(e))},addWidgetDefinition:function(n){n.widgets.add("cmswidget",{button:"CMS Plugin",template:'',allowedContent:"cms-plugin",disallowedContent:"cms-plugin{float}",requiredContent:"cms-plugin",upcast:function(e){return"cms-plugin"===e.name},init:function(){e(this.element.$).children().css("display").includes("inline")||this.wrapper.addClass("cke_widget_wrapper_force_block")}})}})}}(CMS.$); +!function(e){function n(e){var n=e.widgets.focused;if(n&&"cmswidget"===n.name)return n;if((n=e.widgets.selected)&&n.length){var i=n.findIndex(function(e){return"cmswidget"===e.name});if(-1!==i)return n[i]}return null}function i(e){return!!e.inline&&!CMS.$(e.wrapper.$).hasClass("cke_widget_wrapper_force_block")}if(!(CKEDITOR&&CKEDITOR.plugins&&CKEDITOR.plugins.registered&&CKEDITOR.plugins.registered.cmswidget)){var t=function(e){var t=[];return function(r){var c=e.getCommand("justify"+r);c&&(t.push(function(){c.refresh(e,e.elementPath())}),c.on("exec",function(r){var c=n(e);if(c){if(!i(c)){for(var l=t.length;l--;)t[l]();r.cancel()}}}),c.on("refresh",function(t){var r=n(e);if(r){i(r)||(this.setState(CKEDITOR.TRISTATE_DISABLED),t.cancel())}}))}};CKEDITOR.plugins.add("cmswidget",{requires:"widget",onLoad:function(){CKEDITOR.addCss(".cke_widget_wrapper_force_block{display:block!important;}.cke_widget_block>.cke_widget_element{display:block!important;}span.cms-ckeditor-plugin-label{display: inline-block !important;padding-left: 8px;padding-right: 8px;}.cms-ckeditor-plugin-label{background: black;color: white;text-align: center;border-radius: 3px;height: 24px;line-height: 24px;font-size: 14px !important;}")},init:function(e){this.addWidgetDefinition(e)},afterInit:function(e){["left","right","center","block"].forEach(t(e))},addWidgetDefinition:function(n){n.widgets.add("cmswidget",{button:"CMS Plugin",template:'',allowedContent:"cms-plugin",disallowedContent:"cms-plugin{float}",requiredContent:"cms-plugin",upcast:function(e){return"cms-plugin"===e.name},init:function(){(e(this.element.$).children().css("display")||"").includes("inline")||this.wrapper.addClass("cke_widget_wrapper_force_block")}})}})}}(CMS.$); !function(t){if(!(CKEDITOR&&CKEDITOR.plugins&&CKEDITOR.plugins.registered&&CKEDITOR.plugins.registered.cmsdialog)){/** * Modified version of the dialog plugin to support touch events. * diff --git a/djangocms_text_ckeditor/widgets.py b/djangocms_text_ckeditor/widgets.py index dc0321bdf..245a44c83 100644 --- a/djangocms_text_ckeditor/widgets.py +++ b/djangocms_text_ckeditor/widgets.py @@ -16,7 +16,7 @@ # this path is changed automatically whenever you run `gulp bundle` -PATH_TO_JS = 'djangocms_text_ckeditor/js/dist/bundle-11200553a7.cms.ckeditor.min.js' +PATH_TO_JS = 'djangocms_text_ckeditor/js/dist/bundle-1c5205cc04.cms.ckeditor.min.js' class TextEditorWidget(forms.Textarea):