From 44f4e051c5ffae896bb62502d1ada83036d9750c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8F=99=E8=BF=B0=E3=80=81=E5=88=AB=E7=A6=BB?= <93301500+xushubieli@users.noreply.github.com> Date: Sat, 8 Feb 2025 11:52:35 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AF=8C=E6=96=87=E6=9C=AC=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=E5=85=A8=E5=BC=80=EF=BC=8C=E5=8F=AA=E5=81=9A=E7=AE=80=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../plugins/a11yhelp/dialogs/a11yhelp.js | 10 + .../dialogs/lang/_translationstatus.txt | 25 + .../plugins/a11yhelp/dialogs/lang/zh-cn.js | 9 + .../ckeditor/plugins/about/dialogs/about.js | 8 + .../about/dialogs/hidpi/logo_ckeditor.png | Bin 0 -> 12236 bytes .../plugins/about/dialogs/logo_ckeditor.png | Bin 0 -> 5650 bytes .../ckeditor/plugins/adobeair/plugin.js | 9 + .../ckeditor/plugins/autocomplete/plugin.js | 21 + .../plugins/autocomplete/skins/default.css | 38 + .../ckeditor/plugins/autoembed/lang/zh-cn.js | 1 + .../ckeditor/plugins/autoembed/plugin.js | 9 + .../ckeditor/plugins/autogrow/plugin.js | 8 + .../ckeditor/plugins/autolink/plugin.js | 8 + .../ckeditor/plugins/balloonpanel/plugin.js | 22 + .../balloonpanel/skins/kama/balloonpanel.css | 220 ++ .../skins/moono-lisa/balloonpanel.css | 223 ++ .../skins/moono-lisa/images/close.png | Bin 0 -> 615 bytes .../skins/moono-lisa/images/hidpi/close.png | Bin 0 -> 1259 bytes .../balloonpanel/skins/moono/balloonpanel.css | 237 ++ .../balloonpanel/skins/moono/images/close.png | Bin 0 -> 824 bytes .../skins/moono/images/hidpi/close.png | Bin 0 -> 1271 bytes .../ckeditor/plugins/balloontoolbar/plugin.js | 20 + .../plugins/balloontoolbar/skins/default.css | 95 + .../skins/kama/balloontoolbar.css | 30 + .../skins/moono-lisa/balloontoolbar.css | 44 + .../skins/moono/balloontoolbar.css | 34 + src/static/ckeditor/plugins/bbcode/plugin.js | 23 + .../ckeditor/plugins/cloudservices/plugin.js | 7 + .../plugins/codesnippet/lang/zh-cn.js | 2 +- .../plugins/codesnippetgeshi/plugin.js | 10 + .../copyformatting/styles/copyformatting.css | 2 +- .../ckeditor/plugins/ddfilebrowser/plugin.js | 2 +- .../devtools/lang/_translationstatus.txt | 27 + .../ckeditor/plugins/devtools/lang/zh-cn.js | 5 + .../ckeditor/plugins/devtools/plugin.js | 9 + .../ckeditor/plugins/div/dialogs/div.js | 10 + src/static/ckeditor/plugins/divarea/plugin.js | 5 + .../plugins/docprops/dialogs/docprops.js | 25 + .../plugins/docprops/icons/docprops-rtl.png | Bin 0 -> 543 bytes .../plugins/docprops/icons/docprops.png | Bin 0 -> 549 bytes .../docprops/icons/hidpi/docprops-rtl.png | Bin 0 -> 1060 bytes .../plugins/docprops/icons/hidpi/docprops.png | Bin 0 -> 1017 bytes .../ckeditor/plugins/docprops/lang/zh-cn.js | 2 + .../ckeditor/plugins/docprops/plugin.js | 6 + .../plugins/easyimage/dialogs/easyimagealt.js | 6 + .../easyimage/icons/easyimagealigncenter.png | Bin 0 -> 155 bytes .../easyimage/icons/easyimagealignleft.png | Bin 0 -> 152 bytes .../easyimage/icons/easyimagealignright.png | Bin 0 -> 149 bytes .../plugins/easyimage/icons/easyimagealt.png | Bin 0 -> 545 bytes .../plugins/easyimage/icons/easyimagefull.png | Bin 0 -> 147 bytes .../plugins/easyimage/icons/easyimageside.png | Bin 0 -> 149 bytes .../easyimage/icons/easyimageupload.png | Bin 0 -> 498 bytes .../icons/hidpi/easyimagealigncenter.png | Bin 0 -> 350 bytes .../icons/hidpi/easyimagealignleft.png | Bin 0 -> 339 bytes .../icons/hidpi/easyimagealignright.png | Bin 0 -> 299 bytes .../easyimage/icons/hidpi/easyimagealt.png | Bin 0 -> 1290 bytes .../easyimage/icons/hidpi/easyimagefull.png | Bin 0 -> 253 bytes .../easyimage/icons/hidpi/easyimageside.png | Bin 0 -> 299 bytes .../easyimage/icons/hidpi/easyimageupload.png | Bin 0 -> 905 bytes .../ckeditor/plugins/easyimage/lang/en.js | 5 + .../ckeditor/plugins/easyimage/plugin.js | 19 + .../plugins/easyimage/styles/easyimage.css | 118 + .../ckeditor/plugins/embedbase/lang/zh-cn.js | 2 +- .../ckeditor/plugins/flash/dialogs/flash.js | 24 + .../plugins/flash/images/placeholder.png | Bin 0 -> 256 bytes .../ckeditor/plugins/forms/dialogs/button.js | 8 + .../plugins/forms/dialogs/checkbox.js | 9 + .../ckeditor/plugins/forms/dialogs/form.js | 8 + .../plugins/forms/dialogs/hiddenfield.js | 7 + .../ckeditor/plugins/forms/dialogs/radio.js | 9 + .../ckeditor/plugins/forms/dialogs/select.js | 21 + .../plugins/forms/dialogs/textarea.js | 9 + .../plugins/forms/dialogs/textfield.js | 11 + .../plugins/forms/images/hiddenfield.gif | Bin 0 -> 178 bytes .../ckeditor/plugins/iframe/dialogs/iframe.js | 11 + .../plugins/iframe/images/placeholder.png | Bin 0 -> 265 bytes .../ckeditor/plugins/iframedialog/plugin.js | 8 + .../ckeditor/plugins/image/dialogs/image.js | 2587 ++++++++--------- .../plugins/mathjax/dialogs/mathjax.js | 7 + .../plugins/mathjax/icons/hidpi/mathjax.png | Bin 0 -> 1437 bytes .../plugins/mathjax/icons/mathjax.png | Bin 0 -> 703 bytes .../plugins/mathjax/images/loader.gif | Bin 0 -> 784 bytes .../ckeditor/plugins/mathjax/lang/zh-cn.js | 1 + src/static/ckeditor/plugins/mathjax/plugin.js | 15 + .../ckeditor/plugins/mentions/plugin.js | 9 + .../plugins/pastefromgdocs/filter/default.js | 2 +- .../pastefromlibreoffice/filter/default.js | 2 +- .../plugins/pastefromword/filter/default.js | 79 +- .../plugins/pastetools/filter/common.js | 40 +- .../plugins/pastetools/filter/image.js | 12 +- .../plugins/preview/images/pagebreak.gif | Bin 0 -> 99 bytes .../ckeditor/plugins/preview/preview.html | 13 + .../plugins/preview/styles/screen.css | 10 + .../ckeditor/plugins/scayt/CHANGELOG.md | 4 + src/static/ckeditor/plugins/scayt/LICENSE.md | 28 + src/static/ckeditor/plugins/scayt/README.md | 81 + .../ckeditor/plugins/scayt/dialogs/dialog.css | 23 + .../ckeditor/plugins/scayt/dialogs/options.js | 32 + .../plugins/scayt/dialogs/toolbar.css | 71 + .../plugins/scayt/skins/moono-lisa/scayt.css | 25 + .../ckeditor/plugins/sharedspace/plugin.js | 7 + .../showblocks/images/block_address.png | Bin 0 -> 152 bytes .../showblocks/images/block_blockquote.png | Bin 0 -> 154 bytes .../plugins/showblocks/images/block_div.png | Bin 0 -> 127 bytes .../plugins/showblocks/images/block_h1.png | Bin 0 -> 120 bytes .../plugins/showblocks/images/block_h2.png | Bin 0 -> 127 bytes .../plugins/showblocks/images/block_h3.png | Bin 0 -> 123 bytes .../plugins/showblocks/images/block_h4.png | Bin 0 -> 123 bytes .../plugins/showblocks/images/block_h5.png | Bin 0 -> 126 bytes .../plugins/showblocks/images/block_h6.png | Bin 0 -> 123 bytes .../plugins/showblocks/images/block_p.png | Bin 0 -> 115 bytes .../plugins/showblocks/images/block_pre.png | Bin 0 -> 128 bytes .../ckeditor/plugins/smiley/dialogs/smiley.js | 11 + .../plugins/smiley/images/angel_smile.gif | Bin 0 -> 1245 bytes .../plugins/smiley/images/angel_smile.png | Bin 0 -> 1172 bytes .../plugins/smiley/images/angry_smile.gif | Bin 0 -> 1219 bytes .../plugins/smiley/images/angry_smile.png | Bin 0 -> 1220 bytes .../plugins/smiley/images/broken_heart.gif | Bin 0 -> 732 bytes .../plugins/smiley/images/broken_heart.png | Bin 0 -> 1139 bytes .../plugins/smiley/images/confused_smile.gif | Bin 0 -> 1202 bytes .../plugins/smiley/images/confused_smile.png | Bin 0 -> 1101 bytes .../plugins/smiley/images/cry_smile.gif | Bin 0 -> 795 bytes .../plugins/smiley/images/cry_smile.png | Bin 0 -> 1214 bytes .../plugins/smiley/images/devil_smile.gif | Bin 0 -> 1239 bytes .../plugins/smiley/images/devil_smile.png | Bin 0 -> 1220 bytes .../smiley/images/embaressed_smile.gif | Bin 0 -> 786 bytes .../smiley/images/embarrassed_smile.gif | Bin 0 -> 786 bytes .../smiley/images/embarrassed_smile.png | Bin 0 -> 1145 bytes .../plugins/smiley/images/envelope.gif | Bin 0 -> 506 bytes .../plugins/smiley/images/envelope.png | Bin 0 -> 760 bytes .../ckeditor/plugins/smiley/images/heart.gif | Bin 0 -> 692 bytes .../ckeditor/plugins/smiley/images/heart.png | Bin 0 -> 999 bytes .../ckeditor/plugins/smiley/images/kiss.gif | Bin 0 -> 683 bytes .../ckeditor/plugins/smiley/images/kiss.png | Bin 0 -> 1003 bytes .../plugins/smiley/images/lightbulb.gif | Bin 0 -> 660 bytes .../plugins/smiley/images/lightbulb.png | Bin 0 -> 919 bytes .../plugins/smiley/images/omg_smile.gif | Bin 0 -> 820 bytes .../plugins/smiley/images/omg_smile.png | Bin 0 -> 1122 bytes .../plugins/smiley/images/regular_smile.gif | Bin 0 -> 1209 bytes .../plugins/smiley/images/regular_smile.png | Bin 0 -> 1084 bytes .../plugins/smiley/images/sad_smile.gif | Bin 0 -> 782 bytes .../plugins/smiley/images/sad_smile.png | Bin 0 -> 1115 bytes .../plugins/smiley/images/shades_smile.gif | Bin 0 -> 1231 bytes .../plugins/smiley/images/shades_smile.png | Bin 0 -> 1204 bytes .../plugins/smiley/images/teeth_smile.gif | Bin 0 -> 1201 bytes .../plugins/smiley/images/teeth_smile.png | Bin 0 -> 1183 bytes .../plugins/smiley/images/thumbs_down.gif | Bin 0 -> 715 bytes .../plugins/smiley/images/thumbs_down.png | Bin 0 -> 985 bytes .../plugins/smiley/images/thumbs_up.gif | Bin 0 -> 714 bytes .../plugins/smiley/images/thumbs_up.png | Bin 0 -> 959 bytes .../plugins/smiley/images/tongue_smile.gif | Bin 0 -> 1210 bytes .../plugins/smiley/images/tongue_smile.png | Bin 0 -> 1132 bytes .../plugins/smiley/images/tounge_smile.gif | Bin 0 -> 1210 bytes .../images/whatchutalkingabout_smile.gif | Bin 0 -> 775 bytes .../images/whatchutalkingabout_smile.png | Bin 0 -> 1039 bytes .../plugins/smiley/images/wink_smile.gif | Bin 0 -> 1202 bytes .../plugins/smiley/images/wink_smile.png | Bin 0 -> 1114 bytes .../sourcedialog/dialogs/sourcedialog.js | 6 + .../icons/hidpi/sourcedialog-rtl.png | Bin 0 -> 1018 bytes .../sourcedialog/icons/hidpi/sourcedialog.png | Bin 0 -> 1041 bytes .../sourcedialog/icons/sourcedialog-rtl.png | Bin 0 -> 565 bytes .../sourcedialog/icons/sourcedialog.png | Bin 0 -> 571 bytes .../plugins/sourcedialog/lang/zh-cn.js | 1 + .../ckeditor/plugins/sourcedialog/plugin.js | 6 + .../plugins/specialchar/dialogs/lang/en-au.js | 13 - .../plugins/specialchar/dialogs/lang/en-ca.js | 13 - .../plugins/specialchar/dialogs/lang/en-gb.js | 13 - .../plugins/specialchar/dialogs/lang/en.js | 13 - .../plugins/specialchar/dialogs/lang/zh.js | 9 - .../plugins/stylesheetparser/plugin.js | 7 + .../plugins/templates/dialogs/templates.css | 84 + .../plugins/templates/dialogs/templates.js | 11 + .../plugins/templates/templatedefinition.js | 4 + .../plugins/templates/templates/default.js | 7 + .../templates/templates/images/template1.gif | Bin 0 -> 539 bytes .../templates/templates/images/template2.gif | Bin 0 -> 497 bytes .../templates/templates/images/template3.gif | Bin 0 -> 557 bytes .../plugins/uicolor/dialogs/uicolor.css | 20 + .../plugins/uicolor/dialogs/uicolor.js | 17 + .../plugins/uicolor/icons/hidpi/uicolor.png | Bin 0 -> 1817 bytes .../plugins/uicolor/icons/uicolor.png | Bin 0 -> 954 bytes .../uicolor/lang/_translationstatus.txt | 27 + .../ckeditor/plugins/uicolor/lang/zh-cn.js | 5 + src/static/ckeditor/plugins/uicolor/plugin.js | 6 + 184 files changed, 3379 insertions(+), 1423 deletions(-) create mode 100644 src/static/ckeditor/plugins/a11yhelp/dialogs/a11yhelp.js create mode 100644 src/static/ckeditor/plugins/a11yhelp/dialogs/lang/_translationstatus.txt create mode 100644 src/static/ckeditor/plugins/a11yhelp/dialogs/lang/zh-cn.js create mode 100644 src/static/ckeditor/plugins/about/dialogs/about.js create mode 100644 src/static/ckeditor/plugins/about/dialogs/hidpi/logo_ckeditor.png create mode 100644 src/static/ckeditor/plugins/about/dialogs/logo_ckeditor.png create mode 100644 src/static/ckeditor/plugins/adobeair/plugin.js create mode 100644 src/static/ckeditor/plugins/autocomplete/plugin.js create mode 100644 src/static/ckeditor/plugins/autocomplete/skins/default.css create mode 100644 src/static/ckeditor/plugins/autoembed/lang/zh-cn.js create mode 100644 src/static/ckeditor/plugins/autoembed/plugin.js create mode 100644 src/static/ckeditor/plugins/autogrow/plugin.js create mode 100644 src/static/ckeditor/plugins/autolink/plugin.js create mode 100644 src/static/ckeditor/plugins/balloonpanel/plugin.js create mode 100644 src/static/ckeditor/plugins/balloonpanel/skins/kama/balloonpanel.css create mode 100644 src/static/ckeditor/plugins/balloonpanel/skins/moono-lisa/balloonpanel.css create mode 100644 src/static/ckeditor/plugins/balloonpanel/skins/moono-lisa/images/close.png create mode 100644 src/static/ckeditor/plugins/balloonpanel/skins/moono-lisa/images/hidpi/close.png create mode 100644 src/static/ckeditor/plugins/balloonpanel/skins/moono/balloonpanel.css create mode 100644 src/static/ckeditor/plugins/balloonpanel/skins/moono/images/close.png create mode 100644 src/static/ckeditor/plugins/balloonpanel/skins/moono/images/hidpi/close.png create mode 100644 src/static/ckeditor/plugins/balloontoolbar/plugin.js create mode 100644 src/static/ckeditor/plugins/balloontoolbar/skins/default.css create mode 100644 src/static/ckeditor/plugins/balloontoolbar/skins/kama/balloontoolbar.css create mode 100644 src/static/ckeditor/plugins/balloontoolbar/skins/moono-lisa/balloontoolbar.css create mode 100644 src/static/ckeditor/plugins/balloontoolbar/skins/moono/balloontoolbar.css create mode 100644 src/static/ckeditor/plugins/bbcode/plugin.js create mode 100644 src/static/ckeditor/plugins/cloudservices/plugin.js create mode 100644 src/static/ckeditor/plugins/codesnippetgeshi/plugin.js create mode 100644 src/static/ckeditor/plugins/devtools/lang/_translationstatus.txt create mode 100644 src/static/ckeditor/plugins/devtools/lang/zh-cn.js create mode 100644 src/static/ckeditor/plugins/devtools/plugin.js create mode 100644 src/static/ckeditor/plugins/div/dialogs/div.js create mode 100644 src/static/ckeditor/plugins/divarea/plugin.js create mode 100644 src/static/ckeditor/plugins/docprops/dialogs/docprops.js create mode 100644 src/static/ckeditor/plugins/docprops/icons/docprops-rtl.png create mode 100644 src/static/ckeditor/plugins/docprops/icons/docprops.png create mode 100644 src/static/ckeditor/plugins/docprops/icons/hidpi/docprops-rtl.png create mode 100644 src/static/ckeditor/plugins/docprops/icons/hidpi/docprops.png create mode 100644 src/static/ckeditor/plugins/docprops/lang/zh-cn.js create mode 100644 src/static/ckeditor/plugins/docprops/plugin.js create mode 100644 src/static/ckeditor/plugins/easyimage/dialogs/easyimagealt.js create mode 100644 src/static/ckeditor/plugins/easyimage/icons/easyimagealigncenter.png create mode 100644 src/static/ckeditor/plugins/easyimage/icons/easyimagealignleft.png create mode 100644 src/static/ckeditor/plugins/easyimage/icons/easyimagealignright.png create mode 100644 src/static/ckeditor/plugins/easyimage/icons/easyimagealt.png create mode 100644 src/static/ckeditor/plugins/easyimage/icons/easyimagefull.png create mode 100644 src/static/ckeditor/plugins/easyimage/icons/easyimageside.png create mode 100644 src/static/ckeditor/plugins/easyimage/icons/easyimageupload.png create mode 100644 src/static/ckeditor/plugins/easyimage/icons/hidpi/easyimagealigncenter.png create mode 100644 src/static/ckeditor/plugins/easyimage/icons/hidpi/easyimagealignleft.png create mode 100644 src/static/ckeditor/plugins/easyimage/icons/hidpi/easyimagealignright.png create mode 100644 src/static/ckeditor/plugins/easyimage/icons/hidpi/easyimagealt.png create mode 100644 src/static/ckeditor/plugins/easyimage/icons/hidpi/easyimagefull.png create mode 100644 src/static/ckeditor/plugins/easyimage/icons/hidpi/easyimageside.png create mode 100644 src/static/ckeditor/plugins/easyimage/icons/hidpi/easyimageupload.png create mode 100644 src/static/ckeditor/plugins/easyimage/lang/en.js create mode 100644 src/static/ckeditor/plugins/easyimage/plugin.js create mode 100644 src/static/ckeditor/plugins/easyimage/styles/easyimage.css create mode 100644 src/static/ckeditor/plugins/flash/dialogs/flash.js create mode 100644 src/static/ckeditor/plugins/flash/images/placeholder.png create mode 100644 src/static/ckeditor/plugins/forms/dialogs/button.js create mode 100644 src/static/ckeditor/plugins/forms/dialogs/checkbox.js create mode 100644 src/static/ckeditor/plugins/forms/dialogs/form.js create mode 100644 src/static/ckeditor/plugins/forms/dialogs/hiddenfield.js create mode 100644 src/static/ckeditor/plugins/forms/dialogs/radio.js create mode 100644 src/static/ckeditor/plugins/forms/dialogs/select.js create mode 100644 src/static/ckeditor/plugins/forms/dialogs/textarea.js create mode 100644 src/static/ckeditor/plugins/forms/dialogs/textfield.js create mode 100644 src/static/ckeditor/plugins/forms/images/hiddenfield.gif create mode 100644 src/static/ckeditor/plugins/iframe/dialogs/iframe.js create mode 100644 src/static/ckeditor/plugins/iframe/images/placeholder.png create mode 100644 src/static/ckeditor/plugins/iframedialog/plugin.js create mode 100644 src/static/ckeditor/plugins/mathjax/dialogs/mathjax.js create mode 100644 src/static/ckeditor/plugins/mathjax/icons/hidpi/mathjax.png create mode 100644 src/static/ckeditor/plugins/mathjax/icons/mathjax.png create mode 100644 src/static/ckeditor/plugins/mathjax/images/loader.gif create mode 100644 src/static/ckeditor/plugins/mathjax/lang/zh-cn.js create mode 100644 src/static/ckeditor/plugins/mathjax/plugin.js create mode 100644 src/static/ckeditor/plugins/mentions/plugin.js create mode 100644 src/static/ckeditor/plugins/preview/images/pagebreak.gif create mode 100644 src/static/ckeditor/plugins/preview/preview.html create mode 100644 src/static/ckeditor/plugins/preview/styles/screen.css create mode 100644 src/static/ckeditor/plugins/scayt/CHANGELOG.md create mode 100644 src/static/ckeditor/plugins/scayt/LICENSE.md create mode 100644 src/static/ckeditor/plugins/scayt/README.md create mode 100644 src/static/ckeditor/plugins/scayt/dialogs/dialog.css create mode 100644 src/static/ckeditor/plugins/scayt/dialogs/options.js create mode 100644 src/static/ckeditor/plugins/scayt/dialogs/toolbar.css create mode 100644 src/static/ckeditor/plugins/scayt/skins/moono-lisa/scayt.css create mode 100644 src/static/ckeditor/plugins/sharedspace/plugin.js create mode 100644 src/static/ckeditor/plugins/showblocks/images/block_address.png create mode 100644 src/static/ckeditor/plugins/showblocks/images/block_blockquote.png create mode 100644 src/static/ckeditor/plugins/showblocks/images/block_div.png create mode 100644 src/static/ckeditor/plugins/showblocks/images/block_h1.png create mode 100644 src/static/ckeditor/plugins/showblocks/images/block_h2.png create mode 100644 src/static/ckeditor/plugins/showblocks/images/block_h3.png create mode 100644 src/static/ckeditor/plugins/showblocks/images/block_h4.png create mode 100644 src/static/ckeditor/plugins/showblocks/images/block_h5.png create mode 100644 src/static/ckeditor/plugins/showblocks/images/block_h6.png create mode 100644 src/static/ckeditor/plugins/showblocks/images/block_p.png create mode 100644 src/static/ckeditor/plugins/showblocks/images/block_pre.png create mode 100644 src/static/ckeditor/plugins/smiley/dialogs/smiley.js create mode 100644 src/static/ckeditor/plugins/smiley/images/angel_smile.gif create mode 100644 src/static/ckeditor/plugins/smiley/images/angel_smile.png create mode 100644 src/static/ckeditor/plugins/smiley/images/angry_smile.gif create mode 100644 src/static/ckeditor/plugins/smiley/images/angry_smile.png create mode 100644 src/static/ckeditor/plugins/smiley/images/broken_heart.gif create mode 100644 src/static/ckeditor/plugins/smiley/images/broken_heart.png create mode 100644 src/static/ckeditor/plugins/smiley/images/confused_smile.gif create mode 100644 src/static/ckeditor/plugins/smiley/images/confused_smile.png create mode 100644 src/static/ckeditor/plugins/smiley/images/cry_smile.gif create mode 100644 src/static/ckeditor/plugins/smiley/images/cry_smile.png create mode 100644 src/static/ckeditor/plugins/smiley/images/devil_smile.gif create mode 100644 src/static/ckeditor/plugins/smiley/images/devil_smile.png create mode 100644 src/static/ckeditor/plugins/smiley/images/embaressed_smile.gif create mode 100644 src/static/ckeditor/plugins/smiley/images/embarrassed_smile.gif create mode 100644 src/static/ckeditor/plugins/smiley/images/embarrassed_smile.png create mode 100644 src/static/ckeditor/plugins/smiley/images/envelope.gif create mode 100644 src/static/ckeditor/plugins/smiley/images/envelope.png create mode 100644 src/static/ckeditor/plugins/smiley/images/heart.gif create mode 100644 src/static/ckeditor/plugins/smiley/images/heart.png create mode 100644 src/static/ckeditor/plugins/smiley/images/kiss.gif create mode 100644 src/static/ckeditor/plugins/smiley/images/kiss.png create mode 100644 src/static/ckeditor/plugins/smiley/images/lightbulb.gif create mode 100644 src/static/ckeditor/plugins/smiley/images/lightbulb.png create mode 100644 src/static/ckeditor/plugins/smiley/images/omg_smile.gif create mode 100644 src/static/ckeditor/plugins/smiley/images/omg_smile.png create mode 100644 src/static/ckeditor/plugins/smiley/images/regular_smile.gif create mode 100644 src/static/ckeditor/plugins/smiley/images/regular_smile.png create mode 100644 src/static/ckeditor/plugins/smiley/images/sad_smile.gif create mode 100644 src/static/ckeditor/plugins/smiley/images/sad_smile.png create mode 100644 src/static/ckeditor/plugins/smiley/images/shades_smile.gif create mode 100644 src/static/ckeditor/plugins/smiley/images/shades_smile.png create mode 100644 src/static/ckeditor/plugins/smiley/images/teeth_smile.gif create mode 100644 src/static/ckeditor/plugins/smiley/images/teeth_smile.png create mode 100644 src/static/ckeditor/plugins/smiley/images/thumbs_down.gif create mode 100644 src/static/ckeditor/plugins/smiley/images/thumbs_down.png create mode 100644 src/static/ckeditor/plugins/smiley/images/thumbs_up.gif create mode 100644 src/static/ckeditor/plugins/smiley/images/thumbs_up.png create mode 100644 src/static/ckeditor/plugins/smiley/images/tongue_smile.gif create mode 100644 src/static/ckeditor/plugins/smiley/images/tongue_smile.png create mode 100644 src/static/ckeditor/plugins/smiley/images/tounge_smile.gif create mode 100644 src/static/ckeditor/plugins/smiley/images/whatchutalkingabout_smile.gif create mode 100644 src/static/ckeditor/plugins/smiley/images/whatchutalkingabout_smile.png create mode 100644 src/static/ckeditor/plugins/smiley/images/wink_smile.gif create mode 100644 src/static/ckeditor/plugins/smiley/images/wink_smile.png create mode 100644 src/static/ckeditor/plugins/sourcedialog/dialogs/sourcedialog.js create mode 100644 src/static/ckeditor/plugins/sourcedialog/icons/hidpi/sourcedialog-rtl.png create mode 100644 src/static/ckeditor/plugins/sourcedialog/icons/hidpi/sourcedialog.png create mode 100644 src/static/ckeditor/plugins/sourcedialog/icons/sourcedialog-rtl.png create mode 100644 src/static/ckeditor/plugins/sourcedialog/icons/sourcedialog.png create mode 100644 src/static/ckeditor/plugins/sourcedialog/lang/zh-cn.js create mode 100644 src/static/ckeditor/plugins/sourcedialog/plugin.js delete mode 100644 src/static/ckeditor/plugins/specialchar/dialogs/lang/en-au.js delete mode 100644 src/static/ckeditor/plugins/specialchar/dialogs/lang/en-ca.js delete mode 100644 src/static/ckeditor/plugins/specialchar/dialogs/lang/en-gb.js delete mode 100644 src/static/ckeditor/plugins/specialchar/dialogs/lang/en.js delete mode 100644 src/static/ckeditor/plugins/specialchar/dialogs/lang/zh.js create mode 100644 src/static/ckeditor/plugins/stylesheetparser/plugin.js create mode 100644 src/static/ckeditor/plugins/templates/dialogs/templates.css create mode 100644 src/static/ckeditor/plugins/templates/dialogs/templates.js create mode 100644 src/static/ckeditor/plugins/templates/templatedefinition.js create mode 100644 src/static/ckeditor/plugins/templates/templates/default.js create mode 100644 src/static/ckeditor/plugins/templates/templates/images/template1.gif create mode 100644 src/static/ckeditor/plugins/templates/templates/images/template2.gif create mode 100644 src/static/ckeditor/plugins/templates/templates/images/template3.gif create mode 100644 src/static/ckeditor/plugins/uicolor/dialogs/uicolor.css create mode 100644 src/static/ckeditor/plugins/uicolor/dialogs/uicolor.js create mode 100644 src/static/ckeditor/plugins/uicolor/icons/hidpi/uicolor.png create mode 100644 src/static/ckeditor/plugins/uicolor/icons/uicolor.png create mode 100644 src/static/ckeditor/plugins/uicolor/lang/_translationstatus.txt create mode 100644 src/static/ckeditor/plugins/uicolor/lang/zh-cn.js create mode 100644 src/static/ckeditor/plugins/uicolor/plugin.js diff --git a/src/static/ckeditor/plugins/a11yhelp/dialogs/a11yhelp.js b/src/static/ckeditor/plugins/a11yhelp/dialogs/a11yhelp.js new file mode 100644 index 00000000..14345b16 --- /dev/null +++ b/src/static/ckeditor/plugins/a11yhelp/dialogs/a11yhelp.js @@ -0,0 +1,10 @@ +/* + 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 +*/ +CKEDITOR.dialog.add("a11yHelp",function(f){function m(a){for(var b,c,h=[],d=0;d=b&&(a-=c,h.push(e[c]));h.push(e[a]||String.fromCharCode(a));return h.join("+")}function t(a,b){var c=f.getCommandKeystroke(b,!0);return c.length?CKEDITOR.tools.array.map(c,m).join(" / "):a}var a=f.lang.a11yhelp,b=f.lang.common.keyboard,p=CKEDITOR.tools.getNextId(),q=/\$\{(.*?)\}/g,g=[CKEDITOR.ALT,CKEDITOR.SHIFT,CKEDITOR.CTRL],e={8:b[8],9:a.tab,13:b[13],16:b[16],17:b[17],18:b[18],19:a.pause, +20:a.capslock,27:a.escape,33:a.pageUp,34:a.pageDown,35:b[35],36:b[36],37:a.leftArrow,38:a.upArrow,39:a.rightArrow,40:a.downArrow,45:a.insert,46:b[46],91:a.leftWindowKey,92:a.rightWindowKey,93:a.selectKey,96:a.numpad0,97:a.numpad1,98:a.numpad2,99:a.numpad3,100:a.numpad4,101:a.numpad5,102:a.numpad6,103:a.numpad7,104:a.numpad8,105:a.numpad9,106:a.multiply,107:a.add,109:a.subtract,110:a.decimalPoint,111:a.divide,112:a.f1,113:a.f2,114:a.f3,115:a.f4,116:a.f5,117:a.f6,118:a.f7,119:a.f8,120:a.f9,121:a.f10, +122:a.f11,123:a.f12,144:a.numLock,145:a.scrollLock,186:a.semiColon,187:a.equalSign,188:a.comma,189:a.dash,190:a.period,191:a.forwardSlash,192:a.graveAccent,219:a.openBracket,220:a.backSlash,221:a.closeBracket,222:a.singleQuote};e[CKEDITOR.ALT]=b[18];e[CKEDITOR.SHIFT]=b[16];e[CKEDITOR.CTRL]=CKEDITOR.env.mac?b[224]:b[17];return{title:a.title,minWidth:600,minHeight:400,contents:[{id:"info",label:f.lang.common.generalTab,expand:!0,elements:[{type:"html",id:"legends",style:"white-space:normal;",focus:function(){this.getElement().focus()}, +html:function(){for(var b='\x3cdiv class\x3d"cke_accessibility_legend" role\x3d"document" aria-labelledby\x3d"'+p+'_arialbl" tabIndex\x3d"-1"\x3e%1\x3c/div\x3e\x3cspan id\x3d"'+p+'_arialbl" class\x3d"cke_voice_label"\x3e'+a.contents+" \x3c/span\x3e",e=[],c=a.legend,h=c.length,d=0;d* znaE@=H@AE5-Q4cIVl~wjFwscS006*LQk2yO08lvmvnLn@{%RBP5f%Q1Vy>bf3%vaI zDC{gxg@5zPRnfo$0MPONdxC)MTw(yA29#u_bbS|&^87yOPT##qjCS%Vg+$0{F0mdD zrAK7Z^QFS_BINLAtNJ+gjGUJ5Tb!xs?TsFTYLSo}rtMp57YvUyD)owDw9^M+^n5f~ znXhtUXzjHmCB0L!0!A+$EYdNEssGZe{_8NQ@A#PYme1!naOCICg{X}mR#8Us(?9>i z&V!C#hsl~WrY0O2lHF?7uXf-WDO)|sMOAAnkBhHb!%l%3w8@I}wVE#Nb3sk-EmoV8 z0icvu7i-O#dk6S~WU72$0pOr$MG(is0(r~%S3TB)t=v@TUn{u~hDYy*D4>no=uLiU zfZ|7GB0!fK$x0)UU=wWT9Y4%@e4pj0X$=tRU&odR$)W7m^iwrK|FQ^A8{v%%<#*gp zV~T8R$gUbtnZ8`2Td93fq#qDaUidga91jA@veYuz(uxFFULydv$0-`uLA8X~f%w3+ zMmLU4*KKUgtJkrz@+f z(J?LLQx-eZR4~gWx`qErfz=hGU}Bo1{w3C@{u*#b70+2x-B;4;A6*jsq1h6IHZ=~fo!9-%oYgbP$dky7d3w)B=2 z1K6IYkuBRABxO%l^sguWC)z3E@k03|i1H%-#38Hly=i!LHE<_}0vIcI7r^?Oq&mMh ztsoQlr{qV3*&`P8^cxZJyVNju?%BPqJC5&YD)cG3V;&YLLLEo|_psyrS(jLHVy841 z2=V*1BDSu!4;wQ9)+Fx~bMKdkjQRYnEOf!FIYEQHWD#Z^i7JH^sHHn(K+!+G8YrrulcPZ z$6+)A))+T`YFZ!f&QizjS9XLMfcX!ohC#E*m> zxipc~Bns=X!5VSkLcKcjU$D)$?9IJCEpEcqbUUW~*Z{S~h`j+fd>aMK8_vp_0N|~+ zb5=FkBLkwkUAxO^^5{irX3zL5Ilg|*h~gM@k%bt%wa;I7Mi1_{PInKPW^Mj9BF4&2 zF!1cY_)dL;Ww+?PW0S#48|nu~{J@r!uxk~(tIy8riM8}T{!4@8usiny_Kdre$B!Gn zZ9c|#Q2C-m)p~pZqo7)u4>o;CvT9U>i!(mdkmT3#gFLN=_wKI-aJ|{~4K$C+M3|Dg zn2S@wW2)x>BU5B5QC@Ou=p>J{XI7`dMdS9dGXQ(eaP{A36TAz3173Kx{B6!no$g>G z`@$}lH-9VHyVe2}a1DEUW;PxiQGNOyAW@HK|9z$6&rA0+b~FfxiunOLo|rO0akmUt3e>OxlME-Qs6 zwIibN1Ov9vRb#Z4?>vAa&90>_cOhov+zJ-M?Lx($PM&A?hkV3%z>;Z2?b&jmeow`K z6K>qHIZnPfslC;tF|0u;)l(1swztazdww;fVs95&5*uN>g&ZE=8FFjo_-m}lo@vDu z)kYFF{wkn4+F#X2UGz{cba}XJQ1O7wd}D{#Z;dE3ws#Q{bPPSEfRyqlU(k~KR~JFV z*cS3(V8!`B#{aGY6A*-(`xEu07q>U$>)m%#xMCr6h$|#P$RVu5;|wD_31EYQc)=-> zCOrfg4REhzRgyDSp7fD5{y&BO_2VDLz{Fh}9q&o|p5l^HnLR4Z?euTwY&QJmzUcmn z=%Edf*fpZQQvq7ls-obxz&yGP2JEd;@z}f2p*@mkTIhtCF1r6r82%@CR6Ld;Fjxjn z3M~fw1Oj||O13>0PP*yn+uTA6_ub2j5 z0zB2Q#`W~e+C@!KXSy8R^hUvYL#du{i$zb8fEiCclayy65o)AFdB2s#|AqDg9U>!> zk4f9r8HxbaoCjt|FaUh)r1;@NgD>Z&4?Z&-7>y#E8u~(*h_O&W&P_+>k@CTm8mHpA8AfbnM2zzg(IH-Rne;_C2at=l_LyfV$cPr9i{ZT_?YW11U|I z{z}6=*1f0AN|w{}=WCf_sn#AA{C|)NFYYa$Y%y)pbXJiF3X$hGoKBXZi~7EsC8)$- zODVW)y)8sgq)(A?J4Yfk0^WoB=3$=i0!TdwMUAqSZ@G}mIPROZa0vV`fNv<7`uJL0?sLYMWF`Lg61_ho%Z&x2FQLOKo0DCic><2x7jDRLRoKSz6G|8 z@f`E((QT`5(Q0_}14CnWoKHq>?@V= zl7U$?q~B|%<=dYIoa`UFH_!2Zu8nu3DW>TO@i{RQCqgky6?koyoMP8rQ#Zt6Q+~;f z+^Rh_t5-BuWNZz7_9-4>-p9OpuIi?0Rld^K1s+i)>j@BmOdkpw3w1mwx$S$E{vYr1 z2<|bT^`esN6(%ua&p%b9sd2NOQ$|la1P zBDD#xYkK3hd@F5hiu*g$T5P?XNkX24#ARBfah&yxWiF(VP$l$#d_7LHy79(j`RquI z?Gj72JPR;;P0bI4FDq(ef1TB!*T) zh4ID%!T0^`8nok__>PF<1JoUiWjjwY0QaadiI@gyEmMOC6ZNi9*hb3PQ_fZT4f5up zR4N~nTL+^BIXkovi-v&6B26GM$Vm5kOP8A{&qOnZ~*XPE)!!`8EHa7zc4xb3?ag+_PPPz$+Xfbuwb zpp_z1*DAV>EE?_6xwsY5yYH~nAoAgT6Ao8zgsCa_TA;k(CX4U0qZN3j9aqb6yG6@C zm(Uy-!vvfUhNVrjJJH~2W-Tjm*5_Y9*d3^pm%p*w!0qtEMdQco&FVEuGOzC&%WviV zo;`#*hew~BhL!nnb*=R>Gr_&4;EEEmNq0QI&-W5tq>vMp?&0I`E(YeD^Y-tM`$}vO zhMGNjm9OcDRo2@Zic_kI6Y>*nG+js=aLW`DyuFZDraI<>x!nsc16D0t>{ctWeL34N zCsZ13$BUgiGd4EdD$dwtigehf=r)#1+Ac9HbIDFQ7VVuZBt@my`7+&wWz|?2U0-4{>Mgx zvGU+$WHBm2elVdOL-{VQ6>jE*1@3l4nE7n2RQJtYaSCrug}2Y&&bgr>&CQQd(vXAK zbhIh&1~ds;sMkzdr>)773~we{ANTMqw2Uu7R{knKuQwKt$^2}iPhZS;%>*jU#6tUn zefQ>>>G%nih~0Mf4k6Tbwu4hO2Q}X_&TA)K&4fne0c(dl-Acv%yo^GybzX#}}+tz9xzUkc`z^K%kX;2D@AOBA^62`ML)yeb-C z5TpJRllX4FWdQU!Y5EhADNabw9y7`y#{RpRZQcAh70=~ce91g`aav1tJHNbj_kc(B zV+6fp1%fg~$Yqcy9eph(bE>g1fS=ZUPgt`4sfK~cR1D=XskJFUZ4W9&1|;@LKlH+YtPQz|)G!RF z;YNF=SMr>I*1Ksk%-^>PE;xvNrJ)o2AKvw=oX2Y=4fpk3+Dodj`fkctm`2>6g4*iJb0fzQZ;4NF z{8rgWl(64DA2_L3@L`yySZ-XT`fSZ_T@Z@H%Ve9|dQLj;?^bJFJVXomrns)D2c}Mn zN@U*1%YMkNI^ZIep!`@*)M{>17eZ-!b@r-?WTu_;WM8_xNrmm(WaMBf6Vr16zn!-7 z$Qw8FdwL0PVa7JU`hj0v%faKTcI8V+g;9n+>Oh*ylu&_yy{$M9 zOs)OYt}=)@E`FfrDA0!sce?rc^AA3P9dD65{YFm~G;+>>UP-VLnOHJ{P2Ol*>z_T@ zywTYM*5s=hBO~O+H`hq<%YK7Vqk<+bEp|ReM+;&`K8Kwv=ChowL`iDwL5HgLiFuG5 zEmI$3=f<}M91W1>fAT-a#4)cJ_w^5JJ$Y3Vw}vJt~16-*o7>+h35N zXh{yxYtIZs3lM|JaP=J*9=igYfB8*^f#+IpPT~v9 zQ`cU?H@tjk@hW8d_EqUOF>{M8UDCwCYVN%sjc`vn95t}GNk|miza=?*=-|X1&o-^S zNj=s_bd~BtRBZ+~CI-dq4%X$?m;6&k%3zn0a;xNUT%)5-hqvY;zq(xs9Aj@(TLt9c zu%8KpWtp`&1WU`l2E1XIgw~6g>JV?u!uMjAwF1H4?tKlNixztK6b8hJf&Q7brXL);HB&GovpAJUWA zz0%7O?5>y+s2JG{{q1&nE&%-vT*mJWAp@q34nDjW{wUZkGNg23*Sn!X=xc9dCwQ}t zSv`f{vLk6@&>I)m)UdBu(u*X-p4}YZcX}lTAwA_Ev5s@gX*HWd1AK})n{{@wh23bY zs&~FM`2HgK#oeK}?}DtO6$ou2kEu&Pa)RXuVR!%7bZ2dVh?{N~Fm<*R#LT=NC;xKJ zr@d>9FpM(J3Y^8FS%Y{W&?2$^BmEP1VO{OJFX`4K#oF zlUdIjPf0{==|R|*s5JrRe8kPs;820?D+HQD0=z=2K1;~H{}9@TP6+*Y*v{?9KTFpt znE*DGqgd6{d1ur3W?Xaep&yJEConbZ+h}XH%-h>BH`m#zt{G%Nb=sU}=GER;he@;c z%DRgZh*+zX9U^Q{9P~ndS|O?xob8r!L@6Rc;NrWT(2ux52{ECztC4>)YRuQ{NPdM7u>alvaHJnFfEP^6m-hxXEhS}dlpAgav1i&}d*0fRskcIIY? zCef+qe#d`0sLu3uQWa$($2HvVR1r_wVcN&qhy2)|S*NxZ=`mH{M( z7%&CiQK~4Bkha@ddHCpHD7Xs)YY86Fn_qP_hR2Nz?Nj{)u9>;hrXQA1 zh(xfvZFO*)JL_g1BtwlI@L~0RmX?Z^Mt>EObVtOWOwfs38=fAxEP;wrk5P}A?(^cH z-JFBf8?!*6bhojS@V@n$2xw$2$4~z}pSv(l4(Gi)XWGbZ>rB-hW>%{{(NM}4y22#1 z(ipINtYyaf#p@ThOOjnq8b#!w7g2m+PEuCSZ-NG3U2RVEd$ALOxt5P?NRgaGHQqa5 zLSO1VP=S%jfgdrDyNo9Wt`n$t#g2Z#4gr|r?|Gb!VROr#*w{=)p06^nOI$vL8brn8N!Ui()Q*TL8N z&5h-B{*!n?k_<3MtjnpzjSo8 zNJPB$Z^pG?LJwnmI0w~fNsj4o(Wg*E2~2CN#_R*izA~vj4WLx6_4@)MF4Fbm)`PUZ zB|gQvEo&onc*zQ)B(l*y(+s>i-~Rk4E0c%{VCf$&V4A{Is--a$Qhbz_^r=oq*gbz} z?zjX~`F$EU9YLPQy9sI#`Zdlw)GX2r2@7%wur4PtAR$QEtXxizx3BTVbbSu%;}_bOy=$RXCX6ej?A~6KnH;P z0gFIwHNxT<6boeY!HHkmaI>vHB{n_hmE>ykWFHKI<#oMn*UDN)*F{ zF4w*<*1gs9ZJl?l9JHA6$XV3%v<|OyXSh5c-^2A^k*}R)vQH{PI~REel-! zN~{BbLgyN-@hV*95(5ZA4%h{EM1Y+E=UsT6+bXPou$)`GN(3MPQ~0?mHpMoigj~zP znZtX*nN!xCGxJn-clH(?k{MyCqke~)Mb^9AQ7v6%@81U0i6o&$Vi6_mO1gh)Dv>gu zU7-O4%Qrm;Lqb{@c&Tc23fuAn&%eyuFgbB8I`jgnt9F#lX`ezvtE`uOMvp>j`Wi+(L|V-jwvvHDU4ahD!ya>Ovq z_HH1vZ^^A<@rk@zR$BC;52D$7CCrU^ezOZ6?L`@$EH0e+uKnm}Qk zxA#j^kl_k}(xN_GJ$~m!D+F6xKe!u7Ve$=*;XwBU2(lb02}QKl3fC9GpgqJ!>3Bh; zE|tb(V~*@Ug0Vk5@3SXwCnEB%aH8(xi<)TsXb-U z7I)Tr2T@zM!ip63&h%5mO*iVoWcObn*t*3*fBmhyp4mW!Sw-!cqb~kZy62o-%Ucum zmp>u2!pwJMK7Pq$mHga^$EWc#!F^-+q?|t;m}{+HAI*KgT2)m2R5*;;vcmRui>W!z zxa8NQTT7+{#4IKS-F93en4dZ0_6s)Q+jJF$zBz zaPabeDS`ep7uwK4$c#2}S}<5{xuQDQD755$!*m*5DHx0f>@oWB zNMX|ENdH>Diy31K3~;y!84zuVt*vojPez(1x?sn&GWm7#@k5bHL~E2hTM4q$@HaboA?*dXg|F3 zEY)MKUPHjzywIW$20D?+o7Zc2pyTf#T8)kGSw++wXL(DMQPkCsiBdk?+yFiZ0DVGU zlLf$Jx0E63rHhL69L*3$`YXucJA%gAx8A!481N$SSMhG2=Ux~*`O5>p%~vL=;4|w) z2QhXjv?O5AvlMZz1tgmzy25gu8sDsbFYqPQPTmkYjzwSlY{{j7n_O60Qe$*dExwke zBFoj{U;1cTwCweB@kwbR4P=!`spRkHTr@mgDQkKq;EXRakcULgWqj0Mw=%g+$W zF$;`O%}{i8zdNwFs`SG1!+EliOLTE*Uvfc{WAQWe%*i6$xXb&TM(l`sYQXjIfZ(3B zfJ=;4p?q$CTur-Ez$1A3cwxNHnJwza8wTQn=TbsIu6DHUyxc#yW%sxf6<)sc;>#dE|c|w+VRZVK(jRPK+6;XYPI@*u|2Lc3s zB*grmVs0i^LD)hwzJ|QKgIWK~F*T`42fnImGO6dz>7`C?#!rPcaMV$%O0AVTbKU5~QhZIwI zr>!C13-qJrpP=Ek2XC>_`Kz9n?+YzP@KkY$0N|&m6&*7N9>FhinaQQmN|zag_l&Jf8XZzaxmLu46Dm~J~lK&i33uHI&|OQdVd)wCCNoY;mgJJ*wd z*Iq8BsTXE}j&E`8i0u_LYFNE|C(7rX^lDH}FX#GIO#F8gjJvA)&bEcekKWhv_-`0< zaj}HDv71*?hdiB(ou-4gCKtoaB?sBS0X)f--wH=C0{h%=3!S(Y1S#Rkt|*&VfjF6v zDtthe%8=5IpDYJd^L>tA0+&NqvY^`fiZ8qp-csYna1$i?(C>dSM-h-+tEh~PV{BG! ziy7n--lr9Z^3r&=!Q15iVSRgSIQ-0$9)5r=_RDd2TQLDot9bS+=c?JacV=pAA7^@p-QrwtBgeb!Xl8Ho24oRn&|nB6e-RVk)1{(iXnOS?ubtPq78JC;J6W}Z$B^gDC6 z|9*c9^-ApLvh$oHsl7wzRr>1;M3HVxYC)!g_$)1QXRP1m@z+fU!%OKqt@E;pBl^cRHV9m~RF$`94cAj5TKnJRa@79%=FiBf% zd&0tJl4B?eXa#G1;`++2P;Z%HtR06zx9;E%D`DxqPmw=|QN1KsE+xlK0w?T!ia1@T zA|pI)eLir7Vfj!+PoyILvD!8$dV88e;kq0-SbtMD!@slF0_S_=Udm@J5g#iYuaj7x z3t{B&gIg29*iYG^-?F=N2t37oS=$Ls1RkD!cH_6#wH27R=_eot!o^+F2_3KhawzFz zehAuq&_t(5Dj7IlMn)#_#-qh#hJ@NbOp>bn8Mi#K*Y~@V)b%fI?YJm=4M`dd#P!JQ zg7kb6|Do95dbfc^Q3S_?IMV|w_r&(*a@Rt0kfdvPPbewowC-W}ce+>JK=}QYxS&;4 zD*V#I`Uy0$dOkg(vgps%)%C4tCO{?1UYsbx>!@3T{T;pt1N?4cWq%9@!*}7L)Y#T| zx%NKr@68n@OX0MVa>LFaF(0uu5>bV}2wdT|ESWwxRsD&kjGCO`REIqkg{r#$f~)0Q zYP`!4p#(5tOz0~l40BpMCY{&Cx5|qSDIU|g3OW%IslKq~mhO0(TUcC|h4)V6*xtr^ZlVw#(wcH3 z%9xM-(?e+G*77oGy3-Ip`Tk^+%ST=i)Ql27Iym4xT3@-guo|clx$#l!;BMcwTSxN) z8jUP6kI64t4^o5`WCg=aA}Uzd+4jNIw1dzK7dj7G;iQx*fW*^DRdcoCUJ?+0qKgV3 zw@%=O^i2; zSSjt?_G9A|Ba8Ayf$Dv6cTp#Fl2{77DIr!YAtuLTEO#xKn~8QL4-=?eq#McPL4+d) z!p=^PUh0x#Z6&`~-=-{2Sf%+m3b;1MS5q{tPsFCA#A_Nq6}ZIMEShW1&tb@yIr2{M z^oBDIT?9_xz$qDs7O=oL{3RV6Vpu`~$5oPIKs@3p)`}{g%6q!9{{d%V#N3UCQHmPB zG=1aw!{MkME{~>?G5heBC>$r=vYlWKOd2>-#>k6fj)}DbNTm=WhewwX{5Mt08-KYK zL4@IqGR1F&K(j&ppNI0w?^>iXw8@tVaBvk9_JcBnW;j_;6buQdGPyU8y?1Z=u zkL5j{-9Lx+AU>VQ80PG1T?EUBfeh@jCWjW{i~Yz3tkH zkLlN)MUWxOu)CvX(T7ftA!L)AR{9{gl{b^t*IX^UQ@yZnrGEYiPb4Myf*Ct?dqM#M z*J@-e9B?$%Uz|6F&(sXjv0vfD+ znz)B9s06Bqz#-yat@qOl9f@#{i3sjCGr!#(Z(e8ow_ulKtQ+~4f%g_Sfpp0N4z;AX z$*)v5R@W$(`0k9HJpI2)ChZgad?*os`^qq0D#xt1rtBxqhIg;fLb~VJLUV#{7yMqL zTPbfINk$$4PN1pT&bDU2snl11=_xd|jG1JA5b4i9ZwiZYb8R$PzZKuj=SN1>#~geF zIB*s~7j8K7qS?5lqe^(r&F_Bzmc_Gu?tElEJC+axXo?(ouNDI?<0`Xza} zpk!%JqL8PFuc$?MCTfrD{{l zXt_A%i`$CBN{NxY)0H|bNb_>V=W?D zr4Top3)vQ(*9DAG_FpF4Ny*7l53vzp)d_JOXK3s4Ku$nbUUuwhG4tq2wFcEw|Cm&` zC-5Hx6`O$3E=-LnjIX_No_Dg1kQ z=c*B}mH+UdIwYKk-;rO&`%|7~%O1YO@w%OvBREz_gUy2UKdzXC(ZiX}utw_?5GwJ>f(+4JZ@F?)q@E z{QhsK;4s$U0^FsRmSdCuU!C`zrNlsn1PTDl={{TUHQPKba literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/about/dialogs/logo_ckeditor.png b/src/static/ckeditor/plugins/about/dialogs/logo_ckeditor.png new file mode 100644 index 0000000000000000000000000000000000000000..cdf17c024ced2b3b1573058299f6a0681351b395 GIT binary patch literal 5650 zcmV+t7VYVYP)Hj|9$(UFPT7;=0f{NfcgKN~$!EwaL;7nWY%yoKQ*J(iQxJDcwb7w}!5l2y6 zii+~gt4-1-wJ8(?e4r?zg1ic(NzVT6A8DbF^g)|Sbe-Q?XRWMcpMAc4zWv+Z<9ug_ zkYo&8)_|kMmtgo4A1j9%4^5UVjLdQ(KutunRSicvC3poUbjY-{3gIdJLx|S;IR=Y zKM?lNKXuDOqX8h@-k@ni!*`De^IztZGuz&frP%BKEhX0ixU$EcFyA6o{#0iV6-N<` z%TltgP2Z;?M_atCX;;Iy=Nbun{R3dR2*8Lwit-_d{zsN(Ki|_c(w2n~EzW5si0)}?3eY+8KLegM#wZ$@m%WtyfnB##Iqo@l_=cU^+jn;F->6*4o^8vqYavPiW= z{8P1b(vH^GY(s#hAw)}ZpewH*%7SlY=0Aav)plUC4WQp;4v_C2y?0VfQ?-WV5aD-z z;9(<%R5T24jKtP~IXl@gMk_>!#5-zf_BC-2ia|u}$&jr|-UQ&RZu~(i#F5j9C0A(DH z2XxCqg(@S|0}=qhc(o}OO3O;m)YPq^cNXDJC-7teboS8A5_lHOr%6gWM4*e+((F9| zAj<2G02p+Ny}U1%Oq!^vT*E0_1ZCVAMWQ?ukj$r#1kJt?5gm^Q=XK9@Mgk#}g&B!K3hwC6k%DU? zX&EfT;WvP`Y1FnZ7S7RBt|6gC2rrq4Gs<@jQdRkWDv}^RfhnW;gPMRP^=fg>8^@ZO z{s`ih%#f0pQLJfPLt-N69oN}l zbgV-^jF&W(Ye+~08RI)sUP{I}ioI@FWAS-WBJp7BpCt1mP2t$CNK@?NNK@=105}vm z_TK;(wd+L^=p|hLA5H5TIuZfIlfMIU4iykZ0HBs;KTMzqp+@UG5MK+Xd;*VTU@wTa5zs*3=K?;@=JTfv#R#PcUhm42iZEJt z2!-wrRJq>mR9R*VYP}xhnk@H9(7goY1byx!0ARFQ21lc~kr<=UO?eCxNu478SzYP; z4Fu=#xvjmQlE@)(dk5t=1e12`ojNah&?T+^0R>OIUD4d9o#X4~?B*A*)& zD#ABMj+IKrd9^;z!c-=K*<6T~D_3Gle!=-MRsCN8Y0;+eKmdIsLX_1fbE=}#9QmXs zTj-W|52Q-B$LDm1%+CU051lInFNhUS+7&6z_5;ulT(%`MEO8bIj*T3bweQm#&X+2H zH2ao5kpKY3U3e)>Q>TrI)HT!q$RJW?2Yt>r6PVsnB(aEDmgr5^LA5^j{3-bbsIGE$ zC?oIS4w)>d@w%Zm*?t2lD~PaqaQcL69j<>!xHn?*oVjWA6+#;x0-28$no6<8{RVVE^IcV8&GdE;dXpxHnkoJf5mV@Om9_ z_gbp!0i-2rqwD1oY2EB>hzWbBzp_N=vdE7)U#j?6DG!xr=&-zr>EO}gOOFBABkXnf z^oH|KlD72HK8y3ojs^@n>&)i?4AVheQ0;SmWH!%l04K-H(ADmd0w8` zc1?Aa^Y!lf&of(5<8>p~WVuPQtRSK~rD@Q0M``DYm4DEI{X>odAn;qB_0Dk5z1Y56 z>>8hI7l3<*3?GBCvNDvFm4O)G_%j`q2`P&_n+-KC7xX6Uqs%-Oz*7Kz)sgIdny}nI z2e^lP;U(c1f6A)dF3Rh+345JKmL~t@8@qJM&C*7a$!oLZ5Wsr6VaOxs7anhNG&J;MxC%E$<6}hU!E3GBTE464)|Ql z^GpS(@i}|4691K%?=zUK=LNm)j}o<+l3#%8N+ z7&?0j9bR2MgTYq;m;k2ZM5y`lK;s)|sp)F(V_PrJj6@>qAn3NB+r7hJvR%w9Cjb}@ zAcLan)dr&_Nu;CyC;iRe8kV{ZcpW*aX+y}xZX++ecU z0Of+9XZ`;fjMixY-^@hAiEw?;>u&0?H7G1Zjl+Rhn1di{4Eo%&^(M=0-&Z2^8_LSc zuzJmgkpPB+=&`t);Ox=440=p}2mdfLZx`V1xZ0U4sIGD%&up8gs`BqdR0BczRaNWy zg#-qZ1wo%1dS*X>ytt8}T>$@p8S?-+1|kx%5O@ZF9RQaxFu#>2 z`*L%9{v3c?TCNAF3=O?^dp$T_xj=*+1RBoF*Mae%!DLw-^m*pAWOQ0N8utL|^|@x- zU@2t<01zX1%GSW)fWd729ZMcd!0fK$pgw{6c%(iNNYJ?e(y5cxvNP2BT%QE|p4;Et zRFN>l6ZCnIYqBj=rCdowZe5gZ!75k3Z8D&{Xf)}K79W5-LE`sA(g$S){qA#ve$PMx z#(>~cCBH^Q7kAg!03jC$MT`RA1+b44Fq6Wb{Bvr}4jQH!FEOsV$g|^O= zET0AtVaCn=peLMbwjtnkb$4o(-eeuz-6BRnW6YVa6hTxP@VS=ewf4~k z?XLB@t$L$1z|4m3mMC{sWi;1l{T%VSFUf+w2zugKqhp^nv{;}Am~kGFC=B{s&RkwN4tL7(SVgVFK>X53LwSomKKhvS!l1wGL}c-$ACSOZDQ*~k1OU3M^!Jn0Uo6jP`w26@ zO@vnolnz4myjfR^9*_W%u^h|?z`VbU;~)cnY&zerKz6=EnFctQ&MK05pbU2_x{J*ZJDisdG+=1jd;&5%9aP zE&88Zm@$@!eghz(#p$y}kW$SDP`&4lk-ffIjrUAwS#k4HnFYj>89*$2TuDlYl5HyZ zK@e33eeQYseB0$v<%W;;A6fPE>ESyu^%ab1l<`1U#D#cg)1SaZ1*f)tFB_IJfJ<0%YQIoV^aYr~f-V5?WfFRv zK?Dbs_&e3LRj!Q&qxA)5UXW|H{XF1x{i|!2hg|``=h+^u%vLLcZZ`_e(}o_FQGgNX ztgY2*h1=~0fZYH__lfHy#y3CwuIs@K-UYCbvFI=Whx=rSX3qv4IHJgK^eq65AoTck zjeNR<9byij0%@f3VqIbd9{%DJoEie5hmnMFrAe8PVZ z`rS7fOqL6o`MErEL1@pxW1-Kt)%02RV0>buQK}OGKq%Cyd)G_?fM`3I`$Pn&GCO`f zU6*l{v2Z40;UjyQA&BWr03Y{hysKBkV7AR|P6*r|@VUN8&@2i789Hjx(x*MQd@z`8 zy8uKOxTxnwgpiwGa5byyYJQ7w((y$+JmKul+Bn{C2_5Ld zzF$#kh!2!{@-HxB07&SR{mF^xxRQY{i1~J6UeNBii2ze`(;Hg8V~J6kMd$`qRqLaA zqpci}kLQ}L_XMikf9a}_&EasM@N!$m;iG&th_}>u-5>PiI{EoUsH$4KPH(b4!OVB% znyo)wyLRo1Jxr&0xNci1r0N&TslU#$1z?0zP+_W%+uOWdRuf9(QK?m{n^w^sV|7L?GZV zVAS`AM*_kSW_|#`nW;dATEA<#-e{R8C07`21#5_C=hUflI%G8TQwyL#Du<8C>iEq~ zzrN>$TMNU~0t73aiws8VRZ{Yby!?XAHC4_n?LF{b20Oopl&kVg)}O6iyLN?P#ta14 z$2SBt2UV0NFy|kJa9dJIv-Q;Pt-Svk6og&$TN9gg$mm-7Qu1 zZNrtb#~)u;6^+E?q2^TEyeY=QH8PW;-PKkFT$>K%nk=~b${AR^mq{%LJ&PAnTG?I*InOdpD_?$A3RbgC1$7`tIsuB zU(*r2;PbiabB#85{hJzd&6dlg#AcPHQ*W{!7K{~4{3B*u$&xb&^wr1#!{*cirD0c7hnz|%H#1cH03BQbjQ~>n>zpEt+wR5uBI!0l-L$bU^0yl!G z31F8X@lwF&`g<^8(g_Y`^h@29B6L-%s%}Zo%sSfEb1bh@(ZBz7@NLdmRhH(Q)&xLj zbuoIA6}7(j{4&g*jo|9lUG`(KSm0@1CEJs#FKFFwn?TcS#no3#M_E}JfHn`<5(V`D z0He_czu(m^U@b(TITq;ZezfnaeHs@4@{AVL_>*TT5?$}4mt(Kn!Hfyt3myQq>XJzY zE!U;t)Z<>J_r5>Fp-q}fHS~%ILPt-2Uj{SkoDqM}RH~s@L|{liK%aj1-6DGBlb??a z7jDvayw=bww;DL(vC!bd$8j)~cf{^y7>(+Z?7{RMc5B z=ifm~;8AqCaRfqU`8G|X8hURL+AzZ&dIrot128bfW&avPkI2%TWtti_^w}b`e3<`o z+_#pcISU17Jb~U#UG|C!0>;bIoMk9pe?oQ*8j@xaT0|?pK#w zwk6HJB`LeuY0%Iu5wK`IuzW@;{NeZ!olq{16ki(9RHmU{U896pJ_A`5+Yu|xc}}OJ zvj|lFEfW9&v?y&*+VDv6rGc!9?V83koCb@~8uwQNk50jmM?%9JV^|k|<*naplp;j* zj#`>?4RCT>b`2U%k40#WN2g%K6Ad{0+njwH=VnhPA`3wK`hlCZM7XSl1S6hk&`6*m zg)Bm6OtRNM0G4+nz9DR1@DWIq$-AFdp8)RJ#!5ub3V{b=#W}mv?G1>OUZQD4!*`zuSX2ir zpMqOF417cI$YXx&zWhSQDz2gj$^q?CqgApigX07*qoM6N<$g5`&;yZ`_I literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/adobeair/plugin.js b/src/static/ckeditor/plugins/adobeair/plugin.js new file mode 100644 index 00000000..c48b48d5 --- /dev/null +++ b/src/static/ckeditor/plugins/adobeair/plugin.js @@ -0,0 +1,9 @@ +/* + Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved. + For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +(function(){function f(a){a=a.getElementsByTag("*");for(var c=a.count(),b,d=0;d]*>)([\s\S]*?)<\/style>/gi,function(a,b,d){c(f,"style",b,d);return""});b=b.replace(/]*\/>/i,function(b){c(f,"base",b);return""});b=b.replace(/([\s\S]*)<\/title>/i,function(b,a){d.$.title=a;return""});b=b.replace(/<head>([\s\S]*)<\/head>/i,function(b){var a= +new CKEDITOR.dom.element("div",d);a.setHtml(b);a.moveChildren(f);return""});b.replace(/(<body[^>]*>)([\s\S]*)(?=$|<\/body>)/i,function(b,a,c){d.getBody().setHtml(c);(b=CKEDITOR.htmlParser.fragment.fromHtml(a).children[0].attributes)&&d.getBody().setAttributes(b)})}else a.apply(this,arguments)}}),CKEDITOR.addCss("body.cke_editable { padding: 8px }"),CKEDITOR.ui.on("ready",function(a){a=a.data;if(a._.panel){var c=a._.panel._.panel,b;(function m(){c.isLoaded?(b=c._.holder,f(b)):setTimeout(m,30)})()}else a instanceof +CKEDITOR.dialog&&f(a._.element)}))},init:function(a){CKEDITOR.env.air&&(a.on("uiReady",function(){f(a.container);a.on("elementsPathUpdate",function(a){f(a.data.space)})}),a.on("contentDom",function(){a.document.on("click",function(a){a.data.preventDefault(!0)})}))}})})(); \ No newline at end of file diff --git a/src/static/ckeditor/plugins/autocomplete/plugin.js b/src/static/ckeditor/plugins/autocomplete/plugin.js new file mode 100644 index 00000000..7ecb5c7e --- /dev/null +++ b/src/static/ckeditor/plugins/autocomplete/plugin.js @@ -0,0 +1,21 @@ +/* + Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved. + For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +(function(){function f(a,b){var c=a.config.autocomplete_commitKeystrokes||CKEDITOR.config.autocomplete_commitKeystrokes;this.editor=a;this.throttle=void 0!==b.throttle?b.throttle:20;this.view=this.getView();this.model=this.getModel(b.dataCallback);this.model.itemsLimit=b.itemsLimit;this.textWatcher=this.getTextWatcher(b.textTestCallback);this.commitKeystrokes=CKEDITOR.tools.array.isArray(c)?c.slice():[c];this._listeners=[];this.outputTemplate=void 0!==b.outputTemplate?new CKEDITOR.template(b.outputTemplate): +null;b.itemTemplate&&(this.view.itemTemplate=new CKEDITOR.template(b.itemTemplate));if("ready"===this.editor.status)this.attach();else this.editor.on("instanceReady",function(){this.attach()},this);a.on("destroy",function(){this.destroy()},this)}function g(a){this.itemTemplate=new CKEDITOR.template('\x3cli data-id\x3d"{id}"\x3e{name}\x3c/li\x3e');this.editor=a}function h(a){this.dataCallback=a;this.isActive=!1;this.itemsLimit=0}function l(a){return CKEDITOR.tools.array.reduce(CKEDITOR.tools.object.keys(a), +function(b,c){b[c]=CKEDITOR.tools.htmlEncode(a[c]);return b},{})}CKEDITOR.plugins.add("autocomplete",{requires:"textwatcher",onLoad:function(){CKEDITOR.document.appendStyleSheet(this.path+"skins/default.css")},isSupportedEnvironment:function(){return!CKEDITOR.env.ie||8<CKEDITOR.env.version}});f.prototype={attach:function(){function a(){this._listeners.push(d.on("keydown",function(a){this.onKeyDown(a)},this,null,5))}var b=this.editor,c=CKEDITOR.document.getWindow(),d=b.editable(),k=d.isInline()?d: +d.getDocument();CKEDITOR.env.iOS&&!d.isInline()&&(k=b.window.getFrame().getParent());this.view.append();this.view.attach();this.textWatcher.attach();this._listeners.push(this.textWatcher.on("matched",this.onTextMatched,this));this._listeners.push(this.textWatcher.on("unmatched",this.onTextUnmatched,this));this._listeners.push(this.model.on("change-data",this.modelChangeListener,this));this._listeners.push(this.model.on("change-selectedItemId",this.onSelectedItemId,this));this._listeners.push(this.view.on("change-selectedItemId", +this.onSelectedItemId,this));this._listeners.push(this.view.on("click-item",this.onItemClick,this));this._listeners.push(c.on("scroll",function(){this.viewRepositionListener()},this));this._listeners.push(k.on("scroll",function(){this.viewRepositionListener()},this));this._listeners.push(b.on("contentDom",a,this));this._listeners.push(this.view.element.on("mousedown",function(a){a.data.preventDefault()},null,null,9999));d&&a.call(this)},close:function(){this.model.setActive(!1);this.view.close()}, +commit:function(a){if(this.model.isActive){this.close();if(null==a&&(a=this.model.selectedItemId,null==a))return;a=this.model.getItemById(a);var b=this.editor;b.fire("saveSnapshot");b.getSelection().selectRanges([this.model.range]);b.insertHtml(this.getHtmlToInsert(a),"text");b.fire("saveSnapshot")}},destroy:function(){CKEDITOR.tools.array.forEach(this._listeners,function(a){a.removeListener()});this._listeners=[];this.view.element&&this.view.element.remove()},getHtmlToInsert:function(a){a=l(a);return this.outputTemplate? +this.outputTemplate.output(a):a.name},getModel:function(a){var b=this;return new h(function(c,d){return a.call(this,CKEDITOR.tools.extend({autocomplete:b},c),d)})},getTextWatcher:function(a){return new CKEDITOR.plugins.textWatcher(this.editor,a,this.throttle)},getView:function(){return new g(this.editor)},open:function(){this.model.hasData()&&(this.model.setActive(!0),this.view.open(),this.model.selectFirst(),this.view.updatePosition(this.model.range))},viewRepositionListener:function(){this.model.isActive&& +this.view.updatePosition(this.model.range)},modelChangeListener:function(a){this.model.hasData()?(this.view.updateItems(a.data),this.open()):this.close()},onItemClick:function(a){this.commit(a.data)},onKeyDown:function(a){if(this.model.isActive){var b=a.data.getKey(),c=!1;27==b?(this.close(),this.textWatcher.unmatch(),c=!0):40==b?(this.model.selectNext(),c=!0):38==b?(this.model.selectPrevious(),c=!0):-1!=CKEDITOR.tools.indexOf(this.commitKeystrokes,b)&&(this.commit(),this.textWatcher.unmatch(),c= +!0);c&&(a.cancel(),a.data.preventDefault(),this.textWatcher.consumeNext())}},onSelectedItemId:function(a){this.model.setItem(a.data);this.view.selectItem(a.data)},onTextMatched:function(a){this.model.setActive(!1);this.model.setQuery(a.data.text,a.data.range)},onTextUnmatched:function(){this.model.query=null;this.model.lastRequestId=null;this.close()}};g.prototype={append:function(){this.document=CKEDITOR.document;this.element=this.createElement();this.document.getBody().append(this.element)},appendItems:function(a){this.element.setHtml(""); +this.element.append(a)},attach:function(){this.element.on("click",function(a){(a=a.data.getTarget().getAscendant(this.isItemElement,!0))&&this.fire("click-item",a.data("id"))},this);this.element.on("mouseover",function(a){a=a.data.getTarget();this.element.contains(a)&&(a=a.getAscendant(function(a){return a.hasAttribute("data-id")},!0))&&(a=a.data("id"),this.fire("change-selectedItemId",a))},this)},close:function(){this.element.removeClass("cke_autocomplete_opened")},createElement:function(){var a= +new CKEDITOR.dom.element("ul",this.document);a.addClass("cke_autocomplete_panel");a.setStyle("z-index",this.editor.config.baseFloatZIndex-3);return a},createItem:function(a){a=l(a);return CKEDITOR.dom.element.createFromHtml(this.itemTemplate.output(a),this.document)},getViewPosition:function(a){a=a.getClientRects();a=a[a.length-1];var b;b=this.editor.editable();b=b.isInline()?CKEDITOR.document.getWindow().getScrollPosition():b.getParent().getDocumentPosition(CKEDITOR.document);var c=CKEDITOR.document.getBody(); +"static"===c.getComputedStyle("position")&&(c=c.getParent());c=c.getDocumentPosition();b.x-=c.x;b.y-=c.y;return{top:a.top+b.y,bottom:a.top+a.height+b.y,left:a.left+b.x}},getItemById:function(a){return this.element.findOne('li[data-id\x3d"'+a+'"]')},isItemElement:function(a){return a.type==CKEDITOR.NODE_ELEMENT&&Boolean(a.data("id"))},open:function(){this.element.addClass("cke_autocomplete_opened")},selectItem:function(a){null!=this.selectedItemId&&this.getItemById(this.selectedItemId).removeClass("cke_autocomplete_selected"); +var b=this.getItemById(a);b.addClass("cke_autocomplete_selected");this.selectedItemId=a;this.scrollElementTo(b)},setPosition:function(a){var b=this.editor,c=this.element.getSize("height"),d=b.editable(),b=CKEDITOR.env.iOS&&!d.isInline()?b.window.getFrame().getParent().getClientRect(!0):d.isInline()?d.getClientRect(!0):b.window.getFrame().getClientRect(!0),d=a.top-b.top,k=b.bottom-a.bottom,e;e=a.top<b.top?b.top:Math.min(b.bottom,a.bottom);c>k&&c<d&&(e=a.top-c);b.bottom<a.bottom&&(e=Math.min(a.top- +c,b.bottom-c));b.top>a.top&&(e=Math.max(a.bottom,b.top));this.element.setStyles({left:a.left+"px",top:e+"px"})},scrollElementTo:function(a){a.scrollIntoParent(this.element)},updateItems:function(a){var b,c=new CKEDITOR.dom.documentFragment(this.document);for(b=0;b<a.length;++b)c.append(this.createItem(a[b]));this.appendItems(c);this.selectedItemId=null},updatePosition:function(a){this.setPosition(this.getViewPosition(a))}};CKEDITOR.event.implementOn(g.prototype);h.prototype={getIndexById:function(a){if(!this.hasData())return-1; +for(var b=this.data,c=0,d=b.length;c<d;c++)if(b[c].id==a)return c;return-1},getItemById:function(a){a=this.getIndexById(a);return~a&&this.data[a]||null},hasData:function(){return Boolean(this.data&&this.data.length)},setItem:function(a){if(0>this.getIndexById(a))throw Error("Item with given id does not exist");this.selectedItemId=a},select:function(a){this.fire("change-selectedItemId",a)},selectFirst:function(){this.hasData()&&this.select(this.data[0].id)},selectLast:function(){this.hasData()&&this.select(this.data[this.data.length- +1].id)},selectNext:function(){if(null==this.selectedItemId)this.selectFirst();else{var a=this.getIndexById(this.selectedItemId);0>a||a+1==this.data.length?this.selectFirst():this.select(this.data[a+1].id)}},selectPrevious:function(){if(null==this.selectedItemId)this.selectLast();else{var a=this.getIndexById(this.selectedItemId);0>=a?this.selectLast():this.select(this.data[a-1].id)}},setActive:function(a){this.isActive=a;this.fire("change-isActive",a)},setQuery:function(a,b){var c=this,d=CKEDITOR.tools.getNextId(); +this.lastRequestId=d;this.query=a;this.range=b;this.selectedItemId=this.data=null;this.dataCallback({query:a,range:b},function(a){d==c.lastRequestId&&(c.data=c.itemsLimit?a.slice(0,c.itemsLimit):a,c.fire("change-data",c.data))})}};CKEDITOR.event.implementOn(h.prototype);CKEDITOR.plugins.autocomplete=f;f.view=g;f.model=h;CKEDITOR.config.autocomplete_commitKeystrokes=[9,13]})(); \ No newline at end of file diff --git a/src/static/ckeditor/plugins/autocomplete/skins/default.css b/src/static/ckeditor/plugins/autocomplete/skins/default.css new file mode 100644 index 00000000..f96974cd --- /dev/null +++ b/src/static/ckeditor/plugins/autocomplete/skins/default.css @@ -0,0 +1,38 @@ +/* +Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ + +.cke_autocomplete_panel +{ + position: absolute; + display: none; + box-sizing: border-box; + width: 200px; + max-height: 300px; + overflow: auto; + padding: 0; + margin: 0; + list-style: none; + background: #FFF; + border: 1px solid #b6b6b6; + border-bottom-color: #999; + border-radius: 3px; + font: 12px Arial, Helvetica, Tahoma, Verdana, Sans-Serif; +} +.cke_autocomplete_opened +{ + display: block; +} +.cke_autocomplete_panel > li +{ + padding: 5px; +} +.cke_autocomplete_panel > li:hover +{ + cursor: pointer; +} +.cke_autocomplete_selected, .cke_autocomplete_panel > li:hover +{ + background-color: #EFF0EF; +} diff --git a/src/static/ckeditor/plugins/autoembed/lang/zh-cn.js b/src/static/ckeditor/plugins/autoembed/lang/zh-cn.js new file mode 100644 index 00000000..959fc45d --- /dev/null +++ b/src/static/ckeditor/plugins/autoembed/lang/zh-cn.js @@ -0,0 +1 @@ +CKEDITOR.plugins.setLang("autoembed","zh-cn",{embeddingInProgress:"正在尝试嵌入粘贴的 URL 里的媒体内容...",embeddingFailed:"此 URL 无法自动嵌入媒体内容"}); \ No newline at end of file diff --git a/src/static/ckeditor/plugins/autoembed/plugin.js b/src/static/ckeditor/plugins/autoembed/plugin.js new file mode 100644 index 00000000..76d0b246 --- /dev/null +++ b/src/static/ckeditor/plugins/autoembed/plugin.js @@ -0,0 +1,9 @@ +/* + Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved. + For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +(function(){function p(a,g){var b=a.editable().findOne('a[data-cke-autoembed\x3d"'+g+'"]'),c=a.lang.autoembed,d;if(b&&b.data("cke-saved-href")){var b=b.data("cke-saved-href"),e=CKEDITOR.plugins.autoEmbed.getWidgetDefinition(a,b);if(e){var f="function"==typeof e.defaults?e.defaults():e.defaults,f=CKEDITOR.dom.element.createFromHtml(e.template.output(f)),h,m=a.widgets.wrapElement(f,e.name),n=new CKEDITOR.dom.documentFragment(m.getDocument());n.append(m);(h=a.widgets.initOn(f,e))?(d=a.showNotification(c.embeddingInProgress, +"info"),h.loadContent(b,{noNotifications:!0,callback:function(){var b=a.editable().findOne('a[data-cke-autoembed\x3d"'+g+'"]');if(b){var c=a.getSelection(),e=a.createRange(),f=a.editable();a.fire("saveSnapshot");a.fire("lockSnapshot",{dontUpdate:!0});var l=c.createBookmarks(!1)[0],k=l.startNode,h=l.endNode||k;CKEDITOR.env.ie&&9>CKEDITOR.env.version&&!l.endNode&&k.equals(b.getNext())&&b.append(k);e.setStartBefore(b);e.setEndAfter(b);f.insertElement(m,e);f.contains(k)&&f.contains(h)?c.selectBookmarks([l]): +(k.remove(),h.remove());a.fire("unlockSnapshot")}d.hide();a.widgets.finalizeCreation(n)},errorCallback:function(){d.hide();a.widgets.destroy(h,!0);a.showNotification(c.embeddingFailed,"info")}})):a.widgets.finalizeCreation(n)}else CKEDITOR.warn("autoembed-no-widget-def")}}var q=/^<a[^>]+href="([^"]+)"[^>]*>([^<]+)<\/a>$/i;CKEDITOR.plugins.add("autoembed",{requires:"autolink,undo",lang:"ar,az,bg,ca,cs,da,de,de-ch,el,en,en-au,eo,es,es-mx,et,eu,fa,fr,gl,hr,hu,it,ja,km,ko,ku,lt,lv,mk,nb,nl,oc,pl,pt,pt-br,ro,ru,sk,sq,sr,sr-latn,sv,tr,ug,uk,vi,zh,zh-cn", +init:function(a){var g=1,b;a.on("paste",function(c){if(c.data.dataTransfer.getTransferType(a)==CKEDITOR.DATA_TRANSFER_INTERNAL)b=0;else{var d=c.data.dataValue.match(q);if(b=null!=d&&decodeURI(d[1])==decodeURI(d[2]))c.data.dataValue='\x3ca data-cke-autoembed\x3d"'+ ++g+'"'+c.data.dataValue.substr(2)}},null,null,20);a.on("afterPaste",function(){b&&p(a,g)})}});CKEDITOR.plugins.autoEmbed={getWidgetDefinition:function(a,g){var b=a.config.autoEmbed_widget||"embed,embedSemantic",c,d=a.widgets.registered; +if("string"==typeof b)for(b=b.split(",");c=b.shift();){if(d[c])return d[c]}else if("function"==typeof b)return d[b(g)];return null}}})(); \ No newline at end of file diff --git a/src/static/ckeditor/plugins/autogrow/plugin.js b/src/static/ckeditor/plugins/autogrow/plugin.js new file mode 100644 index 00000000..e3731c1d --- /dev/null +++ b/src/static/ckeditor/plugins/autogrow/plugin.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved. + For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +(function(){function h(a){function m(){e=a.document;n=e[CKEDITOR.env.ie?"getBody":"getDocumentElement"]();c=CKEDITOR.env.quirks?e.getBody():e.getDocumentElement();var d=CKEDITOR.env.quirks?c:c.findOne("body");d&&(d.setStyle("height","auto"),d.setStyle("min-height",CKEDITOR.env.safari?"0%":"auto"));f=CKEDITOR.dom.element.createFromHtml('\x3cspan style\x3d"margin:0;padding:0;border:0;clear:both;width:1px;height:1px;display:block;"\x3e'+(CKEDITOR.env.webkit?"\x26nbsp;":"")+"\x3c/span\x3e",e)}function g(){k&& +c.setStyle("overflow-y","hidden");var d=a.window.getViewPaneSize().height,b;n.append(f);b=f.getDocumentPosition(e).y+f.$.offsetHeight;f.remove();b+=h;b=Math.max(b,r);b=Math.min(b,p);b!=d&&l!=b&&(b=a.fire("autoGrow",{currentHeight:d,newHeight:b}).newHeight,a.resize(a.container.getStyle("width"),b,!0),l=b);k||(b<p&&c.$.scrollHeight>c.$.clientHeight?c.setStyle("overflow-y","hidden"):c.removeStyle("overflow-y"))}var l,e,n,c,f,h=a.config.autoGrow_bottomSpace||0,r=void 0!==a.config.autoGrow_minHeight?a.config.autoGrow_minHeight: +200,p=a.config.autoGrow_maxHeight||Infinity,k=!a.config.autoGrow_maxHeight;a.addCommand("autogrow",{exec:g,modes:{wysiwyg:1},readOnly:1,canUndo:!1,editorFocus:!1});var t={contentDom:1,key:1,selectionChange:1,insertElement:1,mode:1},q;for(q in t)a.on(q,function(d){"wysiwyg"==d.editor.mode&&setTimeout(function(){var b=a.getCommand("maximize");!a.window||b&&b.state==CKEDITOR.TRISTATE_ON?l=null:(g(),k||g())},100)});a.on("afterCommandExec",function(a){"maximize"==a.data.name&&"wysiwyg"==a.editor.mode&& +(a.data.command.state==CKEDITOR.TRISTATE_ON?c.removeStyle("overflow-y"):g())});a.on("contentDom",m);m();a.config.autoGrow_onStartup&&a.editable().isVisible()&&a.execCommand("autogrow")}CKEDITOR.plugins.add("autogrow",{init:function(a){if(a.elementMode!=CKEDITOR.ELEMENT_MODE_INLINE)a.on("instanceReady",function(){a.editable().isInline()?a.ui.space("contents").setStyle("height","auto"):h(a)})}})})(); \ No newline at end of file diff --git a/src/static/ckeditor/plugins/autolink/plugin.js b/src/static/ckeditor/plugins/autolink/plugin.js new file mode 100644 index 00000000..627d8c3f --- /dev/null +++ b/src/static/ckeditor/plugins/autolink/plugin.js @@ -0,0 +1,8 @@ +/* + Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved. + For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +(function(){var f=/"/g;CKEDITOR.plugins.add("autolink",{requires:"clipboard,textmatch",init:function(c){function e(a){a={text:a,link:a.replace(f,"%22")};a=a.link.match(CKEDITOR.config.autolink_urlRegex)?g.output(a):h.output(a);if(c.plugins.link){a=CKEDITOR.dom.element.createFromHtml(a);var b=CKEDITOR.plugins.link.parseLinkAttributes(c,a),b=CKEDITOR.plugins.link.getLinkAttributes(c,b);CKEDITOR.tools.isEmpty(b.set)||a.setAttributes(b.set);b.removed.length&&a.removeAttributes(b.removed);a.removeAttribute("data-cke-saved-href"); +a=a.getOuterHtml()}return a}function k(a,b){var c=a.slice(0,b).split(/\s+/);return(c=c[c.length-1])&&d(c)?{start:a.lastIndexOf(c),end:b}:null}function d(a){return a.match(CKEDITOR.config.autolink_urlRegex)||a.match(CKEDITOR.config.autolink_emailRegex)}var g=new CKEDITOR.template('\x3ca href\x3d"{link}"\x3e{text}\x3c/a\x3e'),h=new CKEDITOR.template('\x3ca href\x3d"mailto:{link}"\x3e{text}\x3c/a\x3e');c.on("paste",function(a){if(a.data.dataTransfer.getTransferType(c)!=CKEDITOR.DATA_TRANSFER_INTERNAL){var b= +a.data.dataValue;-1<b.indexOf("\x3c")||!d(b)||(a.data.dataValue=e(b),a.data.type="html")}});if(!CKEDITOR.env.ie||CKEDITOR.env.edge){var l=c.config.autolink_commitKeystrokes||CKEDITOR.config.autolink_commitKeystrokes;c.on("key",function(a){if("wysiwyg"===c.mode&&-1!=CKEDITOR.tools.indexOf(l,a.data.keyCode)){var b=CKEDITOR.plugins.textMatch.match(c.getSelection().getRanges()[0],k);if(b&&(a=c.getSelection(),!a.getRanges()[0].startContainer.getAscendant("a",!0)&&(a.selectRanges([b.range]),c.insertHtml(e(b.text), +"text"),!CKEDITOR.env.webkit))){var b=a.getRanges()[0],d=c.createRange();d.setStartAfter(b.startContainer);a.selectRanges([d])}}})}}});CKEDITOR.config.autolink_commitKeystrokes=[13,32];CKEDITOR.config.autolink_urlRegex=/^(https?|ftp):\/\/(-\.)?([^\s\/?\.#]+\.?)+(\/[^\s]*)?[^\s\.,]$/i;CKEDITOR.config.autolink_emailRegex=/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/})(); \ No newline at end of file diff --git a/src/static/ckeditor/plugins/balloonpanel/plugin.js b/src/static/ckeditor/plugins/balloonpanel/plugin.js new file mode 100644 index 00000000..779dec18 --- /dev/null +++ b/src/static/ckeditor/plugins/balloonpanel/plugin.js @@ -0,0 +1,22 @@ +/* + Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved. + For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +(function(){var f=!1;CKEDITOR.plugins.add("balloonpanel",{init:function(){f||(CKEDITOR.document.appendStyleSheet(this.path+"skins/"+CKEDITOR.skin.name+"/balloonpanel.css"),f=!0)}});CKEDITOR.ui.balloonPanel=function(a,b){this.editor=a;CKEDITOR.tools.extend(this,{width:360,height:"auto",triangleWidth:20,triangleHeight:20,triangleMinDistance:40},b,!0);this.templates={};for(var c in this.templateDefinitions)this.templates[c]=new CKEDITOR.template(this.templateDefinitions[c]);this.parts={};this.focusables= +{};this.showListeners={};this.activeShowListeners={};this.rect={visible:!1};this.build();a.on("destroy",function(){this.destroy()},this)};CKEDITOR.ui.balloonPanel.prototype={templateDefinitions:{panel:'\x3cdiv class\x3d"cke {id} cke_reset_all cke_chrome cke_balloon cke_editor_{name} cke_{langDir} '+CKEDITOR.env.cssClass+'" dir\x3d"{langDir}" title\x3d"'+(CKEDITOR.env.gecko?" ":"")+'" lang\x3d"{langCode}" role\x3d"dialog" style\x3d"{style}" tabindex\x3d"-1" aria-labelledby\x3d"cke_{name}_arialbl"\x3e\x3c/div\x3e', +content:'\x3cdiv class\x3d"cke_balloon_content"\x3e{content}\x3c/div\x3e',title:'\x3cdiv class\x3d"cke_balloon_title" role\x3d"presentation"\x3e{title}\x3c/div\x3e',close:'\x3ca class\x3d"cke_balloon_close_button" href\x3d"javascript:void(0)" title\x3d"Close" role\x3d"button" tabindex\x3d"-1"\x3e\x3cspan class\x3d"cke_label"\x3eX\x3c/span\x3e\x3c/a\x3e',triangleOuter:'\x3cspan class\x3d"cke_balloon_triangle cke_balloon_triangle_outer"\x3e\x3c/span\x3e',triangleInner:'\x3cspan class\x3d"cke_balloon_triangle cke_balloon_triangle_inner"\x3e\x26#8203;\x3c/span\x3e'}, +build:function(){var a=this.editor;this.parts={title:CKEDITOR.dom.element.createFromHtml(this.templates.title.output({title:this.title})),close:CKEDITOR.dom.element.createFromHtml(this.templates.close.output()),panel:CKEDITOR.dom.element.createFromHtml(this.templates.panel.output({id:a.id,langDir:a.lang.dir,langCode:a.langCode,name:a.name,style:"display:none;",voiceLabel:a.lang.editorPanel+", "+a.name})),content:CKEDITOR.dom.element.createFromHtml(this.templates.content.output({content:this.content|| +""})),triangleOuter:CKEDITOR.dom.element.createFromHtml(this.templates.triangleOuter.output()),triangleInner:CKEDITOR.dom.element.createFromHtml(this.templates.triangleInner.output())};this.parts.panel.append(this.parts.title,1);this.parts.panel.append(this.parts.close,1);this.parts.panel.append(this.parts.triangleOuter);this.parts.panel.append(this.parts.content);this.parts.triangleOuter.append(this.parts.triangleInner);this.registerFocusable(this.parts.panel);this.registerFocusable(this.parts.close); +this.parts.title.unselectable();this.parts.close.unselectable();CKEDITOR.document.getBody().append(this.parts.panel);this.resize(this.width,this.height);this.on("show",this.activateShowListeners,this);this.on("hide",this.deactivateShowListeners,this);this.parts.close.on("click",function(a){this.hide();a.data.preventDefault()},this)},show:function(){this.rect.visible||(this.rect.visible=!0,this.parts.panel.show(),this.fire("show"))},hide:function(){this.rect.visible&&(this.rect.visible=!1,this.parts.panel.hide(), +this.blur(),this.fire("hide"))},blur:function(){this.editor.focus()},move:function(a,b){this.rect.left=b;this.rect.top=a;this.parts.panel.setStyles({left:CKEDITOR.tools.cssLength(b),top:CKEDITOR.tools.cssLength(a)})},attach:function(){function a(a,b){var d=Math.max(0,Math.min(a.right,b.right)-Math.max(a.left,b.left)),c=Math.max(0,Math.min(a.bottom,b.bottom)-Math.max(a.top,b.top));return d*c}function b(a,b,c,e){a={top:a,left:b};a.right=a.left+c;a.bottom=a.top+e;return a}function c(a,b){a.right=b.right; +a.width=a.right-a.left;b.y&&(a.y=b.y);return a}function z(a){var b=f(a,!0);a=f(a);b=c(b[0],b.pop());a=c(a[0],a.pop());b.bottom=a.bottom;b.height=b.bottom-b.top;a.y&&(b.y=a.y);a.top=b.top;a.height=b.height;return[b,a]}function f(a,b){var c=b?a[0]:a[a.length-1],e=b?"top":"bottom";return CKEDITOR.tools.array.filter(a,function(a){if(a[e]===c[e])return a})}var u,v,x,q,A={right:"left",top:"bottom",topLeft:"bottomLeft",topRight:"bottomRight",bottom:"top",bottomLeft:"topLeft",bottomRight:"topRight",left:"right"}; +return function(p,l){if(p instanceof CKEDITOR.dom.selection){var d=p.getRanges(),d=p.isFake&&p.isInTable()?CKEDITOR.tools.array.map(d,function(a){return a.getClientRects(!0)[0]}):d[d.length-1].getClientRects(!0),e=d[0],f=d[d.length-1],r;r=e===f?[e]:e.top===f.top?[c(e,f)]:z(d)}if(l instanceof CKEDITOR.dom.element||!l)l={focusElement:l};l=CKEDITOR.tools.extend(l,{show:!0});!0===l.show&&this.show();this.fire("attach");u=CKEDITOR.document.getWindow();v=this.editor.window.getFrame();x=this.editor.editable(); +q=x.isInline();!q&&CKEDITOR.env.safari&&(v=v.getParent());var d=this.getWidth(),e=this.getHeight(),f=d*e,g,k,h;g=p.getClientRect&&p.getClientRect(!0);var t=q?x.getClientRect(!0):v.getClientRect(!0),y=u.getViewPaneSize(),w=u.getScrollPosition(),m={top:Math.max(t.top,w.y),left:Math.max(t.left,w.x),right:Math.min(t.right,y.width+w.x),bottom:Math.min(t.bottom,y.height+w.y)};q&&this.editor.elementMode===CKEDITOR.ELEMENT_MODE_INLINE&&(m=this._getViewPaneRect(u),m.right+=this.triangleWidth,m.bottom+=this.triangleHeight); +r?(CKEDITOR.tools.array.forEach(r,function(a){this._adjustElementRect(a,q?m:t)},this),g=this._getAlignments(r[0],d,e),1<r.length&&(g["bottom hcenter"]=this._getAlignments(r[1],d,e)["bottom hcenter"]),h={"top hcenter":!0,"bottom hcenter":!0}):(this._adjustElementRect(g,q?m:t),g=this._getAlignments(g,d,e));for(var n in h||g){h=b(g[n].top,g[n].left,d,e);h=g[n].areaDifference=f-a(h,m);if(0===h){k=n;break}k||(k=n);h<g[k].areaDifference&&(k=n)}n=(h=this.parts.panel.getAscendant(function(a){return a instanceof +CKEDITOR.dom.document?!1:"static"!==a.getComputedStyle("position")}))?parseInt(h.getComputedStyle("margin-left"),10):0;h=h?parseInt(h.getComputedStyle("margin-top"),10):0;this.move(g[k].top-h,g[k].left-n);k=k.split(" ");this.setTriangle(A[k[0]],k[1]);!1!==l.focusElement&&(l.focusElement||this.parts.panel).focus()}}(),resize:function(a,b){this.rect.width=a;this.rect.height=b;this.parts.panel.setStyles({width:CKEDITOR.tools.cssLength(a),height:CKEDITOR.tools.cssLength(b)})},getWidth:function(){return"auto"=== +this.rect.width?this.parts.panel.getClientRect().width:this.rect.width},getHeight:function(){return"auto"===this.rect.height?this.parts.panel.getClientRect().height:this.rect.height},setTriangle:function(a,b){var c=this.parts.triangleOuter,f=this.parts.triangleInner;this.triangleSide&&(c.removeClass("cke_balloon_triangle_"+this.triangleSide),c.removeClass("cke_balloon_triangle_align_"+this.triangleAlign),f.removeClass("cke_balloon_triangle_"+this.triangleSide));this.triangleSide=a;this.triangleAlign= +b;c.addClass("cke_balloon_triangle_"+a);c.addClass("cke_balloon_triangle_align_"+b);f.addClass("cke_balloon_triangle_"+a)},registerFocusable:function(a){this.editor.focusManager.add(a);this.focusables[a.getUniqueId()]=a},deregisterFocusable:function(a){this.editor.focusManager.remove(a);delete this.focusables[a.getUniqueId()]},addShowListener:function(a){var b=CKEDITOR.tools.getNextNumber();this.showListeners[b]=a;this.rect.visible&&this.activateShowListener(b);var c=this;return{removeListener:function(){c.removeShowListener(b)}}}, +removeShowListener:function(a){this.deactivateShowListener(a);delete this.showListeners[a]},activateShowListener:function(a){this.activeShowListeners[a]=this.showListeners[a].call(this)},deactivateShowListener:function(a){this.activeShowListeners[a]&&this.activeShowListeners[a].removeListener();delete this.activeShowListeners[a]},activateShowListeners:function(){for(var a in this.showListeners)this.activateShowListener(a)},deactivateShowListeners:function(){for(var a in this.activeShowListeners)this.deactivateShowListener(a)}, +destroy:function(){this.deactivateShowListeners();this.parts.panel.remove()},setTitle:function(a){this.parts.title.setHtml(a)},_getAlignments:function(a,b,c){return{"right vcenter":{top:a.top+a.height/2-c/2,left:a.right+this.triangleWidth},"left vcenter":{top:a.top+a.height/2-c/2,left:a.left-b-this.triangleWidth},"top hcenter":{top:a.top-c-this.triangleHeight,left:a.left+a.width/2-b/2},"top left":{top:a.top-c-this.triangleHeight,left:a.left+a.width/2-this.triangleMinDistance},"top right":{top:a.top- +c-this.triangleHeight,left:a.right-a.width/2-b+this.triangleMinDistance},"bottom hcenter":{top:a.bottom+this.triangleHeight,left:a.left+a.width/2-b/2},"bottom left":{top:a.bottom+this.triangleHeight,left:a.left+a.width/2-this.triangleMinDistance},"bottom right":{top:a.bottom+this.triangleHeight,left:a.right-a.width/2-b+this.triangleMinDistance}}},_adjustElementRect:function(a,b){a.left=Math.max(b.left,Math.min(b.right-1,a.left));a.right=Math.max(b.left,Math.min(b.right,a.right));a.top=Math.max(b.top, +Math.min(b.bottom-1,a.top));a.bottom=Math.max(b.top,Math.min(b.bottom,a.bottom))},_getViewPaneRect:function(a){var b=a.getScrollPosition();a=a.getViewPaneSize();return{top:b.y,bottom:b.y+a.height,left:b.x,right:b.x+a.width}}};CKEDITOR.event.implementOn(CKEDITOR.ui.balloonPanel.prototype)})(); \ No newline at end of file diff --git a/src/static/ckeditor/plugins/balloonpanel/skins/kama/balloonpanel.css b/src/static/ckeditor/plugins/balloonpanel/skins/kama/balloonpanel.css new file mode 100644 index 00000000..9bcc3fa0 --- /dev/null +++ b/src/static/ckeditor/plugins/balloonpanel/skins/kama/balloonpanel.css @@ -0,0 +1,220 @@ +/* +Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ + +.cke_balloon +{ + position: absolute; + z-index: 10000; + + background: #fff; + border: 1px solid #b2b2b2; + border-bottom-color: #999; + + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + + -moz-box-shadow: 0 0 3px rgba(0, 0, 0, .15); + -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, .15); + box-shadow: 0 0 3px rgba(0, 0, 0, .15); + + outline: none; +} + +.cke_balloon_title +{ + font-weight: bold; + font-size: 14px; + cursor: default; + + color: #474747; + text-shadow: 0 1px 0 rgba(255,255,255,.75); + + padding: 3px 3px 8px; + border-bottom: 1px solid #eee; + + -moz-border-radius: 2px 2px 0 0; + -webkit-border-radius: 2px 2px 0 0; + border-radius: 2px 2px 0 0; + + -moz-box-shadow: 0 1px 0 #fff inset; + -webkit-box-shadow: 0 1px 0 #fff inset; + box-shadow: 0 1px 0 #fff inset; +} + +/* The close button at the top of the panel. */ +a.cke_balloon_close_button +{ + background-image: url(../../../../skins/kama/images/sprites.png); + background-repeat: no-repeat; + background-position: 0 -1022px; + position: absolute; + cursor: pointer; + text-align: center; + height: 20px; + width: 20px; + top: 5px; +} + +a.cke_balloon_close_button:hover { + background-position: 0 -1045px; +} + +.cke_balloon_content +{ + overflow: hidden; + min-height: 68px; +} + +.cke_balloon_close_button:hover +{ + opacity: 1; + filter: alpha(opacity = 100); +} + +.cke_balloon_close_button span +{ + display: none; +} + +.cke_ltr .cke_balloon_close_button +{ + right: 5px; +} + +.cke_rtl .cke_balloon_close_button +{ + left: 6px; +} + +.cke_balloon_triangle +{ + position: absolute; + border-style: solid; + display: block; + width: 0; + height: 0; +} + +.cke_balloon_triangle_inner +{ + z-index: 0; +} + +.cke_balloon_triangle_outer +{ + z-index: 0; +} + +/* side: [ bottom, top ] */ + .cke_balloon_triangle_outer.cke_balloon_triangle_bottom, + .cke_balloon_triangle_outer.cke_balloon_triangle_top + { + border-color: #6B6B6B transparent; + } + + .cke_balloon_triangle_inner.cke_balloon_triangle_bottom, + .cke_balloon_triangle_inner.cke_balloon_triangle_top + { + left: -20px; + } + +/* side: [ bottom ] */ + .cke_balloon_triangle_outer.cke_balloon_triangle_bottom + { + border-width: 20px 20px 0; + bottom: -20px; + } + + .cke_balloon_triangle_inner.cke_balloon_triangle_bottom + { + border-color: #fff transparent; + border-width: 20px 20px 0; + top: -21px; + } + +/* side: [ top ] */ + .cke_balloon_triangle_outer.cke_balloon_triangle_top + { + border-width: 0 20px 20px; + top: -20px; + } + + .cke_balloon_triangle_inner.cke_balloon_triangle_top + { + border-color: #fff transparent; + border-width: 0 20px 20px; + top: 1px; + } + +/* side: [ left, right ] */ + .cke_balloon_triangle_outer.cke_balloon_triangle_left, + .cke_balloon_triangle_outer.cke_balloon_triangle_right + { + border-color: transparent #6B6B6B; + } + + .cke_balloon_triangle_inner.cke_balloon_triangle_left, + .cke_balloon_triangle_inner.cke_balloon_triangle_right + { + border-color: transparent #fff; + top: -20px; + } + +/* side: [ left ] */ + .cke_balloon_triangle_outer.cke_balloon_triangle_left + { + border-width: 20px 20px 20px 0; + left: -20px; + } + + .cke_balloon_triangle_inner.cke_balloon_triangle_left + { + border-color: transparent #fff; + border-width: 20px 20px 20px 0; + left: 1px; + } + +/* side: [ right ] */ + .cke_balloon_triangle_outer.cke_balloon_triangle_right + { + border-width: 20px 0 20px 20px; + right: -20px; + } + + .cke_balloon_triangle_inner.cke_balloon_triangle_right + { + border-width: 20px 0 20px 20px; + right: 1px; + } + + +/* align: [ hcenter ] */ + .cke_balloon_triangle_outer.cke_balloon_triangle_align_hcenter + { + left: 50%; + margin-left: -20px; + } + +/* align: [ left ] */ + .cke_balloon_triangle_outer.cke_balloon_triangle_align_left + { + left: 20px; + margin-left: 0; + } + +/* align: [ right ] */ + .cke_balloon_triangle_outer.cke_balloon_triangle_align_right + { + right: 20px; + margin-left: 0; + } + +/* align: [ vcenter ] */ + .cke_balloon_triangle_outer.cke_balloon_triangle_align_vcenter + { + top: 50%; + margin-top: -20px; + } diff --git a/src/static/ckeditor/plugins/balloonpanel/skins/moono-lisa/balloonpanel.css b/src/static/ckeditor/plugins/balloonpanel/skins/moono-lisa/balloonpanel.css new file mode 100644 index 00000000..2df0b710 --- /dev/null +++ b/src/static/ckeditor/plugins/balloonpanel/skins/moono-lisa/balloonpanel.css @@ -0,0 +1,223 @@ +/* +Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ + +.cke_balloon +{ + position: absolute; + z-index: 10000; + + background: #fff; + border: 2px solid #aaa; + outline: none; +} + +.cke_balloon_title +{ + font-weight: bold; + font-size: 12px; + cursor: default; + + color: #484848; + + padding: 12px 30px 12px 12px; /* Let's the title and close don't overlap each other - padding-right. */ + background: #f8f8f8; +} + +/* The close button at the top of the panel. */ +a.cke_balloon_close_button +{ + background-image: url(images/close.png); + background-repeat: no-repeat; + background-position: 50% -1px; + position: absolute; + cursor: pointer; + text-align: center; + height: 16px; + width: 16px; + top: 8px; + z-index: 5; + opacity: 0.7; + filter: alpha(opacity = 70); + border: 2px solid transparent; + border-radius: 2px; +} + +a.cke_balloon_close_button:focus, +a.cke_balloon_close_button:active +{ + outline: none; + border: 2px solid #0079f7; +} + +.cke_balloon_content +{ + overflow: hidden; + min-height: 68px; + padding: 0 6px 6px 6px; +} + +.cke_balloon_close_button:hover +{ + opacity: 1; + filter: alpha(opacity = 100); +} + +.cke_balloon_close_button:focus:hover +{ + opacity: 1; + filter: alpha(opacity = 100); + border: 2px solid #139FF7; +} + +.cke_hidpi .cke_balloon_close_button +{ + background-image: url(images/hidpi/close.png); + background-size: 16px; +} + +.cke_balloon_close_button span +{ + display: none; +} + +.cke_ltr .cke_balloon_close_button +{ + right: 10px; +} + +.cke_rtl .cke_balloon_close_button +{ + left: 10px; +} + +.cke_balloon_triangle +{ + position: absolute; + border-style: solid; + display: block; + width: 0; + height: 0; +} + +.cke_balloon_triangle_inner +{ + z-index: 0; +} + +.cke_balloon_triangle_outer +{ + z-index: 0; +} + +/* side: [ bottom, top ] */ +.cke_balloon_triangle_outer.cke_balloon_triangle_bottom, +.cke_balloon_triangle_outer.cke_balloon_triangle_top +{ + border-color: #999 transparent; +} + +.cke_balloon_triangle_inner.cke_balloon_triangle_bottom, +.cke_balloon_triangle_inner.cke_balloon_triangle_top +{ + left: -20px; +} + +/* side: [ bottom ] */ +.cke_balloon_triangle_outer.cke_balloon_triangle_bottom +{ + border-width: 20px 20px 0; + bottom: -20px; +} + +.cke_balloon_triangle_inner.cke_balloon_triangle_bottom +{ + border-color: #fff transparent; + border-width: 20px 20px 0; + top: -22px; +} + +/* side: [ top ] */ +.cke_balloon_triangle_outer.cke_balloon_triangle_top +{ + border-width: 0 20px 20px; + top: -20px; +} + +.cke_balloon_triangle_inner.cke_balloon_triangle_top +{ + border-color: #f8f8f8 transparent; + border-width: 0 20px 20px; + top: 2px; +} + +/* side: [ left, right ] */ +.cke_balloon_triangle_outer.cke_balloon_triangle_left, +.cke_balloon_triangle_outer.cke_balloon_triangle_right +{ + border-color: transparent #999; +} + +.cke_balloon_triangle_inner.cke_balloon_triangle_left, +.cke_balloon_triangle_inner.cke_balloon_triangle_right +{ + border-color: transparent #fff; + top: -20px; +} + +/* side: [ left ] */ +.cke_balloon_triangle_outer.cke_balloon_triangle_left +{ + border-width: 20px 20px 20px 0; + left: -20px; +} + +.cke_balloon_triangle_inner.cke_balloon_triangle_left +{ + border-color: transparent #fff; + border-width: 20px 20px 20px 0; + left: 2px; +} + +/* side: [ right ] */ +.cke_balloon_triangle_outer.cke_balloon_triangle_right +{ + border-width: 20px 0 20px 20px; + right: -20px; +} + +.cke_balloon_triangle_inner.cke_balloon_triangle_right +{ + border-width: 20px 0 20px 20px; + right: 2px; +} + + +/* align: [ hcenter ] */ +.cke_balloon_triangle_outer.cke_balloon_triangle_align_hcenter +{ + left: 50%; + margin-left: -20px; +} + +/* align: [ left ] */ +.cke_balloon_triangle_outer.cke_balloon_triangle_align_left +{ + left: 20px; + margin-left: 0; +} + +/* align: [ right ] */ +.cke_balloon_triangle_outer.cke_balloon_triangle_align_right +{ + right: 20px; + margin-left: 0; +} + +/* align: [ vcenter ] */ +.cke_balloon_triangle_outer.cke_balloon_triangle_align_vcenter +{ + top: 50%; + margin-top: -20px; +} diff --git a/src/static/ckeditor/plugins/balloonpanel/skins/moono-lisa/images/close.png b/src/static/ckeditor/plugins/balloonpanel/skins/moono-lisa/images/close.png new file mode 100644 index 0000000000000000000000000000000000000000..40caa6ddfd01c2a26947761de218e4ce8f5e361e GIT binary patch literal 615 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6-E$sR$z z3=CDO3=9p;3=BX21L>Cx45bDP46hOx7_4S6Fo@?*ia+WGRLhp+?e4<x9|RZdT|OBo z!dc)ES<Jw|Eeyhp4727)00r4gJbhi+AFvDa%4zA^eUM~eU<~tgaSX9I-5czfb=ZMN zCiD7(8dZG`mFZ$kN86niOmKerzA8t-a*ESJ+pm+@RnDK-%Drt#oKE%Y8%wQju9nPP za&zgbRSy!=!tbB?^Ll>A1op@M5>3aOmOBJL-|3|^OV7Yn$}BPM-7dk4;tau8cTbEB zVOVq2VrTe-pr)C+XL-*25p&w{RY|c$I<(f*c*aemrB}2+@TEpJ&78kybw|w+iRXsL zc6QXHdC8sL^yZ3dsB5%j+BccxKY6pB9X)fw<gBK=^06NZO4i}aR_$ft7rZIzy0K`{ z^X^3vPgBnK-(yzV_2iv^V8@G3_p3Lod;QC1&(zY``HXAabKk5oyw6-wUc`|o=oFDs zU6F6t_ukz@)6s?R<~DPsB9V#8#`#9&e0j<Y8&;K>F<ESVvUb(G+cy`ks!qGNZO-J| zD^@L7wQ5(cuwal^+#4;M=MhRyGIp15=9GP9`!r{=?SJOoX15=O)R`Ou2D)mAYeY#( zVo9o1a#1RfVlXl=G}ARO*EO^ZF*LR^Hn1`=(l#)%GBA*sP+ozeAvZrIGp!Q0hRn0) Rj{r3=c)I$ztaD0e0sv6L>9YU; literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/balloonpanel/skins/moono-lisa/images/hidpi/close.png b/src/static/ckeditor/plugins/balloonpanel/skins/moono-lisa/images/hidpi/close.png new file mode 100644 index 0000000000000000000000000000000000000000..0e4aa2efbeb3f7c1850fc0b51d8b151a0d5c9b08 GIT binary patch literal 1259 zcmZ{jdsGs36vuxkVp>!lE!4^-M>F&w_*f+6g9H^Dre>)mh_AvV711!W<<T8SOS73S z4Rp;%Zd2P~hDzj+2slkW=J1h~SgfTY<O9nr)8U`{W9Q!Q{haf?_xtC)5*ZN+w|2A! z0Kmy%#Ap-uZfFzCG&uzYOC~_i5GVuygcX}tlPortDPhqR018|IC@KM9W!=OX0P?T^ z=okRtYXCrGRVFGzOt-M)qoG8wzEQV(T5gyetL(6N4gi~NHv|E<1okG=GM7vtS-!Ni zg*&;U1Lhq7Fn>lS5@O=yhS-6KUF7X+zZM+s6e6@D=S4q+8`E~{2l#ae`+Xx4`VjN- zIgFs~bBZeNDN1dVseMMoPa5ml6$G(9?Wm*J|K0kDyx48?fuB`G1wvUfR?T}bcR3XI ziJOyC>EMjS`V{X4KEcG>qEg;#fuODq0<Kk5aJJSsREN8&DU~j25kyd5ZwAZ~VM_a^ zbZZ-kjm-Xr|6TpiP?RTAveV`fTcAb<lOes?2Z_5?nxF*p0N$1ToS3ifOus<OG#aPO z%*@_d9kWc9BVKZJA63&%U5M?fsd9bq0E%X3GeEwz{0YE{sO>Wu?um?d1wB^152gdk zReuZGX8U#(dBG$S2`otN?jIO9c;#o2X9{4vIcZ1YxEVvFlQ?l(ZLE2Axq>a2%~w73 z_mKu$oy*EvM<JI3V(yL7o5u54J3OkbK@c%VirKUFWG0uYpoT;Z-<L=}jlC^S{_UHj z?msM9%B{xZ+o4!xQ7vb{w=QB%GLczI?0SBwODJS#?de`5LTy%F@6*BTyUWaSC-03W zRz+X_^nSr$Fv#-{?>ntrTU#qRR?55X@)*%Pj9aer*kxCp5FLJL$M=K%t0RjfXn&b6 zWoT|0ZsSZ*C#1xOA{XOPc_;Kjfq=H#$?2inhvaDtj+f_xj0}I}I`1(#YF=bC8Vk3z zp)6`vzN_WZz8<&wrOM34;B6eqIM3MxdKuU_KCOp7d97jk?iMTL5fODF-t*>h?g6_Q ztrmI8l4L&HP(L_z{E&g=_FQCG^`*1~r0V<kN1rT~F(M1-(&5g5ekDHnP20i?*f5oU zUNYf{=Nj&ZN%3Xi_CzL^$9xm~*uP2d!yh<}{3{+u;y|{1E8kIi;_Lzbp^kBuj>GK0 z)K;n6+uQ5Br$*fnb@%6S{DEcT%4!QH1u%Ub+d~?M78lCB@(T-B#bWV_=FG)rsAA@1 z>j?g;LK`Z?uzKWJJ$mO=l_Gh;zBFkN-^F`+hd($KcveJJjoFGpjh~9wz`S*5CLCVt zK(1WU9;|=LrOuLj=yT)aujmRQG|G-bo6@lL_%58oG1^a}w-y8}YO!JeEoS@0w6TtV za>Py$gzl_JH_?Gyj6!{h(#1uGQ;4q{G4m$V-!E1vY~H(REj!~2sLT@ik$yh7Q%YQ- zq29^hz0ZF4*02+{1Z8}N7O^NdT;d5$tRGv_KUTE1is<6bn?EotkaWM+2ZRsP=)}m{ zM>3g=Uq+RuEq~4{`LnsNukWx~mTLx&hjlDBb+~k!=7<z%>%t0yyPcJ$$9K&o#pR|Z z<)-0Na?(ry-dL{#Xe<ux<rm}SgZIJWeZ4)f-gqq5{yI1RKY?>usp+RL{C^;QVDOPC O0LY{W;@u;R;(q~!2{T{- literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/balloonpanel/skins/moono/balloonpanel.css b/src/static/ckeditor/plugins/balloonpanel/skins/moono/balloonpanel.css new file mode 100644 index 00000000..5286b4f8 --- /dev/null +++ b/src/static/ckeditor/plugins/balloonpanel/skins/moono/balloonpanel.css @@ -0,0 +1,237 @@ +/* +Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ + +.cke_balloon +{ + position: absolute; + z-index: 10000; + + background: #fff; + border: 1px solid #b2b2b2; + border-bottom-color: #999; + + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + + -moz-box-shadow: 0 0 3px rgba(0, 0, 0, .15); + -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, .15); + box-shadow: 0 0 3px rgba(0, 0, 0, .15); + + outline: none; +} + +.cke_balloon_title +{ + font-weight: bold; + font-size: 13px; + cursor: default; + + color: #474747; + text-shadow: 0 1px 0 rgba(255,255,255,.75); + + border-bottom: 1px solid #999; + padding: 6px 10px; + + -moz-border-radius: 2px 2px 0 0; + -webkit-border-radius: 2px 2px 0 0; + border-radius: 2px 2px 0 0; + + -moz-box-shadow: 0 1px 0 #fff inset; + -webkit-box-shadow: 0 1px 0 #fff inset; + box-shadow: 0 1px 0 #fff inset; + + /* Let's the title and close don't overlap each other */ + padding-right: 30px; + + background: #cfd1cf; + background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#cfd1cf)); + background-image: -moz-linear-gradient(top, #f5f5f5, #cfd1cf); + background-image: -webkit-linear-gradient(top, #f5f5f5, #cfd1cf); + background-image: -o-linear-gradient(top, #f5f5f5, #cfd1cf); + background-image: -ms-linear-gradient(top, #f5f5f5, #cfd1cf); + background-image: linear-gradient(top, #f5f5f5, #cfd1cf); + filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#f5f5f5', endColorstr='#cfd1cf'); +} + +/* The close button at the top of the panel. */ +a.cke_balloon_close_button +{ + 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: 3px; + z-index: 5; + opacity: 0.8; + filter: alpha(opacity = 80); +} + +.cke_balloon_content +{ + overflow: hidden; + min-height: 68px; +} + +.cke_balloon_close_button:hover +{ + opacity: 1; + filter: alpha(opacity = 100); +} + +.cke_hidpi .cke_balloon_close_button +{ + background-image: url(images/hidpi/close.png); + background-size: 16px; +} + +.cke_balloon_close_button span +{ + display: none; +} + +.cke_ltr .cke_balloon_close_button +{ + right: 5px; +} + +.cke_rtl .cke_balloon_close_button +{ + left: 6px; +} + +.cke_balloon_triangle +{ + position: absolute; + border-style: solid; + display: block; + width: 0; + height: 0; +} + +.cke_balloon_triangle_inner +{ + z-index: 0; +} + +.cke_balloon_triangle_outer +{ + z-index: 0; +} + +/* side: [ bottom, top ] */ + .cke_balloon_triangle_outer.cke_balloon_triangle_bottom, + .cke_balloon_triangle_outer.cke_balloon_triangle_top + { + border-color: #6B6B6B transparent; + } + + .cke_balloon_triangle_inner.cke_balloon_triangle_bottom, + .cke_balloon_triangle_inner.cke_balloon_triangle_top + { + left: -20px; + } + +/* side: [ bottom ] */ + .cke_balloon_triangle_outer.cke_balloon_triangle_bottom + { + border-width: 20px 20px 0; + bottom: -20px; + } + + .cke_balloon_triangle_inner.cke_balloon_triangle_bottom + { + border-color: #fff transparent; + border-width: 20px 20px 0; + top: -21px; + } + +/* side: [ top ] */ + .cke_balloon_triangle_outer.cke_balloon_triangle_top + { + border-width: 0 20px 20px; + top: -20px; + } + + .cke_balloon_triangle_inner.cke_balloon_triangle_top + { + border-color: #f5f5f5 transparent; + border-width: 0 20px 20px; + top: 1px; + } + +/* side: [ left, right ] */ + .cke_balloon_triangle_outer.cke_balloon_triangle_left, + .cke_balloon_triangle_outer.cke_balloon_triangle_right + { + border-color: transparent #6B6B6B; + } + + .cke_balloon_triangle_inner.cke_balloon_triangle_left, + .cke_balloon_triangle_inner.cke_balloon_triangle_right + { + border-color: transparent #fff; + top: -20px; + } + +/* side: [ left ] */ + .cke_balloon_triangle_outer.cke_balloon_triangle_left + { + border-width: 20px 20px 20px 0; + left: -20px; + } + + .cke_balloon_triangle_inner.cke_balloon_triangle_left + { + border-color: transparent #fff; + border-width: 20px 20px 20px 0; + left: 1px; + } + +/* side: [ right ] */ + .cke_balloon_triangle_outer.cke_balloon_triangle_right + { + border-width: 20px 0 20px 20px; + right: -20px; + } + + .cke_balloon_triangle_inner.cke_balloon_triangle_right + { + border-width: 20px 0 20px 20px; + right: 1px; + } + + +/* align: [ hcenter ] */ + .cke_balloon_triangle_outer.cke_balloon_triangle_align_hcenter + { + left: 50%; + margin-left: -20px; + } + +/* align: [ left ] */ + .cke_balloon_triangle_outer.cke_balloon_triangle_align_left + { + left: 20px; + margin-left: 0; + } + +/* align: [ right ] */ + .cke_balloon_triangle_outer.cke_balloon_triangle_align_right + { + right: 20px; + margin-left: 0; + } + +/* align: [ vcenter ] */ + .cke_balloon_triangle_outer.cke_balloon_triangle_align_vcenter + { + top: 50%; + margin-top: -20px; + } diff --git a/src/static/ckeditor/plugins/balloonpanel/skins/moono/images/close.png b/src/static/ckeditor/plugins/balloonpanel/skins/moono/images/close.png new file mode 100644 index 0000000000000000000000000000000000000000..04b9c97dde8273f8518060c82104b38b51832fa0 GIT binary patch literal 824 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b zKpodXn9)gNb_D|iQ=q4dV~EA+rIQW2r5r_$|IbhBX1!iK_4XmB4ZGuZyxX>Mli(%E z3$HvlGJ~HaFWITo!p#_bl)s>kG4~ILn4ZiInf3+cyI*T<`W(k~_vmY;nOSN7-tT?5 z_kMlG#)t>?(@N_U7A5H`{SZHU%5|y8mTLiCjxG~YC1*%7ESS=i8mXXUVBBMvkk)Zx zV?z+v(jd;QQM_K73<pl1=ANX&$Y9aOe7%&B;Y`ohs@}I{+{rv53>j+!*M=?Jx=(qL zyV9$j>$uN<eo!eFbDdT2YsZVg?Ar1!+iwCajMGl5y0FZ9Zp+WcoM|E@*|4wU$=`3% zy>4a_JV!q7Nf$g=w9`d^C7^PGA=~P!uT~qnS<UUsGn?(K^h!8z|IHje>$!bq$4+Rn zRm$m#aRaT?oBmm{=FQhCd#|NJzRQD|8O+Vit9IW#m0|Mh$eHi2ze*L#9F{1SQ8HHc z4Zg9BH*Meg5Uo|W-`4Hlx9=LmhWqbRZRG0Hp8YoQowzL1@kK9x5mTUu>hHgCQ-VsW z92RMKolEYT^XF2b3{bDqtLv}7DjKgo{7|9&u;Yx#t3aOM*WBA}k1bpkwU1Xgef{_8 zQ_+pAttB$Yjb{4TF*LmYZ6CdM+Pt%A&Pql~pVU2tB$E3i4jY^)wB33;_hapR#yj&8 z_k69LfBWq=h6*9Umc$MPj)YE+L~jQEM2UT~&p(fMdGbAP`{}*^yE`_mUcEY>LGD~J zSC6>3_=>RA3QDR<GRF<$;^P?^rh2hHE!ug(Y&P#AjjC?L?|<{QKR%n*tl~K#HS(kW zCY|cVPbK~{ecxOlUm!aB3^2v1mbgZgq$HN4S|t~y0x1R~14Cn719M#ilMq95D+6O7 z(l#)%GBEI6vKyEhku>Dyr(~v8;?`jEllcfxgCxj?;QX|b^2DN4hVt@qz0ADq;^f4F ZRK5J7^x5xhq=1STJYD@<);T3K0RTH-Q&a!| literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/balloonpanel/skins/moono/images/hidpi/close.png b/src/static/ckeditor/plugins/balloonpanel/skins/moono/images/hidpi/close.png new file mode 100644 index 0000000000000000000000000000000000000000..e406c2c35ba11a410291fe484d5bb406657b62eb GIT binary patch literal 1271 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabRA=0V0;tc6XJSh#fqyyv~uOORjaPA zT6JUf>YG5cX3Z@iTD$i4+O>Dqt-HH^{liV09&Ot6c=P5bK(uAc)2&;dZQc4Dh_-Ee zxqbV~9Xnp{-1%nb&bPaFzuUe0^S*tb_wWC5;K0{|2frOS@a^EiABPYBJAV8>5S=*j z|K!R4r%wGpefs~|v;WVX`+xrY{|guXU%veR%9a1uum8V!6X-&s03#y{4-coHAOjN< zF7?84azG>`D=R214OAv9D+@&WmX<*ETmk|DqM|?~A|b&mEX*e&!Vg415fKq-S=pfA zU_(nwIW;wHV`EcmYfF238%IZ5CnqO&cOO5$fY8vu(9p2(@W8OJkjTiem>7E}CkJO| zM^{%T7Z+D|F!1zr_ww=p0#8pbAn@_=1_B=+A73!=^Yilug8&c+3=9kcf?yB`0fJBv z2n!2~0D?#`h>nf|f@lzk0fM-=*x1;(xVU&ANC1Px#3Ud{PEJZmNls2q0fMx&bRfvc z$jZvf&dtrq$yq#0?-bDIOG<+Lf^mfyPH|QlH7z4^3rj0&8(Wb7JUqR8rcR%~VBw0D zt5&bwymi~F_wPS^_y_@CzJ7y)@87@wB@djAYS_oXz$E7B;uvCa`s(Dn{=$I*N1xw& zmuH{2J$}UvvF664p8t)Uot^w@YX3e<Efw+=kX|z7(zLwt@^@!GF7(#4`SEVgojKO~ z?|7b@>HS4MMA5#twxCv@S8$@{k82K*Q#(4=#CkFcR=T*fdPzi-erDAcjNHHLY2?{u z8&A962-^K~k93eA&xEgw=dQTCQgSj^(SkcSY^&H+_8IlaZ_V2K&rrQ^&eMkQ)$jKo z-Tcq>QD?>Nw^8pe2fz6zd3@zMhG31h-+n9WXI3n`bLUlUNZF@U3*XP;JztqFmn8A) zU0x9Ny6(c2hoAc|9(u~aV3B*^;^~i<-tU_p^7Zw}pDGir7cZD)cvUg2KF)rcPiaAs zS>%pt^@k?OCJU~-)L1=_r!MxqtQmua!EBF+7&QyoKl9Ga%}ZnKFx)8aDEj5|?FysE zq4lX>wd7837f{l=vuW$Iz**P$qi^fSbuwKrJ02!+gJF&Q)<t{Gr}WoOQVT0ywBcQO zytZ@uX0Dd9OK<u<badowmHhha(18qx4C#;kJdNqQ`gV)Hlg&~qGTq@RwscWf<|n3; zR`0wPmuE;w@Vi~#sH2@KB(3(@;&4_AZ<AGb!mnDBd6Si`IC`^eIo8}c8mpJ*oVI-N z$DX5_le+lJ>q<8ZnjeXq6B~Ozf^oT&wN%`lJ4T<@emnIwOEc2%aZRRn;?5~LYTo7h wzq#6<u$Vfvl0W6$PSdc3uj@a1{M-DGX;O1gaCJP-eNc+^boFyt=akR{0APJM!2kdN literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/balloontoolbar/plugin.js b/src/static/ckeditor/plugins/balloontoolbar/plugin.js new file mode 100644 index 00000000..11534c66 --- /dev/null +++ b/src/static/ckeditor/plugins/balloontoolbar/plugin.js @@ -0,0 +1,20 @@ +/* + Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved. + For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +(function(){function g(a,b){this.editor=a;this.options=b;this.toolbar=new CKEDITOR.ui.balloonToolbar(a);this.options&&"undefined"===typeof this.options.priority&&(this.options.priority=CKEDITOR.plugins.balloontoolbar.PRIORITY.MEDIUM);this._loadButtons()}function h(a){this.editor=a;this._contexts=[];this._listeners=[];this._attachListeners()}var l=function(){return CKEDITOR.tools.array.filter(["matches","msMatchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector"],function(a){return window.HTMLElement? +a in HTMLElement.prototype:!1})[0]}();CKEDITOR.ui.balloonToolbarView=function(a,b){b=CKEDITOR.tools.extend(b||{},{width:"auto",triangleWidth:7,triangleHeight:7});CKEDITOR.ui.balloonPanel.call(this,a,b);this._listeners=[]};CKEDITOR.ui.balloonToolbar=function(a,b){this._view=new CKEDITOR.ui.balloonToolbarView(a,b);this._items={}};CKEDITOR.ui.balloonToolbar.prototype.attach=function(a,b){this._view.renderItems(this._items);this._view.attach(a,{focusElement:!1,show:!b})};CKEDITOR.ui.balloonToolbar.prototype.show= +function(){this._view.show()};CKEDITOR.ui.balloonToolbar.prototype.hide=function(){this._view.hide()};CKEDITOR.ui.balloonToolbar.prototype.reposition=function(){this._view.reposition()};CKEDITOR.ui.balloonToolbar.prototype.addItem=function(a,b){this._items[a]=b};CKEDITOR.ui.balloonToolbar.prototype.addItems=function(a){for(var b in a)this.addItem(b,a[b])};CKEDITOR.ui.balloonToolbar.prototype.getItem=function(a){return this._items[a]};CKEDITOR.ui.balloonToolbar.prototype.deleteItem=function(a){this._items[a]&& +(delete this._items[a],this._view.renderItems(this._items))};CKEDITOR.ui.balloonToolbar.prototype.destroy=function(){for(var a in this._items)this._items[a].destroy&&this._items[a].destroy(),this.deleteItem(a);this._pointedElement=null;this._view.destroy()};CKEDITOR.ui.balloonToolbar.prototype.refresh=function(){for(var a in this._items){var b=this._view.editor.getCommand(this._items[a].command);b&&b.refresh(this._view.editor,this._view.editor.elementPath())}};g.prototype={destroy:function(){this.toolbar&& +this.toolbar.destroy()},show:function(a){a&&this.toolbar.attach(a);this.toolbar.show()},hide:function(){this.toolbar.hide()},refresh:function(){this.toolbar.refresh()},_matchRefresh:function(a,b){var c=null;this.options.refresh&&(c=this.options.refresh(this.editor,a,b)||null)&&!1===c instanceof CKEDITOR.dom.element&&(c=a&&a.lastElement||this.editor.editable());return c},_matchWidget:function(){var a=this.options.widgets,b=null;if(a){var c=this.editor.widgets&&this.editor.widgets.focused&&this.editor.widgets.focused.name; +"string"===typeof a&&(a=a.split(","));-1!==CKEDITOR.tools.array.indexOf(a,c)&&(b=this.editor.widgets.focused.element)}return b},_matchElement:function(a){return this.options.cssSelector&&l&&a.$[l](this.options.cssSelector)?a:null},_loadButtons:function(){var a=this.options.buttons;a&&(a=a.split(","),CKEDITOR.tools.array.forEach(a,function(a){var c=this.editor.ui.create(a);c&&this.toolbar.addItem(a,c)},this))}};h.prototype={create:function(a){a=new CKEDITOR.plugins.balloontoolbar.context(this.editor, +a);this.add(a);return a},add:function(a){this._contexts.push(a)},check:function(a){function b(a,b,c){f(a,function(a){if(!k||k.options.priority>a.options.priority){var d=b(a,c);d instanceof CKEDITOR.dom.element&&(g=d,k=a)}})}function c(a,b){return a._matchElement(b)}a||(a=this.editor.getSelection(),CKEDITOR.tools.array.forEach(a.getRanges(),function(a){a.shrink(CKEDITOR.SHRINK_ELEMENT,!0)}));if(a){var f=CKEDITOR.tools.array.forEach,d=a.getRanges()[0],e=d&&d.startPath(),g,k;b(this._contexts,function(b){return b._matchRefresh(e, +a)});b(this._contexts,function(a){return a._matchWidget()});if(e)for((d=a.getSelectedElement())&&!d.isReadOnly()&&b(this._contexts,c,d),d=0;d<e.elements.length;d++){var h=e.elements[d];h.isReadOnly()||b(this._contexts,c,h)}this.hide();k&&k.show(g)}},hide:function(){CKEDITOR.tools.array.forEach(this._contexts,function(a){a.hide()})},destroy:function(){CKEDITOR.tools.array.forEach(this._listeners,function(a){a.removeListener()});this._listeners.splice(0,this._listeners.length);this._clear()},_clear:function(){CKEDITOR.tools.array.forEach(this._contexts, +function(a){a.destroy()});this._contexts.splice(0,this._contexts.length)},_refresh:function(){CKEDITOR.tools.array.forEach(this._contexts,function(a){a.refresh()})},_attachListeners:function(){this._listeners.push(this.editor.on("destroy",function(){this.destroy()},this),this.editor.on("selectionChange",function(){this.check()},this),this.editor.on("mode",function(){this.hide()},this,null,9999),this.editor.on("blur",function(){this.hide()},this,null,9999),this.editor.on("afterInsertHtml",function(){this.check(); +this._refresh()},this,null,9999))}};var m=!1,n=!1;CKEDITOR.plugins.add("balloontoolbar",{requires:"balloonpanel",isSupportedEnvironment:function(){return!CKEDITOR.env.ie||8<CKEDITOR.env.version},beforeInit:function(a){n||(CKEDITOR.document.appendStyleSheet(this.path+"skins/default.css"),CKEDITOR.document.appendStyleSheet(this.path+"skins/"+CKEDITOR.skin.name+"/balloontoolbar.css"),n=!0);a.balloonToolbars=new CKEDITOR.plugins.balloontoolbar.contextManager(a)},init:function(a){a.balloonToolbars=new CKEDITOR.plugins.balloontoolbar.contextManager(a); +m||(m=!0,CKEDITOR.ui.balloonToolbarView.prototype=CKEDITOR.tools.extend({},CKEDITOR.ui.balloonPanel.prototype),CKEDITOR.ui.balloonToolbarView.prototype.build=function(){CKEDITOR.ui.balloonPanel.prototype.build.call(this);this.parts.panel.addClass("cke_balloontoolbar");this.parts.title.remove();this.deregisterFocusable(this.parts.close);this.parts.close.remove()},CKEDITOR.ui.balloonToolbarView.prototype.show=function(){function a(){this.reposition()}if(!this.rect.visible){var c=this.editor,f=c.editable(), +d=f.isInline()?f:f.getDocument(),e=CKEDITOR.document.getWindow();CKEDITOR.env.iOS&&!f.isInline()&&(d=c.window.getFrame().getParent());this._detachListeners();this._listeners.push(c.on("change",a,this));this._listeners.push(c.on("resize",a,this));this._listeners.push(e.on("resize",a,this));this._listeners.push(e.on("scroll",a,this));this._listeners.push(d.on("scroll",a,this));CKEDITOR.ui.balloonPanel.prototype.show.call(this)}},CKEDITOR.ui.balloonToolbarView.prototype.reposition=function(){this.rect.visible&& +this.attach(this._pointedElement,{focusElement:!1})},CKEDITOR.ui.balloonToolbarView.prototype.hide=function(){this._detachListeners();CKEDITOR.ui.balloonPanel.prototype.hide.call(this)},CKEDITOR.ui.balloonToolbarView.prototype.blur=function(a){a&&this.editor.focus()},CKEDITOR.ui.balloonToolbarView.prototype._getAlignments=function(a,c,f){a=CKEDITOR.ui.balloonPanel.prototype._getAlignments.call(this,a,c,f);return{"bottom hcenter":a["bottom hcenter"],"top hcenter":a["top hcenter"]}},CKEDITOR.ui.balloonToolbarView.prototype._detachListeners= +function(){this._listeners.length&&(CKEDITOR.tools.array.forEach(this._listeners,function(a){a.removeListener()}),this._listeners=[])},CKEDITOR.ui.balloonToolbarView.prototype.destroy=function(){this._deregisterItemFocusables();CKEDITOR.ui.balloonPanel.prototype.destroy.call(this);this._detachListeners()},CKEDITOR.ui.balloonToolbarView.prototype.renderItems=function(a){var c=[],f=CKEDITOR.tools.object.keys(a),d=!1;this._deregisterItemFocusables();CKEDITOR.tools.array.forEach(f,function(e){CKEDITOR.ui.richCombo&& +a[e]instanceof CKEDITOR.ui.richCombo&&d?(d=!1,c.push("\x3c/span\x3e")):CKEDITOR.ui.richCombo&&a[e]instanceof CKEDITOR.ui.richCombo||d||(d=!0,c.push('\x3cspan class\x3d"cke_toolgroup"\x3e'));a[e].render(this.editor,c)},this);d&&c.push("\x3c/span\x3e");this.parts.content.setHtml(c.join(""));this.parts.content.unselectable();CKEDITOR.tools.array.forEach(this.parts.content.find("a").toArray(),function(a){a.setAttribute("draggable","false");this.registerFocusable(a)},this)},CKEDITOR.ui.balloonToolbarView.prototype.attach= +function(a,c){this._pointedElement=a;CKEDITOR.ui.balloonPanel.prototype.attach.call(this,a,c)},CKEDITOR.ui.balloonToolbarView.prototype._deregisterItemFocusables=function(){var a=this.focusables,c;for(c in a)this.parts.content.contains(a[c])&&this.deregisterFocusable(a[c])})}});CKEDITOR.plugins.balloontoolbar={context:g,contextManager:h,PRIORITY:{LOW:999,MEDIUM:500,HIGH:10}}})(); \ No newline at end of file diff --git a/src/static/ckeditor/plugins/balloontoolbar/skins/default.css b/src/static/ckeditor/plugins/balloontoolbar/skins/default.css new file mode 100644 index 00000000..c66b5856 --- /dev/null +++ b/src/static/ckeditor/plugins/balloontoolbar/skins/default.css @@ -0,0 +1,95 @@ +/* +Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ + +.cke_balloon.cke_balloontoolbar +{ + position: absolute; + z-index: 10000; + outline: none; + background: #f8f8f8; + border: 1px solid #d1d1d1; +} + +.cke_balloon.cke_balloontoolbar .cke_balloon_triangle +{ + position: absolute; + border-style: solid; + display: block; + width: 0; + height: 0; +} + +/* The .cke_balloon_content container height will be stretched to children height, so padding is properly applied. */ +.cke_balloon.cke_balloontoolbar .cke_balloon_content +{ + float: left; + min-height: 10px; + padding: 3px; +} + +/* Removes bottom margins from buttons/combos so only '.cke_balloon_content' padding decides about balloon toolbar padding. */ +.cke_balloon.cke_balloontoolbar .cke_toolgroup, +.cke_balloon.cke_balloontoolbar .cke_combo_button +{ + margin-bottom: 0; +} + +.cke_balloon.cke_balloontoolbar .cke_balloon_content > span:last-child > a.cke_combo_button, +.cke_balloon.cke_balloontoolbar .cke_balloon_content > span:last-child.cke_toolgroup { + margin-right: 0; + padding-right: 0; +} + +.cke_balloon.cke_balloontoolbar .cke_balloon_triangle_inner, +.cke_balloon.cke_balloontoolbar .cke_balloon_triangle_outer +{ + z-index: 0; +} + +/* align: [ hcenter ] */ +.cke_balloon.cke_balloontoolbar .cke_balloon_triangle_outer.cke_balloon_triangle_align_hcenter +{ + left: 50%; + margin-left: -7px; +} + +/* side: [ bottom, top ] */ +.cke_balloon.cke_balloontoolbar .cke_balloon_triangle_outer.cke_balloon_triangle_bottom, +.cke_balloon.cke_balloontoolbar .cke_balloon_triangle_outer.cke_balloon_triangle_top +{ + border-color: #d1d1d1 transparent; +} + +.cke_balloon.cke_balloontoolbar .cke_balloon_triangle_inner.cke_balloon_triangle_bottom, +.cke_balloon.cke_balloontoolbar .cke_balloon_triangle_inner.cke_balloon_triangle_top +{ + border-color: #f8f8f8 transparent; + left: -7px; +} + +/* side: [ bottom ] */ +.cke_balloon.cke_balloontoolbar .cke_balloon_triangle_outer.cke_balloon_triangle_bottom +{ + border-width: 7px 7px 0; + bottom: -7px; +} + +.cke_balloon.cke_balloontoolbar .cke_balloon_triangle_inner.cke_balloon_triangle_bottom +{ + border-width: 7px 7px 0; + top: -8px; +} + +/* side: [ top ] */ +.cke_balloon.cke_balloontoolbar .cke_balloon_triangle_outer.cke_balloon_triangle_top +{ + border-width: 0 7px 7px; + top: -7px; +} + +.cke_balloon.cke_balloontoolbar .cke_balloon_triangle_inner.cke_balloon_triangle_top +{ + border-width: 0 7px 7px; +} diff --git a/src/static/ckeditor/plugins/balloontoolbar/skins/kama/balloontoolbar.css b/src/static/ckeditor/plugins/balloontoolbar/skins/kama/balloontoolbar.css new file mode 100644 index 00000000..b6578832 --- /dev/null +++ b/src/static/ckeditor/plugins/balloontoolbar/skins/kama/balloontoolbar.css @@ -0,0 +1,30 @@ +/* +Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ + +.cke_balloon.cke_balloontoolbar +{ + border: 1px solid #D3D3D3; + background: #fff url(../../../../skins/kama/images/sprites.png) repeat-x 0 -150px; + background: linear-gradient(to bottom, #fff, #d3d3d3 20px); + padding: 0; +} + +.cke_balloon.cke_balloontoolbar .cke_balloon_content +{ + padding: 4px; +} + +/* side: [ bottom, top ] */ +.cke_balloon.cke_balloontoolbar .cke_balloon_triangle_outer.cke_balloon_triangle_bottom, +.cke_balloon.cke_balloontoolbar .cke_balloon_triangle_outer.cke_balloon_triangle_top, +.cke_balloon.cke_balloontoolbar .cke_balloon_triangle_inner.cke_balloon_triangle_bottom +{ + border-color: #D3D3D3 transparent; +} + +.cke_balloon.cke_balloontoolbar .cke_balloon_triangle_inner.cke_balloon_triangle_top +{ + border-color: #fff transparent; +} diff --git a/src/static/ckeditor/plugins/balloontoolbar/skins/moono-lisa/balloontoolbar.css b/src/static/ckeditor/plugins/balloontoolbar/skins/moono-lisa/balloontoolbar.css new file mode 100644 index 00000000..8c003a18 --- /dev/null +++ b/src/static/ckeditor/plugins/balloontoolbar/skins/moono-lisa/balloontoolbar.css @@ -0,0 +1,44 @@ +/* +Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ + +.cke_balloon.cke_balloontoolbar span:last-child a:last-child::after, +.cke_balloon.cke_balloontoolbar span:last-child a:last-child:hover::after, +.cke_balloon.cke_balloontoolbar span:last-child::after +{ + border-right: 0; +} + +.cke_balloon.cke_balloontoolbar .cke_combo +{ + margin-bottom: 0; + margin-right: 2px; +} + +.cke_balloon.cke_balloontoolbar .cke_combo:first-child a.cke_combo_button +{ + margin-left: 0; +} + +.cke_balloon.cke_balloontoolbar .cke_combo:last-child +{ + margin-right: 0; +} + +/* Negative value for left margin is needed to overlap separator (#2535). */ +.cke_balloon.cke_balloontoolbar .cke_combo a.cke_combo_button +{ + margin: 0 1px 0 -2px; +} + +/* Combo states (#1682). */ +.cke_balloon.cke_balloontoolbar .cke_combo_on a.cke_combo_button, +.cke_balloon.cke_balloontoolbar .cke_combo_off a.cke_combo_button:hover, +.cke_balloon.cke_balloontoolbar .cke_combo_off a.cke_combo_button:focus, +.cke_balloon.cke_balloontoolbar .cke_combo_off a.cke_combo_button:active +{ + border: none; + padding: 1px; + outline: 1px solid #bcbcbc; +} diff --git a/src/static/ckeditor/plugins/balloontoolbar/skins/moono/balloontoolbar.css b/src/static/ckeditor/plugins/balloontoolbar/skins/moono/balloontoolbar.css new file mode 100644 index 00000000..7beed84b --- /dev/null +++ b/src/static/ckeditor/plugins/balloontoolbar/skins/moono/balloontoolbar.css @@ -0,0 +1,34 @@ +/* +Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ + +.cke_balloon.cke_balloontoolbar +{ + background: linear-gradient(to bottom, #f5f5f5, #cfd1cf); + filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#f5f5f5', endColorstr='#cfd1cf'); + border: 1px solid #b6b6b6; + border-radius: 0; +} + +.cke_balloon.cke_balloontoolbar .cke_balloon_content +{ + padding: 4px; +} + +/* side: [ bottom, top ] */ +.cke_balloon.cke_balloontoolbar .cke_balloon_triangle_outer.cke_balloon_triangle_bottom, +.cke_balloon.cke_balloontoolbar .cke_balloon_triangle_outer.cke_balloon_triangle_top +{ + border-color: #b6b6b6 transparent; +} + +.cke_balloon.cke_balloontoolbar .cke_balloon_triangle_inner.cke_balloon_triangle_bottom +{ + border-color: #cfd1cf transparent; +} + +.cke_balloon.cke_balloontoolbar .cke_balloon_triangle_inner.cke_balloon_triangle_top +{ + border-color: #f5f5f5 transparent; +} diff --git a/src/static/ckeditor/plugins/bbcode/plugin.js b/src/static/ckeditor/plugins/bbcode/plugin.js new file mode 100644 index 00000000..ffdc9998 --- /dev/null +++ b/src/static/ckeditor/plugins/bbcode/plugin.js @@ -0,0 +1,23 @@ +/* + Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved. + For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +(function(){CKEDITOR.on("dialogDefinition",function(a){var b;b=a.data.name;a=a.data.definition;"link"==b?(a.removeContents("target"),a.removeContents("upload"),a.removeContents("advanced"),b=a.getContents("info"),b.remove("emailSubject"),b.remove("emailBody")):"image"==b&&(a.removeContents("advanced"),b=a.getContents("Link"),b.remove("cmbTarget"),b=a.getContents("info"),b.remove("txtAlt"),b.remove("basic"))});var l={b:"strong",u:"u",i:"em",s:"s",color:"span",size:"span",left:"div",right:"div",center:"div", +justify:"div",quote:"blockquote",code:"code",url:"a",email:"span",img:"span","*":"li",list:"ol"},x={strong:"b",b:"b",u:"u",em:"i",i:"i",s:"s",code:"code",li:"*"},m={strong:"b",em:"i",u:"u",s:"s",li:"*",ul:"list",ol:"list",code:"code",a:"link",img:"img",blockquote:"quote"},y={color:"color",size:"font-size",left:"text-align",center:"text-align",right:"text-align",justify:"text-align"},z={url:"href",email:"mailhref",quote:"cite",list:"listType"},n=CKEDITOR.dtd,A=CKEDITOR.tools.extend({table:1},n.$block, +n.$listItem,n.$tableContent,n.$list),C=/\s*(?:;\s*|$)/,q={smiley:":)",sad:":(",wink:";)",laugh:":D",cheeky:":P",blush:":*)",surprise:":-o",indecision:":|",angry:"\x3e:(",angel:"o:)",cool:"8-)",devil:"\x3e:-)",crying:";(",kiss:":-*"},B={},r=[],t;for(t in q)B[q[t]]=t,r.push(q[t].replace(/\(|\)|\:|\/|\*|\-|\|/g,function(a){return"\\"+a}));var r=new RegExp(r.join("|"),"g"),D=function(){var a=[],b={nbsp:" ",shy:"­"},c;for(c in b)a.push(c);a=new RegExp("\x26("+a.join("|")+");","g");return function(c){return c.replace(a, +function(e,a){return b[a]})}}();CKEDITOR.BBCodeParser=function(){this._={bbcPartsRegex:/(?:\[([^\/\]=]*?)(?:=([^\]]*?))?\])|(?:\[\/([a-z]{1,16})\])/ig}};CKEDITOR.BBCodeParser.prototype={parse:function(a){for(var b,c,k=0;b=this._.bbcPartsRegex.exec(a);)if(c=b.index,c>k&&(k=a.substring(k,c),this.onText(k,1)),k=this._.bbcPartsRegex.lastIndex,(c=(b[1]||b[3]||"").toLowerCase())&&!l[c])this.onText(b[0]);else if(b[1]){var e=l[c],g={},h={};b=b[2];if("left"==c||"right"==c||"center"==c||"justify"==c)b=c;if(b)if("list"== +c&&(isNaN(b)?/^[a-z]+$/.test(b)?b="lower-alpha":/^[A-Z]+$/.test(b)&&(b="upper-alpha"):b="decimal"),y[c]){"size"==c&&(b+="%");h[y[c]]=b;b=g;var f="",d=void 0;for(d in h)var u=(d+":"+h[d]).replace(C,";"),f=f+u;b.style=f}else z[c]&&(g[z[c]]=CKEDITOR.tools.htmlDecode(b));if("email"==c||"img"==c)g.bbcode=c;this.onTagOpen(e,g,CKEDITOR.dtd.$empty[e])}else if(b[3])this.onTagClose(l[c]);if(a.length>k)this.onText(a.substring(k,a.length),1)}};CKEDITOR.htmlParser.fragment.fromBBCode=function(a){function b(e){if(0< +h.length)for(var a=0;a<h.length;a++){var b=h[a],c=b.name,g=CKEDITOR.dtd[c],f=d.name&&CKEDITOR.dtd[d.name];f&&!f[c]||e&&g&&!g[e]&&CKEDITOR.dtd[e]||(b=b.clone(),b.parent=d,d=b,h.splice(a,1),a--)}}function c(a,e){var b=d.children.length,c=0<b&&d.children[b-1],b=!c&&v.getRule(m[d.name],"breakAfterOpen"),c=c&&c.type==CKEDITOR.NODE_ELEMENT&&v.getRule(m[c.name],"breakAfterClose"),g=a&&v.getRule(m[a],e?"breakBeforeClose":"breakBeforeOpen");f&&(b||c||g)&&f--;f&&a in A&&f++;for(;f&&f--;)d.children.push(new CKEDITOR.htmlParser.element("br"))} +function k(a,e){c(a.name,1);e=e||d||g;var b=e.children.length;a.previous=0<b&&e.children[b-1]||null;a.parent=e;e.children.push(a);a.returnPoint&&(d=a.returnPoint,delete a.returnPoint)}var e=new CKEDITOR.BBCodeParser,g=new CKEDITOR.htmlParser.fragment,h=[],f=0,d=g,u;e.onTagOpen=function(a,g){var f=new CKEDITOR.htmlParser.element(a,g);if(CKEDITOR.dtd.$removeEmpty[a])h.push(f);else{var w=d.name,p=w&&(CKEDITOR.dtd[w]||(d._.isBlockLike?CKEDITOR.dtd.div:CKEDITOR.dtd.span));if(p&&!p[a]){var p=!1,l;a==w? +k(d,d.parent):(a in CKEDITOR.dtd.$listItem?(e.onTagOpen("ul",{}),l=d):(k(d,d.parent),h.unshift(d)),p=!0);d=l?l:d.returnPoint||d.parent;if(p){e.onTagOpen.apply(this,arguments);return}}b(a);c(a);f.parent=d;f.returnPoint=u;u=0;f.isEmpty?k(f):d=f}};e.onTagClose=function(a){for(var e=h.length-1;0<=e;e--)if(a==h[e].name){h.splice(e,1);return}for(var b=[],c=[],g=d;g.type&&g.name!=a;)g._.isBlockLike||c.unshift(g),b.push(g),g=g.parent;if(g.type){for(e=0;e<b.length;e++)a=b[e],k(a,a.parent);d=g;k(g,g.parent); +g==d&&(d=d.parent);h=h.concat(c)}};e.onText=function(a){var e=CKEDITOR.dtd[d.name];if(!e||e["#"])c(),b(),a.replace(/(\r\n|[\r\n])|[^\r\n]*/g,function(a,e){if(void 0!==e&&e.length)f++;else if(a.length){var b=0;a.replace(r,function(e,c){k(new CKEDITOR.htmlParser.text(a.substring(b,c)),d);k(new CKEDITOR.htmlParser.element("smiley",{desc:B[e]}),d);b=c+e.length});b!=a.length&&k(new CKEDITOR.htmlParser.text(a.substring(b,a.length)),d)}})};for(e.parse(CKEDITOR.tools.htmlEncode(a));d.type!=CKEDITOR.NODE_DOCUMENT_FRAGMENT;)a= +d.parent,k(d,a),d=a;return g};var v=new (CKEDITOR.tools.createClass({$:function(){this._={output:[],rules:[]};this.setRules("list",{breakBeforeOpen:1,breakAfterOpen:1,breakBeforeClose:1,breakAfterClose:1});this.setRules("*",{breakBeforeOpen:1,breakAfterOpen:0,breakBeforeClose:1,breakAfterClose:0});this.setRules("quote",{breakBeforeOpen:1,breakAfterOpen:0,breakBeforeClose:0,breakAfterClose:1})},proto:{setRules:function(a,b){var c=this._.rules[a];c?CKEDITOR.tools.extend(c,b,!0):this._.rules[a]=b},getRule:function(a, +b){return this._.rules[a]&&this._.rules[a][b]},openTag:function(a){a in l&&(this.getRule(a,"breakBeforeOpen")&&this.lineBreak(1),this.write("[",a))},openTagClose:function(a){"br"==a?this._.output.push("\n"):a in l&&(this.write("]"),this.getRule(a,"breakAfterOpen")&&this.lineBreak(1))},attribute:function(a,b){"option"==a&&this.write("\x3d",b)},closeTag:function(a){a in l&&(this.getRule(a,"breakBeforeClose")&&this.lineBreak(1),"*"!=a&&this.write("[/",a,"]"),this.getRule(a,"breakAfterClose")&&this.lineBreak(1))}, +text:function(a){this.write(a)},comment:function(){},lineBreak:function(){!this._.hasLineBreak&&this._.output.length&&(this.write("\n"),this._.hasLineBreak=1)},write:function(){this._.hasLineBreak=0;var a=Array.prototype.join.call(arguments,"");this._.output.push(a)},reset:function(){this._.output=[];this._.hasLineBreak=0},getHtml:function(a){var b=this._.output.join("");a&&this.reset();return D(b)}}}));CKEDITOR.plugins.add("bbcode",{requires:"entities",beforeInit:function(a){CKEDITOR.tools.extend(a.config, +{enterMode:CKEDITOR.ENTER_BR,basicEntities:!1,entities:!1,fillEmptyBlocks:!1},!0);a.filter.disable();a.activeEnterMode=a.enterMode=CKEDITOR.ENTER_BR},init:function(a){function b(a){var b=a.data;a=CKEDITOR.htmlParser.fragment.fromBBCode(a.data.dataValue);var c=new CKEDITOR.htmlParser.basicWriter;a.writeHtml(c,k);a=c.getHtml(!0);b.dataValue=a}var c=a.config,k=new CKEDITOR.htmlParser.filter;k.addRules({elements:{blockquote:function(a){var b=new CKEDITOR.htmlParser.element("div");b.children=a.children; +a.children=[b];if(b=a.attributes.cite){var c=new CKEDITOR.htmlParser.element("cite");c.add(new CKEDITOR.htmlParser.text(b.replace(/^"|"$/g,"")));delete a.attributes.cite;a.children.unshift(c)}},span:function(a){var b;if(b=a.attributes.bbcode)"img"==b?(a.name="img",a.attributes.src=a.children[0].value,a.children=[]):"email"==b&&(a.name="a",a.attributes.href="mailto:"+a.children[0].value),delete a.attributes.bbcode},ol:function(a){a.attributes.listType?"decimal"!=a.attributes.listType&&(a.attributes.style= +"list-style-type:"+a.attributes.listType):a.name="ul";delete a.attributes.listType},a:function(a){a.attributes.href||(a.attributes.href=a.children[0].value)},smiley:function(a){a.name="img";var b=a.attributes.desc,h=c.smiley_images[CKEDITOR.tools.indexOf(c.smiley_descriptions,b)],h=CKEDITOR.tools.htmlEncode(c.smiley_path+h);a.attributes={src:h,"data-cke-saved-src":h,title:b,alt:b}}}});a.dataProcessor.htmlFilter.addRules({elements:{$:function(b){var c=b.attributes,h=CKEDITOR.tools.parseCssText(c.style, +1),f,d=b.name;if(d in x)d=x[d];else if("span"==d)if(f=h.color)d="color",f=CKEDITOR.tools.convertRgbToHex(f);else{if(f=h["font-size"])if(c=f.match(/(\d+)%$/))f=c[1],d="size"}else if("ol"==d||"ul"==d){if(f=h["list-style-type"])switch(f){case "lower-alpha":f="a";break;case "upper-alpha":f="A"}else"ol"==d&&(f=1);d="list"}else if("blockquote"==d){try{var k=b.children[0],l=b.children[1],m="cite"==k.name&&k.children[0].value;m&&(f='"'+m+'"',b.children=l.children)}catch(n){}d="quote"}else if("a"==d){if(f= +c.href)-1!==f.indexOf("mailto:")?(d="email",b.children=[new CKEDITOR.htmlParser.text(f.replace("mailto:",""))],f=""):((d=1==b.children.length&&b.children[0])&&d.type==CKEDITOR.NODE_TEXT&&d.value==f&&(f=""),d="url")}else if("img"==d){b.isEmpty=0;h=c["data-cke-saved-src"]||c.src;c=c.alt;if(h&&-1!=h.indexOf(a.config.smiley_path)&&c)return new CKEDITOR.htmlParser.text(q[c]);b.children=[new CKEDITOR.htmlParser.text(h)]}b.name=d;f&&(b.attributes.option=f);return null},div:function(a){var b=CKEDITOR.tools.parseCssText(a.attributes.style, +1)["text-align"]||"";if(b)return a.name=b,null},br:function(a){if((a=a.next)&&a.name in A)return!1}}},1);a.dataProcessor.writer=v;if(a.elementMode==CKEDITOR.ELEMENT_MODE_INLINE)a.once("contentDom",function(){a.on("setData",b)});else a.on("setData",b)},afterInit:function(a){var b;a._.elementsPath&&(b=a._.elementsPath.filters)&&b.push(function(b){var k=b.getName(),e=m[k]||!1;"link"==e&&0===b.getAttribute("href").indexOf("mailto:")?e="email":"span"==k?b.getStyle("font-size")?e="size":b.getStyle("color")&& +(e="color"):"div"==k&&b.getStyle("text-align")?e=b.getStyle("text-align"):"img"==e&&(b=b.data("cke-saved-src")||b.getAttribute("src"))&&0===b.indexOf(a.config.smiley_path)&&(e="smiley");return e})}})})(); \ No newline at end of file diff --git a/src/static/ckeditor/plugins/cloudservices/plugin.js b/src/static/ckeditor/plugins/cloudservices/plugin.js new file mode 100644 index 00000000..99d49f35 --- /dev/null +++ b/src/static/ckeditor/plugins/cloudservices/plugin.js @@ -0,0 +1,7 @@ +/* + Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved. + For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +(function(){CKEDITOR.plugins.add("cloudservices",{requires:"filetools,ajax",onLoad:function(){function a(a,b,f,d){c.call(this,a,b,f);this.customToken=d}var c=CKEDITOR.fileTools.fileLoader;a.prototype=CKEDITOR.tools.extend({},c.prototype);a.prototype.upload=function(a,b){(a=a||this.editor.config.cloudServices_uploadUrl)?c.prototype.upload.call(this,a,b):CKEDITOR.error("cloudservices-no-upload-url")};CKEDITOR.plugins.cloudservices.cloudServicesLoader=a},beforeInit:function(a){var c=a.config.cloudServices_tokenUrl, +e={token:null,REFRESH_INTERVAL:a.CLOUD_SERVICES_TOKEN_INTERVAL||36E5,refreshToken:function(){CKEDITOR.ajax.load(c,function(b){b&&(e.token=b)})},init:function(){this.refreshToken();var b=window.setInterval(this.refreshToken,this.REFRESH_INTERVAL);a.once("destroy",function(){window.clearInterval(b)})}};c?e.init():CKEDITOR.error("cloudservices-no-token-url");a.on("fileUploadRequest",function(b){var a=b.data.fileLoader,d=b.data.requestData,c=a.customToken||e.token;a instanceof CKEDITOR.plugins.cloudservices.cloudServicesLoader&& +(d.file=d.upload,delete d.upload,c?b.data.fileLoader.xhr.setRequestHeader("Authorization",c):(CKEDITOR.error("cloudservices-no-token"),b.cancel()))},null,null,6);a.on("fileUploadResponse",function(a){var c=a.data.fileLoader,d=c.xhr,e;if(c instanceof CKEDITOR.plugins.cloudservices.cloudServicesLoader){a.stop();try{e=JSON.parse(d.responseText),a.data.response=e}catch(g){CKEDITOR.warn("filetools-response-error",{responseText:d.responseText})}}})}});CKEDITOR.plugins.cloudservices={cloudServicesLoader:null}})(); \ No newline at end of file diff --git a/src/static/ckeditor/plugins/codesnippet/lang/zh-cn.js b/src/static/ckeditor/plugins/codesnippet/lang/zh-cn.js index 5f6685c3..7f77cfb5 100755 --- a/src/static/ckeditor/plugins/codesnippet/lang/zh-cn.js +++ b/src/static/ckeditor/plugins/codesnippet/lang/zh-cn.js @@ -2,4 +2,4 @@ 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.setLang("codesnippet","zh-cn",{button:"插入代码段",codeContents:"代码文档",emptySnippetError:"插入的代码不能为空。",language:"代码语言",title:"代码段",pathName:"代码段"}); \ No newline at end of file +CKEDITOR.plugins.setLang("codesnippet","zh-cn",{button:"插入代码段",codeContents:"代码内容",emptySnippetError:"插入的代码不能为空。",language:"代码语言",title:"代码段",pathName:"代码段"}); \ No newline at end of file diff --git a/src/static/ckeditor/plugins/codesnippetgeshi/plugin.js b/src/static/ckeditor/plugins/codesnippetgeshi/plugin.js new file mode 100644 index 00000000..1e7aa557 --- /dev/null +++ b/src/static/ckeditor/plugins/codesnippetgeshi/plugin.js @@ -0,0 +1,10 @@ +/* + Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved. + For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +(function(){CKEDITOR.plugins.add("codesnippetgeshi",{requires:"ajax,codesnippet",init:function(c){var d=new CKEDITOR.htmlParser.basicWriter,f=new CKEDITOR.plugins.codesnippet.highlighter({languages:a,highlighter:function(b,a,e){b=JSON.stringify({lang:a,html:b});CKEDITOR.ajax.post(CKEDITOR.getUrl(c.config.codeSnippetGeshi_url||""),b,"application/json",function(a){a?(CKEDITOR.htmlParser.fragment.fromHtml(a||"").children[0].writeChildrenHtml(d),e(d.getHtml(!0))):e("")})}});c.plugins.codesnippet.setHighlighter(f)}}); +var a={abap:"ABAP",actionscript:"ActionScript",ada:"Ada",apache:"Apache Configuration",applescript:"AppleScript",asm:"Assembly",asp:"Active Server Pages (ASP)",autoit:"AutoIt",bash:"Bash",basic4gl:"Basic4GL",bf:"Brainfuck",blitzbasic:"Blitz BASIC",bnf:"Backus-Naur Form",c:"C",c_mac:"C (Mac)",caddcl:"AutoCAD DCL",cadlisp:"AutoLISP",cfdg:"CFDG",cfm:"ColdFusion Markup Language",cil:"Common Intermediate Language (CIL)",cobol:"COBOL","cpp-qt":"C++ (Qt toolkit)",cpp:"C++",csharp:"C#",css:"Cascading Style Sheets (CSS)", +d:"D",delphi:"Delphi",diff:"Diff",div:"DIV",dos:"DOS batch file",dot:"DOT",eiffel:"Eiffel",fortran:"Fortran",freebasic:"FreeBASIC",gambas:"Gambas",genero:"Genero",gettext:"GNU internationalization (i18n) library",glsl:"OpenGL Shading Language (GLSL)",gml:"Game Maker Language (GML)",gnuplot:"gnuplot",groovy:"Groovy",haskell:"Haskell",hq9plus:"HQ9+",html4strict:"HTML",html5:"HTML5",idl:"Uno IDL",ini:"INI",inno:"Inno",intercal:"INTERCAL",io:"Io",java:"Java",java5:"Java(TM) 2 Platform Standard Edition 5.0", +javascript:"JavaScript",kixtart:"KiXtart",klonec:"Klone C",klonecpp:"Klone C++",latex:"LaTeX",lisp:"Lisp",lolcode:"LOLCODE",lotusscript:"LotusScript",lua:"Lua",Code:"Language",m68k:"Motorola 68000 Assembler",make:"make",matlab:"MATLAB M",mirc:"mIRC scripting language",mxml:"MXML",mpasm:"Microchip Assembler",mysql:"MySQL",nsis:"Nullsoft Scriptable Install System (NSIS)",objc:"Objective-C","ocaml-brief":"OCaml",ocaml:"OCaml",oobas:"OpenOffice.org Basic",oracle8:"Oracle 8 SQL",oracle11:"Oracle 11 SQL", +pascal:"Pascal",per:"per",perl:"Perl","php-brief":"PHP",php:"PHP",pixelbender:"Pixel Bender",plsql:"PL/SQL",povray:"Persistence of Vision Raytracer",powershell:"Windows PowerShell",progress:"OpenEdge Advanced Business Language",prolog:"Prolog",providex:"ProvideX",python:"Python",qbasic:"QBasic/QuickBASIC",rails:"Rails",reg:"Windows Registry",robots:"robots.txt",rsplus:"R",ruby:"Ruby",sas:"SAS",scala:"Scala",scheme:"Scheme",scilab:"Scilab",sdlbasic:"SdlBasic",smalltalk:"Smalltalk",smarty:"Smarty", +sql:"SQL",tcl:"Tcl",teraterm:"Tera Term",text:"Plain text",thinbasic:"thinBasic",tsql:"Transact-SQL",typoscript:"TypoScript",vala:"Vala",vb:"Visual Basic",vbnet:"Visual Basic .NET",verilog:"Verilog",vhdl:"VHDL",vim:"Vimscript",visualfoxpro:"Visual FoxPro",visualprolog:"Visual Prolog",whitespace:"Whitespace",winbatch:"Winbatch",xml:"XML",xorg_conf:"Xorg.conf",xpp:"X++",z80:"ZiLOG Z80 Assembler"}})(); \ No newline at end of file diff --git a/src/static/ckeditor/plugins/copyformatting/styles/copyformatting.css b/src/static/ckeditor/plugins/copyformatting/styles/copyformatting.css index 70a7a881..ad859665 100644 --- a/src/static/ckeditor/plugins/copyformatting/styles/copyformatting.css +++ b/src/static/ckeditor/plugins/copyformatting/styles/copyformatting.css @@ -39,7 +39,7 @@ html.cke_copyformatting_active { clip: rect(1px, 1px, 1px, 1px); padding: 0; border: 0; - height: auto; + height: 1px; width: 1px; overflow: hidden; } diff --git a/src/static/ckeditor/plugins/ddfilebrowser/plugin.js b/src/static/ckeditor/plugins/ddfilebrowser/plugin.js index 8e0e590e..7c12b688 100644 --- a/src/static/ckeditor/plugins/ddfilebrowser/plugin.js +++ b/src/static/ckeditor/plugins/ddfilebrowser/plugin.js @@ -15,7 +15,7 @@ CKEDITOR.plugins.add("ddfilebrowser", { var systemZoom = width / window.screen.availWidth; var posLeft = (width - w) / 2 / systemZoom + dualScreenLeft; var posTop = (height - h) / 2 / systemZoom + dualScreenTop; - window.open("./dialog/select_soft.php?f=" + a.name + "&noeditor=yes", "popUpImagesWin", "scrollbars=yes,resizable=yes,statebar=no,width=800,height=600,left=" + posLeft + ", top=" + posTop); + window.open("./dialog/select_soft.php?f=" + a.name, "popUpImagesWin", "scrollbars=yes,resizable=yes,statebar=no,width=800,height=600,left=" + posLeft + ", top=" + posTop); } }); a.ui.addButton("DDFileBrowser", diff --git a/src/static/ckeditor/plugins/devtools/lang/_translationstatus.txt b/src/static/ckeditor/plugins/devtools/lang/_translationstatus.txt new file mode 100644 index 00000000..415fca75 --- /dev/null +++ b/src/static/ckeditor/plugins/devtools/lang/_translationstatus.txt @@ -0,0 +1,27 @@ +Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license + +bg.js Found: 5 Missing: 0 +cs.js Found: 5 Missing: 0 +cy.js Found: 5 Missing: 0 +da.js Found: 5 Missing: 0 +de.js Found: 5 Missing: 0 +el.js Found: 5 Missing: 0 +eo.js Found: 5 Missing: 0 +et.js Found: 5 Missing: 0 +fa.js Found: 5 Missing: 0 +fi.js Found: 5 Missing: 0 +fr.js Found: 5 Missing: 0 +gu.js Found: 5 Missing: 0 +he.js Found: 5 Missing: 0 +hr.js Found: 5 Missing: 0 +it.js Found: 5 Missing: 0 +nb.js Found: 5 Missing: 0 +nl.js Found: 5 Missing: 0 +no.js Found: 5 Missing: 0 +pl.js Found: 5 Missing: 0 +tr.js Found: 5 Missing: 0 +ug.js Found: 5 Missing: 0 +uk.js Found: 5 Missing: 0 +vi.js Found: 5 Missing: 0 +zh-cn.js Found: 5 Missing: 0 diff --git a/src/static/ckeditor/plugins/devtools/lang/zh-cn.js b/src/static/ckeditor/plugins/devtools/lang/zh-cn.js new file mode 100644 index 00000000..ad445a51 --- /dev/null +++ b/src/static/ckeditor/plugins/devtools/lang/zh-cn.js @@ -0,0 +1,5 @@ +/* + 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.setLang("devtools","zh-cn",{title:"元素信息",dialogName:"对话框窗口名称",tabName:"选项卡名称",elementId:"元素 ID",elementType:"元素类型"}); \ No newline at end of file diff --git a/src/static/ckeditor/plugins/devtools/plugin.js b/src/static/ckeditor/plugins/devtools/plugin.js new file mode 100644 index 00000000..25467ea2 --- /dev/null +++ b/src/static/ckeditor/plugins/devtools/plugin.js @@ -0,0 +1,9 @@ +/* + 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("devtools",{lang:"ar,az,bg,ca,cs,cy,da,de,de-ch,el,en,en-au,en-gb,eo,es,es-mx,et,eu,fa,fi,fr,fr-ca,gl,gu,he,hr,hu,id,it,ja,km,ko,ku,lt,lv,nb,nl,no,oc,pl,pt,pt-br,ro,ru,si,sk,sl,sq,sr,sr-latn,sv,tr,tt,ug,uk,vi,zh,zh-cn",init:function(k){k._.showDialogDefinitionTooltips=1},onLoad:function(){CKEDITOR.document.appendStyleText(CKEDITOR.config.devtools_styles||"#cke_tooltip { padding: 5px; border: 2px solid #333; background: #ffffff }#cke_tooltip h2 { font-size: 1.1em; border-bottom: 1px solid; margin: 0; padding: 1px; }#cke_tooltip ul { padding: 0pt; list-style-type: none; }")}}); +(function(){function k(a,c,b,f){a=a.lang.devtools;var l='\x3ca href\x3d"https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_dialog_definition_'+(b?"text"==b.type?"textInput":b.type:"content")+'.html" target\x3d"_blank" rel\x3d"noopener noreferrer"\x3e'+(b?b.type:"content")+"\x3c/a\x3e";c="\x3ch2\x3e"+a.title+"\x3c/h2\x3e\x3cul\x3e\x3cli\x3e\x3cstrong\x3e"+a.dialogName+"\x3c/strong\x3e : "+c.getName()+"\x3c/li\x3e\x3cli\x3e\x3cstrong\x3e"+a.tabName+"\x3c/strong\x3e : "+f+"\x3c/li\x3e";b&&(c+="\x3cli\x3e\x3cstrong\x3e"+ +a.elementId+"\x3c/strong\x3e : "+b.id+"\x3c/li\x3e");c+="\x3cli\x3e\x3cstrong\x3e"+a.elementType+"\x3c/strong\x3e : "+l+"\x3c/li\x3e";return c+"\x3c/ul\x3e"}function m(d,c,b,f,l,g){var e=c.getDocumentPosition(),h={"z-index":CKEDITOR.dialog._.currentZIndex+10,top:e.y+c.getSize("height")+"px"};a.setHtml(d(b,f,l,g));a.show();"rtl"==b.lang.dir?(d=CKEDITOR.document.getWindow().getViewPaneSize(),h.right=d.width-e.x-c.getSize("width")+"px"):h.left=e.x+"px";a.setStyles(h)}var a;CKEDITOR.on("reset",function(){a&& +a.remove();a=null});CKEDITOR.on("dialogDefinition",function(d){var c=d.editor;if(c._.showDialogDefinitionTooltips){a||(a=CKEDITOR.dom.element.createFromHtml('\x3cdiv id\x3d"cke_tooltip" tabindex\x3d"-1" style\x3d"position: absolute"\x3e\x3c/div\x3e',CKEDITOR.document),a.hide(),a.on("mouseover",function(){this.show()}),a.on("mouseout",function(){this.hide()}),a.appendTo(CKEDITOR.document.getBody()));var b=d.data.definition.dialog,f=c.config.devtools_textCallback||k;b.on("load",function(){for(var d= +b.parts.tabs.getChildren(),g,e=0,h=d.count();e<h;e++)g=d.getItem(e),g.on("mouseover",function(){var a=this.$.id;m(f,this,c,b,null,a.substring(4,a.lastIndexOf("_")))}),g.on("mouseout",function(){a.hide()});b.foreach(function(d){if(!(d.type in{hbox:1,vbox:1})){var e=d.getElement();e&&(e.on("mouseover",function(){m(f,this,c,b,d,b._.currentTabId)}),e.on("mouseout",function(){a.hide()}))}})})}})})(); \ No newline at end of file diff --git a/src/static/ckeditor/plugins/div/dialogs/div.js b/src/static/ckeditor/plugins/div/dialogs/div.js new file mode 100644 index 00000000..48233dad --- /dev/null +++ b/src/static/ckeditor/plugins/div/dialogs/div.js @@ -0,0 +1,10 @@ +(function(){function t(a,m,r){m.is&&m.getCustomData("block_processed")||(m.is&&CKEDITOR.dom.element.setMarker(r,m,"block_processed",!0),a.push(m))}function q(a,m){function r(){this.foreach(function(a){/^(?!vbox|hbox)/.test(a.type)&&(a.setup||(a.setup=function(c){a.setValue(c.getAttribute(a.id)||"",1)}),a.commit||(a.commit=function(c){var f=this.getValue();if("dir"!=a.id||c.getComputedStyle("direction")!=f)f?c.setAttribute(a.id,f):c.removeAttribute(a.id)}))})}var q=function(){var g=CKEDITOR.tools.extend({}, +CKEDITOR.dtd.$blockLimit);a.config.div_wrapTable&&(delete g.td,delete g.th);return g}(),u=CKEDITOR.dtd.div,n={},p=[];return{title:a.lang.div.title,minWidth:400,minHeight:165,contents:[{id:"info",label:a.lang.common.generalTab,title:a.lang.common.generalTab,elements:[{type:"hbox",widths:["50%","50%"],children:[{id:"elementStyle",type:"select",style:"width: 100%;",label:a.lang.div.styleSelectLabel,"default":"",items:[[a.lang.common.notSet,""]],onChange:function(){var g=["info:elementStyle","info:class", +"advanced:dir","advanced:style"],c=this.getDialog(),f=c.getModel(a),f=f&&f.clone()||new CKEDITOR.dom.element("div",a.document);this.commit(f,!0);for(var g=[].concat(g),b=g.length,k,e=0;e<b;e++)(k=c.getContentElement.apply(c,g[e].split(":")))&&k.setup&&k.setup(f,!0)},setup:function(g){for(var c in n)n[c].checkElementRemovable(g,!0,a)&&this.setValue(c,1)},commit:function(g){var c;(c=this.getValue())?n[c].applyToObject(g,a):g.removeAttribute("style")}},{id:"class",type:"text",requiredContent:"div(cke-xyz)", +label:a.lang.common.cssClass,"default":""}]}]},{id:"advanced",label:a.lang.common.advancedTab,title:a.lang.common.advancedTab,elements:[{type:"vbox",padding:1,children:[{type:"hbox",widths:["50%","50%"],children:[{type:"text",id:"id",requiredContent:"div[id]",label:a.lang.common.id,"default":""},{type:"text",id:"lang",requiredContent:"div[lang]",label:a.lang.common.langCode,"default":""}]},{type:"hbox",children:[{type:"text",id:"style",requiredContent:"div{cke-xyz}",style:"width: 100%;",label:a.lang.common.cssStyle, +"default":"",commit:function(a){a.setAttribute("style",this.getValue())}}]},{type:"hbox",children:[{type:"text",id:"title",requiredContent:"div[title]",style:"width: 100%;",label:a.lang.common.advisoryTitle,"default":""}]},{type:"select",id:"dir",requiredContent:"div[dir]",style:"width: 100%;",label:a.lang.common.langDir,"default":"",items:[[a.lang.common.notSet,""],[a.lang.common.langDirLtr,"ltr"],[a.lang.common.langDirRtl,"rtl"]]}]}]}],getModel:function(a){return"editdiv"===m?CKEDITOR.plugins.div.getSurroundDiv(a): +null},onLoad:function(){r.call(this);var g=this,c=this.getContentElement("info","elementStyle");a.getStylesSet(function(f){var b,k;if(f)for(var e=0;e<f.length;e++)k=f[e],k.element&&"div"==k.element&&(b=k.name,n[b]=k=new CKEDITOR.style(k),a.filter.check(k)&&(c.items.push([b,b]),c.add(b,b)));c[1<c.items.length?"enable":"disable"]();setTimeout(function(){var b=g.getModel(a);b&&c.setup(b)},0)})},onShow:function(){"editdiv"==m&&this.setupContent(this.getModel(a))},onOk:function(){if("editdiv"==m)p=[this.getModel(a)]; +else{var g=[],c={},f=[],b,k=a.getSelection(),e=k.getRanges(),n=k.createBookmarks(),h,l;for(h=0;h<e.length;h++)for(l=e[h].createIterator();b=l.getNextParagraph();)if(b.getName()in q&&!b.isReadOnly()){var d=b.getChildren();for(b=0;b<d.count();b++)t(f,d.getItem(b),c)}else{for(;!u[b.getName()]&&!b.equals(e[h].root);)b=b.getParent();t(f,b,c)}CKEDITOR.dom.element.clearAllMarkers(c);e=[];h=null;for(l=0;l<f.length;l++)b=f[l],d=a.elementPath(b).blockLimit,d.isReadOnly()&&(d=d.getParent()),a.config.div_wrapTable&& +d.is(["td","th"])&&(d=a.elementPath(d.getParent()).blockLimit),d.equals(h)||(h=d,e.push([])),b.getParent()&&e[e.length-1].push(b);for(h=0;h<e.length;h++)if(e[h].length){d=e[h][0];f=d.getParent();for(b=1;b<e[h].length;b++)f=f.getCommonAncestor(e[h][b]);f||(f=a.editable());l=new CKEDITOR.dom.element("div",a.document);for(b=0;b<e[h].length;b++){for(d=e[h][b];d.getParent()&&!d.getParent().equals(f);)d=d.getParent();e[h][b]=d}for(b=0;b<e[h].length;b++)d=e[h][b],d.getCustomData&&d.getCustomData("block_processed")|| +(d.is&&CKEDITOR.dom.element.setMarker(c,d,"block_processed",!0),b||l.insertBefore(d),l.append(d));CKEDITOR.dom.element.clearAllMarkers(c);g.push(l)}k.selectBookmarks(n);p=g}g=p.length;for(c=0;c<g;c++)this.commitContent(p[c]),!p[c].getAttribute("style")&&p[c].removeAttribute("style");this.hide()},onHide:function(){this.getMode(a)===CKEDITOR.dialog.EDITING_MODE&&this.getModel(a).removeCustomData("elementStyle")}}}CKEDITOR.dialog.add("creatediv",function(a){return q(a,"creatediv")});CKEDITOR.dialog.add("editdiv", +function(a){return q(a,"editdiv")})})(); \ No newline at end of file diff --git a/src/static/ckeditor/plugins/divarea/plugin.js b/src/static/ckeditor/plugins/divarea/plugin.js new file mode 100644 index 00000000..4f3a5f0e --- /dev/null +++ b/src/static/ckeditor/plugins/divarea/plugin.js @@ -0,0 +1,5 @@ +/* + 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("divarea",{afterInit:function(a){a.addMode("wysiwyg",function(c){var b=CKEDITOR.dom.element.createFromHtml('\x3cdiv class\x3d"cke_wysiwyg_div cke_reset cke_enable_context_menu" hidefocus\x3d"true"\x3e\x3c/div\x3e');a.ui.space("contents").append(b);b=a.editable(b);b.detach=CKEDITOR.tools.override(b.detach,function(a){return function(){a.apply(this,arguments);this.remove()}});a.setData(a.getData(1),c);a.fire("contentDom")})}}); \ No newline at end of file diff --git a/src/static/ckeditor/plugins/docprops/dialogs/docprops.js b/src/static/ckeditor/plugins/docprops/dialogs/docprops.js new file mode 100644 index 00000000..c507780b --- /dev/null +++ b/src/static/ckeditor/plugins/docprops/dialogs/docprops.js @@ -0,0 +1,25 @@ +/* + Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved. + For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.dialog.add("docProps",function(g){function t(a,d){var e=function(){b(this);d(this,this._.parentDialog)},b=function(a){a.removeListener("ok",e);a.removeListener("cancel",b)},f=function(a){a.on("ok",e);a.on("cancel",b)};g.execCommand(a);if(g._.storedDialogs.colordialog)f(g._.storedDialogs.colordialog);else CKEDITOR.on("dialogDefinition",function(b){if(b.data.name==a){var d=b.data.definition;b.removeListener();d.onLoad=CKEDITOR.tools.override(d.onLoad,function(a){return function(){f(this);d.onLoad= +a;"function"==typeof a&&a.call(this)}})}})}function n(){var a=this.getDialog().getContentElement("general",this.id+"Other");a&&("other"==this.getValue()?(a.getInputElement().removeAttribute("readOnly"),a.focus(),a.getElement().removeClass("cke_disabled")):(a.getInputElement().setAttribute("readOnly",!0),a.getElement().addClass("cke_disabled")))}function k(a,d,e){return function(b,f,c){f=m;b="undefined"!=typeof e?e:this.getValue();!b&&a in f?f[a].remove():b&&a in f?f[a].setAttribute("content",b):b&& +(f=new CKEDITOR.dom.element("meta",g.document),f.setAttribute(d?"http-equiv":"name",a),f.setAttribute("content",b),c.append(f))}}function l(a,d){return function(){var e=m,e=a in e?e[a].getAttribute("content")||"":"";if(d)return e;this.setValue(e);return null}}function p(a){return function(d,e,b,f){f.removeAttribute("margin"+a);d=this.getValue();""!==d?f.setStyle("margin-"+a,CKEDITOR.tools.cssLength(d)):f.removeStyle("margin-"+a)}}function q(a,d,e){a.removeStyle(d);a.getComputedStyle(d)!=e&&a.setStyle(d, +e)}var c=g.lang.docprops,h=g.lang.common,m={},r=function(a,d,e){return{type:"hbox",padding:0,widths:["60%","40%"],children:[CKEDITOR.tools.extend({type:"text",id:a,label:c[d]},e||{},1),{type:"button",id:a+"Choose",label:c.chooseColor,className:"colorChooser",onClick:function(){var b=this;t("colordialog",function(d){var e=b.getDialog();e.getContentElement(e._.currentTabId,a).setValue(d.getContentElement("picker","selectedColor").getValue())})}}]}},u="javascript:void((function(){"+encodeURIComponent("document.open();"+ +(CKEDITOR.env.ie?"("+CKEDITOR.tools.fixDomain+")();":"")+'document.write( \'\x3chtml style\x3d"background-color: #ffffff; height: 100%"\x3e\x3chead\x3e\x3c/head\x3e\x3cbody style\x3d"width: 100%; height: 100%; margin: 0px"\x3e'+c.previewHtml+"\x3c/body\x3e\x3c/html\x3e' );document.close();")+"})())";return{title:c.title,minHeight:330,minWidth:500,getModel:function(){return g.document},onShow:function(){for(var a=g.document,d=a.getElementsByTag("html").getItem(0),e=a.getHead(),b=a.getBody(),f={},c= +a.getElementsByTag("meta"),h=c.count(),k=0;k<h;k++){var l=c.getItem(k);f[l.getAttribute(l.hasAttribute("http-equiv")?"http-equiv":"name").toLowerCase()]=l}m=f;this.setupContent(a,d,e,b)},onHide:function(){m={}},onOk:function(){var a=g.document,d=a.getElementsByTag("html").getItem(0),e=a.getHead(),b=a.getBody();this.commitContent(a,d,e,b)},contents:[{id:"general",label:h.generalTab,elements:[{type:"text",id:"title",label:c.docTitle,setup:function(a){this.setValue(a.getElementsByTag("title").getItem(0).data("cke-title"))}, +commit:function(a,d,e,b,c){c||a.getElementsByTag("title").getItem(0).data("cke-title",this.getValue())}},{type:"hbox",children:[{type:"select",id:"dir",label:h.langDir,style:"width: 100%",items:[[h.notSet,""],[h.langDirLtr,"ltr"],[h.langDirRtl,"rtl"]],setup:function(a,d,e,b){this.setValue(b.getDirection()||"")},commit:function(a,d,e,b){(a=this.getValue())?b.setAttribute("dir",a):b.removeAttribute("dir");b.removeStyle("direction")}},{type:"text",id:"langCode",label:h.langCode,setup:function(a,d){this.setValue(d.getAttribute("xml:lang")|| +d.getAttribute("lang")||"")},commit:function(a,d,e,b,c){c||((a=this.getValue())?d.setAttributes({"xml:lang":a,lang:a}):d.removeAttributes({"xml:lang":1,lang:1}))}}]},{type:"hbox",children:[{type:"select",id:"charset",label:c.charset,style:"width: 100%",items:[[h.notSet,""],[c.charsetASCII,"us-ascii"],[c.charsetCE,"iso-8859-2"],[c.charsetCT,"big5"],[c.charsetCR,"iso-8859-5"],[c.charsetGR,"iso-8859-7"],[c.charsetJP,"iso-2022-jp"],[c.charsetKR,"iso-2022-kr"],[c.charsetTR,"iso-8859-9"],[c.charsetUN,"utf-8"], +[c.charsetWE,"iso-8859-1"],[c.other,"other"]],"default":"",onChange:function(){this.getDialog().selectedCharset="other"!=this.getValue()?this.getValue():"";n.call(this)},setup:function(){this.metaCharset="charset"in m;var a=l(this.metaCharset?"charset":"content-type",1,1).call(this);!this.metaCharset&&a.match(/charset=[^=]+$/)&&(a=a.substring(a.indexOf("\x3d")+1));if(a){this.setValue(a.toLowerCase());if(!this.getValue()){this.setValue("other");var d=this.getDialog().getContentElement("general","charsetOther"); +d&&d.setValue(a)}this.getDialog().selectedCharset=a}n.call(this)},commit:function(a,d,e,b,c){c||(b=this.getValue(),c=this.getDialog().getContentElement("general","charsetOther"),"other"==b&&(b=c?c.getValue():""),b&&!this.metaCharset&&(b=(m["content-type"]?m["content-type"].getAttribute("content").split(";")[0]:"text/html")+"; charset\x3d"+b),k(this.metaCharset?"charset":"content-type",1,b).call(this,a,d,e))}},{type:"text",id:"charsetOther",label:c.charsetOther,onChange:function(){this.getDialog().selectedCharset= +this.getValue()}}]},{type:"hbox",children:[{type:"select",id:"docType",label:c.docType,style:"width: 100%",items:[[h.notSet,""],["XHTML 1.1",'\x3c!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"\x3e'],["XHTML 1.0 Transitional",'\x3c!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"\x3e'],["XHTML 1.0 Strict",'\x3c!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"\x3e'], +["XHTML 1.0 Frameset",'\x3c!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"\x3e'],["HTML 5","\x3c!DOCTYPE html\x3e"],["HTML 4.01 Transitional",'\x3c!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"\x3e'],["HTML 4.01 Strict",'\x3c!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"\x3e'],["HTML 4.01 Frameset",'\x3c!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd"\x3e'], +["HTML 3.2",'\x3c!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"\x3e'],["HTML 2.0",'\x3c!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"\x3e'],[c.other,"other"]],onChange:n,setup:function(){if(g.docType&&(this.setValue(g.docType),!this.getValue())){this.setValue("other");var a=this.getDialog().getContentElement("general","docTypeOther");a&&a.setValue(g.docType)}n.call(this)},commit:function(a,d,c,b,f){f||(a=this.getValue(),d=this.getDialog().getContentElement("general","docTypeOther"),g.docType= +"other"==a?d?d.getValue():"":a)}},{type:"text",id:"docTypeOther",label:c.docTypeOther}]},{type:"checkbox",id:"xhtmlDec",label:c.xhtmlDec,setup:function(){this.setValue(!!g.xmlDeclaration)},commit:function(a,d,c,b,f){f||(this.getValue()?(g.xmlDeclaration='\x3c?xml version\x3d"1.0" encoding\x3d"'+(this.getDialog().selectedCharset||"utf-8")+'"?\x3e',d.setAttribute("xmlns","http://www.w3.org/1999/xhtml")):(g.xmlDeclaration="",d.removeAttribute("xmlns")))}}]},{id:"design",label:c.design,elements:[{type:"hbox", +widths:["60%","40%"],children:[{type:"vbox",children:[r("txtColor","txtColor",{setup:function(a,d,c,b){this.setValue(b.getComputedStyle("color"))},commit:function(a,d,c,b,f){if(this.isChanged()||f)b.removeAttribute("text"),(a=this.getValue())?b.setStyle("color",a):b.removeStyle("color")}}),r("bgColor","bgColor",{setup:function(a,d,c,b){a=b.getComputedStyle("background-color")||"";this.setValue("transparent"==a?"":a)},commit:function(a,d,c,b,f){if(this.isChanged()||f)b.removeAttribute("bgcolor"),(a= +this.getValue())?b.setStyle("background-color",a):q(b,"background-color","transparent")}}),{type:"hbox",widths:["60%","40%"],padding:1,children:[{type:"text",id:"bgImage",label:c.bgImage,setup:function(a,d,c,b){a=b.getComputedStyle("background-image")||"";a="none"==a?"":a.replace(/url\(\s*(["']?)\s*([^\)]*)\s*\1\s*\)/i,function(a,b,d){return d});this.setValue(a)},commit:function(a,d,c,b){b.removeAttribute("background");(a=this.getValue())?b.setStyle("background-image","url("+a+")"):q(b,"background-image", +"none")}},{type:"button",id:"bgImageChoose",label:h.browseServer,style:"display:inline-block;margin-top:10px;",hidden:!0,filebrowser:"design:bgImage"}]},{type:"checkbox",id:"bgFixed",label:c.bgFixed,setup:function(a,d,c,b){this.setValue("fixed"==b.getComputedStyle("background-attachment"))},commit:function(a,d,c,b){this.getValue()?b.setStyle("background-attachment","fixed"):q(b,"background-attachment","scroll")}}]},{type:"vbox",children:[{type:"html",id:"marginTitle",html:'\x3cdiv style\x3d"text-align: center; margin: 0px auto; font-weight: bold"\x3e'+ +c.margin+"\x3c/div\x3e"},{type:"text",id:"marginTop",label:c.marginTop,style:"width: 80px; text-align: center",align:"center",inputStyle:"text-align: center",setup:function(a,d,c,b){this.setValue(b.getStyle("margin-top")||b.getAttribute("margintop")||"")},commit:p("top")},{type:"hbox",children:[{type:"text",id:"marginLeft",label:c.marginLeft,style:"width: 80px; text-align: center",align:"center",inputStyle:"text-align: center",setup:function(a,d,c,b){this.setValue(b.getStyle("margin-left")||b.getAttribute("marginleft")|| +"")},commit:p("left")},{type:"text",id:"marginRight",label:c.marginRight,style:"width: 80px; text-align: center",align:"center",inputStyle:"text-align: center",setup:function(a,d,c,b){this.setValue(b.getStyle("margin-right")||b.getAttribute("marginright")||"")},commit:p("right")}]},{type:"text",id:"marginBottom",label:c.marginBottom,style:"width: 80px; text-align: center",align:"center",inputStyle:"text-align: center",setup:function(a,c,e,b){this.setValue(b.getStyle("margin-bottom")||b.getAttribute("marginbottom")|| +"")},commit:p("bottom")}]}]}]},{id:"meta",label:c.meta,elements:[{type:"textarea",id:"metaKeywords",label:c.metaKeywords,setup:l("keywords"),commit:k("keywords")},{type:"textarea",id:"metaDescription",label:c.metaDescription,setup:l("description"),commit:k("description")},{type:"text",id:"metaAuthor",label:c.metaAuthor,setup:l("author"),commit:k("author")},{type:"text",id:"metaCopyright",label:c.metaCopyright,setup:l("copyright"),commit:k("copyright")}]},{id:"preview",label:h.preview,elements:[{type:"html", +id:"previewHtml",html:'\x3ciframe src\x3d"'+u+'" style\x3d"width: 100%; height: 310px" hidefocus\x3d"true" frameborder\x3d"0"\x3e\x3c/iframe\x3e',onLoad:function(){var a=this.getElement();this.getDialog().on("selectPage",function(c){if("preview"==c.data.page){var e=this;setTimeout(function(){var b=a.getFrameDocument(),c=b.getElementsByTag("html").getItem(0),d=b.getHead(),g=b.getBody();e.commitContent(b,c,d,g,1)},50)}});a.getAscendant("table").setStyle("height","100%")}}]}]}}); \ No newline at end of file diff --git a/src/static/ckeditor/plugins/docprops/icons/docprops-rtl.png b/src/static/ckeditor/plugins/docprops/icons/docprops-rtl.png new file mode 100644 index 0000000000000000000000000000000000000000..c6c63532af3d65209154cfd502c36479878ade1c GIT binary patch literal 543 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6-E$sR$z z3=CDO3=9p;3=BX21L>Cx45bDP46hOx7_4S6Fo@?*ia+WGRLhp+?e4<x9|RZdT|OBo z!dc)ES<Jw|Eeyhp4727)00r4gJbhi+AFvDa%4zA^eUM~eVC3_3aSX9I-5YG}cf>$o z?#vsfL^Hl~?RIZa;u00V(NrC{#$~6I$O4z9wl<-44!hk?9IrEZZE)_En7`D?jkfRi z&Me%K8_mTqA!fS5N#BXgf(r!<85>*!UF7Bz|K7E3eMg6|V0Y%~=TEA$-=@hNzg+KS zaBEv}UjEv<XFmUNb~*A#ea7ofPWFRk0q0bWKN}XUz1fy%p{iE6nv>C{JwMIQUr|Lm zc^%`PH8D0_C(gR^2hCXa($@JOTSGVBmR!L~CI_WYtL`#rSaW>1ci+%>&v(I(uEN(> ztjd~w^S&tOm5lwr_w~ocUoU+$=XcbpoLOln7as`@O<!fYXNpp1_f7fqw*n3>2WBdy z{j*tJmm$RPh5PK9nJ(9&?%DtYOSQx`q9i4;B-JXpC>2OC7#SFv=^B{p8d`=J8e16~ sSeY1U8yHy`7)VSguRzg|o1c=IR*73f=GpT{fEpM)UHx3vIVCg!02Ud;RR910 literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/docprops/icons/docprops.png b/src/static/ckeditor/plugins/docprops/icons/docprops.png new file mode 100644 index 0000000000000000000000000000000000000000..16a500069fade465b1d7db8c7a705949c12b9fd5 GIT binary patch literal 549 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6-E$sR$z z3=CDO3=9p;3=BX21L>Cx45bDP46hOx7_4S6Fo@?*ia+WGRLhp+?e4<x9|RZdT|OBo z!dc)ES<Jw|Eeyhp4727)00r4gJbhi+AFvDa%4zA^eUM~eU=;CmaSX9I-5X@+chrEV zwk+r?$A%(S3nm`jJB)4hMk;PC5)NxwxVe>O7~TE}UNSK|&HssC^XR0d8r$a2pYI!c zJ@IVEieGFDX8Ey2Y5U@szNc<BT9|vgS>Vw0;ykg5y{q0CevH_dIcuBmWtpQA_H&8_ zCh{_*EYNbWd~S1oKHHJ*6Ib<lJ6>#KIXTbq);3!o&Dd31n~MDcuKr&1+jZGY&31up zs?lr=X?Dy7$?3sY+28+N$+|Kxar%c8`{KZ!k2Ad-vv`UajqO)y&G@-aEp2M!MFyoJ zKNl^f)veV$bBfisE+~HYBc4HX>Gnj4H<8IQ?p~UEZwqF-)!vVOnDcBBLsoL#(!=+y zSq`{<JpJxh9B=om|2NF#lP5Bq>r)d12AOJ!YeY#(Vo9o1a#1RfVlXl=G}ARO*EO^Z xF*LR^Hn1`=(l#)%GBA*sP+ozeAvZrIGp!Q0hRn0)j{r3=c)I$ztaD0e0suj)y{`ZO literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/docprops/icons/hidpi/docprops-rtl.png b/src/static/ckeditor/plugins/docprops/icons/hidpi/docprops-rtl.png new file mode 100644 index 0000000000000000000000000000000000000000..3e468bd59cb96ea82b17ff6fe31f801c3416893d GIT binary patch literal 1060 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzmUKs7M+SzC{oH>NSwWJ?9znhg z3{`3j3=J&|48MRv4KElNN(~qoUL`OvSj}Ky5HFasE6@fg!ItFh?!xdN1Q+aGJ{c&& zUgGKN%Km_xiC2-KneQA20|T>$r;B4q#NoB!w%K<a1Zs_==33m}X~5zWBzZ^GULk>F z$%cdMKh5*zp4!p%zw@-nzYHc#8IQSJ7{wJ6I3$XW&;7b_@*%0pt=m@zC-HYguPuAN zxAwE5tYX6N-@nh!=$N&!<H5=|fBwiYB<wmcU&<uq4(q$whR<ByNp}AGm0W+WQtaDJ zahU^wfg<dyxCBjK?MS}AYo00Bkpr$S2m4%}Oz3cMF%JzDY<MO#@!DSN{aP(|Sos*v z)TFGnU9&v@v(0^<%Oz8z_V!xK8_9=;mPUA2&VK&WZCa{=l0ormr=)FOjKa}t)Ym&k zJ*dj;*yT_f+oQ93vOtAxIZ)ZL1cMBjRZLdbOCRZdP-V^fFnQG~KBrB)AEZVuTD3|p z@ZGj)OiE0w{*#^@V^2>rF#crY9y#s9_g~A`fB(zZnrSrij&O(J?%lg@^E8UPZZz6h z;-7ndl1im)l=)1bM=U*tYuyf?*>H{R;QDpz7NxA&y5U;gS5C83xm!<KSwce_I}+CN z>elbxyjgkU-!nQ&pVY#1=hhxj6`W*udQ-U4r<Lvf=MO*pu=HK|=c8Y0Z~y$HFUH+* z!o2jwsn_Qj57gNG&s(dyy>V@bf{VlYty{N#XE<=D?4fFcH)rx0c6*mC+qZAu5>~tR z!58)eJ9>S2Io;C=#dLnYUF&c_>VwryyK`xq*(&VjH_z0s5&ct_=rk{UtG{h;n7eJA zxeTA`=}pg-HnBeF4(t7#);hbxL50&<UeHcaaHi4c8~-&Tb;S1n`Rm6&^H;=0y9<Z= z{%*R|QgWQ(&cDJvB{%Ngy{lSNdu{0f=IeE-G3}j`R5H)ns&N|1^>0s-y);)@smE>c zS{2Wz{LlsIq8%Qq1y?q|EUB8i?B%voZ=13Xb#h!XxjXM{+V#AdudePE))HJRP#Pw3 zw11I?hHo&ZYJTLjC+oh~|JP<&r}UL`x{!Z#-gR~z!Pegg_6roA<#l{=_NLdf&6_v- zG1Vq-{&iV`|DpFJmTOTlF?Y;Qp0j)K|Cryq+4mV^qvPX`KYf~7EFaX6#3?-KqUzKC zlgpyl-+K8n^Yy>L+5=k;CVXIW;A1!@p{-=^zWAcCs!X--f7ZKo1+ocy=R5>vBh?bu zh?11Vl2ohYqEsNoU}RuurfX=ZYhV;&Xl!L{Y-M1eZD0r_uQRTBi=rVnKP5A*61RqB SF(QFL4Gf;HelF{r5}E*oY0EJH literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/docprops/icons/hidpi/docprops.png b/src/static/ckeditor/plugins/docprops/icons/hidpi/docprops.png new file mode 100644 index 0000000000000000000000000000000000000000..ac44303ed2b4ab205b0e2d79c73ba1e3348e8dfc GIT binary patch literal 1017 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzmUKs7M+SzC{oH>NSwWJ?9znhg z3{`3j3=J&|48MRv4KElNN(~qoUL`OvSj}Ky5HFasE6@fg!ItFh?!xdN1Q+aGJ{c&& zUgGKN%Km_xiC2-KneQA20|V1vPZ!6Kh{J2c_GjNU5ZGrO{mr|e%}L>c=7hC#onHpL zxboz`XS>7ZR)+;Y{f){zH;e2NnYA_6+jxr8f(r+2lA^6jS3I5fRmFDybh(b@<(KB# z)qX#GsJWS$gHuWG#hR^-wHf=jmd%Kdjdk?Nn0h$)(Y3W(xvTm4`NNqK{{Px|?d)BL zBNOA!ZPwZC(b&_tU<RWS-}Z^yCs$cskCJCRklD3VphKbIo+i_QLm$3IWxE{NeeWHM zpnrIx(y0R>fnJWcw^?`mkY;F@>EDrI)UlOOK}kSRKyXSbXYOq~riPOWix`$kcrvU@ z>RQy%<ndF6@q_Sbe<w}XKpuuW6MQ1F*#*v(pE!Su=g$56&DW|pn)wesZ83b-(xJDc zzVaAH!;Z81=HGdrUWjtOy)96Hq2PM^<BTFcfs4irH>NEJN?O~x?sb#Gu64IN8|BY^ z7Vj~fzxCS1ANTLvY2aVi|DEB$&8L<7Or|VUshOA>X(IUT`*&T2Jzu__;pyNwCXw(g z@VgJwhev-}X4)^?w0}CkYoN{4*Vm#lZi~&REcviWfKTSDNZr(>8gqYNGC4baS!RLR z?A~uWo1+sB<evKcXYG5JYdiEiI5yvW(|ddWnujio9Bgs^h9CC*K7Ly2nhM*JjopfZ zd*`2je)v|69lKK1^PAz?^Ix2tz^vEYd4jQW>&A_VQ-jVkKG?nW+j7ISDe{ricpGZl zmMjr66mK&X486pt<aF6&evF)jSqH}q$r(HAG?+K>&-vMZ?uNDhonJYp6i@nTe4G3G z>GVl<DbIsf&O5{q61r9TmdfKdR&k-ByCbKmdS6X9;&8B9@%q;`ozu40Z@2r_p1B*N zxi$Ry*R?iNW*(H-Tqk6eIqTW%Yf@8#t}UEy{$>~7Q+JJ!|Ns80Gz8q48uTE%+1g{> z+RGJ9JPMCKuu7-C*k3eT<ot{!IYp7z_qCK<df&XBpP{6-mNz;&`ry%k>E2&!?M)`n ze>#2obnd55=G`@v`t2jbyZm$gZ$V&^S330U*)uca{|pT8N^>Kp^`}PvlmEo-^?&)< zBdV6Jz`UVa;u=wsl30>zm0Xkxq!^4049#>64RsBSLJW<qjE$`f473dlf#h|@HE&Tg c<mRVjrd8tBuq;L-5U7E{)78&qol`;+0H++hY5)KL literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/docprops/lang/zh-cn.js b/src/static/ckeditor/plugins/docprops/lang/zh-cn.js new file mode 100644 index 00000000..88665925 --- /dev/null +++ b/src/static/ckeditor/plugins/docprops/lang/zh-cn.js @@ -0,0 +1,2 @@ +CKEDITOR.plugins.setLang("docprops","zh-cn",{bgColor:"背景颜色",bgFixed:"不滚动背景图像",bgImage:"背景图像",charset:"字符编码",charsetASCII:"ASCII",charsetCE:"中欧",charsetCR:"西里尔文",charsetCT:"繁体中文 (Big5)",charsetGR:"希腊文",charsetJP:"日文",charsetKR:"韩文",charsetOther:"其它字符编码",charsetTR:"土耳其文",charsetUN:"Unicode (UTF-8)",charsetWE:"西欧",chooseColor:"选择",design:"设计",docTitle:"页面标题",docType:"文档类型",docTypeOther:"其它文档类型",label:"页面属性",margin:"页面边距",marginBottom:"下",marginLeft:"左",marginRight:"右",marginTop:"上",meta:"Meta 数据",metaAuthor:"作者", +metaCopyright:"版权",metaDescription:"页面说明",metaKeywords:"页面索引关键字 (用半角逗号[,]分隔)",other:"\x3c其他\x3e",previewHtml:'\x3cp\x3e这是一些\x3cstrong\x3e演示用文字\x3c/strong\x3e。您当前正在使用\x3ca href\x3d"javascript:void(0)"\x3eCKEditor\x3c/a\x3e。\x3c/p\x3e',title:"页面属性",txtColor:"文本颜色",xhtmlDec:"包含 XHTML 声明"}); \ No newline at end of file diff --git a/src/static/ckeditor/plugins/docprops/plugin.js b/src/static/ckeditor/plugins/docprops/plugin.js new file mode 100644 index 00000000..275b5ca3 --- /dev/null +++ b/src/static/ckeditor/plugins/docprops/plugin.js @@ -0,0 +1,6 @@ +/* + 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("docprops",{requires:"wysiwygarea,dialog,colordialog",lang:"af,ar,az,bg,bn,bs,ca,cs,cy,da,de,de-ch,el,en,en-au,en-ca,en-gb,eo,es,es-mx,et,eu,fa,fi,fo,fr,fr-ca,gl,gu,he,hi,hr,hu,id,is,it,ja,ka,km,ko,ku,lt,lv,mk,mn,ms,nb,nl,no,oc,pl,pt,pt-br,ro,ru,si,sk,sl,sq,sr,sr-latn,sv,th,tr,tt,ug,uk,vi,zh,zh-cn",icons:"docprops,docprops-rtl",hidpi:!0,init:function(a){var b=new CKEDITOR.dialogCommand("docProps");b.modes={wysiwyg:a.config.fullPage};b.allowedContent={body:{styles:"*",attributes:"dir"}, +html:{attributes:"lang,xml:lang"}};b.requiredContent="body";a.addCommand("docProps",b);CKEDITOR.dialog.add("docProps",this.path+"dialogs/docprops.js");a.ui.addButton&&a.ui.addButton("DocProps",{label:a.lang.docprops.label,command:"docProps",toolbar:"document,30"})}}); \ No newline at end of file diff --git a/src/static/ckeditor/plugins/easyimage/dialogs/easyimagealt.js b/src/static/ckeditor/plugins/easyimage/dialogs/easyimagealt.js new file mode 100644 index 00000000..1c6bf5bc --- /dev/null +++ b/src/static/ckeditor/plugins/easyimage/dialogs/easyimagealt.js @@ -0,0 +1,6 @@ +/* + Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved. + For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.dialog.add("easyimageAlt",function(b){return{title:b.lang.easyimage.commands.altText,minWidth:200,minHeight:30,getModel:function(){var a=b.widgets.focused;return a&&"easyimage"==a.name?a:null},onOk:function(){var a=CKEDITOR.tools.trim(this.getValueOf("info","txtAlt")),c=this.getModel(b);c&&c.parts.image.setAttribute("alt",a)},onShow:function(){var a=this.getContentElement("info","txtAlt"),c=this.getModel(b);c&&a.setValue(c.parts.image.getAttribute("alt"));a.focus()},contents:[{id:"info", +label:b.lang.easyimage.commands.altText,accessKey:"I",elements:[{type:"text",id:"txtAlt",label:b.lang.easyimage.commands.altText}]}]}}); \ No newline at end of file diff --git a/src/static/ckeditor/plugins/easyimage/icons/easyimagealigncenter.png b/src/static/ckeditor/plugins/easyimage/icons/easyimagealigncenter.png new file mode 100644 index 0000000000000000000000000000000000000000..424be405a6ee321acbd85690120975c7a448d90b GIT binary patch literal 155 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!6#=yXs@#Xw?AcrO0(btiIVPik{pF~z5KgiR? zF~mYJIbnhEhfa_G{;t|9b7Vwg-A-u4=%p(yDbzS&d`PDA^mK#DlB&~PGZXeoEM%DM zaGl{%^5o=$%LHa8#poT$WYFV%Ar>UV_JZxwe13+bQWDAr%~sEWrZafD`njxgN@xNA DM-wqS literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/easyimage/icons/easyimagealignleft.png b/src/static/ckeditor/plugins/easyimage/icons/easyimagealignleft.png new file mode 100644 index 0000000000000000000000000000000000000000..7a520becc42c13719624974c2aba398df93cc4cc GIT binary patch literal 152 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!6#=yXs@#Xw?AcrO0(btiIVPik{pF~z5-`~^4 zF~mYJIbnhDhfa_G{D(xM*o~Rof-~-{D7)3dpnN7G=yB%hu9*pYeGHg4Tr_aK@gyNh z$AGQF?V7`y?f@QzFyT#0EA~3{HJ)g@+|J987$oLkcGasBXf%VTtDnm{r-UW|+RrhF literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/easyimage/icons/easyimagealignright.png b/src/static/ckeditor/plugins/easyimage/icons/easyimagealignright.png new file mode 100644 index 0000000000000000000000000000000000000000..d096f33967f954bc02c65c48de53d79791d21799 GIT binary patch literal 149 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!6#=yXs@#Xw?AcrO0(btiIVPik{pF~z5-^bI% zF~mYJIYEMzS(?dC@a2C;y@rcE%&%o$-8jc#%=S!MV!puM)T2Hd;+hsR1b3Wv5Q`Cd w@#qAb;_hh~%o9u%rTs2&?=Vr4HrkNG;3h7lC&KvA2WT#Xr>mdKI;Vst0Ak%MhyVZp literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/easyimage/icons/easyimagealt.png b/src/static/ckeditor/plugins/easyimage/icons/easyimagealt.png new file mode 100644 index 0000000000000000000000000000000000000000..3b99772534110591b034e32aca39de55a06f0ef8 GIT binary patch literal 545 zcmV++0^a?JP)<h;3K|Lk000e1NJLTq000mG000mO1^@s7X!Otb00004XF*Lt006O% z3;baP0005lNkl<ZI1$BCO-NKx6h7zNDKp3tY2h}a5G<%D*RE9bO;{lFp6142W;6)e znG1LB#91ga11a|RoJEHE+>}VrN@7-};23U-YEv{cM1%P5@!S{h;X<U1bT{YR@B8j| z4(D8e{l~JCYtbDoJN1H@ZwJUtC)L)KNdAcELlb4>7n-k4Uc7YU_ttuG6T1?rHv~8V zq&pbsbM)LOqsw6l8Zz#rdYR!0A*?LAxmVKT7htIO3b~Vkz=)*QC?H%_z>gT!F(BSp zdX_C2?ubv&gN*T~Le;vf{Z&MG=gs9i!nzbBj5R*{Z<h=C231pQ%V0Tfr~3>?aXUGD zqV9B~<V7oy+*z2-lntR-KQ%EZ(S2vIDOP*xYxP%oUa%G*oblY;eIq#Vh*RM};z&Rh zx|*_0m#<e!ABx){_AfEor4d`s-~elXiby#!g?3r~duEIQ^AH1{7xC-k1o!6M{KwGz z?;@P^L;1nC1pI`+XOJnws2?-nmSEqP=W?Ag?s3iVAbLnN;<?$er~|7v?SRj=?4+++ zDbLCV>IgWa0iF<ILTl)kE*u2>0}AhY&$F&Eiwr_%6TAC|8e-?pR;s0MFQtneQaG)5 j*;NER=0ES({{MUr@JFjv9vG9x00000NkvXXu0mjf>fHcx literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/easyimage/icons/easyimagefull.png b/src/static/ckeditor/plugins/easyimage/icons/easyimagefull.png new file mode 100644 index 0000000000000000000000000000000000000000..37bc79d4b5b6332a1d1d9beca4cdb96ade173603 GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!6#=yXs@#Xw?AcrO0(btiIVPik{pF~z5-^<g* zF~mYJIbnhDhfa_G{;aE4r0|HwIOQrQ*d;I8c91zyPWepGjP(gMPG6>p8Xv4$DbBTI v2ScPT_om>9suPZW+_>^NYt6O`A$$yM2?8EXQ#MHhO=a+O^>bP0l+XkKr$8>B literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/easyimage/icons/easyimageside.png b/src/static/ckeditor/plugins/easyimage/icons/easyimageside.png new file mode 100644 index 0000000000000000000000000000000000000000..d096f33967f954bc02c65c48de53d79791d21799 GIT binary patch literal 149 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!6#=yXs@#Xw?AcrO0(btiIVPik{pF~z5-^bI% zF~mYJIYEMzS(?dC@a2C;y@rcE%&%o$-8jc#%=S!MV!puM)T2Hd;+hsR1b3Wv5Q`Cd w@#qAb;_hh~%o9u%rTs2&?=Vr4HrkNG;3h7lC&KvA2WT#Xr>mdKI;Vst0Ak%MhyVZp literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/easyimage/icons/easyimageupload.png b/src/static/ckeditor/plugins/easyimage/icons/easyimageupload.png new file mode 100644 index 0000000000000000000000000000000000000000..8ea97259df1e428333b1dad62e48f94faa666a0d GIT binary patch literal 498 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6-E$sR$z z3=CDO3=9p;3=BX21L>Cx45bDP46hOx7_4S6Fo@?*ia+WGRLhp+?e4<x9|RZdT|OBo z!dc)ES<Jw|Eeyhp4727)00r4gJbhi+AFvDa%4zA^eUJnSJ@j;O46!)9G{`XTuz`T` zdcHlCZ|CfkH~iGfG?%I5)SUQ|6W7vCO_G12es^=(w`U3#WfMaq^BPa7Dah~%R6g;{ zxh>|M(0zkpRe<T_^IExFCug}BY&K_5`uQ)PJF%0C?~=wv!Jo-~UEwSZ%IqrkPPY6m z#?qWmBse{)SRFji{|qs{&0z5~X=igqP)RI%`F@Wo#h+i6J48GQyHtAO)_2=k%Xaea zU2;B!-($YuJ3fZv58U4ETlc!^{kzpBd?(k(vz~b~&xh$`w!qns7M%%c?4JA@E+Pfr zV>K;%1Ag@`=X>@@dRb;faPyOW+kl=`Epd$~Nl7e8wMs5Z1yT$~28L$32IjhkmLZ15 uR>lTaCPvx@Mpgy}5);ZRP&DM`r(~v8;?|IP_WTi`1_n=8KbLh*2~7Z{n5wb> literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/easyimage/icons/hidpi/easyimagealigncenter.png b/src/static/ckeditor/plugins/easyimage/icons/hidpi/easyimagealigncenter.png new file mode 100644 index 0000000000000000000000000000000000000000..633a4fe168013b95dcd63c5cb249fe8a88472839 GIT binary patch literal 350 zcmV-k0iphhP)<h;3K|Lk000e1NJLTq001BW001Be1^@s71bs?k00004XF*Lt006O% z3;baP0003MNkl<ZSPAV^+Y!Pr3~M>YV*oZ_CN^LI_JdPf`HW-d0fFn$_JhQ-Vk;ua zFqm&dd^%qq2A@MD@(l1sz5af?jt8KaV8k~8nl;0jU+Ic6cBS;l6!=9-M0(9ak=mG} zUa1qrC+8Tz2kXTPK@&OO>}Z{W5grEIbrFgE+mr+HVnqifa>Kj35jTq`3Q##xqjOmW zUI7n-G`R~PL?pe3DxO!!!%$dWMH09-#=1M^#L2Vy<~aEmYAbY8P}^|l{jmdb47o=h zbjH2M)g9lW1617VOtg-8v$GITBchf^0rD6Uuua}pyc8_eO9Xt{kQ?Dxs+R~TDYkhw wibl&X35x1`4KLn;-kn$HK<^Fi^_m@c0u*J4<ZC?km;e9(07*qoM6N<$f|=5eN&o-= literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/easyimage/icons/hidpi/easyimagealignleft.png b/src/static/ckeditor/plugins/easyimage/icons/hidpi/easyimagealignleft.png new file mode 100644 index 0000000000000000000000000000000000000000..d60710f65eed9dad5cd8a6ad858795f45d70ba68 GIT binary patch literal 339 zcmV-Z0j&OsP)<h;3K|Lk000e1NJLTq001BW001Be1^@s71bs?k00004XF*Lt006O% z3;baP0003BNkl<ZSPAV^!41P83=CDr>j2%LGj)Rw(EVB&^$^$`5TH_&q#wiiY#&$1 zvZ$Yv{q6qv0QW!)8U~mly14%Rdb&$U{T2q$1hX$r&CW0_{tv7ZDXO)ms{pwKh~7Ez zH})7wiHWt06c_Aztqst7cKF0aMmq7`I}jdd>&1a1r8f*tQ!FZwDNLDBpox0V<oItA zOA5{!K|!?vh-^sGAU7?CNwZpGHqhY3f5EULV48xc=eazp1K}FN0Cw?_AB~&4zTFPs zBx@Z*9h^+QMF1sgB64~l<AGm`R6wl|c`XPyi(2ro0Ns!cW;hklda_m?1dIwspJ}oC l74$0DoCCcFIqRl5@CBb<Vu2ySz?uL6002ovPDHLkV1iqih@=1j literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/easyimage/icons/hidpi/easyimagealignright.png b/src/static/ckeditor/plugins/easyimage/icons/hidpi/easyimagealignright.png new file mode 100644 index 0000000000000000000000000000000000000000..aaac75fefedce0119fc537f4b7b728e65e4682d3 GIT binary patch literal 299 zcmV+`0o4A9P)<h;3K|Lk000e1NJLTq001BW001Be1^@s71bs?k00004XF*Lt006O% z3;baP0002uNkl<ZSPAV^!4bkR3=16NF#sDd6B{r<_k$~ka=N5CB{gk%q@To&Ez642 zl*V_Y0@vI9HP^>_K9bC@YM%gvu3)=$dOkk6Rs{qqz>7L4{S3rxn*lh9!EFmFkwL~j zs6coUgY{Fg4CV=3ngyOr%c2BeJC8Cu8PQeB04|V0d7l9s19i?|tM>L56zbZR72fa< z1p*4>IR?gNFXmg|@8&<O06J<_4)IVt|IFYh1K@96RlXuv5m14OfGVisOMgWm3Ro6! xc10knKySVyxcPbb74$OP`-*${jrjc)cmq=<R9eyUd^Z39002ovPDHLkV1lZQbKn2~ literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/easyimage/icons/hidpi/easyimagealt.png b/src/static/ckeditor/plugins/easyimage/icons/hidpi/easyimagealt.png new file mode 100644 index 0000000000000000000000000000000000000000..a39c3dd465286f92ad892a65e269ff0a154a6992 GIT binary patch literal 1290 zcmV+l1@-!gP)<h;3K|Lk000e1NJLTq001BW001Be1^@s71bs?k00004XF*Lt006O% z3;baP000ERNkl<ZSPAV{Z)hAv6rVS{d->C}K}&6-hNehONkAwmRMgT$KWHI$rY(Ww zC?WllyQD^~=m$Ydss%y(BAVoK6{$jdLBVJ)v`Sl(evv>$1gmXRwO5I;QA@Nb$=%-W zjPGr3)=hG!;b=iH1G)M0e((3*zIpRz!dSMpJGg&CLv!dl$$)<RE#a@Elv`-Lj7Iu_ zU}rt5IO^JcHMN%w;ICgif9^&}S(R`(2<c9iHSo8Dt}89{QQ)5>Mefl~nZiCvARpH^ z0zj`vcH4)_A$0T$jN6eV1{+$!;|fGV8v9%J*U*@w*1_Re<bDkNH7`g?>pTIR)^y-N z5e<<3X96K(!V%>9@iOJY+`4s5Q8l)OE32!wm0tMf+@ES~IlYrK3P}5C3M+woS!qi9 zEDB4cWS1C|4-p3U_fk9-*{tx+nwsE;3q)K2CRZ7tZzCcOyiG81csSNy(HQKgwS@Rm z;Q{#5@mSwmZZ>HQ_K<Qs)?b#ERvdu+q5~gglHE(5S(5GfTba#}@&XT(kb2y&N72>K zDFcw8*vGYp)u(-QyyvPHyE49&5ol-*kL1JWW}?42e1!<&1CfnX)&jwfDE7NCxxPox zi?prT47da&BofJ_t{1{~D=Co>Mj6NlF&7F+&OzHb6zlzz#;UmlR3fMf0E1tV#2g;z zuTUULEcE6~W<HLxDkXCW0>SW8cxc{45H}31+DeNP1dt#xn|XWuSl>x+k-$SG@ROXA z?3@K5B<8jDz#7i)OsDPd80b443wREs5Yc&Skect27!9G(muc=0pi6j;?6Elw$^c5% zNtwO?Iy`}&lK=_UyrL{n1Prvm(DBHtG<Rb_6RN48!5bRL>2z9789u$rGVRYif&CHI zl$XS#-Lr(Jwt#>Z&^-u*4iy=*f0UZm+$7hvO~MkV5h!Vk36oc&EzURD@-n!h^goKg zl03%4Fp9angHDmbwYuAVi!5<~f=~BgTG*p_0xOjxTH}t1<lvc8Saj<DX@ijPC&~D0 zTQ{$Nr@Om5QwDNtWOabx{`T%-n3?JmQnY5&C-BMei1689r`Y4=tGB!xjfT=BYj5v2 zCTG5W7Nj_gk4IkyKi>fyDY}C{_hE1E%?0b3$r1+|S~~r}>|^+)s|kap^DzUo9~MU> z*VY7rp*|s4c(E~z<V~!ct)C1;2E8)Z0eUK;(L-o)nlm2c1->yWl{}5btrnjtQ@XCz zgAKFF5iIr=-Zr{J25f@fKQ!*@>MBV5Zq6W=;WgwPa}EbpHFn=d_$GP<y?h2eDwRyU zC)0Cx<J)y>(W>ILSYNNvJ%KOrF}f@0^@hfse<{cjboeD@;Oewhnaem`L}<KA87Cb# z0*Zk8z}}83Y0D3g=q>=gJ|27fV$;5^b;+bTf@?L-!_Cm^Fa{|V5tXczBUXxyV&pcs zoB)@BX}jXFo^Rc?%pj`+UeJ?!JGKj3yr3KU^MmjAj5oD)mL*eyj%pQt(WDP#on*R+ z(K(AZ4jFZmRixymp;-SZFW=(vzdEp3LCu?5!}lajhDViE0LYQG1?9VLn7^%G9Fbhf zs(A8tKoMl?=U@8vQN57u`}k-ikqxu5_MeHsU$Cwpuj=c9kpKVy07*qoM6N<$g0?zs A*#H0l literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/easyimage/icons/hidpi/easyimagefull.png b/src/static/ckeditor/plugins/easyimage/icons/hidpi/easyimagefull.png new file mode 100644 index 0000000000000000000000000000000000000000..2de074a6cc46c26dbebea585b02b638e950cb4c7 GIT binary patch literal 253 zcmV<Z00RGsP)<h;3K|Lk000e1NJLTq001BW001Be1^@s71bs?k00004XF*Lt006O% z3;baP0002ANkl<ZSPAV_!3}^Q3`FC24&VmP<OUAlewvunoDV9{lk&h1Na1?Dwh%&< zZ(i1u;D`i6V8Vuw$VN7>2i_n~B`W#<8jpRu&+=5rVSsxlq>2Vy*XFzsG%wwzD`2if z9X`RzV~|sYxYt~XW&m?DCFrbg;blSh)2&^BKNWcDSe#&^%Nlc(7nzA^!g5#Ob(vu( zY^h?YHDAX_x@7K7Aew@hWF=8Hea5{DnpUTitD?XK^?EdlH0rgX00000NkvXXu0mjf D<vwPd literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/easyimage/icons/hidpi/easyimageside.png b/src/static/ckeditor/plugins/easyimage/icons/hidpi/easyimageside.png new file mode 100644 index 0000000000000000000000000000000000000000..aaac75fefedce0119fc537f4b7b728e65e4682d3 GIT binary patch literal 299 zcmV+`0o4A9P)<h;3K|Lk000e1NJLTq001BW001Be1^@s71bs?k00004XF*Lt006O% z3;baP0002uNkl<ZSPAV^!4bkR3=16NF#sDd6B{r<_k$~ka=N5CB{gk%q@To&Ez642 zl*V_Y0@vI9HP^>_K9bC@YM%gvu3)=$dOkk6Rs{qqz>7L4{S3rxn*lh9!EFmFkwL~j zs6coUgY{Fg4CV=3ngyOr%c2BeJC8Cu8PQeB04|V0d7l9s19i?|tM>L56zbZR72fa< z1p*4>IR?gNFXmg|@8&<O06J<_4)IVt|IFYh1K@96RlXuv5m14OfGVisOMgWm3Ro6! xc10knKySVyxcPbb74$OP`-*${jrjc)cmq=<R9eyUd^Z39002ovPDHLkV1lZQbKn2~ literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/easyimage/icons/hidpi/easyimageupload.png b/src/static/ckeditor/plugins/easyimage/icons/hidpi/easyimageupload.png new file mode 100644 index 0000000000000000000000000000000000000000..d0f21aeec2061dd27fc335d91509001bf040b394 GIT binary patch literal 905 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzmUKs7M+SzC{oH>NSwWJ?9znhg z3{`3j3=J&|48MRv4KElNN(~qoUL`OvSj}Ky5HFasE6@fg!ItFh?!xdN1Q+aGJ{c&& zUgGKN%Km_xiC2-KneQA20|Qg9r;B4q#NngiyYsF(2-t2e&*?U+aq!am(IlcN?C9;< z{gag|it8W4%Sn^E#JWl}Kd}Y`K4bRiPI~{2hc(K$eEr^Sp9Pd7Z+)LrT=qut^2w8& z$9zJ|f4OYQ+LuzcK6=mV#y8g(t{KGfDop>b*t_=roJ6Kcw>r1x_Mg=^VPcq<6dj~! zd5ZC_o28uO?Zt-2^Ok;|+q$RXdR1q4x@vK-up$e?4WWrb6Pa#Qy?<}(P@Z&vP1ra; zbgSuSU1Q;fYi!S>j$QK)WMt44JZPCdckj9D^XJc3UaP!FHei+2su{A{#~iF2T-X#W zKVQCl*>%nGHD6T!nCSdkekgKZ#^#%EEMgv62nL5*+}_B&=X<_ON`Zz_`n}&~`@hG0 z+G@6v!T7M{^+)f^8|M`38uR;I-g{i)yGX{YXPgbEHLr<nnH?3f=}C->Kyph5&u=G= z9XogaT)E2K<xAEpt~AjNJ)hK%bqE}~x8u9q?6c2Kz4@!7)bHJLC+J$R)=e|x`hcs> z49!|DUsk`~75L4SbyGq%V@&0H^+v<b!J)O;$tsbTP4@rZCvRPD#dfK<u#k}<I@ET} zDzDBL8s+cyx^p~qf7R_#cW?2ob^CjMYJ|BcvdGBGubvw1qQ@AsY|n*K*%>?M?{*5U zy=iiG^Ii#!yQQI__tl>Dz1kI)X1C_`FXe_)=bm#d*|_ih{^cJZzWS76qEP(Kwddnc zkpmLSNj>42^K179^W0eC>cVUgeWFLJpthEmAwJh=)6N8+wT8!9XUsU)rqtBj+^l!Z z;>%~|=VzMcDQ_^33cYI0@HHu4InD98zucPYmliD_>U<srP2J-rSe@#yP)m+^;`ZmK zzNw~1v%U){eD<Hy`)%Am-sh**v9lM5|9;Q#kKxf%r%)>yCK+H_RV{IiC`m~yNwrEY zN(E93Mh1pvx`u|j21X%<##YA0Rt5&z28KZLI^&wRC>nC}Q!>*kacfu>BN7PIz~JfX K=d#Wzp$PzE&Ulgl literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/easyimage/lang/en.js b/src/static/ckeditor/plugins/easyimage/lang/en.js new file mode 100644 index 00000000..bbc94bcc --- /dev/null +++ b/src/static/ckeditor/plugins/easyimage/lang/en.js @@ -0,0 +1,5 @@ +/* + 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.setLang("easyimage","en",{commands:{fullImage:"Full Size Image",sideImage:"Side Image",altText:"Change image alternative text",upload:"Upload Image"},uploadFailed:"Your image could not be uploaded due to a network error."}); \ No newline at end of file diff --git a/src/static/ckeditor/plugins/easyimage/plugin.js b/src/static/ckeditor/plugins/easyimage/plugin.js new file mode 100644 index 00000000..56aa5e9b --- /dev/null +++ b/src/static/ckeditor/plugins/easyimage/plugin.js @@ -0,0 +1,19 @@ +/* + Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved. + For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +(function(){function f(a){return CKEDITOR.tools.capitalize(a,!0)}function p(a,c){function b(a){return function(b,d){var c=b.widgets.focused,e=CKEDITOR.TRISTATE_DISABLED;c&&"easyimage"===c.name&&(e=a&&a.call(this,c,b,d)?CKEDITOR.TRISTATE_ON:CKEDITOR.TRISTATE_OFF);this.setState(e)}}function e(a,c,d,g){d.type="widget";d.widget="easyimage";d.group=d.group||"easyimage";d.element="figure";c=new CKEDITOR.style(d);a.filter.allow(c);c=new CKEDITOR.styleCommand(c);c.contextSensitive=!0;c.refresh=b(function(a, +b,c){return this.style.checkActive(c,b)});a.addCommand(g,c);c=a.getCommand(g);c.enable=function(){};c.refresh(a,a.elementPath());return c}a.addCommand("easyimageAlt",new CKEDITOR.dialogCommand("easyimageAlt",{startDisabled:!0,contextSensitive:!0,refresh:b()}));(function(b){function c(a,b){var d=a.match(/^easyimage(.+)$/);if(d){var e=(d[1][0]||"").toLowerCase()+d[1].substr(1);if(d[1]in b)return d[1];if(e in b)return e}return null}a.on("afterCommandExec",function(d){c(d.data.name,b)&&(a.forceNextSelectionCheck(), +a.selectionChange(!0))});a.on("beforeCommandExec",function(d){c(d.data.name,b)&&d.data.command.style.checkActive(d.editor.elementPath(),a)&&(d.cancel(),a.focus())});for(var d in b)e(a,d,b[d],"easyimage"+f(d))})(c)}function q(a){var c=a.config.easyimage_toolbar;a.plugins.contextmenu&&(c.split&&(c=c.split(",")),a.addMenuGroup("easyimage"),CKEDITOR.tools.array.forEach(c,function(b){b=a.ui.items[b];a.addMenuItem(b.name,{label:b.label,command:b.command,group:"easyimage"})}))}function r(a){var c=a.sender.editor, +b=c.config.easyimage_toolbar;b.split&&(b=b.split(","));CKEDITOR.tools.array.forEach(b,function(b){b=c.ui.items[b];a.data[b.name]=c.getCommand(b.command).state})}function t(a,c){var b=a.config,e=b.easyimage_class,b={name:"easyimage",allowedContent:{figure:{classes:b.easyimage_sideClass},img:{attributes:"!src,srcset,alt,width,sizes"}},requiredContent:"figure; img[!src]",styleableElements:"figure",supportedTypes:new RegExp("image/("+l.join("|")+")","i"),loaderType:CKEDITOR.plugins.cloudservices.cloudServicesLoader, +progressReporterType:CKEDITOR.plugins.imagebase.progressBar,upcasts:{figure:function(a){if((!e||a.hasClass(e))&&1===a.find("img",!0).length)return a}},init:function(){function b(a,c){var e=a.$;if(e.complete&&e.naturalWidth)return c(e.naturalWidth);a.once("load",function(){c(e.naturalWidth)})}var c=this.parts.image;c&&!c.$.complete&&b(c,function(){a._.easyImageToolbarContext.toolbar.reposition()});c=this.element.data("cke-upload-id");"undefined"!==typeof c&&(this.setData("uploadId",c),this.element.data("cke-upload-id", +!1));this.on("contextMenu",r);a.config.easyimage_class&&this.addClass(a.config.easyimage_class);this.on("uploadStarted",function(){var a=this;b(a.parts.image,function(b){a.parts.image.hasAttribute("width")||(a.editor.fire("lockSnapshot"),a.parts.image.setAttribute("width",b),a.editor.fire("unlockSnapshot"))})});this.on("uploadDone",function(a){a=a.data.loader.responseData.response;var b=CKEDITOR.plugins.easyimage._parseSrcSet(a);this.parts.image.setAttributes({"data-cke-saved-src":a["default"],src:a["default"], +srcset:b,sizes:"100vw"})});this.on("uploadFailed",function(){alert(this.editor.lang.easyimage.uploadFailed)});this._loadDefaultStyle()},_loadDefaultStyle:function(){var b=!1,e=a.config.easyimage_defaultStyle,d;for(d in c){var g=a.getCommand("easyimage"+f(d));!b&&g&&g.style&&-1!==CKEDITOR.tools.array.indexOf(g.style.group,"easyimage")&&this.checkStyleActive(g.style)&&(b=!0)}!b&&e&&a.getCommand("easyimage"+f(e))&&this.applyStyle(a.getCommand("easyimage"+f(e)).style)}};e&&(b.requiredContent+="(!"+e+ +")",b.allowedContent.figure.classes="!"+e+","+b.allowedContent.figure.classes);a.plugins.link&&(b=CKEDITOR.plugins.imagebase.addFeature(a,"link",b));b=CKEDITOR.plugins.imagebase.addFeature(a,"upload",b);b=CKEDITOR.plugins.imagebase.addFeature(a,"caption",b);CKEDITOR.plugins.imagebase.addImageWidget(a,"easyimage",b)}function u(a){var c=new RegExp("\x3cimg[^\x3e]*\\ssrc\x3d[\\'\\\"]?data:image/("+l.join("|")+");base64,","i");a.on("paste",function(b){if(!a.isReadOnly&&c.test(b.data.dataValue)){b=b.data; +var e=document.implementation.createHTMLDocument(""),e=new CKEDITOR.dom.element(e.body),f=a.widgets.registered.easyimage,l=0,d,g,k,m;e.data("cke-editable",1);e.appendHtml(b.dataValue);g=e.find("img");for(m=0;m<g.count();m++){k=g.getItem(m);var h=(d=k.getAttribute("src"))&&"data:"==d.substring(0,5),n=null===k.data("cke-realelement");h&&n&&!k.isReadOnly(1)&&(l++,1<l&&(h=a.getSelection().getRanges(),h[0].enlarge(CKEDITOR.ENLARGE_ELEMENT),h[0].collapse(!1)),d.match(/image\/([a-z]+?);/i),h=f._spawnLoader(a, +d,f),d=f._insertWidget(a,f,d,!1,{uploadId:h.id}),d.data("cke-upload-id",h.id),d.replace(k))}b.dataValue=e.getHtml()}})}function v(a){a.ui.addButton("EasyImageUpload",{label:a.lang.easyimage.commands.upload,command:"easyimageUpload",toolbar:"insert,1"});a.addCommand("easyimageUpload",{exec:function(){var c=CKEDITOR.dom.element.createFromHtml('\x3cinput type\x3d"file" accept\x3d"image/*" multiple\x3d"multiple"\x3e');c.once("change",function(b){b=b.data.getTarget();b.$.files.length&&a.fire("paste",{method:"paste", +dataValue:"",dataTransfer:new CKEDITOR.plugins.clipboard.dataTransfer({files:b.$.files})})});c.$.click()}})}var n=!1,l=["jpeg","png","gif","bmp"];CKEDITOR.plugins.easyimage={_parseSrcSet:function(a){var c=[],b;for(b in a)"default"!==b&&c.push(a[b]+" "+b+"w");return c.join(", ")}};CKEDITOR.plugins.add("easyimage",{requires:"imagebase,balloontoolbar,button,dialog,cloudservices",lang:"en",icons:"easyimagefull,easyimageside,easyimagealt,easyimagealignleft,easyimagealigncenter,easyimagealignright,easyimageupload", +hidpi:!0,onLoad:function(){CKEDITOR.dialog.add("easyimageAlt",this.path+"dialogs/easyimagealt.js")},isSupportedEnvironment:function(){return!CKEDITOR.env.ie||11<=CKEDITOR.env.version},init:function(a){this.isSupportedEnvironment()&&(n||(CKEDITOR.document.appendStyleSheet(this.path+"styles/easyimage.css"),n=!0),a.addContentsCss&&a.addContentsCss(this.path+"styles/easyimage.css"))},afterInit:function(a){if(this.isSupportedEnvironment()){var c;c=CKEDITOR.tools.object.merge({full:{attributes:{"class":"easyimage-full"}, +label:a.lang.easyimage.commands.fullImage},side:{attributes:{"class":"easyimage-side"},label:a.lang.easyimage.commands.sideImage},alignLeft:{attributes:{"class":"easyimage-align-left"},label:a.lang.common.alignLeft},alignCenter:{attributes:{"class":"easyimage-align-center"},label:a.lang.common.alignCenter},alignRight:{attributes:{"class":"easyimage-align-right"},label:a.lang.common.alignRight}},a.config.easyimage_styles);t(a,c);u(a);p(a,c);a.ui.addButton("EasyImageAlt",{label:a.lang.easyimage.commands.altText, +command:"easyimageAlt",toolbar:"easyimage,3"});for(var b in c)a.ui.addButton("EasyImage"+f(b),{label:c[b].label,command:"easyimage"+f(b),toolbar:"easyimage,99",icon:c[b].icon,iconHiDpi:c[b].iconHiDpi});q(a);c=a.config.easyimage_toolbar;a._.easyImageToolbarContext=a.balloonToolbars.create({buttons:c.join?c.join(","):c,widgets:["easyimage"]});v(a)}}});CKEDITOR.config.easyimage_class="easyimage";CKEDITOR.config.easyimage_styles={};CKEDITOR.config.easyimage_defaultStyle="full";CKEDITOR.config.easyimage_toolbar= +["EasyImageFull","EasyImageSide","EasyImageAlt"]})(); \ No newline at end of file diff --git a/src/static/ckeditor/plugins/easyimage/styles/easyimage.css b/src/static/ckeditor/plugins/easyimage/styles/easyimage.css new file mode 100644 index 00000000..fb208ea0 --- /dev/null +++ b/src/static/ckeditor/plugins/easyimage/styles/easyimage.css @@ -0,0 +1,118 @@ +/* +Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ + +.easyimage, .cke_widget_wrapper_easyimage { + background: transparent; + border: none; + outline: 0px; + display: block; + padding: 0; + clear: both; +} + +/* +The outline is not a part of the element's dimensions. A border needs to be used as an outline to align the linked image with a caption. +*/ +.easyimage a > img { + outline: none; + border: 1px solid #0782C1; + box-sizing: border-box; + padding: 1px; +} + +.cke_widget_wrapper_easyimage figure { + margin: 0; +} + +.easyimage img, .cke_widget_uploadeasyimage img { + display: block; + height: auto; + margin: 0 auto; + max-width: 100%; +} + +.cke_widget_wrapper_easyimage-side, :not(.cke_widget_wrapper_easyimage):not(.cke_widget_wrapper_easyimage-side) > .easyimage-side, +.cke_widget_wrapper_easyimage-align-right, :not(.cke_widget_wrapper_easyimage):not(.cke_widget_wrapper_easyimage-align-right) > .easyimage-align-right { + /* + The :not() selector will be used for Easy Image content ouside of the editor, for example: when the editor was destroyed. + See https://github.com/ckeditor/ckeditor4/pull/1150#discussion_r150415261 for more details. + */ + float: right; + max-width: 50%; + /* + In case of placement inside the parent container like a table cell, 'min-width' is needed to prevent the widget from having + tiny sizes. The `em` unit is used so it works well and has proper proportions to the textual content around (#1553). + */ + min-width: 10em; + margin-left: 1.5em; +} + +/* +Overwrite 'max-width: 50%' with 'max-width: 50vw' to prevent the native Chrome bug: +https://bugs.chromium.org/p/chromium/issues/detail?id=803045 (#1550). +*/ +body.cke_editable > .cke_widget_wrapper_easyimage-side { + max-width: 50vw; +} + +.cke_widget_wrapper_easyimage-align-left, :not(.cke_widget_wrapper_easyimage):not(.cke_widget_wrapper_easyimage-align-left) > .easyimage-align-left { + float: left; + max-width: 50%; + min-width: 10em; + margin-right: 1.5em; +} + +.cke_widget_wrapper_easyimage-align-center, :not(.cke_widget_wrapper_easyimage):not(.cke_widget_wrapper_easyimage-align-center) > .easyimage-align-center { + margin: 0 auto; + max-width: 90%; +} + +.easyimage .cke_widget_editable { + background-color: #f7f7f7; + /* Add border so when caption is focused, blue border does not cause flickering. */ + border: 1px solid #f7f7f7; + color: #333; + padding: .8em; +} + +.cke_widget_wrapper:hover .easyimage .cke_widget_editable { + outline: 3px solid transparent; +} + +.cke_widget_wrapper .easyimage .cke_widget_editable.cke_widget_editable_focused { + background-color: #fff; + border-color: #48a3f5; + outline: none; +} + +/* Loaders */ + +.cke_widget_element.easyimage { + position: relative; +} + +.cke_loader { + position: absolute; + top: 0px; + left: 0px; + right: 0px; +} + +.cke_loader .cke_bar { + height: 10px; + background: #6a9ed1; + width: 0; +} + +/* Fancy opacity effect discussed in #1533. Transition is assigned in this awkward way so that it **does not** happen for +the initial render, otherwise it would start transitioning from opacity 1 to 0.x upon the first render. */ + +.cke_widget_wrapper_easyimage:not(.cke_widget_wrapper_uploading) figure img { + transition: opacity 0.3s ease-in-out; +} + +.cke_widget_wrapper_easyimage.cke_widget_wrapper_uploading figure img { + opacity: 0.75; +} diff --git a/src/static/ckeditor/plugins/embedbase/lang/zh-cn.js b/src/static/ckeditor/plugins/embedbase/lang/zh-cn.js index 3a2c90a0..092c1908 100755 --- a/src/static/ckeditor/plugins/embedbase/lang/zh-cn.js +++ b/src/static/ckeditor/plugins/embedbase/lang/zh-cn.js @@ -1 +1 @@ -CKEDITOR.plugins.setLang("embedbase","zh-cn",{pathName:"媒体对象",title:"嵌入媒体",button:"插入媒体",unsupportedUrlGiven:"不支持指定的 URL",unsupportedUrl:"嵌入媒体不支持此 URL {url}",fetchingFailedGiven:"无法抓取此 URL 的文档",fetchingFailed:"无法抓取 {url} 的文档",fetchingOne:"正在抓取...",fetchingMany:"正在抓取,{max} 中的 {current} ..."}); \ No newline at end of file +CKEDITOR.plugins.setLang("embedbase","zh-cn",{pathName:"媒体对象",title:"嵌入媒体",button:"插入媒体",unsupportedUrlGiven:"不支持指定的 URL",unsupportedUrl:"嵌入媒体不支持此 URL {url}",fetchingFailedGiven:"无法抓取此 URL 的内容",fetchingFailed:"无法抓取 {url} 的内容",fetchingOne:"正在抓取...",fetchingMany:"正在抓取,{max} 中的 {current} ..."}); \ No newline at end of file diff --git a/src/static/ckeditor/plugins/flash/dialogs/flash.js b/src/static/ckeditor/plugins/flash/dialogs/flash.js new file mode 100644 index 00000000..d4c24eb1 --- /dev/null +++ b/src/static/ckeditor/plugins/flash/dialogs/flash.js @@ -0,0 +1,24 @@ +/* + Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved. + For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +(function(){function b(a,b,c){var h=n[this.id];if(h)for(var f=this instanceof CKEDITOR.ui.dialog.checkbox,e=0;e<h.length;e++){var d=h[e];switch(d.type){case 1:if(!a)continue;if(null!==a.getAttribute(d.name)){a=a.getAttribute(d.name);f?this.setValue("true"==a.toLowerCase()):this.setValue(a);return}f&&this.setValue(!!d["default"]);break;case 2:if(!a)continue;if(d.name in c){a=c[d.name];f?this.setValue("true"==a.toLowerCase()):this.setValue(a);return}f&&this.setValue(!!d["default"]);break;case 4:if(!b)continue; +if(b.getAttribute(d.name)){a=b.getAttribute(d.name);f?this.setValue("true"==a.toLowerCase()):this.setValue(a);return}f&&this.setValue(!!d["default"])}}}function c(a,b,c){var h=n[this.id];if(h)for(var f=""===this.getValue(),e=this instanceof CKEDITOR.ui.dialog.checkbox,d=0;d<h.length;d++){var g=h[d];switch(g.type){case 1:if(!a||"data"==g.name&&b&&!a.hasAttribute("data"))continue;var m=this.getValue();f||e&&m===g["default"]?a.removeAttribute(g.name):a.setAttribute(g.name,m);break;case 2:if(!a)continue; +m=this.getValue();if(f||e&&m===g["default"])g.name in c&&c[g.name].remove();else if(g.name in c)c[g.name].setAttribute("value",m);else{var p=CKEDITOR.dom.element.createFromHtml("\x3ccke:param\x3e\x3c/cke:param\x3e",a.getDocument());p.setAttributes({name:g.name,value:m});1>a.getChildCount()?p.appendTo(a):p.insertBefore(a.getFirst())}break;case 4:if(!b)continue;m=this.getValue();f||e&&m===g["default"]?b.removeAttribute(g.name):b.setAttribute(g.name,m)}}}for(var n={id:[{type:1,name:"id"}],classid:[{type:1, +name:"classid"}],codebase:[{type:1,name:"codebase"}],pluginspage:[{type:4,name:"pluginspage"}],src:[{type:2,name:"movie"},{type:4,name:"src"},{type:1,name:"data"}],name:[{type:4,name:"name"}],align:[{type:1,name:"align"}],"class":[{type:1,name:"class"},{type:4,name:"class"}],width:[{type:1,name:"width"},{type:4,name:"width"}],height:[{type:1,name:"height"},{type:4,name:"height"}],hSpace:[{type:1,name:"hSpace"},{type:4,name:"hSpace"}],vSpace:[{type:1,name:"vSpace"},{type:4,name:"vSpace"}],style:[{type:1, +name:"style"},{type:4,name:"style"}],type:[{type:4,name:"type"}]},k="play loop menu quality scale salign wmode bgcolor base flashvars allowScriptAccess allowFullScreen".split(" "),l=0;l<k.length;l++)n[k[l]]=[{type:4,name:k[l]},{type:2,name:k[l]}];k=["play","loop","menu"];for(l=0;l<k.length;l++)n[k[l]][0]["default"]=n[k[l]][1]["default"]=!0;CKEDITOR.dialog.add("flash",function(a){var l=!a.config.flashEmbedTagOnly,k=a.config.flashAddEmbedTag||a.config.flashEmbedTagOnly,h,f="\x3cdiv\x3e"+CKEDITOR.tools.htmlEncode(a.lang.common.preview)+ +'\x3cbr\x3e\x3cdiv id\x3d"cke_FlashPreviewLoader'+CKEDITOR.tools.getNextNumber()+'" style\x3d"display:none"\x3e\x3cdiv class\x3d"loading"\x3e\x26nbsp;\x3c/div\x3e\x3c/div\x3e\x3cdiv id\x3d"cke_FlashPreviewBox'+CKEDITOR.tools.getNextNumber()+'" class\x3d"FlashPreviewBox"\x3e\x3c/div\x3e\x3c/div\x3e';return{title:a.lang.flash.title,minWidth:420,minHeight:310,getModel:function(a){return(a=a.getSelection().getSelectedElement())&&"flash"===a.data("cke-real-element-type")?a:null},onShow:function(){this.fakeImage= +this.objectNode=this.embedNode=null;h=new CKEDITOR.dom.element("embed",a.document);var e=this.getModel(a);if(e){this.fakeImage=e;var d=a.restoreRealElement(e),g=null,b=null,c={};if("cke:object"==d.getName()){g=d;d=g.getElementsByTag("embed","cke");0<d.count()&&(b=d.getItem(0));for(var d=g.getElementsByTag("param","cke"),f=0,l=d.count();f<l;f++){var k=d.getItem(f),n=k.getAttribute("name"),k=k.getAttribute("value");c[n]=k}}else"cke:embed"==d.getName()&&(b=d);this.objectNode=g;this.embedNode=b;this.setupContent(g, +b,c,e)}},onOk:function(){var e=null,d=null,b=null;this.fakeImage?(e=this.objectNode,d=this.embedNode):(l&&(e=CKEDITOR.dom.element.createFromHtml("\x3ccke:object\x3e\x3c/cke:object\x3e",a.document),e.setAttributes({classid:"clsid:d27cdb6e-ae6d-11cf-96b8-444553540000",codebase:"http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version\x3d6,0,40,0"})),k&&(d=CKEDITOR.dom.element.createFromHtml("\x3ccke:embed\x3e\x3c/cke:embed\x3e",a.document),d.setAttributes({type:"application/x-shockwave-flash", +pluginspage:"http://www.macromedia.com/go/getflashplayer"}),e&&d.appendTo(e)));if(e)for(var b={},c=e.getElementsByTag("param","cke"),f=0,h=c.count();f<h;f++)b[c.getItem(f).getAttribute("name")]=c.getItem(f);c={};f={};this.commitContent(e,d,b,c,f);e=a.createFakeElement(e||d,"cke_flash","flash",!0);e.setAttributes(f);e.setStyles(c);this.fakeImage?(e.replace(this.fakeImage),a.getSelection().selectElement(e)):a.insertElement(e)},onHide:function(){this.preview&&this.preview.setHtml("")},contents:[{id:"info", +label:a.lang.common.generalTab,accessKey:"I",elements:[{type:"vbox",padding:0,children:[{type:"hbox",widths:["280px","110px"],align:"right",className:"cke_dialog_flash_url",children:[{id:"src",type:"text",label:a.lang.common.url,required:!0,validate:CKEDITOR.dialog.validate.notEmpty(a.lang.flash.validateSrc),setup:b,commit:c,onLoad:function(){var a=this.getDialog(),b=function(b){h.setAttribute("src",b);a.preview.setHtml('\x3cembed height\x3d"100%" width\x3d"100%" src\x3d"'+CKEDITOR.tools.htmlEncode(h.getAttribute("src"))+ +'" type\x3d"application/x-shockwave-flash"\x3e\x3c/embed\x3e')};a.preview=a.getContentElement("info","preview").getElement().getChild(3);this.on("change",function(a){a.data&&a.data.value&&b(a.data.value)});this.getInputElement().on("change",function(){b(this.getValue())},this)}},{type:"button",id:"browse",filebrowser:"info:src",hidden:!0,style:"display:inline-block;margin-top:14px;",label:a.lang.common.browseServer}]}]},{type:"hbox",widths:["25%","25%","25%","25%","25%"],children:[{type:"text",id:"width", +requiredContent:"embed[width]",style:"width:95px",label:a.lang.common.width,validate:CKEDITOR.dialog.validate.htmlLength(a.lang.common.invalidHtmlLength.replace("%1",a.lang.common.width)),setup:b,commit:c},{type:"text",id:"height",requiredContent:"embed[height]",style:"width:95px",label:a.lang.common.height,validate:CKEDITOR.dialog.validate.htmlLength(a.lang.common.invalidHtmlLength.replace("%1",a.lang.common.height)),setup:b,commit:c},{type:"text",id:"hSpace",requiredContent:"embed[hspace]",style:"width:95px", +label:a.lang.flash.hSpace,validate:CKEDITOR.dialog.validate.integer(a.lang.flash.validateHSpace),setup:b,commit:c},{type:"text",id:"vSpace",requiredContent:"embed[vspace]",style:"width:95px",label:a.lang.flash.vSpace,validate:CKEDITOR.dialog.validate.integer(a.lang.flash.validateVSpace),setup:b,commit:c}]},{type:"vbox",children:[{type:"html",id:"preview",style:"width:95%;",html:f}]}]},{id:"Upload",hidden:!0,filebrowser:"uploadButton",label:a.lang.common.upload,elements:[{type:"file",id:"upload",label:a.lang.common.upload, +size:38},{type:"fileButton",id:"uploadButton",label:a.lang.common.uploadSubmit,filebrowser:"info:src","for":["Upload","upload"]}]},{id:"properties",label:a.lang.flash.propertiesTab,elements:[{type:"hbox",widths:["50%","50%"],children:[{id:"scale",type:"select",requiredContent:"embed[scale]",label:a.lang.flash.scale,"default":"",style:"width : 100%;",items:[[a.lang.common.notSet,""],[a.lang.flash.scaleAll,"showall"],[a.lang.flash.scaleNoBorder,"noborder"],[a.lang.flash.scaleFit,"exactfit"]],setup:b, +commit:c},{id:"allowScriptAccess",type:"select",requiredContent:"embed[allowscriptaccess]",label:a.lang.flash.access,"default":"",style:"width : 100%;",items:[[a.lang.common.notSet,""],[a.lang.flash.accessAlways,"always"],[a.lang.flash.accessSameDomain,"samedomain"],[a.lang.flash.accessNever,"never"]],setup:b,commit:c}]},{type:"hbox",widths:["50%","50%"],children:[{id:"wmode",type:"select",requiredContent:"embed[wmode]",label:a.lang.flash.windowMode,"default":"",style:"width : 100%;",items:[[a.lang.common.notSet, +""],[a.lang.flash.windowModeWindow,"window"],[a.lang.flash.windowModeOpaque,"opaque"],[a.lang.flash.windowModeTransparent,"transparent"]],setup:b,commit:c},{id:"quality",type:"select",requiredContent:"embed[quality]",label:a.lang.flash.quality,"default":"high",style:"width : 100%;",items:[[a.lang.common.notSet,""],[a.lang.flash.qualityBest,"best"],[a.lang.flash.qualityHigh,"high"],[a.lang.flash.qualityAutoHigh,"autohigh"],[a.lang.flash.qualityMedium,"medium"],[a.lang.flash.qualityAutoLow,"autolow"], +[a.lang.flash.qualityLow,"low"]],setup:b,commit:c}]},{type:"hbox",widths:["50%","50%"],children:[{id:"align",type:"select",requiredContent:"object[align]",label:a.lang.common.align,"default":"",style:"width : 100%;",items:[[a.lang.common.notSet,""],[a.lang.common.left,"left"],[a.lang.flash.alignAbsBottom,"absBottom"],[a.lang.flash.alignAbsMiddle,"absMiddle"],[a.lang.flash.alignBaseline,"baseline"],[a.lang.common.alignBottom,"bottom"],[a.lang.common.alignMiddle,"middle"],[a.lang.common.right,"right"], +[a.lang.flash.alignTextTop,"textTop"],[a.lang.common.alignTop,"top"]],setup:b,commit:function(a,b,f,k,l){var h=this.getValue();c.apply(this,arguments);h&&(l.align=h)}},{type:"html",html:"\x3cdiv\x3e\x3c/div\x3e"}]},{type:"fieldset",label:CKEDITOR.tools.htmlEncode(a.lang.flash.flashvars),children:[{type:"vbox",padding:0,children:[{type:"checkbox",id:"menu",label:a.lang.flash.chkMenu,"default":!0,setup:b,commit:c},{type:"checkbox",id:"play",label:a.lang.flash.chkPlay,"default":!0,setup:b,commit:c}, +{type:"checkbox",id:"loop",label:a.lang.flash.chkLoop,"default":!0,setup:b,commit:c},{type:"checkbox",id:"allowFullScreen",label:a.lang.flash.chkFull,"default":!0,setup:b,commit:c}]}]}]},{id:"advanced",label:a.lang.common.advancedTab,elements:[{type:"hbox",children:[{type:"text",id:"id",requiredContent:"object[id]",label:a.lang.common.id,setup:b,commit:c}]},{type:"hbox",widths:["45%","55%"],children:[{type:"text",id:"bgcolor",requiredContent:"embed[bgcolor]",label:a.lang.flash.bgcolor,setup:b,commit:c}, +{type:"text",id:"class",requiredContent:"embed(cke-xyz)",label:a.lang.common.cssClass,setup:b,commit:c}]},{type:"text",id:"style",requiredContent:"embed{cke-xyz}",validate:CKEDITOR.dialog.validate.inlineStyle(a.lang.common.invalidInlineStyle),label:a.lang.common.cssStyle,setup:b,commit:c}]}]}})})(); \ No newline at end of file diff --git a/src/static/ckeditor/plugins/flash/images/placeholder.png b/src/static/ckeditor/plugins/flash/images/placeholder.png new file mode 100644 index 0000000000000000000000000000000000000000..0bc6caa7a6abca57d3f1e1376fbd5067d5cd66d0 GIT binary patch literal 256 zcmV+b0ssDqP)<h;3K|Lk000e1NJLTq0027x000{Z0{{R3^;ZYC0000pP)t-s|1&fH z0093YBL5K)|3pOph=~8Hs{h^H|95x)|NsB)?*F^H|CyQpRaO6KY5&a3|7K?7O*3i$ z004+dL_t(|UhS1h3d1lA05y`=to{FMYthhL3R!xL=OW8^BpD2rg}W?5y$g?VySw5@ zHQR&&rG*^8rux|zhTrb&VRu!<+Q~qwO1|Vy#7J~Ec>4p_Nnh8Sn%0^H2yKmXs_)2F ztJy_}S7x3Wy+9bua($h3aU$x8vL^9#zi)q&hjjO!f8h;)*e}{WeFK#M0000<MNUMn GLSTaQZFZ3W literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/forms/dialogs/button.js b/src/static/ckeditor/plugins/forms/dialogs/button.js new file mode 100644 index 00000000..a2873342 --- /dev/null +++ b/src/static/ckeditor/plugins/forms/dialogs/button.js @@ -0,0 +1,8 @@ +/* + 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 +*/ +CKEDITOR.dialog.add("button",function(b){function d(a){var b=this.getValue();b?(a.attributes[this.id]=b,"name"==this.id&&(a.attributes["data-cke-saved-name"]=b)):(delete a.attributes[this.id],"name"==this.id&&delete a.attributes["data-cke-saved-name"])}return{title:b.lang.forms.button.title,minWidth:350,minHeight:150,getModel:function(a){return(a=a.getSelection().getSelectedElement())&&a.is("input")&&a.getAttribute("type")in{button:1,reset:1,submit:1}?a:null},onShow:function(){var a=this.getModel(this.getParentEditor()); +a&&this.setupContent(a)},onOk:function(){var a=this.getParentEditor(),b=this.getModel(a),d=this.getMode(a)==CKEDITOR.dialog.CREATION_MODE,c=b?CKEDITOR.htmlParser.fragment.fromHtml(b.getOuterHtml()).children[0]:new CKEDITOR.htmlParser.element("input");this.commitContent(c);var e=new CKEDITOR.htmlParser.basicWriter;c.writeHtml(e);c=CKEDITOR.dom.element.createFromHtml(e.getHtml(),a.document);d?a.insertElement(c):(c.replace(b),a.getSelection().selectElement(c))},contents:[{id:"info",label:b.lang.forms.button.title, +title:b.lang.forms.button.title,elements:[{id:"name",type:"text",bidi:!0,label:b.lang.common.name,"default":"",setup:function(a){this.setValue(a.data("cke-saved-name")||a.getAttribute("name")||"")},commit:d},{id:"value",type:"text",label:b.lang.forms.button.text,accessKey:"V","default":"",setup:function(a){this.setValue(a.getAttribute("value")||"")},commit:d},{id:"type",type:"select",label:b.lang.forms.button.type,"default":"button",accessKey:"T",items:[[b.lang.forms.button.typeBtn,"button"],[b.lang.forms.button.typeSbm, +"submit"],[b.lang.forms.button.typeRst,"reset"]],setup:function(a){this.setValue(a.getAttribute("type")||"")},commit:d}]}]}}); \ No newline at end of file diff --git a/src/static/ckeditor/plugins/forms/dialogs/checkbox.js b/src/static/ckeditor/plugins/forms/dialogs/checkbox.js new file mode 100644 index 00000000..74fac12f --- /dev/null +++ b/src/static/ckeditor/plugins/forms/dialogs/checkbox.js @@ -0,0 +1,9 @@ +/* + 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 +*/ +CKEDITOR.dialog.add("checkbox",function(d){return{title:d.lang.forms.checkboxAndRadio.checkboxTitle,minWidth:350,minHeight:140,getModel:function(a){return(a=a.getSelection().getSelectedElement())&&"checkbox"==a.getAttribute("type")?a:null},onShow:function(){var a=this.getModel(this.getParentEditor());a&&this.setupContent(a)},onOk:function(){var a=this.getParentEditor(),b=this.getModel(a);b||(b=a.document.createElement("input"),b.setAttribute("type","checkbox"),a.insertElement(b));this.commitContent({element:b})}, +contents:[{id:"info",label:d.lang.forms.checkboxAndRadio.checkboxTitle,title:d.lang.forms.checkboxAndRadio.checkboxTitle,startupFocus:"txtName",elements:[{id:"txtName",type:"text",label:d.lang.common.name,"default":"",accessKey:"N",setup:function(a){this.setValue(a.data("cke-saved-name")||a.getAttribute("name")||"")},commit:function(a){a=a.element;this.getValue()?a.data("cke-saved-name",this.getValue()):(a.data("cke-saved-name",!1),a.removeAttribute("name"))}},{id:"txtValue",type:"text",label:d.lang.forms.checkboxAndRadio.value, +"default":"",accessKey:"V",setup:function(a){a=a.getAttribute("value");this.setValue(CKEDITOR.env.ie&&"on"==a?"":a)},commit:function(a){var b=a.element,c=this.getValue();!c||CKEDITOR.env.ie&&"on"==c?CKEDITOR.env.ie?(c=new CKEDITOR.dom.element("input",b.getDocument()),b.copyAttributes(c,{value:1}),c.replace(b),d.getSelection().selectElement(c),a.element=c):b.removeAttribute("value"):b.setAttribute("value",c)}},{id:"cmbSelected",type:"checkbox",label:d.lang.forms.checkboxAndRadio.selected,"default":"", +accessKey:"S",value:"checked",setup:function(a){this.setValue(a.getAttribute("checked"))},commit:function(a){var b=a.element;if(CKEDITOR.env.ie){var c=!!b.getAttribute("checked"),e=!!this.getValue();c!=e&&(c=CKEDITOR.dom.element.createFromHtml('\x3cinput type\x3d"checkbox"'+(e?' checked\x3d"checked"':"")+"/\x3e",d.document),b.copyAttributes(c,{type:1,checked:1}),c.replace(b),d.getSelection().selectElement(c),a.element=c)}else a=this.getValue(),CKEDITOR.env.webkit&&(b.$.checked=a),a?b.setAttribute("checked", +"checked"):b.removeAttribute("checked")}},{id:"required",type:"checkbox",label:d.lang.forms.checkboxAndRadio.required,"default":"",accessKey:"Q",value:"required",setup:CKEDITOR.plugins.forms._setupRequiredAttribute,commit:function(a){a=a.element;this.getValue()?a.setAttribute("required","required"):a.removeAttribute("required")}}]}]}}); \ No newline at end of file diff --git a/src/static/ckeditor/plugins/forms/dialogs/form.js b/src/static/ckeditor/plugins/forms/dialogs/form.js new file mode 100644 index 00000000..6dc8fd73 --- /dev/null +++ b/src/static/ckeditor/plugins/forms/dialogs/form.js @@ -0,0 +1,8 @@ +/* + 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 +*/ +CKEDITOR.dialog.add("form",function(a){var d={action:1,id:1,method:1,enctype:1,target:1};return{title:a.lang.forms.form.title,minWidth:350,minHeight:200,getModel:function(b){return b.elementPath().contains("form",1)||null},onShow:function(){var b=this.getModel(this.getParentEditor());b&&this.setupContent(b)},onOk:function(){var b=this.getParentEditor(),a=this.getModel(b);a||(a=b.document.createElement("form"),a.appendBogus(),b.insertElement(a));this.commitContent(a)},onLoad:function(){function a(b){this.setValue(b.getAttribute(this.id)|| +"")}function e(a){this.getValue()?a.setAttribute(this.id,this.getValue()):a.removeAttribute(this.id)}this.foreach(function(c){d[c.id]&&(c.setup=a,c.commit=e)})},contents:[{id:"info",label:a.lang.forms.form.title,title:a.lang.forms.form.title,elements:[{id:"txtName",bidi:!0,type:"text",label:a.lang.common.name,"default":"",accessKey:"N",setup:function(a){this.setValue(a.data("cke-saved-name")||a.getAttribute("name")||"")},commit:function(a){this.getValue()?a.data("cke-saved-name",this.getValue()): +(a.data("cke-saved-name",!1),a.removeAttribute("name"))}},{id:"action",type:"text",label:a.lang.forms.form.action,"default":"",accessKey:"T"},{type:"hbox",widths:["45%","55%"],children:[{id:"id",type:"text",label:a.lang.common.id,"default":"",accessKey:"I"},{id:"enctype",type:"select",label:a.lang.forms.form.encoding,style:"width:100%",accessKey:"E","default":"",items:[[""],["text/plain"],["multipart/form-data"],["application/x-www-form-urlencoded"]]}]},{type:"hbox",widths:["45%","55%"],children:[{id:"target", +type:"select",label:a.lang.common.target,style:"width:100%",accessKey:"M","default":"",items:[[a.lang.common.notSet,""],[a.lang.common.targetNew,"_blank"],[a.lang.common.targetTop,"_top"],[a.lang.common.targetSelf,"_self"],[a.lang.common.targetParent,"_parent"]]},{id:"method",type:"select",label:a.lang.forms.form.method,accessKey:"M","default":"GET",items:[["GET","get"],["POST","post"]]}]}]}]}}); \ No newline at end of file diff --git a/src/static/ckeditor/plugins/forms/dialogs/hiddenfield.js b/src/static/ckeditor/plugins/forms/dialogs/hiddenfield.js new file mode 100644 index 00000000..8dbc1be0 --- /dev/null +++ b/src/static/ckeditor/plugins/forms/dialogs/hiddenfield.js @@ -0,0 +1,7 @@ +/* + 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 +*/ +CKEDITOR.dialog.add("hiddenfield",function(c){return{title:c.lang.forms.hidden.title,hiddenField:null,minWidth:350,minHeight:110,getModel:function(a){return(a=a.getSelection().getSelectedElement())&&a.data("cke-real-element-type")&&"hiddenfield"==a.data("cke-real-element-type")?a:null},onShow:function(){var a=this.getParentEditor(),b=this.getModel(a);b&&(this.setupContent(a.restoreRealElement(b)),a.getSelection().selectElement(b))},onOk:function(){var a=this.getValueOf("info","_cke_saved_name"),b= +this.getParentEditor(),a=CKEDITOR.env.ie&&8>CKEDITOR.document.$.documentMode?b.document.createElement('\x3cinput name\x3d"'+CKEDITOR.tools.htmlEncode(a)+'"\x3e'):b.document.createElement("input");a.setAttribute("type","hidden");this.commitContent(a);var a=b.createFakeElement(a,"cke_hidden","hiddenfield"),c=this.getModel(b);c?(a.replace(c),b.getSelection().selectElement(a)):b.insertElement(a);return!0},contents:[{id:"info",label:c.lang.forms.hidden.title,title:c.lang.forms.hidden.title,elements:[{id:"_cke_saved_name", +type:"text",label:c.lang.forms.hidden.name,"default":"",accessKey:"N",setup:function(a){this.setValue(a.data("cke-saved-name")||a.getAttribute("name")||"")},commit:function(a){this.getValue()?a.setAttribute("name",this.getValue()):a.removeAttribute("name")}},{id:"value",type:"text",label:c.lang.forms.hidden.value,"default":"",accessKey:"V",setup:function(a){this.setValue(a.getAttribute("value")||"")},commit:function(a){this.getValue()?a.setAttribute("value",this.getValue()):a.removeAttribute("value")}}]}]}}); \ No newline at end of file diff --git a/src/static/ckeditor/plugins/forms/dialogs/radio.js b/src/static/ckeditor/plugins/forms/dialogs/radio.js new file mode 100644 index 00000000..a9d2543e --- /dev/null +++ b/src/static/ckeditor/plugins/forms/dialogs/radio.js @@ -0,0 +1,9 @@ +/* + 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 +*/ +CKEDITOR.dialog.add("radio",function(c){return{title:c.lang.forms.checkboxAndRadio.radioTitle,minWidth:350,minHeight:140,getModel:function(a){return(a=a.getSelection().getSelectedElement())&&"input"==a.getName()&&"radio"==a.getAttribute("type")?a:null},onShow:function(){var a=this.getModel(this.getParentEditor());a&&this.setupContent(a)},onOk:function(){var a=this.getParentEditor(),b=this.getModel(a);b||(b=a.document.createElement("input"),b.setAttribute("type","radio"),a.insertElement(b));this.commitContent({element:b})}, +contents:[{id:"info",label:c.lang.forms.checkboxAndRadio.radioTitle,title:c.lang.forms.checkboxAndRadio.radioTitle,elements:[{id:"name",type:"text",label:c.lang.common.name,"default":"",accessKey:"N",setup:function(a){this.setValue(a.data("cke-saved-name")||a.getAttribute("name")||"")},commit:function(a){a=a.element;this.getValue()?a.data("cke-saved-name",this.getValue()):(a.data("cke-saved-name",!1),a.removeAttribute("name"))}},{id:"value",type:"text",label:c.lang.forms.checkboxAndRadio.value,"default":"", +accessKey:"V",setup:function(a){this.setValue(a.getAttribute("value")||"")},commit:function(a){a=a.element;this.getValue()?a.setAttribute("value",this.getValue()):a.removeAttribute("value")}},{id:"checked",type:"checkbox",label:c.lang.forms.checkboxAndRadio.selected,"default":"",accessKey:"S",value:"checked",setup:function(a){this.setValue(a.getAttribute("checked"))},commit:function(a){var b=a.element;if(CKEDITOR.env.ie){var d=b.getAttribute("checked"),e=!!this.getValue();d!=e&&(d=CKEDITOR.dom.element.createFromHtml('\x3cinput type\x3d"radio"'+ +(e?' checked\x3d"checked"':"")+"\x3e\x3c/input\x3e",c.document),b.copyAttributes(d,{type:1,checked:1}),d.replace(b),e&&d.setAttribute("checked","checked"),c.getSelection().selectElement(d),a.element=d)}else a=this.getValue(),CKEDITOR.env.webkit&&(b.$.checked=a),a?b.setAttribute("checked","checked"):b.removeAttribute("checked")}},{id:"required",type:"checkbox",label:c.lang.forms.checkboxAndRadio.required,"default":"",accessKey:"Q",value:"required",setup:CKEDITOR.plugins.forms._setupRequiredAttribute, +commit:function(a){a=a.element;this.getValue()?a.setAttribute("required","required"):a.removeAttribute("required")}}]}]}}); \ No newline at end of file diff --git a/src/static/ckeditor/plugins/forms/dialogs/select.js b/src/static/ckeditor/plugins/forms/dialogs/select.js new file mode 100644 index 00000000..d8242545 --- /dev/null +++ b/src/static/ckeditor/plugins/forms/dialogs/select.js @@ -0,0 +1,21 @@ +/* + 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 +*/ +CKEDITOR.dialog.add("select",function(c){function h(a,b,e,d,c){a=f(a);d=d?d.createElement("OPTION"):document.createElement("OPTION");if(a&&d&&"option"==d.getName())CKEDITOR.env.ie?(isNaN(parseInt(c,10))?a.$.options.add(d.$):a.$.options.add(d.$,c),d.$.innerHTML=0<b.length?b:"",d.$.value=e):(null!==c&&c<a.getChildCount()?a.getChild(0>c?0:c).insertBeforeMe(d):a.append(d),d.setText(0<b.length?b:""),d.setValue(e));else return!1;return d}function p(a){a=f(a);for(var b=g(a),e=a.getChildren().count()-1;0<= +e;e--)a.getChild(e).$.selected&&a.getChild(e).remove();k(a,b)}function q(a,b,e,d){a=f(a);if(0>b)return!1;a=a.getChild(b);a.setText(e);a.setValue(d);return a}function m(a){for(a=f(a);a.getChild(0)&&a.getChild(0).remove(););}function l(a,b,e){a=f(a);var d=g(a);if(0>d)return!1;b=d+b;b=0>b?0:b;b=b>=a.getChildCount()?a.getChildCount()-1:b;if(d==b)return!1;var d=a.getChild(d),c=d.getText(),r=d.getValue();d.remove();d=h(a,c,r,e?e:null,b);k(a,b);return d}function g(a){return(a=f(a))?a.$.selectedIndex:-1} +function k(a,b){a=f(a);if(0>b)return null;var e=a.getChildren().count();a.$.selectedIndex=b>=e?e-1:b;return a}function n(a){return(a=f(a))?a.getChildren():!1}function f(a){return a&&a.domId&&a.getInputElement().$?a.getInputElement():a&&a.$?a:!1}return{title:c.lang.forms.select.title,minWidth:CKEDITOR.env.ie?460:395,minHeight:CKEDITOR.env.ie?320:300,getModel:function(a){return(a=a.getSelection().getSelectedElement())&&"select"==a.getName()?a:null},onShow:function(){this.setupContent("clear");var a= +this.getModel(this.getParentEditor());if(a){this.setupContent(a.getName(),a);for(var a=n(a),b=0;b<a.count();b++)this.setupContent("option",a.getItem(b))}},onOk:function(){var a=this.getParentEditor(),b=this.getModel(a),e=this.getMode(a)==CKEDITOR.dialog.CREATION_MODE;e&&(b=a.document.createElement("select"));this.commitContent(b);if(e&&(a.insertElement(b),CKEDITOR.env.ie)){var d=a.getSelection(),c=d.createBookmarks();setTimeout(function(){d.selectBookmarks(c)},0)}},contents:[{id:"info",label:c.lang.forms.select.selectInfo, +title:c.lang.forms.select.selectInfo,accessKey:"",elements:[{id:"txtName",type:"text",widths:["25%","75%"],labelLayout:"horizontal",label:c.lang.common.name,"default":"",accessKey:"N",style:"width:350px",setup:function(a,b){"clear"==a?this.setValue(this["default"]||""):"select"==a&&this.setValue(b.data("cke-saved-name")||b.getAttribute("name")||"")},commit:function(a){this.getValue()?a.data("cke-saved-name",this.getValue()):(a.data("cke-saved-name",!1),a.removeAttribute("name"))}},{id:"txtValue", +type:"text",widths:["25%","75%"],labelLayout:"horizontal",label:c.lang.forms.select.value,style:"width:350px","default":"",className:"cke_disabled",onLoad:function(){this.getInputElement().setAttribute("readOnly",!0)},setup:function(a,b){"clear"==a?this.setValue(""):"option"==a&&b.getAttribute("selected")&&this.setValue(b.$.value)}},{type:"hbox",className:"cke_dialog_forms_select_order_txtsize",widths:["175px","170px"],children:[{id:"txtSize",type:"text",labelLayout:"horizontal",label:c.lang.forms.select.size, +"default":"",accessKey:"S",style:"width:175px",validate:function(){var a=CKEDITOR.dialog.validate.integer(c.lang.common.validateNumberFailed);return""===this.getValue()||a.apply(this)},setup:function(a,b){"select"==a&&this.setValue(b.getAttribute("size")||"");CKEDITOR.env.webkit&&this.getInputElement().setStyle("width","86px")},commit:function(a){this.getValue()?a.setAttribute("size",this.getValue()):a.removeAttribute("size")}},{type:"html",html:"\x3cspan\x3e"+CKEDITOR.tools.htmlEncode(c.lang.forms.select.lines)+ +"\x3c/span\x3e"}]},{type:"html",html:"\x3cspan\x3e"+CKEDITOR.tools.htmlEncode(c.lang.forms.select.opAvail)+"\x3c/span\x3e"},{type:"hbox",widths:["115px","115px","100px"],className:"cke_dialog_forms_select_order",children:[{type:"vbox",children:[{id:"txtOptName",type:"text",label:c.lang.forms.select.opText,style:"width:115px",setup:function(a){"clear"==a&&this.setValue("")}},{type:"select",id:"cmbName",label:"",title:"",size:5,style:"width:115px;height:75px",items:[],onChange:function(){var a=this.getDialog(), +b=a.getContentElement("info","cmbValue"),e=a.getContentElement("info","txtOptName"),a=a.getContentElement("info","txtOptValue"),d=g(this);k(b,d);e.setValue(this.getValue());a.setValue(b.getValue())},setup:function(a,b){"clear"==a?m(this):"option"==a&&h(this,b.getText(),b.getText(),this.getDialog().getParentEditor().document)},commit:function(a){var b=this.getDialog(),e=n(this),d=n(b.getContentElement("info","cmbValue")),c=b.getContentElement("info","txtValue").getValue();m(a);for(var f=0;f<e.count();f++){var g= +h(a,e.getItem(f).getValue(),d.getItem(f).getValue(),b.getParentEditor().document);d.getItem(f).getValue()==c&&(g.setAttribute("selected","selected"),g.selected=!0)}}}]},{type:"vbox",children:[{id:"txtOptValue",type:"text",label:c.lang.forms.select.opValue,style:"width:115px",setup:function(a){"clear"==a&&this.setValue("")}},{type:"select",id:"cmbValue",label:"",size:5,style:"width:115px;height:75px",items:[],onChange:function(){var a=this.getDialog(),b=a.getContentElement("info","cmbName"),e=a.getContentElement("info", +"txtOptName"),a=a.getContentElement("info","txtOptValue"),d=g(this);k(b,d);e.setValue(b.getValue());a.setValue(this.getValue())},setup:function(a,b){if("clear"==a)m(this);else if("option"==a){var e=b.getValue();h(this,e,e,this.getDialog().getParentEditor().document);"selected"==b.getAttribute("selected")&&this.getDialog().getContentElement("info","txtValue").setValue(e)}}}]},{type:"vbox",padding:5,children:[{type:"button",id:"btnAdd",label:c.lang.forms.select.btnAdd,title:c.lang.forms.select.btnAdd, +style:"width:100%;",onClick:function(){var a=this.getDialog(),b=a.getContentElement("info","txtOptName"),e=a.getContentElement("info","txtOptValue"),d=a.getContentElement("info","cmbName"),c=a.getContentElement("info","cmbValue");h(d,b.getValue(),b.getValue(),a.getParentEditor().document);h(c,e.getValue(),e.getValue(),a.getParentEditor().document);b.setValue("");e.setValue("")}},{type:"button",id:"btnModify",label:c.lang.forms.select.btnModify,title:c.lang.forms.select.btnModify,style:"width:100%;", +onClick:function(){var a=this.getDialog(),b=a.getContentElement("info","txtOptName"),e=a.getContentElement("info","txtOptValue"),d=a.getContentElement("info","cmbName"),a=a.getContentElement("info","cmbValue"),c=g(d);0<=c&&(q(d,c,b.getValue(),b.getValue()),q(a,c,e.getValue(),e.getValue()))}},{type:"button",id:"btnUp",style:"width:100%;",label:c.lang.forms.select.btnUp,title:c.lang.forms.select.btnUp,onClick:function(){var a=this.getDialog(),b=a.getContentElement("info","cmbName"),c=a.getContentElement("info", +"cmbValue");l(b,-1,a.getParentEditor().document);l(c,-1,a.getParentEditor().document)}},{type:"button",id:"btnDown",style:"width:100%;",label:c.lang.forms.select.btnDown,title:c.lang.forms.select.btnDown,onClick:function(){var a=this.getDialog(),b=a.getContentElement("info","cmbName"),c=a.getContentElement("info","cmbValue");l(b,1,a.getParentEditor().document);l(c,1,a.getParentEditor().document)}}]}]},{type:"hbox",widths:["40%","20%","40%"],children:[{type:"button",id:"btnSetValue",label:c.lang.forms.select.btnSetValue, +title:c.lang.forms.select.btnSetValue,onClick:function(){var a=this.getDialog(),b=a.getContentElement("info","cmbValue");a.getContentElement("info","txtValue").setValue(b.getValue())}},{type:"button",id:"btnDelete",label:c.lang.forms.select.btnDelete,title:c.lang.forms.select.btnDelete,onClick:function(){var a=this.getDialog(),b=a.getContentElement("info","cmbName"),c=a.getContentElement("info","cmbValue"),d=a.getContentElement("info","txtOptName"),a=a.getContentElement("info","txtOptValue");p(b); +p(c);d.setValue("");a.setValue("")}},{type:"vbox",children:[{id:"chkMulti",type:"checkbox",label:c.lang.forms.select.chkMulti,"default":"",accessKey:"M",value:"checked",setup:function(a,b){"select"==a&&this.setValue(b.getAttribute("multiple"))},commit:function(a){this.getValue()?a.setAttribute("multiple",this.getValue()):a.removeAttribute("multiple")}},{id:"required",type:"checkbox",label:c.lang.forms.select.required,"default":"",accessKey:"Q",value:"checked",setup:function(a,b){"select"==a&&CKEDITOR.plugins.forms._setupRequiredAttribute.call(this, +b)},commit:function(a){this.getValue()?a.setAttribute("required","required"):a.removeAttribute("required")}}]}]}]}]}}); \ No newline at end of file diff --git a/src/static/ckeditor/plugins/forms/dialogs/textarea.js b/src/static/ckeditor/plugins/forms/dialogs/textarea.js new file mode 100644 index 00000000..a5408632 --- /dev/null +++ b/src/static/ckeditor/plugins/forms/dialogs/textarea.js @@ -0,0 +1,9 @@ +/* + 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 +*/ +CKEDITOR.dialog.add("textarea",function(b){return{title:b.lang.forms.textarea.title,minWidth:350,minHeight:220,getModel:function(a){return(a=a.getSelection().getSelectedElement())&&"textarea"==a.getName()?a:null},onShow:function(){var a=this.getModel(this.getParentEditor());a&&this.setupContent(a)},onOk:function(){var a=this.getParentEditor(),b=this.getModel(a),c=this.getMode(a)==CKEDITOR.dialog.CREATION_MODE;c&&(b=a.document.createElement("textarea"));this.commitContent(b);c&&a.insertElement(b)}, +contents:[{id:"info",label:b.lang.forms.textarea.title,title:b.lang.forms.textarea.title,elements:[{id:"_cke_saved_name",type:"text",label:b.lang.common.name,"default":"",accessKey:"N",setup:function(a){this.setValue(a.data("cke-saved-name")||a.getAttribute("name")||"")},commit:function(a){this.getValue()?a.data("cke-saved-name",this.getValue()):(a.data("cke-saved-name",!1),a.removeAttribute("name"))}},{type:"hbox",widths:["50%","50%"],children:[{id:"cols",type:"text",label:b.lang.forms.textarea.cols, +"default":"",accessKey:"C",style:"width:50px",validate:CKEDITOR.dialog.validate.integer(b.lang.common.validateNumberFailed),setup:function(a){a=a.hasAttribute("cols")&&a.getAttribute("cols");this.setValue(a||"")},commit:function(a){this.getValue()?a.setAttribute("cols",this.getValue()):a.removeAttribute("cols")}},{id:"rows",type:"text",label:b.lang.forms.textarea.rows,"default":"",accessKey:"R",style:"width:50px",validate:CKEDITOR.dialog.validate.integer(b.lang.common.validateNumberFailed),setup:function(a){a= +a.hasAttribute("rows")&&a.getAttribute("rows");this.setValue(a||"")},commit:function(a){this.getValue()?a.setAttribute("rows",this.getValue()):a.removeAttribute("rows")}}]},{id:"value",type:"textarea",label:b.lang.forms.textfield.value,"default":"",setup:function(a){this.setValue(a.$.defaultValue)},commit:function(a){a.$.value=a.$.defaultValue=this.getValue()}},{id:"required",type:"checkbox",label:b.lang.forms.textfield.required,"default":"",accessKey:"Q",value:"required",setup:CKEDITOR.plugins.forms._setupRequiredAttribute, +commit:function(a){this.getValue()?a.setAttribute("required","required"):a.removeAttribute("required")}}]}]}}); \ No newline at end of file diff --git a/src/static/ckeditor/plugins/forms/dialogs/textfield.js b/src/static/ckeditor/plugins/forms/dialogs/textfield.js new file mode 100644 index 00000000..7b1d3383 --- /dev/null +++ b/src/static/ckeditor/plugins/forms/dialogs/textfield.js @@ -0,0 +1,11 @@ +/* + 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 +*/ +CKEDITOR.dialog.add("textfield",function(b){function e(a){a=a.element;var b=this.getValue();b?a.setAttribute(this.id,b):a.removeAttribute(this.id)}function f(a){a=a.hasAttribute(this.id)&&a.getAttribute(this.id);this.setValue(a||"")}var g={email:1,password:1,search:1,tel:1,text:1,url:1};return{title:b.lang.forms.textfield.title,minWidth:350,minHeight:150,getModel:function(a){a=a.getSelection().getSelectedElement();return!a||"input"!=a.getName()||!g[a.getAttribute("type")]&&a.getAttribute("type")? +null:a},onShow:function(){var a=this.getModel(this.getParentEditor());a&&this.setupContent(a)},onOk:function(){var a=this.getParentEditor(),b=this.getModel(a),c=this.getMode(a)==CKEDITOR.dialog.CREATION_MODE;c&&(b=a.document.createElement("input"),b.setAttribute("type","text"));b={element:b};c&&a.insertElement(b.element);this.commitContent(b);c||a.getSelection().selectElement(b.element)},onLoad:function(){this.foreach(function(a){a.getValue&&(a.setup||(a.setup=f),a.commit||(a.commit=e))})},contents:[{id:"info", +label:b.lang.forms.textfield.title,title:b.lang.forms.textfield.title,elements:[{type:"hbox",widths:["50%","50%"],children:[{id:"_cke_saved_name",type:"text",label:b.lang.forms.textfield.name,"default":"",accessKey:"N",setup:function(a){this.setValue(a.data("cke-saved-name")||a.getAttribute("name")||"")},commit:function(a){a=a.element;this.getValue()?a.data("cke-saved-name",this.getValue()):(a.data("cke-saved-name",!1),a.removeAttribute("name"))}},{id:"value",type:"text",label:b.lang.forms.textfield.value, +"default":"",accessKey:"V",commit:function(a){if(CKEDITOR.env.ie&&!this.getValue()){var d=a.element,c=new CKEDITOR.dom.element("input",b.document);d.copyAttributes(c,{value:1});c.replace(d);a.element=c}else e.call(this,a)}}]},{type:"hbox",widths:["50%","50%"],children:[{id:"size",type:"text",label:b.lang.forms.textfield.charWidth,"default":"",accessKey:"C",style:"width:50px",validate:CKEDITOR.dialog.validate.integer(b.lang.common.validateNumberFailed)},{id:"maxLength",type:"text",label:b.lang.forms.textfield.maxChars, +"default":"",accessKey:"M",style:"width:50px",validate:CKEDITOR.dialog.validate.integer(b.lang.common.validateNumberFailed)}],onLoad:function(){CKEDITOR.env.ie7Compat&&this.getElement().setStyle("zoom","100%")}},{id:"type",type:"select",label:b.lang.forms.textfield.type,"default":"text",accessKey:"M",items:[[b.lang.forms.textfield.typeEmail,"email"],[b.lang.forms.textfield.typePass,"password"],[b.lang.forms.textfield.typeSearch,"search"],[b.lang.forms.textfield.typeTel,"tel"],[b.lang.forms.textfield.typeText, +"text"],[b.lang.forms.textfield.typeUrl,"url"]],setup:function(a){this.setValue(a.getAttribute("type"))},commit:function(a){var d=a.element;if(CKEDITOR.env.ie){var c=d.getAttribute("type"),e=this.getValue();c!=e&&(c=CKEDITOR.dom.element.createFromHtml('\x3cinput type\x3d"'+e+'"\x3e\x3c/input\x3e',b.document),d.copyAttributes(c,{type:1}),c.replace(d),a.element=c)}else d.setAttribute("type",this.getValue())}},{id:"required",type:"checkbox",label:b.lang.forms.textfield.required,"default":"",accessKey:"Q", +value:"required",setup:CKEDITOR.plugins.forms._setupRequiredAttribute,commit:function(a){a=a.element;this.getValue()?a.setAttribute("required","required"):a.removeAttribute("required")}}]}]}}); \ No newline at end of file diff --git a/src/static/ckeditor/plugins/forms/images/hiddenfield.gif b/src/static/ckeditor/plugins/forms/images/hiddenfield.gif new file mode 100644 index 0000000000000000000000000000000000000000..988d9565f2b64eba711d9a6e34583bbf00d1e74c GIT binary patch literal 178 zcmZ?wbhEHb6krfw_{_xs1dNP~OiWD7%*<?TY@D2&+}zxJe0%}|0%y*g`TzevNCgs5 z{K>+|z`)I*_@CP|H!(fcH!(dkIh!{<F*i5S)<Dn1)Wp=3K?kG(WB~(<Q^85k)q5@c z5Bz*3$Dy%g)08KkRr9CsDY&H9X>{x(=LK)a$LnXFVdv?qII?KNcjj|q9T~>QwNi5w R16D6KTDV8!tSS?OH30pxG-Ch& literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/iframe/dialogs/iframe.js b/src/static/ckeditor/plugins/iframe/dialogs/iframe.js new file mode 100644 index 00000000..f29a82e8 --- /dev/null +++ b/src/static/ckeditor/plugins/iframe/dialogs/iframe.js @@ -0,0 +1,11 @@ +/* + 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 +*/ +(function(){function d(c){var e=this instanceof CKEDITOR.ui.dialog.checkbox;c.hasAttribute(this.id)&&(c=c.getAttribute(this.id),e?this.setValue(g[this.id]["true"]==c.toLowerCase()):this.setValue(c))}function f(c){var e=this.getValue(),a=this.att||this.id,d=this instanceof CKEDITOR.ui.dialog.checkbox?g[this.id][e]:e;""===e||"tabindex"===a&&!1===e?c.removeAttribute(a):c.setAttribute(a,d)}var g={scrolling:{"true":"yes","false":"no"},frameborder:{"true":"1","false":"0"},tabindex:{"true":"-1","false":!1}}; +CKEDITOR.dialog.add("iframe",function(c){var e=c.lang.iframe,a=c.lang.common,g=c.plugins.dialogadvtab;return{title:e.title,minWidth:350,minHeight:260,getModel:function(b){return(b=b.getSelection().getSelectedElement())&&"iframe"===b.data("cke-real-element-type")?b:null},onShow:function(){this.fakeImage=this.iframeNode=null;var b=this.getSelectedElement();b&&b.data("cke-real-element-type")&&"iframe"==b.data("cke-real-element-type")&&(this.fakeImage=b,this.iframeNode=b=c.restoreRealElement(b),this.setupContent(b))}, +onOk:function(){var b;b=this.fakeImage?this.iframeNode:new CKEDITOR.dom.element("iframe");var a={},d={};this.commitContent(b,a,d);b=c.createFakeElement(b,"cke_iframe","iframe",!0);b.setAttributes(d);b.setStyles(a);this.fakeImage?(b.replace(this.fakeImage),c.getSelection().selectElement(b)):c.insertElement(b)},contents:[{id:"info",label:a.generalTab,accessKey:"I",elements:[{type:"vbox",padding:0,children:[{id:"src",type:"text",label:a.url,required:!0,validate:CKEDITOR.dialog.validate.notEmpty(e.noUrl), +setup:d,commit:f}]},{type:"hbox",children:[{id:"width",type:"text",requiredContent:"iframe[width]",style:"width:100%",labelLayout:"vertical",label:a.width,validate:CKEDITOR.dialog.validate.htmlLength(a.invalidHtmlLength.replace("%1",a.width)),setup:d,commit:f},{id:"height",type:"text",requiredContent:"iframe[height]",style:"width:100%",labelLayout:"vertical",label:a.height,validate:CKEDITOR.dialog.validate.htmlLength(a.invalidHtmlLength.replace("%1",a.height)),setup:d,commit:f},{id:"align",type:"select", +requiredContent:"iframe[align]","default":"",items:[[a.notSet,""],[a.left,"left"],[a.right,"right"],[a.alignTop,"top"],[a.alignMiddle,"middle"],[a.alignBottom,"bottom"]],style:"width:100%",labelLayout:"vertical",label:a.align,setup:function(a,c){d.apply(this,arguments);if(c){var e=c.getAttribute("align");this.setValue(e&&e.toLowerCase()||"")}},commit:function(a,c,d){f.apply(this,arguments);this.getValue()&&(d.align=this.getValue())}}]},{type:"hbox",widths:["33%","33%","33%"],children:[{id:"scrolling", +type:"checkbox",requiredContent:"iframe[scrolling]",label:e.scrolling,setup:d,commit:f},{id:"frameborder",type:"checkbox",requiredContent:"iframe[frameborder]",label:e.border,setup:d,commit:f},{id:"tabindex",type:"checkbox",requiredContent:"iframe[tabindex]",label:e.tabindex,setup:d,commit:f}]},{type:"hbox",widths:["50%","50%"],children:[{id:"name",type:"text",requiredContent:"iframe[name]",label:a.name,setup:d,commit:f},{id:"title",type:"text",requiredContent:"iframe[title]",label:a.advisoryTitle, +setup:d,commit:f}]},{id:"longdesc",type:"text",requiredContent:"iframe[longdesc]",label:a.longDescr,setup:d,commit:f}]},g&&g.createAdvancedTab(c,{id:1,classes:1,styles:1},"iframe")]}})})(); \ No newline at end of file diff --git a/src/static/ckeditor/plugins/iframe/images/placeholder.png b/src/static/ckeditor/plugins/iframe/images/placeholder.png new file mode 100644 index 0000000000000000000000000000000000000000..4af09565523acc4a8416b138be66ecca52a4782b GIT binary patch literal 265 zcmV+k0rvihP)<h;3K|Lk000e1NJLTq0027x000{V0{{R3FsJIa0000mP)t-s{{R60 z5fT3)BL6cp|3pOpRaO6HX8&nv|95x)h=~80ng6P)|IEz)-QEB0?*IS);XU_p0001# zNkl<ZD9>XkV88<k82JC=0SqHr`a!$_1M_DF2Alt%8SejPSbu;M$l*bfHvIqpv;04i z{|6lUe>3J!<oqm;q8lvzSM-0wA^qRX`p)Rm1`Iqv^YZ>H|K$G7!NmbG+#X$bL;o)Z z2G-x)N-|gt|HAb}?!Vz{?gSsK(*G1M`2U|Un|r|=kl~yoK0@(G<Ig1kmB??zED8`H P00000NkvXXu0mjfEk=Ep literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/iframedialog/plugin.js b/src/static/ckeditor/plugins/iframedialog/plugin.js new file mode 100644 index 00000000..ae2074f5 --- /dev/null +++ b/src/static/ckeditor/plugins/iframedialog/plugin.js @@ -0,0 +1,8 @@ +/* + 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("iframedialog",{requires:"dialog",onLoad:function(){CKEDITOR.dialog.addIframe=function(e,d,a,l,f,n,g){a={type:"iframe",src:a,width:"100%",height:"100%"};a.onContentLoad="function"==typeof n?n:function(){var a=this.getElement().$.contentWindow;if(a.onDialogEvent){var b=this.getDialog(),c=function(b){return a.onDialogEvent(b)};b.on("ok",c);b.on("cancel",c);b.on("resize",c);b.on("hide",function(a){b.removeListener("ok",c);b.removeListener("cancel",c);b.removeListener("resize",c); +a.removeListener()});a.onDialogEvent({name:"load",sender:this,editor:b._.editor})}};var h={title:d,minWidth:l,minHeight:f,contents:[{id:"iframe",label:d,expand:!0,elements:[a],style:"width:"+a.width+";height:"+a.height}]},k;for(k in g)h[k]=g[k];this.add(e,function(){return h})};(function(){var e=function(d,a,l){if(!(3>arguments.length)){var f=this._||(this._={}),e=a.onContentLoad&&CKEDITOR.tools.bind(a.onContentLoad,this),g=CKEDITOR.tools.cssLength(a.width),h=CKEDITOR.tools.cssLength(a.height);f.frameId= +CKEDITOR.tools.getNextId()+"_iframe";d.on("load",function(){CKEDITOR.document.getById(f.frameId).getParent().setStyles({width:g,height:h})});var k={src:"%2",id:f.frameId,frameborder:0,allowtransparency:!0},m=[];"function"==typeof a.onContentLoad&&(k.onload="CKEDITOR.tools.callFunction(%1);");CKEDITOR.ui.dialog.uiElement.call(this,d,a,m,"iframe",{width:g,height:h},k,"");l.push('\x3cdiv style\x3d"width:'+g+";height:"+h+';" id\x3d"'+this.domId+'"\x3e\x3c/div\x3e');m=m.join("");d.on("show",function(){var b= +CKEDITOR.document.getById(f.frameId).getParent(),c=CKEDITOR.tools.addFunction(e),c=m.replace("%1",c).replace("%2",CKEDITOR.tools.htmlEncode(a.src));b.setHtml(c)})}};e.prototype=new CKEDITOR.ui.dialog.uiElement;CKEDITOR.dialog.addUIElement("iframe",{build:function(d,a,l){return new e(d,a,l)}})})()}}); \ No newline at end of file diff --git a/src/static/ckeditor/plugins/image/dialogs/image.js b/src/static/ckeditor/plugins/image/dialogs/image.js index a319e1dd..4e7f6daf 100644 --- a/src/static/ckeditor/plugins/image/dialogs/image.js +++ b/src/static/ckeditor/plugins/image/dialogs/image.js @@ -1,1295 +1,1294 @@ -/** - * @license 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 - */ - -( function() { - var imageDialog = function( editor, dialogType ) { - // Load image preview. - var IMAGE = 1, - LINK = 2, - PREVIEW = 4, - CLEANUP = 8, - regexGetSize = /^\s*(\d+)((px)|\%)?\s*$/i, - regexGetSizeOrEmpty = /(^\s*(\d+)((px)|\%)?\s*$)|^$/i, - pxLengthRegex = /^\d+px$/; - - var onSizeChange = function() { - var value = this.getValue(), - // This = input element. - dialog = this.getDialog(), - aMatch = value.match( regexGetSize ); // Check value - if ( aMatch ) { - if ( aMatch[ 2 ] == '%' ) // % is allowed - > unlock ratio. - switchLockRatio( dialog, false ); // Unlock. - value = aMatch[ 1 ]; - } - - // Only if ratio is locked - if ( dialog.lockRatio ) { - var oImageOriginal = dialog.originalElement; - if ( oImageOriginal.getCustomData( 'isReady' ) == 'true' ) { - if ( this.id == 'txtHeight' ) { - if ( value && value != '0' ) - value = Math.round( oImageOriginal.$.width * ( value / oImageOriginal.$.height ) ); - if ( !isNaN( value ) ) - dialog.setValueOf( 'info', 'txtWidth', value ); - } - // this.id = txtWidth. - else { - if ( value && value != '0' ) - value = Math.round( oImageOriginal.$.height * ( value / oImageOriginal.$.width ) ); - if ( !isNaN( value ) ) - dialog.setValueOf( 'info', 'txtHeight', value ); - } - } - } - updatePreview( dialog ); - }; - - var updatePreview = function( dialog ) { - //Don't load before onShow. - if ( !dialog.originalElement || !dialog.preview ) - return 1; - - // Read attributes and update imagePreview; - dialog.commitContent( PREVIEW, dialog.preview ); - return 0; - }; - - // Custom commit dialog logic, where we're intended to give inline style - // field (txtdlgGenStyle) higher priority to avoid overwriting styles contribute - // by other fields. - function commitContent() { - var args = arguments; - var inlineStyleField = this.getContentElement( 'advanced', 'txtdlgGenStyle' ); - inlineStyleField && inlineStyleField.commit.apply( inlineStyleField, args ); - - this.foreach( function( widget ) { - if ( widget.commit && widget.id != 'txtdlgGenStyle' ) - widget.commit.apply( widget, args ); - } ); - } - - // Avoid recursions. - var incommit; - - // Synchronous field values to other impacted fields is required, e.g. border - // size change should alter inline-style text as well. - function commitInternally( targetFields ) { - if ( incommit ) - return; - - incommit = 1; - - var dialog = this.getDialog(), - element = dialog.imageElement; - if ( element ) { - // Commit this field and broadcast to target fields. - this.commit( IMAGE, element ); - - targetFields = [].concat( targetFields ); - var length = targetFields.length, - field; - for ( var i = 0; i < length; i++ ) { - field = dialog.getContentElement.apply( dialog, targetFields[ i ].split( ':' ) ); - // May cause recursion. - field && field.setup( IMAGE, element ); - } - } - - incommit = 0; - } - - var switchLockRatio = function( dialog, value ) { - if ( !dialog.getContentElement( 'info', 'ratioLock' ) ) - return null; - - var oImageOriginal = dialog.originalElement; - - // Dialog may already closed. (https://dev.ckeditor.com/ticket/5505) - if ( !oImageOriginal ) - return null; - - // Check image ratio and original image ratio, but respecting user's preference. - if ( value == 'check' ) { - if ( !dialog.userlockRatio && oImageOriginal.getCustomData( 'isReady' ) == 'true' ) { - var width = dialog.getValueOf( 'info', 'txtWidth' ), - height = dialog.getValueOf( 'info', 'txtHeight' ), - originalRatio = oImageOriginal.$.width / oImageOriginal.$.height, - thisRatio = width / height; - - dialog.lockRatio = false; // Default: unlock ratio - - if ( !width && !height ) { - dialog.lockRatio = true; - } else { - // Round ratio to two decimal places so ratio locking will be less precise (#2254). - var ratioComparison = Math.round( ( originalRatio / thisRatio ) * 100 ) / 100; - - if ( ratioComparison == 1 ) { - dialog.lockRatio = true; - } - } - } - } else if ( value !== undefined ) { - dialog.lockRatio = value; - } else { - dialog.userlockRatio = 1; - dialog.lockRatio = !dialog.lockRatio; - } - - var ratioButton = CKEDITOR.document.getById( btnLockSizesId ); - if ( dialog.lockRatio ) - ratioButton.removeClass( 'cke_btn_unlocked' ); - else - ratioButton.addClass( 'cke_btn_unlocked' ); - - ratioButton.setAttribute( 'aria-checked', dialog.lockRatio ); - - // Ratio button hc presentation - WHITE SQUARE / BLACK SQUARE - if ( CKEDITOR.env.hc ) { - var icon = ratioButton.getChild( 0 ); - icon.setHtml( dialog.lockRatio ? CKEDITOR.env.ie ? '\u25A0' : '\u25A3' : CKEDITOR.env.ie ? '\u25A1' : '\u25A2' ); - } - - return dialog.lockRatio; - }; - - var resetSize = function( dialog, emptyValues ) { - var oImageOriginal = dialog.originalElement, - ready = oImageOriginal.getCustomData( 'isReady' ) == 'true'; - - if ( ready ) { - var widthField = dialog.getContentElement( 'info', 'txtWidth' ), - heightField = dialog.getContentElement( 'info', 'txtHeight' ), - widthValue, heightValue; - - if ( emptyValues ) { - widthValue = 0; - heightValue = 0; - } else { - widthValue = oImageOriginal.$.width; - heightValue = oImageOriginal.$.height; - } - - widthField && widthField.setValue( widthValue ); - heightField && heightField.setValue( heightValue ); - } - updatePreview( dialog ); - }; - - var setupDimension = function( type, element ) { - if ( type != IMAGE ) - return; - - function checkDimension( size, defaultValue ) { - var aMatch = size.match( regexGetSize ); - if ( aMatch ) { - // % is allowed. - if ( aMatch[ 2 ] == '%' ) { - aMatch[ 1 ] += '%'; - switchLockRatio( dialog, false ); // Unlock ratio - } - return aMatch[ 1 ]; - } - return defaultValue; - } - - var dialog = this.getDialog(), - value = '', - dimension = this.id == 'txtWidth' ? 'width' : 'height', - size = element.getAttribute( dimension ); - - if ( size ) - value = checkDimension( size, value ); - value = checkDimension( element.getStyle( dimension ), value ); - - this.setValue( value ); - }; - - var previewPreloader; - - var onImgLoadEvent = function() { - // Image is ready. - var original = this.originalElement, - loader = CKEDITOR.document.getById( imagePreviewLoaderId ); - - original.setCustomData( 'isReady', 'true' ); - original.removeListener( 'load', onImgLoadEvent ); - original.removeListener( 'error', onImgLoadErrorEvent ); - original.removeListener( 'abort', onImgLoadErrorEvent ); - - // Hide loader. - if ( loader ) - loader.setStyle( 'display', 'none' ); - - // New image -> new dimensions - if ( !this.dontResetSize ) { - resetSize( this, editor.config.image_prefillDimensions === false ); - } - - if ( this.firstLoad ) { - CKEDITOR.tools.setTimeout( function() { - switchLockRatio( this, 'check' ); - }, 0, this ); - } - - this.firstLoad = false; - this.dontResetSize = false; - - // Possible fix for https://dev.ckeditor.com/ticket/12818. - updatePreview( this ); - }; - - var onImgLoadErrorEvent = function() { - // Error. Image is not loaded. - var original = this.originalElement, - loader = CKEDITOR.document.getById( imagePreviewLoaderId ); - - original.removeListener( 'load', onImgLoadEvent ); - original.removeListener( 'error', onImgLoadErrorEvent ); - original.removeListener( 'abort', onImgLoadErrorEvent ); - - // Set Error image. - var noimage = CKEDITOR.getUrl( CKEDITOR.plugins.get( 'image' ).path + 'images/noimage.png' ); - - if ( this.preview ) - this.preview.setAttribute( 'src', noimage ); - - // Hide loader. - if ( loader ) - loader.setStyle( 'display', 'none' ); - - switchLockRatio( this, false ); // Unlock. - }; - - var numbering = function( id ) { - return CKEDITOR.tools.getNextId() + '_' + id; - }, - btnLockSizesId = numbering( 'btnLockSizes' ), - btnResetSizeId = numbering( 'btnResetSize' ), - imagePreviewLoaderId = numbering( 'ImagePreviewLoader' ), - previewLinkId = numbering( 'previewLink' ), - previewImageId = numbering( 'previewImage' ); - - return { - title: editor.lang.image[ dialogType == 'image' ? 'title' : 'titleButton' ], - minWidth: ( CKEDITOR.skinName || editor.config.skin ) == 'moono-lisa' ? 500 : 420, - minHeight: 360, - getModel: function( editor ) { - var element = editor.getSelection().getSelectedElement(), - isImage = element && element.getName() === 'img', - isImageInput = element && element.getName() === 'input' && - element.getAttribute( 'type' ) === 'image'; - - if ( isImage ||isImageInput ) { - return element; - } - - return null; - }, - onShow: function() { - this.imageElement = false; - this.linkElement = false; - - // Default: create a new element. - this.imageEditMode = false; - this.linkEditMode = false; - - this.lockRatio = true; - this.userlockRatio = 0; - this.dontResetSize = false; - this.firstLoad = true; - this.addLink = false; - - var editor = this.getParentEditor(), - sel = editor.getSelection(), - element = sel && sel.getSelectedElement(), - link = element && editor.elementPath( element ).contains( 'a', 1 ), - loader = CKEDITOR.document.getById( imagePreviewLoaderId ); - - // Hide loader. - if ( loader ) - loader.setStyle( 'display', 'none' ); - - // Create the preview before setup the dialog contents. - previewPreloader = new CKEDITOR.dom.element( 'img', editor.document ); - this.preview = CKEDITOR.document.getById( previewImageId ); - - // Copy of the image - this.originalElement = editor.document.createElement( 'img' ); - this.originalElement.setAttribute( 'alt', '' ); - this.originalElement.setCustomData( 'isReady', 'false' ); - - if ( link ) { - this.linkElement = link; - this.linkEditMode = true; - - // If there is an existing link, by default keep it (true). - // It will be removed if certain conditions are met and Link tab is enabled. (https://dev.ckeditor.com/ticket/13351) - this.addLink = true; - - // Look for Image element. - var linkChildren = link.getChildren(); - if ( linkChildren.count() == 1 ) { - var childTag = linkChildren.getItem( 0 ); - - if ( childTag.type == CKEDITOR.NODE_ELEMENT ) { - if ( childTag.is( 'img' ) || childTag.is( 'input' ) ) { - this.imageElement = linkChildren.getItem( 0 ); - if ( this.imageElement.is( 'img' ) ) - this.imageEditMode = 'img'; - else if ( this.imageElement.is( 'input' ) ) - this.imageEditMode = 'input'; - } - } - } - // Fill out all fields. - if ( dialogType == 'image' ) - this.setupContent( LINK, link ); - } - - // Edit given image element instead the one from selection. - if ( this.customImageElement ) { - this.imageEditMode = 'img'; - this.imageElement = this.customImageElement; - delete this.customImageElement; - } - else if ( element && element.getName() == 'img' && !element.data( 'cke-realelement' ) || - element && element.getName() == 'input' && element.getAttribute( 'type' ) == 'image' ) { - this.imageEditMode = element.getName(); - this.imageElement = element; - } - - if ( this.imageEditMode ) { - // Use the original element as a buffer from since we don't want - // temporary changes to be committed, e.g. if the dialog is canceled. - this.cleanImageElement = this.imageElement; - this.imageElement = this.cleanImageElement.clone( true, true ); - - // Fill out all fields. - this.setupContent( IMAGE, this.imageElement ); - } - - // Refresh LockRatio button - switchLockRatio( this, true ); - - // Dont show preview if no URL given. - if ( !CKEDITOR.tools.trim( this.getValueOf( 'info', 'txtUrl' ) ) ) { - this.preview.removeAttribute( 'src' ); - this.preview.setStyle( 'display', 'none' ); - } - }, - onOk: function() { - // Edit existing Image. - if ( this.imageEditMode ) { - var imgTagName = this.imageEditMode; - - // Image dialog and Input element. - if ( dialogType == 'image' && imgTagName == 'input' && confirm( editor.lang.image.button2Img ) ) { // jshint ignore:line - // Replace INPUT-> IMG - imgTagName = 'img'; - this.imageElement = editor.document.createElement( 'img' ); - this.imageElement.setAttribute( 'alt', '' ); - editor.insertElement( this.imageElement ); - } - // ImageButton dialog and Image element. - else if ( dialogType != 'image' && imgTagName == 'img' && confirm( editor.lang.image.img2Button ) ) { // jshint ignore:line - // Replace IMG -> INPUT - imgTagName = 'input'; - this.imageElement = editor.document.createElement( 'input' ); - this.imageElement.setAttributes( { - type: 'image', - alt: '' - } ); - editor.insertElement( this.imageElement ); - } else { - // Restore the original element before all commits. - this.imageElement = this.cleanImageElement; - delete this.cleanImageElement; - } - } - // Create a new image. - else { - // Image dialog -> create IMG element. - if ( dialogType == 'image' ) - this.imageElement = editor.document.createElement( 'img' ); - else { - this.imageElement = editor.document.createElement( 'input' ); - this.imageElement.setAttribute( 'type', 'image' ); - } - this.imageElement.setAttribute( 'alt', '' ); - } - - // Create a new link. - if ( !this.linkEditMode ) - this.linkElement = editor.document.createElement( 'a' ); - - // Set attributes. - this.commitContent( IMAGE, this.imageElement ); - this.commitContent( LINK, this.linkElement ); - - // Remove empty style attribute. - if ( !this.imageElement.getAttribute( 'style' ) ) - this.imageElement.removeAttribute( 'style' ); - - // Insert a new Image. - if ( !this.imageEditMode ) { - if ( this.addLink ) { - if ( !this.linkEditMode ) { - // Insert a new link. - editor.insertElement( this.linkElement ); - this.linkElement.append( this.imageElement, false ); - } else { - // We already have a link in editor. - if ( this.linkElement.equals( editor.getSelection().getSelectedElement() ) ) { - // If the link is selected outside, replace it's content rather than the link itself. ([<a>foo</a>]) - this.linkElement.setHtml( '' ); - this.linkElement.append( this.imageElement, false ); - } else { - // Only inside of the link is selected, so replace it with image. (<a>[foo]</a>, <a>[f]oo</a>) - editor.insertElement( this.imageElement ); - } - } - } else { - editor.insertElement( this.imageElement ); - } - } - // Image already exists. - else { - // Add a new link element. - if ( !this.linkEditMode && this.addLink ) { - editor.insertElement( this.linkElement ); - this.imageElement.appendTo( this.linkElement ); - } - // Remove Link, Image exists. - else if ( this.linkEditMode && !this.addLink ) { - editor.getSelection().selectElement( this.linkElement ); - editor.insertElement( this.imageElement ); - } - } - }, - onLoad: function() { - if ( dialogType != 'image' ) - this.hidePage( 'Link' ); //Hide Link tab. - var doc = this._.element.getDocument(); - - if ( this.getContentElement( 'info', 'ratioLock' ) ) { - this.addFocusable( doc.getById( btnResetSizeId ), 5 ); - this.addFocusable( doc.getById( btnLockSizesId ), 5 ); - } - - this.commitContent = commitContent; - }, - onHide: function() { - if ( this.preview ) - this.commitContent( CLEANUP, this.preview ); - - if ( this.originalElement ) { - this.originalElement.removeListener( 'load', onImgLoadEvent ); - this.originalElement.removeListener( 'error', onImgLoadErrorEvent ); - this.originalElement.removeListener( 'abort', onImgLoadErrorEvent ); - this.originalElement.remove(); - this.originalElement = false; // Dialog is closed. - } - - delete this.imageElement; - }, - contents: [ { - id: 'info', - label: editor.lang.image.infoTab, - accessKey: 'I', - elements: [ { - type: 'vbox', - padding: 0, - children: [ { - type: 'hbox', - widths: [ '280px', '110px' ], - align: 'right', - className: 'cke_dialog_image_url', - children: [ { - id: 'txtUrl', - type: 'text', - label: editor.lang.common.url, - required: true, - onChange: function() { - var dialog = this.getDialog(), - newUrl = this.getValue(); - - // Update original image. - // Prevent from load before onShow. - if ( newUrl.length > 0 ) { - dialog = this.getDialog(); - var original = dialog.originalElement; - - if ( dialog.preview ) { - dialog.preview.removeStyle( 'display' ); - } - - original.setCustomData( 'isReady', 'false' ); - // Show loader. - var loader = CKEDITOR.document.getById( imagePreviewLoaderId ); - if ( loader ) - loader.setStyle( 'display', '' ); - - original.on( 'load', onImgLoadEvent, dialog ); - original.on( 'error', onImgLoadErrorEvent, dialog ); - original.on( 'abort', onImgLoadErrorEvent, dialog ); - original.setAttribute( 'src', newUrl ); - - if ( dialog.preview ) { - // Query the preloader to figure out the url impacted by based href. - previewPreloader.setAttribute( 'src', newUrl ); - dialog.preview.setAttribute( 'src', previewPreloader.$.src ); - updatePreview( dialog ); - } - } - // Dont show preview if no URL given. - else if ( dialog.preview ) { - dialog.preview.removeAttribute( 'src' ); - dialog.preview.setStyle( 'display', 'none' ); - } - }, - setup: function( type, element ) { - if ( type == IMAGE ) { - var url = element.data( 'cke-saved-src' ) || element.getAttribute( 'src' ); - var field = this; - - this.getDialog().dontResetSize = true; - - field.setValue( url ); // And call this.onChange() - // Manually set the initial value.(https://dev.ckeditor.com/ticket/4191) - field.setInitValue(); - } - }, - commit: function( type, element ) { - if ( type == IMAGE && ( this.getValue() || this.isChanged() ) ) { - element.data( 'cke-saved-src', this.getValue() ); - element.setAttribute( 'src', this.getValue() ); - } else if ( type == CLEANUP ) { - element.setAttribute( 'src', '' ); // If removeAttribute doesn't work. - element.removeAttribute( 'src' ); - } - }, - validate: CKEDITOR.dialog.validate.notEmpty( editor.lang.image.urlMissing ) - }, - { - type: 'button', - id: 'browse', - // v-align with the 'txtUrl' field. - // TODO: We need something better than a fixed size here. - style: 'display:inline-block;margin-top:14px;', - align: 'center', - label: editor.lang.common.browseServer, - hidden: true, - filebrowser: 'info:txtUrl' - } ] - } ] - }, - { - id: 'txtAlt', - type: 'text', - label: editor.lang.image.alt, - accessKey: 'T', - 'default': '', - onChange: function() { - updatePreview( this.getDialog() ); - }, - setup: function( type, element ) { - if ( type == IMAGE ) - this.setValue( element.getAttribute( 'alt' ) ); - }, - commit: function( type, element ) { - if ( type == IMAGE ) { - if ( this.getValue() || this.isChanged() ) - element.setAttribute( 'alt', this.getValue() ); - } else if ( type == PREVIEW ) - element.setAttribute( 'alt', this.getValue() ); - else if ( type == CLEANUP ) { - element.removeAttribute( 'alt' ); - } - - } - }, - { - type: 'hbox', - children: [ { - id: 'basic', - type: 'vbox', - children: [ { - type: 'hbox', - requiredContent: 'img{width,height}', - widths: [ '50%', '50%' ], - children: [ { - type: 'vbox', - padding: 1, - children: [ { - type: 'text', - width: '45px', - id: 'txtWidth', - label: editor.lang.common.width, - onKeyUp: onSizeChange, - onChange: function() { - commitInternally.call( this, 'advanced:txtdlgGenStyle' ); - }, - validate: function() { - var aMatch = this.getValue().match( regexGetSizeOrEmpty ), - isValid = !!( aMatch && parseInt( aMatch[ 1 ], 10 ) !== 0 ); - if ( !isValid ) - alert( editor.lang.common.invalidLength.replace( '%1', editor.lang.common.width ).replace( '%2', 'px, %' ) ); // jshint ignore:line - return isValid; - }, - setup: setupDimension, - commit: function( type, element ) { - var value = this.getValue(); - if ( type == IMAGE ) { - if ( value && editor.activeFilter.check( 'img{width,height}' ) ) - element.setStyle( 'width', CKEDITOR.tools.cssLength( value ) ); - else - element.removeStyle( 'width' ); - - element.removeAttribute( 'width' ); - } else if ( type == PREVIEW ) { - var aMatch = value.match( regexGetSize ); - if ( !aMatch ) { - var oImageOriginal = this.getDialog().originalElement; - if ( oImageOriginal.getCustomData( 'isReady' ) == 'true' ) - element.setStyle( 'width', oImageOriginal.$.width + 'px' ); - } else { - element.setStyle( 'width', CKEDITOR.tools.cssLength( value ) ); - } - } else if ( type == CLEANUP ) { - element.removeAttribute( 'width' ); - element.removeStyle( 'width' ); - } - } - }, - { - type: 'text', - id: 'txtHeight', - width: '45px', - label: editor.lang.common.height, - onKeyUp: onSizeChange, - onChange: function() { - commitInternally.call( this, 'advanced:txtdlgGenStyle' ); - }, - validate: function() { - var aMatch = this.getValue().match( regexGetSizeOrEmpty ), - isValid = !!( aMatch && parseInt( aMatch[ 1 ], 10 ) !== 0 ); - if ( !isValid ) - alert( editor.lang.common.invalidLength.replace( '%1', editor.lang.common.height ).replace( '%2', 'px, %' ) ); // jshint ignore:line - return isValid; - }, - setup: setupDimension, - commit: function( type, element ) { - var value = this.getValue(); - if ( type == IMAGE ) { - if ( value && editor.activeFilter.check( 'img{width,height}' ) ) - element.setStyle( 'height', CKEDITOR.tools.cssLength( value ) ); - else - element.removeStyle( 'height' ); - - element.removeAttribute( 'height' ); - } else if ( type == PREVIEW ) { - var aMatch = value.match( regexGetSize ); - if ( !aMatch ) { - var oImageOriginal = this.getDialog().originalElement; - if ( oImageOriginal.getCustomData( 'isReady' ) == 'true' ) - element.setStyle( 'height', oImageOriginal.$.height + 'px' ); - } else { - element.setStyle( 'height', CKEDITOR.tools.cssLength( value ) ); - } - } else if ( type == CLEANUP ) { - element.removeAttribute( 'height' ); - element.removeStyle( 'height' ); - } - } - } ] - }, - { - id: 'ratioLock', - type: 'html', - className: 'cke_dialog_image_ratiolock', - style: 'margin-top:30px;width:40px;height:40px;', - onLoad: function() { - // Activate Reset button - var resetButton = CKEDITOR.document.getById( btnResetSizeId ), - ratioButton = CKEDITOR.document.getById( btnLockSizesId ); - if ( resetButton ) { - resetButton.on( 'click', function( evt ) { - resetSize( this ); - evt.data && evt.data.preventDefault(); - }, this.getDialog() ); - resetButton.on( 'mouseover', function() { - this.addClass( 'cke_btn_over' ); - }, resetButton ); - resetButton.on( 'mouseout', function() { - this.removeClass( 'cke_btn_over' ); - }, resetButton ); - } - // Activate (Un)LockRatio button - if ( ratioButton ) { - ratioButton.on( 'click', function( evt ) { - switchLockRatio( this ); - - var oImageOriginal = this.originalElement, - width = this.getValueOf( 'info', 'txtWidth' ); - - if ( oImageOriginal.getCustomData( 'isReady' ) == 'true' && width ) { - var height = oImageOriginal.$.height / oImageOriginal.$.width * width; - if ( !isNaN( height ) ) { - this.setValueOf( 'info', 'txtHeight', Math.round( height ) ); - updatePreview( this ); - } - } - evt.data && evt.data.preventDefault(); - }, this.getDialog() ); - ratioButton.on( 'mouseover', function() { - this.addClass( 'cke_btn_over' ); - }, ratioButton ); - ratioButton.on( 'mouseout', function() { - this.removeClass( 'cke_btn_over' ); - }, ratioButton ); - } - }, - html: '<div>' + - '<a href="javascript:void(0)" tabindex="-1" title="' + editor.lang.image.lockRatio + - '" class="cke_btn_locked" id="' + btnLockSizesId + '" role="checkbox"><span class="cke_icon"></span><span class="cke_label">' + editor.lang.image.lockRatio + '</span></a>' + - '<a href="javascript:void(0)" tabindex="-1" title="' + editor.lang.image.resetSize + - '" class="cke_btn_reset" id="' + btnResetSizeId + '" role="button"><span class="cke_label">' + editor.lang.image.resetSize + '</span></a>' + - '</div>' - } ] - }, - { - type: 'vbox', - padding: 1, - children: [ { - type: 'text', - id: 'txtBorder', - requiredContent: 'img{border-width}', - width: '60px', - label: editor.lang.image.border, - 'default': '', - onKeyUp: function() { - updatePreview( this.getDialog() ); - }, - onChange: function() { - commitInternally.call( this, 'advanced:txtdlgGenStyle' ); - }, - validate: CKEDITOR.dialog.validate.integer( editor.lang.image.validateBorder ), - setup: function( type, element ) { - if ( type == IMAGE ) { - var value, - borderStyle = element.getStyle( 'border-width' ); - borderStyle = borderStyle && borderStyle.match( /^(\d+px)(?: \1 \1 \1)?$/ ); - value = borderStyle && parseInt( borderStyle[ 1 ], 10 ); - isNaN( parseInt( value, 10 ) ) && ( value = element.getAttribute( 'border' ) ); - this.setValue( value ); - } - }, - commit: function( type, element ) { - var value = parseInt( this.getValue(), 10 ); - if ( type == IMAGE || type == PREVIEW ) { - if ( !isNaN( value ) ) { - element.setStyle( 'border-width', CKEDITOR.tools.cssLength( value ) ); - element.setStyle( 'border-style', 'solid' ); - } else if ( !value && this.isChanged() ) { - element.removeStyle( 'border' ); - } - - if ( type == IMAGE ) - element.removeAttribute( 'border' ); - } else if ( type == CLEANUP ) { - element.removeAttribute( 'border' ); - element.removeStyle( 'border-width' ); - element.removeStyle( 'border-style' ); - element.removeStyle( 'border-color' ); - } - } - }, - { - type: 'text', - id: 'txtHSpace', - requiredContent: 'img{margin-left,margin-right}', - width: '60px', - label: editor.lang.image.hSpace, - 'default': '', - onKeyUp: function() { - updatePreview( this.getDialog() ); - }, - onChange: function() { - commitInternally.call( this, 'advanced:txtdlgGenStyle' ); - }, - validate: CKEDITOR.dialog.validate.integer( editor.lang.image.validateHSpace ), - setup: function( type, element ) { - if ( type == IMAGE ) { - var value, marginLeftPx, marginRightPx, - marginLeftStyle = element.getStyle( 'margin-left' ), - marginRightStyle = element.getStyle( 'margin-right' ); - - marginLeftStyle = marginLeftStyle && marginLeftStyle.match( pxLengthRegex ); - marginRightStyle = marginRightStyle && marginRightStyle.match( pxLengthRegex ); - marginLeftPx = parseInt( marginLeftStyle, 10 ); - marginRightPx = parseInt( marginRightStyle, 10 ); - - value = ( marginLeftPx == marginRightPx ) && marginLeftPx; - isNaN( parseInt( value, 10 ) ) && ( value = element.getAttribute( 'hspace' ) ); - - this.setValue( value ); - } - }, - commit: function( type, element ) { - var value = parseInt( this.getValue(), 10 ); - if ( type == IMAGE || type == PREVIEW ) { - if ( !isNaN( value ) ) { - element.setStyle( 'margin-left', CKEDITOR.tools.cssLength( value ) ); - element.setStyle( 'margin-right', CKEDITOR.tools.cssLength( value ) ); - } else if ( !value && this.isChanged() ) { - element.removeStyle( 'margin-left' ); - element.removeStyle( 'margin-right' ); - } - - if ( type == IMAGE ) - element.removeAttribute( 'hspace' ); - } else if ( type == CLEANUP ) { - element.removeAttribute( 'hspace' ); - element.removeStyle( 'margin-left' ); - element.removeStyle( 'margin-right' ); - } - } - }, - { - type: 'text', - id: 'txtVSpace', - requiredContent: 'img{margin-top,margin-bottom}', - width: '60px', - label: editor.lang.image.vSpace, - 'default': '', - onKeyUp: function() { - updatePreview( this.getDialog() ); - }, - onChange: function() { - commitInternally.call( this, 'advanced:txtdlgGenStyle' ); - }, - validate: CKEDITOR.dialog.validate.integer( editor.lang.image.validateVSpace ), - setup: function( type, element ) { - if ( type == IMAGE ) { - var value, marginTopPx, marginBottomPx, - marginTopStyle = element.getStyle( 'margin-top' ), - marginBottomStyle = element.getStyle( 'margin-bottom' ); - - marginTopStyle = marginTopStyle && marginTopStyle.match( pxLengthRegex ); - marginBottomStyle = marginBottomStyle && marginBottomStyle.match( pxLengthRegex ); - marginTopPx = parseInt( marginTopStyle, 10 ); - marginBottomPx = parseInt( marginBottomStyle, 10 ); - - value = ( marginTopPx == marginBottomPx ) && marginTopPx; - isNaN( parseInt( value, 10 ) ) && ( value = element.getAttribute( 'vspace' ) ); - this.setValue( value ); - } - }, - commit: function( type, element ) { - var value = parseInt( this.getValue(), 10 ); - if ( type == IMAGE || type == PREVIEW ) { - if ( !isNaN( value ) ) { - element.setStyle( 'margin-top', CKEDITOR.tools.cssLength( value ) ); - element.setStyle( 'margin-bottom', CKEDITOR.tools.cssLength( value ) ); - } else if ( !value && this.isChanged() ) { - element.removeStyle( 'margin-top' ); - element.removeStyle( 'margin-bottom' ); - } - - if ( type == IMAGE ) - element.removeAttribute( 'vspace' ); - } else if ( type == CLEANUP ) { - element.removeAttribute( 'vspace' ); - element.removeStyle( 'margin-top' ); - element.removeStyle( 'margin-bottom' ); - } - } - }, - { - id: 'cmbAlign', - requiredContent: 'img{float}', - type: 'select', - widths: [ '35%', '65%' ], - style: 'width:90px', - label: editor.lang.common.align, - 'default': '', - items: [ - [ editor.lang.common.notSet, '' ], - [ editor.lang.common.left, 'left' ], - [ editor.lang.common.right, 'right' ] - // Backward compatible with v2 on setup when specified as attribute value, - // while these values are no more available as select options. - // [ editor.lang.image.alignAbsBottom , 'absBottom'], - // [ editor.lang.image.alignAbsMiddle , 'absMiddle'], - // [ editor.lang.image.alignBaseline , 'baseline'], - // [ editor.lang.image.alignTextTop , 'text-top'], - // [ editor.lang.image.alignBottom , 'bottom'], - // [ editor.lang.image.alignMiddle , 'middle'], - // [ editor.lang.image.alignTop , 'top'] - ], - onChange: function() { - updatePreview( this.getDialog() ); - commitInternally.call( this, 'advanced:txtdlgGenStyle' ); - }, - setup: function( type, element ) { - if ( type == IMAGE ) { - var value = element.getStyle( 'float' ); - switch ( value ) { - // Ignore those unrelated values. - case 'inherit': - case 'none': - value = ''; - } - - !value && ( value = ( element.getAttribute( 'align' ) || '' ).toLowerCase() ); - this.setValue( value ); - } - }, - commit: function( type, element ) { - var value = this.getValue(); - if ( type == IMAGE || type == PREVIEW ) { - if ( value ) - element.setStyle( 'float', value ); - else - element.removeStyle( 'float' ); - - if ( type == IMAGE ) { - value = ( element.getAttribute( 'align' ) || '' ).toLowerCase(); - switch ( value ) { - // we should remove it only if it matches "left" or "right", - // otherwise leave it intact. - case 'left': - case 'right': - element.removeAttribute( 'align' ); - } - } - } else if ( type == CLEANUP ) { - element.removeStyle( 'float' ); - } - } - } ] - } ] - }, - { - type: 'vbox', - height: '250px', - children: [ { - type: 'html', - id: 'htmlPreview', - style: 'width:95%;', - html: '<div>' + CKEDITOR.tools.htmlEncode( editor.lang.common.preview ) + '<br>' + - '<div id="' + imagePreviewLoaderId + '" class="ImagePreviewLoader" style="display:none"><div class="loading"></div></div>' + - '<div class="ImagePreviewBox"><table><tr><td>' + - '<a href="javascript:void(0)" target="_blank" onclick="return false;" id="' + previewLinkId + '">' + - '<img id="' + previewImageId + '" alt="" /></a>' + - // jscs:disable maximumLineLength - ( editor.config.image_previewText || 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit. ' + - 'Maecenas feugiat consequat diam. Maecenas metus. Vivamus diam purus, cursus a, commodo non, facilisis vitae, ' + - 'nulla. Aenean dictum lacinia tortor. Nunc iaculis, nibh non iaculis aliquam, orci felis euismod neque, sed ornare massa mauris sed velit. Nulla pretium mi et risus. Fusce mi pede, tempor id, cursus ac, ullamcorper nec, enim. Sed tortor. Curabitur molestie. Duis velit augue, condimentum at, ultrices a, luctus ut, orci. Donec pellentesque egestas eros. Integer cursus, augue in cursus faucibus, eros pede bibendum sem, in tempus tellus justo quis ligula. Etiam eget tortor. Vestibulum rutrum, est ut placerat elementum, lectus nisl aliquam velit, tempor aliquam eros nunc nonummy metus. In eros metus, gravida a, gravida sed, lobortis id, turpis. Ut ultrices, ipsum at venenatis fringilla, sem nulla lacinia tellus, eget aliquet turpis mauris non enim. Nam turpis. Suspendisse lacinia. Curabitur ac tortor ut ipsum egestas elementum. Nunc imperdiet gravida mauris.' ) + - // jscs:enable maximumLineLength - '</td></tr></table></div></div>' - } ] - } ] - } ] - }, - { - id: 'Link', - requiredContent: 'a[href]', - label: editor.lang.image.linkTab, - padding: 0, - elements: [ { - id: 'txtUrl', - type: 'text', - label: editor.lang.common.url, - style: 'width: 100%', - 'default': '', - setup: function( type, element ) { - if ( type == LINK ) { - var href = element.data( 'cke-saved-href' ); - if ( !href ) - href = element.getAttribute( 'href' ); - this.setValue( href ); - } - }, - commit: function( type, element ) { - if ( type == LINK ) { - if ( this.getValue() || this.isChanged() ) { - var url = this.getValue(); - element.data( 'cke-saved-href', url ); - element.setAttribute( 'href', url ); - - if ( this.getValue() || !editor.config.image_removeLinkByEmptyURL ) - this.getDialog().addLink = true; - else - this.getDialog().addLink = false; - } - } - } - }, - { - type: 'button', - id: 'browse', - className: 'cke_dialog_image_browse', - filebrowser: { - action: 'Browse', - target: 'Link:txtUrl', - url: editor.config.filebrowserImageBrowseLinkUrl - }, - style: 'float:right', - hidden: true, - label: editor.lang.common.browseServer - }, - { - id: 'cmbTarget', - type: 'select', - requiredContent: 'a[target]', - label: editor.lang.common.target, - 'default': '', - items: [ - [ editor.lang.common.notSet, '' ], - [ editor.lang.common.targetNew, '_blank' ], - [ editor.lang.common.targetTop, '_top' ], - [ editor.lang.common.targetSelf, '_self' ], - [ editor.lang.common.targetParent, '_parent' ] - ], - setup: function( type, element ) { - if ( type == LINK ) - this.setValue( element.getAttribute( 'target' ) || '' ); - }, - commit: function( type, element ) { - if ( type == LINK ) { - if ( this.getValue() || this.isChanged() ) - element.setAttribute( 'target', this.getValue() ); - } - } - } ] - }, - { - id: 'Upload', - hidden: true, - filebrowser: 'uploadButton', - label: editor.lang.image.upload, - elements: [ - { - type: 'file', - id: 'upload', - label: editor.lang.image.btnUpload, - style: 'height:40px', - size: 38 - }, - { - type: 'fileButton', - id: 'uploadButton', - filebrowser: 'info:txtUrl', - label: editor.lang.image.btnUpload, - 'for': [ 'Upload', 'upload' ] - }, - { - type: 'button', - id: 'selectfile', - label: '选择服务器文件', - style: editor.config.filebrowserImageBrowseDisabled === true? 'display:none' : '', - size: 38, - onClick: function () { - var w = 800; - var h = 600; - var dualScreenLeft = window.screenLeft !== undefined ? window.screenLeft : window.screenX; - var dualScreenTop = window.screenTop !== undefined ? window.screenTop : window.screenY; - - var width = window.innerWidth ? window.innerWidth : document.documentElement.clientWidth ? document.documentElement.clientWidth : screen.width; - var height = window.innerHeight ? window.innerHeight : document.documentElement.clientHeight ? document.documentElement.clientHeight : screen.height; - - var systemZoom = width / window.screen.availWidth; - var posLeft = (width - w) / 2 / systemZoom + dualScreenLeft; - var posTop = (height - h) / 2 / systemZoom + dualScreenTop; - window.open("./dialog/select_images.php?noeditor=yes&iseditor=1&f="+editor.name, "popUpImagesWin", "scrollbars=yes,resizable=yes,statebar=no,width=800,height=600,left=" + posLeft + ", top=" + posTop); - CKEDITOR.dialog.getCurrent().hide(); - } - }, - ] - }, - { - id: 'advanced', - label: editor.lang.common.advancedTab, - elements: [ { - type: 'hbox', - widths: [ '50%', '25%', '25%' ], - children: [ { - type: 'text', - id: 'linkId', - requiredContent: 'img[id]', - label: editor.lang.common.id, - setup: function( type, element ) { - if ( type == IMAGE ) - this.setValue( element.getAttribute( 'id' ) ); - }, - commit: function( type, element ) { - if ( type == IMAGE ) { - if ( this.getValue() || this.isChanged() ) - element.setAttribute( 'id', this.getValue() ); - } - } - }, - { - id: 'cmbLangDir', - type: 'select', - requiredContent: 'img[dir]', - style: 'width : 100px;', - label: editor.lang.common.langDir, - 'default': '', - items: [ - [ editor.lang.common.notSet, '' ], - [ editor.lang.common.langDirLtr, 'ltr' ], - [ editor.lang.common.langDirRtl, 'rtl' ] - ], - setup: function( type, element ) { - if ( type == IMAGE ) - this.setValue( element.getAttribute( 'dir' ) ); - }, - commit: function( type, element ) { - if ( type == IMAGE ) { - if ( this.getValue() || this.isChanged() ) - element.setAttribute( 'dir', this.getValue() ); - } - } - }, - { - type: 'text', - id: 'txtLangCode', - requiredContent: 'img[lang]', - label: editor.lang.common.langCode, - 'default': '', - setup: function( type, element ) { - if ( type == IMAGE ) - this.setValue( element.getAttribute( 'lang' ) ); - }, - commit: function( type, element ) { - if ( type == IMAGE ) { - if ( this.getValue() || this.isChanged() ) - element.setAttribute( 'lang', this.getValue() ); - } - } - } ] - }, - { - type: 'text', - id: 'txtGenLongDescr', - requiredContent: 'img[longdesc]', - label: editor.lang.common.longDescr, - setup: function( type, element ) { - if ( type == IMAGE ) - this.setValue( element.getAttribute( 'longDesc' ) ); - }, - commit: function( type, element ) { - if ( type == IMAGE ) { - if ( this.getValue() || this.isChanged() ) - element.setAttribute( 'longDesc', this.getValue() ); - } - } - }, - { - type: 'hbox', - widths: [ '50%', '50%' ], - children: [ { - type: 'text', - id: 'txtGenClass', - requiredContent: 'img(cke-xyz)', // Random text like 'xyz' will check if all are allowed. - label: editor.lang.common.cssClass, - 'default': '', - setup: function( type, element ) { - if ( type == IMAGE ) - this.setValue( element.getAttribute( 'class' ) ); - }, - commit: function( type, element ) { - if ( type == IMAGE ) { - if ( this.getValue() || this.isChanged() ) - element.setAttribute( 'class', this.getValue() ); - } - } - }, - { - type: 'text', - id: 'txtGenTitle', - requiredContent: 'img[title]', - label: editor.lang.common.advisoryTitle, - 'default': '', - onChange: function() { - updatePreview( this.getDialog() ); - }, - setup: function( type, element ) { - if ( type == IMAGE ) - this.setValue( element.getAttribute( 'title' ) ); - }, - commit: function( type, element ) { - if ( type == IMAGE ) { - if ( this.getValue() || this.isChanged() ) - element.setAttribute( 'title', this.getValue() ); - } else if ( type == PREVIEW ) - element.setAttribute( 'title', this.getValue() ); - else if ( type == CLEANUP ) { - element.removeAttribute( 'title' ); - } - } - } ] - }, - { - type: 'text', - id: 'txtdlgGenStyle', - requiredContent: 'img{cke-xyz}', // Random text like 'xyz' will check if all are allowed. - label: editor.lang.common.cssStyle, - validate: CKEDITOR.dialog.validate.inlineStyle( editor.lang.common.invalidInlineStyle ), - 'default': '', - setup: function( type, element ) { - if ( type == IMAGE ) { - var genStyle = element.getAttribute( 'style' ); - if ( !genStyle && element.$.style.cssText ) - genStyle = element.$.style.cssText; - this.setValue( genStyle ); - - var height = element.$.style.height, - width = element.$.style.width, - aMatchH = ( height ? height : '' ).match( regexGetSize ), - aMatchW = ( width ? width : '' ).match( regexGetSize ); - - this.attributesInStyle = { - height: !!aMatchH, - width: !!aMatchW - }; - } - }, - onChange: function() { - commitInternally.call( - this, [ - 'info:cmbFloat', - 'info:cmbAlign', - 'info:txtVSpace', - 'info:txtHSpace', - 'info:txtBorder', - 'info:txtWidth', - 'info:txtHeight' - ] - ); - updatePreview( this ); - }, - commit: function( type, element ) { - if ( type == IMAGE && ( this.getValue() || this.isChanged() ) ) - element.setAttribute( 'style', this.getValue() ); - - } - } ] - } ] - }; - }; - - CKEDITOR.dialog.add( 'image', function( editor ) { - return imageDialog( editor, 'image' ); - } ); - - CKEDITOR.dialog.add( 'imagebutton', function( editor ) { - return imageDialog( editor, 'imagebutton' ); - } ); +/** + * @license 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 + */ + +( function() { + var imageDialog = function( editor, dialogType ) { + // Load image preview. + var IMAGE = 1, + LINK = 2, + PREVIEW = 4, + CLEANUP = 8, + regexGetSize = /^\s*(\d+)((px)|\%)?\s*$/i, + regexGetSizeOrEmpty = /(^\s*(\d+)((px)|\%)?\s*$)|^$/i, + pxLengthRegex = /^\d+px$/; + + var onSizeChange = function() { + var value = this.getValue(), + // This = input element. + dialog = this.getDialog(), + aMatch = value.match( regexGetSize ); // Check value + if ( aMatch ) { + if ( aMatch[ 2 ] == '%' ) // % is allowed - > unlock ratio. + switchLockRatio( dialog, false ); // Unlock. + value = aMatch[ 1 ]; + } + + // Only if ratio is locked + if ( dialog.lockRatio ) { + var oImageOriginal = dialog.originalElement; + if ( oImageOriginal.getCustomData( 'isReady' ) == 'true' ) { + if ( this.id == 'txtHeight' ) { + if ( value && value != '0' ) + value = Math.round( oImageOriginal.$.width * ( value / oImageOriginal.$.height ) ); + if ( !isNaN( value ) ) + dialog.setValueOf( 'info', 'txtWidth', value ); + } + // this.id = txtWidth. + else { + if ( value && value != '0' ) + value = Math.round( oImageOriginal.$.height * ( value / oImageOriginal.$.width ) ); + if ( !isNaN( value ) ) + dialog.setValueOf( 'info', 'txtHeight', value ); + } + } + } + updatePreview( dialog ); + }; + + var updatePreview = function( dialog ) { + //Don't load before onShow. + if ( !dialog.originalElement || !dialog.preview ) + return 1; + + // Read attributes and update imagePreview; + dialog.commitContent( PREVIEW, dialog.preview ); + return 0; + }; + + // Custom commit dialog logic, where we're intended to give inline style + // field (txtdlgGenStyle) higher priority to avoid overwriting styles contribute + // by other fields. + function commitContent() { + var args = arguments; + var inlineStyleField = this.getContentElement( 'advanced', 'txtdlgGenStyle' ); + inlineStyleField && inlineStyleField.commit.apply( inlineStyleField, args ); + + this.foreach( function( widget ) { + if ( widget.commit && widget.id != 'txtdlgGenStyle' ) + widget.commit.apply( widget, args ); + } ); + } + + // Avoid recursions. + var incommit; + + // Synchronous field values to other impacted fields is required, e.g. border + // size change should alter inline-style text as well. + function commitInternally( targetFields ) { + if ( incommit ) + return; + + incommit = 1; + + var dialog = this.getDialog(), + element = dialog.imageElement; + if ( element ) { + // Commit this field and broadcast to target fields. + this.commit( IMAGE, element ); + + targetFields = [].concat( targetFields ); + var length = targetFields.length, + field; + for ( var i = 0; i < length; i++ ) { + field = dialog.getContentElement.apply( dialog, targetFields[ i ].split( ':' ) ); + // May cause recursion. + field && field.setup( IMAGE, element ); + } + } + + incommit = 0; + } + + var switchLockRatio = function( dialog, value ) { + if ( !dialog.getContentElement( 'info', 'ratioLock' ) ) + return null; + + var oImageOriginal = dialog.originalElement; + + // Dialog may already closed. (https://dev.ckeditor.com/ticket/5505) + if ( !oImageOriginal ) + return null; + + // Check image ratio and original image ratio, but respecting user's preference. + if ( value == 'check' ) { + if ( !dialog.userlockRatio && oImageOriginal.getCustomData( 'isReady' ) == 'true' ) { + var width = dialog.getValueOf( 'info', 'txtWidth' ), + height = dialog.getValueOf( 'info', 'txtHeight' ), + originalRatio = oImageOriginal.$.width / oImageOriginal.$.height, + thisRatio = width / height; + + dialog.lockRatio = false; // Default: unlock ratio + + if ( !width && !height ) { + dialog.lockRatio = true; + } else { + // Round ratio to two decimal places so ratio locking will be less precise (#2254). + var ratioComparison = Math.round( ( originalRatio / thisRatio ) * 100 ) / 100; + + if ( ratioComparison == 1 ) { + dialog.lockRatio = true; + } + } + } + } else if ( value !== undefined ) { + dialog.lockRatio = value; + } else { + dialog.userlockRatio = 1; + dialog.lockRatio = !dialog.lockRatio; + } + + var ratioButton = CKEDITOR.document.getById( btnLockSizesId ); + if ( dialog.lockRatio ) + ratioButton.removeClass( 'cke_btn_unlocked' ); + else + ratioButton.addClass( 'cke_btn_unlocked' ); + + ratioButton.setAttribute( 'aria-checked', dialog.lockRatio ); + + // Ratio button hc presentation - WHITE SQUARE / BLACK SQUARE + if ( CKEDITOR.env.hc ) { + var icon = ratioButton.getChild( 0 ); + icon.setHtml( dialog.lockRatio ? CKEDITOR.env.ie ? '\u25A0' : '\u25A3' : CKEDITOR.env.ie ? '\u25A1' : '\u25A2' ); + } + + return dialog.lockRatio; + }; + + var resetSize = function( dialog, emptyValues ) { + var oImageOriginal = dialog.originalElement, + ready = oImageOriginal.getCustomData( 'isReady' ) == 'true'; + + if ( ready ) { + var widthField = dialog.getContentElement( 'info', 'txtWidth' ), + heightField = dialog.getContentElement( 'info', 'txtHeight' ), + widthValue, heightValue; + + if ( emptyValues ) { + widthValue = 0; + heightValue = 0; + } else { + widthValue = oImageOriginal.$.width; + heightValue = oImageOriginal.$.height; + } + + widthField && widthField.setValue( widthValue ); + heightField && heightField.setValue( heightValue ); + } + updatePreview( dialog ); + }; + + var setupDimension = function( type, element ) { + if ( type != IMAGE ) + return; + + function checkDimension( size, defaultValue ) { + var aMatch = size.match( regexGetSize ); + if ( aMatch ) { + // % is allowed. + if ( aMatch[ 2 ] == '%' ) { + aMatch[ 1 ] += '%'; + switchLockRatio( dialog, false ); // Unlock ratio + } + return aMatch[ 1 ]; + } + return defaultValue; + } + + var dialog = this.getDialog(), + value = '', + dimension = this.id == 'txtWidth' ? 'width' : 'height', + size = element.getAttribute( dimension ); + + if ( size ) + value = checkDimension( size, value ); + value = checkDimension( element.getStyle( dimension ), value ); + + this.setValue( value ); + }; + + var previewPreloader; + + var onImgLoadEvent = function() { + // Image is ready. + var original = this.originalElement, + loader = CKEDITOR.document.getById( imagePreviewLoaderId ); + + original.setCustomData( 'isReady', 'true' ); + original.removeListener( 'load', onImgLoadEvent ); + original.removeListener( 'error', onImgLoadErrorEvent ); + original.removeListener( 'abort', onImgLoadErrorEvent ); + + // Hide loader. + if ( loader ) + loader.setStyle( 'display', 'none' ); + + // New image -> new dimensions + if ( !this.dontResetSize ) { + resetSize( this, editor.config.image_prefillDimensions === false ); + } + + if ( this.firstLoad ) { + CKEDITOR.tools.setTimeout( function() { + switchLockRatio( this, 'check' ); + }, 0, this ); + } + + this.firstLoad = false; + this.dontResetSize = false; + + // Possible fix for https://dev.ckeditor.com/ticket/12818. + updatePreview( this ); + }; + + var onImgLoadErrorEvent = function() { + // Error. Image is not loaded. + var original = this.originalElement, + loader = CKEDITOR.document.getById( imagePreviewLoaderId ); + + original.removeListener( 'load', onImgLoadEvent ); + original.removeListener( 'error', onImgLoadErrorEvent ); + original.removeListener( 'abort', onImgLoadErrorEvent ); + + // Set Error image. + var noimage = CKEDITOR.getUrl( CKEDITOR.plugins.get( 'image' ).path + 'images/noimage.png' ); + + if ( this.preview ) + this.preview.setAttribute( 'src', noimage ); + + // Hide loader. + if ( loader ) + loader.setStyle( 'display', 'none' ); + + switchLockRatio( this, false ); // Unlock. + }; + + var numbering = function( id ) { + return CKEDITOR.tools.getNextId() + '_' + id; + }, + btnLockSizesId = numbering( 'btnLockSizes' ), + btnResetSizeId = numbering( 'btnResetSize' ), + imagePreviewLoaderId = numbering( 'ImagePreviewLoader' ), + previewLinkId = numbering( 'previewLink' ), + previewImageId = numbering( 'previewImage' ); + + return { + title: editor.lang.image[ dialogType == 'image' ? 'title' : 'titleButton' ], + minWidth: ( CKEDITOR.skinName || editor.config.skin ) == 'moono-lisa' ? 500 : 420, + minHeight: 360, + getModel: function( editor ) { + var element = editor.getSelection().getSelectedElement(), + isImage = element && element.getName() === 'img', + isImageInput = element && element.getName() === 'input' && + element.getAttribute( 'type' ) === 'image'; + + if ( isImage ||isImageInput ) { + return element; + } + + return null; + }, + onShow: function() { + this.imageElement = false; + this.linkElement = false; + + // Default: create a new element. + this.imageEditMode = false; + this.linkEditMode = false; + + this.lockRatio = true; + this.userlockRatio = 0; + this.dontResetSize = false; + this.firstLoad = true; + this.addLink = false; + + var editor = this.getParentEditor(), + sel = editor.getSelection(), + element = sel && sel.getSelectedElement(), + link = element && editor.elementPath( element ).contains( 'a', 1 ), + loader = CKEDITOR.document.getById( imagePreviewLoaderId ); + + // Hide loader. + if ( loader ) + loader.setStyle( 'display', 'none' ); + + // Create the preview before setup the dialog contents. + previewPreloader = new CKEDITOR.dom.element( 'img', editor.document ); + this.preview = CKEDITOR.document.getById( previewImageId ); + + // Copy of the image + this.originalElement = editor.document.createElement( 'img' ); + this.originalElement.setAttribute( 'alt', '' ); + this.originalElement.setCustomData( 'isReady', 'false' ); + + if ( link ) { + this.linkElement = link; + this.linkEditMode = true; + + // If there is an existing link, by default keep it (true). + // It will be removed if certain conditions are met and Link tab is enabled. (https://dev.ckeditor.com/ticket/13351) + this.addLink = true; + + // Look for Image element. + var linkChildren = link.getChildren(); + if ( linkChildren.count() == 1 ) { + var childTag = linkChildren.getItem( 0 ); + + if ( childTag.type == CKEDITOR.NODE_ELEMENT ) { + if ( childTag.is( 'img' ) || childTag.is( 'input' ) ) { + this.imageElement = linkChildren.getItem( 0 ); + if ( this.imageElement.is( 'img' ) ) + this.imageEditMode = 'img'; + else if ( this.imageElement.is( 'input' ) ) + this.imageEditMode = 'input'; + } + } + } + // Fill out all fields. + if ( dialogType == 'image' ) + this.setupContent( LINK, link ); + } + + // Edit given image element instead the one from selection. + if ( this.customImageElement ) { + this.imageEditMode = 'img'; + this.imageElement = this.customImageElement; + delete this.customImageElement; + } + else if ( element && element.getName() == 'img' && !element.data( 'cke-realelement' ) || + element && element.getName() == 'input' && element.getAttribute( 'type' ) == 'image' ) { + this.imageEditMode = element.getName(); + this.imageElement = element; + } + + if ( this.imageEditMode ) { + // Use the original element as a buffer from since we don't want + // temporary changes to be committed, e.g. if the dialog is canceled. + this.cleanImageElement = this.imageElement; + this.imageElement = this.cleanImageElement.clone( true, true ); + + // Fill out all fields. + this.setupContent( IMAGE, this.imageElement ); + } + + // Refresh LockRatio button + switchLockRatio( this, true ); + + // Dont show preview if no URL given. + if ( !CKEDITOR.tools.trim( this.getValueOf( 'info', 'txtUrl' ) ) ) { + this.preview.removeAttribute( 'src' ); + this.preview.setStyle( 'display', 'none' ); + } + }, + onOk: function() { + // Edit existing Image. + if ( this.imageEditMode ) { + var imgTagName = this.imageEditMode; + + // Image dialog and Input element. + if ( dialogType == 'image' && imgTagName == 'input' && confirm( editor.lang.image.button2Img ) ) { // jshint ignore:line + // Replace INPUT-> IMG + imgTagName = 'img'; + this.imageElement = editor.document.createElement( 'img' ); + this.imageElement.setAttribute( 'alt', '' ); + editor.insertElement( this.imageElement ); + } + // ImageButton dialog and Image element. + else if ( dialogType != 'image' && imgTagName == 'img' && confirm( editor.lang.image.img2Button ) ) { // jshint ignore:line + // Replace IMG -> INPUT + imgTagName = 'input'; + this.imageElement = editor.document.createElement( 'input' ); + this.imageElement.setAttributes( { + type: 'image', + alt: '' + } ); + editor.insertElement( this.imageElement ); + } else { + // Restore the original element before all commits. + this.imageElement = this.cleanImageElement; + delete this.cleanImageElement; + } + } + // Create a new image. + else { + // Image dialog -> create IMG element. + if ( dialogType == 'image' ) + this.imageElement = editor.document.createElement( 'img' ); + else { + this.imageElement = editor.document.createElement( 'input' ); + this.imageElement.setAttribute( 'type', 'image' ); + } + this.imageElement.setAttribute( 'alt', '' ); + } + + // Create a new link. + if ( !this.linkEditMode ) + this.linkElement = editor.document.createElement( 'a' ); + + // Set attributes. + this.commitContent( IMAGE, this.imageElement ); + this.commitContent( LINK, this.linkElement ); + + // Remove empty style attribute. + if ( !this.imageElement.getAttribute( 'style' ) ) + this.imageElement.removeAttribute( 'style' ); + + // Insert a new Image. + if ( !this.imageEditMode ) { + if ( this.addLink ) { + if ( !this.linkEditMode ) { + // Insert a new link. + editor.insertElement( this.linkElement ); + this.linkElement.append( this.imageElement, false ); + } else { + // We already have a link in editor. + if ( this.linkElement.equals( editor.getSelection().getSelectedElement() ) ) { + // If the link is selected outside, replace it's content rather than the link itself. ([<a>foo</a>]) + this.linkElement.setHtml( '' ); + this.linkElement.append( this.imageElement, false ); + } else { + // Only inside of the link is selected, so replace it with image. (<a>[foo]</a>, <a>[f]oo</a>) + editor.insertElement( this.imageElement ); + } + } + } else { + editor.insertElement( this.imageElement ); + } + } + // Image already exists. + else { + // Add a new link element. + if ( !this.linkEditMode && this.addLink ) { + editor.insertElement( this.linkElement ); + this.imageElement.appendTo( this.linkElement ); + } + // Remove Link, Image exists. + else if ( this.linkEditMode && !this.addLink ) { + editor.getSelection().selectElement( this.linkElement ); + editor.insertElement( this.imageElement ); + } + } + }, + onLoad: function() { + if ( dialogType != 'image' ) + this.hidePage( 'Link' ); //Hide Link tab. + var doc = this._.element.getDocument(); + + if ( this.getContentElement( 'info', 'ratioLock' ) ) { + this.addFocusable( doc.getById( btnResetSizeId ), 5 ); + this.addFocusable( doc.getById( btnLockSizesId ), 5 ); + } + + this.commitContent = commitContent; + }, + onHide: function() { + if ( this.preview ) + this.commitContent( CLEANUP, this.preview ); + + if ( this.originalElement ) { + this.originalElement.removeListener( 'load', onImgLoadEvent ); + this.originalElement.removeListener( 'error', onImgLoadErrorEvent ); + this.originalElement.removeListener( 'abort', onImgLoadErrorEvent ); + this.originalElement.remove(); + this.originalElement = false; // Dialog is closed. + } + + delete this.imageElement; + }, + contents: [ { + id: 'info', + label: editor.lang.image.infoTab, + accessKey: 'I', + elements: [ { + type: 'vbox', + padding: 0, + children: [ { + type: 'hbox', + widths: [ '280px', '110px' ], + align: 'right', + className: 'cke_dialog_image_url', + children: [ { + id: 'txtUrl', + type: 'text', + label: editor.lang.common.url, + required: true, + onChange: function() { + var dialog = this.getDialog(), + newUrl = this.getValue(); + + // Update original image. + // Prevent from load before onShow. + if ( newUrl.length > 0 ) { + dialog = this.getDialog(); + var original = dialog.originalElement; + + if ( dialog.preview ) { + dialog.preview.removeStyle( 'display' ); + } + + original.setCustomData( 'isReady', 'false' ); + // Show loader. + var loader = CKEDITOR.document.getById( imagePreviewLoaderId ); + if ( loader ) + loader.setStyle( 'display', '' ); + + original.on( 'load', onImgLoadEvent, dialog ); + original.on( 'error', onImgLoadErrorEvent, dialog ); + original.on( 'abort', onImgLoadErrorEvent, dialog ); + original.setAttribute( 'src', newUrl ); + + if ( dialog.preview ) { + // Query the preloader to figure out the url impacted by based href. + previewPreloader.setAttribute( 'src', newUrl ); + dialog.preview.setAttribute( 'src', previewPreloader.$.src ); + updatePreview( dialog ); + } + } + // Dont show preview if no URL given. + else if ( dialog.preview ) { + dialog.preview.removeAttribute( 'src' ); + dialog.preview.setStyle( 'display', 'none' ); + } + }, + setup: function( type, element ) { + if ( type == IMAGE ) { + var url = element.data( 'cke-saved-src' ) || element.getAttribute( 'src' ); + var field = this; + + this.getDialog().dontResetSize = true; + + field.setValue( url ); // And call this.onChange() + // Manually set the initial value.(https://dev.ckeditor.com/ticket/4191) + field.setInitValue(); + } + }, + commit: function( type, element ) { + if ( type == IMAGE && ( this.getValue() || this.isChanged() ) ) { + element.data( 'cke-saved-src', this.getValue() ); + element.setAttribute( 'src', this.getValue() ); + } else if ( type == CLEANUP ) { + element.setAttribute( 'src', '' ); // If removeAttribute doesn't work. + element.removeAttribute( 'src' ); + } + }, + validate: CKEDITOR.dialog.validate.notEmpty( editor.lang.image.urlMissing ) + }, + { + type: 'button', + id: 'browse', + // v-align with the 'txtUrl' field. + // TODO: We need something better than a fixed size here. + style: 'display:inline-block;margin-top:14px;', + align: 'center', + label: editor.lang.common.browseServer, + hidden: true, + filebrowser: 'info:txtUrl' + } ] + } ] + }, + { + id: 'txtAlt', + type: 'text', + label: editor.lang.image.alt, + accessKey: 'T', + 'default': '', + onChange: function() { + updatePreview( this.getDialog() ); + }, + setup: function( type, element ) { + if ( type == IMAGE ) + this.setValue( element.getAttribute( 'alt' ) ); + }, + commit: function( type, element ) { + if ( type == IMAGE ) { + if ( this.getValue() || this.isChanged() ) + element.setAttribute( 'alt', this.getValue() ); + } else if ( type == PREVIEW ) + element.setAttribute( 'alt', this.getValue() ); + else if ( type == CLEANUP ) { + element.removeAttribute( 'alt' ); + } + + } + }, + { + type: 'hbox', + children: [ { + id: 'basic', + type: 'vbox', + children: [ { + type: 'hbox', + requiredContent: 'img{width,height}', + widths: [ '50%', '50%' ], + children: [ { + type: 'vbox', + padding: 1, + children: [ { + type: 'text', + width: '45px', + id: 'txtWidth', + label: editor.lang.common.width, + onKeyUp: onSizeChange, + onChange: function() { + commitInternally.call( this, 'advanced:txtdlgGenStyle' ); + }, + validate: function() { + var aMatch = this.getValue().match( regexGetSizeOrEmpty ), + isValid = !!( aMatch && parseInt( aMatch[ 1 ], 10 ) !== 0 ); + if ( !isValid ) + alert( editor.lang.common.invalidLength.replace( '%1', editor.lang.common.width ).replace( '%2', 'px, %' ) ); // jshint ignore:line + return isValid; + }, + setup: setupDimension, + commit: function( type, element ) { + var value = this.getValue(); + if ( type == IMAGE ) { + if ( value && editor.activeFilter.check( 'img{width,height}' ) ) + element.setStyle( 'width', CKEDITOR.tools.cssLength( value ) ); + else + element.removeStyle( 'width' ); + + element.removeAttribute( 'width' ); + } else if ( type == PREVIEW ) { + var aMatch = value.match( regexGetSize ); + if ( !aMatch ) { + var oImageOriginal = this.getDialog().originalElement; + if ( oImageOriginal.getCustomData( 'isReady' ) == 'true' ) + element.setStyle( 'width', oImageOriginal.$.width + 'px' ); + } else { + element.setStyle( 'width', CKEDITOR.tools.cssLength( value ) ); + } + } else if ( type == CLEANUP ) { + element.removeAttribute( 'width' ); + element.removeStyle( 'width' ); + } + } + }, + { + type: 'text', + id: 'txtHeight', + width: '45px', + label: editor.lang.common.height, + onKeyUp: onSizeChange, + onChange: function() { + commitInternally.call( this, 'advanced:txtdlgGenStyle' ); + }, + validate: function() { + var aMatch = this.getValue().match( regexGetSizeOrEmpty ), + isValid = !!( aMatch && parseInt( aMatch[ 1 ], 10 ) !== 0 ); + if ( !isValid ) + alert( editor.lang.common.invalidLength.replace( '%1', editor.lang.common.height ).replace( '%2', 'px, %' ) ); // jshint ignore:line + return isValid; + }, + setup: setupDimension, + commit: function( type, element ) { + var value = this.getValue(); + if ( type == IMAGE ) { + if ( value && editor.activeFilter.check( 'img{width,height}' ) ) + element.setStyle( 'height', CKEDITOR.tools.cssLength( value ) ); + else + element.removeStyle( 'height' ); + + element.removeAttribute( 'height' ); + } else if ( type == PREVIEW ) { + var aMatch = value.match( regexGetSize ); + if ( !aMatch ) { + var oImageOriginal = this.getDialog().originalElement; + if ( oImageOriginal.getCustomData( 'isReady' ) == 'true' ) + element.setStyle( 'height', oImageOriginal.$.height + 'px' ); + } else { + element.setStyle( 'height', CKEDITOR.tools.cssLength( value ) ); + } + } else if ( type == CLEANUP ) { + element.removeAttribute( 'height' ); + element.removeStyle( 'height' ); + } + } + } ] + }, + { + id: 'ratioLock', + type: 'html', + className: 'cke_dialog_image_ratiolock', + style: 'margin-top:30px;width:40px;height:40px;', + onLoad: function() { + // Activate Reset button + var resetButton = CKEDITOR.document.getById( btnResetSizeId ), + ratioButton = CKEDITOR.document.getById( btnLockSizesId ); + if ( resetButton ) { + resetButton.on( 'click', function( evt ) { + resetSize( this ); + evt.data && evt.data.preventDefault(); + }, this.getDialog() ); + resetButton.on( 'mouseover', function() { + this.addClass( 'cke_btn_over' ); + }, resetButton ); + resetButton.on( 'mouseout', function() { + this.removeClass( 'cke_btn_over' ); + }, resetButton ); + } + // Activate (Un)LockRatio button + if ( ratioButton ) { + ratioButton.on( 'click', function( evt ) { + switchLockRatio( this ); + + var oImageOriginal = this.originalElement, + width = this.getValueOf( 'info', 'txtWidth' ); + + if ( oImageOriginal.getCustomData( 'isReady' ) == 'true' && width ) { + var height = oImageOriginal.$.height / oImageOriginal.$.width * width; + if ( !isNaN( height ) ) { + this.setValueOf( 'info', 'txtHeight', Math.round( height ) ); + updatePreview( this ); + } + } + evt.data && evt.data.preventDefault(); + }, this.getDialog() ); + ratioButton.on( 'mouseover', function() { + this.addClass( 'cke_btn_over' ); + }, ratioButton ); + ratioButton.on( 'mouseout', function() { + this.removeClass( 'cke_btn_over' ); + }, ratioButton ); + } + }, + html: '<div>' + + '<a href="javascript:void(0)" tabindex="-1" title="' + editor.lang.image.lockRatio + + '" class="cke_btn_locked" id="' + btnLockSizesId + '" role="checkbox"><span class="cke_icon"></span><span class="cke_label">' + editor.lang.image.lockRatio + '</span></a>' + + '<a href="javascript:void(0)" tabindex="-1" title="' + editor.lang.image.resetSize + + '" class="cke_btn_reset" id="' + btnResetSizeId + '" role="button"><span class="cke_label">' + editor.lang.image.resetSize + '</span></a>' + + '</div>' + } ] + }, + { + type: 'vbox', + padding: 1, + children: [ { + type: 'text', + id: 'txtBorder', + requiredContent: 'img{border-width}', + width: '60px', + label: editor.lang.image.border, + 'default': '', + onKeyUp: function() { + updatePreview( this.getDialog() ); + }, + onChange: function() { + commitInternally.call( this, 'advanced:txtdlgGenStyle' ); + }, + validate: CKEDITOR.dialog.validate.integer( editor.lang.image.validateBorder ), + setup: function( type, element ) { + if ( type == IMAGE ) { + var value, + borderStyle = element.getStyle( 'border-width' ); + borderStyle = borderStyle && borderStyle.match( /^(\d+px)(?: \1 \1 \1)?$/ ); + value = borderStyle && parseInt( borderStyle[ 1 ], 10 ); + isNaN( parseInt( value, 10 ) ) && ( value = element.getAttribute( 'border' ) ); + this.setValue( value ); + } + }, + commit: function( type, element ) { + var value = parseInt( this.getValue(), 10 ); + if ( type == IMAGE || type == PREVIEW ) { + if ( !isNaN( value ) ) { + element.setStyle( 'border-width', CKEDITOR.tools.cssLength( value ) ); + element.setStyle( 'border-style', 'solid' ); + } else if ( !value && this.isChanged() ) { + element.removeStyle( 'border' ); + } + + if ( type == IMAGE ) + element.removeAttribute( 'border' ); + } else if ( type == CLEANUP ) { + element.removeAttribute( 'border' ); + element.removeStyle( 'border-width' ); + element.removeStyle( 'border-style' ); + element.removeStyle( 'border-color' ); + } + } + }, + { + type: 'text', + id: 'txtHSpace', + requiredContent: 'img{margin-left,margin-right}', + width: '60px', + label: editor.lang.image.hSpace, + 'default': '', + onKeyUp: function() { + updatePreview( this.getDialog() ); + }, + onChange: function() { + commitInternally.call( this, 'advanced:txtdlgGenStyle' ); + }, + validate: CKEDITOR.dialog.validate.integer( editor.lang.image.validateHSpace ), + setup: function( type, element ) { + if ( type == IMAGE ) { + var value, marginLeftPx, marginRightPx, + marginLeftStyle = element.getStyle( 'margin-left' ), + marginRightStyle = element.getStyle( 'margin-right' ); + + marginLeftStyle = marginLeftStyle && marginLeftStyle.match( pxLengthRegex ); + marginRightStyle = marginRightStyle && marginRightStyle.match( pxLengthRegex ); + marginLeftPx = parseInt( marginLeftStyle, 10 ); + marginRightPx = parseInt( marginRightStyle, 10 ); + + value = ( marginLeftPx == marginRightPx ) && marginLeftPx; + isNaN( parseInt( value, 10 ) ) && ( value = element.getAttribute( 'hspace' ) ); + + this.setValue( value ); + } + }, + commit: function( type, element ) { + var value = parseInt( this.getValue(), 10 ); + if ( type == IMAGE || type == PREVIEW ) { + if ( !isNaN( value ) ) { + element.setStyle( 'margin-left', CKEDITOR.tools.cssLength( value ) ); + element.setStyle( 'margin-right', CKEDITOR.tools.cssLength( value ) ); + } else if ( !value && this.isChanged() ) { + element.removeStyle( 'margin-left' ); + element.removeStyle( 'margin-right' ); + } + + if ( type == IMAGE ) + element.removeAttribute( 'hspace' ); + } else if ( type == CLEANUP ) { + element.removeAttribute( 'hspace' ); + element.removeStyle( 'margin-left' ); + element.removeStyle( 'margin-right' ); + } + } + }, + { + type: 'text', + id: 'txtVSpace', + requiredContent: 'img{margin-top,margin-bottom}', + width: '60px', + label: editor.lang.image.vSpace, + 'default': '', + onKeyUp: function() { + updatePreview( this.getDialog() ); + }, + onChange: function() { + commitInternally.call( this, 'advanced:txtdlgGenStyle' ); + }, + validate: CKEDITOR.dialog.validate.integer( editor.lang.image.validateVSpace ), + setup: function( type, element ) { + if ( type == IMAGE ) { + var value, marginTopPx, marginBottomPx, + marginTopStyle = element.getStyle( 'margin-top' ), + marginBottomStyle = element.getStyle( 'margin-bottom' ); + + marginTopStyle = marginTopStyle && marginTopStyle.match( pxLengthRegex ); + marginBottomStyle = marginBottomStyle && marginBottomStyle.match( pxLengthRegex ); + marginTopPx = parseInt( marginTopStyle, 10 ); + marginBottomPx = parseInt( marginBottomStyle, 10 ); + + value = ( marginTopPx == marginBottomPx ) && marginTopPx; + isNaN( parseInt( value, 10 ) ) && ( value = element.getAttribute( 'vspace' ) ); + this.setValue( value ); + } + }, + commit: function( type, element ) { + var value = parseInt( this.getValue(), 10 ); + if ( type == IMAGE || type == PREVIEW ) { + if ( !isNaN( value ) ) { + element.setStyle( 'margin-top', CKEDITOR.tools.cssLength( value ) ); + element.setStyle( 'margin-bottom', CKEDITOR.tools.cssLength( value ) ); + } else if ( !value && this.isChanged() ) { + element.removeStyle( 'margin-top' ); + element.removeStyle( 'margin-bottom' ); + } + + if ( type == IMAGE ) + element.removeAttribute( 'vspace' ); + } else if ( type == CLEANUP ) { + element.removeAttribute( 'vspace' ); + element.removeStyle( 'margin-top' ); + element.removeStyle( 'margin-bottom' ); + } + } + }, + { + id: 'cmbAlign', + requiredContent: 'img{float}', + type: 'select', + widths: [ '35%', '65%' ], + style: 'width:90px', + label: editor.lang.common.align, + 'default': '', + items: [ + [ editor.lang.common.notSet, '' ], + [ editor.lang.common.left, 'left' ], + [ editor.lang.common.right, 'right' ] + // Backward compatible with v2 on setup when specified as attribute value, + // while these values are no more available as select options. + // [ editor.lang.image.alignAbsBottom , 'absBottom'], + // [ editor.lang.image.alignAbsMiddle , 'absMiddle'], + // [ editor.lang.image.alignBaseline , 'baseline'], + // [ editor.lang.image.alignTextTop , 'text-top'], + // [ editor.lang.image.alignBottom , 'bottom'], + // [ editor.lang.image.alignMiddle , 'middle'], + // [ editor.lang.image.alignTop , 'top'] + ], + onChange: function() { + updatePreview( this.getDialog() ); + commitInternally.call( this, 'advanced:txtdlgGenStyle' ); + }, + setup: function( type, element ) { + if ( type == IMAGE ) { + var value = element.getStyle( 'float' ); + switch ( value ) { + // Ignore those unrelated values. + case 'inherit': + case 'none': + value = ''; + } + + !value && ( value = ( element.getAttribute( 'align' ) || '' ).toLowerCase() ); + this.setValue( value ); + } + }, + commit: function( type, element ) { + var value = this.getValue(); + if ( type == IMAGE || type == PREVIEW ) { + if ( value ) + element.setStyle( 'float', value ); + else + element.removeStyle( 'float' ); + + if ( type == IMAGE ) { + value = ( element.getAttribute( 'align' ) || '' ).toLowerCase(); + switch ( value ) { + // we should remove it only if it matches "left" or "right", + // otherwise leave it intact. + case 'left': + case 'right': + element.removeAttribute( 'align' ); + } + } + } else if ( type == CLEANUP ) { + element.removeStyle( 'float' ); + } + } + } ] + } ] + }, + { + type: 'vbox', + height: '250px', + children: [ { + type: 'html', + id: 'htmlPreview', + style: 'width:95%;', + html: '<div>' + CKEDITOR.tools.htmlEncode( editor.lang.common.preview ) + '<br>' + + '<div id="' + imagePreviewLoaderId + '" class="ImagePreviewLoader" style="display:none"><div class="loading"> </div></div>' + + '<div class="ImagePreviewBox"><table><tr><td>' + + '<a href="javascript:void(0)" target="_blank" onclick="return false;" id="' + previewLinkId + '">' + + '<img id="' + previewImageId + '" alt="" /></a>' + + // jscs:disable maximumLineLength + ( editor.config.image_previewText || 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit. ' + + 'Maecenas feugiat consequat diam. Maecenas metus. Vivamus diam purus, cursus a, commodo non, facilisis vitae, ' + + 'nulla. Aenean dictum lacinia tortor. Nunc iaculis, nibh non iaculis aliquam, orci felis euismod neque, sed ornare massa mauris sed velit. Nulla pretium mi et risus. Fusce mi pede, tempor id, cursus ac, ullamcorper nec, enim. Sed tortor. Curabitur molestie. Duis velit augue, condimentum at, ultrices a, luctus ut, orci. Donec pellentesque egestas eros. Integer cursus, augue in cursus faucibus, eros pede bibendum sem, in tempus tellus justo quis ligula. Etiam eget tortor. Vestibulum rutrum, est ut placerat elementum, lectus nisl aliquam velit, tempor aliquam eros nunc nonummy metus. In eros metus, gravida a, gravida sed, lobortis id, turpis. Ut ultrices, ipsum at venenatis fringilla, sem nulla lacinia tellus, eget aliquet turpis mauris non enim. Nam turpis. Suspendisse lacinia. Curabitur ac tortor ut ipsum egestas elementum. Nunc imperdiet gravida mauris.' ) + + // jscs:enable maximumLineLength + '</td></tr></table></div></div>' + } ] + } ] + } ] + }, + { + id: 'Link', + requiredContent: 'a[href]', + label: editor.lang.image.linkTab, + padding: 0, + elements: [ { + id: 'txtUrl', + type: 'text', + label: editor.lang.common.url, + style: 'width: 100%', + 'default': '', + setup: function( type, element ) { + if ( type == LINK ) { + var href = element.data( 'cke-saved-href' ); + if ( !href ) + href = element.getAttribute( 'href' ); + this.setValue( href ); + } + }, + commit: function( type, element ) { + if ( type == LINK ) { + if ( this.getValue() || this.isChanged() ) { + var url = this.getValue(); + element.data( 'cke-saved-href', url ); + element.setAttribute( 'href', url ); + + if ( this.getValue() || !editor.config.image_removeLinkByEmptyURL ) + this.getDialog().addLink = true; + else + this.getDialog().addLink = false; + } + } + } + }, + { + type: 'button', + id: 'browse', + className: 'cke_dialog_image_browse', + filebrowser: { + action: 'Browse', + target: 'Link:txtUrl', + url: editor.config.filebrowserImageBrowseLinkUrl + }, + style: 'float:right', + hidden: true, + label: editor.lang.common.browseServer + }, + { + id: 'cmbTarget', + type: 'select', + requiredContent: 'a[target]', + label: editor.lang.common.target, + 'default': '', + items: [ + [ editor.lang.common.notSet, '' ], + [ editor.lang.common.targetNew, '_blank' ], + [ editor.lang.common.targetTop, '_top' ], + [ editor.lang.common.targetSelf, '_self' ], + [ editor.lang.common.targetParent, '_parent' ] + ], + setup: function( type, element ) { + if ( type == LINK ) + this.setValue( element.getAttribute( 'target' ) || '' ); + }, + commit: function( type, element ) { + if ( type == LINK ) { + if ( this.getValue() || this.isChanged() ) + element.setAttribute( 'target', this.getValue() ); + } + } + } ] + }, + { + id: 'Upload', + hidden: true, + filebrowser: 'uploadButton', + label: editor.lang.image.upload, + elements: [ + { + type: 'file', + id: 'upload', + label: editor.lang.image.btnUpload, + style: 'height:40px', + size: 38 + }, + { + type: 'fileButton', + id: 'uploadButton', + filebrowser: 'info:txtUrl', + label: editor.lang.image.btnUpload, + 'for': [ 'Upload', 'upload' ] + }, + { + type: 'button', + id: 'selectfile', + label: '选择服务器文件', + size: 38, + onClick: function () { + var w = 800; + var h = 600; + var dualScreenLeft = window.screenLeft !== undefined ? window.screenLeft : window.screenX; + var dualScreenTop = window.screenTop !== undefined ? window.screenTop : window.screenY; + + var width = window.innerWidth ? window.innerWidth : document.documentElement.clientWidth ? document.documentElement.clientWidth : screen.width; + var height = window.innerHeight ? window.innerHeight : document.documentElement.clientHeight ? document.documentElement.clientHeight : screen.height; + + var systemZoom = width / window.screen.availWidth; + var posLeft = (width - w) / 2 / systemZoom + dualScreenLeft; + var posTop = (height - h) / 2 / systemZoom + dualScreenTop; + window.open("./dialog/select_images.php?f=body", "popUpImagesWin", "scrollbars=yes,resizable=yes,statebar=no,width=800,height=600,left=" + posLeft + ", top=" + posTop); + CKEDITOR.dialog.getCurrent().hide(); + } + }, + ] + }, + { + id: 'advanced', + label: editor.lang.common.advancedTab, + elements: [ { + type: 'hbox', + widths: [ '50%', '25%', '25%' ], + children: [ { + type: 'text', + id: 'linkId', + requiredContent: 'img[id]', + label: editor.lang.common.id, + setup: function( type, element ) { + if ( type == IMAGE ) + this.setValue( element.getAttribute( 'id' ) ); + }, + commit: function( type, element ) { + if ( type == IMAGE ) { + if ( this.getValue() || this.isChanged() ) + element.setAttribute( 'id', this.getValue() ); + } + } + }, + { + id: 'cmbLangDir', + type: 'select', + requiredContent: 'img[dir]', + style: 'width : 100px;', + label: editor.lang.common.langDir, + 'default': '', + items: [ + [ editor.lang.common.notSet, '' ], + [ editor.lang.common.langDirLtr, 'ltr' ], + [ editor.lang.common.langDirRtl, 'rtl' ] + ], + setup: function( type, element ) { + if ( type == IMAGE ) + this.setValue( element.getAttribute( 'dir' ) ); + }, + commit: function( type, element ) { + if ( type == IMAGE ) { + if ( this.getValue() || this.isChanged() ) + element.setAttribute( 'dir', this.getValue() ); + } + } + }, + { + type: 'text', + id: 'txtLangCode', + requiredContent: 'img[lang]', + label: editor.lang.common.langCode, + 'default': '', + setup: function( type, element ) { + if ( type == IMAGE ) + this.setValue( element.getAttribute( 'lang' ) ); + }, + commit: function( type, element ) { + if ( type == IMAGE ) { + if ( this.getValue() || this.isChanged() ) + element.setAttribute( 'lang', this.getValue() ); + } + } + } ] + }, + { + type: 'text', + id: 'txtGenLongDescr', + requiredContent: 'img[longdesc]', + label: editor.lang.common.longDescr, + setup: function( type, element ) { + if ( type == IMAGE ) + this.setValue( element.getAttribute( 'longDesc' ) ); + }, + commit: function( type, element ) { + if ( type == IMAGE ) { + if ( this.getValue() || this.isChanged() ) + element.setAttribute( 'longDesc', this.getValue() ); + } + } + }, + { + type: 'hbox', + widths: [ '50%', '50%' ], + children: [ { + type: 'text', + id: 'txtGenClass', + requiredContent: 'img(cke-xyz)', // Random text like 'xyz' will check if all are allowed. + label: editor.lang.common.cssClass, + 'default': '', + setup: function( type, element ) { + if ( type == IMAGE ) + this.setValue( element.getAttribute( 'class' ) ); + }, + commit: function( type, element ) { + if ( type == IMAGE ) { + if ( this.getValue() || this.isChanged() ) + element.setAttribute( 'class', this.getValue() ); + } + } + }, + { + type: 'text', + id: 'txtGenTitle', + requiredContent: 'img[title]', + label: editor.lang.common.advisoryTitle, + 'default': '', + onChange: function() { + updatePreview( this.getDialog() ); + }, + setup: function( type, element ) { + if ( type == IMAGE ) + this.setValue( element.getAttribute( 'title' ) ); + }, + commit: function( type, element ) { + if ( type == IMAGE ) { + if ( this.getValue() || this.isChanged() ) + element.setAttribute( 'title', this.getValue() ); + } else if ( type == PREVIEW ) + element.setAttribute( 'title', this.getValue() ); + else if ( type == CLEANUP ) { + element.removeAttribute( 'title' ); + } + } + } ] + }, + { + type: 'text', + id: 'txtdlgGenStyle', + requiredContent: 'img{cke-xyz}', // Random text like 'xyz' will check if all are allowed. + label: editor.lang.common.cssStyle, + validate: CKEDITOR.dialog.validate.inlineStyle( editor.lang.common.invalidInlineStyle ), + 'default': '', + setup: function( type, element ) { + if ( type == IMAGE ) { + var genStyle = element.getAttribute( 'style' ); + if ( !genStyle && element.$.style.cssText ) + genStyle = element.$.style.cssText; + this.setValue( genStyle ); + + var height = element.$.style.height, + width = element.$.style.width, + aMatchH = ( height ? height : '' ).match( regexGetSize ), + aMatchW = ( width ? width : '' ).match( regexGetSize ); + + this.attributesInStyle = { + height: !!aMatchH, + width: !!aMatchW + }; + } + }, + onChange: function() { + commitInternally.call( + this, [ + 'info:cmbFloat', + 'info:cmbAlign', + 'info:txtVSpace', + 'info:txtHSpace', + 'info:txtBorder', + 'info:txtWidth', + 'info:txtHeight' + ] + ); + updatePreview( this ); + }, + commit: function( type, element ) { + if ( type == IMAGE && ( this.getValue() || this.isChanged() ) ) + element.setAttribute( 'style', this.getValue() ); + + } + } ] + } ] + }; + }; + + CKEDITOR.dialog.add( 'image', function( editor ) { + return imageDialog( editor, 'image' ); + } ); + + CKEDITOR.dialog.add( 'imagebutton', function( editor ) { + return imageDialog( editor, 'imagebutton' ); + } ); } )(); \ No newline at end of file diff --git a/src/static/ckeditor/plugins/mathjax/dialogs/mathjax.js b/src/static/ckeditor/plugins/mathjax/dialogs/mathjax.js new file mode 100644 index 00000000..563c72f6 --- /dev/null +++ b/src/static/ckeditor/plugins/mathjax/dialogs/mathjax.js @@ -0,0 +1,7 @@ +/* + Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved. + For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.dialog.add("mathjax",function(d){var c,b=d.lang.mathjax;return{title:b.title,minWidth:350,minHeight:100,contents:[{id:"info",elements:[{id:"equation",type:"textarea",label:b.dialogInput,onLoad:function(){var a=this;if(!CKEDITOR.env.ie||8!=CKEDITOR.env.version)this.getInputElement().on("keyup",function(){c.setValue("\\("+a.getInputElement().getValue()+"\\)")})},setup:function(a){this.setValue(CKEDITOR.plugins.mathjax.trim(a.data.math))},commit:function(a){a.setData("math","\\("+this.getValue()+ +"\\)")}},{id:"documentation",type:"html",html:'\x3cdiv style\x3d"width:100%;text-align:right;margin:-8px 0 10px"\x3e\x3ca class\x3d"cke_mathjax_doc" href\x3d"'+b.docUrl+'" target\x3d"_black" style\x3d"cursor:pointer;color:#00B2CE;text-decoration:underline"\x3e'+b.docLabel+"\x3c/a\x3e\x3c/div\x3e"},!(CKEDITOR.env.ie&&8==CKEDITOR.env.version)&&{id:"preview",type:"html",html:'\x3cdiv style\x3d"width:100%;text-align:center;"\x3e\x3ciframe style\x3d"border:0;width:0;height:0;font-size:20px" scrolling\x3d"no" frameborder\x3d"0" allowTransparency\x3d"true" src\x3d"'+ +CKEDITOR.plugins.mathjax.fixSrc+'"\x3e\x3c/iframe\x3e\x3c/div\x3e',onLoad:function(){var a=CKEDITOR.document.getById(this.domId).getChild(0);c=new CKEDITOR.plugins.mathjax.frameWrapper(a,d)},setup:function(a){c.setValue(a.data.math)}}]}]}}); \ No newline at end of file diff --git a/src/static/ckeditor/plugins/mathjax/icons/hidpi/mathjax.png b/src/static/ckeditor/plugins/mathjax/icons/hidpi/mathjax.png new file mode 100644 index 0000000000000000000000000000000000000000..85b8e11df627e14ff43d101faa8c3b610c9bf615 GIT binary patch literal 1437 zcmV;O1!DS%P)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F800004b3#c}2nYxW zd<bNS00009a7bBm000|!000|!0iRgzQvd(}8FWQhbW?9;ba!ELWdL_~cP?peYja~^ zaAhuUa%Y?FJQ@H11sX|2K~z|U#g<=eQ&k+tzvrH{Ww-ZsEF~jNb-90rE}~<WWC-a% z*IQu0HKVdEB%;U?NtVci2441HVt68HFvC4mGg@9IiWc3FI64+Hg$EtYAOR$%$Hch| zH`C}w>u_za4{S|Wwys4dzqkAQ-TuCx^F8PE{zx<$#p4X_v8n?o$xXQ3?i&CqR!MI# z91g#l7XZLo0P9x?;JMtyLjY&aoS8d$@}!<jCP{XlQVLDe;({Qgm+OB2{(X{2BuFe4 zqZ1PoC6kkrCAzL>>T`2*)hhxxola^n7>Lj3Ln@V8RJ(KMj`{fU;}Au0Ifg|sGBN_c z-;Y=<wg6!CcsxR1U*EljcS!CnP!we=fJ;}dToJmux{ypJGqt;S??M#Cp96tFm(6CI z&Cw$OL;&RgD)GSXXUE6K$+2U{FgrVoR4Rqh(a~pyhK6o03os8+58&(J;bH#NsZ&U& zAGn@KBoK{8kxHe$i^t=;uU@?x&*y-mC@%u&85$Z=y1Tmp08>*_&B0*s%Y}EAyoQXi zZvixI-@g5?j*bpcN&x^o&qGlZa2)64dH%wV9Xm?%0WikC0pMzAX!xVPz8(NzwOSV) z#3dcbTER{Lec^D}<oElraG>JxI2dC{rBZ|Gbh_#C<;%I-k=w^RH#hfrG#bV9^mOaG zb?eUMbs%d6mjJxtcDw&>Z*R}!&1N%XSq8^(8X@HTu3fuKEA$B&42BP?tE*90S7*tt zt@uyK82bu9TVrEm^5DUPAmqXA6a)dXEQ3<IJDpB{*4o-?SfSNB0G<cXmz~VJ1=*n} zN(+FGL!l7u?d{EM$IQ$O7-P_N{d{F*Wou7QPcna}#ZmCLfH8Isz-wNwH{I6OmdT5v z2w9dv2-!O}HrA`EDqR(Td5B&B?JX@W`o4YpGI@)|0!fmf>w1f#D85w#n1=`gIJ|%V ze!aQ5Ig>9dD??RPRZ0+q!BqvAhxiD<TL%stz?Lmr005<>r8sfo1igO!`tD+SE%h}l z6ry`@aIhv4iM%O_B04)ev0=l8833XG1whlZ7DC7y8#iv8_W67kyWRdffJVmHNHKjL zX$v$>YbS)9wb^WAfk0r5-ERK{fU{U};1L{fyWMXSLVT*K{ul~{ssus!3BXRq*sq2B z-sABY6N$v@l+rH-1_q{zazN9x_W<~6YHDuu_xC?72touveWBt2FgrVYm=N-zuIo;q zKnGM+C9*8PPY5~UbUGuaPoH*BO2YuWjInzwHkc2W%Oz1t->s;qNFF_UGy)WG22@q0 zvMdJ(AxD~;ntlidgAPjRIRGygBfe+P9xKOjeO9a0+R)HY;`MqRzzPm{JRYN>C}#oe zJ#^^M_nn=cbpZSTIv8Wi&W73Ha=F$}N?+1--ETA+pS0O*a5x-E0GILtY}>ZYY&M(E z6GGgQB&8-MCh9yM&u=$x-h2T-q`-w!j^m!vb=^oQg`y~+lw$Md&BKhb__6>lmuoH0 z^A`yrTO~<CSy>sqcI_G_CnwjV$dR4nIGD|5R905PU@*XLw?mSoPZ?ua5<t_m^&H0y zP)avRk_1r{kxr*kUS5v!^73M|K?s4#WXjAC08m?7s{^>O@ca+}A><;Zbd##8;CVi? ziqg`&<6ps1TU&dZF*d#|fXQU4P*qjud7k9f{%u$+7C0P^PZsQ765!UYTQLAn{MX`H rv1lY)>JY90@aHOtk2A(bvlIUSmP*Mm4Sl`b00000NkvXXu0mjfAQg@n literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/mathjax/icons/mathjax.png b/src/static/ckeditor/plugins/mathjax/icons/mathjax.png new file mode 100644 index 0000000000000000000000000000000000000000..d25081be998163c28c17c6802c1a0246ca1534a7 GIT binary patch literal 703 zcmV;w0zmzVP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^ zaAhuUa%Y?FJQ@H10z64XK~y-6rIS5q6JZ#~|96+RsYksbAb~_ua+BiJ1hE?OA(sou zP^br%l43=qb#f9y7e^PRqJsvkBnSpgF_3^@+QBJ0bqawDeP1YIQE5A5FeG=$<C1=* zQ3^iOJN%v>|L1vl1;!Zur)>L=Xf(PF;LK^71VPwdTU)z$Ot8GXd^VHG$N=DUI%#2H z!IC5i0MO}lu(!8|N~I!It5vbpYALF!ij1)?7-L|JfrxGui^Z;C7?emPC=!XRHyVwr zM0ACSt`X4<B6?RYm)q0R)8zB{&NIdi6L8MoOifJ<nWp(Fm&*ywW>cG(nE0`|xjD}m z>-MmMuIo2<cX!`!ZEc+c@a;g*le{(zW7x8+7x{c1L^MZ4ma3|E7-Q69^0TwEE&x9{ z=Qt+l0WW7}W`-=wdR8bD0N^$NQ&rW)Ba){luFxlWo=hf(Ez5dbDwP1>uFYo40{GI; zihny5=ln?^5O}003YM0ZP_Nf%5H~OZ0L0^Qmn2DvbUOVj7!2O$oPRyFAQp?MBO@b) zY&JXO_xtBK=j;89rfCnl-R|2HBj~z*NtWdgtE;P`-|wFv)EtY&!XA(3VWm>B9ZR5T z+U2pau}{fl@^>ngTB+4)J^;QWh(JUa6h*lg4u>t5%k^E@|4h2BM`T(4I6gi;y0fzb z(=<<vCI|xTb~_vn2MojbJUKae{UCv&C<U+AJ1UAI+-~=v)f|*0NeG2PEA4jsaETim l8*Kose|8>L3qXl;jz6ZS`h+Mt59|N{002ovPDHLkV1m^WEA{{Y literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/mathjax/images/loader.gif b/src/static/ckeditor/plugins/mathjax/images/loader.gif new file mode 100644 index 0000000000000000000000000000000000000000..3ffb1811f7c06f2b5da7cac82cda97839c10e177 GIT binary patch literal 784 zcmZ?wbhEHb<YC}p_{zY*!o<?j)N<t5kvFg2%$YaG$Is`^tvg@7ebLd<>FMh^bMDNS zPhWEKa-KYT^5@?l6El-H@7^p~wB*jcJAZ!tS+j1<l}lGj%1UgkY+Bk{Lc&6>T)QG8 zCo^Tzlr5XKq@<<P)Ya_SwP(t-DQ8ZdVW16A{Lk&@8WQa67~pE8XTZz|v_<hJ3nveQ z1cMI9MvylhSi=<5k|wM8F7`0&RQ3~3NbF`>`iN0>MoI|#<%jAA1C&H!&L<quU=lg> z)NzA?(xTQBgCCA;lUi5Y_L#}$w&YTJM2OV7i%Se2uuAlJEmUA&5U}8_PE}TfTE&QD z6<h3q1_OhM9%{}Dm6)8^WahEAb6BdhO7*BI7-sMtYYsnTI$^!^fwtR$B@#RW>dZoV zD$R|@CQR39sp9qItzk?KXUvpl7vT1D;$xCvW0VyX6q1*h;^&tPXP(9E>4?q77@&;_ zH*$EKA0D_M;pZUen!seKvYag-IO#%0Pt$Q_;Rjyp8u=d!M|iMJ&~v$Hx&6Kb1B39X zhAC3MPQr5hGA>eOo>}tjq2a>33e2feY<WTgf`YQ)>_WU@&R8vs2YK;F4V&{rhsz#j zJRZz$2A+Nj6Py)3S7h`|@>n8#gTc&m;gJLm9TjGdYJ&+nEem{B98PEukri^1;g<_# z6jl)AN=?sX%+8UJ>St#T&6Z*p5@MH<YVw>d)b0eclL<LkBODq7HY^Abb6&_=Fq22M zt#N_iN{h+tCmaP545ZvVjw%R>$h9sJ$P#c75bIF1nxMei#jsRp<+b-BJe=XdfoU08 dOgSM+El%vr(Hsm6LetobQ$2-KqJbW?1^`cR-){f_ literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/mathjax/lang/zh-cn.js b/src/static/ckeditor/plugins/mathjax/lang/zh-cn.js new file mode 100644 index 00000000..ea9ad35e --- /dev/null +++ b/src/static/ckeditor/plugins/mathjax/lang/zh-cn.js @@ -0,0 +1 @@ +CKEDITOR.plugins.setLang("mathjax","zh-cn",{title:"TeX 语法的数学公式编辑器",button:"数学公式",dialogInput:"在此编写您的 TeX 指令",docUrl:"http://zh.wikipedia.org/wiki/TeX",docLabel:"TeX 语法(可以参考维基百科自身关于数学公式显示方式的帮助)",loading:"正在加载...",pathName:"数字公式"}); \ No newline at end of file diff --git a/src/static/ckeditor/plugins/mathjax/plugin.js b/src/static/ckeditor/plugins/mathjax/plugin.js new file mode 100644 index 00000000..b442d0b8 --- /dev/null +++ b/src/static/ckeditor/plugins/mathjax/plugin.js @@ -0,0 +1,15 @@ +/* + Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved. + For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +(function(){CKEDITOR.plugins.add("mathjax",{lang:"af,ar,az,bg,ca,cs,cy,da,de,de-ch,el,en,en-au,en-gb,eo,es,es-mx,et,eu,fa,fi,fr,gl,he,hr,hu,id,it,ja,km,ko,ku,lt,lv,nb,nl,no,oc,pl,pt,pt-br,ro,ru,sk,sl,sq,sr,sr-latn,sv,tr,tt,ug,uk,vi,zh,zh-cn",requires:"widget,dialog",icons:"mathjax",hidpi:!0,isSupportedEnvironment:function(){return!CKEDITOR.env.ie||8<CKEDITOR.env.version},init:function(b){var c=b.config.mathJaxClass||"math-tex";b.config.mathJaxLib||CKEDITOR.error("mathjax-no-config");b.widgets.add("mathjax", +{inline:!0,dialog:"mathjax",button:b.lang.mathjax.button,mask:!0,allowedContent:"span(!"+c+")",styleToAllowedContentRules:function(a){a=a.getClassesArray();if(!a)return null;a.push("!"+c);return"span("+a.join(",")+")"},pathName:b.lang.mathjax.pathName,template:'\x3cspan class\x3d"'+c+'" style\x3d"display:inline-block" data-cke-survive\x3d1\x3e\x3c/span\x3e',parts:{span:"span"},defaults:{math:"\\(x \x3d {-b \\pm \\sqrt{b^2-4ac} \\over 2a}\\)"},init:function(){var a=this.parts.span.getChild(0);a&&a.type== +CKEDITOR.NODE_ELEMENT&&a.is("iframe")||(a=new CKEDITOR.dom.element("iframe"),a.setAttributes({style:"border:0;width:0;height:0",scrolling:"no",frameborder:0,allowTransparency:!0,src:CKEDITOR.plugins.mathjax.fixSrc}),this.parts.span.append(a));this.once("ready",function(){CKEDITOR.env.ie&&a.setAttribute("src",CKEDITOR.plugins.mathjax.fixSrc);this.frameWrapper=new CKEDITOR.plugins.mathjax.frameWrapper(a,b);this.frameWrapper.setValue(this.data.math)})},data:function(){this.frameWrapper&&this.frameWrapper.setValue(this.data.math)}, +upcast:function(a,b){if("span"==a.name&&a.hasClass(c)&&!(1<a.children.length||a.children[0].type!=CKEDITOR.NODE_TEXT)){b.math=CKEDITOR.tools.htmlDecode(a.children[0].value);var d=a.attributes;d.style=d.style?d.style+";display:inline-block":"display:inline-block";d["data-cke-survive"]=1;a.children[0].remove();return a}},downcast:function(a){a.children[0].replaceWith(new CKEDITOR.htmlParser.text(CKEDITOR.tools.htmlEncode(this.data.math)));var b=a.attributes;b.style=b.style.replace(/display:\s?inline-block;?\s?/, +"");""===b.style&&delete b.style;return a}});CKEDITOR.dialog.add("mathjax",this.path+"dialogs/mathjax.js");b.on("contentPreview",function(a){a.data.dataValue=a.data.dataValue.replace(/<\/head>/,'\x3cscript src\x3d"'+CKEDITOR.getUrl(b.config.mathJaxLib)+'"\x3e\x3c/script\x3e\x3c/head\x3e')});b.on("paste",function(a){a.data.dataValue=a.data.dataValue.replace(new RegExp("\x3cspan[^\x3e]*?"+c+".*?\x3c/span\x3e","ig"),function(a){return a.replace(/(<iframe.*?\/iframe>)/i,"")})})}});CKEDITOR.plugins.mathjax= +{};CKEDITOR.plugins.mathjax.fixSrc=CKEDITOR.env.gecko?"javascript:true":CKEDITOR.env.ie?"javascript:void((function(){"+encodeURIComponent("document.open();("+CKEDITOR.tools.fixDomain+")();document.close();")+"})())":"javascript:void(0)";CKEDITOR.plugins.mathjax.loadingIcon=CKEDITOR.plugins.get("mathjax").path+"images/loader.gif";CKEDITOR.plugins.mathjax.copyStyles=function(b,c){for(var a="color font-family font-style font-weight font-variant font-size".split(" "),e=0;e<a.length;e++){var d=a[e],g= +b.getComputedStyle(d);g&&c.setStyle(d,g)}};CKEDITOR.plugins.mathjax.trim=function(b){var c=b.indexOf("\\(")+2,a=b.lastIndexOf("\\)");return b.substring(c,a)};CKEDITOR.plugins.mathjax.frameWrapper=CKEDITOR.env.ie&&8==CKEDITOR.env.version?function(b,c){b.getFrameDocument().write('\x3c!DOCTYPE html\x3e\x3chtml\x3e\x3chead\x3e\x3cmeta charset\x3d"utf-8"\x3e\x3c/head\x3e\x3cbody style\x3d"padding:0;margin:0;background:transparent;overflow:hidden"\x3e\x3cspan style\x3d"white-space:nowrap;" id\x3d"tex"\x3e\x3c/span\x3e\x3c/body\x3e\x3c/html\x3e'); +return{setValue:function(a){var e=b.getFrameDocument(),d=e.getById("tex");d.setHtml(CKEDITOR.plugins.mathjax.trim(CKEDITOR.tools.htmlEncode(a)));CKEDITOR.plugins.mathjax.copyStyles(b,d);c.fire("lockSnapshot");b.setStyles({width:Math.min(250,d.$.offsetWidth)+"px",height:e.$.body.offsetHeight+"px",display:"inline","vertical-align":"middle"});c.fire("unlockSnapshot")}}}:function(b,c){function a(){f=b.getFrameDocument();f.getById("preview")||(CKEDITOR.env.ie&&b.removeAttribute("src"),f.write('\x3c!DOCTYPE html\x3e\x3chtml\x3e\x3chead\x3e\x3cmeta charset\x3d"utf-8"\x3e\x3cscript type\x3d"text/x-mathjax-config"\x3eMathJax.Hub.Config( {showMathMenu: false,messageStyle: "none"} );function getCKE() {if ( typeof window.parent.CKEDITOR \x3d\x3d \'object\' ) {return window.parent.CKEDITOR;} else {return window.parent.parent.CKEDITOR;}}function update() {MathJax.Hub.Queue([ \'Typeset\', MathJax.Hub, this.buffer ],function() {getCKE().tools.callFunction( '+ +n+" );});}MathJax.Hub.Queue( function() {getCKE().tools.callFunction("+p+');} );\x3c/script\x3e\x3cscript src\x3d"'+c.config.mathJaxLib+'"\x3e\x3c/script\x3e\x3c/head\x3e\x3cbody style\x3d"padding:0;margin:0;background:transparent;overflow:hidden"\x3e\x3cspan id\x3d"preview"\x3e\x3c/span\x3e\x3cspan id\x3d"buffer" style\x3d"display:none"\x3e\x3c/span\x3e\x3c/body\x3e\x3c/html\x3e'))}function e(){m=!0;h=k;c.fire("lockSnapshot");d.setHtml(h);g.setHtml("\x3cimg src\x3d"+CKEDITOR.plugins.mathjax.loadingIcon+ +" alt\x3d"+c.lang.mathjax.loading+"\x3e");b.setStyles({height:"16px",width:"16px",display:"inline","vertical-align":"middle"});c.fire("unlockSnapshot");f.getWindow().$.update(h)}var d,g,h,k,f=b.getFrameDocument(),l=!1,m=!1,p=CKEDITOR.tools.addFunction(function(){g=f.getById("preview");d=f.getById("buffer");l=!0;k&&e();CKEDITOR.fire("mathJaxLoaded",b)}),n=CKEDITOR.tools.addFunction(function(){CKEDITOR.plugins.mathjax.copyStyles(b,g);g.setHtml(d.getHtml());c.fire("lockSnapshot");b.setStyles({height:0, +width:0});var a=Math.max(f.$.body.offsetHeight,f.$.documentElement.offsetHeight),l=Math.max(g.$.offsetWidth,f.$.body.scrollWidth);b.setStyles({height:a+"px",width:l+"px"});c.fire("unlockSnapshot");CKEDITOR.fire("mathJaxUpdateDone",b);h!=k?e():m=!1});b.on("load",a);a();return{setValue:function(a){k=CKEDITOR.tools.htmlEncode(a);l&&!m&&e()}}}})(); \ No newline at end of file diff --git a/src/static/ckeditor/plugins/mentions/plugin.js b/src/static/ckeditor/plugins/mentions/plugin.js new file mode 100644 index 00000000..33c17e9f --- /dev/null +++ b/src/static/ckeditor/plugins/mentions/plugin.js @@ -0,0 +1,9 @@ +/* + Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved. + For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +(function(){function h(a,b){var d=b.feed;this.caseSensitive=b.caseSensitive;this.marker=b.hasOwnProperty("marker")?b.marker:"@";this.minChars=null!==b.minChars&&void 0!==b.minChars?b.minChars:2;var c;if(!(c=b.pattern)){c=this.minChars;var g="\\"+this.marker+"[_a-zA-Z0-9À-ž]",g=(c?g+("{"+c+",}"):g+"*")+"$";c=new RegExp(g)}this.pattern=c;this.cache=void 0!==b.cache?b.cache:!0;this.throttle=void 0!==b.throttle?b.throttle:200;this._autocomplete=new CKEDITOR.plugins.autocomplete(a,{textTestCallback:k(this.marker, +this.minChars,this.pattern),dataCallback:m(d,this),itemTemplate:b.itemTemplate,outputTemplate:b.outputTemplate,throttle:this.throttle,itemsLimit:b.itemsLimit})}function k(a,b,d){function c(b,a){var c=b.slice(0,a).match(d);if(!c)return null;var e=b[c.index-1];return void 0===e||e.match(/\s+/)?{start:c.index,end:a}:null}return function(b){return b.collapsed?CKEDITOR.plugins.textMatch.match(b,c):null}}function m(a,b){return function(d,c){function g(){var c=h(a).filter(function(a){a=a.name;b.caseSensitive|| +(a=a.toLowerCase(),f=f.toLowerCase());return 0===a.indexOf(f)});e(c)}function h(b){var a=1;return CKEDITOR.tools.array.reduce(b,function(b,c){b.push({name:c,id:a++});return b},[])}function k(){var c=(new CKEDITOR.template(a)).output({encodedQuery:encodeURIComponent(f)});if(b.cache&&l[c])return e(l[c]);CKEDITOR.ajax.load(c,function(a){a=JSON.parse(a);b.cache&&null!==a&&(l[c]=a);e(a)})}function e(a){a&&(a=CKEDITOR.tools.array.map(a,function(a){return CKEDITOR.tools.object.merge(a,{name:b.marker+a.name})}), +c(a))}var f=d.query;b.marker&&(f=f.substring(b.marker.length));CKEDITOR.tools.array.isArray(a)?g():"string"===typeof a?k():a({query:f,marker:b.marker},e)}}CKEDITOR._.mentions={cache:{}};var l=CKEDITOR._.mentions.cache;CKEDITOR.plugins.add("mentions",{requires:"autocomplete,textmatch,ajax",instances:[],init:function(a){var b=this;a.on("instanceReady",function(){CKEDITOR.tools.array.forEach(a.config.mentions||[],function(d){b.instances.push(new h(a,d))})})},isSupportedEnvironment:function(a){return a.plugins.autocomplete.isSupportedEnvironment(a)}}); +h.prototype={destroy:function(){this._autocomplete.destroy()}};CKEDITOR.plugins.mentions=h})(); \ No newline at end of file diff --git a/src/static/ckeditor/plugins/pastefromgdocs/filter/default.js b/src/static/ckeditor/plugins/pastefromgdocs/filter/default.js index eab7cd6e..3c187022 100644 --- a/src/static/ckeditor/plugins/pastefromgdocs/filter/default.js +++ b/src/static/ckeditor/plugins/pastefromgdocs/filter/default.js @@ -1,5 +1,5 @@ /* - Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved. + 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 */ (function(){function g(b){return""===b?!1:b}function h(b){if(!/(o|u)l/i.test(b.parent.name))return b;d.elements.replaceWithChildren(b);return!1}function k(b){function d(a,f){var b,c;if(a&&"tr"===a.name){b=a.children;for(c=0;c<f.length&&b[c];c++)b[c].attributes.width=f[c];d(a.next,f)}}var c=b.parent;b=function(a){return CKEDITOR.tools.array.map(a,function(a){return Number(a.attributes.width)})}(b.children);var a=function(a){return CKEDITOR.tools.array.reduce(a,function(a,b){return a+b},0)}(b);c.attributes.width= diff --git a/src/static/ckeditor/plugins/pastefromlibreoffice/filter/default.js b/src/static/ckeditor/plugins/pastefromlibreoffice/filter/default.js index 5f2aff40..61cec049 100644 --- a/src/static/ckeditor/plugins/pastefromlibreoffice/filter/default.js +++ b/src/static/ckeditor/plugins/pastefromlibreoffice/filter/default.js @@ -1,5 +1,5 @@ /* - Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved. + 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 */ (function(){function k(b,c){if(!(b.previous&&g(b.previous)&&b.getFirst().children.length&&1===b.children.length&&g(b.getFirst().getFirst())))return!1;for(var d=l(b.previous),a=0,f=d,r=q();f=f.getAscendant(r);)a++;return(a=m(b,a))?(d.add(a),a.filterChildren(c),!0):!1}function l(b){var c=b.children[b.children.length-1];return g(c)||"li"===c.name?l(c):b}function q(){var b=!1;return function(c){return b?!1:g(c)||"li"===c.name?g(c):(b=!0,!1)}}function m(b,c){return c?m(b.getFirst().getFirst(),--c):b}function g(b){return"ol"=== diff --git a/src/static/ckeditor/plugins/pastefromword/filter/default.js b/src/static/ckeditor/plugins/pastefromword/filter/default.js index f3b9c991..054f7d67 100644 --- a/src/static/ckeditor/plugins/pastefromword/filter/default.js +++ b/src/static/ckeditor/plugins/pastefromword/filter/default.js @@ -1,43 +1,42 @@ /* - Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved. + 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 */ -(function(){function r(){return!1}var n=CKEDITOR.tools,B=CKEDITOR.plugins.pastetools,t=B.filters.common,k=t.styles,C=t.createAttributeStack,z=t.lists.getElementIndentation,D=["o:p","xml","script","meta","link"],E="v:arc v:curve v:line v:oval v:polyline v:rect v:roundrect v:group".split(" "),A={},y=0,q={},g,p;CKEDITOR.plugins.pastetools.filters.word=q;CKEDITOR.plugins.pastefromword=q;q.rules=function(b,a,c){function e(d){(d.attributes["o:gfxdata"]||"v:group"===d.parent.name)&&l.push(d.attributes.id)} -var f=Boolean(b.match(/mso-list:\s*l\d+\s+level\d+\s+lfo\d+/)),l=[],w={root:function(d){d.filterChildren(c);CKEDITOR.plugins.pastefromword.lists.cleanup(g.createLists(d))},elementNames:[[/^\?xml:namespace$/,""],[/^v:shapetype/,""],[new RegExp(D.join("|")),""]],elements:{a:function(d){if(d.attributes.name){if("_GoBack"==d.attributes.name){delete d.name;return}if(d.attributes.name.match(/^OLE_LINK\d+$/)){delete d.name;return}}if(d.attributes.href&&d.attributes.href.match(/#.+$/)){var a=d.attributes.href.match(/#(.+)$/)[1]; -A[a]=d}d.attributes.name&&A[d.attributes.name]&&(d=A[d.attributes.name],d.attributes.href=d.attributes.href.replace(/.*#(.*)$/,"#$1"))},div:function(d){if(a.plugins.pagebreak&&d.attributes["data-cke-pagebreak"])return d;k.createStyleStack(d,c,a)},img:function(d){if(d.parent&&d.parent.attributes){var a=d.parent.attributes;(a=a.style||a.STYLE)&&a.match(/mso\-list:\s?Ignore/)&&(d.attributes["cke-ignored"]=!0)}k.mapCommonStyles(d);d.attributes.src&&d.attributes.src.match(/^file:\/\//)&&d.attributes.alt&& -d.attributes.alt.match(/^https?:\/\//)&&(d.attributes.src=d.attributes.alt);d=d.attributes["v:shapes"]?d.attributes["v:shapes"].split(" "):[];a=CKEDITOR.tools.array.every(d,function(a){return-1<l.indexOf(a)});if(d.length&&a)return!1},p:function(d){d.filterChildren(c);if(d.attributes.style&&d.attributes.style.match(/display:\s*none/i))return!1;if(g.thisIsAListItem(a,d))p.isEdgeListItem(a,d)&&p.cleanupEdgeListItem(d),g.convertToFakeListItem(a,d),n.array.reduce(d.children,function(a,d){"p"===d.name&& -(0<a&&(new CKEDITOR.htmlParser.element("br")).insertBefore(d),d.replaceWithChildren(),a+=1);return a},0);else{var b=d.getAscendant(function(a){return"ul"==a.name||"ol"==a.name}),e=n.parseCssText(d.attributes.style);b&&!b.attributes["cke-list-level"]&&e["mso-list"]&&e["mso-list"].match(/level/)&&(b.attributes["cke-list-level"]=e["mso-list"].match(/level(\d+)/)[1]);a.config.enterMode==CKEDITOR.ENTER_BR&&(delete d.name,d.add(new CKEDITOR.htmlParser.element("br")))}k.createStyleStack(d,c,a)},pre:function(d){g.thisIsAListItem(a, -d)&&g.convertToFakeListItem(a,d);k.createStyleStack(d,c,a)},h1:function(d){g.thisIsAListItem(a,d)&&g.convertToFakeListItem(a,d);k.createStyleStack(d,c,a)},h2:function(d){g.thisIsAListItem(a,d)&&g.convertToFakeListItem(a,d);k.createStyleStack(d,c,a)},h3:function(d){g.thisIsAListItem(a,d)&&g.convertToFakeListItem(a,d);k.createStyleStack(d,c,a)},h4:function(d){g.thisIsAListItem(a,d)&&g.convertToFakeListItem(a,d);k.createStyleStack(d,c,a)},h5:function(d){g.thisIsAListItem(a,d)&&g.convertToFakeListItem(a, -d);k.createStyleStack(d,c,a)},h6:function(d){g.thisIsAListItem(a,d)&&g.convertToFakeListItem(a,d);k.createStyleStack(d,c,a)},font:function(d){if(d.getHtml().match(/^\s*$/))return d.parent.type===CKEDITOR.NODE_ELEMENT&&(new CKEDITOR.htmlParser.text(" ")).insertAfter(d),!1;a&&!0===a.config.pasteFromWordRemoveFontStyles&&d.attributes.size&&delete d.attributes.size;CKEDITOR.dtd.tr[d.parent.name]&&CKEDITOR.tools.arrayCompare(CKEDITOR.tools.object.keys(d.attributes),["class","style"])?k.createStyleStack(d, -c,a):C(d,c)},ul:function(a){if(f)return"li"==a.parent.name&&0===n.indexOf(a.parent.children,a)&&k.setStyle(a.parent,"list-style-type","none"),g.dissolveList(a),!1},li:function(d){p.correctLevelShift(d);f&&(d.attributes.style=k.normalizedStyles(d,a),k.pushStylesLower(d))},ol:function(a){if(f)return"li"==a.parent.name&&0===n.indexOf(a.parent.children,a)&&k.setStyle(a.parent,"list-style-type","none"),g.dissolveList(a),!1},span:function(d){d.filterChildren(c);d.attributes.style=k.normalizedStyles(d,a); -if(!d.attributes.style||d.attributes.style.match(/^mso\-bookmark:OLE_LINK\d+$/)||d.getHtml().match(/^(\s| )+$/))return t.elements.replaceWithChildren(d),!1;d.attributes.style.match(/FONT-FAMILY:\s*Symbol/i)&&d.forEach(function(a){a.value=a.value.replace(/ /g,"")},CKEDITOR.NODE_TEXT,!0);k.createStyleStack(d,c,a)},"v:imagedata":r,"v:shape":function(a){var b=!1;if(null===a.getFirst("v:imagedata"))e(a);else{a.parent.find(function(c){"img"==c.name&&c.attributes&&c.attributes["v:shapes"]==a.attributes.id&& -(b=!0)},!0);if(b)return!1;var f="";"v:group"===a.parent.name?e(a):(a.forEach(function(a){a.attributes&&a.attributes.src&&(f=a.attributes.src)},CKEDITOR.NODE_ELEMENT,!0),a.filterChildren(c),a.name="img",a.attributes.src=a.attributes.src||f,delete a.attributes.type)}},style:function(){return!1},object:function(a){return!(!a.attributes||!a.attributes.data)},br:function(b){if(a.plugins.pagebreak&&(b=n.parseCssText(b.attributes.style,!0),"always"===b["page-break-before"]||"page"===b["break-before"]))return b= -CKEDITOR.plugins.pagebreak.createElement(a),CKEDITOR.htmlParser.fragment.fromHtml(b.getOuterHtml()).children[0]}},attributes:{style:function(b,c){return k.normalizedStyles(c,a)||!1},"class":function(a){a=a.replace(/(el\d+)|(font\d+)|msonormal|msolistparagraph\w*/ig,"");return""===a?!1:a},cellspacing:r,cellpadding:r,border:r,"v:shapes":r,"o:spid":r},comment:function(a){a.match(/\[if.* supportFields.*\]/)&&y++;"[endif]"==a&&(y=0<y?y-1:0);return!1},text:function(a,b){if(y)return"";var c=b.parent&&b.parent.parent; -return c&&c.attributes&&c.attributes.style&&c.attributes.style.match(/mso-list:\s*ignore/i)?a.replace(/ /g," "):a}};n.array.forEach(E,function(a){w.elements[a]=e});return w};q.lists={thisIsAListItem:function(b,a){return p.isEdgeListItem(b,a)||a.attributes.style&&a.attributes.style.match(/mso\-list:\s?l\d/)&&"li"!==a.parent.name||a.attributes["cke-dissolved"]||a.getHtml().match(/<!\-\-\[if !supportLists]\-\->/)?!0:!1},convertToFakeListItem:function(b,a){p.isDegenerateListItem(b,a)&&p.assignListLevels(b, -a);this.getListItemInfo(a);if(!a.attributes["cke-dissolved"]){var c;a.forEach(function(a){!c&&"img"==a.name&&a.attributes["cke-ignored"]&&"*"==a.attributes.alt&&(c="·",a.remove())},CKEDITOR.NODE_ELEMENT);a.forEach(function(a){c||a.value.match(/^ /)||(c=a.value)},CKEDITOR.NODE_TEXT);if("undefined"==typeof c)return;a.attributes["cke-symbol"]=c.replace(/(?: | ).*$/,"");g.removeSymbolText(a)}var e=a.attributes&&n.parseCssText(a.attributes.style);if(e["margin-left"]){var f=e["margin-left"],l=a.attributes["cke-list-level"]; -(f=Math.max(CKEDITOR.tools.convertToPx(f)-40*l,0))?e["margin-left"]=f+"px":delete e["margin-left"];a.attributes.style=CKEDITOR.tools.writeCssText(e)}a.name="cke:li"},convertToRealListItems:function(b){var a=[];b.forEach(function(b){"cke:li"==b.name&&(b.name="li",a.push(b))},CKEDITOR.NODE_ELEMENT,!1);return a},removeSymbolText:function(b){var a=b.attributes["cke-symbol"],c=b.findOne(function(b){return b.value&&-1<b.value.indexOf(a)},!0),e;c&&(c.value=c.value.replace(a,""),e=c.parent,e.getHtml().match(/^(\s| )*$/)&& -e!==b?e.remove():c.value||c.remove())},setListSymbol:function(b,a,c){c=c||1;var e=n.parseCssText(b.attributes.style);if("ol"==b.name){if(b.attributes.type||e["list-style-type"])return;var f={"[ivx]":"lower-roman","[IVX]":"upper-roman","[a-z]":"lower-alpha","[A-Z]":"upper-alpha","\\d":"decimal"},l;for(l in f)if(g.getSubsectionSymbol(a).match(new RegExp(l))){e["list-style-type"]=f[l];break}b.attributes["cke-list-style-type"]=e["list-style-type"]}else f={"·":"disc",o:"circle","§":"square"},!e["list-style-type"]&& -f[a]&&(e["list-style-type"]=f[a]);g.setListSymbol.removeRedundancies(e,c);(b.attributes.style=CKEDITOR.tools.writeCssText(e))||delete b.attributes.style},setListStart:function(b){for(var a=[],c=0,e=0;e<b.children.length;e++)a.push(b.children[e].attributes["cke-symbol"]||"");a[0]||c++;switch(b.attributes["cke-list-style-type"]){case "lower-roman":case "upper-roman":b.attributes.start=g.toArabic(g.getSubsectionSymbol(a[c]))-c;break;case "lower-alpha":case "upper-alpha":b.attributes.start=g.getSubsectionSymbol(a[c]).replace(/\W/g, -"").toLowerCase().charCodeAt(0)-96-c;break;case "decimal":b.attributes.start=parseInt(g.getSubsectionSymbol(a[c]),10)-c||1}"1"==b.attributes.start&&delete b.attributes.start;delete b.attributes["cke-list-style-type"]},numbering:{toNumber:function(b,a){function c(a){a=a.toUpperCase();for(var b=1,c=1;0<a.length;c*=26)b+="ABCDEFGHIJKLMNOPQRSTUVWXYZ".indexOf(a.charAt(a.length-1))*c,a=a.substr(0,a.length-1);return b}function e(a){var b=[[1E3,"M"],[900,"CM"],[500,"D"],[400,"CD"],[100,"C"],[90,"XC"],[50, -"L"],[40,"XL"],[10,"X"],[9,"IX"],[5,"V"],[4,"IV"],[1,"I"]];a=a.toUpperCase();for(var c=b.length,d=0,e=0;e<c;++e)for(var g=b[e],u=g[1].length;a.substr(0,u)==g[1];a=a.substr(u))d+=g[0];return d}return"decimal"==a?Number(b):"upper-roman"==a||"lower-roman"==a?e(b.toUpperCase()):"lower-alpha"==a||"upper-alpha"==a?c(b):1},getStyle:function(b){b=b.slice(0,1);var a={i:"lower-roman",v:"lower-roman",x:"lower-roman",l:"lower-roman",m:"lower-roman",I:"upper-roman",V:"upper-roman",X:"upper-roman",L:"upper-roman", -M:"upper-roman"}[b];a||(a="decimal",b.match(/[a-z]/)&&(a="lower-alpha"),b.match(/[A-Z]/)&&(a="upper-alpha"));return a}},getSubsectionSymbol:function(b){return(b.match(/([\da-zA-Z]+).?$/)||["placeholder","1"])[1]},setListDir:function(b){var a=0,c=0;b.forEach(function(b){"li"==b.name&&("rtl"==(b.attributes.dir||b.attributes.DIR||"").toLowerCase()?c++:a++)},CKEDITOR.ELEMENT_NODE);c>a&&(b.attributes.dir="rtl")},createList:function(b){return(b.attributes["cke-symbol"].match(/([\da-np-zA-NP-Z]).?/)||[])[1]? -new CKEDITOR.htmlParser.element("ol"):new CKEDITOR.htmlParser.element("ul")},createLists:function(b){function a(a){return CKEDITOR.tools.array.reduce(a,function(a,b){if(b.attributes&&b.attributes.style)var c=CKEDITOR.tools.parseCssText(b.attributes.style)["margin-left"];return c?a+parseInt(c,10):a},0)}var c,e,f,l=g.convertToRealListItems(b);if(0===l.length)return[];var k=g.groupLists(l);for(b=0;b<k.length;b++){var d=k[b],h=d[0];for(f=0;f<d.length;f++)if(1==d[f].attributes["cke-list-level"]){h=d[f]; -break}var h=[g.createList(h)],m=h[0],u=[h[0]];m.insertBefore(d[0]);for(f=0;f<d.length;f++){c=d[f];for(e=c.attributes["cke-list-level"];e>h.length;){var v=g.createList(c),x=m.children;0<x.length?x[x.length-1].add(v):(x=new CKEDITOR.htmlParser.element("li",{style:"list-style-type:none"}),x.add(v),m.add(x));h.push(v);u.push(v);m=v;e==h.length&&g.setListSymbol(v,c.attributes["cke-symbol"],e)}for(;e<h.length;)h.pop(),m=h[h.length-1],e==h.length&&g.setListSymbol(m,c.attributes["cke-symbol"],e);c.remove(); -m.add(c)}h[0].children.length&&(f=h[0].children[0].attributes["cke-symbol"],!f&&1<h[0].children.length&&(f=h[0].children[1].attributes["cke-symbol"]),f&&g.setListSymbol(h[0],f));for(f=0;f<u.length;f++)g.setListStart(u[f]);for(f=0;f<d.length;f++)this.determineListItemValue(d[f])}CKEDITOR.tools.array.forEach(l,function(b){for(var c=[],d=b.parent;d;)"li"===d.name&&c.push(d),d=d.parent;var c=a(c),e;c&&(b.attributes=b.attributes||{},d=CKEDITOR.tools.parseCssText(b.attributes.style),e=d["margin-left"]|| -0,(e=Math.max(parseInt(e,10)-c,0))?d["margin-left"]=e+"px":delete d["margin-left"],b.attributes.style=CKEDITOR.tools.writeCssText(d))});return l},cleanup:function(b){var a=["cke-list-level","cke-symbol","cke-list-id","cke-indentation","cke-dissolved"],c,e;for(c=0;c<b.length;c++)for(e=0;e<a.length;e++)delete b[c].attributes[a[e]]},determineListItemValue:function(b){if("ol"===b.parent.name){var a=this.calculateValue(b),c=b.attributes["cke-symbol"].match(/[a-z0-9]+/gi),e;c&&(c=c[c.length-1],e=b.parent.attributes["cke-list-style-type"]|| -this.numbering.getStyle(c),c=this.numbering.toNumber(c,e),c!==a&&(b.attributes.value=c))}},calculateValue:function(b){if(!b.parent)return 1;var a=b.parent;b=b.getIndex();var c=null,e,f,g;for(g=b;0<=g&&null===c;g--)f=a.children[g],f.attributes&&void 0!==f.attributes.value&&(e=g,c=parseInt(f.attributes.value,10));null===c&&(c=void 0!==a.attributes.start?parseInt(a.attributes.start,10):1,e=0);return c+(b-e)},dissolveList:function(b){function a(b){return 50<=b?"l"+a(b-50):40<=b?"xl"+a(b-40):10<=b?"x"+ -a(b-10):9==b?"ix":5<=b?"v"+a(b-5):4==b?"iv":1<=b?"i"+a(b-1):""}function c(a,b){function c(b,d){return b&&b.parent?a(b.parent)?c(b.parent,d+1):c(b.parent,d):d}return c(b,0)}var e=function(a){return function(b){return b.name==a}},f=function(a){return e("ul")(a)||e("ol")(a)},g=CKEDITOR.tools.array,w=[],d,h;b.forEach(function(a){w.push(a)},CKEDITOR.NODE_ELEMENT,!1);d=g.filter(w,e("li"));var m=g.filter(w,f);g.forEach(m,function(b){var d=b.attributes.type,h=parseInt(b.attributes.start,10)||1,m=c(f,b)+1; -d||(d=n.parseCssText(b.attributes.style)["list-style-type"]);g.forEach(g.filter(b.children,e("li")),function(c,e){var f;switch(d){case "disc":f="·";break;case "circle":f="o";break;case "square":f="§";break;case "1":case "decimal":f=h+e+".";break;case "a":case "lower-alpha":f=String.fromCharCode(97+h-1+e)+".";break;case "A":case "upper-alpha":f=String.fromCharCode(65+h-1+e)+".";break;case "i":case "lower-roman":f=a(h+e)+".";break;case "I":case "upper-roman":f=a(h+e).toUpperCase()+".";break;default:f= -"ul"==b.name?"·":h+e+"."}c.attributes["cke-symbol"]=f;c.attributes["cke-list-level"]=m})});d=g.reduce(d,function(a,b){var c=b.children[0];if(c&&c.name&&c.attributes.style&&c.attributes.style.match(/mso-list:/i)){k.pushStylesLower(b,{"list-style-type":!0,display:!0});var d=n.parseCssText(c.attributes.style,!0);k.setStyle(b,"mso-list",d["mso-list"],!0);k.setStyle(c,"mso-list","");delete b["cke-list-level"];(c=d.display?"display":d.DISPLAY?"DISPLAY":"")&&k.setStyle(b,"display",d[c],!0)}if(1===b.children.length&& -f(b.children[0]))return a;b.name="p";b.attributes["cke-dissolved"]=!0;a.push(b);return a},[]);for(h=d.length-1;0<=h;h--)d[h].insertAfter(b);for(h=m.length-1;0<=h;h--)delete m[h].name},groupLists:function(b){var a,c,e=[[b[0]]],f=e[0];c=b[0];c.attributes["cke-indentation"]=c.attributes["cke-indentation"]||z(c);for(a=1;a<b.length;a++){c=b[a];var l=b[a-1];c.attributes["cke-indentation"]=c.attributes["cke-indentation"]||z(c);c.previous!==l&&(g.chopDiscontinuousLists(f,e),e.push(f=[]));f.push(c)}g.chopDiscontinuousLists(f, -e);return e},chopDiscontinuousLists:function(b,a){for(var c={},e=[[]],f,l=0;l<b.length;l++){var k=c[b[l].attributes["cke-list-level"]],d=this.getListItemInfo(b[l]),h,m;k?(m=k.type.match(/alpha/)&&7==k.index?"alpha":m,m="o"==b[l].attributes["cke-symbol"]&&14==k.index?"alpha":m,h=g.getSymbolInfo(b[l].attributes["cke-symbol"],m),d=this.getListItemInfo(b[l]),(k.type!=h.type||f&&d.id!=f.id&&!this.isAListContinuation(b[l]))&&e.push([])):h=g.getSymbolInfo(b[l].attributes["cke-symbol"]);for(f=parseInt(b[l].attributes["cke-list-level"], -10)+1;20>f;f++)c[f]&&delete c[f];c[b[l].attributes["cke-list-level"]]=h;e[e.length-1].push(b[l]);f=d}[].splice.apply(a,[].concat([n.indexOf(a,b),1],e))},isAListContinuation:function(b){var a=b;do if((a=a.previous)&&a.type===CKEDITOR.NODE_ELEMENT){if(void 0===a.attributes["cke-list-level"])break;if(a.attributes["cke-list-level"]===b.attributes["cke-list-level"])return a.attributes["cke-list-id"]===b.attributes["cke-list-id"]}while(a);return!1},toArabic:function(b){return b.match(/[ivxl]/i)?b.match(/^l/i)? -50+g.toArabic(b.slice(1)):b.match(/^lx/i)?40+g.toArabic(b.slice(1)):b.match(/^x/i)?10+g.toArabic(b.slice(1)):b.match(/^ix/i)?9+g.toArabic(b.slice(2)):b.match(/^v/i)?5+g.toArabic(b.slice(1)):b.match(/^iv/i)?4+g.toArabic(b.slice(2)):b.match(/^i/i)?1+g.toArabic(b.slice(1)):g.toArabic(b.slice(1)):0},getSymbolInfo:function(b,a){var c=b.toUpperCase()==b?"upper-":"lower-",e={"·":["disc",-1],o:["circle",-2],"§":["square",-3]};if(b in e||a&&a.match(/(disc|circle|square)/))return{index:e[b][1],type:e[b][0]}; -if(b.match(/\d/))return{index:b?parseInt(g.getSubsectionSymbol(b),10):0,type:"decimal"};b=b.replace(/\W/g,"").toLowerCase();return!a&&b.match(/[ivxl]+/i)||a&&"alpha"!=a||"roman"==a?{index:g.toArabic(b),type:c+"roman"}:b.match(/[a-z]/i)?{index:b.charCodeAt(0)-97,type:c+"alpha"}:{index:-1,type:"disc"}},getListItemInfo:function(b){if(void 0!==b.attributes["cke-list-id"])return{id:b.attributes["cke-list-id"],level:b.attributes["cke-list-level"]};var a=n.parseCssText(b.attributes.style)["mso-list"],c= -{id:"0",level:"1"};a&&(a+=" ",c.level=a.match(/level(.+?)\s+/)[1],c.id=a.match(/l(\d+?)\s+/)[1]);b.attributes["cke-list-level"]=void 0!==b.attributes["cke-list-level"]?b.attributes["cke-list-level"]:c.level;b.attributes["cke-list-id"]=c.id;return c}};g=q.lists;q.images={extractFromRtf:function(b){var a=[],c=/\{\\pict[\s\S]+?\\bliptag\-?\d+(\\blipupi\-?\d+)?(\{\\\*\\blipuid\s?[\da-fA-F]+)?[\s\}]*?/,e;b=b.match(new RegExp("(?:("+c.source+"))([\\da-fA-F\\s]+)\\}","g"));if(!b)return a;for(var f=0;f<b.length;f++)if(c.test(b[f])){if(-1!== -b[f].indexOf("\\pngblip"))e="image/png";else if(-1!==b[f].indexOf("\\jpegblip"))e="image/jpeg";else continue;a.push({hex:e?b[f].replace(c,"").replace(/[^\da-fA-F]/g,""):null,type:e})}return a},extractTagsFromHtml:function(b){for(var a=/<img[^>]+src="([^"]+)[^>]+/g,c=[],e;e=a.exec(b);)c.push(e[1]);return c}};q.heuristics={isEdgeListItem:function(b,a){if(!CKEDITOR.env.edge||!b.config.pasteFromWord_heuristicsEdgeList)return!1;var c="";a.forEach&&a.forEach(function(a){c+=a.value},CKEDITOR.NODE_TEXT); -return c.match(/^(?: | )*\(?[a-zA-Z0-9]+?[\.\)](?: | ){2,}/)?!0:p.isDegenerateListItem(b,a)},cleanupEdgeListItem:function(b){var a=!1;b.forEach(function(b){a||(b.value=b.value.replace(/^(?: |[\s])+/,""),b.value.length&&(a=!0))},CKEDITOR.NODE_TEXT)},isDegenerateListItem:function(b,a){return!!a.attributes["cke-list-level"]||a.attributes.style&&!a.attributes.style.match(/mso\-list/)&&!!a.find(function(b){if(b.type==CKEDITOR.NODE_ELEMENT&&a.name.match(/h\d/i)&&b.getHtml().match(/^[a-zA-Z0-9]+?[\.\)]$/))return!0; -var e=n.parseCssText(b.attributes&&b.attributes.style,!0);if(!e)return!1;var f=e["font-family"]||"";return(e.font||e["font-size"]||"").match(/7pt/i)&&!!b.previous||f.match(/symbol/i)},!0).length},assignListLevels:function(b,a){if(!a.attributes||void 0===a.attributes["cke-list-level"]){for(var c=[z(a)],e=[a],f=[],g=CKEDITOR.tools.array,k=g.map;a.next&&a.next.attributes&&!a.next.attributes["cke-list-level"]&&p.isDegenerateListItem(b,a.next);)a=a.next,c.push(z(a)),e.push(a);var d=k(c,function(a,b){return 0=== -b?0:a-c[b-1]}),h=this.guessIndentationStep(g.filter(c,function(a){return 0!==a})),f=k(c,function(a){return Math.round(a/h)});-1!==g.indexOf(f,0)&&(f=k(f,function(a){return a+1}));g.forEach(e,function(a,b){a.attributes["cke-list-level"]=f[b]});return{indents:c,levels:f,diffs:d}}},guessIndentationStep:function(b){return b.length?Math.min.apply(null,b):null},correctLevelShift:function(b){if(this.isShifted(b)){var a=CKEDITOR.tools.array.filter(b.children,function(a){return"ul"==a.name||"ol"==a.name}), -c=CKEDITOR.tools.array.reduce(a,function(a,b){return(b.children&&1==b.children.length&&p.isShifted(b.children[0])?[b]:b.children).concat(a)},[]);CKEDITOR.tools.array.forEach(a,function(a){a.remove()});CKEDITOR.tools.array.forEach(c,function(a){b.add(a)});delete b.name}},isShifted:function(b){return"li"!==b.name?!1:0===CKEDITOR.tools.array.filter(b.children,function(a){return a.name&&("ul"==a.name||"ol"==a.name||"p"==a.name&&0===a.children.length)?!1:!0}).length}};p=q.heuristics;g.setListSymbol.removeRedundancies= -function(b,a){(1===a&&"disc"===b["list-style-type"]||"decimal"===b["list-style-type"])&&delete b["list-style-type"]};CKEDITOR.cleanWord=CKEDITOR.pasteFilters.word=B.createFilter({rules:[t.rules,q.rules],additionalTransforms:function(b){CKEDITOR.plugins.clipboard.isCustomDataTypesSupported&&(b=t.styles.inliner.inline(b).getBody().getHtml());return b.replace(/<!\[/g,"\x3c!--[").replace(/\]>/g,"]--\x3e")}});CKEDITOR.config.pasteFromWord_heuristicsEdgeList=!0})(); \ No newline at end of file +(function(){function r(){return!1}var n=CKEDITOR.tools,B=CKEDITOR.plugins.pastetools,t=B.filters.common,k=t.styles,C=t.createAttributeStack,z=t.lists.getElementIndentation,D=["o:p","xml","script","meta","link"],E="v:arc v:curve v:line v:oval v:polyline v:rect v:roundrect v:group".split(" "),A={},y=0,q={},g,p;CKEDITOR.plugins.pastetools.filters.word=q;CKEDITOR.plugins.pastefromword=q;q.rules=function(c,b,d){function e(a){(a.attributes["o:gfxdata"]||"v:group"===a.parent.name)&&l.push(a.attributes.id)} +var f=Boolean(c.match(/mso-list:\s*l\d+\s+level\d+\s+lfo\d+/)),l=[],w={root:function(a){a.filterChildren(d);CKEDITOR.plugins.pastefromword.lists.cleanup(g.createLists(a))},elementNames:[[/^\?xml:namespace$/,""],[/^v:shapetype/,""],[new RegExp(D.join("|")),""]],elements:{a:function(a){if(a.attributes.name){if("_GoBack"==a.attributes.name){delete a.name;return}if(a.attributes.name.match(/^OLE_LINK\d+$/)){delete a.name;return}}if(a.attributes.href&&a.attributes.href.match(/#.+$/)){var b=a.attributes.href.match(/#(.+)$/)[1]; +A[b]=a}a.attributes.name&&A[a.attributes.name]&&(a=A[a.attributes.name],a.attributes.href=a.attributes.href.replace(/.*#(.*)$/,"#$1"))},div:function(a){if(b.plugins.pagebreak&&a.attributes["data-cke-pagebreak"])return a;k.createStyleStack(a,d,b)},img:function(a){if(a.parent&&a.parent.attributes){var b=a.parent.attributes;(b=b.style||b.STYLE)&&b.match(/mso\-list:\s?Ignore/)&&(a.attributes["cke-ignored"]=!0)}k.mapCommonStyles(a);a.attributes.src&&a.attributes.src.match(/^file:\/\//)&&a.attributes.alt&& +a.attributes.alt.match(/^https?:\/\//)&&(a.attributes.src=a.attributes.alt);a=a.attributes["v:shapes"]?a.attributes["v:shapes"].split(" "):[];b=CKEDITOR.tools.array.every(a,function(a){return-1<l.indexOf(a)});if(a.length&&b)return!1},p:function(a){a.filterChildren(d);if(a.attributes.style&&a.attributes.style.match(/display:\s*none/i))return!1;if(g.thisIsAListItem(b,a))p.isEdgeListItem(b,a)&&p.cleanupEdgeListItem(a),g.convertToFakeListItem(b,a),n.array.reduce(a.children,function(a,b){"p"===b.name&& +(0<a&&(new CKEDITOR.htmlParser.element("br")).insertBefore(b),b.replaceWithChildren(),a+=1);return a},0);else{var c=a.getAscendant(function(a){return"ul"==a.name||"ol"==a.name}),f=n.parseCssText(a.attributes.style);c&&!c.attributes["cke-list-level"]&&f["mso-list"]&&f["mso-list"].match(/level/)&&(c.attributes["cke-list-level"]=f["mso-list"].match(/level(\d+)/)[1]);b.config.enterMode==CKEDITOR.ENTER_BR&&(delete a.name,a.add(new CKEDITOR.htmlParser.element("br")))}k.createStyleStack(a,d,b)},pre:function(a){g.thisIsAListItem(b, +a)&&g.convertToFakeListItem(b,a);k.createStyleStack(a,d,b)},h1:function(a){g.thisIsAListItem(b,a)&&g.convertToFakeListItem(b,a);k.createStyleStack(a,d,b)},h2:function(a){g.thisIsAListItem(b,a)&&g.convertToFakeListItem(b,a);k.createStyleStack(a,d,b)},h3:function(a){g.thisIsAListItem(b,a)&&g.convertToFakeListItem(b,a);k.createStyleStack(a,d,b)},h4:function(a){g.thisIsAListItem(b,a)&&g.convertToFakeListItem(b,a);k.createStyleStack(a,d,b)},h5:function(a){g.thisIsAListItem(b,a)&&g.convertToFakeListItem(b, +a);k.createStyleStack(a,d,b)},h6:function(a){g.thisIsAListItem(b,a)&&g.convertToFakeListItem(b,a);k.createStyleStack(a,d,b)},font:function(a){if(a.getHtml().match(/^\s*$/))return a.parent.type===CKEDITOR.NODE_ELEMENT&&(new CKEDITOR.htmlParser.text(" ")).insertAfter(a),!1;b&&!0===b.config.pasteFromWordRemoveFontStyles&&a.attributes.size&&delete a.attributes.size;CKEDITOR.dtd.tr[a.parent.name]&&CKEDITOR.tools.arrayCompare(CKEDITOR.tools.object.keys(a.attributes),["class","style"])?k.createStyleStack(a, +d,b):C(a,d)},ul:function(a){if(f)return"li"==a.parent.name&&0===n.indexOf(a.parent.children,a)&&k.setStyle(a.parent,"list-style-type","none"),g.dissolveList(a),!1},li:function(a){p.correctLevelShift(a);f&&(a.attributes.style=k.normalizedStyles(a,b),k.pushStylesLower(a))},ol:function(a){if(f)return"li"==a.parent.name&&0===n.indexOf(a.parent.children,a)&&k.setStyle(a.parent,"list-style-type","none"),g.dissolveList(a),!1},span:function(a){a.filterChildren(d);a.attributes.style=k.normalizedStyles(a,b); +if(!a.attributes.style||a.attributes.style.match(/^mso\-bookmark:OLE_LINK\d+$/)||a.getHtml().match(/^(\s| )+$/))return t.elements.replaceWithChildren(a),!1;a.attributes.style.match(/FONT-FAMILY:\s*Symbol/i)&&a.forEach(function(a){a.value=a.value.replace(/ /g,"")},CKEDITOR.NODE_TEXT,!0);k.createStyleStack(a,d,b)},"v:imagedata":r,"v:shape":function(a){var b=!1;if(null===a.getFirst("v:imagedata"))e(a);else{a.parent.find(function(c){"img"==c.name&&c.attributes&&c.attributes["v:shapes"]==a.attributes.id&& +(b=!0)},!0);if(b)return!1;var c="";"v:group"===a.parent.name?e(a):(a.forEach(function(a){a.attributes&&a.attributes.src&&(c=a.attributes.src)},CKEDITOR.NODE_ELEMENT,!0),a.filterChildren(d),a.name="img",a.attributes.src=a.attributes.src||c,delete a.attributes.type)}},style:function(){return!1},object:function(a){return!(!a.attributes||!a.attributes.data)},br:function(a){if(b.plugins.pagebreak&&(a=n.parseCssText(a.attributes.style,!0),"always"===a["page-break-before"]||"page"===a["break-before"]))return a= +CKEDITOR.plugins.pagebreak.createElement(b),CKEDITOR.htmlParser.fragment.fromHtml(a.getOuterHtml()).children[0]}},attributes:{style:function(a,c){return k.normalizedStyles(c,b)||!1},"class":function(a){a=a.replace(/(el\d+)|(font\d+)|msonormal|msolistparagraph\w*/ig,"");return""===a?!1:a},cellspacing:r,cellpadding:r,border:r,"v:shapes":r,"o:spid":r},comment:function(a){a.match(/\[if.* supportFields.*\]/)&&y++;"[endif]"==a&&(y=0<y?y-1:0);return!1},text:function(a,b){if(y)return"";var c=b.parent&&b.parent.parent; +return c&&c.attributes&&c.attributes.style&&c.attributes.style.match(/mso-list:\s*ignore/i)?a.replace(/ /g," "):a}};n.array.forEach(E,function(a){w.elements[a]=e});return w};q.lists={thisIsAListItem:function(c,b){return p.isEdgeListItem(c,b)||b.attributes.style&&b.attributes.style.match(/mso\-list:\s?l\d/)&&"li"!==b.parent.name||b.attributes["cke-dissolved"]||b.getHtml().match(/<!\-\-\[if !supportLists]\-\->/)?!0:!1},convertToFakeListItem:function(c,b){p.isDegenerateListItem(c,b)&&p.assignListLevels(c, +b);this.getListItemInfo(b);if(!b.attributes["cke-dissolved"]){var d;b.forEach(function(b){!d&&"img"==b.name&&b.attributes["cke-ignored"]&&"*"==b.attributes.alt&&(d="·",b.remove())},CKEDITOR.NODE_ELEMENT);b.forEach(function(b){d||b.value.match(/^ /)||(d=b.value)},CKEDITOR.NODE_TEXT);if("undefined"==typeof d)return;b.attributes["cke-symbol"]=d.replace(/(?: | ).*$/,"");g.removeSymbolText(b)}var e=b.attributes&&n.parseCssText(b.attributes.style);if(e["margin-left"]){var f=e["margin-left"],l=b.attributes["cke-list-level"]; +(f=Math.max(CKEDITOR.tools.convertToPx(f)-40*l,0))?e["margin-left"]=f+"px":delete e["margin-left"];b.attributes.style=CKEDITOR.tools.writeCssText(e)}b.name="cke:li"},convertToRealListItems:function(c){var b=[];c.forEach(function(c){"cke:li"==c.name&&(c.name="li",b.push(c))},CKEDITOR.NODE_ELEMENT,!1);return b},removeSymbolText:function(c){var b=c.attributes["cke-symbol"],d=c.findOne(function(c){return c.value&&-1<c.value.indexOf(b)},!0),e;d&&(d.value=d.value.replace(b,""),e=d.parent,e.getHtml().match(/^(\s| )*$/)&& +e!==c?e.remove():d.value||d.remove())},setListSymbol:function(c,b,d){d=d||1;var e=n.parseCssText(c.attributes.style);if("ol"==c.name){if(c.attributes.type||e["list-style-type"])return;var f={"[ivx]":"lower-roman","[IVX]":"upper-roman","[a-z]":"lower-alpha","[A-Z]":"upper-alpha","\\d":"decimal"},l;for(l in f)if(g.getSubsectionSymbol(b).match(new RegExp(l))){e["list-style-type"]=f[l];break}c.attributes["cke-list-style-type"]=e["list-style-type"]}else f={"·":"disc",o:"circle","§":"square"},!e["list-style-type"]&& +f[b]&&(e["list-style-type"]=f[b]);g.setListSymbol.removeRedundancies(e,d);(c.attributes.style=CKEDITOR.tools.writeCssText(e))||delete c.attributes.style},setListStart:function(c){for(var b=[],d=0,e=0;e<c.children.length;e++)b.push(c.children[e].attributes["cke-symbol"]||"");b[0]||d++;switch(c.attributes["cke-list-style-type"]){case "lower-roman":case "upper-roman":c.attributes.start=g.toArabic(g.getSubsectionSymbol(b[d]))-d;break;case "lower-alpha":case "upper-alpha":c.attributes.start=g.getSubsectionSymbol(b[d]).replace(/\W/g, +"").toLowerCase().charCodeAt(0)-96-d;break;case "decimal":c.attributes.start=parseInt(g.getSubsectionSymbol(b[d]),10)-d||1}"1"==c.attributes.start&&delete c.attributes.start;delete c.attributes["cke-list-style-type"]},numbering:{toNumber:function(c,b){function d(b){b=b.toUpperCase();for(var c=1,d=1;0<b.length;d*=26)c+="ABCDEFGHIJKLMNOPQRSTUVWXYZ".indexOf(b.charAt(b.length-1))*d,b=b.substr(0,b.length-1);return c}function e(b){var c=[[1E3,"M"],[900,"CM"],[500,"D"],[400,"CD"],[100,"C"],[90,"XC"],[50, +"L"],[40,"XL"],[10,"X"],[9,"IX"],[5,"V"],[4,"IV"],[1,"I"]];b=b.toUpperCase();for(var d=c.length,a=0,e=0;e<d;++e)for(var g=c[e],u=g[1].length;b.substr(0,u)==g[1];b=b.substr(u))a+=g[0];return a}return"decimal"==b?Number(c):"upper-roman"==b||"lower-roman"==b?e(c.toUpperCase()):"lower-alpha"==b||"upper-alpha"==b?d(c):1},getStyle:function(c){c=c.slice(0,1);var b={i:"lower-roman",v:"lower-roman",x:"lower-roman",l:"lower-roman",m:"lower-roman",I:"upper-roman",V:"upper-roman",X:"upper-roman",L:"upper-roman", +M:"upper-roman"}[c];b||(b="decimal",c.match(/[a-z]/)&&(b="lower-alpha"),c.match(/[A-Z]/)&&(b="upper-alpha"));return b}},getSubsectionSymbol:function(c){return(c.match(/([\da-zA-Z]+).?$/)||["placeholder","1"])[1]},setListDir:function(c){var b=0,d=0;c.forEach(function(c){"li"==c.name&&("rtl"==(c.attributes.dir||c.attributes.DIR||"").toLowerCase()?d++:b++)},CKEDITOR.ELEMENT_NODE);d>b&&(c.attributes.dir="rtl")},createList:function(c){return(c.attributes["cke-symbol"].match(/([\da-np-zA-NP-Z]).?/)||[])[1]? +new CKEDITOR.htmlParser.element("ol"):new CKEDITOR.htmlParser.element("ul")},createLists:function(c){function b(b){return CKEDITOR.tools.array.reduce(b,function(b,a){if(a.attributes&&a.attributes.style)var c=CKEDITOR.tools.parseCssText(a.attributes.style)["margin-left"];return c?b+parseInt(c,10):b},0)}var d,e,f,l=g.convertToRealListItems(c);if(0===l.length)return[];var k=g.groupLists(l);for(c=0;c<k.length;c++){var a=k[c],h=a[0];for(f=0;f<a.length;f++)if(1==a[f].attributes["cke-list-level"]){h=a[f]; +break}var h=[g.createList(h)],m=h[0],u=[h[0]];m.insertBefore(a[0]);for(f=0;f<a.length;f++){d=a[f];for(e=d.attributes["cke-list-level"];e>h.length;){var v=g.createList(d),x=m.children;0<x.length?x[x.length-1].add(v):(x=new CKEDITOR.htmlParser.element("li",{style:"list-style-type:none"}),x.add(v),m.add(x));h.push(v);u.push(v);m=v;e==h.length&&g.setListSymbol(v,d.attributes["cke-symbol"],e)}for(;e<h.length;)h.pop(),m=h[h.length-1],e==h.length&&g.setListSymbol(m,d.attributes["cke-symbol"],e);d.remove(); +m.add(d)}h[0].children.length&&(f=h[0].children[0].attributes["cke-symbol"],!f&&1<h[0].children.length&&(f=h[0].children[1].attributes["cke-symbol"]),f&&g.setListSymbol(h[0],f));for(f=0;f<u.length;f++)g.setListStart(u[f]);for(f=0;f<a.length;f++)this.determineListItemValue(a[f])}CKEDITOR.tools.array.forEach(l,function(a){for(var c=[],d=a.parent;d;)"li"===d.name&&c.push(d),d=d.parent;var c=b(c),e;c&&(a.attributes=a.attributes||{},d=CKEDITOR.tools.parseCssText(a.attributes.style),e=d["margin-left"]|| +0,(e=Math.max(parseInt(e,10)-c,0))?d["margin-left"]=e+"px":delete d["margin-left"],a.attributes.style=CKEDITOR.tools.writeCssText(d))});return l},cleanup:function(c){var b=["cke-list-level","cke-symbol","cke-list-id","cke-indentation","cke-dissolved"],d,e;for(d=0;d<c.length;d++)for(e=0;e<b.length;e++)delete c[d].attributes[b[e]]},determineListItemValue:function(c){if("ol"===c.parent.name){var b=this.calculateValue(c),d=c.attributes["cke-symbol"].match(/[a-z0-9]+/gi),e;d&&(d=d[d.length-1],e=c.parent.attributes["cke-list-style-type"]|| +this.numbering.getStyle(d),d=this.numbering.toNumber(d,e),d!==b&&(c.attributes.value=d))}},calculateValue:function(c){if(!c.parent)return 1;var b=c.parent;c=c.getIndex();var d=null,e,f,g;for(g=c;0<=g&&null===d;g--)f=b.children[g],f.attributes&&void 0!==f.attributes.value&&(e=g,d=parseInt(f.attributes.value,10));null===d&&(d=void 0!==b.attributes.start?parseInt(b.attributes.start,10):1,e=0);return d+(c-e)},dissolveList:function(c){function b(a){return 50<=a?"l"+b(a-50):40<=a?"xl"+b(a-40):10<=a?"x"+ +b(a-10):9==a?"ix":5<=a?"v"+b(a-5):4==a?"iv":1<=a?"i"+b(a-1):""}function d(a,b){function c(b,d){return b&&b.parent?a(b.parent)?c(b.parent,d+1):c(b.parent,d):d}return c(b,0)}var e=function(b){return function(a){return a.name==b}},f=function(b){return e("ul")(b)||e("ol")(b)},g=CKEDITOR.tools.array,w=[],a,h;c.forEach(function(b){w.push(b)},CKEDITOR.NODE_ELEMENT,!1);a=g.filter(w,e("li"));var m=g.filter(w,f);g.forEach(m,function(a){var c=a.attributes.type,h=parseInt(a.attributes.start,10)||1,m=d(f,a)+1; +c||(c=n.parseCssText(a.attributes.style)["list-style-type"]);g.forEach(g.filter(a.children,e("li")),function(d,e){var f;switch(c){case "disc":f="·";break;case "circle":f="o";break;case "square":f="§";break;case "1":case "decimal":f=h+e+".";break;case "a":case "lower-alpha":f=String.fromCharCode(97+h-1+e)+".";break;case "A":case "upper-alpha":f=String.fromCharCode(65+h-1+e)+".";break;case "i":case "lower-roman":f=b(h+e)+".";break;case "I":case "upper-roman":f=b(h+e).toUpperCase()+".";break;default:f= +"ul"==a.name?"·":h+e+"."}d.attributes["cke-symbol"]=f;d.attributes["cke-list-level"]=m})});a=g.reduce(a,function(b,a){var c=a.children[0];if(c&&c.name&&c.attributes.style&&c.attributes.style.match(/mso-list:/i)){k.pushStylesLower(a,{"list-style-type":!0,display:!0});var d=n.parseCssText(c.attributes.style,!0);k.setStyle(a,"mso-list",d["mso-list"],!0);k.setStyle(c,"mso-list","");delete a["cke-list-level"];(c=d.display?"display":d.DISPLAY?"DISPLAY":"")&&k.setStyle(a,"display",d[c],!0)}if(1===a.children.length&& +f(a.children[0]))return b;a.name="p";a.attributes["cke-dissolved"]=!0;b.push(a);return b},[]);for(h=a.length-1;0<=h;h--)a[h].insertAfter(c);for(h=m.length-1;0<=h;h--)delete m[h].name},groupLists:function(c){var b,d,e=[[c[0]]],f=e[0];d=c[0];d.attributes["cke-indentation"]=d.attributes["cke-indentation"]||z(d);for(b=1;b<c.length;b++){d=c[b];var l=c[b-1];d.attributes["cke-indentation"]=d.attributes["cke-indentation"]||z(d);d.previous!==l&&(g.chopDiscontinuousLists(f,e),e.push(f=[]));f.push(d)}g.chopDiscontinuousLists(f, +e);return e},chopDiscontinuousLists:function(c,b){for(var d={},e=[[]],f,l=0;l<c.length;l++){var k=d[c[l].attributes["cke-list-level"]],a=this.getListItemInfo(c[l]),h,m;k?(m=k.type.match(/alpha/)&&7==k.index?"alpha":m,m="o"==c[l].attributes["cke-symbol"]&&14==k.index?"alpha":m,h=g.getSymbolInfo(c[l].attributes["cke-symbol"],m),a=this.getListItemInfo(c[l]),(k.type!=h.type||f&&a.id!=f.id&&!this.isAListContinuation(c[l]))&&e.push([])):h=g.getSymbolInfo(c[l].attributes["cke-symbol"]);for(f=parseInt(c[l].attributes["cke-list-level"], +10)+1;20>f;f++)d[f]&&delete d[f];d[c[l].attributes["cke-list-level"]]=h;e[e.length-1].push(c[l]);f=a}[].splice.apply(b,[].concat([n.indexOf(b,c),1],e))},isAListContinuation:function(c){var b=c;do if((b=b.previous)&&b.type===CKEDITOR.NODE_ELEMENT){if(void 0===b.attributes["cke-list-level"])break;if(b.attributes["cke-list-level"]===c.attributes["cke-list-level"])return b.attributes["cke-list-id"]===c.attributes["cke-list-id"]}while(b);return!1},toArabic:function(c){return c.match(/[ivxl]/i)?c.match(/^l/i)? +50+g.toArabic(c.slice(1)):c.match(/^lx/i)?40+g.toArabic(c.slice(1)):c.match(/^x/i)?10+g.toArabic(c.slice(1)):c.match(/^ix/i)?9+g.toArabic(c.slice(2)):c.match(/^v/i)?5+g.toArabic(c.slice(1)):c.match(/^iv/i)?4+g.toArabic(c.slice(2)):c.match(/^i/i)?1+g.toArabic(c.slice(1)):g.toArabic(c.slice(1)):0},getSymbolInfo:function(c,b){var d=c.toUpperCase()==c?"upper-":"lower-",e={"·":["disc",-1],o:["circle",-2],"§":["square",-3]};if(c in e||b&&b.match(/(disc|circle|square)/))return{index:e[c][1],type:e[c][0]}; +if(c.match(/\d/))return{index:c?parseInt(g.getSubsectionSymbol(c),10):0,type:"decimal"};c=c.replace(/\W/g,"").toLowerCase();return!b&&c.match(/[ivxl]+/i)||b&&"alpha"!=b||"roman"==b?{index:g.toArabic(c),type:d+"roman"}:c.match(/[a-z]/i)?{index:c.charCodeAt(0)-97,type:d+"alpha"}:{index:-1,type:"disc"}},getListItemInfo:function(c){if(void 0!==c.attributes["cke-list-id"])return{id:c.attributes["cke-list-id"],level:c.attributes["cke-list-level"]};var b=n.parseCssText(c.attributes.style)["mso-list"],d= +{id:"0",level:"1"};b&&(b+=" ",d.level=b.match(/level(.+?)\s+/)[1],d.id=b.match(/l(\d+?)\s+/)[1]);c.attributes["cke-list-level"]=void 0!==c.attributes["cke-list-level"]?c.attributes["cke-list-level"]:d.level;c.attributes["cke-list-id"]=d.id;return d}};g=q.lists;q.heuristics={isEdgeListItem:function(c,b){if(!CKEDITOR.env.edge||!c.config.pasteFromWord_heuristicsEdgeList)return!1;var d="";b.forEach&&b.forEach(function(b){d+=b.value},CKEDITOR.NODE_TEXT);return d.match(/^(?: | )*\(?[a-zA-Z0-9]+?[\.\)](?: | ){2,}/)? +!0:p.isDegenerateListItem(c,b)},cleanupEdgeListItem:function(c){var b=!1;c.forEach(function(c){b||(c.value=c.value.replace(/^(?: |[\s])+/,""),c.value.length&&(b=!0))},CKEDITOR.NODE_TEXT)},isDegenerateListItem:function(c,b){return!!b.attributes["cke-list-level"]||b.attributes.style&&!b.attributes.style.match(/mso\-list/)&&!!b.find(function(c){if(c.type==CKEDITOR.NODE_ELEMENT&&b.name.match(/h\d/i)&&c.getHtml().match(/^[a-zA-Z0-9]+?[\.\)]$/))return!0;var e=n.parseCssText(c.attributes&&c.attributes.style, +!0);if(!e)return!1;var f=e["font-family"]||"";return(e.font||e["font-size"]||"").match(/7pt/i)&&!!c.previous||f.match(/symbol/i)},!0).length},assignListLevels:function(c,b){if(!b.attributes||void 0===b.attributes["cke-list-level"]){for(var d=[z(b)],e=[b],f=[],g=CKEDITOR.tools.array,k=g.map;b.next&&b.next.attributes&&!b.next.attributes["cke-list-level"]&&p.isDegenerateListItem(c,b.next);)b=b.next,d.push(z(b)),e.push(b);var a=k(d,function(a,b){return 0===b?0:a-d[b-1]}),h=this.guessIndentationStep(g.filter(d, +function(a){return 0!==a})),f=k(d,function(a){return Math.round(a/h)});-1!==g.indexOf(f,0)&&(f=k(f,function(a){return a+1}));g.forEach(e,function(a,b){a.attributes["cke-list-level"]=f[b]});return{indents:d,levels:f,diffs:a}}},guessIndentationStep:function(c){return c.length?Math.min.apply(null,c):null},correctLevelShift:function(c){if(this.isShifted(c)){var b=CKEDITOR.tools.array.filter(c.children,function(b){return"ul"==b.name||"ol"==b.name}),d=CKEDITOR.tools.array.reduce(b,function(b,c){return(c.children&& +1==c.children.length&&p.isShifted(c.children[0])?[c]:c.children).concat(b)},[]);CKEDITOR.tools.array.forEach(b,function(b){b.remove()});CKEDITOR.tools.array.forEach(d,function(b){c.add(b)});delete c.name}},isShifted:function(c){return"li"!==c.name?!1:0===CKEDITOR.tools.array.filter(c.children,function(b){return b.name&&("ul"==b.name||"ol"==b.name||"p"==b.name&&0===b.children.length)?!1:!0}).length}};p=q.heuristics;g.setListSymbol.removeRedundancies=function(c,b){(1===b&&"disc"===c["list-style-type"]|| +"decimal"===c["list-style-type"])&&delete c["list-style-type"]};CKEDITOR.cleanWord=CKEDITOR.pasteFilters.word=B.createFilter({rules:[t.rules,q.rules],additionalTransforms:function(c){CKEDITOR.plugins.clipboard.isCustomDataTypesSupported&&(c=t.styles.inliner.inline(c).getBody().getHtml());return c.replace(/<!\[/g,"\x3c!--[").replace(/\]>/g,"]--\x3e")}});CKEDITOR.config.pasteFromWord_heuristicsEdgeList=!0})(); \ No newline at end of file diff --git a/src/static/ckeditor/plugins/pastetools/filter/common.js b/src/static/ckeditor/plugins/pastetools/filter/common.js index c2e83385..bce639a9 100644 --- a/src/static/ckeditor/plugins/pastetools/filter/common.js +++ b/src/static/ckeditor/plugins/pastetools/filter/common.js @@ -1,22 +1,24 @@ /* - Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved. + 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 */ -(function(){function q(a){return/%$/.test(a)?a:a+"px"}function r(a){var b=a.margin?"margin":a.MARGIN?"MARGIN":!1,c,e;if(b){e=CKEDITOR.tools.style.parse.margin(a[b]);for(c in e)a["margin-"+c]=e[c];delete a[b]}}function t(a){var b="background-color:transparent;background:transparent;background-color:none;background:none;background-position:initial initial;background-repeat:initial initial;caret-color;font-family:-webkit-standard;font-variant-caps;letter-spacing:normal;orphans;widows;text-transform:none;word-spacing:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;text-indent:0px;margin-bottom:0in".split(";"), -c=CKEDITOR.tools.parseCssText(a.attributes.style),e,f;for(e in c)f=e+":"+c[e],CKEDITOR.tools.array.some(b,function(a){return f.substring(0,a.length).toLowerCase()===a})&&delete c[e];c=CKEDITOR.tools.writeCssText(c);""!==c?a.attributes.style=c:delete a.attributes.style}function u(a){a=a.config.font_names;var b=[];if(!a||!a.length)return!1;b=CKEDITOR.tools.array.map(a.split(";"),function(a){return-1===a.indexOf("/")?a:a.split("/")[1]});return b.length?b:!1}function v(a,b){var c=a.split(",");return CKEDITOR.tools.array.find(b, -function(a){for(var f=0;f<c.length;f++)if(-1===a.indexOf(CKEDITOR.tools.trim(c[f])))return!1;return!0})||a}var h,l=CKEDITOR.tools,p={};CKEDITOR.plugins.pastetools.filters.common=p;p.rules=function(a,b,c){var e=u(b);return{elements:{"^":function(a){t(a);if(a.attributes.bgcolor){var b=CKEDITOR.tools.parseCssText(a.attributes.style);b["background-color"]||(b["background-color"]=a.attributes.bgcolor,a.attributes.style=CKEDITOR.tools.writeCssText(b))}},span:function(a){if(a.hasClass("Apple-converted-space"))return new CKEDITOR.htmlParser.text(" ")}, -table:function(a){a.filterChildren(c);var b=a.parent,d=b&&b.parent,e,k;if(b.name&&"div"===b.name&&b.attributes.align&&1===l.object.keys(b.attributes).length&&1===b.children.length){a.attributes.align=b.attributes.align;e=b.children.splice(0);a.remove();for(k=e.length-1;0<=k;k--)d.add(e[k],b.getIndex());b.remove()}h.convertStyleToPx(a)},tr:function(a){a.attributes={}},td:function(a){var g=a.getAscendant("table"),g=l.parseCssText(g.attributes.style,!0),d=g.background;d&&h.setStyle(a,"background",d, -!0);(g=g["background-color"])&&h.setStyle(a,"background-color",g,!0);var g=l.parseCssText(a.attributes.style,!0),d=g.border?CKEDITOR.tools.style.border.fromCssRule(g.border):{},d=l.style.border.splitCssValues(g,d),e=CKEDITOR.tools.clone(g),k;for(k in e)0==k.indexOf("border")&&delete e[k];a.attributes.style=CKEDITOR.tools.writeCssText(e);g.background&&(k=CKEDITOR.tools.style.parse.background(g.background),k.color&&(h.setStyle(a,"background-color",k.color,!0),h.setStyle(a,"background","")));for(var m in d)k= -g[m]?CKEDITOR.tools.style.border.fromCssRule(g[m]):d[m],"none"===k.style?h.setStyle(a,m,"none"):h.setStyle(a,m,k.toString());h.mapCommonStyles(a);h.convertStyleToPx(a);h.createStyleStack(a,c,b,/margin|text\-align|padding|list\-style\-type|width|height|border|white\-space|vertical\-align|background/i)},font:function(a){a.attributes.face&&e&&(a.attributes.face=v(a.attributes.face,e))}}}};p.styles={setStyle:function(a,b,c,e){var f=l.parseCssText(a.attributes.style);e&&f[b]||(""===c?delete f[b]:f[b]= -c,a.attributes.style=CKEDITOR.tools.writeCssText(f))},convertStyleToPx:function(a){var b=a.attributes.style;b&&(a.attributes.style=b.replace(/\d+(\.\d+)?pt/g,function(a){return CKEDITOR.tools.convertToPx(a)+"px"}))},mapStyles:function(a,b){for(var c in b)if(a.attributes[c]){if("function"===typeof b[c])b[c](a.attributes[c]);else h.setStyle(a,b[c],a.attributes[c]);delete a.attributes[c]}},mapCommonStyles:function(a){return h.mapStyles(a,{vAlign:function(b){h.setStyle(a,"vertical-align",b)},width:function(b){h.setStyle(a, -"width",q(b))},height:function(b){h.setStyle(a,"height",q(b))}})},normalizedStyles:function(a,b){var c="background-color:transparent border-image:none color:windowtext direction:ltr mso- visibility:visible div:border:none".split(" "),e="font-family font font-size color background-color line-height text-decoration".split(" "),f=function(){for(var a=[],b=0;b<arguments.length;b++)arguments[b]&&a.push(arguments[b]);return-1!==l.indexOf(c,a.join(":"))},g=!0===CKEDITOR.plugins.pastetools.getConfigValue(b, -"removeFontStyles"),d=l.parseCssText(a.attributes.style);"cke:li"==a.name&&(d["TEXT-INDENT"]&&d.MARGIN?(a.attributes["cke-indentation"]=p.lists.getElementIndentation(a),d.MARGIN=d.MARGIN.replace(/(([\w\.]+ ){3,3})[\d\.]+(\w+$)/,"$10$3")):delete d["TEXT-INDENT"],delete d["text-indent"]);for(var n=l.object.keys(d),k=0;k<n.length;k++){var m=n[k].toLowerCase(),h=d[n[k]],q=CKEDITOR.tools.indexOf;(g&&-1!==q(e,m.toLowerCase())||f(null,m,h)||f(null,m.replace(/\-.*$/,"-"))||f(null,m)||f(a.name,m,h)||f(a.name, -m.replace(/\-.*$/,"-"))||f(a.name,m)||f(h))&&delete d[n[k]]}var t=CKEDITOR.plugins.pastetools.getConfigValue(b,"keepZeroMargins");r(d);(function(){CKEDITOR.tools.array.forEach(["top","right","bottom","left"],function(a){a="margin-"+a;if(a in d){var b=CKEDITOR.tools.convertToPx(d[a]);b||t?d[a]=b?b+"px":0:delete d[a]}})})();return CKEDITOR.tools.writeCssText(d)},createStyleStack:function(a,b,c,e){var f=[];a.filterChildren(b);for(b=a.children.length-1;0<=b;b--)f.unshift(a.children[b]),a.children[b].remove(); -h.sortStyles(a);b=l.parseCssText(h.normalizedStyles(a,c));c=a;var g="span"===a.name,d;for(d in b)if(!d.match(e||/margin((?!-)|-left|-top|-bottom|-right)|text-indent|text-align|width|border|padding/i))if(g)g=!1;else{var n=new CKEDITOR.htmlParser.element("span");n.attributes.style=d+":"+b[d];c.add(n);c=n;delete b[d]}CKEDITOR.tools.isEmpty(b)?delete a.attributes.style:a.attributes.style=CKEDITOR.tools.writeCssText(b);for(b=0;b<f.length;b++)c.add(f[b])},sortStyles:function(a){for(var b=["border","border-bottom", -"font-size","background"],c=l.parseCssText(a.attributes.style),e=l.object.keys(c),f=[],g=[],d=0;d<e.length;d++)-1!==l.indexOf(b,e[d].toLowerCase())?f.push(e[d]):g.push(e[d]);f.sort(function(a,c){var d=l.indexOf(b,a.toLowerCase()),f=l.indexOf(b,c.toLowerCase());return d-f});e=[].concat(f,g);f={};for(d=0;d<e.length;d++)f[e[d]]=c[e[d]];a.attributes.style=CKEDITOR.tools.writeCssText(f)},pushStylesLower:function(a,b,c){if(!a.attributes.style||0===a.children.length)return!1;b=b||{};var e={"list-style-type":!0, -width:!0,height:!0,border:!0,"border-":!0},f=l.parseCssText(a.attributes.style),g;for(g in f)if(!(g.toLowerCase()in e||e[g.toLowerCase().replace(/\-.*$/,"-")]||g.toLowerCase()in b)){for(var d=!1,n=0;n<a.children.length;n++){var k=a.children[n];if(k.type===CKEDITOR.NODE_TEXT&&c){var m=new CKEDITOR.htmlParser.element("span");m.setHtml(k.value);k.replaceWith(m);k=m}k.type===CKEDITOR.NODE_ELEMENT&&(d=!0,h.setStyle(k,g,f[g]))}d&&delete f[g]}a.attributes.style=CKEDITOR.tools.writeCssText(f);return!0},inliner:{filtered:"break-before break-after break-inside page-break page-break-before page-break-after page-break-inside".split(" "), -parse:function(a){function b(a){var b=new CKEDITOR.dom.element("style"),c=new CKEDITOR.dom.element("iframe");c.hide();CKEDITOR.document.getBody().append(c);c.$.contentDocument.documentElement.appendChild(b.$);b.$.textContent=a;c.remove();return b.$.sheet}function c(a){var b=a.indexOf("{"),c=a.indexOf("}");return e(a.substring(b+1,c),!0)}var e=CKEDITOR.tools.parseCssText,f=h.inliner.filter,g=a.is?a.$.sheet:b(a);a=[];var d;if(g)for(g=g.cssRules,d=0;d<g.length;d++)g[d].type===window.CSSRule.STYLE_RULE&& -a.push({selector:g[d].selectorText,styles:f(c(g[d].cssText))});return a},filter:function(a){var b=h.inliner.filtered,c=l.array.indexOf,e={},f;for(f in a)-1===c(b,f)&&(e[f]=a[f]);return e},sort:function(a){return a.sort(function(a){var c=CKEDITOR.tools.array.map(a,function(a){return a.selector});return function(a,b){var g=-1!==(""+a.selector).indexOf(".")?1:0,g=(-1!==(""+b.selector).indexOf(".")?1:0)-g;return 0!==g?g:c.indexOf(b.selector)-c.indexOf(a.selector)}}(a))},inline:function(a){var b=h.inliner.parse, -c=h.inliner.sort,e=function(a){a=(new DOMParser).parseFromString(a,"text/html");return new CKEDITOR.dom.document(a)}(a);a=e.find("style");c=c(function(a){var c=[],d;for(d=0;d<a.count();d++)c=c.concat(b(a.getItem(d)));return c}(a));CKEDITOR.tools.array.forEach(c,function(a){var b=a.styles;a=e.find(a.selector);var c,h,k;r(b);for(k=0;k<a.count();k++)c=a.getItem(k),h=CKEDITOR.tools.parseCssText(c.getAttribute("style")),r(h),h=CKEDITOR.tools.extend({},h,b),c.setAttribute("style",CKEDITOR.tools.writeCssText(h))}); -return e}}};h=p.styles;p.lists={getElementIndentation:function(a){a=l.parseCssText(a.attributes.style);if(a.margin||a.MARGIN){a.margin=a.margin||a.MARGIN;var b={styles:{margin:a.margin}};CKEDITOR.filter.transformationsTools.splitMarginShorthand(b);a["margin-left"]=b.styles["margin-left"]}return parseInt(l.convertToPx(a["margin-left"]||"0px"),10)}};p.elements={replaceWithChildren:function(a){for(var b=a.children.length-1;0<=b;b--)a.children[b].insertAfter(a)}};p.createAttributeStack=function(a,b){var c, -e=[];a.filterChildren(b);for(c=a.children.length-1;0<=c;c--)e.unshift(a.children[c]),a.children[c].remove();c=a.attributes;var f=a,g=!0,d;for(d in c)if(g)g=!1;else{var h=new CKEDITOR.htmlParser.element(a.name);h.attributes[d]=c[d];f.add(h);f=h;delete c[d]}for(c=0;c<e.length;c++)f.add(e[c])};p.parseShorthandMargins=r})(); \ No newline at end of file +(function(){function q(a,b,c){b+=c;for(var d=a[b],e=/[\s]/;d&&e.test(d);)b+=c,d=a[b];return d}function r(a){return/%$/.test(a)?a:a+"px"}function t(a){var b=a.margin?"margin":a.MARGIN?"MARGIN":!1,c,d;if(b){d=CKEDITOR.tools.style.parse.margin(a[b]);for(c in d)a["margin-"+c]=d[c];delete a[b]}}function u(a){var b="background-color:transparent;background:transparent;background-color:none;background:none;background-position:initial initial;background-repeat:initial initial;caret-color;font-family:-webkit-standard;font-variant-caps;letter-spacing:normal;orphans;widows;text-transform:none;word-spacing:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;text-indent:0px;margin-bottom:0in".split(";"), +c=CKEDITOR.tools.parseCssText(a.attributes.style),d,e;for(d in c)e=d+":"+c[d],CKEDITOR.tools.array.some(b,function(a){return e.substring(0,a.length).toLowerCase()===a})&&delete c[d];c=CKEDITOR.tools.writeCssText(c);""!==c?a.attributes.style=c:delete a.attributes.style}function v(a){a=a.config.font_names;var b=[];if(!a||!a.length)return!1;b=CKEDITOR.tools.array.map(a.split(";"),function(a){return-1===a.indexOf("/")?a:a.split("/")[1]});return b.length?b:!1}function w(a,b){var c=a.split(",");return CKEDITOR.tools.array.find(b, +function(a){for(var e=0;e<c.length;e++)if(-1===a.indexOf(CKEDITOR.tools.trim(c[e])))return!1;return!0})||a}var g,m=CKEDITOR.tools,p={};CKEDITOR.plugins.pastetools.filters.common=p;p.rules=function(a,b,c){var d=v(b);return{elements:{"^":function(a){u(a);if(a.attributes.bgcolor){var b=CKEDITOR.tools.parseCssText(a.attributes.style);b["background-color"]||(b["background-color"]=a.attributes.bgcolor,a.attributes.style=CKEDITOR.tools.writeCssText(b))}},span:function(a){if(a.hasClass("Apple-converted-space"))return new CKEDITOR.htmlParser.text(" ")}, +table:function(a){a.filterChildren(c);var b=a.parent,f=b&&b.parent,d,h;if(b.name&&"div"===b.name&&b.attributes.align&&1===m.object.keys(b.attributes).length&&1===b.children.length){a.attributes.align=b.attributes.align;d=b.children.splice(0);a.remove();for(h=d.length-1;0<=h;h--)f.add(d[h],b.getIndex());b.remove()}g.convertStyleToPx(a)},tr:function(a){a.attributes={}},td:function(a){var d=a.getAscendant("table"),d=m.parseCssText(d.attributes.style,!0),f=d.background;f&&g.setStyle(a,"background",f, +!0);(d=d["background-color"])&&g.setStyle(a,"background-color",d,!0);var d=m.parseCssText(a.attributes.style,!0),f=d.border?CKEDITOR.tools.style.border.fromCssRule(d.border):{},f=m.style.border.splitCssValues(d,f),l=CKEDITOR.tools.clone(d),h;for(h in l)0==h.indexOf("border")&&delete l[h];a.attributes.style=CKEDITOR.tools.writeCssText(l);d.background&&(h=CKEDITOR.tools.style.parse.background(d.background),h.color&&(g.setStyle(a,"background-color",h.color,!0),g.setStyle(a,"background","")));for(var n in f)h= +d[n]?CKEDITOR.tools.style.border.fromCssRule(d[n]):f[n],"none"===h.style?g.setStyle(a,n,"none"):g.setStyle(a,n,h.toString());g.mapCommonStyles(a);g.convertStyleToPx(a);g.createStyleStack(a,c,b,/margin|text\-align|padding|list\-style\-type|width|height|border|white\-space|vertical\-align|background/i)},font:function(a){a.attributes.face&&d&&(a.attributes.face=w(a.attributes.face,d))}}}};p.styles={setStyle:function(a,b,c,d){var e=m.parseCssText(a.attributes.style);d&&e[b]||(""===c?delete e[b]:e[b]= +c,a.attributes.style=CKEDITOR.tools.writeCssText(e))},convertStyleToPx:function(a){var b=a.attributes.style;b&&(a.attributes.style=b.replace(/\d+(\.\d+)?pt/g,function(a){return CKEDITOR.tools.convertToPx(a)+"px"}))},mapStyles:function(a,b){for(var c in b)if(a.attributes[c]){if("function"===typeof b[c])b[c](a.attributes[c]);else g.setStyle(a,b[c],a.attributes[c]);delete a.attributes[c]}},mapCommonStyles:function(a){return g.mapStyles(a,{vAlign:function(b){g.setStyle(a,"vertical-align",b)},width:function(b){g.setStyle(a, +"width",r(b))},height:function(b){g.setStyle(a,"height",r(b))}})},normalizedStyles:function(a,b){var c="background-color:transparent border-image:none color:windowtext direction:ltr mso- visibility:visible div:border:none".split(" "),d="font-family font font-size color background-color line-height text-decoration".split(" "),e=function(){for(var a=[],b=0;b<arguments.length;b++)arguments[b]&&a.push(arguments[b]);return-1!==m.indexOf(c,a.join(":"))},k=!0===CKEDITOR.plugins.pastetools.getConfigValue(b, +"removeFontStyles"),f=m.parseCssText(a.attributes.style);"cke:li"==a.name&&(f["TEXT-INDENT"]&&f.MARGIN?(a.attributes["cke-indentation"]=p.lists.getElementIndentation(a),f.MARGIN=f.MARGIN.replace(/(([\w\.]+ ){3,3})[\d\.]+(\w+$)/,"$10$3")):delete f["TEXT-INDENT"],delete f["text-indent"]);for(var l=m.object.keys(f),h=0;h<l.length;h++){var n=l[h].toLowerCase(),g=f[l[h]],q=CKEDITOR.tools.indexOf;(k&&-1!==q(d,n.toLowerCase())||e(null,n,g)||e(null,n.replace(/\-.*$/,"-"))||e(null,n)||e(a.name,n,g)||e(a.name, +n.replace(/\-.*$/,"-"))||e(a.name,n)||e(g))&&delete f[l[h]]}var r=CKEDITOR.plugins.pastetools.getConfigValue(b,"keepZeroMargins");t(f);(function(){CKEDITOR.tools.array.forEach(["top","right","bottom","left"],function(a){a="margin-"+a;if(a in f){var b=CKEDITOR.tools.convertToPx(f[a]);b||r?f[a]=b?b+"px":0:delete f[a]}})})();return CKEDITOR.tools.writeCssText(f)},createStyleStack:function(a,b,c,d){var e=[];a.filterChildren(b);for(b=a.children.length-1;0<=b;b--)e.unshift(a.children[b]),a.children[b].remove(); +g.sortStyles(a);b=m.parseCssText(g.normalizedStyles(a,c));c=a;var k="span"===a.name,f;for(f in b)if(!f.match(d||/margin((?!-)|-left|-top|-bottom|-right)|text-indent|text-align|width|border|padding/i))if(k)k=!1;else{var l=new CKEDITOR.htmlParser.element("span");l.attributes.style=f+":"+b[f];c.add(l);c=l;delete b[f]}CKEDITOR.tools.isEmpty(b)?delete a.attributes.style:a.attributes.style=CKEDITOR.tools.writeCssText(b);for(b=0;b<e.length;b++)c.add(e[b])},sortStyles:function(a){for(var b=["border","border-bottom", +"font-size","background"],c=m.parseCssText(a.attributes.style),d=m.object.keys(c),e=[],k=[],f=0;f<d.length;f++)-1!==m.indexOf(b,d[f].toLowerCase())?e.push(d[f]):k.push(d[f]);e.sort(function(a,c){var d=m.indexOf(b,a.toLowerCase()),e=m.indexOf(b,c.toLowerCase());return d-e});d=[].concat(e,k);e={};for(f=0;f<d.length;f++)e[d[f]]=c[d[f]];a.attributes.style=CKEDITOR.tools.writeCssText(e)},pushStylesLower:function(a,b,c){if(!a.attributes.style||0===a.children.length)return!1;b=b||{};var d={"list-style-type":!0, +width:!0,height:!0,border:!0,"border-":!0},e=m.parseCssText(a.attributes.style),k;for(k in e)if(!(k.toLowerCase()in d||d[k.toLowerCase().replace(/\-.*$/,"-")]||k.toLowerCase()in b)){for(var f=!1,l=0;l<a.children.length;l++){var h=a.children[l];if(h.type===CKEDITOR.NODE_TEXT&&c){var n=new CKEDITOR.htmlParser.element("span");n.setHtml(h.value);h.replaceWith(n);h=n}h.type===CKEDITOR.NODE_ELEMENT&&(f=!0,g.setStyle(h,k,e[k]))}f&&delete e[k]}a.attributes.style=CKEDITOR.tools.writeCssText(e);return!0},inliner:{filtered:"break-before break-after break-inside page-break page-break-before page-break-after page-break-inside".split(" "), +parse:function(a){function b(a){var b=new CKEDITOR.dom.element("style"),c=new CKEDITOR.dom.element("iframe");c.hide();CKEDITOR.document.getBody().append(c);c.$.contentDocument.documentElement.appendChild(b.$);b.$.textContent=a;c.remove();return b.$.sheet}function c(a){var b=a.indexOf("{"),c=a.indexOf("}");return d(a.substring(b+1,c),!0)}var d=CKEDITOR.tools.parseCssText,e=g.inliner.filter,k=a.is?a.$.sheet:b(a);a=[];var f;if(k)for(k=k.cssRules,f=0;f<k.length;f++)k[f].type===window.CSSRule.STYLE_RULE&& +a.push({selector:k[f].selectorText,styles:e(c(k[f].cssText))});return a},filter:function(a){var b=g.inliner.filtered,c=m.array.indexOf,d={},e;for(e in a)-1===c(b,e)&&(d[e]=a[e]);return d},sort:function(a){return a.sort(function(a){var c=CKEDITOR.tools.array.map(a,function(a){return a.selector});return function(a,b){var k=-1!==(""+a.selector).indexOf(".")?1:0,k=(-1!==(""+b.selector).indexOf(".")?1:0)-k;return 0!==k?k:c.indexOf(b.selector)-c.indexOf(a.selector)}}(a))},inline:function(a){var b=g.inliner.parse, +c=g.inliner.sort,d=function(a){a=(new DOMParser).parseFromString(a,"text/html");return new CKEDITOR.dom.document(a)}(a);a=d.find("style");c=c(function(a){var c=[],d;for(d=0;d<a.count();d++)c=c.concat(b(a.getItem(d)));return c}(a));CKEDITOR.tools.array.forEach(c,function(a){var b=a.styles;a=d.find(a.selector);var c,g,h;t(b);for(h=0;h<a.count();h++)c=a.getItem(h),g=CKEDITOR.tools.parseCssText(c.getAttribute("style")),t(g),g=CKEDITOR.tools.extend({},g,b),c.setAttribute("style",CKEDITOR.tools.writeCssText(g))}); +return d}}};g=p.styles;p.lists={getElementIndentation:function(a){a=m.parseCssText(a.attributes.style);if(a.margin||a.MARGIN){a.margin=a.margin||a.MARGIN;var b={styles:{margin:a.margin}};CKEDITOR.filter.transformationsTools.splitMarginShorthand(b);a["margin-left"]=b.styles["margin-left"]}return parseInt(m.convertToPx(a["margin-left"]||"0px"),10)}};p.elements={replaceWithChildren:function(a){for(var b=a.children.length-1;0<=b;b--)a.children[b].insertAfter(a)}};p.createAttributeStack=function(a,b){var c, +d=[];a.filterChildren(b);for(c=a.children.length-1;0<=c;c--)d.unshift(a.children[c]),a.children[c].remove();c=a.attributes;var e=a,g=!0,f;for(f in c)if(g)g=!1;else{var l=new CKEDITOR.htmlParser.element(a.name);l.attributes[f]=c[f];e.add(l);e=l;delete c[f]}for(c=0;c<d.length;c++)e.add(d[c])};p.parseShorthandMargins=t;p.rtf={getGroups:function(a,b){for(var c=[],d,e=0;d=p.rtf.getGroup(a,b,{start:e});)e=d.end,c.push(d);return c},removeGroups:function(a,b){for(var c;c=p.rtf.getGroup(a,b);){var d=a.substring(0, +c.start);c=a.substring(c.end);a=d+c}return a},getGroup:function(a,b,c){var d=0;b=new RegExp("\\{\\\\"+b,"g");var e;c=CKEDITOR.tools.object.merge({start:0},c||{});b.lastIndex=c.start;c=b.exec(a);if(!c)return null;b=c.index;e=a[b];do{var g="{"===e&&"\\"!==q(a,b,-1)&&"\\"===q(a,b,1);e="}"===e&&"\\"!==q(a,b,-1)&&0<d;g?d++:e&&d--;e=a[++b]}while(e&&0<d);return{start:c.index,end:b,content:a.substring(c.index,b)}},extractGroupContent:function(a){var b;b=(b=a.match(/^\{\\(\w+)/))?b[1]:null;a=a.replace(/\}([^{\s]+)/g, +"} $1");a=p.rtf.removeGroups(a,"(?!"+b+")");a=CKEDITOR.tools.trim(a.replace(/^\{(\\[\w-]+\s*)+/g,""));return a.replace(/}$/,"")}}})(); \ No newline at end of file diff --git a/src/static/ckeditor/plugins/pastetools/filter/image.js b/src/static/ckeditor/plugins/pastetools/filter/image.js index 67648abf..7d0203a8 100644 --- a/src/static/ckeditor/plugins/pastetools/filter/image.js +++ b/src/static/ckeditor/plugins/pastetools/filter/image.js @@ -1,6 +1,12 @@ /* - Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved. + 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 */ -(function(){function f(b){var c=[],a=/(\{\\pict[^{}]+?|\{\\\*\\shppict\{\\pict\{\\\*[^*]+?)\\(?:jpeg|png)blip/,d;b=b.match(new RegExp("(?:("+a.source+"))([\\da-fA-F\\s]+)\\}","g"));if(!b)return c;for(var e=0;e<b.length;e++)if(a.test(b[e])){if(-1!==b[e].indexOf("\\pngblip"))d="image/png";else if(-1!==b[e].indexOf("\\jpegblip"))d="image/jpeg";else continue;c.push({hex:d?b[e].replace(a,"").replace(/[^\da-fA-F]/g,""):null,type:d})}return c}function g(b){for(var c=/<img[^>]+src="([^"]+)[^>]+/g,a=[],d;d= -c.exec(b);)a.push(d[1]);return a}CKEDITOR.pasteFilters.image=function(b,c,a){var d=[];if(!a)return b;c=g(b);if(0===c.length)return b;a=f(a);if(0===a.length)return b;CKEDITOR.tools.array.forEach(a,function(a){d.push(a.type?"data:"+a.type+";base64,"+CKEDITOR.tools.convertBytesToBase64(CKEDITOR.tools.convertHexStringToBytes(a.hex)):null)},this);if(c.length===d.length)for(a=0;a<c.length;a++)0===c[a].indexOf("file://")&&d[a]&&(b=b.replace(c[a],d[a]));return b}})(); \ No newline at end of file +(function(){function u(a,c,b){c=l(c);var e,d;if(0===c.length)return a;e=CKEDITOR.tools.array.map(c,function(a){return h(a)},this);if(b.length!==e.length)return CKEDITOR.error("pastetools-failed-image-extraction",{rtf:c.length,html:b.length}),a;for(d=0;d<b.length;d++)if(0===b[d].indexOf("file://"))if(e[d]){var k=b[d].replace(/\\/g,"\\\\");a=a.replace(new RegExp("(\x3cimg [^\x3e]*src\x3d[\"']?)"+k),"$1"+e[d])}else CKEDITOR.error("pastetools-unsupported-image",{type:c[d].type,index:d});return a}function v(a, +c,b){var e=CKEDITOR.tools.array.unique(CKEDITOR.tools.array.filter(b,function(a){return a.match(/^blob:/i)}));b=CKEDITOR.tools.array.map(e,m);CKEDITOR.tools.promise.all(b).then(function(b){CKEDITOR.tools.array.forEach(b,function(b,c){if(b){var d=e[c],d=a.editable().find('img[src\x3d"'+d+'"]').toArray();CKEDITOR.tools.array.forEach(d,function(a){a.setAttribute("src",b);a.setAttribute("data-cke-saved-src",b)},this)}else CKEDITOR.error("pastetools-unsupported-image",{type:"blob",index:c})})});return c} +function l(a){function c(a){return"string"!==typeof a?-1:CKEDITOR.tools.array.indexOf(d,function(b){return b.id===a})}function b(a){var b=a.match(/\\blipuid (\w+)\}/);a=a.match(/\\bliptag(-?\d+)/);return b?b[1]:a?a[1]:null}var e=CKEDITOR.plugins.pastetools.filters.common.rtf,d=[];a=e.removeGroups(a,"(?:(?:header|footer)[lrf]?|nonshppict|shprslt)");a=e.getGroups(a,"pict");if(!a)return d;for(var k=0;k<a.length;k++){var f=a[k].content,h=b(f),n=t(f),g=c(h),p=-1!==g&&d[g].hex,l=p&&d[g].type===n,p=p&&d[g].type!== +n&&g===d.length-1,m=-1!==f.indexOf("\\defshp"),q=-1!==CKEDITOR.tools.array.indexOf(CKEDITOR.pasteFilters.image.supportedImageTypes,n),r=-1!==CKEDITOR.tools.indexOf(f,"fHorizRule");l?d.push(d[g]):p||m||r||(f={id:h,hex:q?e.extractGroupContent(f).replace(/\s/g,""):null,type:n},-1!==g?d.splice(g,1,f):d.push(f))}return d}function q(a){for(var c=/<img[^>]+src="([^"]+)[^>]+/g,b=[],e;e=c.exec(a);)b.push(e[1]);return b}function t(a){var c=CKEDITOR.tools.array.find(CKEDITOR.pasteFilters.image.recognizableImageTypes, +function(b){return b.marker.test(a)});return c?c.type:"unknown"}function h(a){var c=-1!==CKEDITOR.tools.array.indexOf(CKEDITOR.pasteFilters.image.supportedImageTypes,a.type),b=a.hex;if(!c)return null;"string"===typeof b&&(b=CKEDITOR.tools.convertHexStringToBytes(a.hex));return a.type?"data:"+a.type+";base64,"+CKEDITOR.tools.convertBytesToBase64(b):null}function m(a){return new CKEDITOR.tools.promise(function(c){CKEDITOR.ajax.load(a,function(a){a=new Uint8Array(a);var e=r(a);a=h({type:e,hex:a});c(a)}, +"arraybuffer")})}function r(a){a=a.subarray(0,4);var c=CKEDITOR.tools.array.map(a,function(a){return a.toString(16)}).join("");return(a=CKEDITOR.tools.array.find(CKEDITOR.pasteFilters.image.recognizableImageSignatures,function(a){return 0===c.indexOf(a.signature)}))?a.type:null}CKEDITOR.pasteFilters.image=function(a,c,b){var e;if(c.activeFilter&&!c.activeFilter.check("img[src]"))return a;e=q(a);return 0===e.length?a:b?u(a,b,e):v(c,a,e)};CKEDITOR.pasteFilters.image.extractFromRtf=l;CKEDITOR.pasteFilters.image.extractTagsFromHtml= +q;CKEDITOR.pasteFilters.image.getImageType=t;CKEDITOR.pasteFilters.image.createSrcWithBase64=h;CKEDITOR.pasteFilters.image.convertBlobUrlToBase64=m;CKEDITOR.pasteFilters.image.getImageTypeFromSignature=r;CKEDITOR.pasteFilters.image.supportedImageTypes=["image/png","image/jpeg","image/gif"];CKEDITOR.pasteFilters.image.recognizableImageTypes=[{marker:/\\pngblip/,type:"image/png"},{marker:/\\jpegblip/,type:"image/jpeg"},{marker:/\\emfblip/,type:"image/emf"},{marker:/\\wmetafile\d/,type:"image/wmf"}]; +CKEDITOR.pasteFilters.image.recognizableImageSignatures=[{signature:"ffd8ff",type:"image/jpeg"},{signature:"47494638",type:"image/gif"},{signature:"89504e47",type:"image/png"}]})(); \ No newline at end of file diff --git a/src/static/ckeditor/plugins/preview/images/pagebreak.gif b/src/static/ckeditor/plugins/preview/images/pagebreak.gif new file mode 100644 index 0000000000000000000000000000000000000000..a27b1684983977a00de52fc565142df615eb8c0c GIT binary patch literal 99 zcmZ?wbhEHb6lP#&_{abPGiS~O(+r9~Sr{1@m>3lQb9?3{rl<NQre`K+^QI@}<|f)2 u=$V+Bn3^)^fYgFCGcbuyNm|(@!~ZyXi<ZKMb2a(gR+n~|JWLc}um%8W_!*c0 literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/preview/preview.html b/src/static/ckeditor/plugins/preview/preview.html new file mode 100644 index 00000000..7eb8082c --- /dev/null +++ b/src/static/ckeditor/plugins/preview/preview.html @@ -0,0 +1,13 @@ +<script> + +// Prevent from DOM clobbering. +if ( typeof window.opener._cke_htmlToLoad == 'string' ) { + var doc = document; + doc.open(); + doc.write( window.opener._cke_htmlToLoad ); + doc.close(); + + delete window.opener._cke_htmlToLoad; +} + +</script> diff --git a/src/static/ckeditor/plugins/preview/styles/screen.css b/src/static/ckeditor/plugins/preview/styles/screen.css new file mode 100644 index 00000000..b9b07f3c --- /dev/null +++ b/src/static/ckeditor/plugins/preview/styles/screen.css @@ -0,0 +1,10 @@ +div[style*="page-break-after"] { + background:url( ../images/pagebreak.gif ) no-repeat center center; + clear:both; + width:100%; + border-top:#999 1px dotted; + border-bottom:#999 1px dotted; + padding:0; + height:7px; + cursor:default; +} diff --git a/src/static/ckeditor/plugins/scayt/CHANGELOG.md b/src/static/ckeditor/plugins/scayt/CHANGELOG.md new file mode 100644 index 00000000..b07ce7fc --- /dev/null +++ b/src/static/ckeditor/plugins/scayt/CHANGELOG.md @@ -0,0 +1,4 @@ +SCAYT plugin for CKEditor 4 Changelog +==================== + +The full changelog of the SCAYT plugin for CKEditor 4 can be found on our website under the [release notes](https://webspellchecker.com/release-notes/) section. diff --git a/src/static/ckeditor/plugins/scayt/LICENSE.md b/src/static/ckeditor/plugins/scayt/LICENSE.md new file mode 100644 index 00000000..610c8078 --- /dev/null +++ b/src/static/ckeditor/plugins/scayt/LICENSE.md @@ -0,0 +1,28 @@ +Software License Agreement +========================== + +**CKEditor SCAYT Plugin** +Copyright © 2012, [CKSource](http://cksource.com) - Frederico Knabben. All rights reserved. + +Licensed under the terms of any of the following licenses at your choice: + +* GNU General Public License Version 2 or later (the "GPL"): + http://www.gnu.org/licenses/gpl.html + +* GNU Lesser General Public License Version 2.1 or later (the "LGPL"): + http://www.gnu.org/licenses/lgpl.html + +* Mozilla Public License Version 1.1 or later (the "MPL"): + http://www.mozilla.org/MPL/MPL-1.1.html + +You are not required to, but if you want to explicitly declare the license you have chosen to be bound to when using, reproducing, modifying and distributing this software, just include a text file titled "legal.txt" in your version of this software, indicating your license choice. + +Sources of Intellectual Property Included in this plugin +-------------------------------------------------------- + +Where not otherwise indicated, all plugin content is authored by CKSource engineers and consists of CKSource-owned intellectual property. In some specific instances, the plugin will incorporate work done by developers outside of CKSource with their express permission. + +Trademarks +---------- + +CKEditor is a trademark of CKSource - Frederico Knabben. All other brand and product names are trademarks, registered trademarks or service marks of their respective holders. diff --git a/src/static/ckeditor/plugins/scayt/README.md b/src/static/ckeditor/plugins/scayt/README.md new file mode 100644 index 00000000..62e5e620 --- /dev/null +++ b/src/static/ckeditor/plugins/scayt/README.md @@ -0,0 +1,81 @@ +SCAYT plugin for CKEditor 4 +===================== + +SpellCheckAsYouType (SCAYT) instantly underlines spelling and grammar errors while users type. To correct spelling or grammar error, a user simply needs to right-click the marked word to select from suggested corrections. +![SCAYT Plugin for CKEditor 4 View](https://webspellchecker.com/app/images/scayt_plugin_for_ckeditor4.png) + +This plugin brings the multi-language SCAYT functionality into CKEditor 4. It is integrated by default starting with [Standard Package of CKEditor 4](https://ckeditor.com/ckeditor-4/download/). You can find it on the CKEditor 4 toolbar panel under the ABC button (Enable SCAYT). + +If your version of CKEditor doesn’t have SCAYT built-in, you can easily add it by following the steps outlined in the Get Started section. + +The default version of SCAYT plugin for CKEditor 4 is using the free services of WebSpellChecker. It is provided with a banner ad and has some [limitations](https://docs.webspellchecker.net/display/WebSpellCheckerCloud/Free+and+Paid+WebSpellChecker+Cloud+Services+Comparison+for+CKEditor). + +To lift the limitations and get rid of the banner, [obtain a license](https://webspellchecker.com/wsc-scayt-ckeditor4/#pricing). Depending on your needs, you can choose a Cloud-based or Server (self-hosted) solution. + +Demo +------------ +SCAYT plugin for CKEditor 4: https://webspellchecker.com/wsc-scayt-ckeditor4/ + +Supported languages +------------ + +The SCAYT plugin for CKEditor as a part of the free services supports the next languages for check spelling: American English, British English, Canadian English, Canadian French, Danish, Dutch, Finnish, French, German, Greek, Italian, Norwegian Bokmal, Spanish, Swedish. + +There are also additional languages and specialized dictionaries available for a commercial license, you can check the full list [here](https://webspellchecker.com/additional-dictionaries/). + +Get started +------------ + +1. Clone/copy this repository contents in a new "plugins/scayt" folder in your CKEditor installation. +2. Enable the "scayt" plugin in the CKEditor configuration file (config.js): + + config.extraPlugins = 'scayt'; + +That's all. SCAYT will appear on the editor toolbar under the ABC button and will be ready to use. + +Supported browsers +------- + +This is the list of officially supported browsers for the SCAYT plugin for CKEditor 4. SCAYT may also work in other browsers and environments but we unable to check all of them and guarantee proper work. + +* Chrome (the latest) +* Firefox (the latest) +* Safari (the latest) +* MS Edge (the latest) +* Internet Explorer 8.0 (limited support) +* Internet Explorer 9.0+ (close to full support) + +Note: All browsers are to be supported for web pages that work in Standards Mode. + +Resources +------- + +* Demo: https://webspellchecker.com/wsc-scayt-ckeditor4/ +* Documentation: https://docs.webspellchecker.net/ +* YouTube video “How to Configure CKEditor 4 and SpellCheckAsYouType Plugin”: https://youtu.be/D0ahmVjYBq8 +* Term of Service: https://webspellchecker.com/terms-of-service/ +* CKEditor’s How-Tos for SCAYT: https://ckeditor.com/docs/ckeditor4/latest/guide/dev_howtos_scayt.html +* CKEditor’s example of SCAYT: https://ckeditor.com/docs/ckeditor4/latest/examples/spellchecker.html + +Technical support or questions +------- + +In cooperation with the CKEditor team, during the past 10 years we have simplified the installation and built the extensive amount of documentation devoted to SCAYT plugin for CKEditor 4 and less. + +If you are experiencing any difficulties with the setup of the plugin, please check the links provided in the Resources section. + +Holders of an active subscription to the services or a commercial license have access to professional technical assistance directly from the WebSpellChecker team. [Contact us here](https://webspellchecker.com/contact-us/)! + +Reporting issues +------- + +Please use the [SCAYT plugin for CKEditor 4 GitHub issue page](https://github.com/WebSpellChecker/ckeditor-plugin-scayt/issues) to report bugs and feature requests. We will do our best to reply at our earliest convenience. + +License +------- + +This plugin is licensed under the terms of any of the following licenses at your choice: [GPL](http://www.gnu.org/licenses/gpl.html), [LGPL](http://www.gnu.org/licenses/lgpl.html) and [MPL](http://www.mozilla.org/MPL/MPL-1.1.html). + +See LICENSE.md for more information. + +Developed by [WebSpellChecker](https://webspellchecker.com/) in cooperation with CKSource. diff --git a/src/static/ckeditor/plugins/scayt/dialogs/dialog.css b/src/static/ckeditor/plugins/scayt/dialogs/dialog.css new file mode 100644 index 00000000..427c4b42 --- /dev/null +++ b/src/static/ckeditor/plugins/scayt/dialogs/dialog.css @@ -0,0 +1,23 @@ +div.cke_dialog_ui_scaytItemList { + border: 1px solid #c9cccf; +} + +.cke_scaytItemList-child { + position: relative; + padding: 6px 30px 6px 5px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.cke_scaytItemList-child:hover { + background: #ebebeb; +} + +.cke_scaytItemList-child .cke_scaytItemList_remove { + position: absolute; + top: 0; + right: 5px; + width: 26px; + height: 26px; +} diff --git a/src/static/ckeditor/plugins/scayt/dialogs/options.js b/src/static/ckeditor/plugins/scayt/dialogs/options.js new file mode 100644 index 00000000..e47c97e9 --- /dev/null +++ b/src/static/ckeditor/plugins/scayt/dialogs/options.js @@ -0,0 +1,32 @@ +CKEDITOR.dialog.add("scaytDialog",function(d){var c=d.scayt,k='\x3cp\x3e\x3cimg alt\x3d"logo" title\x3d"logo" src\x3d"'+c.getLogo()+'" /\x3e\x3c/p\x3e\x3cp\x3e'+c.getLocal("version")+c.getVersion()+'\x3c/p\x3e\x3cp\x3e\x3ca href\x3d"'+c.getOption("CKUserManual")+'" target\x3d"_blank" style\x3d"text-decoration: underline; color: blue; cursor: pointer;"\x3e'+c.getLocal("btn_userManual")+"\x3c/a\x3e\x3c/p\x3e\x3cp\x3e"+c.getLocal("text_copyrights")+"\x3c/p\x3e",n=CKEDITOR.document,l={isChanged:function(){return null=== +this.newLang||this.currentLang===this.newLang?!1:!0},currentLang:c.getLang(),newLang:null,reset:function(){this.currentLang=c.getLang();this.newLang=null},id:"lang"},k=[{id:"options",label:c.getLocal("tab_options"),onShow:function(){},elements:[{type:"vbox",id:"scaytOptions",children:function(){var b=c.getApplicationConfig(),a=[],g={"ignore-all-caps-words":"label_allCaps","ignore-domain-names":"label_ignoreDomainNames","ignore-words-with-mixed-cases":"label_mixedCase","ignore-words-with-numbers":"label_mixedWithDigits"}, +h;for(h in b)b={type:"checkbox"},b.id=h,b.label=c.getLocal(g[h]),a.push(b);return a}(),onShow:function(){this.getChild();for(var b=d.scayt,a=0;a<this.getChild().length;a++)this.getChild()[a].setValue(b.getApplicationConfig()[this.getChild()[a].id])}}]},{id:"langs",label:c.getLocal("tab_languages"),elements:[{id:"leftLangColumn",type:"vbox",align:"left",widths:["100"],children:[{type:"html",id:"langBox",style:"overflow: hidden; white-space: normal;margin-bottom:15px;",html:'\x3cdiv\x3e\x3cdiv style\x3d"float:left;width:45%;margin-left:5px;" id\x3d"left-col-'+ +d.name+'" class\x3d"scayt-lang-list"\x3e\x3c/div\x3e\x3cdiv style\x3d"float:left;width:45%;margin-left:15px;" id\x3d"right-col-'+d.name+'" class\x3d"scayt-lang-list"\x3e\x3c/div\x3e\x3c/div\x3e',onShow:function(){var b=d.scayt.getLang();n.getById("scaytLang_"+d.name+"_"+b).$.checked=!0}}]}]},{id:"dictionaries",label:c.getLocal("tab_dictionaries"),elements:[{type:"vbox",id:"rightCol_col__left",children:[{type:"html",id:"dictionaryNote",html:""},{type:"text",id:"dictionaryName",label:c.getLocal("label_fieldNameDic")|| +"Dictionary name",onShow:function(b){var a=b.sender,g=d.scayt;b=SCAYT.prototype.UILib;var h=a.getContentElement("dictionaries","dictionaryName").getInputElement().$;g.isLicensed()||(h.disabled=!0,b.css(h,{cursor:"not-allowed"}));setTimeout(function(){a.getContentElement("dictionaries","dictionaryNote").getElement().setText("");null!=g.getUserDictionaryName()&&""!=g.getUserDictionaryName()&&a.getContentElement("dictionaries","dictionaryName").setValue(g.getUserDictionaryName())},0)}},{type:"hbox", +id:"udButtonsHolder",align:"left",widths:["auto"],style:"width:auto;",children:[{type:"button",id:"createDic",label:c.getLocal("btn_createDic"),title:c.getLocal("btn_createDic"),onLoad:function(){this.getDialog();var b=d.scayt,a=SCAYT.prototype.UILib,g=this.getElement().$,h=this.getElement().getChild(0).$;b.isLicensed()||(a.css(g,{cursor:"not-allowed"}),a.css(h,{cursor:"not-allowed"}))},onClick:function(){var b=this.getDialog(),a=f,g=d.scayt,h=b.getContentElement("dictionaries","dictionaryName").getValue(); +g.isLicensed()&&g.createUserDictionary(h,function(e){e.error||a.toggleDictionaryState.call(b,"dictionaryState");e.dialog=b;e.command="create";e.name=h;d.fire("scaytUserDictionaryAction",e)},function(a){a.dialog=b;a.command="create";a.name=h;d.fire("scaytUserDictionaryActionError",a)})}},{type:"button",id:"restoreDic",label:c.getLocal("btn_connectDic"),title:c.getLocal("btn_connectDic"),onLoad:function(){this.getDialog();var b=d.scayt,a=SCAYT.prototype.UILib,g=this.getElement().$,h=this.getElement().getChild(0).$; +b.isLicensed()||(a.css(g,{cursor:"not-allowed"}),a.css(h,{cursor:"not-allowed"}))},onClick:function(){var b=this.getDialog(),a=d.scayt,g=f,h=b.getContentElement("dictionaries","dictionaryName").getValue();a.isLicensed()&&a.restoreUserDictionary(h,function(a){a.dialog=b;a.error||g.toggleDictionaryState.call(b,"dictionaryState");a.command="restore";a.name=h;d.fire("scaytUserDictionaryAction",a)},function(a){a.dialog=b;a.command="restore";a.name=h;d.fire("scaytUserDictionaryActionError",a)})}},{type:"button", +id:"disconnectDic",label:c.getLocal("btn_disconnectDic"),title:c.getLocal("btn_disconnectDic"),onClick:function(){var b=this.getDialog(),a=d.scayt,g=f,h=b.getContentElement("dictionaries","dictionaryName"),e=h.getValue();a.isLicensed()&&(a.disconnectFromUserDictionary({}),h.setValue(""),g.toggleDictionaryState.call(b,"initialState"),d.fire("scaytUserDictionaryAction",{dialog:b,command:"disconnect",name:e}))}},{type:"button",id:"removeDic",label:c.getLocal("btn_deleteDic"),title:c.getLocal("btn_deleteDic"), +onClick:function(){var b=this.getDialog(),a=d.scayt,g=f,h=b.getContentElement("dictionaries","dictionaryName"),e=h.getValue();a.isLicensed()&&a.removeUserDictionary(e,function(a){h.setValue("");a.error||g.toggleDictionaryState.call(b,"initialState");a.dialog=b;a.command="remove";a.name=e;d.fire("scaytUserDictionaryAction",a)},function(a){a.dialog=b;a.command="remove";a.name=e;d.fire("scaytUserDictionaryActionError",a)})}},{type:"button",id:"renameDic",label:c.getLocal("btn_renameDic"),title:c.getLocal("btn_renameDic"), +onClick:function(){var b=this.getDialog(),a=d.scayt,g=b.getContentElement("dictionaries","dictionaryName").getValue();a.isLicensed()&&a.renameUserDictionary(g,function(a){a.dialog=b;a.command="rename";a.name=g;d.fire("scaytUserDictionaryAction",a)},function(a){a.dialog=b;a.command="rename";a.name=g;d.fire("scaytUserDictionaryActionError",a)})}},{type:"button",id:"editDic",label:c.getLocal("btn_goToDic"),title:c.getLocal("btn_goToDic"),onLoad:function(){this.getDialog()},onClick:function(){var b=this.getDialog(), +a=b.getContentElement("dictionaries","addWordField");f.clearWordList.call(b);a.setValue("");f.getUserDictionary.call(b);f.toggleDictionaryState.call(b,"wordsState")}}]},{type:"hbox",id:"dicInfo",align:"left",children:[{type:"html",id:"dicInfoHtml",html:'\x3cdiv id\x3d"dic_info_editor1" style\x3d"margin:5px auto; width:95%;white-space:normal;"\x3e'+(d.scayt.isLicensed&&d.scayt.isLicensed()?'\x3ca href\x3d"'+c.getOption("CKUserManual")+'" target\x3d"_blank" style\x3d"text-decoration: underline; color: blue; cursor: pointer;"\x3e'+ +c.getLocal("text_descriptionDicForPaid")+"\x3c/a\x3e":c.getLocal("text_descriptionDicForFree"))+"\x3c/div\x3e"}]},{id:"addWordAction",type:"hbox",style:"width: 100%; margin-bottom: 0;",widths:["40%","60%"],children:[{id:"addWord",type:"vbox",style:"min-width: 150px;",children:[{type:"text",id:"addWordField",label:"Add word",maxLength:"64"}]},{id:"addWordButtons",type:"vbox",style:"margin-top: 20px;",children:[{type:"hbox",id:"addWordButton",align:"left",children:[{type:"button",id:"addWord",label:c.getLocal("btn_addWord"), +title:c.getLocal("btn_addWord"),onClick:function(){var b=this.getDialog(),a=d.scayt,g=b.getContentElement("dictionaries","itemList"),h=b.getContentElement("dictionaries","addWordField"),e=h.getValue(),c=a.getOption("wordBoundaryRegex"),f=this;e&&(-1!==e.search(c)?d.fire("scaytUserDictionaryAction",{dialog:b,command:"wordWithBannedSymbols",name:e,error:!0}):g.inChildren(e)?(h.setValue(""),d.fire("scaytUserDictionaryAction",{dialog:b,command:"wordAlreadyAdded",name:e})):(this.disable(),a.addWordToUserDictionary(e, +function(a){a.error||(h.setValue(""),g.addChild(e,!0));a.dialog=b;a.command="addWord";a.name=e;f.enable();d.fire("scaytUserDictionaryAction",a)},function(a){a.dialog=b;a.command="addWord";a.name=e;f.enable();d.fire("scaytUserDictionaryActionError",a)})))}},{type:"button",id:"backToDic",label:c.getLocal("btn_dictionaryPreferences"),title:c.getLocal("btn_dictionaryPreferences"),align:"right",onClick:function(){var b=this.getDialog(),a=d.scayt;null!=a.getUserDictionaryName()&&""!=a.getUserDictionaryName()? +f.toggleDictionaryState.call(b,"dictionaryState"):f.toggleDictionaryState.call(b,"initialState")}}]}]}]},{id:"wordsHolder",type:"hbox",style:"width: 100%; height: 170px; margin-bottom: 0;",children:[{type:"scaytItemList",id:"itemList",align:"left",style:"width: 100%; height: 170px; overflow: auto",onClick:function(b){var a=b.data.$;b=d.scayt;var g=SCAYT.prototype.UILib,a=a.target||a.srcElement,h=g.parent(a)[0],e=g.attr(h,"data-cke-scayt-ud-word"),c=this.getDialog(),f=c.getContentElement("dictionaries", +"itemList"),q=this;g.hasClass(a,"cke_scaytItemList_remove")&&!this.isBlocked()&&(this.block(),b.deleteWordFromUserDictionary(e,function(a){a.error||f.removeChild(h,e);q.unblock();a.dialog=c;a.command="deleteWord";a.name=e;d.fire("scaytUserDictionaryAction",a)},function(a){q.unblock();a.dialog=c;a.command="deleteWord";a.name=e;d.fire("scaytUserDictionaryActionError",a)}))}}]}]}]},{id:"about",label:c.getLocal("tab_about"),elements:[{type:"html",id:"about",style:"margin: 5px 5px;",html:'\x3cdiv\x3e\x3cdiv id\x3d"scayt_about_"\x3e'+ +k+"\x3c/div\x3e\x3c/div\x3e"}]}];d.on("scaytUserDictionaryAction",function(b){var a=SCAYT.prototype.UILib,g=b.data.dialog,d=g.getContentElement("dictionaries","dictionaryNote").getElement(),e=b.editor.scayt,c;void 0===b.data.error?(c=e.getLocal("message_success_"+b.data.command+"Dic"),c=c.replace("%s",b.data.name),d.setText(c),a.css(d.$,{color:"blue"})):(""===b.data.name?d.setText(e.getLocal("message_info_emptyDic")):(c=e.getLocal("message_error_"+b.data.command+"Dic"),c=c.replace("%s",b.data.name), +d.setText(c)),a.css(d.$,{color:"red"}),null!=e.getUserDictionaryName()&&""!=e.getUserDictionaryName()?g.getContentElement("dictionaries","dictionaryName").setValue(e.getUserDictionaryName()):g.getContentElement("dictionaries","dictionaryName").setValue(""))});d.on("scaytUserDictionaryActionError",function(b){var a=SCAYT.prototype.UILib,g=b.data.dialog,d=g.getContentElement("dictionaries","dictionaryNote").getElement(),c=b.editor.scayt,f;""===b.data.name?d.setText(c.getLocal("message_info_emptyDic")): +(f=c.getLocal("message_error_"+b.data.command+"Dic"),f=f.replace("%s",b.data.name),d.setText(f));a.css(d.$,{color:"red"});null!=c.getUserDictionaryName()&&""!=c.getUserDictionaryName()?g.getContentElement("dictionaries","dictionaryName").setValue(c.getUserDictionaryName()):g.getContentElement("dictionaries","dictionaryName").setValue("")});var f={title:"SCAYT",resizable:CKEDITOR.DIALOG_RESIZE_BOTH,minWidth:"moono-lisa"==(CKEDITOR.skinName||d.config.skin)?450:340,minHeight:300,onLoad:function(){if(0!= +d.config.scayt_uiTabs[1]){var b=f,a=b.getLangBoxes.call(this);this.getContentElement("dictionaries","addWordField");a.getParent().setStyle("white-space","normal");b.renderLangList(a);this.definition.minWidth=this.getSize().width;this.resize(this.definition.minWidth,this.definition.minHeight)}},onCancel:function(){l.reset()},onHide:function(){d.unlockSelection()},onShow:function(){d.fire("scaytDialogShown",this);if(0!=d.config.scayt_uiTabs[2]){var b=this.getContentElement("dictionaries","addWordField"); +f.clearWordList.call(this);b.setValue("");f.getUserDictionary.call(this);f.toggleDictionaryState.call(this,"wordsState")}},onOk:function(){var b=f,a=d.scayt;this.getContentElement("options","scaytOptions");b=b.getChangedOption.call(this);a.commitOption({changedOptions:b})},toggleDictionaryButtons:function(b){var a=this.getContentElement("dictionaries","existDic").getElement().getParent(),d=this.getContentElement("dictionaries","notExistDic").getElement().getParent();b?(a.show(),d.hide()):(a.hide(), +d.show())},getChangedOption:function(){var b={};if(1==d.config.scayt_uiTabs[0])for(var a=this.getContentElement("options","scaytOptions").getChild(),c=0;c<a.length;c++)a[c].isChanged()&&(b[a[c].id]=a[c].getValue());l.isChanged()&&(b[l.id]=d.config.scayt_sLang=l.currentLang=l.newLang);return b},buildRadioInputs:function(b,a,c){c=new CKEDITOR.dom.element("div");var h="scaytLang_"+d.name+"_"+a,e=CKEDITOR.dom.element.createFromHtml('\x3cinput id\x3d"'+h+'" type\x3d"radio" value\x3d"'+a+'" name\x3d"scayt_lang" /\x3e'), +f=new CKEDITOR.dom.element("label"),k=d.scayt;c.setStyles({"white-space":"normal",position:"relative","padding-bottom":"2px"});e.on("click",function(a){l.newLang=a.sender.getValue()});f.appendText(b);f.setAttribute("for",h);c.append(e);c.append(f);a===k.getLang()&&(e.setAttribute("checked",!0),e.setAttribute("defaultChecked","defaultChecked"));return c},renderLangList:function(b){var a=d.name.replace(/(:|\.|\[|\]|,|=|@)/g,"\\$1"),g=b.find("#left-col-"+a).getItem(0);b=b.find("#right-col-"+a).getItem(0); +var h=c.getScaytLangList(),a=c.getGraytLangList(),e={},f=[],k=0,l=!1,m;for(m in h.ltr)e[m]=h.ltr[m];for(m in h.rtl)e[m]=h.rtl[m];for(m in e)f.push([m,e[m]]);f.sort(function(a,b){var c=0;a[1]>b[1]?c=1:a[1]<b[1]&&(c=-1);return c});e={};for(l=0;l<f.length;l++)e[f[l][0]]=f[l][1];f=Math.round(f.length/2);for(m in e)k++,l=m in a.ltr||m in a.rtl,this.buildRadioInputs(e[m],m,l).appendTo(k<=f?g:b)},getLangBoxes:function(){return this.getContentElement("langs","langBox").getElement()},toggleDictionaryState:function(b){var a= +this.getContentElement("dictionaries","dictionaryName").getElement().getParent(),c=this.getContentElement("dictionaries","udButtonsHolder").getElement().getParent(),d=this.getContentElement("dictionaries","createDic").getElement().getParent(),e=this.getContentElement("dictionaries","restoreDic").getElement().getParent(),f=this.getContentElement("dictionaries","disconnectDic").getElement().getParent(),l=this.getContentElement("dictionaries","removeDic").getElement().getParent(),k=this.getContentElement("dictionaries", +"renameDic").getElement().getParent(),m=this.getContentElement("dictionaries","dicInfo").getElement().getParent(),n=this.getContentElement("dictionaries","addWordAction").getElement().getParent(),p=this.getContentElement("dictionaries","wordsHolder").getElement().getParent();switch(b){case "initialState":a.show();c.show();d.show();e.show();f.hide();l.hide();k.hide();m.show();n.hide();p.hide();break;case "wordsState":a.hide();c.hide();m.hide();n.show();p.show();break;case "dictionaryState":a.show(), +c.show(),d.hide(),e.hide(),f.show(),l.show(),k.show(),m.show(),n.hide(),p.hide()}},clearWordList:function(){this.getContentElement("dictionaries","itemList").removeAllChild()},getUserDictionary:function(){var b=this,a=d.scayt;a.getUserDictionary(a.getUserDictionaryName(),function(a){a.error||f.renderItemList.call(b,a.wordlist)})},renderItemList:function(b){for(var a=this.getContentElement("dictionaries","itemList"),c=0;c<b.length;c++)a.addChild(b[c])},contents:function(b,a){var c=[],d=a.config.scayt_uiTabs; +if(d){for(var e in d)1==d[e]&&c.push(b[e]);c.push(b[b.length-1])}else return b;return c}(k,d)};return f});CKEDITOR.tools.extend(CKEDITOR.ui.dialog,{scaytItemList:function(d,c,k){if(arguments.length){var n=this;d.on("load",function(){n.getElement().on("click",function(c){})});CKEDITOR.ui.dialog.uiElement.call(this,d,c,k,"",null,null,function(){var d=['\x3cp class\x3d"cke_dialog_ui_',c.type,'"'];c.style&&d.push('style\x3d"'+c.style+'" ');d.push("\x3e");d.push("\x3c/p\x3e");return d.join("")})}}}); +CKEDITOR.ui.dialog.scaytItemList.prototype=CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.uiElement,{children:[],blocked:!1,addChild:function(d,c){var k=new CKEDITOR.dom.element("p"),n=new CKEDITOR.dom.element("a"),l=this.getElement().getChildren().getItem(0);this.children.push(d);k.addClass("cke_scaytItemList-child");k.setAttribute("data-cke-scayt-ud-word",d);k.appendText(d);n.addClass("cke_scaytItemList_remove");n.addClass("cke_dialog_close_button");n.setAttribute("href","javascript:void(0)");k.append(n); +l.append(k,c?!0:!1)},inChildren:function(d){return SCAYT.prototype.Utils.inArray(this.children,d)},removeChild:function(d,c){this.children.splice(SCAYT.prototype.Utils.indexOf(this.children,c),1);this.getElement().getChildren().getItem(0).$.removeChild(d)},removeAllChild:function(){this.children=[];this.getElement().getChildren().getItem(0).setHtml("")},block:function(){this.blocked=!0},unblock:function(){this.blocked=!1},isBlocked:function(){return this.blocked}}); +(function(){commonBuilder={build:function(d,c,k){return new CKEDITOR.ui.dialog[c.type](d,c,k)}};CKEDITOR.dialog.addUIElement("scaytItemList",commonBuilder)})(); \ No newline at end of file diff --git a/src/static/ckeditor/plugins/scayt/dialogs/toolbar.css b/src/static/ckeditor/plugins/scayt/dialogs/toolbar.css new file mode 100644 index 00000000..861f43e3 --- /dev/null +++ b/src/static/ckeditor/plugins/scayt/dialogs/toolbar.css @@ -0,0 +1,71 @@ +a +{ + text-decoration:none; + padding: 2px 4px 4px 6px; + display : block; + border-width: 1px; + border-style: solid; + margin : 0px; +} + +a.cke_scayt_toogle:hover, +a.cke_scayt_toogle:focus, +a.cke_scayt_toogle:active +{ + border-color: #316ac5; + background-color: #dff1ff; + color : #000; + cursor: pointer; + margin : 0px; +} +a.cke_scayt_toogle { + color : #316ac5; + border-color: #fff; +} +.scayt_enabled a.cke_scayt_item { + color : #316ac5; + border-color: #fff; + margin : 0px; +} +.scayt_disabled a.cke_scayt_item { + color : gray; + border-color : #fff; +} +.scayt_enabled a.cke_scayt_item:hover, +.scayt_enabled a.cke_scayt_item:focus, +.scayt_enabled a.cke_scayt_item:active +{ + border-color: #316ac5; + background-color: #dff1ff; + color : #000; + cursor: pointer; +} +.scayt_disabled a.cke_scayt_item:hover, +.scayt_disabled a.cke_scayt_item:focus, +.scayt_disabled a.cke_scayt_item:active +{ + border-color: gray; + background-color: #dff1ff; + color : gray; + cursor: no-drop; +} +.cke_scayt_set_on, .cke_scayt_set_off +{ + display: none; +} +.scayt_enabled .cke_scayt_set_on +{ + display: none; +} +.scayt_disabled .cke_scayt_set_on +{ + display: inline; +} +.scayt_disabled .cke_scayt_set_off +{ + display: none; +} +.scayt_enabled .cke_scayt_set_off +{ + display: inline; +} diff --git a/src/static/ckeditor/plugins/scayt/skins/moono-lisa/scayt.css b/src/static/ckeditor/plugins/scayt/skins/moono-lisa/scayt.css new file mode 100644 index 00000000..53f52220 --- /dev/null +++ b/src/static/ckeditor/plugins/scayt/skins/moono-lisa/scayt.css @@ -0,0 +1,25 @@ +.scayt-lang-list > div +{ + padding-bottom: 6px !important; +} + +.scayt-lang-list > div input +{ + margin-right: 4px; +} + +#scayt_about_ +{ + margin: 30px auto 0 auto; +} + +#scayt_about_ p +{ + text-align: center; + margin-bottom: 10px; +} + +.cke_dialog_contents_body div[name=dictionaries] .cke_dialog_ui_hbox_last > a.cke_dialog_ui_button +{ + margin-top: 0; +} diff --git a/src/static/ckeditor/plugins/sharedspace/plugin.js b/src/static/ckeditor/plugins/sharedspace/plugin.js new file mode 100644 index 00000000..ff8b09eb --- /dev/null +++ b/src/static/ckeditor/plugins/sharedspace/plugin.js @@ -0,0 +1,7 @@ +/* + Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved. + For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +(function(){function f(a,b,c){var e,d;if(c="string"==typeof c?CKEDITOR.document.getById(c):new CKEDITOR.dom.element(c))if(e=a.fire("uiSpace",{space:b,html:""}).html)a.on("uiSpace",function(a){a.data.space==b&&a.cancel()},null,null,1),d=c.append(CKEDITOR.dom.element.createFromHtml(g.output({id:a.id,name:a.name,langDir:a.lang.dir,langCode:a.langCode,space:b,spaceId:a.ui.spaceId(b),content:e}))),c.getCustomData("cke_hasshared")?d.hide():c.setCustomData("cke_hasshared",1),d.unselectable(),d.on("mousedown", +function(a){a=a.data;a.getTarget().hasAscendant("a",1)||a.preventDefault()}),a.focusManager.add(d,1),a.on("focus",function(){for(var a=0,b,e=c.getChildren();b=e.getItem(a);a++)b.type==CKEDITOR.NODE_ELEMENT&&!b.equals(d)&&b.hasClass("cke_shared")&&b.hide();d.show()}),a.on("destroy",function(){d.remove()})}var g=CKEDITOR.addTemplate("sharedcontainer",'\x3cdiv id\x3d"cke_{name}" class\x3d"cke {id} cke_reset_all cke_chrome cke_editor_{name} cke_shared cke_detached cke_{langDir} '+CKEDITOR.env.cssClass+ +'" dir\x3d"{langDir}" title\x3d"'+(CKEDITOR.env.gecko?" ":"")+'" lang\x3d"{langCode}" role\x3d"presentation"\x3e\x3cdiv class\x3d"cke_inner"\x3e\x3cdiv id\x3d"{spaceId}" class\x3d"cke_{space}" role\x3d"presentation"\x3e{content}\x3c/div\x3e\x3c/div\x3e\x3c/div\x3e');CKEDITOR.plugins.add("sharedspace",{init:function(a){a.on("loaded",function(){var b=a.config.sharedSpaces;if(b)for(var c in b)f(a,c,b[c])},null,null,9)}})})(); \ No newline at end of file diff --git a/src/static/ckeditor/plugins/showblocks/images/block_address.png b/src/static/ckeditor/plugins/showblocks/images/block_address.png new file mode 100644 index 0000000000000000000000000000000000000000..5abdae127953d052a36ca481023730baf8e10461 GIT binary patch literal 152 zcmeAS@N?(olHy`uVBq!ia0vp^IzY_N$P6Tx7VW<Uq}T#{LR=df8vg(P|NL6-8lVVM zNswRge}<>q4ZMIndrud~5RU7~KlqvCB?4CNuN7<8ZM?GWcHwn9gFm;vTD`OGs4A4v z_>p{l_3!U?1~ulpOZhdv&pm(ZrckW485hHzLf=y^Oa(`QMlpE0`njxgN@xNAlu9>b literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/showblocks/images/block_blockquote.png b/src/static/ckeditor/plugins/showblocks/images/block_blockquote.png new file mode 100644 index 0000000000000000000000000000000000000000..a8f497353cc5abb02cb78b7eba55772e1f5db540 GIT binary patch literal 154 zcmeAS@N?(olHy`uVBq!ia0vp^RzS?p$P6U=5BZe>DYgKg5Z8u=hX4QnKfl(y1}MT* z666>BpW*3t11})Y(bL5-gyVYh4}L~=2?I&_?;_8ie6x^G__3`z_sgwKzZH&EWg9$J zo>3^H!!)^R)z2HjbAs=bOXQrh-_iK(#@Yr$22;7jhW_~%%z%b5c)I$ztaD0e0sySo BH~atq literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/showblocks/images/block_div.png b/src/static/ckeditor/plugins/showblocks/images/block_div.png new file mode 100644 index 0000000000000000000000000000000000000000..87b3c17146e79e8dcced15939f24a0f16ad50c61 GIT binary patch literal 127 zcmeAS@N?(olHy`uVBq!ia0vp^qCm{g$P6S6r-*3)DYgKg5Z8u=hX4QnKfl(y1}MT* z666>BpW*3t11}&?&C|s(gyVYhkN^MKnR)8>#2x&=+p)i$x$p|V!M`$YjXLp#Y@Eyt Y)8}f)Oi$*s1L|P#boFyt=akR{0Dd1P761SM literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/showblocks/images/block_h1.png b/src/static/ckeditor/plugins/showblocks/images/block_h1.png new file mode 100644 index 0000000000000000000000000000000000000000..3933325c08f3f4eacec46c97600f7cba01ead54f GIT binary patch literal 120 zcmeAS@N?(olHy`uVBq!ia0vp^f<VmA$P6Sc>bHRe*aCb)TpJo1{{R2~{95lCpa@e* zkYDhBhNs&NynsA;PZ!4!j_b)k{_k&OY}>z={n2NEUx%wT<XifcuP7ukc%-SMS-AdN Q2UN=7>FVdQ&MBb@0O>s@^8f$< literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/showblocks/images/block_h2.png b/src/static/ckeditor/plugins/showblocks/images/block_h2.png new file mode 100644 index 0000000000000000000000000000000000000000..c99894c2650ae1745e0e4156d775fe84d00efff0 GIT binary patch literal 127 zcmeAS@N?(olHy`uVBq!ia0vp^f<VmA$P6Sc>bHRe*aCb)TpJo1{{R2~{95lCpa@e* zkYDhBhNs&NynsA4PZ!4!j_b)k{_k&OY}-GV{n1;8KYJS=G7HpK^B?)%xI=a!8z(b^ X<u&DZ{25UKKphO8u6{1-oD!M<Atou6 literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/showblocks/images/block_h3.png b/src/static/ckeditor/plugins/showblocks/images/block_h3.png new file mode 100644 index 0000000000000000000000000000000000000000..cb73d679eb840b9728569b27d8b1933af47aa689 GIT binary patch literal 123 zcmeAS@N?(olHy`uVBq!ia0vp^f<VmA$P6Sc>bHRe*aCb)TpJo1{{R2~{95lCpa@e* zkYDhBhNs&Nyns9<PZ!4!j_b)k{_k&OY}-GV{n1;8KYJS=9<JozeKy~Hh2tRx^J&WO U_J-v4097-1y85}Sb4q9e0HQJ~U;qFB literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/showblocks/images/block_h4.png b/src/static/ckeditor/plugins/showblocks/images/block_h4.png new file mode 100644 index 0000000000000000000000000000000000000000..7af6bb4984d8448881d5461a33db46165416381d GIT binary patch literal 123 zcmeAS@N?(olHy`uVBq!ia0vp^LO{&V$P6Sed+-JVDYgKg5Z8u=hX4QnKfl(y1}MT* z666>BpW*3t11}&?$<xI#gyVYhkN^J}n0e}}`Hoyy{BgKU;V#dS`-&2gvLeh3i~Q6V U{nM`54OGqG>FVdQ&MBb@02`Vnr2qf` literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/showblocks/images/block_h5.png b/src/static/ckeditor/plugins/showblocks/images/block_h5.png new file mode 100644 index 0000000000000000000000000000000000000000..ce5bec16cfa84d461672f8b0721911d90a06e445 GIT binary patch literal 126 zcmeAS@N?(olHy`uVBq!ia0vp^f<VmA$P6Sc>bHRe*aCb)TpJo1{{R2~{95lCpa@e* zkYDhBhNs&NynsAaPZ!4!j_b)k{_k&OY}>z;`D2~JyZnS78)QA|*^>ln<rcDWGBZeq WDeL7Kzjp&_VDNPHb6Mw<&;$UjttQd{ literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/showblocks/images/block_h6.png b/src/static/ckeditor/plugins/showblocks/images/block_h6.png new file mode 100644 index 0000000000000000000000000000000000000000..e67b982985ca30ae46dae8049c0f99a35dfc2930 GIT binary patch literal 123 zcmeAS@N?(olHy`uVBq!ia0vp^f<VmA$P6Sc>bHRe*aCb)TpJo1{{R2~{95lCpa@e* zkYDhBhNs&Nyns9<PZ!4!j_b)k{_k&OY}-GV{n1;8J^LFUI@?d#E34GEhOdiJ-c8wT T>#|GfK-CPMu6{1-oD!M<c8e&f literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/showblocks/images/block_p.png b/src/static/ckeditor/plugins/showblocks/images/block_p.png new file mode 100644 index 0000000000000000000000000000000000000000..63a582024687b942afac422016a0ac37e3e9d827 GIT binary patch literal 115 zcmeAS@N?(olHy`uVBq!ia0vp@K+Mm`3?y0KUN-?!YymzYt_=+h|NsAgeyw*6P=u)@ z$S?Rm!_(~sUO=9dr;B3<$MxhN|C<?`?EWPDh+}k8VB`7g?#NJdT*jnn@n&V9Dh5wi KKbLh*2~7a>|04nb literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/showblocks/images/block_pre.png b/src/static/ckeditor/plugins/showblocks/images/block_pre.png new file mode 100644 index 0000000000000000000000000000000000000000..955a8689a13a394a9e715673d23750a6847eb617 GIT binary patch literal 128 zcmeAS@N?(olHy`uVBq!ia0vp^VnEE#$P6TJEnce)q}T#{LR=df8vg(P|NL6-8lVVM zNswRge}<>q4ZMInbx#+^5RU7~KmPycXXdGYvoZ0<wy*pW^>0=t{@C}8pCx}|qC*(_ aQHD7O)qh-UDHQ^0VeoYIb6Mw<&;$Unq%6+> literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/smiley/dialogs/smiley.js b/src/static/ckeditor/plugins/smiley/dialogs/smiley.js new file mode 100644 index 00000000..3048f31c --- /dev/null +++ b/src/static/ckeditor/plugins/smiley/dialogs/smiley.js @@ -0,0 +1,11 @@ +/* + 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 +*/ +CKEDITOR.dialog.add("smiley",function(f){for(var e=f.config,a=f.lang.smiley,h=e.smiley_images,g=e.smiley_columns||8,k,m=function(l){var c=l.data.getTarget(),b=c.getName();if("a"==b)c=c.getChild(0);else if("img"!=b)return;var b=c.getAttribute("cke_src"),a=c.getAttribute("title"),c=f.document.createElement("img",{attributes:{src:b,"data-cke-saved-src":b,title:a,alt:a,width:c.$.width,height:c.$.height}});f.insertElement(c);k.hide();l.data.preventDefault()},q=CKEDITOR.tools.addFunction(function(a,c){a= +new CKEDITOR.dom.event(a);c=new CKEDITOR.dom.element(c);var b;b=a.getKeystroke();var d="rtl"==f.lang.dir;switch(b){case 38:if(b=c.getParent().getParent().getPrevious())b=b.getChild([c.getParent().getIndex(),0]),b.focus();a.preventDefault();break;case 40:(b=c.getParent().getParent().getNext())&&(b=b.getChild([c.getParent().getIndex(),0]))&&b.focus();a.preventDefault();break;case 32:m({data:a});a.preventDefault();break;case d?37:39:if(b=c.getParent().getNext())b=b.getChild(0),b.focus(),a.preventDefault(!0); +else if(b=c.getParent().getParent().getNext())(b=b.getChild([0,0]))&&b.focus(),a.preventDefault(!0);break;case d?39:37:if(b=c.getParent().getPrevious())b=b.getChild(0),b.focus(),a.preventDefault(!0);else if(b=c.getParent().getParent().getPrevious())b=b.getLast().getChild(0),b.focus(),a.preventDefault(!0)}}),d=CKEDITOR.tools.getNextId()+"_smiley_emtions_label",d=['\x3cdiv\x3e\x3cspan id\x3d"'+d+'" class\x3d"cke_voice_label"\x3e'+a.options+"\x3c/span\x3e",'\x3ctable role\x3d"listbox" aria-labelledby\x3d"'+ +d+'" style\x3d"width:100%;height:100%;border-collapse:separate;" cellspacing\x3d"2" cellpadding\x3d"2"',CKEDITOR.env.ie&&CKEDITOR.env.quirks?' style\x3d"position:absolute;"':"","\x3e\x3ctbody\x3e"],n=h.length,a=0;a<n;a++){0===a%g&&d.push('\x3ctr role\x3d"presentation"\x3e');var p="cke_smile_label_"+a+"_"+CKEDITOR.tools.getNextNumber();d.push('\x3ctd class\x3d"cke_dark_background cke_centered" style\x3d"vertical-align: middle;" role\x3d"presentation"\x3e\x3ca href\x3d"javascript:void(0)" role\x3d"option"', +' aria-posinset\x3d"'+(a+1)+'"',' aria-setsize\x3d"'+n+'"',' aria-labelledby\x3d"'+p+'"',' class\x3d"cke_smile cke_hand" tabindex\x3d"-1" onkeydown\x3d"CKEDITOR.tools.callFunction( ',q,', event, this );"\x3e','\x3cimg class\x3d"cke_hand" title\x3d"',e.smiley_descriptions[a],'" cke_src\x3d"',CKEDITOR.tools.htmlEncode(e.smiley_path+h[a]),'" alt\x3d"',e.smiley_descriptions[a],'"',' src\x3d"',CKEDITOR.tools.htmlEncode(e.smiley_path+h[a]),'"',CKEDITOR.env.ie?" onload\x3d\"this.setAttribute('width', 2); this.removeAttribute('width');\" ": +"",'\x3e\x3cspan id\x3d"'+p+'" class\x3d"cke_voice_label"\x3e'+e.smiley_descriptions[a]+"\x3c/span\x3e\x3c/a\x3e","\x3c/td\x3e");a%g==g-1&&d.push("\x3c/tr\x3e")}if(a<g-1){for(;a<g-1;a++)d.push("\x3ctd\x3e\x3c/td\x3e");d.push("\x3c/tr\x3e")}d.push("\x3c/tbody\x3e\x3c/table\x3e\x3c/div\x3e");e={type:"html",id:"smileySelector",html:d.join(""),onLoad:function(a){k=a.sender},focus:function(){var a=this;setTimeout(function(){a.getElement().getElementsByTag("a").getItem(0).focus()},0)},onClick:m,style:"width: 100%; border-collapse: separate;"}; +return{title:f.lang.smiley.title,minWidth:270,minHeight:120,contents:[{id:"tab1",label:"",title:"",expand:!0,padding:0,elements:[e]}],buttons:[CKEDITOR.dialog.cancelButton]}}); \ No newline at end of file diff --git a/src/static/ckeditor/plugins/smiley/images/angel_smile.gif b/src/static/ckeditor/plugins/smiley/images/angel_smile.gif new file mode 100644 index 0000000000000000000000000000000000000000..21f81a2fab5b772bf1dcef0fe0a5f1965a08927d GIT binary patch literal 1245 zcmeH`{ZrBh9Du(lA_^p;f{GZh*>#>vg-WcpVe_qxHdcBkoV$~DTj}X$YrA=EDa>g& z&*{`%<>ta9P8XRelEYV&Qp))T8!O927}m5CoeM?2-_Nc;VZZPB{rTm&dom8C3zB6F zgn_sb<Xj$dPKLDP`>2b2H6P=zl~MZ2{D;a2Jzo;_r2&>&;$%H}zL_%76gqX0@u-<J zuM2=yU%2cGt^T0#gEl|7Oj^?h!Ouj{lHeK%x`RL$v^KQu;U(&Vmf`GRKsybtFwv_l zM?cNcAL8tabn2LkJyFgZEVw~iAEbgI1p2~YkO6w8yDuDu!eM}gb#c(HIOyhsZa3DK z2z`5@M*#YLV0aZBcztD<ymFJeHXiCWMZ<77j7EZqiH=6WSoFF%0>-14#&){LIjEU~ z{`wM3?SSc*!4~Ve7Z3Mdf&1~x6Z=q8qI-&m&LnNkC4f}`c0OuIfq}PSP>kJr(`yuC z4|2V?3tiScn0tS9uFz{cwed$W*h;{12D6ody#O4iVet%1%fWIM?pA=c3g#|ge>QvP zFJkjQtvf0)XEiL;V#~Ger$2(@61Jq;c&70#x5Hl@n5z{W-LTN(eXIwk0hW3_t}f4N zH~P;Y_WYLDZARU9yc=e8;|{D?QO_*qv0xq>tlov^53sF=nAZ-Qi<tK@c%A^d4A|d* zZ32cO|MMRUa5nKc1ZhIzUU)B_5E22|6A+czsWK|ccv-Sp^`UwMCr5BpB%RFQv7fp4 z)P@>LTo&>ABenv;5hD-eD`W%;^8#U8LFm)N%ET{bOMdwzM#Rc2N$sz)D(i+t+^<6; zMzWL^_O4tV(X1G)7I2TzCUkA-_`t9PaUGR&uqI7P;vKVQ(lo+Cy^?yp;xJp3%1n$U z5~|K8e@={%UP+o!?LTE=<M;^;bVdeuyX1&UUeEo$N|bH%o1|a;ke5p78ZIZ%IoWL` zs=PM{(URW_KMRqS7g2ioPddbkgZQNUpn}_}{k^X8Z+A)zjRBUJw;Ce@-cgSSYci6H z8}0n|devUZrw0rp3(A=m#gX;Sw5+yT)}9m7>XwEvaqHG;_3p{Uif_K#{+dwiL(8l~ zQi51oVP#aZx~DQw6vvSTQk(O95Jb)nBOO1_nJea!Ig;SC)ZmJvV&TcAf_S9<w_>Ss z!Fu%FBF$Gt%=@kix^y$en7>OUl;g;`#W-JovP<#Nd&=P%VRcTYq98WTj;H4cPMQd^ qnmi+y@WBWnC*p*PN$AgJ8}Wts<J29c+LoKSQmy^$4?cc)WdFZHf$Ek3 literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/smiley/images/angel_smile.png b/src/static/ckeditor/plugins/smiley/images/angel_smile.png new file mode 100644 index 0000000000000000000000000000000000000000..559e5e71a3415ea24f23cedb9b88cc1862a569df GIT binary patch literal 1172 zcmV;F1Z(?=P)<h;3K|Lk000e1NJLTq000*N000*V1^@s6;40Lh000DANkl<ZNXNC6 zSxlWp6vqjat?Y|sD-EbI+Gwz9v}s}*pKMIDeelJ^hZ-NWrbZKAjFF-bYSf1&#>BW_ zEeI{UvbD07r3Ffnvgoy?Q1G%SU|8D=m;24nGxOaGTuK^WeE28d%$)O^Gv}OdCcrtf z6!3q^ZvelAur~NC?*7*-x8pPAnW)2>y@6U<gf(TPzhzFZX&Y^8e8hKKI1KEv-2GoF z_rSCW<rxFD3X^rv{}D7Dfs!;^`diQGHL=mQ#z%au)&5VRH`WjCS?QX#R=UN&aS653 z#=<qIJplDjg5zD7E{D}AaQ_7}=i!>b8xGnw+E#qTx6NAZ!{h22^MkwRD=oA8+NhhM zuc0Vjc^vQHnJvO{zK0rqSx&tl21P@!!uUzJJq*q~C{9w^N3D&oYKD8E#^VQ{y>j64 z%0Gp^<6*hFv2Hb?=JQdr0-DN(u{Yr6F#*bElb@qzen8!pgRb_k`)P(|`KM*c@zVU@ zQD!<GWMSwy%g&E+{r#OpQ6(F7t~+mR-f7mfjkeW3GaV118Je{Y2co4aQ`GFoYTt*e z_c4~cQdsOvWbR@tBh}$J8xok7jkTN&@iG_2+=WOMo1<B7ie=@Gw^289(G0^9rVoCI z@fs+N!0LNSiv0jwz2C^ynaNkL1Q@y6_uy(x-x${?!v#^}E>Sw%8iBf}F)U&F;Mw$j zD3y<c9)b4UyROM|0y`RDG+CX-WM%5cxI9VPQq*t{{E~ojoRE%|+Gv(Aeej=Ye8G<3 za)zI*p8KfCi88XfGO;={HpXqcZE#%zoQp?YdJZ-6J%%MrAAEx1RA@`J=-30DUg_@+ zIqq;4+{n`F(2@ezAF;IwOie7D&%iTLs|-t+{_vJ$i;EJCPwi>8G_*Cv&Tn&)eZqP> z73<)t7)fgyo{>{`z$Goui=pJaHFZNe%9brq6K$eInPA%+aI_GjQ1$!pTt1FrZAwcv zS3iKCA_bD{RT95`5y@y?tUuHjtrY*y+z19vhKXMkluM^I9>l792E*D^&_g(@;7o`O z@oK7OH-&HQpgt#*k=!U2%VJq9jbZfL2%2+3`0>pk#!Hh7n6d~wEk{r#a$?Qe)Qa*G ztxZw=gdM$(PD{FBZRk;YPbE=%BAnC50y+J9AT{rYapjvt+}E@0KuW?<mC{L-4`Udb z<@<^3E0@E}4MIV<7{pkn=XE}HUb{2pX50&-kIVfc`hBn6sudDQaTuy-CstXyMS+|^ zGlX@=V<D6I49ay}utOKfGKH$Ni)Bt!A<pGH<xiFXN+j1sp>Q@t+gs!XVSI(L?MoyJ zaVTqyfltIloQp%fK%LWVpl5=`E>I+6?W28#ahGQfX$1<I8;};06y!@pg~4{Qi$WA< zgB1lq_IzHTZKG|qkNDp84c)ZKi&B^wQ+eH5x_9-@p{2j|oL<v5V*8&S=q($>nL>lU miK<1DUR8VN4sT7vR{aZh|2Vqsev4870000<MNUMnLSTZNH$#X3 literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/smiley/images/angry_smile.gif b/src/static/ckeditor/plugins/smiley/images/angry_smile.gif new file mode 100644 index 0000000000000000000000000000000000000000..c912d99ba7840cdc66459fc8186b8ed643967875 GIT binary patch literal 1219 zcmZ?wbhEHb6lV};_|CwfZ(<g2V;t{b5$EN+PmlGmF7rtP)^o<}=S?^-7&2csVZCY0 za?zaUt~tjcOQE~Af=?{DU)l0~He>v5$^6lp{j(L@cWd@v)@&bbIe*!4{<q_JXfHI~ z!+5%v`B5j?e-7L~9eDpc@jY-5eeW#%+D+=CgTQA;f$uKDpIk&fyNmyK7WnTf^wUlB zznjQE53!G)lApY!zI)01@s|1JEC1g|=B&T|>2R~Nk+whll|Kio{Rvd~AE5XvNcDG+ z>i=Ms|G{d%Lbd*fY5$AR{t>13KT_{~gu&-n<Nwiy|6`2*$C>_*H+!FG`#I74bCTuP zB&%;}cK;Kt{-#*|O11x=Vmmd`V`{YLg$%EY*?w0_qyDEmeam$Enc?_9!})Kn^WSWj z|Jm;Uvpv2P`g|?&{aWJxx5)p0ap1r5;6IhYe`>@3RY(7+kNR5^d#x(rMnn3E&cb_> z>%R77|L@5B*_;1$V*bCrqL;I4e@!g^Ke6=3^t#`(>wnE`_%W;D$Lz+xGaG-*YyGjH z{r94-zl(c+EbD)|YUZzHlm4%t{bI|~7u#0+*|PA@wncxpFa5i7`I`e<ejnca=kV6w zN4EYwvhC0D9luZP`g?lcpSxGSJ-YMv!HvHUZ+?IJ;QzA+KVLoj|LV#Acd!2c`ThUj zKZa32C<GLLvM@3*%xBO6DFo#S2af*?_M9>n7bZLUvj}rN5l-fsqRGU-@L~cBCwnJj z-5Z7}?);8k5-BGv91b-1YUkeLNorZz$j389s7h!`bAY^2{EmXc87!w3`TDacioDP~ z!=vQU$`aYte1w^Wm8Yjb(6w*ILQZSbOTui&x(%wON`o{$PZCzIQYd_6!Z~4@+Vl-# zDVtJ#r|HCO@_E?Fk~zVpYX;9(mS&Ghhl}rA33OKBm}Qms;Kc$(6``Jmy&8XBG#+M< zcAm;7btEL=sH8-1%D<Hii;i}QYB{z1Sdi${YM*@a)xEX1C#%>eCmfJ?>^>=`)j04$ zp-6|{OrvtH)Tk*=E1bO4-YjAKth(G;!?RCdLFZ=8R@J6{p9wp)pB@v^2$-Uv8N}?t zuQYR>jgnSd`=lSt9wDqk?g5Gy8LTfPuqlPtI!Oq)yL7aOdzy$H;dgSGxPaSErD&!@ z^&9~ge(|mY4vc&eAK8>=NhBTMip|(~++nW7!9#q~5sI@i+BGg57I1swCZZs^BjE|B sstbc7GndMS1FXUfMKXa?Bmx^*C2Kw~P7#uDJUJ!hEypqkMn(o}0F!L1cmMzZ literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/smiley/images/angry_smile.png b/src/static/ckeditor/plugins/smiley/images/angry_smile.png new file mode 100644 index 0000000000000000000000000000000000000000..c05d2be3a7972ec4f2d9f5354a9c1dae719d1805 GIT binary patch literal 1220 zcmV;#1UvhQP)<h;3K|Lk000e1NJLTq000*N000*V1^@s6;40Lh000DwNkl<ZNXM;} zX>3$g6vq)-cAK&zV!#CqTMKRJ22-XBFbvCp1xi~f6p+QnASfX&h4R5DCScGI0!>sv zs_~1dwxE7MBPC)83Q80bAgxls*4UJ1JJXr>-p_O1Oq*6(gNZNs=e^u}&hMUk&w1ze z`mNFE)t!JCkw;W2sua~nR2do5xtN~(RXu@ySk~>(xi1O4`x-4T`nc;I<4C`COy|@_ zZSM;%hC@Wht-7li>(Xdhmrn3-8CK0n__G0;8nMowCUopgTDN35HfpOr>f0mS0o!(6 zpyDm=<_xz3hjw9}sm40K4}1T1cww1nDIC}VpOnL`TC6WV#F#(IRv-2K=K`JK#{(z! zW8_XGSn;-P9o_@a`=De#Y|ep=nXthH#p$pn1=h>^)CbUTlh#ccsIM~af$O<hwO6>C z8EXd*?6mDy3I*y3gSX6uO<C~F99TCS)}}(yOejo%{5W`Hi!4x&;Tdf!qjL_zRbiR8 zjp7vAHfLhJx>_R54o9nRjab3!1zemaQ76OGiBK>dR!xHylc4%2)~ORHLs{)rq;OBD zrWzwN7HhjN0&^1-;Dvk_O~tNo#O>hKi8QU6&IMmQ!4;EX`IEB9R3`_m8#7RrGTY&$ zf$}~0y<@{?svwDSjXRaNq-5enhrAL|Q8?m5o<wI%=hn=Y9XvGwmOh64o|I?#Zj`0W zc6epW_QeF%NE4-JDk@r-6Nb-B;b7qc0Vg;|aWLQGjOkpFH`@WTWE}R+T+FJYC`*~` z@cQNj4`JuWTdYo!ZO?QP)^cDg=k{*n_wrKA-38&~$@b0CJZDVjTK1PXU>3=)^Cn?_ z`?;+wWp;(<O|>YTL5Cz#t0V_oD?<~va!NRPQmXc<DOejM2TLCfgS`UGeFF33v3uZ^ ze{EYtaPhb>q(hRVJOQqp>_7v)$7!55hU=~&{E#$&Gt>I;-SlXhvWH3fMq;l|rET9< zl-2oIO8rN6<Ifo$jx3^(<e=6)f=elbsfml?o3x=^-00!PJG=Pf>nhqBZgHpT1n1(T zVBRpS=d$rXn@QkES(k)*LT5h1nBCvmGPx6IT|Az%64lQyujNj41+Bkcqr1mnUrWuj z-jFjC^QBx2X>7{sT#7N6q1%SkZ`-^P&N<f2ktjENwO{aW&z+MW@nb?X_R5I_3gS?P zvO0dE_TS&Uewk+10PKYiTjs*Ce4p5l({a(9&3c6MdC6QVS;CdFP24zGM*YW!Y5eL_ zF7GIyHl;u2vhh}P#z2(O<@fK>xQ^|`Nbig78EN4ijpZ37xfn*XJC+7l3^&sTaa~}) zBt>&^Mjx&wMiFxLvy9Z<sBgE8tE1&wR$buz*J+;Bk2d#%k|;^?+@W%&(&n>cAxkc& z%)#Iu2pRopOOK*if>9s!?Xl%X77!8@=Cz;X{1Pxyqwvc@!3;Sr_aNJzGr$hc>We?E z4@U9>j*Z%?kNV#4HMd+6)2Nx(($d=1pF^eJTDneEh>hC*r#rOMl_zZy?L<|gTM<=7 i#(dpfZTAKLKlC@^jn9nmDT4q20000<MNUMnLSTZFien!D literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/smiley/images/broken_heart.gif b/src/static/ckeditor/plugins/smiley/images/broken_heart.gif new file mode 100644 index 0000000000000000000000000000000000000000..4162a7b24df8e235ea5485073003b702562c3122 GIT binary patch literal 732 zcmZ?wbhEHb6lV};_{PAnl!<8t8{0Y-mUZmxD>*pUa&T;8X5PrcvW10Z2NTmi28K-> z99w~ihiA2bz$!t(wPIpxB_-F($*q@{-zzA%K}l(guI>(V^PM&}yX@_c@bO(>WxdSF zd7Y2%pn$+p0fFN}LWe{}kBEt#78gG&BXdzu@QR4YO+mriLPB@M#O{lWUz3);C@+6g zTKb-(<SiMQ$I{Ywm6YzPsy<Utc%ZKSN=4;?rsgvs($#&gr}s`%^R2%A2OXVHdU{`t zj6R#1elauqX>R`4+WMcZ?SDJFJx)%0-Q4zhcpMB0Ivf^uI3nUmWaP29xRaTgr}OeI zR8?K9tGm?DaJjYhYFF3wzP{`I{kNu1zcXjf-TCwHFIn<n#fnF3*FM?2`RVrU&v);B zb@=f6ix)p!yY}tbv+plo{&@ZR=ll1+K7RcD`SZWuzyJUL&p<Iy{K>+|z>vkD12PE| zCl2iY8?u_3TUy(iGWo3SdV1~Tg89w+daU^}TQj}cW#`V5<?x&_(_O`RxdUrhW&*3_ z@(n6(i?d=F^^AA!<dHYnwNIZpw!I}Y%qw!sk*tg`S23@^#O5R)QGVBuEtwuBPRpH~ z?3qJTSsWicbTaYC%=DMD`t(_wf&23hE4hH%K}=c<jMD-bncKQVn11L67e8}q;uR2% zvDmy}k*mwQDJxIDICnvUM<nOZ2E|8B*7^bwe>j?&nb-`Qx0y&dJ-O1)8hR;%({Z!f zSw-G0Ide8BcU)X-%~fNm^jIT^^PRzw7mi!m`&TpS^*ng^Sc`v^p;3a7@I%+$&FS$B z42|1zyE#NG1rs?ZEJ|<`mU<%=V)&rzSg#-790$iAEs2M@XZ=xaIo83*H$hQaqv_cq VDI+l!4S|Hlo~KE&(^;7qtO2)m5uX46 literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/smiley/images/broken_heart.png b/src/static/ckeditor/plugins/smiley/images/broken_heart.png new file mode 100644 index 0000000000000000000000000000000000000000..a711c0d8d8505409f0285fd92257eda1ba3a42cd GIT binary patch literal 1139 zcmV-(1dRKMP)<h;3K|Lk000e1NJLTq000*N000*V1^@s6;40Lh000C!Nkl<ZNQt$S zT}%{L6o9{-{b7r<$Pz#;G$5!zmaPG`BuMztG|`l%t!dQ6#E@7Mn?9Jn5tAmGKC};w zCVkjMO?<Oz4cN5B)B?6m@h?`9ElN{=&@yZbJ1)o$>@G9Ar!Qd8U24;$Cpiyu=eyrI zbMEBYM#544uW&4UD9%?4f!)A6KoO7xt^!|Zy3w_OYX<fMHGmhm4)g(^Yq}A6DjW$% z83{)bk<BU79REEKknfwC<XgXAe%`)af(H-E<efVrA|Hx~A|fBnghJNk-Mi(hvNHKH zH&=Q#ZIYqGhb3iMqayP9ymMaM7#kb2E;KYqkJl?&b+t^cUoQ`<s-&;5P`<0H6A`&C zB47X6-7Ou3g)&f5BGC;SBvD^4A-`XGy<WLcUoSJEP*OxTjfA7vL?jCs_+jhTilu{t z)RvV!{i^ABobF%{-;pD%-nZ}eWH9KvSXW2=nl&uX%}tx}t>IxFS5&aMyZavCSAh3N zIy)<3eSOrdT$%A;lJPh|`IDg`3Ot^SVt}=!rI^>Q@#xH%Rlo-hplSHzNqj{`NGgRa zfM0St*<4*sZ+km{yR5B^YtbmCX<}EDj0LKSig<MTG$lKBG%7$%<i-s=Za0=?rDc}g zPIFZiL+$N6862dbxtS4N&&XPqg(oYE$jzGoH4Y%hoSK5194yn!*o{k3@MdQdzH)`f zSFcjJV#T5?sT8JR04#9;x0m{S4U?e|1**CTpJHr!nnY(OrCC|1PA5sr%E(R{2Dv^T zz@P&3FKcW>i$t(YGh>D(CP-Qqv$t-s((7H6vrLmeA`zCgv;g$mL}ZmYHTCN^m6dM4 z-A=CCoz~4nEXMWGQOfi3D9_8wJdQc;w#~+yLqjo#s`?a7H|{xeaz3d$c8r1XaiXzU z`XM=;c-?MNsnnte8I8pVhQrhyKaN9HKh|_(c>aI-w5YYUr}pSk`p3qYiN{Hr<}+EM zsz@r8ww^Ri;)w+PV`J0=0=&FsOAqiFfC8ZD#w_qwSzB9Q#i2t4b)ER^>@%G$vD@+3 z?P(n+Op}3dnAHakP`+o+O<<d*8zz8l;gwsQujT?j{jz`mtD!)EN{<J{W?OW|DG`2) zMp?dhFRujxcYy{?H^%4R+n&GAi}TeLh+Mw3Ygg&S*|V(5&dw+n;K9rcOSf%f<Ec|2 zo1$#gbmQSdCQUw9V0FqgFa6lsT9D}N<rSAJjTxDp#nsY6OIO!~;&L@=x-s}XlktMk zbmOk#bZ%|z=$N*xTgPZ3LDI6G=4c{;t+tk?bLV1;%hj4myr_Jxzzv70zTMK*HJe<! zmSNK*VwyZKO_F{;E$7c$4pn_u(~ZlEIWmrAVHD@9Z%8tE>i&rnp1&?$q`0+}lASvZ zo88`~=|;yt?R}wquD}}LJ-`nP0LL}mxc{Pk|4RN}<8SCtmNuhtj6nbZ002ovPDHLk FV1m;NClUYv literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/smiley/images/confused_smile.gif b/src/static/ckeditor/plugins/smiley/images/confused_smile.gif new file mode 100644 index 0000000000000000000000000000000000000000..0e420cba4af510c616dbfcad2b48acddc94da29f GIT binary patch literal 1202 zcmeH`{ZrEg0EfSuV{dG-$zU%q+QtG-5g|_*LB}>d*gWYlIj^$rT$8esy7S7e<F49Z zKuV6T>@XDDiyjSv78BwnbPCKBc7Y5TDa4v^_I9rBav}SEKb`+XKlS_r&)swPR2nNZ zB_=T;CgKFqeu!u{5#6uT`i{}Re2?#ai*d!0bk)iXG_xj8@#a6_{?y5z>JUwJrmu8z z=bWOY9_cSG9^4ynaRb~ebTRQc6K*yxa?rIAJ#6%F(94CFhk=w8PwHx)IQE4Ao=xbM zp(lgvm9O^8R=<|VeVgDDkOM*tr(z@(qiMJ-#$ZN#RDvrKjLE5fC3Q)OAqCl=58rlb zv<Ra+F`&WVljK-AzA2AilgB5r;FsW<4C69#JQLTm5X_2As^dZB-#2n`Ly7NI`1W!9 zkb`M8=JF8Uf*-fy&Ngb|338^GTr5IJLq)bDx`Q0iVXO+5tEs>q^44xDtV>+2#_WsK z;tPrI>Tuh<zEGQ(e*^PxWA+_t{$29tIx<?1X$x*PVWA136PUB(R$F4}GivGldZZC| z+Ys%*%2_Ns5p^Yg_u$t)M18nBkXRYS>Ii-t!u?s?58=-+9xNgr#lw4`)&Yw6pZ}_W za*aVFh!!IMk?_$IS~iFjPNru1L)|V$D!0bnaN?tuT!JVx=~ZlT!GUu{=4OS0C$CWt z|D`szZj@_|c)iZu&E*{auv5vZ66HSKk!O77u(4BDvZN3l$!k5SFj(^@gD*{T(}bCC z`h_`D(`V{KhowcTR@qZcq5$twcIBsKHujon)?Df6Njh$b+*H5P$Sjo>YGsXfxqKJ@ z6kC7c{fKIxi_M|07z159{`o-C-PMqsF5Q=}Ewm5}^#PY4vRrFBf97aG-Lk)9oSB@y z+2HUp`@*+}%nzP(H!(O{k3J0B*D4s&vRC~z9@WcsM`^ZgGw-x%ulQWa@f@XI9c<TS z(}it!d?xP4IaPKBJ2rm3UZQ<IC<vKTX7US8#`d~wg!K=KKhv=P;Dl*T*+A3T1jz-> zq6(?Up=WLL7cJ=JjITttEjEXRMpwsZtg=JSfVSzL-@2bAidlp;&qi#5Ebq=nezCvS qkdbCPP2badOmMdDHD1f|W5tGQU6Qv-VPzC2Oc(Slx$U5qDE$}COQpd8 literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/smiley/images/confused_smile.png b/src/static/ckeditor/plugins/smiley/images/confused_smile.png new file mode 100644 index 0000000000000000000000000000000000000000..e0b8e5c6f11467dbe09785ebf3aafcdc9c581e1f GIT binary patch literal 1101 zcmV-T1hV^yP)<h;3K|Lk000e1NJLTq000*N000*V1^@s6;40Lh000CONkl<ZNQteL zU1(cn7=WMeYtpVR{Y_dk8{ClUSUZPXe`It1;4Y@S*oF*5o#MPwkcl#f;GL6Qcq9J6 zymR2d8!slpbb^SpvuaOuV|H_6Fv((@HYZJ*CQX{0^Sxf2(<YfM?!p&d-t%$bdH=sp z-Av81lEfmRR$vD(1PuBLVEH-*{FJcsxfKC`S_vMDg!Uok6O!LWvB$t3gY=m9Gdu(l zU!%K{DE)H6&VTuz@K_|&0endA+Ck1Af}jJj$00lnZQDU9n7aV8<8bp^C|BU2Poed` zQ^4VbozJWY_rP+2D<9m=rDNi5Ii%<sMinoj%5hZbItb9z56zpQb1$UN!|0pB=C>4^ zUW<czpw>Yx{4*}Ue^73GgnR!>qSdt0#UH_41XsWqa81?H2(hEkxf@2Fg}a`DzSmDB z?ELd}@K_|YkKEPMoEa8p+tW12b)`%aL_9TSWe3JU`!47`4qpulyMIu$Zrs1r10^D@ zh<lZ<cSfbHjC6LQoj52!z#7Yfz~I&p7=!hD0T2fJnyOBF-vPG?CQiVUBS}=l#)O^E zX<!GFXQLD^AuU1lVthHW(n1AmWCrW}45gw&spw*jrm#kBN<|lppUt&n(Dg6`gD`nE z>W?rQ7$R-K9gS!w4aV_Ob`6<~<26wrlXb~t-RgN>Jh%ur3rPGVta}X77XEG!00yzg zp(zNiQ#Yq~b~h4T-{O6DHG)XZIS7l3UgSm~V<FK4s2iujUpNn*wqRYr;2Mqc$pYGS z+5f^lUbIswFv9-lHhBNz$+||X+-2PLQE5n9suu2v@w>kyBA%U0`4i)p;O2C-*0oku zU~#%Ga}8L82Vh}QFV*^X)HsHjRGG<S8H_=K-C&O^!UN#lJp_FCUjF(X)-+XXA~hNK zk<aBErl!jzQx#IP4n6DFvLV(CZVAz?sO$uEKUxPLBRl|C$`EpE$^xa5OLC^N3=Fk3 z(%av`@Pn;1cZE=n1JkoGRYC$C=-FRk(;ML3m`h9KT;<I6D9)eI>_va>=Xo*(!@d3O z^z^pV5^X^TG~@~}mxsA|C{@4+(iBBli`Hvk&u9`A*qE^Mx$637Cr)!_2-+GAT5G4X zoj^|n3JX540ELoYrln>IA{q&VjV{e<_WT0v{nhoaySOIaJIKYiA=GRLG-wQ9+-lux zr)J5z#^8!(+i~bWT6b~jn#nm#-;p?5jzO-XDHOq}tUfWuK*a&mpxOE^^c{%<higai z*2kg~_?YY;&oJ^LWG_I2_8tk1_>n4%KSdo|VdqI`-~2i7YQoOXt_rVlasY8o@b@<n z(&H>EKzN|4Jx|!Ez$*zm|HZ!`tHFH-9l#^NHekTF0KWm_zCCyA({@|%|3m%(uJ36& TLW+k600000NkvXXu0mjf7P}Gl literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/smiley/images/cry_smile.gif b/src/static/ckeditor/plugins/smiley/images/cry_smile.gif new file mode 100644 index 0000000000000000000000000000000000000000..b51334278289b1429515bdc44d559c768e7de4bd GIT binary patch literal 795 zcmV+$1LXWiNk%w1VHW@w0QLX?mtX*!WCEXR1fy*Pr*j9bdI`6B1-N|&v3?7-h!MSu z5XXrK$&3ohnikWb71gU8|D*)}sRsY03;wJM|FRDMsulmM8|Sqf{<aeTyA}Vw8r-)e z+_)tEvmySnEC0JM>%2Grvors@HvhIc|GYl;#2){`8vn^3@4z7M&MW`SBLC7R{?#e} z+AjXYGXKgm|I0o7(Kr9qIQ`-^|GiEBzEJqdP5stH{@6kP&`tcoQ2*0i{@q;r&2IkM zWdG4<`Ok9w)^zdPbpPIT|JHo{;%xondKah59H+}0tIr#((I2+lA*swUvCl29&^Wc# zJ-XK=zU4!@)k3}5Cd2D7#_V0g+<npKe%R!8)#-oQ@S@Vb+SHK$(u48bg#X!v|J9A- z*OdR<oBQE||KyMV<eS;tx8>Tb|Kg(l>#Y9dwEyP1|LeGx(7~6|%B$4Jj@|H{<o3Gf z^2pxG{p-g6@6-SD+QjSd|M%nn`RD)o=;HPJ^Zfq*|NZ~~00000A^8LW004dfEC2ui z02crk000O6fPR95goTEOg?);Bh=_e_T{RXKI$djwjedP~A|ga-dU|X`G$VGHhJ9ca zL1{)jGBQ47c4!q~sDr8<V?`}2D=R9)DrI;ixP^5UJ~u4Dz{4jdCOdc*c7%N+E;qp| z4-G0O7YfuSWnv?!Y7;TSD<uH{B_{{~4kj5Icq3|qT`&++(EtE|3nc~sAfO>b1|med z2<oFF!wVlngb)CbKt+iM^FVO<5kyQ4Mtv-p*n%X9n++*gn9!ht#ReNtk~E=X0j0_| zQLw-`r_W&q3}LEFQPWcs4Gb^5<Tz*aD2A&*fb^h&NsO5n8fH3VFkrxfs}v|qAaUlO zCM$VTU>tRLz~DRs6Vy)7@y5v>KTnio`Ed1U0RaXDAeb;ALI)3XmLT!NB#IUfSFg61 z!Ffgt3K1q)kRXT3WI1s7fPp{(L)z9D8b^o#0RpZ#SG0A35J9i(*|odm(pD!#ZQjQr Zgs3w-m6|RzCea|Grg@`9ix33@06R_ikOlw% literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/smiley/images/cry_smile.png b/src/static/ckeditor/plugins/smiley/images/cry_smile.png new file mode 100644 index 0000000000000000000000000000000000000000..a1891a3428126f340fec3df988921ff98e60b36b GIT binary patch literal 1214 zcmV;v1VQ_WP)<h;3K|Lk000e1NJLTq000*N000*V1^@s6;40Lh000DqNkl<ZNXNC6 zTWnQD6o#8#xU^EG2!%p{VnK-zL?aLb5-%~lASC)IiH0;Wikb)-LsHZzQKCT~j1Vx0 zCA9PgoZcxMpi-f<K<|`O+D3X>svZ)kglo^9&wutlMWAZX#D_n7@0qo}S+myKGf~0N z<*5Hl|2PRGN=u|n$tU$j<co~ixx{}Bm(wzg)5rNrXj%^kmqY$UPxjr8**R+?+k1k` zaJ008{s5Fc1^eeg+XwL5Znz=N&0io?0Rh1eEcR@yt@V-b-@-kxImhX*AUDZ`+g204 zkc$&si|Kp?S{Fczbao~5$mVJ%1hXJ7*|<K|_qGM@hVP(tBc>#cfpec2r+bwmoCBvH zf#!#yaXOrO2u`HI@hOtNd$+>1ZtZX(*4HwIz}+18pMji2GZ4ry=FBsK&Xj||Edn<Q zRG$tfr$OyhsF@5uO@bpST6l#P2zooPj7Sas><Sa^qjUkL`f;4o&kHs~PBYwRn~GTX z-8c_iH<iAUiTJ;G0IF5oA1A<}@k-AY`1uDc!)1v%2wy@^DHJ5&G|pFqf;ObPx_Edh zTQj2B^jZ|xswcbY*t;%)O|M4LynQSj7TB+a{i$%J3n~}kvcw#OXVUnwDzAE;jBGuk zn$2TfkX2u)B0ZYQ_BUhQ@0``c)t1TX8ZEMK45n?JcB}TcEHMY+KKw6w5uBO}?HSOu zhW@i_T!00YeLfmfH_c5&b6zT2Rz|zyp#$@2Z~0ol*D)>cVY;^Avcw#O_mY=li{oT9 z9V8{Ej!F3qY-*~dqg<&u^{5Iv(<@%p1h=5qTW8Zzk<RtwOIcLe#>D)3=KAV!LPw3u z67x=Y)p+OIhAO7}dsug-M`>B;70p6z;cR{nC3`#E@1=tBB!X?<F!$&Mp7jTCdP|4E zm6oM4RL*N2qrc-*6?3T<Wz}6!o8QU@p<;|@U#hMtOXg<%JKU&$mvF8A4a>SMEtv#1 z6X+-xe7@IO7Ix5+vws}Nzl<mQ?HID(is9IX5jZ6Rm)s9UI@|V+g5Byg|6+RE3kU~` z?kMQ`6-PRFuCi6|r@iQ`v~@>OR%8yp)iHxAUmJ(BN6@|ZxnK$t2v;p9zvURS_cYLb zWuU-<UszDudNZZ4iT7K76>yH1ODk>tdT|nkYe(|^8?m>*+gHWm%Z%qnzJ<o?q#TJU zO2a9dMNL;NQ_4C>&8amO{!&`*36p;4JRi1SQl@6w?K*DH+k93eL8lh%ou~8WNmq1B zfmvSEc_T2n@i>L44m%U54qal#kr2u1I17)j?EAfNW9Oxw%VE<%%LdpPt3^gR6eoH) z^=bP)J@;uLJ614K(T>o`sh?=qFl+CS6@%-ma&GIn+MU_h7aV%z8s{9%pXqFqbDo^{ zBt&u=KNOl1C%b4#-`2<adiQ}QiT$g~LgA6k#b!nMgd7!7wjepO&mCsi6=&EP<BexU zdp6eA`pEZQuep~o10jON>iLhn-nBo6m3_BkcFx+!_P<=vqup~J>`7E2osXy_GPdmQ ctL=9E0q?RJ6Dta$D*ylh07*qoM6N<$g2RVY9smFU literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/smiley/images/devil_smile.gif b/src/static/ckeditor/plugins/smiley/images/devil_smile.gif new file mode 100644 index 0000000000000000000000000000000000000000..9b2a10055beadd67b13405cafb86829f57fffb2a GIT binary patch literal 1239 zcma*m`%hB`7{>7fltL|qLuo0r6uDI^K~PYv!&{ZmO~v3Ak*P$`Y372{4cTyWA|Qhq z7lb*@s7@{7L<=%*BDKiHsR-5r<ti{J7q5c|3PXC%v*UlTH=lfedVYOXA4MpZ$BPIN zF+D-FIyrTa<P$!>m(L%TN~c_1XWiT^QfZf$u-nV?A0MAFxqM0{qh+#}At7VI!4`$$ zY#ebmp1Ab6^`(8*m-pLTIl#J+!qcVL-AQ3r9I>xF%9-2}h`n+g4wzP{#<xY#Tel){ zGro^TQc_#Cy&>13|2(fLPtcSnY-W1SwduU;;|rnzHP?Kei!(yxilMPazBM#9$hScO zQ#%x}aK#pXFxa?ii>quDGVE~84*B*d;Glpzp>@JFdt7I5=)yVBa!|ySiy|(H=b)I2 z8w>}OFnIWrhf+tBF`Q8DG@v1ewW85t(L@o6YhwDk7}q6Kk#w|FJX$V!TH!HzQ;G@_ zmCm@y;G@a~w_H%o5I`ryZ6Wlos1f0g2$hm)og41BK`*6Cy;0>wl?I?Jgf0t3`4U>U z7`jkYet_zglzugCub!@#PT%!JtsCkX?x<&o(ICcM3Dw{M#$O(|FU5UNJn%&0-0272 z)B`W7(HjrF(8TaYvp4m~7ms{k@I|8xkNohMF%L#Rw8+rPn1?pTe3<5=U5*aM0(AJJ z)Bjyh5PBA(I|#i&=nJA+md!p{1d{^o3Jio`FoddBLLUkJCe%dH_tsM#;dGbMQWu4` zSh{bA<zd3R_Puzr+tQhc&SbRxKzAOc%n8)ccQbi;Gio*TdKizPB^9k1Xv>`KPe*qK zOg~xrFVOwJV>lZ_c^FZnBOgN=%d0}XD8^73hAS*1l^CtY%PQ2?!el~wJG#0s-iC1# zUUy@v4{!TnHdEtfOqntB6z`sao&{|IO#vYO-+9lltO#O~2zWn#{}Y5gO^h_ERV5ee z(rs-Gzno1NP^QkA8@l6a+>ZJKhOZC5PHXC3mN`+s(oLRCu#zSWZwJ>UY!CZ(Kx6eH zaZ|s7?f79JX^dl?jPE%`<;ph1EIrh{D@#ER*ff%a^}%D`Xxj@vxws@Yt^Bz-j3n5n z4pwQ2w7A>FY1?!{zHfL<hiuWB!1&A+x{kD6b>>`|Ku&spv74v1%bcuUm|C!JzaNLs z;+!CrhI65Zj8-qAOFngv+!pk6ssr0$Bp|V?WO20CU3s{wCnj(I^VSUR8Na@0Q$(bD ztm$CRo3yMPS;UvIxA@H`wu}ewd6hgFd?d;z;-p{!e?=8f^0#rQVq<;{xz&9vD{yBt zZ`JzKD{GItB)IM|#JR-uB-=p~E|8~meY{cG`|9FO$?lkAb)4<w;99ouvrEVM`s6xy z<@ht_3~_=Ne*;$%wI-GAuWh~OoYb3hKaBmG@7*7bv6}S@E6(lW2v&K#&LBruylHkE zvt2&utopa4!Eu=)J!Y+e^;NjQ#Xn~#XQ|(<%gTw<=_;PebKg4N(t*u}U+wh`k&CMm Vj&nnLOR|h=u2RsVwz49^{sZ6^jFbQX literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/smiley/images/devil_smile.png b/src/static/ckeditor/plugins/smiley/images/devil_smile.png new file mode 100644 index 0000000000000000000000000000000000000000..53247a8835b09d1ef67dba3a11f18fafc9551fd3 GIT binary patch literal 1220 zcmV;#1UvhQP)<h;3K|Lk000e1NJLTq000*N000*V1^@s6;40Lh000DwNkl<ZNXMm> zYfM~46vqjaS1GU*S&)}YUt*)8t*MQPX*9+*O|&&pn;1=eB#j!4ADSk<C>mo-{nDf# zGy$;|gqF8FTcInDR!d7;3cD<?g0Q?A(GqC{VfWs@|8wVF*kbD!Km2p=%$)hnnRCv} z1Ocd|PE(O%(>H_ukI1l7oz!7zONVbEH<urLx56-n+C^nk)zpNkYO_zqVgl?#DCa_6 zp0EZj`0O9+)&V^|()qS&xCgp6g~>*s`*Yx@y+B!tlKe}bjEN0x%{gD9r3E*(Y!Obk z1;0L?mInX!?SR)S0|WT8A82?CXxaw!z7PDy$SshwcpaE#1p5g;vqRa4EiekV8*>{s zVtVUVX}4SOUvFe)VsPzR=p4jHF9KgBz~6fS{@+WWjeQ7x=w<GVi@T}8H-PaYz}yfp zRsbAL1`a$2KOOYgY?$A<Q{c@O{AYdNK6J;%8iO}qco4qf&!BnVp@&(3Clhep3v_Ye zE9-$v8Nh{mD7GgU-#IU4UV7S?e~k{};6Z^GS@754bYjkKN1r1Bi#_|H_dP-Aee{-K zH^JQmb#4GIGdC9<+;lo!N(Ii+Yu78#X1wTkq{Ek#1oZU@{7DOLhwk@be<t+WZO}YV z5w?kwHW}ZJd^<Y6u`6(g10A^u)Lp<iCb#Ww27tgZR-2~~_~3pf+5fjyML|YMjn@O^ zQP8>`rH6!G-C$_GJp*6A7G!AtTsr34(w5szgtkylF6>ML{u%}vABVvr(}HKC>r-Yv zj^3GDH#K>Ruvdc&P1dDgvL<=CU75(Tq|PJ&KgL7vJ;dFz{DnoP1+RwlS>=JmGeFwq z^{C2;Hl$t1fY$C<Zl6t6;Kq316f5nQ-Oz`>g~1}zf={3{S(2mSe7Z`ONdC`ryF;v) zYgsCJt&H)&14;p4)Z2K0IN+aX&<z%ux58VKG@}A6Ny0<|mBdMWn-kRzn^Y*4z_qaq zYYP0s$NmLpSe~IFW8Rj$Eb+2+1=R4Cm2x^>*&AS9LDkXFn;wS$BF~1f0>YAwtDgWr ztWjmvtYBA;uE9uw?N+GeEtBufkAmw+1m{KbUS*{@cR*|8`4Cn>LU&=T7B~^6Af~43 zQ&IfhDm3MUV>mw=vlTYXmd9cwFAB{$Vfg;t5R8{68emjJ!QZ+UdKq^ttbkICf$p0^ z-6P6-@lM2Q@C`nM&SQyaI24KFZw2G{o5866I0Bb=h!zL3lp|%4&}&#pH9SDV5SDd_ zmaf<tH*bVU8pLWw%}YEbt{uEfdN%_jyzNFQ&t_GsRdl2@0(!}6XccK1ins$|m{;%; z++3g#?!#PQl_W?r5>=y;W$dVmlPg#AB-4R1#=0aNI2k7P8VdMM$Xqf4ADlpV954S- zxW1qXCzpnsK#A#XpeI6U7fi7&b7U?Vw}qPvuoO^?85c{8At<Cr#i1(MC1E;FhUzE^ zQT+wM%0_Hu4(G0XQ}6W9KF`EV8=05VlG>HSA(DUTlQFTO?VTR%|9Z*ej6?%+6V*|Z irs~YTJuAboQvU$jo*OjDtdS-F0000<MNUMnLSTY-g+Fxw literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/smiley/images/embaressed_smile.gif b/src/static/ckeditor/plugins/smiley/images/embaressed_smile.gif new file mode 100644 index 0000000000000000000000000000000000000000..8d39f252bb7fa7ec9fdef6d88624e1a08bcecb72 GIT binary patch literal 786 zcmZ?wbhEHb6lV};_{P96D~@q`BEza2hV}KlyX)9CSMdL=75iBwb*)e6^lZ^TQ~3YQ z<9ym9_NztoSGUN|7MWi?QqSi|{hloHXO{4<DKfw3Nc~^J@_!}U|Ha(@*K+;e#P?>k z;I~CWf0u~-TPgZyq0INSQvX&-Kieepf2-jCJ)(a%N&nj;`?Fc`XOGgasY<_REB%_O z|89lKuSF_<)+oQ;uJU)Q^50E5zZYBo+id)Qx7q(~mj8F#em^Yt|B&SWlXBmVD*Qd5 z`v0`jzmvNEFRA^%rt$x_{=aL6|F2s7e`@x7naiKOj{o=i{@)ky_kzQ}<B|XF#{4>) z_~%s4|J%ubj+OnnUi|-R)!#=se;-%<zu5f$X6yeey?^h`|NXG}|C9dzPiOyswCLaK zHUFP%`TuO!|JOVIzrXzd)2;vC9{&IJ;{X4D3^V|WKUo+V7*ZH?KxTvD#DV>PLrPO~ zOLALsOJ`HCoUX2(ff6I5(j*2!Q4tZpfZ&#R31MM5sin&#CAhd0CE`1iLk+?M9qjG4 z+gRE}CYXhGG$p%<sH<zrtEyP2oRJgeV`ta)aXYX+CfH3;(JeUUTGzq7CIQh&NpT^r zW(f}tni{)W+uCt*?);{vsu&t(dLY>;#Gz5il|$H};lTmMCGM;o{BjE(2r)^BbBibh z{P@t+(9qAsv7z9?f<`mF^~)l5EKqDd&269`vBBVI?2g$M+@&*%Qf^PwjLi{S_2}VA zF-@-)j?5<39<e&Jg9#B$N3QA0+Y~)Dn5g2zVbHQ8Wd>trd!MIy9t#75(h+viz4-x? z1j8I%yWFkWcurU?IMCiB&=IlH%)F&5>A06pjK`tFhciSrg@~}EIvwfdFq@%Zn8d=) z#>XQuA@E4>21#L+kQWI_9og3%oiqw2C>`S|*q~E!B4L%P4>xz(KQ8lUr+a2<r=FYh P(RIZl=k`1{CI)K&y=6%? literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/smiley/images/embarrassed_smile.gif b/src/static/ckeditor/plugins/smiley/images/embarrassed_smile.gif new file mode 100644 index 0000000000000000000000000000000000000000..8d39f252bb7fa7ec9fdef6d88624e1a08bcecb72 GIT binary patch literal 786 zcmZ?wbhEHb6lV};_{P96D~@q`BEza2hV}KlyX)9CSMdL=75iBwb*)e6^lZ^TQ~3YQ z<9ym9_NztoSGUN|7MWi?QqSi|{hloHXO{4<DKfw3Nc~^J@_!}U|Ha(@*K+;e#P?>k z;I~CWf0u~-TPgZyq0INSQvX&-Kieepf2-jCJ)(a%N&nj;`?Fc`XOGgasY<_REB%_O z|89lKuSF_<)+oQ;uJU)Q^50E5zZYBo+id)Qx7q(~mj8F#em^Yt|B&SWlXBmVD*Qd5 z`v0`jzmvNEFRA^%rt$x_{=aL6|F2s7e`@x7naiKOj{o=i{@)ky_kzQ}<B|XF#{4>) z_~%s4|J%ubj+OnnUi|-R)!#=se;-%<zu5f$X6yeey?^h`|NXG}|C9dzPiOyswCLaK zHUFP%`TuO!|JOVIzrXzd)2;vC9{&IJ;{X4D3^V|WKUo+V7*ZH?KxTvD#DV>PLrPO~ zOLALsOJ`HCoUX2(ff6I5(j*2!Q4tZpfZ&#R31MM5sin&#CAhd0CE`1iLk+?M9qjG4 z+gRE}CYXhGG$p%<sH<zrtEyP2oRJgeV`ta)aXYX+CfH3;(JeUUTGzq7CIQh&NpT^r zW(f}tni{)W+uCt*?);{vsu&t(dLY>;#Gz5il|$H};lTmMCGM;o{BjE(2r)^BbBibh z{P@t+(9qAsv7z9?f<`mF^~)l5EKqDd&269`vBBVI?2g$M+@&*%Qf^PwjLi{S_2}VA zF-@-)j?5<39<e&Jg9#B$N3QA0+Y~)Dn5g2zVbHQ8Wd>trd!MIy9t#75(h+viz4-x? z1j8I%yWFkWcurU?IMCiB&=IlH%)F&5>A06pjK`tFhciSrg@~}EIvwfdFq@%Zn8d=) z#>XQuA@E4>21#L+kQWI_9og3%oiqw2C>`S|*q~E!B4L%P4>xz(KQ8lUr+a2<r=FYh P(RIZl=k`1{CI)K&y=6%? literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/smiley/images/embarrassed_smile.png b/src/static/ckeditor/plugins/smiley/images/embarrassed_smile.png new file mode 100644 index 0000000000000000000000000000000000000000..34904b666773b70bb2bee3839d83a29debcd6933 GIT binary patch literal 1145 zcmV-<1cv*GP)<h;3K|Lk000e1NJLTq000*N000*V1^@s6;40Lh000C)Nkl<ZNXMm> zO=w(I7>1wk%p@~O(=^FU+p!JSA82S(qcK0&Sc)k4(}fM{Mq9<YQjm&L#g#7V!kxcR z!G(eWH!d2XY6TZ+W00A&5t~ZHT1lp9(z%mNlbOuinYrh4ac|P3rdsg8%i(f4&pEv3 zJ>MsjnFX#lTH_6kKp)TpbO!=R1xf-xrJelzTI=O{@YZ<4e$;-%^mhrIBsfXPCjFnW z9*74@JTQ%z=hIGp@IT?L@rGvLedd2Z$j~9EsY2`h5bK2vyFmo5jKb^)OnwXH3f%h% zG;SXN4yT>`+?sG7tfTz)-p%}aRK1Qv!p2^t_zO~=KuUjr0+Dv8+XXF;LUss-UsZO! zF6?+|0_3ix4X%ZM#<_P6>YpFrbv&m=X2cYK1kVLe!CLU_)tOpoeGQr)grNhl<uTa# z@<7_jKfMax8gJOo{P=NB^lGK;aYCUBVrpkV)t9wvZlFblb$gMHx8X#u^3eA}V_SdP z$q&k8X2DN|dgFY(Ct-21^-UPLh^zyNKq{F7h3?J<u$I)B0-$u=9!2vO%7Sb^f^2Ak zv19Pasc9tCW&%h0m^zuDa2Br;LguE>MTLS=Tqu(|b(z%AWlF^=rJ_e_IK#-0gPXHx zQP6^7&%6uGeNa;aQzsKZ-x9osYzk{5urQA;cxXY<q9vEH{v|5R<viwc9w>yYAvXtF z1iL8Md>L=-W4P%)$ff{#!U4P+X9O)qpyUCd7Bpnp6ssYzZ9M>+H`anGiEZl%yM|ap z7@hTCQNe=#bsD|rDdfU&fbOgCYznQ0RSPNrViY2ZDOTuz<~INImoi|L{sXt5b70Ro zSQm6rKtZw>u#tp@vME^!4^FF4QvV~OXvLxxi%eyL#01HioIz&=tqN2GTtEf13hvA@ z&n(x9SQk<)3pRi(D~R5;vVoSPs%WGMoDm_`1&~?=H{mkWSYO6N@EAW|BAapl0e4-G z%L{;52w4bwNPPp68)FH+WJ{7*7p86ziPZc4hWv#aceHS3c!Igv@~RrNxv`ErI<~^a z91;<~mLy_GE(JSY0Z6WRMAdP=+MTdd=kdx>B%+vli)@J^x5lBiW))m>W%TR}_EHgb z1=G@uY^uYUDC`@aM#62YpMP%bIA8YSxpkIWV@%XT)>)9iSLN!ZdKS$a?4m)dg4x_? zO?B3=?`LRg?@v4V!6na0JNZGH+6U-*lTh@EF|`#-jpqk`*=rB1=g(>(<YA%}!c7Hh z+$qDIZ$MM~z*22D*VOmJ>^w3-=TW3uGUAndkhgYXBwR(pE=b7G`4;RvG65X^w`S1- zd`Rx>lbm`Ma-$G3ev>e0V2NPy?P>0WJ)c6;uFruN(@uW&M%vsHX!RHuzloC_VOiiu zZAn`nc98H3X(#{14foI$EpIPyH_#Q#0H=YGVE$ocYrA3i{~dn=Ck15*vEe9t00000 LNkvXXu0mjfxmX{o literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/smiley/images/envelope.gif b/src/static/ckeditor/plugins/smiley/images/envelope.gif new file mode 100644 index 0000000000000000000000000000000000000000..5294ec488dbe44117f3ae6836b932fd3b6a27b52 GIT binary patch literal 506 zcmZ?wbhEHb6lV};_{zYre8tk$>z1uszh>j64O_Qu*|u}z_8nVy?%cj>@3vjLcI@7> zbI<-A2M+8zcKqn^lZTI=ICkRHkyB@mpFMZx-1)QTFPy!0{qogoSMJ`ubMOA0hmY<* ze)90ilgCe<K7RK6>9ZG4U%q<&^7YHtZ(hB9`}*DcH}BuSegFR5`w#CvetiGw)2Gj0 zK79e9&)>d%{r>&i&!69a{QU9z_wPS{fauTv|Nj|?0E$0Z7#SE$7<52tL4I;z`|mKT zz(Yr>ee>xC(`>8x`qR2icbv&EcF5r_niBEApqoW7H@QK(@L0teuLXS1jk9%9j=l*C zakTxfDVmlMF3v5fs;aE2(%aXsBFQc8Zlcf5FmooC{!}MpAx^^pEj0xdLr&qW2qp!e z`i*{?3QWFH=^CsYI{Ny-9IP7YEme9_N*d~?G|ryUP?XVY@z`{2&D2fvT=iGgi*Op; zF6Hsn*HBTAQz+%VF<*>Df0MqZinczBSeCIgQ{DABKb#a34zCqgu{y*3V-Yi_WagI~ zL&k&7EesNdZZ8-P9+}y(V_QN*Lz8RwWZeKCCAOk&E=R4TO&XHHt{q%j+gxlIm|8o; eg&mr?cz+2WY1B5-lelnX%Stt7@ejaYvIYP(9Oujc literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/smiley/images/envelope.png b/src/static/ckeditor/plugins/smiley/images/envelope.png new file mode 100644 index 0000000000000000000000000000000000000000..44398ad137f1d9591692ef073059d709bac99762 GIT binary patch literal 760 zcmbu+>rYZ)90%}|sHtfs)0IYVDqC(=uKA*+wKS|OBd=S%NS)@IT29m1T$$Q(D)Z7T zEnbwh%*#~NMDPHnP=GPO6olp!Cs(;0<N(6qW{1C_XP@W$y!&mx@6(<|xDgQ+8wLPC zM8-{g4*DMP-w+I%GTW&h0N7WUm6?~WG+6ik?|3{Obb#0EMbqteI}zv5@V8O&AbDbJ zVsd=y`{WFjLItO2vojz_1L-t6eU?5)WiUVn6J*XYnDes>3qM%wc`lE`TjcV7|6Jt% zTI6&10-jJL5G@Ip{s<+~l~t)^Rkk9Pi8nUZ<?;>r=K7XmQ>ofgsgx?ULZw!!H7bo( zt=U#<wQ8MStJ81m3_86YrPmvD2BY5SXE2%!CKP0Z{7jJ92$@Z0KghfTSuAFY#R9`S zFpMS)TVX582HX6sHoML4XW!kmI~==CrvpJyP6R<*F2v<_q3e4*ZnO%o&+GH~&_WKS ziGtC_akV*wTp%zk5*vLy{$d6px30dM%9G0En+lEA1l!$Y?)6smOA<2hsd;CX8U$s@ z0og}eE#d-7`SJxy+48NHq~5kHB0K6y5An1nQR^<mjgab<FOlay8D?Q`oP2V9jrb<N z>udnclx4YJ<}iC9hqo?{7gljfL_J5iE1FkCjux|?)+F#xxO5Oa=8EYgscZUTb5h&- z1;LV4O!#1Uj-a?<?eaCNyj4=AAs9G7TkSwaM_&Vz+4*3A5J(Anbj(unfja#;h$`f_ zMdSWvmx_ZAvyzD6jfIaB16|c229mGGO}g~D@!$wP9&EndhmBI<c2k-|?}*<v4eduh z9e7qyy;0R=p82SGSWrRZB372YYFW5dv?cyp{(iJBg;NRlCeyk-P;zO1=<xKH7rFPY syvxV5x7e_3=0JKtQ)UUC-4Pq(4895y&(~n%D$#y{jC2B?oL2Pe9}J85k^lez literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/smiley/images/heart.gif b/src/static/ckeditor/plugins/smiley/images/heart.gif new file mode 100644 index 0000000000000000000000000000000000000000..160be8eff867260e6639fc13185db595098fddd1 GIT binary patch literal 692 zcmZ?wbhEHb6lV};_{PAno`GRC3(I;Imerh`t9f`<^7C(JV%o&Yx{HZv9|OY<7M9Ii zTwA!gckuD;;p1B)Cbm{ma=o0~21UgU%F0`Gb+;KAZ8tUDX=8JNmGufI=QTdQ>wJ8N z1O-n?Nu80Fz9}epTS(}(sOWuh@$1skcO)e4NlM<9m3=HNeMM36mV&}vRn`0I>dzDu zUa6`+)YN>Uqw`Kv^Odgd2YvlddV22+489r}eKs@uYHt41-28{7<zH*-f3~*&?d<kA zIqh|G+vnl2-`DqmzyG1o(8CcCM`L4;CnlcE%sf|CcD|zGVr}i^mX>S1y*DOJx;b^~ z?U^(0E?jtj$&v>vS3X+1_R;$FFZS(wd*;lCYuCQNeEH+`>!0u6|Nivp&$n-XfByXc z?;itQfZ|UUMh1pB1|5)Xpg3`0|KAYT)ZEhA))dQPWZKi)*WY6(5ZfB-#4a^cdbSk1 z>y)W>a@I?hm~q>4n=iGomUUbZ7sRNhvu*p1?JCS6?JY6B;{F@=#l`wL2#UFdO^FS4 z5oWdZ-5BejZDnnB=kDDl_qCm4V?AUHUc7wu`URiYHBTm`&tH_(KPxhMA8Csc<B(vI z+Oc8jjDyWnPkanM;eTPOJa5d61&vJy4AhtdZk+gd=pesN^CANc*Gq2Ap=&+1Mj0H9 zV3D#YdN9LtbJ|%ML$wLJ7bLZvpYPE8%jaS9q-pGGQ5vzQw!GxvWEC_N40zOXb#;XQ z1P+F!iQ>xab`2807v|h#c9;71X`w=M^maDEh84CgtxOFp3|c9U86FD{IxtuR08VrG Am;e9( literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/smiley/images/heart.png b/src/static/ckeditor/plugins/smiley/images/heart.png new file mode 100644 index 0000000000000000000000000000000000000000..df409e62f55f9915efc6b88d3543786ada9c2897 GIT binary patch literal 999 zcmV<D0~q{?P)<h;3K|Lk000e1NJLTq000*N000*V1^@s6;40Lh000B7Nkl<ZNQt$S z+fP(S9LGOrcR>y=EE0+jENy_ca@j?ofHzuh@e-|#F+P|WlD;$zCVk-#;IW1m6Vq6W z5q+R(qBeCC64H7>h>&Olkt!=1O9|{r5IHP#_qgDm<^1{rhRcdX(r@y6n3?Z<zB7}V zQ36w8{x3O}H{2OcC-5y$0h9qcFaY>8-MF*NcLMkd*b8I=eZW27CrvkkZ-9ZRFoCHs zBC<;?>-qE6R=IohsQi|lEuCd$@}RL%W}iF}5&2O>wu{Km)BXL@*U%uoyga$;a>?zw zI(c^fyohCui^#qu<`TGOZgSG>I&?^WPfeAvf&vLwR*GI)DnmIra^2~akt<h3L}E|R zos;XTDo^wB<lpjgncuTVG>=FANKKVH2M);m%a<_``64hCMiG%j;IFQO2lHKiKV`YO zD2lS;>_U+U-F`nQH8s5I>7mBs!I_k_!XqN|kBkthsG!>Cdjgc$fbYhxUCW>A>x&Bp zNKH<r&g&)G+e@9-y9NxPC<>qD<q^Jhi-6Bp2sGM&n$h-lirj9*val8w;#P7(0{e@L zNpd*e>cO%o%*tZy>Q#Vh2T(lw=n<~;bYijC1}@n8N=Zs$=HWvCuLDRmLm_P2wh=SU zO~Vxt%uoox=>UdY9#7Tm#02SEw{99fV;H1)JOGbvz+h%o730AmG1J_1jR%8dR#yWI zDkAc6bar;AW5<pyJGX4X73U^wRMU|N&k_^)((gCys#;*vbmQ;Dw6yOlFI-@7VuJA8 z+<UD!6p1jT>+Ei8!>+2$nr>*e#n6`Q<HvivXV3ER#S7+Nzh=QSH(ZhVc?KsZDQ|0I zdu?qe@B@Id^eehEoGzf}QFHUof6ko2o1Tt6&VyR5m}T*JW`_Kh77Ci0?gRCjZbVkV z7Xv;3djC9q`qRlvm&i{^VLiMh!f-guhfPhCwzLcbpKH1?y)>?@{?FYR&X2^h`g%{E z%nJE@<f>}i00BlK5i%MY*nRnO0NAJLMqs&T4SX@6(27Ry-92(7J=WcgJ0W3>XDk{e z`S4+?Z`=qfc6*hk8^fzTap8*ryJF#R*X{cHWc$DXnRfe|v5AERY<u@ofAeO<uB!E# zZrqQ@u*K^H&~)R0BPHcnZD(gRT2#cSX%aL|MobeaDWRsL!?dgFiMN5*UHP&d9Fth= zm**ERs-x}geA3uR&Z$$c6ubRvO*ejBZ|*zcivcCTH-H!D2U<1Vc=oP&8-l;D{sRff VSf%JUq4EF#002ovPDHLkV1jhu=wbi> literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/smiley/images/kiss.gif b/src/static/ckeditor/plugins/smiley/images/kiss.gif new file mode 100644 index 0000000000000000000000000000000000000000..ffb23db05a76e7e530ce7a26d658152a37028ef1 GIT binary patch literal 683 zcmZ?wbhEHb6lV};_{PAnjFE92GxKUTwsq|6E4jGVaB!^R=ikiEzMYkIFFX4N4vtMc zJllbYmv;vT$39NZwc_IIq@_0~DeW*f-(_cah?DauKmSQCt~1=+S9y642n!z)6+I&$ za6(M%l$h87Ny(#fa;K%G&&kMK6coHIB643|{(+?ABRRPz^75yZm2c_kJylS6tgik{ zP3@(!@=G<f$68viG&EjlYroahe5tShR#*3fw)SUz{Z|GC?~II|T3bK1xBqNl@WsI3 zyNSsUGqWES7C)`5e%jjpx3k;h?7ZLG`$$yOV+V)lUS9v5o&USK{`d0w<Ky!zEbK*a z@bmciKjGm&qoPivrk={qK3iOTwxr~IW#xscs*81XFETQIrKY|rDfwGk`nRIu#>9y? zCQZ6Ib?WWev;WSV`FHm0e{<*FU%K?+nl=9xF8sHA`QwcnpKRLnY{!m&yLZ1iefr(` z^B=BW{dn`{*T;{)J$?G)&6_{pzWx3A^Z)<<47h>fPZmZ7hH?fSkP=XwII#b3C~s<R zX>DsNi*seQi3)VEpJ;D4#m?5=hS?>)tgWmlAxM~&MI<z9ZhLcCNq#}u+zt7;g)3Xj z!r3*n_vjj#80qfS5ECg~b>ify)8%EMTozuQmWs?umd@UeQX(ZS+044;#%6}n+)NBi z+|v5S@Aa9}ww0H<F)FKC`$k6lyQ|1~6dYc&;9xU{u-vA}Y)wq8LL0WMR7!MUW(@1Q z`|FSchoo8hE(5_uE!`3($qPzmOgiP)!e?6XWyZ<JZfB(}itlwibaYx{z#O)xV7U@& z2fsqlijIeiRx)dSc_UGn@Q8(5!XV|qg@-JioP2^$R%{AB#?ZtiVU)6Cf&#-tOID7= OlS`LxShvZ6!5RS1a28Pj literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/smiley/images/kiss.png b/src/static/ckeditor/plugins/smiley/images/kiss.png new file mode 100644 index 0000000000000000000000000000000000000000..a4f2f36382bf1c00264b5514d9b00d1a70f720af GIT binary patch literal 1003 zcmV<H0~Gv;P)<h;3K|Lk000e1NJLTq000*N000*V1^@s6;40Lh000BBNkl<ZNQu>z zPfS!-6o<e2=FOu6&w;^#8E`N(Qag<eh=G(g*id5|OKe%y6=~d%MqL@pqPi+;-5@bt zVBIt}7($6Fv`B3ekwB^xFfvJj(s_ka9vw#BFfeasZWsIsjNpz%f5}a5?#cOnxhLn` zE5h?j?3I)~Bkwg_-7OIC>bZaqZ~!60w9*;zw}97x7lvs~?8Fe6H4k|81Hjj*c>Hr~ zYRV~875Cx8e*>MskHAO3r!U6GOKi)+<@b{v2n+$uhH3r0D?H%U4*`9~-Ma?|o0`xp zi&Q!d#l^hd*vNs?r<uNUhd(<zk+ZY7G!1KYm9k5hsAy@ig{ppHnAW|Q-~q3m4-7tO zZax%lYva9Okb;5&NT-QJB23K95jIUq3koPLEX1Shpz9<S7kL~CkvMXM6Fogk4wtKP zqfA0dxesUrnnKsFS595N%!$fMoM+F%!Gka}gM9uRIW`872;}4-Dk`9?4B>VoEeqM( z%RpZr+L<#{x3z_UZ-I6prTiw;+WN)p{rfCDc)-bEknHMeWGsf9oP=~5q}(js=5EUw zfSpRw`|KIHb#)Y<Iz{l}#qWib@|Pb1f#b!t%^N-+S*p4%c^e`Fm}!(qCYdx%W^|o~ ziHRW<xL0%Y=JEc921;^sacJ6RlATI1zOcYzJkDw&fo<D3oldeejXal&H$5Jl4#%cZ zGMOYCiBNUp20)LHQYt{#@9pgkqZcmlPDu%xvNl^nRr%NHBpQp6u<bRts-kHcxj8xH zB@#&6-n_~1>@41M=QwutYCljX!t+Z6ym~h9@V6^hs>9c=QR(-i2(jKz0!7mhstT%# zOeT@GO*)ZS3u_wbl@+F=QDWugob2oSN2uyC!?ga|+KN7;9C*~&SZZ~35%hRaoKA$x z1**DMS1CbJQ1bF{`2EOuoYj#LOv_?AD~pexK25obias<<>nGSU{)TDI1-yFwySHxj zKZd+tJ31(HyKxJFT3U+3=R?WQN6~ds^Yhr#)2xh*5st-(78deBcQ>x0qOUf<+lFXE z0k8fx@ZBG`Z&wVRKhM79WpY%NY(*hkQILR@N@1l^M3YI}b#>Hsbl6$@_kU@aR_j*Q zOYn6A4QPqa%ru9)yOqfBFpDE2L`O#f@Kjadt*N1~wwB`hdP6uIpBbh#kjdE*zQrU6 zybl}&jv{5blu{9jG6+0cUk?q_THY!DmGB+R1Rye>-`%w9d%lwl(~@Ki?W^?v{pR)* Z{vUNCpEyW^ic0_h002ovPDHLkV1jyk-jo0U literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/smiley/images/lightbulb.gif b/src/static/ckeditor/plugins/smiley/images/lightbulb.gif new file mode 100644 index 0000000000000000000000000000000000000000..ceb6e2d9ea3a6496e3df43e6f815567f0d840bb8 GIT binary patch literal 660 zcmZ?wbhEHb6lV};_{P96J%M3XD#yGmftA%dYn#lkbuixUW4_bNc%z^1_C)@h69jKh z6}dZI`uQ~G7c*GDEMWb=lKsOXj*m;Z|F7lxznTC47XCM@1io(-`LkKz|8~JY+lBw{ z6#l<g{QrK5yR#MV%u>HM-|*f7<NFKE?k~1{v{?1+Hq9S9RNrqk`+rF4{}JgQ2W9>r zmHB@{{@X#N|ECoGpI82WR_*^O-T#-={$JMme?|ZQ3A6v#?RQKL+%+|H-|YBj8=N1n z3p~6y=g89h6RXNkuBm#qHSyVwwC6iB{@-x?f79*%Eua5)!hc=L_;V}c%caWykBa|4 zsXxE9^YWg_HxAE#eXQlpiO#pD`@dXmd3SEw_d7HGKArUc<>Y@)XZ(IL_x6cpA1*KW zbaU;a%R3)m-TmeMu0OB0JimSP<=vCto*euB;@rEZSAV{}`S0tse_wBZdh_7x`)9vC zJ^uIO@&BJszkPc3|Nnmm(t+Yn7Dfh!d<GqmR#2QcuzzgGZ)$GNYin!iY{`>%H`LbF z(b3b>*VB^E>*{Q8&q$dyyCsz;&CO`V3NsJR)J3h<f+CwmM1`yuu5YzvVzErzxhp@< zUoIp)C*G6W|6o_1QiSu$E5^D?=N5CR$=tmwt0B&@?obvRzrag=_M}6tkrwuT3As1l zeV?6|?5Mz@;F$cTuxU|p?^Gp|4vm#gOkD>OotEe<oR;O$slaqsVF%OWR`-5`fP)Sb z1W$BIX#^|@;LL1gRp7syW7(kCe3n<*MCQh)fC;lTdDR?dI9zd@GOu+{kH!I$7O^F* dJAUjiRA69G3*cV*@=^<XSWT<dUM>~}YXBE>LOcKf literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/smiley/images/lightbulb.png b/src/static/ckeditor/plugins/smiley/images/lightbulb.png new file mode 100644 index 0000000000000000000000000000000000000000..0c4a92400d0bb454a1f32a54b0ae0bf6a782a960 GIT binary patch literal 919 zcmV;I18Dq-P)<h;3K|Lk000e1NJLTq000*N000*V1^@s6;40Lh000ACNkl<ZNQtGC zU1(cn7{`C7Y14e#CC%tgnn@=%F2hQTirs|KO;jvcWkRpiD=!oW>WvN&!5cw07<wgs zP<kbL<BgllF{jg_o3$O-*^g+0=49!|$w`)-)11%5i-xVle1Xr+dC&8{|KIa}AKv#B z(wjGF7O_a+Vc>D#C~!Zp0GtE9mSpvpW?G>UJQfM~fDiQb`4{q6KSIy`ikVO14h`ZF zA0#yVBA&jHkAYVtS=HNy$0C6+RDP0wem7CP_8HM5Z_q71g3#&1DbAy3XUP8e3A;vK zC35i1-$59YWL2r<bTrt}sodq032Wmb`<}amCukvLUW4Q~F6Be~yG-tS`fW;oO_RHP zatJupmh)I7FlH(%7o{(cvhVrx2-$aFYyQ8=E)mC-Aob1X-1+Pk+~N2UNmjpa<$O|^ zJx$-?mk{z_)CU7tSzP61!h=zi+0y`%wM**3NA$Hhx_d-WFVzR%DzJ{%Z=kQu0gTj6 zch->%8Ojna!2&G<*xOk_00BU_J+9bv2Rbm6C4ixJ;F(Up7`Jm*>2kWk(RV<rMRpXk zG>cBZ2#~1-)oaVFum2EQdJf87FfA}`u&Q6v0?WRYSJzd1{f7W%+ks!`9X-KDGKo>h zgI%sd?JD&4SkITpWy<u9o&dPe4t&}jjxUH$d`kL{Rh%uOu4|`cAuZ<-$ER?I;|sua zOSmMf4sbjeKUVP!OrYlVnzn4a))XDjzy!hgF@Tq=x|Yt7Wc3H&EC0ZwlvJyxE!+R4 zn<l=!hXKw?a{V*g==uYk3*7xATV@BEW`k1(+X34_E1Ia9jaPgK;Cv%MGx%>^!5Do{ zonh1U0E;P;#gxHf%4CE4h&(ohxBnnO!)LeIlj{ajKy+umQYoV<X>3Cy6g^-9cSy2o z)MM1UL;y&#YQ`b~CB5)%^!nm=6xLU`v6ke<#-BKr&gkU(grWzoGy*q;SK}W;%iUYt zTqPtX7#N<QXHT4-zCpaf-3IVhGjYSV0K_7J1TeEz$cB{b*C=F{C}fujg!eK${(4rD z)o4R;E9a7|F2*7OY5wecp_Q3wdiLByNZe0!{}{lTX4;m{tL~qvl$|M|!xaP^;BR0C tI4;R*@qfXq1$G0yz^WvxW=lae{slbFowx5EC9VJf002ovPDHLkV1hLczo7sC literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/smiley/images/omg_smile.gif b/src/static/ckeditor/plugins/smiley/images/omg_smile.gif new file mode 100644 index 0000000000000000000000000000000000000000..3177355fe8a5e46fce327ebba5b1484af2584de9 GIT binary patch literal 820 zcmV-41IzqJNk%w1VHW@w0QLX?mtX*`a|Eq)1+97tuYV1>e+RmP3CWNT%b66*oEFTT z71E&>)uk8bp$zAw5C5VA|Dyx{r33$_1^=lB|Dy>1r3?S34*#kM|Emc9tPB6I3;(kY z|FaMOv=8R37yqde|Ee1Qs~i2T9p<qa<+L3Cw-Wcd7yr2v|GO0bx)uMu7XP*z_rDwe zzZn0$9p}9w=e{HUvLXJoA^ox}|Fbjyv^4&^G5@<Z|Ft;(x;_29Kli~L_r@Rp!y5m@ z8~eu}{ly;t$sgyyCGW^5|H~o&&LjWNCjZeT|I;V_*D3$nE&tsw{=_o<(Kq?qG5p*y z|J6A9(?0*<Gv~KM{klQ_y-xqWP~p93{>DoE)<o&YRQ$nE{@q;s%54AJWBb`<{MU2; z*LeTaeg4;e{o{K7(18EbhyU4y|I~^9)sFwxkNn=B{@$MZ;e-F=kN@ME|KOqj<D&fR zssHM(|Kqd&<hB3iy8r9A|L@cP@6`YC*#Gw3|M%nn`sn}u`~Uv@A^8LW004jhEC2ui z02crk06+-;009XcNbrxrKLisB6jP#z!y-HY0NBAoq6rl$PK*&#hG3ow9ZHnoz+r&I z0U0u2xFEtpo`iqY$Y`TwfdLXniu@>W;EJ9cX%GthW2Hooqdi*mz?dS%i4q&4+UQb6 zD9k!#s)Ptpr3@Xb3Ww^!aU;x}K7H<-p@KsX*r7O>WI-ZjNs^pI@*Yt_<P97gLjQp1 z5hMr@AVdfd0P=%?fgMjvtf&J*C>;qZP^f5n!a;xl4We#HxkUsWm}n?W(4ZlO5+x-j zNO&N@%-gWIa~HH@#!3hgR?OJBT~N&jFmlLnfda*gn>}$rsJX4j!j~utgg8m!kjRrE z45sjr0ilOroeWKk95G@<L4v{v5F}OMVowe`L#wDLT$qH!5hF<Cfm0`7!A4bp2-brS zJ^*pl5=t!fS_&d@u)-RZ2~@@gOJU@pQzD6$feuu3B#<99XmG+)D+(Y{0HbAaK@2n0 y;737dNT7jeFc2`n3l~f<K?D$>LEImB&;Wr15?sLK0}s%E2XP7=bP#R<0RTHW+Mxab literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/smiley/images/omg_smile.png b/src/static/ckeditor/plugins/smiley/images/omg_smile.png new file mode 100644 index 0000000000000000000000000000000000000000..abc4e2d0fd657fdb681356a836a798f6b97255c8 GIT binary patch literal 1122 zcmV-o1fBbdP)<h;3K|Lk000e1NJLTq000*N000*V1^@s6;40Lh000CjNkl<ZNQtGD zTWB0r9L9fVvYSiYrpfL$-E@=2AX;kDi@AYGm0|@`A8ZgoiY?eaMG(b;B0fl^Z@!2Z zsBZ=g_~L^>&{j}T+buSenpo44P)$uX$!0s7P4<#xcW2J=VP-a)CRM=$-wgk`{LVMu zoQs&bo92G4A?T|Hx`9rh!x4b)Xc&k@jZA8*_r?9-4ME>=l>C&~_aTg7Foq#9Y~KuY zLeNp@XbhqCM~%$Tzrq`WzFOcTQj;gSavHoQG&}`?F4*xn2m#BZus8xU-$A|rJ)c4K zBZI(eQ6rPw5^jUlD7QY`!;SOGI&fOBvkS30hR9DN)^39WDq5hb75vXZ;tE`SQ_=di zVBhQ0AP%`5+zbDln;)E1Qy*jPKcg1s#>B$p&&2*p(b5)RcViV;5;JG=!^IdiwUvbS zpCH_Mma<>Y!0zYa(KiO8M&{H8ctg;4oYcfueAA`Owii+P3Gv&tTZA8~!5{YFHP;Yp z1&|V?!m6zyZLBc&#}a;jE1@F;@O6jcnI8q!d;6kBW=PE3P1~bFSrdGFIHY#uQGP#~ zH3QW?Fipr6AfE?I7U5_bRF*?!1te2Y{|;CcFn$4!U5+8j_G(Td-OODIv3diw-HVo+ z2FrrvGNiKT5d&RM6~X#g7X5k}l4+QYLwW@!&%@3q!0Uy%OCg}!<G?#f=&-FE%}fBY z_#f7C7W$Pq0Id%<*zl`{T{rKd(gP?3)(UER08xJg5;}yR?R1@YV2nV87cA5Md`HPe z(;guTlFO20O0L&woUd`BO6sTwn!y+W=<pQb2_5P^5=&|b=c<BTb>)Pbwga$hrx&DJ zuY(@Qt%0RLN<``=R#QloC3H~=x0~z2ZAzh87Ja9hZMU;=P>Q~n9<-ylGjBU~or?nG z7K*RCvFHTaVI`-PMp9HX4$+16`p!H|&6h-COL^<S7!d^80rZXVT%iPNZSJI0vb0uU zNt9NNSQ^KLyRi%tXop*Q@L46XI0pr>c!9{TS$o_bs3hbsvpZ1Ajzod-)S@k3gMDWK zhF#|o!o4xJAArp27EUc9W2?jyCh>$x<VJ3jd*!V|EZ;^{?S^n~42Wm|Q6rN=c>3uX zfUE@tQ*MgJTk`MAy&%``DJf6|Q)=lc=otXv>5m$jl<S<Rkr|?<WsrmCU^%N%FlDK; z?x*XiYxGgq=%f2+XhZhG%u6jhr*ZIIsA(B=*Y?dzu9BmSzrTmk_n<=AjuqhB22COR z!9QnVIb-K-T7VZ0or9LQrV-lKORm#_ANYi&-%oJ)Wmp=8GR@v3G?YEnr9j&AfZE64 z@Bq}begV81H8P7X>z}r{7f|K}W-kUwj8GKVL(NsV*Fbn)i5i(N?`7N<UW^Hz1loXh o=L~Qi7;(-&m2PeS8UBCU->dy$hvS~s0{{R307*qoM6N<$f*}_dBLDyZ literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/smiley/images/regular_smile.gif b/src/static/ckeditor/plugins/smiley/images/regular_smile.gif new file mode 100644 index 0000000000000000000000000000000000000000..fdcf5c33e3973c6fd0bf87b615ba4bbdc3b7e38b GIT binary patch literal 1209 zcmeH`{ZrF*0LMT3GPk)0SsSu7wzZuPkcY8=Y@XxXkYJc`vj^-hEJ-UX(mJTq4h7@} zjUQyoJ9$VW2By-gAwv-k-DKK8PKQ$-N{I24m7O=PYbE=B-<|(NKlS<tUU#p%S6+Uu zeq*tW$VilshFzqgn6&Pt+CPZ<dO!R73Q=DL_i_cNyPOxQ=iT^RICWBVy*c6fiNu>N zvYC?tv{5(}hc+%wb8u!EI=DC`!08o>u6T6t;1a+sM5hQ{@$ke?JH>M@8O}=3Aw!1( z-z3rBsuny+3l~(l@ECfe=uJR>BF-m8`{cMRN56_Wr)4}^`dliyGT_N%`kqGL26XGu zn??6;j$Tnk{c3pS7*N2UL=Px&Rf&KagHJ>QS~{S?kOntaVQ>v@u0?P)LTeF9#%K!0 z);;_&4R_Npna23j>5*q~M~`p@-D^UB0WMjXYg_5j9A?}U^H~tu$xIf-hDz|$?xl&h zVq>KkJAlw3X6!IMQ$o*vieM#1st~HhgcY}KxN{Vv^|7fIX6nnOa5d)YG24v!FEHJT zS!eA2S^V}LX1g%g9h*Oog<kyLg9jlzxQ)m-{+dK|1`qFnSppLy|MTA#(Eh__5n?5& zkF<}TF!DeI%avxk-IUFi@(tCL%~6|75nVAwi1?|(c1;FHWZIm#q21`nHcQvN+{m7= zYqu;H9F|Dllg1S^C2u{RdQd(WIAPR}YZA=&_;qTtV{y7O+gj&P8$LV}zB*)SIv9La zYr4W$7<R0b(4_-4jhl|JBimn^zt-Z;*`G7$EX}Xx<ksnSO}EtwHkR!ZuE}(A?HXep zsiKzsdMvqMd)a~3cl;KEv@kQv<n>ZQd7@HIva4&>uUZTg?QT8tZfND3d6gQisHn52 zRCf2+0^cUtaqIrYo$ePt(|s~r)|5W~ywdn_uID2C3ngE_tuZBk#%;D=Dxz%1|K6gj z=R9e)uYO#j@vcz)@!Fnp7VihOv#^jIdEIZWqMj2+evWq(M`~WNir<!tjeiCk-e}Hx z<`yTlr?|<ux5Pfe=a-Aa<`jdSa20bFYhKQX=0$#%K1?WzS4rXuTwk$-=|P>@^!_%t qkE1T}vTO=}p^q(bnUvZ?!^Fpy?lJmG#KS@EM|@S8cpr;JHvJ1$jidMg literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/smiley/images/regular_smile.png b/src/static/ckeditor/plugins/smiley/images/regular_smile.png new file mode 100644 index 0000000000000000000000000000000000000000..0f2649b78af3e4e11df8026e70531a9e0c81b117 GIT binary patch literal 1084 zcmV-C1jGA@P)<h;3K|Lk000e1NJLTq000*N000*V1^@s6;40Lh000C7Nkl<ZNQtGD zUuau(6vscmUz^s<tbfxjb8!<L4%=GX+733S4EHeIgBvmswTkmeK`O!=f^Sy#;EVVN z=9_~JeDPsJm`)UQb}J*du4C=AWl)-CZMWPkS(7zMbMNo?aBteAv^em<my?^z?{m)Y z{LZ;QHJ!||mPNy%24D}+3-tH`uzbaU%LzL-zuJ1W7Cagb9YV~v%>5R@j)5J6RLpzX z+6!S{k^OTh{cgg}o%>ICG#qLMzG8l&k4r}(;6U^RXx#;kyFn?qHv)HuVfq(XEWxwi zLBo@0fc}J?ORoy|z%s($UvA<0fVf>p6>Ymv`D>`fII3_H1gP(TU?;S^45>>n^pVi{ zvEr!@;-H=>2UrO|&5bYmWb$j=r{58+ZY!Pt6Wk)W0>*%AmOXV4Jq|4gVDNQ#<P~WD z@Jzzay;%j1hC_##A3w|aUE=I~l^VIJl$iq&PsXesz!+%S58F<_k3GVHKNJny4=3#0 zIW?WkdR-yzI6v);NaG^X(t>v4pa20YmH~mD9U(9V>*{?#=xMKC4!Z4AaO+|0B)l{@ zhpO4G{fg{i=0b%0b!2@2U5qbfR#+%u4c@`JbcaITp^$g6hLTuAHif(k#^24v0JJ>^ zfdI^0hyZ)a@Lp0DtgAyiDKL(=W!I2SJKiA*q%$t*jJy1t6%Q@~&H@rY1)KIk$^z)E z_2E6(!%!ap*QsjFjT`ESY+djDZmR>4ist|ni(ckNAZ;O$BdE!<06oj_lm(k=4X)8B z|6c*^x*UG%aWC81BpBiF8;^PK<8xI9t>$mwZjDGy%2JhZ&y0WiWfSrIOw#WdzXa2_ zmup?=RSAl>mzI}nZqeEe3q@V7^#jRNO9C6f9#*t=16bAYVyR-W%hhXHrl#_1f~RK| z8J#G2WpNFn8&H`sR>EVnc0+y<T-TRj(-Tcx9?tRW#d}On706~CvRQ|zM3LXG+~?v* zf#ydWz03uqwi$JAybO<343RU=`P~tme;`=zg<KcJiG&#)oMm=$o@BBJ0^x8S8@Gh$ z+P9fNd<N1vq&|Z1Fj_wZ2Z!cRwcD%5KQnfg^S#hmXV6+B0$M@12|_^#2ED1hpNHH6 z+_ItMAfl1lR-+4dH3zRiQ^)f7mn|9&oo4LwKCXQNp`bx4?G21n%dGIOF}R}Hc>+3) zFMYT))z(k@u{d1=FkjN-i%a!ivs+3Im>SKF&!GKS9Oy5@R=X@(fN#i*zQ*9&kQsp* z?OhTY@iSEze@D$bVDBkt>iiyfKVj$Yt_iOQas+Wsa_i?XsbQ7`UN@Ar`9&L5`(DD% z{jid;CfpCu3_K6)1iF0>@E0)b`-_!V+XKV@ul)-&_G~mzY8N8_0000<MNUMnLSTZY C!Ud)P literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/smiley/images/sad_smile.gif b/src/static/ckeditor/plugins/smiley/images/sad_smile.gif new file mode 100644 index 0000000000000000000000000000000000000000..cca0729dd5f9178e362b83e70523ce33cbdc38b0 GIT binary patch literal 782 zcmV+p1M&PvNk%w1VHW@w0QLX?mtX*wVF00M0-<RFq-p}Me+{*H1-5(!yM+wQj0w+@ z4AYYf%bFC+ofhPq3Er<8|Dpo_qXYk=2mhxA|EdT7r3wG14*#nO|EvlBuM7XL4EnJS z|FRDMvk(8Y59g*3=B^k2sS^LH8vm;s{jDA5vKr>M9sjoy|GE?Vx)%St75~2%|F#?V zyBPn!82`N;;I|>-x+4CxA^ox}|FbjxyD|T}HvhFa|F$~)y+8lFKlj2N_rxCm!y5m@ z8~wu^|HdBw$RGE}A^*%F|IH%*$tC~KCi2ZH|Ij4=)hPemFaE?b{n0o7)HwgWP5-`7 z{>DoE)<pi;LHxl`|I=Om-CX?2Z2#M1``Kmu*K_~Zc>mLV{?~r};%xondjHUX|IvZ} z(uM!oh5yuv|J9EF){p$&pZ?yS`{9HC<d6U3n*ZgS|KOqj<D&fRssHM(|Kqd&<hA_e zw*Th3|LeH_@6-S9)c^6=|MuPg_v8Qi=>Puv|Ns5~0000000000A^8LW004aeEC2ui z02crk06+)-fPI34gM5a3go%P+CqzU;L?!?LB_)#}E-ETqTVI5B6&#H~9Hkr?7%M;* zBo=jvd}K0cT}nwwNRL59Yk4+hh=P1hCq2eJE-ou8Dkvu>9;G!_PQkEnU``?;PGE3* zim-P$Hd=3bdURqsICs{CH%n1SxD5@D3=GCDYHT;bd_?pBLXe;mCB_amJJErK91+3b zOwgp_0|5jNjvRS_V1NTuQ$)al6{Z3OR2VQ^puiG>gfQ>I$(#vmPM9YnMmz~KCnl^i zA+osfQl&|gD{1hw5dlom9Sc~b+`^S>2*Dmy@`$)YD9!~YMvx#85+DGN9c5cEdx1ws z9AQptRs<PBmq>vER`34MbOOqmYJCFs@Zkf<F=WgZGGt)};vx;nmZeZ|K!5-P2{xF@ zp##jIJv2C=K%oGJk|D}~B#E&A1Bn?oz!e%Z!Bi=f7${7b0AY;Jz;$Ru*sVK41PC<h M{8n`6(9A#pI}DMAIsgCw literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/smiley/images/sad_smile.png b/src/static/ckeditor/plugins/smiley/images/sad_smile.png new file mode 100644 index 0000000000000000000000000000000000000000..f20f3bf3c09d5f95f64deb2b0779bd1cf1a20acd GIT binary patch literal 1115 zcmV-h1f=_kP)<h;3K|Lk000e1NJLTq000*N000*V1^@s6;40Lh000CcNkl<ZNQteL zO>9(E6o9{bJJSIi`ZF^v4{5+CinJ9hZAm~>q6?G-5JO^AG~!AVgVCUIWsDfN#-9Xt zlGwz=xPX|Tm>8lK8|_puP@sf}PKPpW-*l$aY3J{~dtAKN&J;^z;Z07?yLriX{?ApT zlQS%J+G61bU^~zY^!Nf0_hk_HC28k#O9BA36ud1K-iw&eNc~`84}v`i=|S&jv=?H& zSdXVr`sJjZKk=XNwph3s_?X<41DrVsK?m9%gXmUh+y+X)^f{Osg3<4xT!Du^hlcz5 zfI~?;pIH*_f#n>RK3dE9BjRp4sA$=WD*S;eCs4(!AV8=CmUlvA52Vk)z?(wn+lq~^ zB|tq`YoHeX1s6X&AlE*@ec&b0YFz2U&)}B86)*-|Q`OW%+glLX1^v&$olimg>wQT( z|NJ6&TP(bn+{kfGZWU+C)6~gTrA!J$JTYcz1I9qp<FNh%_@+nL^`oL;!@l_%C=qEu z+!4OrVM${diA2y&0u&$+AIyS4PgfX>A%1oi5PI4}Rio?Q12+W2N8!o-6sm4R($42J zu${3}7KQW3${@OwSn#YkS0Ua%LHx`F#ezez;1VC0BtBqMEVy9&Xs#TAmWLr2gt1eW z-@<61mvkIf)T5m=7{?3QHDof5S44qK)+Lj5tM?i4;3DA6A&FzKdMBjg__IL(=)oR> zP!L>aQJ=1At;bro()(_y2a%e45K1M_b0d(6Bi4S@wd3FqoCi<GVRgXZ8jbSF0@`)i z_rl$tw>Kui2>YJ9%ln^5Eh@CiUBq2yNnJXwYT@27e)Z>%h^NOU{f_ZdFgjk%b*)wv zD2*?QTmx~U-7r_u^SQn)F^ffltzZu+qTS%_9s)jm4}YD8Wua<L1RO`WaCwd!6J;jT zUU6g1b*zd8*mQ4@pkl#$(G95VFtk3p2tG)(8!nY0>@I|qny7GkV1^cJIrsOpvSV!n z2-t~f{v6Ko)u}u?yF#pqYR{KIGkWSb*!Tu`8*_e$oDoiLvv4lMa?ks-SIR`z$5?ky z7_u`kTlCVgVi`28WHeb|dSskV%OD{O;SRK32D=ARsKAD#ozGRrKRbM!lfBSbZ_rv} zMZK+OXZ<xmwWwks(g>k?Br%BuqDB{|G`oL=rjCX2*8oX7e}bltJ~qD#)3ch2W4Jy6 z6PcPKx?o&Sy9UOm;O`qKr)>1>m}c`k(A3dayW4e5=NzK_aDq)oAXm{8N>$LUx~1ZP zsnc}55ABB&z@ge!y!o++0H2b*@C^MgLiQZgY44HH2qNGbh4JU0xeIn2gQm_efmf4u ze(IL+8YBA==P1{|i;*5;K>(uNRax_djS9SywDVv83vw&CZ=e}?1lR&}`x@YPV93`$ h-TbuO7X1G>{{Vo&VsT>6tr7qL002ovPDHLkV1nEx7S8|x literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/smiley/images/shades_smile.gif b/src/static/ckeditor/plugins/smiley/images/shades_smile.gif new file mode 100644 index 0000000000000000000000000000000000000000..7d93474c32aa7d066bde566fdd746483f5dd0aea GIT binary patch literal 1231 zcmd^;{ZrBh9Du*Rqo#-COCgz}<X)UF3Hk*#K?#F0#jQALu0cXd!+gWUuIqd^yJhCM zmD5edbZF`nbu&>9k}mLE)5)f;Ya`Ll)G~LSHB&!Zf5)C5p5LDzp2OUDlq&K;e2`ZN zauAKC(kU^FC~6EE!$9ebkLXO4!J;zbqFL-{_MxbxqvWJxlsGoZj;FEMA0{6o%TK*u zm=T&Oj?5C$awXx4%*YG!=<_+~`CNJmpLvoWo01ZDQos^^&K3&eMW;DwX&iC-QIR-7 zB2AEHCKY6H#8STW+;K&ryhDa)FF95gMwBTcM~j^Xl)=+C+*cZKOW)!_Wd|*G(E6X9 zpv?i)j?jXER@aSAH|W4Xw=4YM3cYUgE!fp|EVSdG0}r=-x4ZViPdK=<8?;_9;=Q0f zuyV(LM-#BqAF!<nS!hL<zDJ=i68g!Yje;L(FwEH0`GS5gjNxDF{lGwgdjv4;U(p9X zzZ<wT_U`g{*t7A_XA@yC?hii`!9;>75=;lfTp0Wjx;+-NHbYsPiCUkbtj|*5&j>K1 zU^xg@3OtFfE=pBaoKRNqm0t=PYSS8T3LEQ1b@h^_`qOQV8O`5hshZEIROzag4DIc7 zZP!_?CR24QZ+j>fMiOC^XX=rd`ZJ6JXN`k0(~!(Kn!TmxJ)Qbw=TWN3kZ-z|Z@OP# zG!||>5W~Z?t(iQSQEbo4wyhUnsu-p#VXhp^Rq$Ii{C@4t<5F0-28;DzRc)=d!*VxR z`(R-Jo(#dtAgq~TeHJzz!K-=LT!Ni9u(O5yKM458-UdPXkdU{zZ=Yad07-WyaC(~b z#qGozwb_Z+iral^Sj{Z?wJ}D?<1s1WUn}=>stHduaphdE(Ban>y`joe;2<f-m6*(J zoNP-fezC)h<%K(q<B9P$mGlBy5RymY?s32`&(0Mgxa&=E0&a7T)zO_0DVw}}*JVX7 z&>YW?J5+{IC3Z}B%e=<QN*%pN8zNX|CUDL!ez$6-j=ZCCyhwPgw{m_d3gP1xME#2E zjdqnKxtqPDs|2dFC&)t@WU8a)K2S#(s+u~JD3^@Sr^YHX{m^q0H`lq{u>xIb<GyM> zn$z5+PB6(`ygN^Pw<}q?==*{CfQsBq?YpsSZ>WSb(%E5arg+*0ZmfEUnB2cewoEl6 z+2YJk#MpYMSd~0~#Ac6Bx4-m7FekuXPMqZVT%5#^z9Qpn9aB<sik+?`5V=Huakzbg z#=o}AH-xEUx_)uF!r+yu9Avu6Qflj%YD<mbDo2Mkc*MUPw8JtcH;h<<o8gK(<E5HS y$Rktl`*L6CSRS;VzdsG8S%eRd#3;&HZdCclpB+|bml&}uLap<Ay#!AzLjM=G_~pR> literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/smiley/images/shades_smile.png b/src/static/ckeditor/plugins/smiley/images/shades_smile.png new file mode 100644 index 0000000000000000000000000000000000000000..fdaa28b786cef4fdbd48a3f1fbf7c7aafc456d97 GIT binary patch literal 1204 zcmV;l1WWsgP)<h;3K|Lk000e1NJLTq000*N000*V1^@s6;40Lh000DgNkl<ZNXNC6 zdrXyO9LJdkUPwYrE$QN=(z5Wv<s8Jg3S(15moag!Kp@dUl$Qh>O_$|bO}9oX#bzD? z1cc;fz$uc@1Tu?2Nt-RX2#Mxgo0W3jPrv7V&(VX*W^MiP-QM?kzrWA(Jip)b{9c!? z{y$v)FAezt@DN3dvPI>h9=pozW9pm7zlKXtESjyC^L6m!TTs6QO1urJXEmn2DUW#X z3NFU6qCBpghC}nf8UP)caG?zT7S6Rk=&ym(0{<e!@F=f}k=P;O23R}Cshv>dr44kf zXW(KHwyw=+XIH{WGqj6-PJ(XnTs;e27AT&m=`kwymI<8Ud7RvVRyBp|=ibz8ooTYd zS#W9wv`vTB$Kk{@I6eiM9~H@aPcHn~DLb5xidBr;;Cha){6zmAFKtssG?7vBh=??i zneIzp<CBtO0e$}%d^Z(ZCevR#nXFVFA{PXRZ$6n>8|eFZlBO8WH84(vHqhHwXeKzs zOk(mPcI{4KS8fW)s}~X!96-1A2?PA?Wcq5SiZ6h~Rng*0*1gGV;s^?PmhOB>o3I?G z$VER=-PLS(VJ0bS7SYs{MZw-wT}@4ytVxe0J=vG)4`xuEGo5uQvkl*|%$vS%#P{+t zG7_Y~!ct5JJe$_7goc~2SXN`LNN2~EmAb4IX;|`7nQJx?800T2_9H0NjAh?TSWDO5 z^p&i}^67f!hX$fpis^ut^W|c~Bh7r0yNagzSJ?A@k}mbUH#d>MU^9O;Ji@iZ-h_#7 z??(wV)ui3@Rj*~=?hHaA1THMabijKkp2X%2CK3{&Xtt))d~B1Ux-^oKqIvCA$z|gt zXn4@@y%<SzRVvL#H`07WbTEaaMDeW)La`Kc5d6~dS=xfA0G2NgC+FRGa^8z)MSKKd z3rt*Skt2Ed0r+Ynms)(#eQ}}Wyd5Wco)vLnghiP6t@XLv;F6XYxz-cpB>A)bbzhb) z_9r&RpKY1GT<-9PqYue;C&;ZFuTOGC#<pk8VQGvXu?zj!wsE%j0vI@vjLvdOOEy1j zfrIxNkTcK7&GR>O#z)fOZ9wbphuU%QxtB3f$4uz7`%XTEtuYu|T^Kscsi4txRYIYg z0ddGWp0*D?xLD+AKx+hgNIFEdCsz-Qp)=3ZSWuZel)5v}umr6{QleN+M^P@(^<Jv{ z46_31uyOP^OvCzy8^viZgH*qD1iybRt)O(Ybjnd^6;rTPJdMs!EXO6fas4m1L;ff+ z+-GyFkRy_&U*}4DH4WA;b7W_dn&OdYMWeBmK5QdjcAyx}*MCssYJW#2xJSw{#zv+5 zD=IwHv$3PkB)CjgdO#LXGEzF{2-xqY{5CAZ(PQt_xNfvu&32Bq?P8JO;t_VByRrRS zp@pvE8zz!>6{BK@YPt3aq-qp!xeY3PB~VsW;A#}R$W3Fvt498CW85;#@F=f}k=VQa z%`KC{^y`&ZM@yYubvcyOvl>(1lt;Y(<p(`hFEpr5R3$oZSCxG%_D;VxXZ-^Yh~-he Sx$P_f0000<MNUMnLSTZa22Vl& literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/smiley/images/teeth_smile.gif b/src/static/ckeditor/plugins/smiley/images/teeth_smile.gif new file mode 100644 index 0000000000000000000000000000000000000000..44c3799690ede200f70487c344508416bcae2a97 GIT binary patch literal 1201 zcmeH`|5K6&9LFEwK~PV8kQ5PhJ|48w!K~aZ+}b6miL{z^Tbp<L;<r}2b30x8A$M(4 z#Bc3XBIlfz=C><tGfQM1N~fenx}7KqQtBX-Sh9&tho10!w*H3wy7#?)e*N&eduL=G z5+>)e5EkM=kneMl8{Y(*&Xdix=zRUZP!^Sxr3T8vcT~$o+Co#{RP(N>%i&Mj0vv6D zzg?k22N}A^(2c@X3Utz-I{>cI-Mw`9F$nsC;ASwWLhM}(M;~kLItD$V(943}NVv}N z{S@s`aU4HK|31KWX<zWDcWtSepk{!E37Rk%2?I69GaNx^*`SSn^uvn_mjsLLLPCYZ zP^|A3A5^ap!+T-)RTvb4`Zb^SAdDRJ=%PL2F`#3^ILCJ<3MQgJAG3as=h5RZ84JJQ zaGwX$yJ3b0#@*Y-1Te)D=9l2104#~Hm`IH8^UdssIU(4Rd>RpGkJ@jXu;0vH9{3P$ zXE`*V5_hG<yvRG21;!7E#rM6Fh43hU$8yqZJ_F{nVEl?Of9-o*=(B&hs{a;d%3!tv zj8$N%fCn`&R|lqg*OcPV>1OXz8?n^7V=IT{dRS?3o34Si9qb)mR}Vbx1N#6h4|-SB z8`j(4(7@`@=HoGsa~jr+TdQ-h_5jxBVci0oOW?7?_LH5>r(Vw=zU{w&*a0Ar|MwpX z;M=Glf;1xh=Z@!}NTC5D2#6B)E61cLGw_Sfyi8>k4?$u@;yh}E;Ka2|d!@A_kW<O+ zKjV&N(f1sBPtwpodnvNSBq^Dd*W8Jd{(a!tUTXWOH2ZCoeO^~iCX)&ZKS_0Bq~K(I z!MbIiqJ@u(3yPW5N?l{^S!W8F7RpU6KIcB2HfW_M<TU9|j#_Opidd$aH=e4Rmf~_O z{&<1AAwIP;?f#IsqE>{T^KUlDD1Pa@!w+o={LShVfi25`t;l60a!f>7T)VDC{ZanZ zXW7mpEJmDWBpw~+T@E=#^t1CPr0h59yrs?_#RW=IPOG8t8J3xg=f#xeq-9~135Of^ z)FsC;^dU8g8+VJAQw`I6fkK~gi<^RQ(_A6BGh0EeJ&i~>%0TH1IabnLBqCF3hEo5R z7Z?_C<R~WhODZ~c55L$TuO_iKO4Bn)$7JRH{3dJq$JAeuaoT>D^&QdYk}EQ1!0BQM nSLqg&lireGWl>tn5RD#+GA6>_JupT>h1}y^V*X?}hP?g{8;sL8 literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/smiley/images/teeth_smile.png b/src/static/ckeditor/plugins/smiley/images/teeth_smile.png new file mode 100644 index 0000000000000000000000000000000000000000..5e63785e42152e16329c5156f444b06f411f1c00 GIT binary patch literal 1183 zcmV;Q1YrA#P)<h;3K|Lk000e1NJLTq000*N000*V1^@s6;40Lh000DLNkl<ZNQteL zU5M0G6u^J?zw@!X&dj>=u{*lMB(f;3ChP1fr1n8RxV@-_5S4w{Ll{JnkVH?VP|!=1 zfr1Y$WJJ(|m81p{)~-S`n-iPLs<b(d>*)SxXPued|9t%a_xA9g{g@c7hYlRhy<GU6 zbMCq4TybNvKqH9+Jw9MFuo395DL|s8ao}89FXkHp0MQ5@33_&-<WVv|hSB4o#~~ZH z4+9$^Skv&f3_{zN){Ec#D?AePv;&`zzp{tnz2Gz<@;C%GLEA$h1l&!+)Ck=80V-A4 z@)`J69S2@d>&09{xD8fGE`J<l^pLXF?-hhLA&lP<l@y|M4HV#B3oYxwzXP(vaQ-dD zy0-;u-bjJyUF={n{BtgSv`38}#(MB&rHR`@GkyW943+{Z!IBFW7eo$#e>)643(KE^ zo;Q!D_2Tn&@JP_Jll<5TzTc$G*wZwrYeL8jC}pdZjU7k{OSeJy`|w@AV*6QvZ}qOZ z8VIG74`q#UYHL`vRZxCEnwbItC`iPoK|%ip4@gPk!VIA3?{P0U?LG*W8!jG!Cx$YJ zrqyY^nAd>KOq>a0jH0|wv~p@bveImo#LyiQ!*?hdCMClnaek7-d7YABfvjb7<q(7( z2B#Ay&V*}E7!BA+HUX_JG&2j*v{SYuxtwViQ9*9nA~$U<><h|<D+T5(Dm4hp9)oOx zT5sS0`q4+g?F7rLd#9ZpF2WCZ?RCfnN-f$up<K2jmkM$TRCqUH`~=h*&W2|bu*@N` zq=u-G6=;^lt`}C?(cYQ_so3@03i~{jsVlU|U&4AIteUb3u^4WPtW|$bl(Ox_q`kHj zWur<dc^zY>N~vg4E?M}4E<!;!h$@tC*JbVi5(N5oFgv8NM4RW9XDXCtOpIcM(oB`o zti;*YO>;O#b2LUM+y_FCIXOT`N>p<P=p%waAK0^J5&W;8pxF(;_-Gc{x|){G7|knU zv~|X4?%aUp^3+9Ex}5|~152VbA7c6<bUa!Ij}z#F%N6ig08}l-ik)BK4)$<AF>b|i zdz(R3P>y!Asb68uey}Gd8gP!TfehaDP&B}jw0DP?x^VQqV5KakMh?>+^`V>{h`ZMi zEz6;6AOoBO(9(J_k8tc`%OK2HP&K7L;HEHkj9l{AJ;66mzKFw_qP1E<RZXcC#$n4K z2*<v;8Q--3z&qq;D`P%?q#Mn-p6jQDrlj=tM#aS0FEDP6;#ks&aJHhXGKH((GI8n^ zlrc=SzYFcpv=rsM#)g9see!r(FMco=ME%HBGRegcqa@!0uLIe$lH85EOkbVEG^!}6 zXbCQ%eN_kEr7lGB3YZ%7z6)y)q!3!;ky~@%2R>!`k7pQq2@0do6@+C$yMqN#FyQ7S z+?j&5Uf4PaOV@n~yq4CBQ;V<fUf<kqlzD`kr-Niim{)*6--31x=m^KFX}$P$quMlt x&tDTf0>ps6ng#d`7^&Hx|M|83C;0y%e*?UTJd8_R+}i*E002ovPDHLkV1fcuF<k%v literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/smiley/images/thumbs_down.gif b/src/static/ckeditor/plugins/smiley/images/thumbs_down.gif new file mode 100644 index 0000000000000000000000000000000000000000..5c8bee300d7fa70e68e5219a92da9f1bd3933f43 GIT binary patch literal 715 zcmZ?wbhEHb6lV};_{P9+u!8w;CG){bmP6GXhikcy)p8xJ<2l;Ef2=|9WUJ`$R+-c7 zk|#TqPIarD?$y4~r+j6K?%9ck*QOiZm~DPxhW)L%mbd5IURmgWbxG*8<x$sH#ywc> z@pzT*({({l*N42=81Z6L?8_}NH&!Lw-&Oy5d%~OTiEno%z1@}i=}`Wc!^K~Y08z=8 zqa|ODReU{ByL`pcRVx;(TCs4=+EtGZbUr@Z_w7`}x6{p^PqltK)AIdX`}gx*KQ8n< zIXd~-$yv`&&;4;};?K*Ie_oyb>-y|p*XRDaG5^Jx1+Oo!{e5%c@7v4%++F$S{@S-U zwqL(>`R1K#_wV2PaPQ#V2e&^yIQHq$sn1W(J$iEg>&t78A3uEd{K@kdPhY=z_3qu9 zUteDR{{H^Qk01a4|7V~*Q2fcl$iNWKpaZfB6ekYs{~O|)np;}in&R}M!Xu*ewI*om znp!((urkhM4eE%SH{X?0V}i6~TzhAfk5Au(by|A5I$CmE(akHPcJ*uN=vml1dpNJt zl#y88-ekui#9?<T&d*3+-^edWS)7lV;T{vO_sNc~fPl3VbToA>EY@jo8!z9vd!5dd zgO=-sOyc8=Vr@!06Bjslc?h#qFe@BjXw^E!;_3N->%fi<3FW$9Px2QZcly8P#U>_Y z$5uX7x07BUA07~PS~<(aF?~H72g6Jz7msOOT%xmdYM$Qsc#4Hl@1IEKNv18XeezCG zd#VytR<5g>5Ow2*;FA-*bMEO?1a*~8;!|*$q!Cys(8?+}Ph(l=ZZTFyP7h6mFCQu{ hP7vo6<(n69!F;hen_@^yLcom=B67h}^_(mW)&Q&yJ3RmZ literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/smiley/images/thumbs_down.png b/src/static/ckeditor/plugins/smiley/images/thumbs_down.png new file mode 100644 index 0000000000000000000000000000000000000000..1823481f2f05404a08fcc9357ec930911ff28ca8 GIT binary patch literal 985 zcmV;~119{5P)<h;3K|Lk000e1NJLTq000*N000*V1^@s6;40Lh000A^Nkl<ZNQt$T zU1%It6vuz}&dhE$Gn*xwwKm&Lo3w@~0qZ8U(VALRw6?W~eNid24<aI1)Q1+dpwL%+ z2_m9YsAwZq)FPzCQWZ)<L0uE6C85p7#*B??Cvi<?H`&keVK*VOAxTj@kLRBAyXXAR znLA?Q<}Cl03CD461G<0%fVb?=0AB%TfSo`qum#uzXcY_-_!u~DTDDUO|0EtCI~e=< zCvv$Q0Gg)J9&M*ionmUJht%W%bJj3((<3;A+>&g8FSwa4`@0CXJpO@c*)LSW(_eh~ zxvyh;2fD5UkV>Vv-1j}3MvhXu{tooodc3{>9=!%BRfN=VoIDgA?CIYb=|4~Fp|1%v zJ@}?+*(Vm@67c16IdokoVNH^-Ced}B0vfHm4iRqIL10}IRsJASs^u&dAyg1x)NP<~ z>!S>QdXQY|<{Oca@z4TXUD}3}$}LPuK}eOEKgYR#x!ZMg<-^@d+mYDmNXUqqmYs0H zRaFCAGg;1-DoB-@a0}6WuPpkVVu7K)GfZ51tG;2^v6H}lxinEzRW!A78C+<DR1i`@ zs#O)2Dr|1s!}zx+$j>LAh=h!F?#dMnA;cP0YbDK9AH_nBUoW1dkk2f}NJV4L8o?iF zZ*;*unrC%U%2h91qImt>z57L1$nXzm$t1_|N7@@)vPdaWq|3GRw7emuO%Xyts`|1h zk1xP{avY#RU3R*H38|FiC=XOfm3+}*;9M6t?tY8D2$9ZLZyk=*TwtVzw<b(<@5`>R zziwP(ChG-Qzmf(OV5MAnS#P11HpW}yt~j4%K9xlA=m3riq%}>euC6xldQ0zCCX+!S z&o39=r*Z3J1a5Dln4N{}ECs+E>?JW8TPBC%F)+gS(7gAU19S_=aZbhKV~3YLTy5J3 zia)q|Y9GxVPvY~}Ekfc07YN>ag!=8zSN1ps3<B?&mfbBJ#|Z*&15X3h<)AdB=Qfat zeRN>_o1@&>`7DZ3`oOG-tE35X*E6TjnwI_4N@|MLeio6C;Rj+vpB-*i?CXSEc9djG z&v5O>^W69P#FS~-p_TGi9jIy9v%qs3?th8t$>Bx6x4MSx>?A<lO1W#o%hv0UY#S4* zpHwmdKq{G_s<sJA`u=;kY1s}!ytDC<<BZ07`0dJfjK+G{`0#50@2-}+s^$w82^j`( z&c4yV^Y3^cfyM_g!qH2>9@DbZ{|Ub2k|@v#^qQ94zgGM|?gu;u<Vccu00000NkvXX Hu0mjf@p0U> literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/smiley/images/thumbs_up.gif b/src/static/ckeditor/plugins/smiley/images/thumbs_up.gif new file mode 100644 index 0000000000000000000000000000000000000000..9cc37029a9dc201ab9e0bd3a7cba4083cf56b874 GIT binary patch literal 714 zcmZ?wbhEHb6lV};_{P9+u!8w;CG){bmP6GXN9%Zw)bSr};6L6dc%nu0c&p6mcFB{S z$|pNjPWNhG=u^HjMfdDP!)wzGZ_GBoFvI@VT+7?@ZLciwySgOw+VZIDE8`w4_jtU@ z_vzZ87aJp9Y>IukCFaJeg!{YdUvE!%vpw<c&ZM`yQa>Kd`*OJW%aP(Q$I8AQuljnT z=G)2o<tvu1TCrf&iiK;|u6lH!^YP)nZ>Ji*oo@birsezD*6(NAzn|;;e!lDbh3+30 zdY>Gf{Oshc=cniXxHR$Sm8n0kPXBd%_OBcBUz}O+`tsV}Hy8fCz3k83m4EK9eS2g3 z^;?&3-nn-F{=E<P4&Hrm>*IrCpB|n1{Pf(TC-=X;y!QC<!)MQ*Jb&@@^_y33-n@GE z?#-_+uYP}j|KrDx|Ns9p&>krMWMO1rh-c6NSp|v{2loFB@lDMwt!>RA!mJEE3`|1m z8k1yL^kd`VVh!Tr;|#gfG}YBjO|>RY($J0a_m9$@(-z0Dk|VIa*+_7uhMBX2g^uRR z)ltVbw8VMwF!eI?iYW&A8tCd8_-<^oV;5w%+wm|?LTZv4hs%stGv<m*?{Ri_vNzW` za_sn=Ko$l@Mi#Y(7YhvE+!NJaza`i6fMZaXs5+Nd)YcTwLj@AXWs?p$cbWAz?J@Y# z@aS+;ztmn84aH6;wkfUG5?_5(nA*V{up;ts8>b7a@XARFl0qu&8#;doRc(B5UY<e9 zt?7+I1;6|zCBBN40-FvW(+pX?A!X-@RtC;Et5+X`mZqMX(mhvQ!G!lgVw*<X>KO)& i+9x_2`2^c%N*rutViFJS3B4&2{A`z>(S8;t25SHSpFQOO literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/smiley/images/thumbs_up.png b/src/static/ckeditor/plugins/smiley/images/thumbs_up.png new file mode 100644 index 0000000000000000000000000000000000000000..d4e8b22a3cc95d0d6e7e2de697e9e7fe910ce9ff GIT binary patch literal 959 zcmV;w13>(VP)<h;3K|Lk000e1NJLTq000*N000*V1^@s6;40Lh000AqNkl<ZNQtGD zUuauZ9LGO5xmnUCGqJrRi{7ni+KTNQZtax$uT(2OY#?(Y!-~RiDtj6}>{U?kWlzfV zL6}8_flmtBt?C|RR2^u$tg<SjZjB}_ZI?#d-h12ho}A-D(spUPq|hH+xcB_-`JC_h zo*%!XrEkwuEleY{A9xb@DU-F5RVS1}uL7+F`mKp%=WOa{!tp0C@7q5B9Li)Zs~X%> zC4YQ!u($L2xo+lu@8$ZrZYBqNp90?4jB>4#Ev6Cr<JU7St?@kv2}YvW|4oq^xx%BT zN5{~#rcBmSTT$M+`0p6ONECozB#Lt9n9mG0Qapo-Q4Kz`ZF`KoGq*BO7i(tx%0~d7 znnq~*R^S8SL?`nz>6L+K^CQgt)z8$>=PkfzrV;8jjgV~`Ays<p(pa4iU>czw;3Uur z)Za;uB)Z7`b{1pT9ss;vABpzEjP|`vjq$+IoZ89I)j?d>1;FR?)poQWI3ABTdNiff zA!qu}zR|BwYSzRx3QKD$Ow))aIxt(yEuNhkBQ^X3<82@F{E=h${eA%Q`8<6WzTw5A zFF88UlfHaL3;HFAXI{gjZ(9Kb?tdJlK)Mb}I7rt<xeih|grki-{M=jolhJV;3&&X% zRoX?Z2ha*jHi2NI3=AOib0}E=B~Vg;EEK<Gp~_JeLkA|6$dekmNGf@;%#M9W-X#z= zOW@@N+)aU(;puQw7oLR-yZ1g_mh^hGHDFOxzRB<a=|H4`rG?pbNhxfUDxj1oTB8IY zHv|==M9T7<4y65&2JGB8$qOH>s@DBH^y~?A>7teuS5Pg4i&Bb!KTrlw)fi1k%}ZNX z5B}i2Ws{UxfRfirio3#Hu~d3ng?lntYg!LP`Wm|5;nvmub)HJGh+3`^?%t<d;o^$& z#h3f}iCvwiledSzj9u$LTlPcCV?Ernv#FwL03p`rb%0FPnlg>hD|=u6{?gEg?cUvO z2MO<J06_EjieOc_O5_ITvC_CQS?fn%aL0SCFP|qhd<ko292CV0DXErHusEM%c6yA7 z8^17e`3t<b*tSj7h!Hhn*tU(&=L1++cUhQ5=#$)y@7}!m?I{*=w?M7>ta*LZ)HP9K zG!u;NqyE9e%!qo1l0$bkE;`x|5RW&W-w3V&?*p#_=9-<lz~8`4U<4QdjsY(K{?b2r h;49!%#cOV>@jut)pI&@VyM6!w002ovPDHLkV1lw`)rbH9 literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/smiley/images/tongue_smile.gif b/src/static/ckeditor/plugins/smiley/images/tongue_smile.gif new file mode 100644 index 0000000000000000000000000000000000000000..81e05b0f6adccdc330a951fbc4f7f109da3d2ebc GIT binary patch literal 1210 zcmeH`ZBJ8o96<ljTWEV*T1#15`>@tQaa*$%W_VD>+DZ|P*6Y;77abX!Ca^%}vb}Ii zHYk*IPZ7cvY1kABI4pKrv<#tuPzn|$h^ayu%AjSHITK}DsDs}7Tl^Axwetl|a+0%W zZ*g9JnGgw4457XP<`hD6S?q@j#bcGKSI2BWLTi2pHJ72zD%y`9V3(^o-s<G*)k(ny z#&i>V@hs<7i{RD|FD!kJhtJ|uozmME<j_uoj$}BGL01xVCqoAV&g0OP@~4YSIa%Ps z;W8WC9Pn^gTtaa2p?fP_l#oBkq8>@KPX>Kkpg$G7X>eT#KTBd>5e$oANJd>zQXb`B z?pMewYPkA3cy>_UEb!()ZypT1K@Pnc^T}d<Irt^ym=tcv;D#Im@>oC#Hx)4b5=>^m zZ57O<Lr?|5Oqkui@rwo)G;m)-`LoG8xtj}GxR(dfTyj7ULnas|sEK{#Y!MaG$43bW zzD+$a$8T1`!h4(ZC*pG-!Q3eben!oGPKGPV$fqz<13??i*TdZ};ofPOZHO<nQj6y{ zm+N4q0U|B1<bX(f{IL@rU4qC}Sm}l60Q_+co&@2^U04gj`U8lCAr^s+RiHM3ilhJe zZwn~@!4eRvN9yO==TGPufN-X?q_I(Nz*1TJcN>^ZwpV#l!Vw;^@HJ+S_OOaGS|}@V ziz-f_ghZOl8baHQwn8Se-?`->TcA47QlM@+p3)|(;<3`dt2Z_(vQG~m>+YfB{Pf~g zRA(%oDyVR`=`0x>`9+p(W4WhpN~W(}clG<mxFJVDXXWI4Q7x9fXIl}m)0V<@SWTGN zU_U9?t}oSD!oKl<_!ARjyhGXXbs9^gd-gQJP={q0tgB6l2lwYlbF89wch?|E_73w% zTeK>)a1DQS=v%t+EA{(-hhAHq@QZep4<B*zi>F(6X5J62NAzrArpd1U@Kk5ukj7$q z)~vK=`UM&L&WQ9iD8OCMIzDJ$>$07594i(4UW!fD(v7^eR^Ha0HoEj^8sE;g%6?mV zOPoLMV`v90wM4}?ieGUq!E;zs^Rxy=p?UcZk^jYv0XGn32`EWK=;#LrQ6eXIMO&h; uEZ6!P2nJ7w5_LVJNn-QJ#7XN@%NSh}aEEZAxrX-Q*vlW!==<mx+Vw9XDWj+W literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/smiley/images/tongue_smile.png b/src/static/ckeditor/plugins/smiley/images/tongue_smile.png new file mode 100644 index 0000000000000000000000000000000000000000..56553fbe115199b50ad06acb77c781dbe0cc4561 GIT binary patch literal 1132 zcmV-y1e5!TP)<h;3K|Lk000e1NJLTq000*N000*V1^@s6;40Lh000CtNkl<ZNQtGD zUuauZ9LGQBv`O8TwM~<)nZ{0ZY}n4#u76;4inxdA9$b-us8gKypdb@rice0Q_$umP zzB#bqiw`TpbfTcMe;B!O9b2ajgRN;+)8(c~n{@ei?>Ro)n>H;i4*bEF-~Ge+{LcNJ z-#J%Ir*f<p;h?V(=m&a%9#;T{s|YZfF!Kv*jTh^|!$IF+wECLluOZ9`m=Q=voR@)K z2)YU#NFwB02{S+RpYU+d=Lf!IA$F9JW8kqM{0s#8plKfn0rTT97lrAcp<IC{zJbP_ zgTV2Gna`{Vcffj_zrJYW>M3pSIVRZBhbUY@l;eov4bVVC2W;34Ezd)G1jgRi?EX;j z=(}+ck5>z<hJVZT&yVVxUtvG?hL&Ph$ig3Bm%!Gb6xeDx<Av}C&~gxlUxxc%fcEzW z6K4L^74UG-cbJ9AbDZzf*4`JX(>H`rNzmGnQfn7b3YrhVj?dtS9?iku1&zA~5@vo# zOs8^AS7>{ZANPlJQyJaTg0$iw01ZYY3mSU5e4rG@<wZc#)84RLbjK%PH^9Uhcy2g} zsM{r7NBWt$5TbAuz1f2-#g}GQyj#H-zJoDxhho8^Sg<k1QW#?<#exmW{hHV**zzQJ zJTP-11oT(oy`&A;=tWv-P?qz_wjz_UoJG`-$=YPH_VRsBJ8-SRx{HpVg>6qm+5qUS zci}ylQE2dhZLMg{)~#Mb+c!JcTfCrk&AkUoC1>VJL&iXdjv#KH1L#?Xrw!OvudtOw zxKA}m+h*Xkhn?B}lLDm~c;zAIeLT5hp~b>=?Cl|4mo`K#+zI8bel@gq@=VI@7}tX7 z*=4V5v#3C6c4>IkbAv!P+%3tf*Y_l~Qrfc>%%~vH4PdN<mnt=bZ7yHQF*Q|K7d$;v z=31=i*kUWRY(!)ySPhR5=!QZWY}=J$+at}4M)Uk~ah{t~MRGZdT+U)DQR25ti(DKp z;(xHonYjjC??=o}R^gGFO=L}SeqRXdZ`jb_l-#%hD-`5fbdKcd6lQA~Eg)ceX?-)m zp1uH{_zYz7=!OuQO-Okk92!d^>UXW&{@IChobQDuuR=<R)*uCR?j+eii^uB)pi(Xq z8f}G36Hu|xTB7R%N*3oNhb}>L$3Vi&4^?d;VdjTu?ii%=W0+r*R4j#3P_bdLNY-z1 zD;DEcEJoIELcZV}w@M+bvXYB4lFpByxnr<;wlBfmI8OVCID1aPLPb(2IsPZpgip4y zsmsTvE+65OZE!o~cwMnT)k(TOh4vG1;CL0b*3Y5^I8FB2OANmb*>UjH!PWqTgU)73 z+<|1;=^B3*>^}?5yT1e8NtpS$b>THdj-ahG-2N#@I?9s3>4vHvc-BPJznw7i->+t@ y3wI0nfv14IK)0I#{sf|KzF7NfyJz_Sjeh|_A8f6S!_bca0000<MNUMnLSTYXFfW<_ literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/smiley/images/tounge_smile.gif b/src/static/ckeditor/plugins/smiley/images/tounge_smile.gif new file mode 100644 index 0000000000000000000000000000000000000000..81e05b0f6adccdc330a951fbc4f7f109da3d2ebc GIT binary patch literal 1210 zcmeH`ZBJ8o96<ljTWEV*T1#15`>@tQaa*$%W_VD>+DZ|P*6Y;77abX!Ca^%}vb}Ii zHYk*IPZ7cvY1kABI4pKrv<#tuPzn|$h^ayu%AjSHITK}DsDs}7Tl^Axwetl|a+0%W zZ*g9JnGgw4457XP<`hD6S?q@j#bcGKSI2BWLTi2pHJ72zD%y`9V3(^o-s<G*)k(ny z#&i>V@hs<7i{RD|FD!kJhtJ|uozmME<j_uoj$}BGL01xVCqoAV&g0OP@~4YSIa%Ps z;W8WC9Pn^gTtaa2p?fP_l#oBkq8>@KPX>Kkpg$G7X>eT#KTBd>5e$oANJd>zQXb`B z?pMewYPkA3cy>_UEb!()ZypT1K@Pnc^T}d<Irt^ym=tcv;D#Im@>oC#Hx)4b5=>^m zZ57O<Lr?|5Oqkui@rwo)G;m)-`LoG8xtj}GxR(dfTyj7ULnas|sEK{#Y!MaG$43bW zzD+$a$8T1`!h4(ZC*pG-!Q3eben!oGPKGPV$fqz<13??i*TdZ};ofPOZHO<nQj6y{ zm+N4q0U|B1<bX(f{IL@rU4qC}Sm}l60Q_+co&@2^U04gj`U8lCAr^s+RiHM3ilhJe zZwn~@!4eRvN9yO==TGPufN-X?q_I(Nz*1TJcN>^ZwpV#l!Vw;^@HJ+S_OOaGS|}@V ziz-f_ghZOl8baHQwn8Se-?`->TcA47QlM@+p3)|(;<3`dt2Z_(vQG~m>+YfB{Pf~g zRA(%oDyVR`=`0x>`9+p(W4WhpN~W(}clG<mxFJVDXXWI4Q7x9fXIl}m)0V<@SWTGN zU_U9?t}oSD!oKl<_!ARjyhGXXbs9^gd-gQJP={q0tgB6l2lwYlbF89wch?|E_73w% zTeK>)a1DQS=v%t+EA{(-hhAHq@QZep4<B*zi>F(6X5J62NAzrArpd1U@Kk5ukj7$q z)~vK=`UM&L&WQ9iD8OCMIzDJ$>$07594i(4UW!fD(v7^eR^Ha0HoEj^8sE;g%6?mV zOPoLMV`v90wM4}?ieGUq!E;zs^Rxy=p?UcZk^jYv0XGn32`EWK=;#LrQ6eXIMO&h; uEZ6!P2nJ7w5_LVJNn-QJ#7XN@%NSh}aEEZAxrX-Q*vlW!==<mx+Vw9XDWj+W literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/smiley/images/whatchutalkingabout_smile.gif b/src/static/ckeditor/plugins/smiley/images/whatchutalkingabout_smile.gif new file mode 100644 index 0000000000000000000000000000000000000000..eef4fc00ab286211a8e33bf5762d3424c8c4eff8 GIT binary patch literal 775 zcma*k|5M9x0LSrnN!xByQ_H@ztwy;pVVtIv<+8-(rgHgun#5t;Sm)A_Y0a7L)VZU{ zA$46}d}%kNFG{A{N+SA-IIMOKcerzQw9n_|{0E*tKYn|rrm2-Hw0y!RzX++wAr)HE zs3T1$XLKH))>$;YuaehyWfrRaQ8NuS4Acdpk%3wk>Vj~Cg_|rivC+hVJqUM$J-7L2 z2tlI=H^Qk~5|3Tvxi3NUOtglgJq(?EG>3cJ1$ZbxhlIAv=({qsL{fG+?kuI-m!N$) z?kUk6Pj#%qgH>LK#M>=JmjDhC9*d~QVz{K}k$QV%cq*g%=b(Q!dZY1tE(W479D~;j zF}{fIR!}eEFr<Vhj%rIrM>;w+v~wLbl0uIq`yOd9xPyMX-S<R?H@Q=<@_eHPj22+< z1U*_rebiCzLJS!3(u`MT3|TOI4kKm0ch~55SEoLhFi{3~B_=Q9{dKsjeP0{!`8M2l zFmcZ}*$ht`zO>-mAifRZ#~6OSh1ZQgpFmFmH2IHYzXSXT$tUuE_TLi~1IGMflgV(} zP+}?07O#vi3nxS*Iv*AhA<4?jEIBwMRLtXr)`oItayY@lAf3gqEqdoBRZ>!7ymEQM zF8%!NXNnDKvBKrDMo1+RvAA~L2DQVsH(Sl;tF!kWIcqy4pP#Yk@ZkenV%?py# z5?dIIw!lEwY;EoWhk?ImOrYd4%Y}*}U(e5{DV1!;Gx_)O2BWc5uqebBsqHl{wb_>C zaQ*yC7{OT!RaK-kLBBZHkztx-269qu^~YGHrRJEto6CfX36?c(cWglBgwu}~eP2K6 z*jRI#GglwmA}jHn;z|<>$C+H>WZPxC3Iso#(<`;=-ASDB3%OmS@#wyS?_GWt{{DR8 ztY2bUtPonQiI+(=yL(Lt*QL4Gd#OHyyOr0fSQ~Vf)o<hq(+htFGov<C>ElxS{4=fV gS8FUP_VX^CCTg=ywW&COsj;=*`ZRFedWw*QzjS1D6#xJL literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/smiley/images/whatchutalkingabout_smile.png b/src/static/ckeditor/plugins/smiley/images/whatchutalkingabout_smile.png new file mode 100644 index 0000000000000000000000000000000000000000..f9714d1b3ba5e9324a1a1663549ba28b45af9638 GIT binary patch literal 1039 zcmV+q1n~QbP)<h;3K|Lk000e1NJLTq000*N000*V1^@s6;40Lh000BlNkl<ZNQteL zU1(fI6vuxv+08aJO*YA<Zf&rl#n2?S<`Y`0sC}sR!3HUaTE+ULAQ7dCPa;Nq6+fW9 zSuo&>4=F;lf`~OS)ZA#arZuHf*sO8W+|6z`n`}0F?;IcQ-DJ0{X&*drm^%#jcjlb` zoEbH{utX(miPY8s2Y_Cn$9DkB_X*&qxSh>Z1OTcMyd_e56fvKY_%4b)0rmtWC%na` zUWoV}J(NJ{m*RHz%uV4fk=h2}BQlqdGj;-k4zxT9O?^<mAC!XYQ?NJ*v){s60Ur1a z>h2u^2I6)$RT1uiWr|B5-pPeQard53H20x$zoFJ*sMRYVK&TyRI-v0hNRGky8$!oh ziaoE!K;2&&pcMW&7e6>IS3kzR??usSUg_MA;O4;<Fa}(+F;WdJZ$jf?7<~rrcoN!P z8;aZ6=gQzMk=mnVW`-H*6Q}Dbs^p4NCIKRz8&f%eF%UikyWfYedW6G2DC%1Kiy9~q zsYBcuzCIY0`Zc7n5$(i40Rq-U8U%VeYrz<-UzY))r!BM*boaa9hG6;>JU*I0Rkg<L zY(@hIm^&LKcLCWJMCW7cJ6l~TV2xhG8oS17&S5p@VvR3gjoYl|Trhq%mj|KwK?nw6 z?rhXQ!f2qEqy<~6(M}SK<E88xQYpt1Q6QCeNu}M5`I2~W5pY(J*lF1DFeEMf-XH+< zU{69Q2(D9hPH*2{O?1~b@4LAgL`vpC$mhMC8-bLCM314a4ujut9z1Emj)1{68s(D( zwCmFU{N3Je|5*Sd^gnx-w;oHB39T|0ad$<fDru=wxM#*!zi1-fIJe-R7{3Iw^Bc7; z9aRDH^JST9z@n)eR`R-7>sxYD?h@P%_N1bz8@#)x1fDOH{OsNwygnCj4WjE%>1j&g z0bqirZn(4tweEUK-=9lkFBaI$BH=0?>DmGU5@<j#{tSCw2k*u#Hjy*K$o?qKpHLI> z{=8==Y^~W8&eAgc{udI8BHV`7Tj0oe0u^YD+u6)U`=_Ue8R>=kYJ=8#UC`ncAZ&;# zMKJ{tjRcyEUR~52IS=9X_4d~QaXWj4aQhJZ-hu1Onu24>>+0)Z+;TmPK{;ziFVAWA zy$#{^q0+lumn1nr+sPPv2O(3?<no&fYYY?|Fjbn)_n_@$3>YY_+KrDzBk&37Kb~gv z1xQapmG&M9jUWQ9Q5e5m4V`fCG=w|80A7jP*~R~amjpS6IH&mgn+VBC)*ZZ~R`i{Z z*{HzFaXb5ECA}-c{QwQXLqHeM?T-Mz0F(ZB?#8F>mf-(~{R;@jTLnf*<W2wp002ov JPDHLkV1iO2>B0a2 literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/smiley/images/wink_smile.gif b/src/static/ckeditor/plugins/smiley/images/wink_smile.gif new file mode 100644 index 0000000000000000000000000000000000000000..6d3d64bd126a56382452a47faa20e3e0e8185a01 GIT binary patch literal 1202 zcmeH`drwmb07q|2ffgD%3r#Ptv=s!@suUKf%GMUUQ4Mni<F@RP&>_oAx}+P+B#W9t zc`384uRy9(c??$YRj7s02u08!1_wiIJA=Vix``y#Y!e&W`&;}H`)lV5oa7{@c-Onq zZ5lqoCsqierJVS&lGb*B-mYa_Js8{b9n*0r)_#aN(#-L+ut&{nMo;tZT9W)0=1i{u z9dxuup(6_2F|fv<gNdJ5=uUXq!$vO)SL1Ol9{n8HISZG_zb?N4D;GU{^rWCSHF7!K z*Pj~bO9?vo7~sAd;9)2cP98@1aHRg@OkQ!4!Qu3flf*EI5fV4j1H+k=T@>jPqd%W= zO5ogz>ryzjW9Y4wo9P%!!L2mh5d>~;h)f7^SA;1M?ySSFS(wfY&The64%}jR#Q1#^ zyj!U8yvR(!>ciYu^ZAkaT+B)FI4?4!z>Pf^R#UfkM;<6Ck0Ly(#_VU*{HNhbEgn{^ zdMm^3D!8jLdzf+`iTJb;|M!^IW2Oeb)x%ql`$sWn!~;|K(FN+!`PIh;JTbv<!Qxpg zw87sVUbbTC3jF<eay`80Kwt>Z2Jw6r&+p@f2QTNb;zQ^UP^$n%{Lg<|Konxo2%?@4 zzt+BfLe2yc&q|Y;&59yMVw|$7wrMO{VU|{x(g}Tn<bzIOet@lz@wV#7PzCEuPMLAP zORrEy%UCR%mDXKyDsz{S6wx~;&dCcs!X(wiBunu2cDCNuZatQiy+_-6Y^?cAo8-ks z8+UCT@6GC%^*@9fixVUV87yB%*Q8PQQT&qb<f7_cMsX8c<63Am@xJ+UncSUIXA;O7 z!i3M=$j&M`-?gCL`F>Mdb>`1%8$FIrV-+gD(uoXDH;IDdB|9~>2iP04OUyz2P0L_K z)idKS*;BkVYp-;A4LiO#%h4>iKFzC~Y?11h>b~3?Hbv)ttP6b0tg~@8*T`L_wAR?M z#EfE95~(LtoaW7zd&GDKr*z|n1~#qlRMQDTkx=d8<jU)BrGCgO^JrxDa(bC+TlAbt zJovS@DEX4mz>OpIwfjrot4!hSyC|6!7HG{yai$rao}e-0@~E!k<%WdMdG-dz-lMHG mG1sQDXpDj5@2CU?g~HL3TxHM|Rq%J|xf8L;ou9~w9sdH=NT%Qb literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/smiley/images/wink_smile.png b/src/static/ckeditor/plugins/smiley/images/wink_smile.png new file mode 100644 index 0000000000000000000000000000000000000000..7c99c3fc54c753dcfe19ff73e225733a2ad7261e GIT binary patch literal 1114 zcmV-g1f~0lP)<h;3K|Lk000e1NJLTq000*N000*V1^@s6;40Lh000CbNkl<ZNQteL zUu;uV9LGQBtX&;$-PRT?S{(r*aYG_(BjJz4$ODQA5JO^AOvD#8F&GmhCccT`!58D7 z1QQ=5fy5YnK#d4SjOcJN>kxuNha}UkKykNhbfsO}d(O{?d$--fh(36dZ+^M==6-(X zoZt6%jv5`CWUi4)G)IB8Krhha3n1-l0Qf2E6bo|#05umpm1y3I*bm4ZPvQ)KGXVJk z?_<0d626ifb13~n)+v7eukci&xgB_y!ucJX+zDY9QV&CXHMFh)rQq6WxH<@<-$1nn z>pp_$y@!BZS*JKYC)@+eX?}a>9?tF+vtp-W{%TbD462$zO<e#1B3;n59AaA_e-ip% z6_&rIxbNi*s0V@xg7AZ!dwYkByob5}InnBh(&Zn)RKN&W3&zey8X>g@Vw<4vDY)}- z=zQf+)+s(y2TvuMw^A5B%#qdNu6lw7xuBHIfruw-=T2ZPv~7f?`{2tSVbcjkblJA) z8YmHoB4(Jc*C(a5io{}QHv<Z98$`hRU~5VLavczQIwP}5m%afe0z>=Z(Y_q2VOiEG z7BsMyOUIIw&mt{hbR`4UGWzFrK0TD-;D;l8|LqvIW|%4)(*0wk`yHmrW;W^hy)gel z2#4X)v7~QdG|)>v4f7h&ZXT=)#xn9(mG#>ev*r0NVvE|CELp}UjK3NfpY&HG0&WS( z9Ds!nK|YP&8-#!!oI!|$!MHOv+OVz_Y#FA?tXL9;N|ly*jU+o-0Jvj*7%CNiy9CD5 zNOC)B<S_UR=fU%7SQxSxt5H6Es_IQq1S&NUi?+hHrx$tOGr77#tHL=<M^YN{X%&Qf z!!H;>sbr|tEUnQ{z%hOty%H#JAgUTvuGDp?2GYd4p;XZr&thZOgs+a~sg@1X?{1Q< zmxLF9GpLAngLn1>;Fa3Uj~!hJQj1$Seqx-;TnTLOS-@CCM^O_)+z1~a-VNm{7~|>k z7;7KvU|w5<Prk@A{70GMq~{{HX2|_rqg*nxGZ&ChJL=l-G<+b?MD8$0)+BL%ho*?P zVc{^`y@1Q3B~E>pC7-Y2x&lBf)=1A1MJler3KB^o+>X|_!RG!PDzq%?6brNMKQVNe zBfZetXwh0D9*9^J+N03aNX1ozG3a6$MlM3tMMNW^xYbivHJg8iwyxRsuRFMg-rB*L z*P*$|qLrR$|7j_}we{{X)?!4nY9Dm%sXMrIz&X3<+?`>?UMSQw<%(Z}K=Ep(zNj@9 zY=dUyo6xyC1MCV~@y5#{2E5P2uTRqVEKHn+2JKxE8u4eUu>OkLSHk)O(6;<z;H9in zyn0J`Ajx*b-Ot6N3G#!?2s}4T>#j!}ROrR5Q~c~E$gSXhf_7j7unOq*Bfu$O(2qad gc(wf}`2R8f0lW)%aFGbSlmGw#07*qoM6N<$f??$muK)l5 literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/sourcedialog/dialogs/sourcedialog.js b/src/static/ckeditor/plugins/sourcedialog/dialogs/sourcedialog.js new file mode 100644 index 00000000..3fd47085 --- /dev/null +++ b/src/static/ckeditor/plugins/sourcedialog/dialogs/sourcedialog.js @@ -0,0 +1,6 @@ +/* + Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved. + For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.dialog.add("sourcedialog",function(a){var b=CKEDITOR.document.getWindow().getViewPaneSize(),e=Math.min(b.width-70,800),b=b.height/1.5,d;return{title:a.lang.sourcedialog.title,minWidth:100,minHeight:100,onShow:function(){this.setValueOf("main","data",d=a.getData())},onOk:function(){function b(f,c){a.focus();a.setData(c,function(){f.hide();var b=a.createRange();b.moveToElementEditStart(a.editable());b.select()})}return function(){var a=this.getValueOf("main","data").replace(/\r/g,""),c=this; +if(a===d)return!0;setTimeout(function(){b(c,a)});return!1}}(),contents:[{id:"main",label:a.lang.sourcedialog.title,elements:[{type:"textarea",id:"data",dir:"ltr",inputStyle:"cursor:auto;width:"+e+"px;height:"+b+"px;tab-size:4;text-align:left;","class":"cke_source"}]}]}}); \ No newline at end of file diff --git a/src/static/ckeditor/plugins/sourcedialog/icons/hidpi/sourcedialog-rtl.png b/src/static/ckeditor/plugins/sourcedialog/icons/hidpi/sourcedialog-rtl.png new file mode 100644 index 0000000000000000000000000000000000000000..c95da32d352df28f89fe96c15b00946292c5e91c GIT binary patch literal 1018 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzmUKs7M+SzC{oH>NSwWJ?9znhg z3{`3j3=J&|48MRv4KElNN(~qoUL`OvSj}Ky5HFasE6@fg!ItFh?!xdN1Q+aGJ{c&& zUgGKN%Km_xiC2-KneQA20|V1PPZ!6Kh{IdMZS$`<2+X~CclT+{E*38L<`n^6QWG3B zcr_h<vTiZ?!{8#hu5_2kmyj)gm^C~^6&Eb(b#XoVQpID*5%KEhfk(2h&5oU4Ebg|+ z<eu#LJ(b446PJnIymxP1Y1+C{hLX@jD>>~eyckRxbd|CuJ~%eRmLVbS!5qFhkAE(2 zPresp%`9tlp5e_Ez8SA4{iss*I2vSnz2jzrf~ZWxVr%9NhtC{2ldP1)5M!D9;vaKE zaP8t<Eb2-@Ua3ltjLvsxL~r{iF5w}iIW;o7T&s3^$1%mdpH+@F%uIh{l%5vk^|tH8 zYuBb-|2X!W8a_6#V7L^e-mG0Z(IfjUtHH+n#XKQ?-`8wi-_fz<+RTogm-Zf$81;Wd zxEQ%VHWEtSxs~ON&$U}_+mBzXT2!N=RP0z9#i}cPHa-8{f$i^^Hi<THKg)Ic8Z-5# zIs^aQV!=um7x_PHlFzjI3pwx@GH7)*ZMk-z(T49igN@>%{OOju)>98GJpXx4kKz6` zTg#ni?JcdFKeK*Xs$^3%(5tlu5(lEJi;@pN{IIN8Pic1ChUlo*H*?H(OR;q=TJY+{ zT65XtGjA_nzTCOm*jPSe?fj~l-+uqK>+A2A_KA^l2oy=_X}oW-H|~90<TU%*U!5Im zw#rWp(yzI_b*t%*-Z?pkBHDNLyFBUDW){47^XARzlP3$i*UpWc_nhUy+RdvQY*+Wa zKPqt{YI4vkRYBWuFUy3q)Ku1W7a1;GyeP=a*6cQOMy2q9-%Dq2`1M29*#5)uzn9jm zTX%?m$<}?!O6;F&wli@AcAvN&x4!&vb-&)miy0+%qkbR$UYN;t=<az-jjklCxqgeo zbr@3CK0TT8$@<yqt?Wr>#k-`V<KvgxoWCibo_6d0{q(h^%GvS#_f&65aLCusm*;CQ zsi-({ZsoOKx2|2A7QfEV-XLwAE6a?@y}iA^_UfFrU+6pIqto|B*Mp@~^>_|gey=x3 z+QmFK>%ukb#GFg-?_KfLkm+yCj%Ll}*-(C=giEe)g3me6=Z`BQJsJOU{|jGe*fn?m zL}2DnEpd$~Nl7e8wMs5Z1yT$~28L$3hK9NZMj?jAR>sCw1_s&&hCuQ<<C?c98glbf ZGSez?YgiT|5(w15;OXk;vd$@?2>`}Yu{Qt! literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/sourcedialog/icons/hidpi/sourcedialog.png b/src/static/ckeditor/plugins/sourcedialog/icons/hidpi/sourcedialog.png new file mode 100644 index 0000000000000000000000000000000000000000..2f3eae1a636b518ac8c706e9b20ef96272d8963f GIT binary patch literal 1041 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzmUKs7M+SzC{oH>NSwWJ?9znhg z3{`3j3=J&|48MRv4KElNN(~qoUL`OvSj}Ky5HFasE6@fg!ItFh?!xdN1Q+aGJ{c&& zUgGKN%Km_xiC2-KneQA20|T?Dr;B4q#Nnl3d-JY12+W%qYq_yxB46iX#}ExwUJr#S zZ5*6WIWsaV7^ZwGdb@P-g6F&yjUEaUwVWJWr5#<5a<YC}d}CvIn^Ii%`FpXqk9)2D zeD>YBn$NYHlOLZu$Hyb9#ME(P({3}tmGk-e_?q@<h^2JgU3c?kU&JIkhDUxozil%S zEIg^Fv}j6|Y_cv(Q_PipJOUe2w+lr`D>+3@+s$Ag&();#+tAFFW&KCRthMQ)8#I;9 z)f%-p9AR+zy6p`E!<1A@_al}J495PQ8F}Y_*X&T(!*ItrR$-2z@}gP>hGZY!MW@}l z9bR;`ZYpOtelK{@PU#!l!r9ylAGqXhs!7)tIB+I7`Amo=>zO^`Ob=5P%CvtO1UJsG zE@D})@wL=Ogv0p!l%UOANAffjUro;4eDvGRaMr$Wty3jdbbUE-i{ZiK-N%~>W?xfa zID77S+R-x%4DvI6ZWMkX$WXK9T9l8;->oViQl*j@1owBH2sYoHWf$mGtKF3pFt@}j z!C144N#LWplAXhmY1fpPj?Jj{ob>0^CZ1Ug;lLy?;kjkT+T!FhxvzU>ZhuoXYuWZS zHpgaoPEvVv>SH|5oVjxk{`$46!^6oXtS#N8Bt>%9o;@)cYu{(AeVrp1*tO`z6jLq- zmxSbG=N`ka^-5JI&%B>48aM5!|I#b9)63Rwy)o;9XcDi&m7iK`=ilxXU7NpIC;C#j z%Y#Rcm_FJ3fAfY}smj@<^utt%glFY0TT;9GW+vw5`uh3%zkU!N9zJ2&N`{7YOw0^> z5}t*7tvsi6CDv6*$=#(S++|;M`r?ZoE-boN^)i&IG?e0ZZRt0<aOH-?=VYUqcRDOx zT`ol3&ta3V;hlZ=yj6sbSpB*4=P%xxC9kWluAb5J^DfW5NalTyxHlR~^*;FUL16Y- zjnhUl{l^a$Z{(j7cb_>g`R2WQY)h})xKvkD(~~*tTKde&0PA-;htk{_7*ZquZ9PAG z_H5m~&N@|$Un<x0Gn$tikq~%&r}p^odAb?$6V^#x*yp;vs<yATOn!&m_5;TmqTFkn zt7UZl9&>x|zbVu`y!H>XX9mMnsU;t?fO$r>#5JNMC9x#cD!C{XNHG{07@FxC8tNJt wg%}!J85>&}7-$<90?F%)Yu=)0$jwj5OsmALVOfkwAW#E?r>mdKI;Vst00l#>_W%F@ literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/sourcedialog/icons/sourcedialog-rtl.png b/src/static/ckeditor/plugins/sourcedialog/icons/sourcedialog-rtl.png new file mode 100644 index 0000000000000000000000000000000000000000..5353eee7e8092521fdba6b836843034356b06923 GIT binary patch literal 565 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6-E$sR$z z3=CDO3=9p;3=BX21L>Cx45bDP46hOx7_4S6Fo@?*ia+WGRLhp+?e4<x9|RZdT|OBo z!dc)ES<Jw|Eeyhp4727)00r4gJbhi+AFvDa%4zA^eUM~eU{vvRaSX9IJvDfv7qg?t zoSQn+`*$eMotu!l@Mq&=f#~jp^oRP9H$46+aK2_|VYS}4`Kw2!{JFau3!0~=6fftO zJ1za~?77*;H?7io)3#*oW^ErX70yY)46jZcW?_(1@qM*R&6DZI*?87T8%~CO-dfzZ z_~MFkmfgYrs=jlIbE-cpE4}4Bz3I-U{H;+NHM(>|Ihk_ZZhlrc|GDgQaLe@EMfY^q zT+e2xU@Q=emy=GOwo>pL$DZ#JeC_WU{1{_gejKZ|SNnO*dqQfY=F5&J)0enTsr46{ z)TcW4i)Muk58HNzHHOcO56Lqmtlg{h^VU{34=0X?d=9(`a%Z)jIHohC)f*Yk+PdM| zJognw$Ib+)Magh@X3TnKIqltry&{hP#os7AsGr67K)RZt$CxEXYB4YfRZCnWN>UO_ zQmvAUQh^kMk%6I^u7SC(p=F4nv6Zobm5GtIfsvJgfy9LJ3KR{w`6-!cmAExzo;`mA PsDZ)L)z4*}Q$iB}IBm$? literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/sourcedialog/icons/sourcedialog.png b/src/static/ckeditor/plugins/sourcedialog/icons/sourcedialog.png new file mode 100644 index 0000000000000000000000000000000000000000..0783e85c6f4aa582ae8dd3a26eb5c72119c441ae GIT binary patch literal 571 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6-E$sR$z z3=CDO3=9p;3=BX21L>Cx45bDP46hOx7_4S6Fo@?*ia+WGRLhp+?e4<x9|RZdT|OBo z!dc)ES<Jw|Eeyhp4727)00r4gJbhi+AFvDa%4zA^eUM~eVAS$-aSX9IJ$2GvzrzM1 zZs$wamZjxh&CBud;kh8*;Z?3SL!v@c?8p%gt*4Ay6K)7dXIpJvq;*5yJ4kgR=a<Rr za^io^`<)y;E%lG8arT<howwrl&zyO8SrcQ8b)<Fiyyrc~lV?V<=<U+-$TFI_Ax6*l zl4Sw2LT0vS!%Wj(bI+!gp2&Tim)o%_YDJT(X~XNUvmO@g*gHLE;k3%ob>~BOF21<p zv*@<Sxy9O^moJs_?8!5m{iG*IbWgj$vID6vXED1sAAF$Pa)Eb3iN?zXIgf9hnXtuR zbH3;AzjgMnS!Udv{r%q>n`aE?cKRRqUbT0%z@cF23;#S?1l}d}#Gl*w`_fkSGs!*O zuR{MBA7Ow0SF_>!KNb%*b?p@ju7Ng8BCa2u+HWyzT>OgRwyDGe_V)HBrXHb(dcc5G zEpd$~Nl7e8wMs5Z1yT$~28L$32IjhkmLZ15R>lTaCPvx@Mpgy}5);ZRP&DM`r(~v8 W;?|IP_WTi`1_n=8KbLh*2~7a?SJ&16 literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/sourcedialog/lang/zh-cn.js b/src/static/ckeditor/plugins/sourcedialog/lang/zh-cn.js new file mode 100644 index 00000000..fc5bb0d8 --- /dev/null +++ b/src/static/ckeditor/plugins/sourcedialog/lang/zh-cn.js @@ -0,0 +1 @@ +CKEDITOR.plugins.setLang("sourcedialog","zh-cn",{toolbar:"源码",title:"源码"}); \ No newline at end of file diff --git a/src/static/ckeditor/plugins/sourcedialog/plugin.js b/src/static/ckeditor/plugins/sourcedialog/plugin.js new file mode 100644 index 00000000..0e5efbb5 --- /dev/null +++ b/src/static/ckeditor/plugins/sourcedialog/plugin.js @@ -0,0 +1,6 @@ +/* + 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("sourcedialog",{lang:"af,ar,az,bg,bn,bs,ca,cs,cy,da,de,de-ch,el,en,en-au,en-ca,en-gb,eo,es,es-mx,et,eu,fa,fi,fo,fr,fr-ca,gl,gu,he,hi,hr,hu,id,is,it,ja,ka,km,ko,ku,lt,lv,mn,ms,nb,nl,no,oc,pl,pt,pt-br,ro,ru,si,sk,sl,sq,sr,sr-latn,sv,th,tr,tt,ug,uk,vi,zh,zh-cn",requires:"dialog",icons:"sourcedialog,sourcedialog-rtl",hidpi:!0,init:function(a){a.addCommand("sourcedialog",new CKEDITOR.dialogCommand("sourcedialog"));CKEDITOR.dialog.add("sourcedialog",this.path+"dialogs/sourcedialog.js"); +a.ui.addButton&&a.ui.addButton("Sourcedialog",{label:a.lang.sourcedialog.toolbar,command:"sourcedialog",toolbar:"mode,10"})}}); \ No newline at end of file diff --git a/src/static/ckeditor/plugins/specialchar/dialogs/lang/en-au.js b/src/static/ckeditor/plugins/specialchar/dialogs/lang/en-au.js deleted file mode 100644 index 2c03bce6..00000000 --- a/src/static/ckeditor/plugins/specialchar/dialogs/lang/en-au.js +++ /dev/null @@ -1,13 +0,0 @@ -/* - 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 -*/ -CKEDITOR.plugins.setLang("specialchar","en-au",{euro:"Euro sign",lsquo:"Left single quotation mark",rsquo:"Right single quotation mark",ldquo:"Left double quotation mark",rdquo:"Right double quotation mark",ndash:"En dash",mdash:"Em dash",iexcl:"Inverted exclamation mark",cent:"Cent sign",pound:"Pound sign",curren:"Currency sign",yen:"Yen sign",brvbar:"Broken bar",sect:"Section sign",uml:"Diaeresis",copy:"Copyright sign",ordf:"Feminine ordinal indicator",laquo:"Left-pointing double angle quotation mark", -not:"Not sign",reg:"Registered sign",macr:"Macron",deg:"Degree sign",sup2:"Superscript two",sup3:"Superscript three",acute:"Acute accent",micro:"Micro sign",para:"Pilcrow sign",middot:"Middle dot",cedil:"Cedilla",sup1:"Superscript one",ordm:"Masculine ordinal indicator",raquo:"Right-pointing double angle quotation mark",frac14:"Vulgar fraction one quarter",frac12:"Vulgar fraction one half",frac34:"Vulgar fraction three quarters",iquest:"Inverted question mark",Agrave:"Latin capital letter A with grave accent", -Aacute:"Latin capital letter A with acute accent",Acirc:"Latin capital letter A with circumflex",Atilde:"Latin capital letter A with tilde",Auml:"Latin capital letter A with diaeresis",Aring:"Latin capital letter A with ring above",AElig:"Latin capital letter Æ",Ccedil:"Latin capital letter C with cedilla",Egrave:"Latin capital letter E with grave accent",Eacute:"Latin capital letter E with acute accent",Ecirc:"Latin capital letter E with circumflex",Euml:"Latin capital letter E with diaeresis",Igrave:"Latin capital letter I with grave accent", -Iacute:"Latin capital letter I with acute accent",Icirc:"Latin capital letter I with circumflex",Iuml:"Latin capital letter I with diaeresis",ETH:"Latin capital letter Eth",Ntilde:"Latin capital letter N with tilde",Ograve:"Latin capital letter O with grave accent",Oacute:"Latin capital letter O with acute accent",Ocirc:"Latin capital letter O with circumflex",Otilde:"Latin capital letter O with tilde",Ouml:"Latin capital letter O with diaeresis",times:"Multiplication sign",Oslash:"Latin capital letter O with stroke", -Ugrave:"Latin capital letter U with grave accent",Uacute:"Latin capital letter U with acute accent",Ucirc:"Latin capital letter U with circumflex",Uuml:"Latin capital letter U with diaeresis",Yacute:"Latin capital letter Y with acute accent",THORN:"Latin capital letter Thorn",szlig:"Latin small letter sharp s",agrave:"Latin small letter a with grave accent",aacute:"Latin small letter a with acute accent",acirc:"Latin small letter a with circumflex",atilde:"Latin small letter a with tilde",auml:"Latin small letter a with diaeresis", -aring:"Latin small letter a with ring above",aelig:"Latin small letter æ",ccedil:"Latin small letter c with cedilla",egrave:"Latin small letter e with grave accent",eacute:"Latin small letter e with acute accent",ecirc:"Latin small letter e with circumflex",euml:"Latin small letter e with diaeresis",igrave:"Latin small letter i with grave accent",iacute:"Latin small letter i with acute accent",icirc:"Latin small letter i with circumflex",iuml:"Latin small letter i with diaeresis",eth:"Latin small letter eth", -ntilde:"Latin small letter n with tilde",ograve:"Latin small letter o with grave accent",oacute:"Latin small letter o with acute accent",ocirc:"Latin small letter o with circumflex",otilde:"Latin small letter o with tilde",ouml:"Latin small letter o with diaeresis",divide:"Division sign",oslash:"Latin small letter o with stroke",ugrave:"Latin small letter u with grave accent",uacute:"Latin small letter u with acute accent",ucirc:"Latin small letter u with circumflex",uuml:"Latin small letter u with diaeresis", -yacute:"Latin small letter y with acute accent",thorn:"Latin small letter thorn",yuml:"Latin small letter y with diaeresis",OElig:"Latin capital ligature OE",oelig:"Latin small ligature oe",372:"Latin capital letter W with circumflex",374:"Latin capital letter Y with circumflex",373:"Latin small letter w with circumflex",375:"Latin small letter y with circumflex",sbquo:"Single low-9 quotation mark",8219:"Single high-reversed-9 quotation mark",bdquo:"Double low-9 quotation mark",hellip:"Horizontal ellipsis", -trade:"Trade mark sign",9658:"Black right-pointing pointer",bull:"Bullet",rarr:"Rightwards arrow",rArr:"Rightwards double arrow",hArr:"Left right double arrow",diams:"Black diamond suit",asymp:"Almost equal to"}); \ No newline at end of file diff --git a/src/static/ckeditor/plugins/specialchar/dialogs/lang/en-ca.js b/src/static/ckeditor/plugins/specialchar/dialogs/lang/en-ca.js deleted file mode 100644 index ca807e43..00000000 --- a/src/static/ckeditor/plugins/specialchar/dialogs/lang/en-ca.js +++ /dev/null @@ -1,13 +0,0 @@ -/* - 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 -*/ -CKEDITOR.plugins.setLang("specialchar","en-ca",{euro:"Euro sign",lsquo:"Left single quotation mark",rsquo:"Right single quotation mark",ldquo:"Left double quotation mark",rdquo:"Right double quotation mark",ndash:"En dash",mdash:"Em dash",iexcl:"Inverted exclamation mark",cent:"Cent sign",pound:"Pound sign",curren:"Currency sign",yen:"Yen sign",brvbar:"Broken bar",sect:"Section sign",uml:"Diaeresis",copy:"Copyright sign",ordf:"Feminine ordinal indicator",laquo:"Left-pointing double angle quotation mark", -not:"Not sign",reg:"Registered sign",macr:"Macron",deg:"Degree sign",sup2:"Superscript two",sup3:"Superscript three",acute:"Acute accent",micro:"Micro sign",para:"Pilcrow sign",middot:"Middle dot",cedil:"Cedilla",sup1:"Superscript one",ordm:"Masculine ordinal indicator",raquo:"Right-pointing double angle quotation mark",frac14:"Vulgar fraction one quarter",frac12:"Vulgar fraction one half",frac34:"Vulgar fraction three quarters",iquest:"Inverted question mark",Agrave:"Latin capital letter A with grave accent", -Aacute:"Latin capital letter A with acute accent",Acirc:"Latin capital letter A with circumflex",Atilde:"Latin capital letter A with tilde",Auml:"Latin capital letter A with diaeresis",Aring:"Latin capital letter A with ring above",AElig:"Latin capital letter Æ",Ccedil:"Latin capital letter C with cedilla",Egrave:"Latin capital letter E with grave accent",Eacute:"Latin capital letter E with acute accent",Ecirc:"Latin capital letter E with circumflex",Euml:"Latin capital letter E with diaeresis",Igrave:"Latin capital letter I with grave accent", -Iacute:"Latin capital letter I with acute accent",Icirc:"Latin capital letter I with circumflex",Iuml:"Latin capital letter I with diaeresis",ETH:"Latin capital letter Eth",Ntilde:"Latin capital letter N with tilde",Ograve:"Latin capital letter O with grave accent",Oacute:"Latin capital letter O with acute accent",Ocirc:"Latin capital letter O with circumflex",Otilde:"Latin capital letter O with tilde",Ouml:"Latin capital letter O with diaeresis",times:"Multiplication sign",Oslash:"Latin capital letter O with stroke", -Ugrave:"Latin capital letter U with grave accent",Uacute:"Latin capital letter U with acute accent",Ucirc:"Latin capital letter U with circumflex",Uuml:"Latin capital letter U with diaeresis",Yacute:"Latin capital letter Y with acute accent",THORN:"Latin capital letter Thorn",szlig:"Latin small letter sharp s",agrave:"Latin small letter a with grave accent",aacute:"Latin small letter a with acute accent",acirc:"Latin small letter a with circumflex",atilde:"Latin small letter a with tilde",auml:"Latin small letter a with diaeresis", -aring:"Latin small letter a with ring above",aelig:"Latin small letter æ",ccedil:"Latin small letter c with cedilla",egrave:"Latin small letter e with grave accent",eacute:"Latin small letter e with acute accent",ecirc:"Latin small letter e with circumflex",euml:"Latin small letter e with diaeresis",igrave:"Latin small letter i with grave accent",iacute:"Latin small letter i with acute accent",icirc:"Latin small letter i with circumflex",iuml:"Latin small letter i with diaeresis",eth:"Latin small letter eth", -ntilde:"Latin small letter n with tilde",ograve:"Latin small letter o with grave accent",oacute:"Latin small letter o with acute accent",ocirc:"Latin small letter o with circumflex",otilde:"Latin small letter o with tilde",ouml:"Latin small letter o with diaeresis",divide:"Division sign",oslash:"Latin small letter o with stroke",ugrave:"Latin small letter u with grave accent",uacute:"Latin small letter u with acute accent",ucirc:"Latin small letter u with circumflex",uuml:"Latin small letter u with diaeresis", -yacute:"Latin small letter y with acute accent",thorn:"Latin small letter thorn",yuml:"Latin small letter y with diaeresis",OElig:"Latin capital ligature OE",oelig:"Latin small ligature oe",372:"Latin capital letter W with circumflex",374:"Latin capital letter Y with circumflex",373:"Latin small letter w with circumflex",375:"Latin small letter y with circumflex",sbquo:"Single low-9 quotation mark",8219:"Single high-reversed-9 quotation mark",bdquo:"Double low-9 quotation mark",hellip:"Horizontal ellipsis", -trade:"Trade mark sign",9658:"Black right-pointing pointer",bull:"Bullet",rarr:"Rightwards arrow",rArr:"Rightwards double arrow",hArr:"Left right double arrow",diams:"Black diamond suit",asymp:"Almost equal to"}); \ No newline at end of file diff --git a/src/static/ckeditor/plugins/specialchar/dialogs/lang/en-gb.js b/src/static/ckeditor/plugins/specialchar/dialogs/lang/en-gb.js deleted file mode 100644 index e6b649ff..00000000 --- a/src/static/ckeditor/plugins/specialchar/dialogs/lang/en-gb.js +++ /dev/null @@ -1,13 +0,0 @@ -/* - 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 -*/ -CKEDITOR.plugins.setLang("specialchar","en-gb",{euro:"Euro sign",lsquo:"Left single quotation mark",rsquo:"Right single quotation mark",ldquo:"Left double quotation mark",rdquo:"Right double quotation mark",ndash:"En dash",mdash:"Em dash",iexcl:"Inverted exclamation mark",cent:"Cent sign",pound:"Pound sign",curren:"Currency sign",yen:"Yen sign",brvbar:"Broken bar",sect:"Section sign",uml:"Diaeresis",copy:"Copyright sign",ordf:"Feminine ordinal indicator",laquo:"Left-pointing double angle quotation mark", -not:"Not sign",reg:"Registered sign",macr:"Macron",deg:"Degree sign",sup2:"Superscript two",sup3:"Superscript three",acute:"Acute accent",micro:"Micro sign",para:"Pilcrow sign",middot:"Middle dot",cedil:"Cedilla",sup1:"Superscript one",ordm:"Masculine ordinal indicator",raquo:"Right-pointing double angle quotation mark",frac14:"Vulgar fraction one quarter",frac12:"Vulgar fraction one half",frac34:"Vulgar fraction three quarters",iquest:"Inverted question mark",Agrave:"Latin capital letter A with grave accent", -Aacute:"Latin capital letter A with acute accent",Acirc:"Latin capital letter A with circumflex",Atilde:"Latin capital letter A with tilde",Auml:"Latin capital letter A with diaeresis",Aring:"Latin capital letter A with ring above",AElig:"Latin capital letter Æ",Ccedil:"Latin capital letter C with cedilla",Egrave:"Latin capital letter E with grave accent",Eacute:"Latin capital letter E with acute accent",Ecirc:"Latin capital letter E with circumflex",Euml:"Latin capital letter E with diaeresis",Igrave:"Latin capital letter I with grave accent", -Iacute:"Latin capital letter I with acute accent",Icirc:"Latin capital letter I with circumflex",Iuml:"Latin capital letter I with diaeresis",ETH:"Latin capital letter Eth",Ntilde:"Latin capital letter N with tilde",Ograve:"Latin capital letter O with grave accent",Oacute:"Latin capital letter O with acute accent",Ocirc:"Latin capital letter O with circumflex",Otilde:"Latin capital letter O with tilde",Ouml:"Latin capital letter O with diaeresis",times:"Multiplication sign",Oslash:"Latin capital letter O with stroke", -Ugrave:"Latin capital letter U with grave accent",Uacute:"Latin capital letter U with acute accent",Ucirc:"Latin capital letter U with circumflex",Uuml:"Latin capital letter U with diaeresis",Yacute:"Latin capital letter Y with acute accent",THORN:"Latin capital letter Thorn",szlig:"Latin small letter sharp s",agrave:"Latin small letter a with grave accent",aacute:"Latin small letter a with acute accent",acirc:"Latin small letter a with circumflex",atilde:"Latin small letter a with tilde",auml:"Latin small letter a with diaeresis", -aring:"Latin small letter a with ring above",aelig:"Latin small letter æ",ccedil:"Latin small letter c with cedilla",egrave:"Latin small letter e with grave accent",eacute:"Latin small letter e with acute accent",ecirc:"Latin small letter e with circumflex",euml:"Latin small letter e with diaeresis",igrave:"Latin small letter i with grave accent",iacute:"Latin small letter i with acute accent",icirc:"Latin small letter i with circumflex",iuml:"Latin small letter i with diaeresis",eth:"Latin small letter eth", -ntilde:"Latin small letter n with tilde",ograve:"Latin small letter o with grave accent",oacute:"Latin small letter o with acute accent",ocirc:"Latin small letter o with circumflex",otilde:"Latin small letter o with tilde",ouml:"Latin small letter o with diaeresis",divide:"Division sign",oslash:"Latin small letter o with stroke",ugrave:"Latin small letter u with grave accent",uacute:"Latin small letter u with acute accent",ucirc:"Latin small letter u with circumflex",uuml:"Latin small letter u with diaeresis", -yacute:"Latin small letter y with acute accent",thorn:"Latin small letter thorn",yuml:"Latin small letter y with diaeresis",OElig:"Latin capital ligature OE",oelig:"Latin small ligature oe",372:"Latin capital letter W with circumflex",374:"Latin capital letter Y with circumflex",373:"Latin small letter w with circumflex",375:"Latin small letter y with circumflex",sbquo:"Single low-9 quotation mark",8219:"Single high-reversed-9 quotation mark",bdquo:"Double low-9 quotation mark",hellip:"Horizontal ellipsis", -trade:"Trade mark sign",9658:"Black right-pointing pointer",bull:"Bullet",rarr:"Rightwards arrow",rArr:"Rightwards double arrow",hArr:"Left right double arrow",diams:"Black diamond suit",asymp:"Almost equal to"}); \ No newline at end of file diff --git a/src/static/ckeditor/plugins/specialchar/dialogs/lang/en.js b/src/static/ckeditor/plugins/specialchar/dialogs/lang/en.js deleted file mode 100644 index b5d78fd4..00000000 --- a/src/static/ckeditor/plugins/specialchar/dialogs/lang/en.js +++ /dev/null @@ -1,13 +0,0 @@ -/* - 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 -*/ -CKEDITOR.plugins.setLang("specialchar","en",{euro:"Euro sign",lsquo:"Left single quotation mark",rsquo:"Right single quotation mark",ldquo:"Left double quotation mark",rdquo:"Right double quotation mark",ndash:"En dash",mdash:"Em dash",iexcl:"Inverted exclamation mark",cent:"Cent sign",pound:"Pound sign",curren:"Currency sign",yen:"Yen sign",brvbar:"Broken bar",sect:"Section sign",uml:"Diaeresis",copy:"Copyright sign",ordf:"Feminine ordinal indicator",laquo:"Left-pointing double angle quotation mark", -not:"Not sign",reg:"Registered sign",macr:"Macron",deg:"Degree sign",sup2:"Superscript two",sup3:"Superscript three",acute:"Acute accent",micro:"Micro sign",para:"Pilcrow sign",middot:"Middle dot",cedil:"Cedilla",sup1:"Superscript one",ordm:"Masculine ordinal indicator",raquo:"Right-pointing double angle quotation mark",frac14:"Vulgar fraction one quarter",frac12:"Vulgar fraction one half",frac34:"Vulgar fraction three quarters",iquest:"Inverted question mark",Agrave:"Latin capital letter A with grave accent", -Aacute:"Latin capital letter A with acute accent",Acirc:"Latin capital letter A with circumflex",Atilde:"Latin capital letter A with tilde",Auml:"Latin capital letter A with diaeresis",Aring:"Latin capital letter A with ring above",AElig:"Latin capital letter Æ",Ccedil:"Latin capital letter C with cedilla",Egrave:"Latin capital letter E with grave accent",Eacute:"Latin capital letter E with acute accent",Ecirc:"Latin capital letter E with circumflex",Euml:"Latin capital letter E with diaeresis",Igrave:"Latin capital letter I with grave accent", -Iacute:"Latin capital letter I with acute accent",Icirc:"Latin capital letter I with circumflex",Iuml:"Latin capital letter I with diaeresis",ETH:"Latin capital letter Eth",Ntilde:"Latin capital letter N with tilde",Ograve:"Latin capital letter O with grave accent",Oacute:"Latin capital letter O with acute accent",Ocirc:"Latin capital letter O with circumflex",Otilde:"Latin capital letter O with tilde",Ouml:"Latin capital letter O with diaeresis",times:"Multiplication sign",Oslash:"Latin capital letter O with stroke", -Ugrave:"Latin capital letter U with grave accent",Uacute:"Latin capital letter U with acute accent",Ucirc:"Latin capital letter U with circumflex",Uuml:"Latin capital letter U with diaeresis",Yacute:"Latin capital letter Y with acute accent",THORN:"Latin capital letter Thorn",szlig:"Latin small letter sharp s",agrave:"Latin small letter a with grave accent",aacute:"Latin small letter a with acute accent",acirc:"Latin small letter a with circumflex",atilde:"Latin small letter a with tilde",auml:"Latin small letter a with diaeresis", -aring:"Latin small letter a with ring above",aelig:"Latin small letter æ",ccedil:"Latin small letter c with cedilla",egrave:"Latin small letter e with grave accent",eacute:"Latin small letter e with acute accent",ecirc:"Latin small letter e with circumflex",euml:"Latin small letter e with diaeresis",igrave:"Latin small letter i with grave accent",iacute:"Latin small letter i with acute accent",icirc:"Latin small letter i with circumflex",iuml:"Latin small letter i with diaeresis",eth:"Latin small letter eth", -ntilde:"Latin small letter n with tilde",ograve:"Latin small letter o with grave accent",oacute:"Latin small letter o with acute accent",ocirc:"Latin small letter o with circumflex",otilde:"Latin small letter o with tilde",ouml:"Latin small letter o with diaeresis",divide:"Division sign",oslash:"Latin small letter o with stroke",ugrave:"Latin small letter u with grave accent",uacute:"Latin small letter u with acute accent",ucirc:"Latin small letter u with circumflex",uuml:"Latin small letter u with diaeresis", -yacute:"Latin small letter y with acute accent",thorn:"Latin small letter thorn",yuml:"Latin small letter y with diaeresis",OElig:"Latin capital ligature OE",oelig:"Latin small ligature oe",372:"Latin capital letter W with circumflex",374:"Latin capital letter Y with circumflex",373:"Latin small letter w with circumflex",375:"Latin small letter y with circumflex",sbquo:"Single low-9 quotation mark",8219:"Single high-reversed-9 quotation mark",bdquo:"Double low-9 quotation mark",hellip:"Horizontal ellipsis", -trade:"Trade mark sign",9658:"Black right-pointing pointer",bull:"Bullet",rarr:"Rightwards arrow",rArr:"Rightwards double arrow",hArr:"Left right double arrow",diams:"Black diamond suit",asymp:"Almost equal to"}); \ No newline at end of file diff --git a/src/static/ckeditor/plugins/specialchar/dialogs/lang/zh.js b/src/static/ckeditor/plugins/specialchar/dialogs/lang/zh.js deleted file mode 100644 index fbcdb362..00000000 --- a/src/static/ckeditor/plugins/specialchar/dialogs/lang/zh.js +++ /dev/null @@ -1,9 +0,0 @@ -/* - 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 -*/ -CKEDITOR.plugins.setLang("specialchar","zh",{euro:"歐元符號",lsquo:"左單引號",rsquo:"右單引號",ldquo:"左雙引號",rdquo:"右雙引號",ndash:"短破折號",mdash:"長破折號",iexcl:"倒置的驚嘆號",cent:"美分符號",pound:"英鎊符號",curren:"貨幣符號",yen:"日圓符號",brvbar:"破折號",sect:"章節符號",uml:"分音符號",copy:"版權符號",ordf:"雌性符號",laquo:"左雙角括號",not:"Not 符號",reg:"註冊商標符號",macr:"長音符號",deg:"度數符號",sup2:"上標字 2",sup3:"上標字 3",acute:"尖音符號",micro:"微",para:"段落符號",middot:"中間點",cedil:"字母 C 下面的尾型符號 ",sup1:"上標",ordm:"雄性符號",raquo:"右雙角括號",frac14:"四分之一符號",frac12:"二分之一符號",frac34:"四分之三符號", -iquest:"倒置的問號",Agrave:"拉丁大寫字母 A 帶抑音符號",Aacute:"拉丁大寫字母 A 帶尖音符號",Acirc:"拉丁大寫字母 A 帶揚抑符",Atilde:"拉丁大寫字母 A 帶波浪號",Auml:"拉丁大寫字母 A 帶分音符號",Aring:"拉丁大寫字母 A 帶上圓圈",AElig:"拉丁大寫字母 Æ",Ccedil:"拉丁大寫字母 C 帶下尾符號",Egrave:"拉丁大寫字母 E 帶抑音符號",Eacute:"拉丁大寫字母 E 帶尖音符號",Ecirc:"拉丁大寫字母 E 帶揚抑符",Euml:"拉丁大寫字母 E 帶分音符號",Igrave:"拉丁大寫字母 I 帶抑音符號",Iacute:"拉丁大寫字母 I 帶尖音符號",Icirc:"拉丁大寫字母 I 帶揚抑符",Iuml:"拉丁大寫字母 I 帶分音符號",ETH:"拉丁大寫字母 Eth",Ntilde:"拉丁大寫字母 N 帶波浪號",Ograve:"拉丁大寫字母 O 帶抑音符號",Oacute:"拉丁大寫字母 O 帶尖音符號",Ocirc:"拉丁大寫字母 O 帶揚抑符",Otilde:"拉丁大寫字母 O 帶波浪號", -Ouml:"拉丁大寫字母 O 帶分音符號",times:"乘號",Oslash:"拉丁大寫字母 O 帶粗線符號",Ugrave:"拉丁大寫字母 U 帶抑音符號",Uacute:"拉丁大寫字母 U 帶尖音符號",Ucirc:"拉丁大寫字母 U 帶揚抑符",Uuml:"拉丁大寫字母 U 帶分音符號",Yacute:"拉丁大寫字母 Y 帶尖音符號",THORN:"拉丁大寫字母 Thorn",szlig:"拉丁小寫字母 s",agrave:"拉丁小寫字母 a 帶抑音符號",aacute:"拉丁小寫字母 a 帶尖音符號",acirc:"拉丁小寫字母 a 帶揚抑符",atilde:"拉丁小寫字母 a 帶波浪號",auml:"拉丁小寫字母 a 帶分音符號",aring:"拉丁小寫字母 a 帶上圓圈",aelig:"拉丁小寫字母 æ",ccedil:"拉丁小寫字母 c 帶下尾符號",egrave:"拉丁小寫字母 e 帶抑音符號",eacute:"拉丁小寫字母 e 帶尖音符號",ecirc:"拉丁小寫字母 e 帶揚抑符",euml:"拉丁小寫字母 e 帶分音符號",igrave:"拉丁小寫字母 i 帶抑音符號", -iacute:"拉丁小寫字母 i 帶尖音符號",icirc:"拉丁小寫字母 i 帶揚抑符",iuml:"拉丁小寫字母 i 帶分音符號",eth:"拉丁小寫字母 eth",ntilde:"拉丁小寫字母 n 帶波浪號",ograve:"拉丁小寫字母 o 帶抑音符號",oacute:"拉丁小寫字母 o 帶尖音符號",ocirc:"拉丁小寫字母 o 帶揚抑符",otilde:"拉丁小寫字母 o 帶波浪號",ouml:"拉丁小寫字母 o 帶分音符號",divide:"除號",oslash:"拉丁小寫字母 o 帶粗線符號",ugrave:"拉丁小寫字母 u 帶抑音符號",uacute:"拉丁小寫字母 u 帶尖音符號",ucirc:"拉丁小寫字母 u 帶揚抑符",uuml:"拉丁小寫字母 u 帶分音符號",yacute:"拉丁小寫字母 y 帶尖音符號",thorn:"拉丁小寫字母 thorn",yuml:"拉丁小寫字母 y 帶分音符號",OElig:"拉丁大寫字母 OE",oelig:"拉丁小寫字母 oe",372:"拉丁大寫字母 W 帶揚抑符",374:"拉丁大寫字母 Y 帶揚抑符",373:"拉丁小寫字母 w 帶揚抑符", -375:"拉丁小寫字母 y 帶揚抑符",sbquo:"低 9 單引號",8219:"高 9 反轉單引號",bdquo:"低 9 雙引號",hellip:"水平刪節號",trade:"商標符號",9658:"黑色向右指箭號",bull:"項目符號",rarr:"向右箭號",rArr:"向右雙箭號",hArr:"左右雙箭號",diams:"黑鑽套裝",asymp:"約等於"}); \ No newline at end of file diff --git a/src/static/ckeditor/plugins/stylesheetparser/plugin.js b/src/static/ckeditor/plugins/stylesheetparser/plugin.js new file mode 100644 index 00000000..1122a9f1 --- /dev/null +++ b/src/static/ckeditor/plugins/stylesheetparser/plugin.js @@ -0,0 +1,7 @@ +/* + Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved. + For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +(function(){function h(b,e,c){var k=[],g=[],a;for(a=0;a<b.styleSheets.length;a++){var d=b.styleSheets[a];if(!((d.ownerNode||d.owningElement).getAttribute("data-cke-temp")||d.href&&"chrome://"==d.href.substr(0,9)))try{for(var f=d.cssRules||d.rules,d=0;d<f.length;d++)g.push(f[d].selectorText)}catch(h){}}a=g.join(" ");a=a.replace(/(,|>|\+|~)/g," ");a=a.replace(/\[[^\]]*/g,"");a=a.replace(/#[^\s]*/g,"");a=a.replace(/\:{1,2}[^\s]*/g,"");a=a.replace(/\s+/g," ");a=a.split(" ");b=[];for(g=0;g<a.length;g++)f= +a[g],c.test(f)&&!e.test(f)&&-1==CKEDITOR.tools.indexOf(b,f)&&b.push(f);for(a=0;a<b.length;a++)c=b[a].split("."),e=c[0].toLowerCase(),c=c[1],k.push({name:e+"."+c,element:e,attributes:{"class":c}});return k}CKEDITOR.plugins.add("stylesheetparser",{init:function(b){b.filter.disable();var e;b.once("stylesSet",function(c){c.cancel();b.once("contentDom",function(){b.getStylesSet(function(c){e=c.concat(h(b.document.$,b.config.stylesheetParser_skipSelectors||/(^body\.|^\.)/i,b.config.stylesheetParser_validSelectors|| +/\w+\.\w+/));b.getStylesSet=function(b){if(e)return b(e)};b.fire("stylesSet",{styles:e})})})},null,null,1)}})})(); \ No newline at end of file diff --git a/src/static/ckeditor/plugins/templates/dialogs/templates.css b/src/static/ckeditor/plugins/templates/dialogs/templates.css new file mode 100644 index 00000000..2a442da4 --- /dev/null +++ b/src/static/ckeditor/plugins/templates/dialogs/templates.css @@ -0,0 +1,84 @@ +/* +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_tpl_list +{ + border: #dcdcdc 2px solid; + background-color: #ffffff; + overflow-y: auto; + overflow-x: hidden; + width: 100%; + height: 220px; +} + +.cke_tpl_item +{ + margin: 5px; + padding: 7px; + border: #eeeeee 1px solid; + *width: 88%; +} + +.cke_tpl_preview +{ + border-collapse: separate; + text-indent:0; + width: 100%; +} +.cke_tpl_preview td +{ + padding: 2px; + vertical-align: middle; +} +.cke_tpl_preview .cke_tpl_preview_img +{ + width: 100px; +} +.cke_tpl_preview span +{ + white-space: normal; +} + +.cke_tpl_title +{ + font-weight: bold; +} + +.cke_tpl_list a:hover .cke_tpl_item, +.cke_tpl_list a:focus .cke_tpl_item, +.cke_tpl_list a:active .cke_tpl_item +{ + border: #ff9933 1px solid; + background-color: #fffacd; +} + +.cke_tpl_list a:hover *, +.cke_tpl_list a:focus *, +.cke_tpl_list a:active * +{ + cursor: pointer; +} + +/* IE Quirks contextual selectors children will not get :hover transition until + the hover style of the link itself contains certain CSS declarations. */ +.cke_browser_quirks .cke_tpl_list a:active, +.cke_browser_quirks .cke_tpl_list a:hover, +.cke_browser_quirks .cke_tpl_list a:focus +{ + background-position: 0 0; +} + +.cke_hc .cke_tpl_list a:hover .cke_tpl_item, +.cke_hc .cke_tpl_list a:focus .cke_tpl_item, +.cke_hc .cke_tpl_list a:active .cke_tpl_item +{ + border-width: 3px; +} + +.cke_tpl_empty, .cke_tpl_loading +{ + text-align: center; + padding: 5px; +} diff --git a/src/static/ckeditor/plugins/templates/dialogs/templates.js b/src/static/ckeditor/plugins/templates/dialogs/templates.js new file mode 100644 index 00000000..d778e7eb --- /dev/null +++ b/src/static/ckeditor/plugins/templates/dialogs/templates.js @@ -0,0 +1,11 @@ +/* + 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 +*/ +(function(){CKEDITOR.dialog.add("templates",function(c){function r(a,b){var n=CKEDITOR.dom.element.createFromHtml('\x3ca href\x3d"javascript:void(0)" tabIndex\x3d"-1" role\x3d"option" \x3e\x3cdiv class\x3d"cke_tpl_item"\x3e\x3c/div\x3e\x3c/a\x3e'),d='\x3ctable style\x3d"width:350px;" class\x3d"cke_tpl_preview" role\x3d"presentation"\x3e\x3ctr\x3e';a.image&&b&&(d+='\x3ctd class\x3d"cke_tpl_preview_img"\x3e\x3cimg src\x3d"'+CKEDITOR.getUrl(b+a.image)+'"'+(CKEDITOR.env.ie6Compat?' onload\x3d"this.width\x3dthis.width"': +"")+' alt\x3d"" title\x3d""\x3e\x3c/td\x3e');d+='\x3ctd style\x3d"white-space:normal;"\x3e\x3cspan class\x3d"cke_tpl_title"\x3e'+a.title+"\x3c/span\x3e\x3cbr/\x3e";a.description&&(d+="\x3cspan\x3e"+a.description+"\x3c/span\x3e");d+="\x3c/td\x3e\x3c/tr\x3e\x3c/table\x3e";n.getFirst().setHtml(d);n.on("click",function(){if(a.htmlFile){var b=CKEDITOR.dialog.getCurrent();b.setState(CKEDITOR.DIALOG_STATE_BUSY);CKEDITOR.ajax.loadText(a.htmlFile,function(a){l(a);b.setState(CKEDITOR.DIALOG_STATE_IDLE)})}else l(a.html)}); +return n}function l(a){var b=CKEDITOR.dialog.getCurrent();b.getValueOf("selectTpl","chkInsertOpt")?(c.fire("saveSnapshot"),c.setData(a,function(){b.hide();var a=c.createRange();a.moveToElementEditStart(c.editable());a.select();setTimeout(function(){c.fire("saveSnapshot")},0)})):(c.insertHtml(a),b.hide())}function k(a){var b=a.data.getTarget(),c=g.equals(b);if(c||g.contains(b)){var d=a.data.getKeystroke(),f=g.getElementsByTag("a"),e;if(f){if(c)e=f.getItem(0);else switch(d){case 40:e=b.getNext();break; +case 38:e=b.getPrevious();break;case 13:case 32:b.fire("click")}e&&(e.focus(),a.data.preventDefault())}}}var h=CKEDITOR.plugins.get("templates");CKEDITOR.document.appendStyleSheet(CKEDITOR.getUrl(h.path+"dialogs/templates.css"));var g,h="cke_tpl_list_label_"+CKEDITOR.tools.getNextNumber(),f=c.lang.templates,p=c.config;return{title:c.lang.templates.title,minWidth:CKEDITOR.env.ie?440:400,minHeight:340,contents:[{id:"selectTpl",label:f.title,elements:[{type:"vbox",padding:5,children:[{id:"chkInsertOpt", +type:"checkbox",label:f.insertOption,"default":p.templates_replaceContent},{id:"selectTplText",type:"html",html:"\x3cspan\x3e"+f.selectPromptMsg+"\x3c/span\x3e"},{id:"templatesList",type:"html",focus:!0,html:'\x3cdiv class\x3d"cke_tpl_list" tabIndex\x3d"-1" role\x3d"listbox" aria-labelledby\x3d"'+h+'"\x3e\x3cdiv class\x3d"cke_tpl_loading"\x3e\x3cspan\x3e\x3c/span\x3e\x3c/div\x3e\x3c/div\x3e\x3cspan class\x3d"cke_voice_label" id\x3d"'+h+'"\x3e'+f.options+"\x3c/span\x3e"}]}]}],buttons:[CKEDITOR.dialog.cancelButton], +onShow:function(){var a=this.getContentElement("selectTpl","templatesList");g=a.getElement();CKEDITOR.loadTemplates(p.templates_files,function(){var b=(p.templates||"default").split(",");if(b.length){var c=g;c.setHtml("");for(var d=0,h=b.length;d<h;d++)for(var e=CKEDITOR.getTemplates(b[d]),l=e.imagesPath,e=e.templates,k=e.length,m=0;m<k;m++){var q=r(e[m],l);q.setAttribute("aria-posinset",m+1);q.setAttribute("aria-setsize",k);c.append(q)}a.focus()}else g.setHtml('\x3cdiv class\x3d"cke_tpl_empty"\x3e\x3cspan\x3e'+ +f.emptyListMsg+"\x3c/span\x3e\x3c/div\x3e")});this._.element.on("keydown",k)},onHide:function(){this._.element.removeListener("keydown",k)}}})})(); \ No newline at end of file diff --git a/src/static/ckeditor/plugins/templates/templatedefinition.js b/src/static/ckeditor/plugins/templates/templatedefinition.js new file mode 100644 index 00000000..9361af4b --- /dev/null +++ b/src/static/ckeditor/plugins/templates/templatedefinition.js @@ -0,0 +1,4 @@ +/* + 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/src/static/ckeditor/plugins/templates/templates/default.js b/src/static/ckeditor/plugins/templates/templates/default.js new file mode 100644 index 00000000..8fe17ffc --- /dev/null +++ b/src/static/ckeditor/plugins/templates/templates/default.js @@ -0,0 +1,7 @@ +/* + 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 +*/ +CKEDITOR.addTemplates("default",{imagesPath:CKEDITOR.getUrl(CKEDITOR.plugins.getPath("templates")+"templates/images/"),templates:[{title:"Image and Title",image:"template1.gif",description:"One main image with a title and text that surround the image.",html:'\x3ch3\x3e\x3cimg src\x3d" " alt\x3d"" style\x3d"margin-right: 10px" height\x3d"100" width\x3d"100" align\x3d"left" /\x3eType the title here\x3c/h3\x3e\x3cp\x3eType the text here\x3c/p\x3e'},{title:"Strange Template",image:"template2.gif",description:"A template that defines two columns, each one with a title, and some text.", +html:'\x3ctable cellspacing\x3d"0" cellpadding\x3d"0" style\x3d"width:100%" border\x3d"0"\x3e\x3ctr\x3e\x3ctd style\x3d"width:50%"\x3e\x3ch3\x3eTitle 1\x3c/h3\x3e\x3c/td\x3e\x3ctd\x3e\x3c/td\x3e\x3ctd style\x3d"width:50%"\x3e\x3ch3\x3eTitle 2\x3c/h3\x3e\x3c/td\x3e\x3c/tr\x3e\x3ctr\x3e\x3ctd\x3eText 1\x3c/td\x3e\x3ctd\x3e\x3c/td\x3e\x3ctd\x3eText 2\x3c/td\x3e\x3c/tr\x3e\x3c/table\x3e\x3cp\x3eMore text goes here.\x3c/p\x3e'},{title:"Text and Table",image:"template3.gif",description:"A title with some text and a table.", +html:'\x3cdiv style\x3d"width: 80%"\x3e\x3ch3\x3eTitle goes here\x3c/h3\x3e\x3ctable style\x3d"width:150px;float: right" cellspacing\x3d"0" cellpadding\x3d"0" border\x3d"1"\x3e\x3ccaption style\x3d"border:solid 1px black"\x3e\x3cstrong\x3eTable title\x3c/strong\x3e\x3c/caption\x3e\x3ctr\x3e\x3ctd\x3e\x26nbsp;\x3c/td\x3e\x3ctd\x3e\x26nbsp;\x3c/td\x3e\x3ctd\x3e\x26nbsp;\x3c/td\x3e\x3c/tr\x3e\x3ctr\x3e\x3ctd\x3e\x26nbsp;\x3c/td\x3e\x3ctd\x3e\x26nbsp;\x3c/td\x3e\x3ctd\x3e\x26nbsp;\x3c/td\x3e\x3c/tr\x3e\x3ctr\x3e\x3ctd\x3e\x26nbsp;\x3c/td\x3e\x3ctd\x3e\x26nbsp;\x3c/td\x3e\x3ctd\x3e\x26nbsp;\x3c/td\x3e\x3c/tr\x3e\x3c/table\x3e\x3cp\x3eType the text here\x3c/p\x3e\x3c/div\x3e'}]}); \ No newline at end of file diff --git a/src/static/ckeditor/plugins/templates/templates/images/template1.gif b/src/static/ckeditor/plugins/templates/templates/images/template1.gif new file mode 100644 index 0000000000000000000000000000000000000000..428c5a6a8840bd9fabd512c7e1f4c34c8841f992 GIT binary patch literal 539 zcmV+$0_6QiNk%w1VPpVC0OJY(lclDVrKgjosFbFs$<orw($dS)(#g})%G1-z)YSj~ z|NsC0|NsC0|NsC0|NsC0A^8LW3IGoPEC2ui0Av70000F3@C87ty*TU5yZ@IUfn;f( zXD|Ry>%MR-&vb3yI1H?8?*G7`&mt@uk2xZ8$wVrf&?xRHty*1F7y&`(dcWW>7-5i! z&*-$6mUXG$=kkjSuh(bo7B{-p+W%^J6*FCY1b%>tVS*Hdhfswtij!ZAJu#6@nJtu* z2$qh9n4N&1pk|MnsaHmM51UJ{tU<1_N4B#=gQ%jpMYXH3!M?hUypX{Mbfk3%2dAUG zE(gqj&oaQ$ddt;n&d`3^#Ko84$m6uT(dXzt+3f8}>gKBP<e~5_%H43^*z=Nx-Acx< z&b1it>doO+P>er>0Nn^Qg3BI6W9t-Jw2_cW#f`~WB66Bo<Ri!j9fh5&;c5@00x<S9 zMDtLG$Oj2#%9%D(%|V+OV<afhjZ6##410R1`NGx8cut?9iz<~E)vCF!VrA7bsnV}w zOkFJZf*RPfXMQ%lnZPUBuSmgdZKri^mAZDL;LY1)FW)6y-wNI$7ARSsg9WP%8T3Wl z#AxIGYy5YX-^#6SVwQ4wb2`eNIp0JI`K;uzGt8C-ySRm`$E%f|HXPcr=GuU7<37@P d_l@4ZSq>0@qPX$nB?3Gkj=Z^Z<jNxe06U?cA2R>| literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/templates/templates/images/template2.gif b/src/static/ckeditor/plugins/templates/templates/images/template2.gif new file mode 100644 index 0000000000000000000000000000000000000000..c494efe260c33ecab0c109c59ac9465d295f6311 GIT binary patch literal 497 zcmZ?wbhEHbOkr?ic+9~tdFiq#OP5bxwqnY%<tHy)I(hl>DImIX<v$Lf_>+Z^i-Chd zhXDvcW-ze)6JT{%z1QOP+1>xAD>SBL&Pz97@OZtiK<9i(?tKfMH97D8A6Rf+Nk^*R zQmN>qi`MK58t*jMM#YBAXgu(?YX1X+ify8^&p(d57V5V9;>K^)^ZM3Cf2p~<^nLMF zQRBK=!{(|6k*2ni*6!jC+uptmwn>xIrW%!3Oi!9QZEoEBvc~Xbp|h8-a$321o#)c^ zn;h0|-e$Eis%T*h+hW~)d*b&^FlIfJz-oB>MBJ%aJM|BqWnnviY4@IMN4MWK-Fk1^ zgNK_QKUw$e`KsBM&mP%z<?8;3i+X21UjOzn=BNIfn+vxcT&y-BM5*-oCB;393KUmW z@tt<;>Bvj6PI<rK=;@Bv4>r}#XZfYL!`(NfyI$HgP9$tYvP#!xsY5AB#mgplnn^x7 z^Yg-EhY1e53%;07Ou4W?O)$rb;lqmEmFnf6dV-3xCaempPdLkUTK)PweN!t|t10us zYm+Aybssd*J+Ue9d|m6N(s$-7%et?e<@VLPudH!5uVvMi6$ukOr<>W@aONfMumAd} l*Cxg2spd5O+c#EMwljz<aPHO<WH|Wz;)>vYJy}KuYXFgy1+)MF literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/templates/templates/images/template3.gif b/src/static/ckeditor/plugins/templates/templates/images/template3.gif new file mode 100644 index 0000000000000000000000000000000000000000..d5a40cefad3ac245be6ea1125011cf3eadaba3fc GIT binary patch literal 557 zcmV+|0@D3QNk%w1VPpVC0OJV&lclDVrKgjosFbFs$<orx($dM()5_D+%GA{V|NsC0 z|NsC0|NsC0|NsC0|NsC0A^8LW3IGoPEC2ui0Av70000F3@C87ty*TU5yZ@IUfn;f( zXD|Ry>%MR-&vb3yI1H?8?*G7`&mt@uk2xZ8$wVrf&?xRHty*1F7-7rpdcWYXcuX$S zvaUmU&2GEJGj!`suiL-z%IwbXv-1>teuIQvfITsVihc)&G>edRXL?taRdSY@MVOkM zLzJGOK%Am31Zt261(Sg?2dI&+iIH8aGMEOmTm~^}m8Xubu&KOS1i#0(prtZfF1dY; zrpYm+rOqwGcG7dyI?K$)$id;W<I1h&#=6+m;Az^5vf?zw^)>C^=`hf`_S5)mcr%9% z5sX*54*csDu%RGw>Ht0xh;Ja4ck1#bqWH*S3v1h=*l~dv@qtDy93K`e`Ql{Dl+8Ro zz=V+2yp}TOz$EBy--~{<7Mjdyawol>24B>SCDf%Uqc}-M6zLRXD5p9d#*~_oDAA%F zxt7BUc4F9-EE$?zyA^G(c!h4J@e0)xH+@N;i4<CZs@SE(WE6nQD5ur5mJTDnqImHo zjE*}sjtqq+VX8LozQBdK^DeOnE_+_2`JzwCk|Cq6G<mfX)vh0(j?EY{;L(}I0>$kQ vv}oRpN`Hh+yE5_OOj;u!b$s~|<<64~5P+h(_3I@9JfM!fyLar`BLDz9DZwJt literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/uicolor/dialogs/uicolor.css b/src/static/ckeditor/plugins/uicolor/dialogs/uicolor.css new file mode 100644 index 00000000..9cb97126 --- /dev/null +++ b/src/static/ckeditor/plugins/uicolor/dialogs/uicolor.css @@ -0,0 +1,20 @@ +/** + * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license + */ + +.cke_colordialog_colorcell { + width: 12px; /* All cells have equal width which depends on parent width (in this case table parent). Width works more like max-width. */ + height: 14px; + padding: 1px; /* Padding is replaced by border for focused cells. Prevents 'jumping' when adding borders. */ +} + +.cke_colordialog_colorcell.cke_colordialog_focused_light, +.cke_colordialog_colorcell.cke_colordialog_focused_dark { + padding: 0; /* Shrink cell to allow 1px border indicating focus. */ + border: 1px dotted #000; +} + +.cke_colordialog_colorcell.cke_colordialog_focused_dark { + border-color: #FFF; +} diff --git a/src/static/ckeditor/plugins/uicolor/dialogs/uicolor.js b/src/static/ckeditor/plugins/uicolor/dialogs/uicolor.js new file mode 100644 index 00000000..a0c94bc8 --- /dev/null +++ b/src/static/ckeditor/plugins/uicolor/dialogs/uicolor.js @@ -0,0 +1,17 @@ +/* + Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved. + For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.dialog.add("uicolor",function(f){function B(a){a=a.data.getTarget();var c;"td"==a.getName()&&(c=a.getChild(0).getHtml())&&(n(),r(a),m(c))}function r(a){a&&(g=a,g.setAttribute("aria-selected",!0),g.addClass("cke_colordialog_selected"))}function n(){g&&(g.removeClass("cke_colordialog_selected"),g.removeAttribute("aria-selected"),g=null)}function m(a){k.getContentElement("picker","selectedColor").setValue(a);a||l.getById(t).removeStyle("background-color")}function C(a){!a.name&&(a=new CKEDITOR.event(a)); +var c=!/mouse/.test(a.name),b=a.data.getTarget(),h;"td"==b.getName()&&(h=b.getChild(0).getHtml())&&(u(a),c?e=b:D=b,c&&b.addClass(G(h)?"cke_colordialog_focused_light":"cke_colordialog_focused_dark"),v(h))}function u(a){if(a=!/mouse/.test(a.name)&&e)a.removeClass("cke_colordialog_focused_light"),a.removeClass("cke_colordialog_focused_dark");e||D||v(!1)}function v(a){a?(l.getById(w).setStyle("background-color",a),l.getById(x).setHtml(a)):(l.getById(w).removeStyle("background-color"),l.getById(x).setHtml("\x26nbsp;"))} +function G(a){a=a.replace(/^#/,"");for(var c=0,b=[];2>=c;c++)b[c]=parseInt(a.substr(2*c,2),16);return 165<=.2126*b[0]+.7152*b[1]+.0722*b[2]}function H(a){var c=a.data,b=c.getTarget(),h=c.getKeystroke(),d="rtl"==f.lang.dir;switch(h){case 38:if(a=b.getParent().getPrevious())a=a.getChild([b.getIndex()]),a.focus();c.preventDefault();break;case 40:(a=b.getParent().getNext())&&(a=a.getChild([b.getIndex()]))&&1==a.type&&a.focus();c.preventDefault();break;case 32:case 13:B(a);c.preventDefault();break;case d? +37:39:(a=b.getNext())?1==a.type&&(a.focus(),c.preventDefault(!0)):(a=b.getParent().getNext())&&(a=a.getChild([0]))&&1==a.type&&(a.focus(),c.preventDefault(!0));break;case d?39:37:if(a=b.getPrevious())a.focus(),c.preventDefault(!0);else if(a=b.getParent().getPrevious())a=a.getLast(),a.focus(),c.preventDefault(!0)}}function p(a){return CKEDITOR.tools.getNextId()+"_"+a}function E(a){var c=null;q&&a&&(c=q.findOne('td[data-color\x3d"'+a+'"]'));return c}function F(a,c){var b=a||c;f.setUiColor(b);k.getContentElement("picker", +"configBox").setValue(b);if(a&&k.getContentElement("picker","predefined").getValue()!==b)k.getContentElement("picker","predefined").setValue(b);else if(c){var d=E(b);d?r(d):n();k.getContentElement("picker","selectedColor").getValue()!==b&&m(b)}}function y(a){return a.getUiColor()?CKEDITOR.tools.parseCssText("color:"+a.getUiColor(),!0).color:null}var z=CKEDITOR.dom.element,l=CKEDITOR.document,d=f.lang.uicolor,w=p("hicolor"),x=p("hicolortext"),t=p("selhicolor"),k,q,g,e,D;q=function(){function a(a,d){for(var A= +a;A<a+3;A++){var f=new z(b.$.insertRow(-1));f.setAttribute("role","row");for(var e=d;e<d+3;e++)for(var g=0;6>g;g++)c(f.$,"#"+h[e]+h[g]+h[A])}}function c(a,c){var b=new z(a.insertCell(-1));b.setAttribute("class","ColorCell cke_colordialog_colorcell");b.setAttribute("tabIndex",-1);b.setAttribute("role","gridcell");b.setAttribute("data-color",c);b.on("keydown",H);b.on("click",B);b.on("focus",C);b.on("blur",u);b.setStyle("background-color",c);var d=p("color_table_cell");b.setAttribute("aria-labelledby", +d);b.append(CKEDITOR.dom.element.createFromHtml('\x3cspan id\x3d"'+d+'" class\x3d"cke_voice_label"\x3e'+c+"\x3c/span\x3e",CKEDITOR.document))}var b=CKEDITOR.dom.element.createFromHtml('\x3ctable tabIndex\x3d"-1" class\x3d"cke_colordialog_table" aria-label\x3d"'+d.options+'" role\x3d"grid" style\x3d"border-collapse:separate;" cellspacing\x3d"0"\x3e\x3ccaption class\x3d"cke_voice_label"\x3e'+d.options+'\x3c/caption\x3e\x3ctbody role\x3d"presentation"\x3e\x3c/tbody\x3e\x3c/table\x3e');b.on("mouseover", +C);b.on("mouseout",u);var h="00 33 66 99 cc ff".split(" ");a(0,0);a(3,0);a(0,3);a(3,3);var e=new z(b.$.insertRow(-1));e.setAttribute("role","row");c(e.$,"#000000");for(var g=0;16>g;g++){var f=g.toString(16);c(e.$,"#"+f+f+f+f+f+f)}c(e.$,"#ffffff");return b}();CKEDITOR.document.appendStyleSheet(CKEDITOR.getUrl(CKEDITOR.plugins.get("uicolor").path+"dialogs/uicolor.css"));return{title:d.title,minWidth:360,minHeight:220,buttons:[CKEDITOR.dialog.okButton],onLoad:function(){k=this},onHide:function(){n(); +m(null);e&&(e.removeClass("cke_colordialog_focused_light"),e.removeClass("cke_colordialog_focused_dark"),e=null,v(null))},contents:[{id:"picker",label:d.title,accessKey:"I",elements:[{type:"hbox",padding:0,widths:["70%","10%","30%"],children:[{type:"html",html:"\x3cdiv\x3e\x3c/div\x3e",onLoad:function(){CKEDITOR.document.getById(this.domId).append(q)},focus:function(){var a=y(f),c=a?E(a):e||this.getElement().getElementsByTag("td").getItem(0);c&&(c&&c.focus(),a&&(r(c),m(a)))}},{type:"html",html:"\x26nbsp;"}, +{type:"vbox",padding:0,widths:["70%","5%","25%"],children:[{type:"html",html:"\x3cspan\x3e"+d.highlight+'\x3c/span\x3e\x3cdiv id\x3d"'+w+'" style\x3d"border: 1px solid; height: 74px; width: 74px;"\x3e\x3c/div\x3e\x3cdiv id\x3d"'+x+'"\x3e\x26nbsp;\x3c/div\x3e\x3cspan\x3e'+d.selected+'\x3c/span\x3e\x3cdiv id\x3d"'+t+'" style\x3d"border: 1px solid; height: 20px; width: 74px;"\x3e\x3c/div\x3e'},{type:"text",label:d.selected,labelStyle:"display:none",id:"selectedColor",style:"width: 76px;margin-top:4px", +onChange:function(){try{var a=this.getValue();a&&(l.getById(t).setStyle("background-color",a),F(a))}catch(c){n(),m(null)}}}]}]},{type:"vbox",children:[{type:"hbox",padding:0,children:[{id:"predefined",type:"select","default":"",width:"100%",label:d.predefined,items:[[""],["Light blue","#9ab8f3"],["Sand","#d2b48c"],["Metallic","#949aaa"],["Purple","#c2a3c7"],["Olive","#a2c980"],["Happy green","#9bd446"],["Jezebel Blue","#14b8c4"],["Burn","#ff89a"],["Easy red","#ff6969"],["Pisces 3","#48b4f2"],["Aquarius 5", +"#487ed4"],["Absinthe","#a8cf76"],["Scrambled Egg","#c7a622"],["Hello monday","#8e8d80"],["Lovely sunshine","#f1e8b1"],["Recycled air","#b3c593"],["Down","#bcbca4"],["Mark Twain","#cfe91d"],["Specks of dust","#d1b596"],["Lollipop","#f6ce23"]],onShow:function(){this.setValue(y(f))},onChange:function(){var a=this.getValue();a&&(F(null,a),this.focus())}}]},{id:"configBox",type:"text",label:d.config,onShow:function(){this.getInputElement().setAttribute("readonly",!0);this.setValue(y(f))},onChange:function(){var a= +this.getValue();a&&CKEDITOR.tools.style.parse._findColor(a).length&&this.setValue('config.uiColor \x3d "'+a.toLowerCase()+'"',!0)}}]}]}]}}); \ No newline at end of file diff --git a/src/static/ckeditor/plugins/uicolor/icons/hidpi/uicolor.png b/src/static/ckeditor/plugins/uicolor/icons/hidpi/uicolor.png new file mode 100644 index 0000000000000000000000000000000000000000..9caa62be16f1c9ecef7c0130e703b99249491642 GIT binary patch literal 1817 zcmZ`)do+~m8voK@Xy{X7mQ+6FGE&VL#$9HNFxw@QQ_+ywRI;~Sm=OwtX<R}orV%k{ z*zIMSom(#3E!WIxM49QB?UuGFa*N~EKAf*V&mU*K>wTWJe$Vq;@AIzT^S)2UX>T_T zbv<<e05m+@$yC@IeBVeF*ha_4ufPs*h3G{DfaiC2{Y_W?9t?4(dI3PZF#xdG0I&%| ztWN;I!~(!fFaX%`06_P8QIoF&98mf32RAaX{eAIUDj&dzD#OFeRdr&Qk_H5%YD$oB z&H)cH(eHd`_PLg8dp)$bU-u@iAN5YZ1FDC#c0mV@7?J$c3{Pp5*^HE{B>_rmYK-9w zC11lZAKFyPtf}G0B36nfqD$G7q>FJ4Jz_48wQe38Eod|>9v<;e%c>m;pPswfwsx~E zuEr%7JsiG|o%>N62^p}RDQW_3O$#K%&m&>1R<aW>1_ov;c!~Z20Td=-=7=pD1W7C$ zVO3t+xYxvcVpb-CZ>M*Qh8<tqF@a{a0Z2ifA=|Wvcb{qokSH6vtdQ1)-gdW=LH4Ws zqvxnK?*ykQM9Ri~mLhe{Q4=F*W?1MvM71-4?JO>%wzdeT0+GX~mzS4g*XAE*mYD{f zWPAd@ZaCN|evh!fY?5hclam_LEbMSFVYf%>Q%$w0L~M`qv%qE!7L`Umh3t?>B%-2a zri_Wh;gV^`(+Ua-ph%;+x<w=u_Cg*;C_GI`j@AUOs6iTncez43ny=P>zrzRLBfTKh z>Ho_jyiPCYprd+kB#78iW|{&jQ7P`25FCe|jz#&J>qO4H!@RH0#-d8|0#vWt2@#ea zCxG)@Wy)uTcV%jLU8adoar;`rpREb|g=cpW!K{D0kfyKtKlM9puA}9uRc5+bB`%*U zHyu&tf4*CW9R0;QN?*12?x9}cg%@wa>)!nG0?s;4YXAn84Fp|@E<3eI6Mgp%|8BmE zO3}X4?QX(Prg|L)+%dW@v7sFL#AIjMr<mqNhuuW5of%kFRmGRhW?zCd*m-;MDXtF- z3Mv|NY2}Bl{G;_%t*?zC6#Dk|_L0I=180$}v%jC>kOV7=1WDJ|7wM??K|hRi0R#de zYG(&OK=_h5T53S0#1^M5D+W@jnTc&ld}&q9<42D&YhnVeD`me*T4~3}*Bo|>#bS{3 zrPTkYC$ibev6h=~N$7ox4W(9R&GHQdWI|!fA?xQ|L9JSd9n;g(6W<bNCJzhP3*UIf z#is<+j5$q<CwYB}<tB4$4jSz#QHQW_l>~g?85uKjZ9b4;cK|^I*OE&dn`V`G!%mI! z-T=sfV6_teUdM3*1b%;Jak<>Z&42$iYQK7kg;Nn%gRWYr&U8gw04p`!4At2%$g9YR zOv{n-=;+|A(!nrPH(IG3-6@soPy~CB(9>Wf6r4q*WSqFz+Vyz;3gG#cERxBm@UP?q zg}z)a$D%^2TqqbAZV7TD6lN>eUz`)<EkRa5n<FBaHB%5FUteDep}nmg$4hK!vfGNd ziK2zVjWD(P`ucX;G&*`<<<>u)n@1Ca(JDcI#A=-(#8bi{p->1tc%^T%KH=Vzw)>DX z=Ju4$?o})nkDrQ?l;*t@KRj_y{MUz*MNi6KzxLu)*w)sM^YdO-n_KE-2M$K&kV+@! z2U%40yrFJVDXY?_goI4~nXq5=$E=R}h(D6Hw<>=-G<=7uE(&TH8b6lv{>{gOTe50% zNYM4z{sz|8HpA0+XD2rJk?~k-!kt@AN&GL&MflYO2vs12xp)sLJ;|z^4ZeAji|TAI zz+Z_a6n6LYs2p^RXMg^D)zj0H6`garX5-AHQQiFk#q*}7%*!=u;%ZnvF>~*bk<mF( zkSmB-@^D2a&o))sDoUD1k9!w8WWXI?9waIsU+7I9+A6C%Bd&&j9N}4)ntzd<O47g& zy5j2APZBX&e(crPuTdxij}k>(+a8iMP<A^)-VnQF2)B_ll8ELkZAn+No;P$q6N#o? z7h0#6A?qVj!6<I@n0t!U$nfEbi&E9D;-6a+zHy#D#q8rioBwe_LN+(%_096tjZI8^ z&GG?Yye-MC@@>cTw6RmdCL(xkd<cuO)YGsyd9tKmKLiy@r_%=#eR4V`m-mN!iGvS4 z6p7}z#5BpGCAjwznMS933oi_$U_jtJji%r4pdnoN))#8gdux0<HF~QVOfkNRfXGVg zh0$A;inwimZk@<Spe>b3K@qKqakVdY<-@(0gtz9ripB-5=kf)S?1t<<XE>bMXBzil zusL*vVEM@ZE5~xiMQ$QeZ0{T)VmiXP@*;S47%^PWGeYT%OLieqmtY52U~z<FINUL; vg&z)YhsWDtu}85u*vfWP&HWD{;#%m{%W?moP(jo7g$aO%t2g->DLCc7FLyJA literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/uicolor/icons/uicolor.png b/src/static/ckeditor/plugins/uicolor/icons/uicolor.png new file mode 100644 index 0000000000000000000000000000000000000000..f2f1de9e9d2c0e1558f4c795efa9371a4bb183c8 GIT binary patch literal 954 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6-E$sR$z z3=CDO3=9p;3=BX21L>Cx45bDP46hOx7_4S6Fo@?*ia+WGRLhp+?e4<x9|RZdT|OBo z!dc)ES<Jw|Eeyhp4727)00r4gJbhi+AFvDa%4zA^eUM~eU|Q+v;uvCaI(PD3ZxwHm zqxG>@<u7{}_jYPnST$}s9W7vQARNql<-mR?<HYM{j+9*YsaaXy;MSDZq`<+&X4Ji? zqq%cMep}+M^tM^=UR5<(pWXDP)j5#$`;~|Ds@E)Cs;YC^iG#7hkS&>q!E+MB0}H=@ z-=1p%1-&|7@A|RNe`Cawn>p`}7UoO|a??zGWMTHUtlHnJQ-JC8rWaFnTTaa8=i~b~ zbIzPKERF{b9AId5Vr<CU?!7lIzI#!IujbdK`}hA(_g}docec~Q1ONX0TRwB<%v0yi z@ijL$r$n}0lS<}U_u9zB<j9E=9Q)pf-@A9u?&}ne<AoYiy?lIq@8;#^25L>capT5< zxb>4&I3uS$O_}%H(8k6mKK}mN=aurtKywctKK%ak=g&R8y%#e~G{m}l`uZ-tEGZJT zo#eF8L4f5-*4Fp?+w==$p1*$dNNKJg`%;lYnaw+QdTzeC<o4S|ThC2grkN;_)bn$e zFvFD7sh3P#v*()Y>gWi#3Kq&-&fA{3HEK(gF2g1rXRpq)@mi;iCaElp(c8RfQ`75R z5z|^zBX4Z$y*BIa-Pk2lI&@AmR8&<R+LqfQ;Guajs<^zoJ*cZ}_grVqqo+@EM`gDN z$g_A(`eR{fdGLE}%=M$6ZT$TGKij^rWK?K*@a!4e+OPb{JW9U7Vd3HX=gyt`@xuq8 z2Q-$xD6!hPXr9*j&lR<`PyhX!_wwb-{K#pFlT;r5{5kXW>(}RR-@YBPI&|H-bsUEU z&VMeDQNMrX`}gv`zP^f@nm;kCuU?2!K7RZ-<BYj;|Gxk6<Hv%am22DsT_oCA92*3h zqShWedX)9~^XDO}uj&^U7jO5Rv|#J8sJJ*cubKZv+7zcxpI#kwYODR6pXEtONqaA5 zJSodwyRojnn165etYz|@o8Q(<*q?qx;_&}$ua;8^@AyH<UA4qDq9i4;B-JXpC>2OC z7#SFv=^B{p8d`=J8e16~SeY1U8yHy`7)VSguRzg|o1c=IR*73f=GpT{fEpM)UHx3v IIVCg!0NfIxssI20 literal 0 HcmV?d00001 diff --git a/src/static/ckeditor/plugins/uicolor/lang/_translationstatus.txt b/src/static/ckeditor/plugins/uicolor/lang/_translationstatus.txt new file mode 100644 index 00000000..39acf9f1 --- /dev/null +++ b/src/static/ckeditor/plugins/uicolor/lang/_translationstatus.txt @@ -0,0 +1,27 @@ +Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license + +bg.js Found: 4 Missing: 0 +cs.js Found: 4 Missing: 0 +cy.js Found: 4 Missing: 0 +da.js Found: 4 Missing: 0 +de.js Found: 4 Missing: 0 +el.js Found: 4 Missing: 0 +eo.js Found: 4 Missing: 0 +et.js Found: 4 Missing: 0 +fa.js Found: 4 Missing: 0 +fi.js Found: 4 Missing: 0 +fr.js Found: 4 Missing: 0 +he.js Found: 4 Missing: 0 +hr.js Found: 4 Missing: 0 +it.js Found: 4 Missing: 0 +mk.js Found: 4 Missing: 0 +nb.js Found: 4 Missing: 0 +nl.js Found: 4 Missing: 0 +no.js Found: 4 Missing: 0 +pl.js Found: 4 Missing: 0 +tr.js Found: 4 Missing: 0 +ug.js Found: 4 Missing: 0 +uk.js Found: 4 Missing: 0 +vi.js Found: 4 Missing: 0 +zh-cn.js Found: 4 Missing: 0 diff --git a/src/static/ckeditor/plugins/uicolor/lang/zh-cn.js b/src/static/ckeditor/plugins/uicolor/lang/zh-cn.js new file mode 100644 index 00000000..a7f39a0e --- /dev/null +++ b/src/static/ckeditor/plugins/uicolor/lang/zh-cn.js @@ -0,0 +1,5 @@ +/* + 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.setLang("uicolor","zh-cn",{title:"用户界面颜色选择器",options:"颜色选项",highlight:"高亮",selected:"已选颜色",predefined:"预定义颜色集",config:"粘贴此字符串到您的 config.js 文件"}); \ No newline at end of file diff --git a/src/static/ckeditor/plugins/uicolor/plugin.js b/src/static/ckeditor/plugins/uicolor/plugin.js new file mode 100644 index 00000000..5aa11ed7 --- /dev/null +++ b/src/static/ckeditor/plugins/uicolor/plugin.js @@ -0,0 +1,6 @@ +/* + 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("uicolor",{requires:"dialog",lang:"af,ar,az,bg,ca,cs,cy,da,de,de-ch,el,en,en-au,en-gb,eo,es,es-mx,et,eu,fa,fi,fr,fr-ca,gl,he,hr,hu,id,it,ja,km,ko,ku,lv,mk,nb,nl,no,oc,pl,pt,pt-br,ro,ru,si,sk,sl,sq,sr,sr-latn,sv,tr,tt,ug,uk,vi,zh,zh-cn",icons:"uicolor",hidpi:!0,init:function(a){var b=new CKEDITOR.dialogCommand("uicolor");b.editorFocus=!1;CKEDITOR.dialog.add("uicolor",this.path+"dialogs/uicolor.js");a.addCommand("uicolor",b);a.ui.addButton&&a.ui.addButton("UIColor",{label:a.lang.uicolor.title, +command:"uicolor",toolbar:"tools,1"})}}); \ No newline at end of file