aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIsmaël Bouya <ismael.bouya@normalesup.org>2017-12-04 17:54:04 +0100
committerIsmaël Bouya <ismael.bouya@normalesup.org>2017-12-04 17:54:04 +0100
commit317f8f8f0651488f226b5280a8f036c7c135c639 (patch)
tree97bd4889ab2822a00d4b0f0d5cde38b59f9f41de
parent1096cdefb1c9a3f3c4ca6807e272da6c92e5ed9c (diff)
downloadpiedsjaloux-ckeditor-component-317f8f8f0651488f226b5280a8f036c7c135c639.tar.gz
piedsjaloux-ckeditor-component-317f8f8f0651488f226b5280a8f036c7c135c639.tar.zst
piedsjaloux-ckeditor-component-317f8f8f0651488f226b5280a8f036c7c135c639.zip
Add oembed4.7.3
-rw-r--r--build-config.js106
-rw-r--r--release/CHANGES.md295
-rw-r--r--release/LICENSE.md4
-rw-r--r--release/README.md2
-rw-r--r--release/adapters/jquery.js2
-rw-r--r--release/ckeditor.js1373
-rw-r--r--release/config.js2
-rw-r--r--release/contents.css75
-rw-r--r--release/lang/en.js8
-rw-r--r--release/lang/fr.js8
-rw-r--r--release/plugins/Audio/dialogs/audio.js9
-rw-r--r--release/plugins/Audio/docs/install.html69
-rw-r--r--release/plugins/Audio/docs/styles.css67
-rw-r--r--release/plugins/Audio/images/audio.pngbin0 -> 15258 bytes
-rw-r--r--release/plugins/Audio/images/icon.pngbin0 -> 1356 bytes
-rw-r--r--release/plugins/Audio/images/placeholder.pngbin0 -> 862 bytes
-rw-r--r--release/plugins/a11yhelp/dialogs/a11yhelp.js12
-rw-r--r--release/plugins/a11yhelp/dialogs/lang/_translationstatus.txt2
-rw-r--r--release/plugins/a11yhelp/dialogs/lang/af.js4
-rw-r--r--release/plugins/a11yhelp/dialogs/lang/ar.js4
-rw-r--r--release/plugins/a11yhelp/dialogs/lang/az.js11
-rw-r--r--release/plugins/a11yhelp/dialogs/lang/bg.js4
-rw-r--r--release/plugins/a11yhelp/dialogs/lang/ca.js17
-rw-r--r--release/plugins/a11yhelp/dialogs/lang/cs.js6
-rw-r--r--release/plugins/a11yhelp/dialogs/lang/cy.js6
-rw-r--r--release/plugins/a11yhelp/dialogs/lang/da.js14
-rw-r--r--release/plugins/a11yhelp/dialogs/lang/de-ch.js10
-rw-r--r--release/plugins/a11yhelp/dialogs/lang/de.js13
-rw-r--r--release/plugins/a11yhelp/dialogs/lang/el.js6
-rw-r--r--release/plugins/a11yhelp/dialogs/lang/en-gb.js4
-rw-r--r--release/plugins/a11yhelp/dialogs/lang/en.js4
-rw-r--r--release/plugins/a11yhelp/dialogs/lang/eo.js9
-rw-r--r--release/plugins/a11yhelp/dialogs/lang/es-mx.js13
-rw-r--r--release/plugins/a11yhelp/dialogs/lang/es.js11
-rw-r--r--release/plugins/a11yhelp/dialogs/lang/et.js4
-rw-r--r--release/plugins/a11yhelp/dialogs/lang/eu.js4
-rw-r--r--release/plugins/a11yhelp/dialogs/lang/fa.js6
-rw-r--r--release/plugins/a11yhelp/dialogs/lang/fi.js6
-rw-r--r--release/plugins/a11yhelp/dialogs/lang/fo.js4
-rw-r--r--release/plugins/a11yhelp/dialogs/lang/fr-ca.js8
-rw-r--r--release/plugins/a11yhelp/dialogs/lang/fr.js19
-rw-r--r--release/plugins/a11yhelp/dialogs/lang/gl.js16
-rw-r--r--release/plugins/a11yhelp/dialogs/lang/gu.js4
-rw-r--r--release/plugins/a11yhelp/dialogs/lang/he.js4
-rw-r--r--release/plugins/a11yhelp/dialogs/lang/hi.js4
-rw-r--r--release/plugins/a11yhelp/dialogs/lang/hr.js12
-rw-r--r--release/plugins/a11yhelp/dialogs/lang/hu.js8
-rw-r--r--release/plugins/a11yhelp/dialogs/lang/id.js16
-rw-r--r--release/plugins/a11yhelp/dialogs/lang/it.js6
-rw-r--r--release/plugins/a11yhelp/dialogs/lang/ja.js6
-rw-r--r--release/plugins/a11yhelp/dialogs/lang/km.js4
-rw-r--r--release/plugins/a11yhelp/dialogs/lang/ko.js6
-rw-r--r--release/plugins/a11yhelp/dialogs/lang/ku.js6
-rw-r--r--release/plugins/a11yhelp/dialogs/lang/lt.js4
-rw-r--r--release/plugins/a11yhelp/dialogs/lang/lv.js4
-rw-r--r--release/plugins/a11yhelp/dialogs/lang/mk.js6
-rw-r--r--release/plugins/a11yhelp/dialogs/lang/mn.js4
-rw-r--r--release/plugins/a11yhelp/dialogs/lang/nb.js6
-rw-r--r--release/plugins/a11yhelp/dialogs/lang/nl.js15
-rw-r--r--release/plugins/a11yhelp/dialogs/lang/no.js6
-rw-r--r--release/plugins/a11yhelp/dialogs/lang/oc.js12
-rw-r--r--release/plugins/a11yhelp/dialogs/lang/pl.js12
-rw-r--r--release/plugins/a11yhelp/dialogs/lang/pt-br.js6
-rw-r--r--release/plugins/a11yhelp/dialogs/lang/pt.js16
-rw-r--r--release/plugins/a11yhelp/dialogs/lang/ro.js6
-rw-r--r--release/plugins/a11yhelp/dialogs/lang/ru.js8
-rw-r--r--release/plugins/a11yhelp/dialogs/lang/si.js8
-rw-r--r--release/plugins/a11yhelp/dialogs/lang/sk.js10
-rw-r--r--release/plugins/a11yhelp/dialogs/lang/sl.js12
-rw-r--r--release/plugins/a11yhelp/dialogs/lang/sq.js4
-rw-r--r--release/plugins/a11yhelp/dialogs/lang/sr-latn.js4
-rw-r--r--release/plugins/a11yhelp/dialogs/lang/sr.js4
-rw-r--r--release/plugins/a11yhelp/dialogs/lang/sv.js8
-rw-r--r--release/plugins/a11yhelp/dialogs/lang/th.js4
-rw-r--r--release/plugins/a11yhelp/dialogs/lang/tr.js8
-rw-r--r--release/plugins/a11yhelp/dialogs/lang/tt.js8
-rw-r--r--release/plugins/a11yhelp/dialogs/lang/ug.js10
-rw-r--r--release/plugins/a11yhelp/dialogs/lang/uk.js4
-rw-r--r--release/plugins/a11yhelp/dialogs/lang/vi.js8
-rw-r--r--release/plugins/a11yhelp/dialogs/lang/zh-cn.js8
-rw-r--r--release/plugins/a11yhelp/dialogs/lang/zh.js8
-rw-r--r--release/plugins/dialog/dialogDefinition.js2
-rw-r--r--release/plugins/html5video/dialogs/html5video.js5
-rw-r--r--release/plugins/icons.pngbin7124 -> 4993 bytes
-rw-r--r--release/plugins/icons_hidpi.pngbin21417 -> 14581 bytes
-rw-r--r--release/plugins/iframe/dialogs/iframe.js2
-rw-r--r--release/plugins/image/dialogs/image.js56
-rw-r--r--release/plugins/link/dialogs/anchor.js9
-rw-r--r--release/plugins/link/dialogs/link.js48
-rw-r--r--release/plugins/link/images/anchor.pngbin589 -> 752 bytes
-rw-r--r--release/plugins/link/images/hidpi/anchor.pngbin1379 -> 1109 bytes
-rw-r--r--release/plugins/liststyle/dialogs/liststyle.js2
-rw-r--r--release/plugins/oembed/LICENSE.md21
-rw-r--r--release/plugins/oembed/README.md201
-rw-r--r--release/plugins/oembed/libs/jquery.oembed.min.js71
-rw-r--r--release/plugins/widget/images/handle.pngbin0 -> 220 bytes
-rw-r--r--release/samples/css/samples.css62
-rw-r--r--release/samples/index.html6
-rw-r--r--release/samples/js/sample.js2
-rw-r--r--release/samples/js/sf.js2
-rw-r--r--release/samples/old/ajax.html4
-rw-r--r--release/samples/old/api.html4
-rw-r--r--release/samples/old/appendto.html4
-rw-r--r--release/samples/old/assets/outputxhtml/outputxhtml.css2
-rw-r--r--release/samples/old/assets/posteddata.php4
-rw-r--r--release/samples/old/assets/uilanguages/languages.js8
-rw-r--r--release/samples/old/datafiltering.html8
-rw-r--r--release/samples/old/dialog/assets/my_dialog.js2
-rw-r--r--release/samples/old/dialog/dialog.html4
-rw-r--r--release/samples/old/divreplace.html4
-rw-r--r--release/samples/old/enterkey/enterkey.html4
-rw-r--r--release/samples/old/htmlwriter/outputforflash.html4
-rw-r--r--release/samples/old/htmlwriter/outputhtml.html4
-rw-r--r--release/samples/old/index.html4
-rw-r--r--release/samples/old/inlineall.html4
-rw-r--r--release/samples/old/inlinebycode.html4
-rw-r--r--release/samples/old/inlinetextarea.html4
-rw-r--r--release/samples/old/jquery.html4
-rw-r--r--release/samples/old/magicline/magicline.html4
-rw-r--r--release/samples/old/readonly.html4
-rw-r--r--release/samples/old/replacebyclass.html4
-rw-r--r--release/samples/old/replacebycode.html4
-rw-r--r--release/samples/old/sample.css2
-rw-r--r--release/samples/old/sample.js2
-rw-r--r--release/samples/old/sample_posteddata.php2
-rw-r--r--release/samples/old/tabindex.html4
-rw-r--r--release/samples/old/toolbar/toolbar.html4
-rw-r--r--release/samples/old/uicolor.html4
-rw-r--r--release/samples/old/uilanguages.html4
-rw-r--r--release/samples/old/wysiwygarea/fullpage.html4
-rw-r--r--release/samples/old/xhtmlstyle.html4
-rw-r--r--release/samples/toolbarconfigurator/index.html6
-rw-r--r--release/skins/moono/dialog.css4
-rw-r--r--release/skins/moono/dialog_ie.css4
-rw-r--r--release/skins/moono/dialog_ie7.css4
-rw-r--r--release/skins/moono/dialog_ie8.css4
-rw-r--r--release/skins/moono/dialog_iequirks.css4
-rw-r--r--release/skins/moono/editor.css4
-rw-r--r--release/skins/moono/editor_gecko.css4
-rw-r--r--release/skins/moono/editor_ie.css4
-rw-r--r--release/skins/moono/editor_ie7.css4
-rw-r--r--release/skins/moono/editor_ie8.css4
-rw-r--r--release/skins/moono/editor_iequirks.css4
-rw-r--r--release/skins/moono/icons.pngbin7124 -> 9264 bytes
-rw-r--r--release/skins/moono/icons_hidpi.pngbin21417 -> 24824 bytes
-rw-r--r--release/skins/moono/images/anchor.pngbin0 -> 929 bytes
-rw-r--r--release/skins/moono/images/close.pngbin468 -> 869 bytes
-rw-r--r--release/skins/moono/images/hidpi/anchor.pngbin0 -> 1510 bytes
-rw-r--r--release/skins/moono/images/hidpi/close.pngbin1271 -> 1732 bytes
-rw-r--r--release/skins/moono/images/hidpi/lock-open.pngbin1329 -> 1582 bytes
-rw-r--r--release/skins/moono/images/hidpi/lock.pngbin1299 -> 1644 bytes
-rw-r--r--release/skins/moono/images/hidpi/refresh.pngbin1842 -> 2311 bytes
-rw-r--r--release/skins/moono/images/lock-open.pngbin349 -> 801 bytes
-rw-r--r--release/skins/moono/images/lock.pngbin475 -> 849 bytes
-rw-r--r--release/skins/moono/images/refresh.pngbin422 -> 1050 bytes
-rw-r--r--release/skins/moono/readme.md6
-rw-r--r--release/styles.js58
-rw-r--r--sources/CHANGES.md297
-rw-r--r--sources/LICENSE.md18
-rw-r--r--sources/README.md2
-rw-r--r--sources/adapters/jquery.js379
-rw-r--r--sources/build-config.js91
-rw-r--r--sources/ckeditor.js6
-rw-r--r--sources/config.js4
-rw-r--r--sources/contents.css75
-rw-r--r--sources/core/_bootstrap.js8
-rw-r--r--sources/core/ckeditor.js4
-rw-r--r--sources/core/ckeditor_base.js6
-rw-r--r--sources/core/ckeditor_basic.js2
-rw-r--r--sources/core/command.js4
-rw-r--r--sources/core/commanddefinition.js44
-rw-r--r--sources/core/config.js2
-rw-r--r--sources/core/creators/inline.js2
-rw-r--r--sources/core/creators/themedui.js32
-rw-r--r--sources/core/dataprocessor.js2
-rw-r--r--sources/core/dom.js2
-rw-r--r--sources/core/dom/comment.js2
-rw-r--r--sources/core/dom/document.js4
-rw-r--r--sources/core/dom/documentfragment.js2
-rw-r--r--sources/core/dom/domobject.js6
-rw-r--r--sources/core/dom/element.js130
-rw-r--r--sources/core/dom/elementpath.js24
-rw-r--r--sources/core/dom/event.js2
-rw-r--r--sources/core/dom/iterator.js22
-rw-r--r--sources/core/dom/node.js12
-rw-r--r--sources/core/dom/nodelist.js19
-rw-r--r--sources/core/dom/range.js271
-rw-r--r--sources/core/dom/rangelist.js4
-rw-r--r--sources/core/dom/text.js4
-rw-r--r--sources/core/dom/walker.js12
-rw-r--r--sources/core/dom/window.js2
-rw-r--r--sources/core/dtd.js2
-rw-r--r--sources/core/editable.js267
-rw-r--r--sources/core/editor.js120
-rw-r--r--sources/core/editor_basic.js2
-rw-r--r--sources/core/env.js4
-rw-r--r--sources/core/event.js2
-rw-r--r--sources/core/eventInfo.js2
-rw-r--r--sources/core/filter.js159
-rw-r--r--sources/core/focusmanager.js12
-rw-r--r--sources/core/htmldataprocessor.js77
-rw-r--r--sources/core/htmlparser.js4
-rw-r--r--sources/core/htmlparser/basicwriter.js4
-rw-r--r--sources/core/htmlparser/cdata.js2
-rw-r--r--sources/core/htmlparser/comment.js2
-rw-r--r--sources/core/htmlparser/element.js44
-rw-r--r--sources/core/htmlparser/filter.js2
-rw-r--r--sources/core/htmlparser/fragment.js16
-rw-r--r--sources/core/htmlparser/node.js2
-rw-r--r--sources/core/htmlparser/text.js2
-rw-r--r--sources/core/keystrokehandler.js2
-rw-r--r--sources/core/lang.js8
-rw-r--r--sources/core/loader.js6
-rw-r--r--sources/core/log.js2
-rw-r--r--sources/core/plugindefinition.js2
-rw-r--r--sources/core/plugins.js2
-rw-r--r--sources/core/resourcemanager.js8
-rw-r--r--sources/core/scriptloader.js9
-rw-r--r--sources/core/selection.js446
-rw-r--r--sources/core/skin.js4
-rw-r--r--sources/core/style.js82
-rw-r--r--sources/core/template.js71
-rw-r--r--sources/core/tools.js701
-rw-r--r--sources/core/ui.js2
-rw-r--r--sources/lang/_translationstatus.txt2
-rw-r--r--sources/lang/af.js23
-rw-r--r--sources/lang/ar.js23
-rw-r--r--sources/lang/az.js117
-rw-r--r--sources/lang/bg.js23
-rw-r--r--sources/lang/bn.js23
-rw-r--r--sources/lang/bs.js23
-rw-r--r--sources/lang/ca.js25
-rw-r--r--sources/lang/cs.js23
-rw-r--r--sources/lang/cy.js23
-rw-r--r--sources/lang/da.js23
-rw-r--r--sources/lang/de-ch.js25
-rw-r--r--sources/lang/de.js25
-rw-r--r--sources/lang/el.js23
-rw-r--r--sources/lang/en-au.js23
-rw-r--r--sources/lang/en-ca.js23
-rw-r--r--sources/lang/en-gb.js23
-rw-r--r--sources/lang/en.js23
-rw-r--r--sources/lang/eo.js23
-rw-r--r--sources/lang/es-mx.js116
-rw-r--r--sources/lang/es.js23
-rw-r--r--sources/lang/et.js23
-rw-r--r--sources/lang/eu.js23
-rw-r--r--sources/lang/fa.js23
-rw-r--r--sources/lang/fi.js23
-rw-r--r--sources/lang/fo.js23
-rw-r--r--sources/lang/fr-ca.js23
-rw-r--r--sources/lang/fr.js65
-rw-r--r--sources/lang/gl.js23
-rw-r--r--sources/lang/gu.js23
-rw-r--r--sources/lang/he.js23
-rw-r--r--sources/lang/hi.js23
-rw-r--r--sources/lang/hr.js25
-rw-r--r--sources/lang/hu.js25
-rw-r--r--sources/lang/id.js35
-rw-r--r--sources/lang/is.js23
-rw-r--r--sources/lang/it.js23
-rw-r--r--sources/lang/ja.js25
-rw-r--r--sources/lang/ka.js23
-rw-r--r--sources/lang/km.js23
-rw-r--r--sources/lang/ko.js25
-rw-r--r--sources/lang/ku.js23
-rw-r--r--sources/lang/lt.js23
-rw-r--r--sources/lang/lv.js23
-rw-r--r--sources/lang/mk.js23
-rw-r--r--sources/lang/mn.js23
-rw-r--r--sources/lang/ms.js23
-rw-r--r--sources/lang/nb.js29
-rw-r--r--sources/lang/nl.js23
-rw-r--r--sources/lang/no.js23
-rw-r--r--sources/lang/oc.js117
-rw-r--r--sources/lang/pl.js23
-rw-r--r--sources/lang/pt-br.js23
-rw-r--r--sources/lang/pt.js55
-rw-r--r--sources/lang/ro.js23
-rw-r--r--sources/lang/ru.js23
-rw-r--r--sources/lang/si.js23
-rw-r--r--sources/lang/sk.js23
-rw-r--r--sources/lang/sl.js63
-rw-r--r--sources/lang/sq.js23
-rw-r--r--sources/lang/sr-latn.js23
-rw-r--r--sources/lang/sr.js23
-rw-r--r--sources/lang/sv.js27
-rw-r--r--sources/lang/th.js23
-rw-r--r--sources/lang/tr.js23
-rw-r--r--sources/lang/tt.js23
-rw-r--r--sources/lang/ug.js23
-rw-r--r--sources/lang/uk.js25
-rw-r--r--sources/lang/vi.js23
-rw-r--r--sources/lang/zh-cn.js23
-rw-r--r--sources/lang/zh.js23
-rw-r--r--sources/plugins/Audio/dialogs/audio.js350
-rw-r--r--sources/plugins/Audio/docs/install.html69
-rw-r--r--sources/plugins/Audio/docs/styles.css67
-rw-r--r--sources/plugins/Audio/images/audio.pngbin0 -> 15258 bytes
-rw-r--r--sources/plugins/Audio/images/icon.pngbin0 -> 1356 bytes
-rw-r--r--sources/plugins/Audio/images/placeholder.pngbin0 -> 862 bytes
-rw-r--r--sources/plugins/Audio/plugin.js211
-rw-r--r--sources/plugins/a11yhelp/dialogs/a11yhelp.js55
-rw-r--r--sources/plugins/a11yhelp/dialogs/lang/_translationstatus.txt2
-rw-r--r--sources/plugins/a11yhelp/dialogs/lang/af.js15
-rw-r--r--sources/plugins/a11yhelp/dialogs/lang/ar.js15
-rw-r--r--sources/plugins/a11yhelp/dialogs/lang/az.js145
-rw-r--r--sources/plugins/a11yhelp/dialogs/lang/bg.js15
-rw-r--r--sources/plugins/a11yhelp/dialogs/lang/ca.js17
-rw-r--r--sources/plugins/a11yhelp/dialogs/lang/cs.js15
-rw-r--r--sources/plugins/a11yhelp/dialogs/lang/cy.js15
-rw-r--r--sources/plugins/a11yhelp/dialogs/lang/da.js31
-rw-r--r--sources/plugins/a11yhelp/dialogs/lang/de-ch.js15
-rw-r--r--sources/plugins/a11yhelp/dialogs/lang/de.js17
-rw-r--r--sources/plugins/a11yhelp/dialogs/lang/el.js15
-rw-r--r--sources/plugins/a11yhelp/dialogs/lang/en-gb.js15
-rw-r--r--sources/plugins/a11yhelp/dialogs/lang/en.js15
-rw-r--r--sources/plugins/a11yhelp/dialogs/lang/eo.js15
-rw-r--r--sources/plugins/a11yhelp/dialogs/lang/es-mx.js145
-rw-r--r--sources/plugins/a11yhelp/dialogs/lang/es.js17
-rw-r--r--sources/plugins/a11yhelp/dialogs/lang/et.js15
-rw-r--r--sources/plugins/a11yhelp/dialogs/lang/eu.js15
-rw-r--r--sources/plugins/a11yhelp/dialogs/lang/fa.js15
-rw-r--r--sources/plugins/a11yhelp/dialogs/lang/fi.js15
-rw-r--r--sources/plugins/a11yhelp/dialogs/lang/fo.js15
-rw-r--r--sources/plugins/a11yhelp/dialogs/lang/fr-ca.js15
-rw-r--r--sources/plugins/a11yhelp/dialogs/lang/fr.js79
-rw-r--r--sources/plugins/a11yhelp/dialogs/lang/gl.js17
-rw-r--r--sources/plugins/a11yhelp/dialogs/lang/gu.js15
-rw-r--r--sources/plugins/a11yhelp/dialogs/lang/he.js15
-rw-r--r--sources/plugins/a11yhelp/dialogs/lang/hi.js15
-rw-r--r--sources/plugins/a11yhelp/dialogs/lang/hr.js129
-rw-r--r--sources/plugins/a11yhelp/dialogs/lang/hu.js17
-rw-r--r--sources/plugins/a11yhelp/dialogs/lang/id.js29
-rw-r--r--sources/plugins/a11yhelp/dialogs/lang/it.js15
-rw-r--r--sources/plugins/a11yhelp/dialogs/lang/ja.js19
-rw-r--r--sources/plugins/a11yhelp/dialogs/lang/km.js15
-rw-r--r--sources/plugins/a11yhelp/dialogs/lang/ko.js15
-rw-r--r--sources/plugins/a11yhelp/dialogs/lang/ku.js15
-rw-r--r--sources/plugins/a11yhelp/dialogs/lang/lt.js15
-rw-r--r--sources/plugins/a11yhelp/dialogs/lang/lv.js15
-rw-r--r--sources/plugins/a11yhelp/dialogs/lang/mk.js15
-rw-r--r--sources/plugins/a11yhelp/dialogs/lang/mn.js15
-rw-r--r--sources/plugins/a11yhelp/dialogs/lang/nb.js15
-rw-r--r--sources/plugins/a11yhelp/dialogs/lang/nl.js17
-rw-r--r--sources/plugins/a11yhelp/dialogs/lang/no.js15
-rw-r--r--sources/plugins/a11yhelp/dialogs/lang/oc.js145
-rw-r--r--sources/plugins/a11yhelp/dialogs/lang/pl.js23
-rw-r--r--sources/plugins/a11yhelp/dialogs/lang/pt-br.js15
-rw-r--r--sources/plugins/a11yhelp/dialogs/lang/pt.js73
-rw-r--r--sources/plugins/a11yhelp/dialogs/lang/ro.js15
-rw-r--r--sources/plugins/a11yhelp/dialogs/lang/ru.js15
-rw-r--r--sources/plugins/a11yhelp/dialogs/lang/si.js15
-rw-r--r--sources/plugins/a11yhelp/dialogs/lang/sk.js17
-rw-r--r--sources/plugins/a11yhelp/dialogs/lang/sl.js41
-rw-r--r--sources/plugins/a11yhelp/dialogs/lang/sq.js15
-rw-r--r--sources/plugins/a11yhelp/dialogs/lang/sr-latn.js15
-rw-r--r--sources/plugins/a11yhelp/dialogs/lang/sr.js15
-rw-r--r--sources/plugins/a11yhelp/dialogs/lang/sv.js15
-rw-r--r--sources/plugins/a11yhelp/dialogs/lang/th.js15
-rw-r--r--sources/plugins/a11yhelp/dialogs/lang/tr.js15
-rw-r--r--sources/plugins/a11yhelp/dialogs/lang/tt.js15
-rw-r--r--sources/plugins/a11yhelp/dialogs/lang/ug.js15
-rw-r--r--sources/plugins/a11yhelp/dialogs/lang/uk.js15
-rw-r--r--sources/plugins/a11yhelp/dialogs/lang/vi.js15
-rw-r--r--sources/plugins/a11yhelp/dialogs/lang/zh-cn.js15
-rw-r--r--sources/plugins/a11yhelp/dialogs/lang/zh.js15
-rw-r--r--sources/plugins/a11yhelp/plugin.js4
-rw-r--r--sources/plugins/basicstyles/icons/bold.pngbin813 -> 580 bytes
-rw-r--r--sources/plugins/basicstyles/icons/hidpi/bold.pngbin1865 -> 1207 bytes
-rw-r--r--sources/plugins/basicstyles/icons/hidpi/italic.pngbin1452 -> 854 bytes
-rw-r--r--sources/plugins/basicstyles/icons/hidpi/strike.pngbin2171 -> 1357 bytes
-rw-r--r--sources/plugins/basicstyles/icons/hidpi/subscript.pngbin1965 -> 1189 bytes
-rw-r--r--sources/plugins/basicstyles/icons/hidpi/superscript.pngbin2021 -> 1156 bytes
-rw-r--r--sources/plugins/basicstyles/icons/hidpi/underline.pngbin1577 -> 1084 bytes
-rw-r--r--sources/plugins/basicstyles/icons/italic.pngbin708 -> 611 bytes
-rw-r--r--sources/plugins/basicstyles/icons/strike.pngbin879 -> 627 bytes
-rw-r--r--sources/plugins/basicstyles/icons/subscript.pngbin806 -> 584 bytes
-rw-r--r--sources/plugins/basicstyles/icons/superscript.pngbin859 -> 594 bytes
-rw-r--r--sources/plugins/basicstyles/icons/underline.pngbin747 -> 541 bytes
-rw-r--r--sources/plugins/basicstyles/lang/af.js2
-rw-r--r--sources/plugins/basicstyles/lang/ar.js2
-rw-r--r--sources/plugins/basicstyles/lang/az.js12
-rw-r--r--sources/plugins/basicstyles/lang/bg.js2
-rw-r--r--sources/plugins/basicstyles/lang/bn.js4
-rw-r--r--sources/plugins/basicstyles/lang/bs.js2
-rw-r--r--sources/plugins/basicstyles/lang/ca.js2
-rw-r--r--sources/plugins/basicstyles/lang/cs.js2
-rw-r--r--sources/plugins/basicstyles/lang/cy.js2
-rw-r--r--sources/plugins/basicstyles/lang/da.js2
-rw-r--r--sources/plugins/basicstyles/lang/de-ch.js2
-rw-r--r--sources/plugins/basicstyles/lang/de.js2
-rw-r--r--sources/plugins/basicstyles/lang/el.js2
-rw-r--r--sources/plugins/basicstyles/lang/en-au.js2
-rw-r--r--sources/plugins/basicstyles/lang/en-ca.js2
-rw-r--r--sources/plugins/basicstyles/lang/en-gb.js2
-rw-r--r--sources/plugins/basicstyles/lang/en.js2
-rw-r--r--sources/plugins/basicstyles/lang/eo.js2
-rw-r--r--sources/plugins/basicstyles/lang/es-mx.js12
-rw-r--r--sources/plugins/basicstyles/lang/es.js2
-rw-r--r--sources/plugins/basicstyles/lang/et.js2
-rw-r--r--sources/plugins/basicstyles/lang/eu.js2
-rw-r--r--sources/plugins/basicstyles/lang/fa.js2
-rw-r--r--sources/plugins/basicstyles/lang/fi.js2
-rw-r--r--sources/plugins/basicstyles/lang/fo.js2
-rw-r--r--sources/plugins/basicstyles/lang/fr-ca.js2
-rw-r--r--sources/plugins/basicstyles/lang/fr.js2
-rw-r--r--sources/plugins/basicstyles/lang/gl.js2
-rw-r--r--sources/plugins/basicstyles/lang/gu.js2
-rw-r--r--sources/plugins/basicstyles/lang/he.js2
-rw-r--r--sources/plugins/basicstyles/lang/hi.js2
-rw-r--r--sources/plugins/basicstyles/lang/hr.js6
-rw-r--r--sources/plugins/basicstyles/lang/hu.js2
-rw-r--r--sources/plugins/basicstyles/lang/id.js2
-rw-r--r--sources/plugins/basicstyles/lang/is.js2
-rw-r--r--sources/plugins/basicstyles/lang/it.js2
-rw-r--r--sources/plugins/basicstyles/lang/ja.js2
-rw-r--r--sources/plugins/basicstyles/lang/ka.js2
-rw-r--r--sources/plugins/basicstyles/lang/km.js2
-rw-r--r--sources/plugins/basicstyles/lang/ko.js2
-rw-r--r--sources/plugins/basicstyles/lang/ku.js2
-rw-r--r--sources/plugins/basicstyles/lang/lt.js2
-rw-r--r--sources/plugins/basicstyles/lang/lv.js2
-rw-r--r--sources/plugins/basicstyles/lang/mk.js2
-rw-r--r--sources/plugins/basicstyles/lang/mn.js2
-rw-r--r--sources/plugins/basicstyles/lang/ms.js2
-rw-r--r--sources/plugins/basicstyles/lang/nb.js2
-rw-r--r--sources/plugins/basicstyles/lang/nl.js2
-rw-r--r--sources/plugins/basicstyles/lang/no.js2
-rw-r--r--sources/plugins/basicstyles/lang/oc.js12
-rw-r--r--sources/plugins/basicstyles/lang/pl.js2
-rw-r--r--sources/plugins/basicstyles/lang/pt-br.js2
-rw-r--r--sources/plugins/basicstyles/lang/pt.js4
-rw-r--r--sources/plugins/basicstyles/lang/ro.js2
-rw-r--r--sources/plugins/basicstyles/lang/ru.js2
-rw-r--r--sources/plugins/basicstyles/lang/si.js2
-rw-r--r--sources/plugins/basicstyles/lang/sk.js2
-rw-r--r--sources/plugins/basicstyles/lang/sl.js2
-rw-r--r--sources/plugins/basicstyles/lang/sq.js2
-rw-r--r--sources/plugins/basicstyles/lang/sr-latn.js2
-rw-r--r--sources/plugins/basicstyles/lang/sr.js2
-rw-r--r--sources/plugins/basicstyles/lang/sv.js2
-rw-r--r--sources/plugins/basicstyles/lang/th.js2
-rw-r--r--sources/plugins/basicstyles/lang/tr.js2
-rw-r--r--sources/plugins/basicstyles/lang/tt.js2
-rw-r--r--sources/plugins/basicstyles/lang/ug.js2
-rw-r--r--sources/plugins/basicstyles/lang/uk.js2
-rw-r--r--sources/plugins/basicstyles/lang/vi.js2
-rw-r--r--sources/plugins/basicstyles/lang/zh-cn.js2
-rw-r--r--sources/plugins/basicstyles/lang/zh.js2
-rw-r--r--sources/plugins/basicstyles/plugin.js4
-rw-r--r--sources/plugins/button/lang/af.js2
-rw-r--r--sources/plugins/button/lang/ar.js2
-rw-r--r--sources/plugins/button/lang/ast.js8
-rw-r--r--sources/plugins/button/lang/az.js8
-rw-r--r--sources/plugins/button/lang/bg.js2
-rw-r--r--sources/plugins/button/lang/ca.js2
-rw-r--r--sources/plugins/button/lang/cs.js2
-rw-r--r--sources/plugins/button/lang/da.js2
-rw-r--r--sources/plugins/button/lang/de-ch.js2
-rw-r--r--sources/plugins/button/lang/de.js2
-rw-r--r--sources/plugins/button/lang/el.js2
-rw-r--r--sources/plugins/button/lang/en-gb.js2
-rw-r--r--sources/plugins/button/lang/en.js2
-rw-r--r--sources/plugins/button/lang/eo.js2
-rw-r--r--sources/plugins/button/lang/es-mx.js8
-rw-r--r--sources/plugins/button/lang/es.js2
-rw-r--r--sources/plugins/button/lang/eu.js2
-rw-r--r--sources/plugins/button/lang/fa.js2
-rw-r--r--sources/plugins/button/lang/fi.js2
-rw-r--r--sources/plugins/button/lang/fr.js2
-rw-r--r--sources/plugins/button/lang/gl.js2
-rw-r--r--sources/plugins/button/lang/he.js2
-rw-r--r--sources/plugins/button/lang/hr.js8
-rw-r--r--sources/plugins/button/lang/hu.js2
-rw-r--r--sources/plugins/button/lang/id.js2
-rw-r--r--sources/plugins/button/lang/it.js2
-rw-r--r--sources/plugins/button/lang/ja.js2
-rw-r--r--sources/plugins/button/lang/km.js2
-rw-r--r--sources/plugins/button/lang/ko.js2
-rw-r--r--sources/plugins/button/lang/ku.js2
-rw-r--r--sources/plugins/button/lang/lt.js2
-rw-r--r--sources/plugins/button/lang/nb.js2
-rw-r--r--sources/plugins/button/lang/nl.js2
-rw-r--r--sources/plugins/button/lang/no.js8
-rw-r--r--sources/plugins/button/lang/oc.js8
-rw-r--r--sources/plugins/button/lang/pl.js2
-rw-r--r--sources/plugins/button/lang/pt-br.js2
-rw-r--r--sources/plugins/button/lang/pt.js2
-rw-r--r--sources/plugins/button/lang/ro.js2
-rw-r--r--sources/plugins/button/lang/ru.js2
-rw-r--r--sources/plugins/button/lang/sk.js2
-rw-r--r--sources/plugins/button/lang/sl.js2
-rw-r--r--sources/plugins/button/lang/sq.js2
-rw-r--r--sources/plugins/button/lang/sv.js2
-rw-r--r--sources/plugins/button/lang/tr.js2
-rw-r--r--sources/plugins/button/lang/tt.js2
-rw-r--r--sources/plugins/button/lang/ug.js2
-rw-r--r--sources/plugins/button/lang/uk.js2
-rw-r--r--sources/plugins/button/lang/vi.js2
-rw-r--r--sources/plugins/button/lang/zh-cn.js2
-rw-r--r--sources/plugins/button/lang/zh.js2
-rw-r--r--sources/plugins/button/plugin.js30
-rw-r--r--sources/plugins/clipboard/dev/clipboard.html190
-rw-r--r--sources/plugins/clipboard/dev/console.js49
-rw-r--r--sources/plugins/clipboard/dev/dnd.html185
-rw-r--r--sources/plugins/clipboard/icons/copy-rtl.pngbin0 -> 506 bytes
-rw-r--r--sources/plugins/clipboard/icons/copy.pngbin0 -> 506 bytes
-rw-r--r--sources/plugins/clipboard/icons/cut-rtl.pngbin0 -> 776 bytes
-rw-r--r--sources/plugins/clipboard/icons/cut.pngbin0 -> 776 bytes
-rw-r--r--sources/plugins/clipboard/icons/hidpi/copy-rtl.pngbin0 -> 759 bytes
-rw-r--r--sources/plugins/clipboard/icons/hidpi/copy.pngbin0 -> 759 bytes
-rw-r--r--sources/plugins/clipboard/icons/hidpi/cut-rtl.pngbin0 -> 1576 bytes
-rw-r--r--sources/plugins/clipboard/icons/hidpi/cut.pngbin0 -> 1576 bytes
-rw-r--r--sources/plugins/clipboard/icons/hidpi/paste-rtl.pngbin0 -> 854 bytes
-rw-r--r--sources/plugins/clipboard/icons/hidpi/paste.pngbin0 -> 854 bytes
-rw-r--r--sources/plugins/clipboard/icons/paste-rtl.pngbin0 -> 464 bytes
-rw-r--r--sources/plugins/clipboard/icons/paste.pngbin0 -> 464 bytes
-rw-r--r--sources/plugins/clipboard/lang/af.js12
-rw-r--r--sources/plugins/clipboard/lang/ar.js12
-rw-r--r--sources/plugins/clipboard/lang/az.js12
-rw-r--r--sources/plugins/clipboard/lang/bg.js12
-rw-r--r--sources/plugins/clipboard/lang/bn.js12
-rw-r--r--sources/plugins/clipboard/lang/bs.js12
-rw-r--r--sources/plugins/clipboard/lang/ca.js12
-rw-r--r--sources/plugins/clipboard/lang/cs.js12
-rw-r--r--sources/plugins/clipboard/lang/cy.js12
-rw-r--r--sources/plugins/clipboard/lang/da.js12
-rw-r--r--sources/plugins/clipboard/lang/de-ch.js12
-rw-r--r--sources/plugins/clipboard/lang/de.js12
-rw-r--r--sources/plugins/clipboard/lang/el.js12
-rw-r--r--sources/plugins/clipboard/lang/en-au.js12
-rw-r--r--sources/plugins/clipboard/lang/en-ca.js12
-rw-r--r--sources/plugins/clipboard/lang/en-gb.js12
-rw-r--r--sources/plugins/clipboard/lang/en.js12
-rw-r--r--sources/plugins/clipboard/lang/eo.js12
-rw-r--r--sources/plugins/clipboard/lang/es-mx.js12
-rw-r--r--sources/plugins/clipboard/lang/es.js12
-rw-r--r--sources/plugins/clipboard/lang/et.js12
-rw-r--r--sources/plugins/clipboard/lang/eu.js12
-rw-r--r--sources/plugins/clipboard/lang/fa.js12
-rw-r--r--sources/plugins/clipboard/lang/fi.js12
-rw-r--r--sources/plugins/clipboard/lang/fo.js12
-rw-r--r--sources/plugins/clipboard/lang/fr-ca.js12
-rw-r--r--sources/plugins/clipboard/lang/fr.js12
-rw-r--r--sources/plugins/clipboard/lang/gl.js12
-rw-r--r--sources/plugins/clipboard/lang/gu.js12
-rw-r--r--sources/plugins/clipboard/lang/he.js12
-rw-r--r--sources/plugins/clipboard/lang/hi.js12
-rw-r--r--sources/plugins/clipboard/lang/hr.js12
-rw-r--r--sources/plugins/clipboard/lang/hu.js12
-rw-r--r--sources/plugins/clipboard/lang/id.js12
-rw-r--r--sources/plugins/clipboard/lang/is.js12
-rw-r--r--sources/plugins/clipboard/lang/it.js12
-rw-r--r--sources/plugins/clipboard/lang/ja.js12
-rw-r--r--sources/plugins/clipboard/lang/ka.js12
-rw-r--r--sources/plugins/clipboard/lang/km.js12
-rw-r--r--sources/plugins/clipboard/lang/ko.js12
-rw-r--r--sources/plugins/clipboard/lang/ku.js12
-rw-r--r--sources/plugins/clipboard/lang/lt.js12
-rw-r--r--sources/plugins/clipboard/lang/lv.js12
-rw-r--r--sources/plugins/clipboard/lang/mk.js12
-rw-r--r--sources/plugins/clipboard/lang/mn.js12
-rw-r--r--sources/plugins/clipboard/lang/ms.js12
-rw-r--r--sources/plugins/clipboard/lang/nb.js12
-rw-r--r--sources/plugins/clipboard/lang/nl.js12
-rw-r--r--sources/plugins/clipboard/lang/no.js12
-rw-r--r--sources/plugins/clipboard/lang/oc.js12
-rw-r--r--sources/plugins/clipboard/lang/pl.js12
-rw-r--r--sources/plugins/clipboard/lang/pt-br.js12
-rw-r--r--sources/plugins/clipboard/lang/pt.js12
-rw-r--r--sources/plugins/clipboard/lang/ro.js12
-rw-r--r--sources/plugins/clipboard/lang/ru.js12
-rw-r--r--sources/plugins/clipboard/lang/si.js12
-rw-r--r--sources/plugins/clipboard/lang/sk.js12
-rw-r--r--sources/plugins/clipboard/lang/sl.js12
-rw-r--r--sources/plugins/clipboard/lang/sq.js12
-rw-r--r--sources/plugins/clipboard/lang/sr-latn.js12
-rw-r--r--sources/plugins/clipboard/lang/sr.js12
-rw-r--r--sources/plugins/clipboard/lang/sv.js12
-rw-r--r--sources/plugins/clipboard/lang/th.js12
-rw-r--r--sources/plugins/clipboard/lang/tr.js12
-rw-r--r--sources/plugins/clipboard/lang/tt.js12
-rw-r--r--sources/plugins/clipboard/lang/ug.js12
-rw-r--r--sources/plugins/clipboard/lang/uk.js12
-rw-r--r--sources/plugins/clipboard/lang/vi.js12
-rw-r--r--sources/plugins/clipboard/lang/zh-cn.js12
-rw-r--r--sources/plugins/clipboard/lang/zh.js12
-rw-r--r--sources/plugins/clipboard/plugin.js2780
-rw-r--r--sources/plugins/contextmenu/lang/af.js2
-rw-r--r--sources/plugins/contextmenu/lang/ar.js2
-rw-r--r--sources/plugins/contextmenu/lang/az.js7
-rw-r--r--sources/plugins/contextmenu/lang/bg.js2
-rw-r--r--sources/plugins/contextmenu/lang/bn.js2
-rw-r--r--sources/plugins/contextmenu/lang/bs.js2
-rw-r--r--sources/plugins/contextmenu/lang/ca.js2
-rw-r--r--sources/plugins/contextmenu/lang/cs.js2
-rw-r--r--sources/plugins/contextmenu/lang/cy.js2
-rw-r--r--sources/plugins/contextmenu/lang/da.js2
-rw-r--r--sources/plugins/contextmenu/lang/de-ch.js2
-rw-r--r--sources/plugins/contextmenu/lang/de.js2
-rw-r--r--sources/plugins/contextmenu/lang/el.js2
-rw-r--r--sources/plugins/contextmenu/lang/en-au.js2
-rw-r--r--sources/plugins/contextmenu/lang/en-ca.js2
-rw-r--r--sources/plugins/contextmenu/lang/en-gb.js2
-rw-r--r--sources/plugins/contextmenu/lang/en.js2
-rw-r--r--sources/plugins/contextmenu/lang/eo.js2
-rw-r--r--sources/plugins/contextmenu/lang/es-mx.js7
-rw-r--r--sources/plugins/contextmenu/lang/es.js2
-rw-r--r--sources/plugins/contextmenu/lang/et.js2
-rw-r--r--sources/plugins/contextmenu/lang/eu.js2
-rw-r--r--sources/plugins/contextmenu/lang/fa.js2
-rw-r--r--sources/plugins/contextmenu/lang/fi.js2
-rw-r--r--sources/plugins/contextmenu/lang/fo.js2
-rw-r--r--sources/plugins/contextmenu/lang/fr-ca.js2
-rw-r--r--sources/plugins/contextmenu/lang/fr.js2
-rw-r--r--sources/plugins/contextmenu/lang/gl.js2
-rw-r--r--sources/plugins/contextmenu/lang/gu.js2
-rw-r--r--sources/plugins/contextmenu/lang/he.js2
-rw-r--r--sources/plugins/contextmenu/lang/hi.js2
-rw-r--r--sources/plugins/contextmenu/lang/hr.js2
-rw-r--r--sources/plugins/contextmenu/lang/hu.js2
-rw-r--r--sources/plugins/contextmenu/lang/id.js2
-rw-r--r--sources/plugins/contextmenu/lang/is.js2
-rw-r--r--sources/plugins/contextmenu/lang/it.js2
-rw-r--r--sources/plugins/contextmenu/lang/ja.js2
-rw-r--r--sources/plugins/contextmenu/lang/ka.js2
-rw-r--r--sources/plugins/contextmenu/lang/km.js2
-rw-r--r--sources/plugins/contextmenu/lang/ko.js2
-rw-r--r--sources/plugins/contextmenu/lang/ku.js2
-rw-r--r--sources/plugins/contextmenu/lang/lt.js2
-rw-r--r--sources/plugins/contextmenu/lang/lv.js2
-rw-r--r--sources/plugins/contextmenu/lang/mk.js2
-rw-r--r--sources/plugins/contextmenu/lang/mn.js2
-rw-r--r--sources/plugins/contextmenu/lang/ms.js2
-rw-r--r--sources/plugins/contextmenu/lang/nb.js2
-rw-r--r--sources/plugins/contextmenu/lang/nl.js2
-rw-r--r--sources/plugins/contextmenu/lang/no.js2
-rw-r--r--sources/plugins/contextmenu/lang/oc.js7
-rw-r--r--sources/plugins/contextmenu/lang/pl.js2
-rw-r--r--sources/plugins/contextmenu/lang/pt-br.js2
-rw-r--r--sources/plugins/contextmenu/lang/pt.js2
-rw-r--r--sources/plugins/contextmenu/lang/ro.js2
-rw-r--r--sources/plugins/contextmenu/lang/ru.js2
-rw-r--r--sources/plugins/contextmenu/lang/si.js2
-rw-r--r--sources/plugins/contextmenu/lang/sk.js2
-rw-r--r--sources/plugins/contextmenu/lang/sl.js4
-rw-r--r--sources/plugins/contextmenu/lang/sq.js2
-rw-r--r--sources/plugins/contextmenu/lang/sr-latn.js2
-rw-r--r--sources/plugins/contextmenu/lang/sr.js2
-rw-r--r--sources/plugins/contextmenu/lang/sv.js2
-rw-r--r--sources/plugins/contextmenu/lang/th.js2
-rw-r--r--sources/plugins/contextmenu/lang/tr.js2
-rw-r--r--sources/plugins/contextmenu/lang/tt.js2
-rw-r--r--sources/plugins/contextmenu/lang/ug.js2
-rw-r--r--sources/plugins/contextmenu/lang/uk.js2
-rw-r--r--sources/plugins/contextmenu/lang/vi.js2
-rw-r--r--sources/plugins/contextmenu/lang/zh-cn.js2
-rw-r--r--sources/plugins/contextmenu/lang/zh.js2
-rw-r--r--sources/plugins/contextmenu/plugin.js29
-rw-r--r--sources/plugins/dialog/dialogDefinition.js2
-rw-r--r--sources/plugins/dialog/plugin.js67
-rw-r--r--sources/plugins/dialog/samples/assets/my_dialog.js2
-rw-r--r--sources/plugins/dialog/samples/dialog.html4
-rw-r--r--sources/plugins/dialogadvtab/plugin.js2
-rw-r--r--sources/plugins/dialogui/plugin.js16
-rw-r--r--sources/plugins/elementspath/lang/af.js2
-rw-r--r--sources/plugins/elementspath/lang/ar.js2
-rw-r--r--sources/plugins/elementspath/lang/az.js8
-rw-r--r--sources/plugins/elementspath/lang/bg.js2
-rw-r--r--sources/plugins/elementspath/lang/bn.js2
-rw-r--r--sources/plugins/elementspath/lang/bs.js2
-rw-r--r--sources/plugins/elementspath/lang/ca.js2
-rw-r--r--sources/plugins/elementspath/lang/cs.js2
-rw-r--r--sources/plugins/elementspath/lang/cy.js2
-rw-r--r--sources/plugins/elementspath/lang/da.js2
-rw-r--r--sources/plugins/elementspath/lang/de-ch.js2
-rw-r--r--sources/plugins/elementspath/lang/de.js2
-rw-r--r--sources/plugins/elementspath/lang/el.js2
-rw-r--r--sources/plugins/elementspath/lang/en-au.js2
-rw-r--r--sources/plugins/elementspath/lang/en-ca.js2
-rw-r--r--sources/plugins/elementspath/lang/en-gb.js2
-rw-r--r--sources/plugins/elementspath/lang/en.js2
-rw-r--r--sources/plugins/elementspath/lang/eo.js2
-rw-r--r--sources/plugins/elementspath/lang/es-mx.js8
-rw-r--r--sources/plugins/elementspath/lang/es.js2
-rw-r--r--sources/plugins/elementspath/lang/et.js2
-rw-r--r--sources/plugins/elementspath/lang/eu.js2
-rw-r--r--sources/plugins/elementspath/lang/fa.js2
-rw-r--r--sources/plugins/elementspath/lang/fi.js2
-rw-r--r--sources/plugins/elementspath/lang/fo.js2
-rw-r--r--sources/plugins/elementspath/lang/fr-ca.js2
-rw-r--r--sources/plugins/elementspath/lang/fr.js6
-rw-r--r--sources/plugins/elementspath/lang/gl.js2
-rw-r--r--sources/plugins/elementspath/lang/gu.js2
-rw-r--r--sources/plugins/elementspath/lang/he.js2
-rw-r--r--sources/plugins/elementspath/lang/hi.js2
-rw-r--r--sources/plugins/elementspath/lang/hr.js4
-rw-r--r--sources/plugins/elementspath/lang/hu.js2
-rw-r--r--sources/plugins/elementspath/lang/is.js2
-rw-r--r--sources/plugins/elementspath/lang/it.js2
-rw-r--r--sources/plugins/elementspath/lang/ja.js2
-rw-r--r--sources/plugins/elementspath/lang/ka.js2
-rw-r--r--sources/plugins/elementspath/lang/km.js2
-rw-r--r--sources/plugins/elementspath/lang/ko.js2
-rw-r--r--sources/plugins/elementspath/lang/ku.js2
-rw-r--r--sources/plugins/elementspath/lang/lt.js2
-rw-r--r--sources/plugins/elementspath/lang/lv.js2
-rw-r--r--sources/plugins/elementspath/lang/mk.js2
-rw-r--r--sources/plugins/elementspath/lang/mn.js2
-rw-r--r--sources/plugins/elementspath/lang/ms.js2
-rw-r--r--sources/plugins/elementspath/lang/nb.js2
-rw-r--r--sources/plugins/elementspath/lang/nl.js2
-rw-r--r--sources/plugins/elementspath/lang/no.js2
-rw-r--r--sources/plugins/elementspath/lang/oc.js8
-rw-r--r--sources/plugins/elementspath/lang/pl.js2
-rw-r--r--sources/plugins/elementspath/lang/pt-br.js2
-rw-r--r--sources/plugins/elementspath/lang/pt.js2
-rw-r--r--sources/plugins/elementspath/lang/ro.js2
-rw-r--r--sources/plugins/elementspath/lang/ru.js2
-rw-r--r--sources/plugins/elementspath/lang/si.js2
-rw-r--r--sources/plugins/elementspath/lang/sk.js2
-rw-r--r--sources/plugins/elementspath/lang/sl.js4
-rw-r--r--sources/plugins/elementspath/lang/sq.js2
-rw-r--r--sources/plugins/elementspath/lang/sr-latn.js2
-rw-r--r--sources/plugins/elementspath/lang/sr.js2
-rw-r--r--sources/plugins/elementspath/lang/sv.js2
-rw-r--r--sources/plugins/elementspath/lang/th.js2
-rw-r--r--sources/plugins/elementspath/lang/tr.js2
-rw-r--r--sources/plugins/elementspath/lang/tt.js2
-rw-r--r--sources/plugins/elementspath/lang/ug.js2
-rw-r--r--sources/plugins/elementspath/lang/uk.js2
-rw-r--r--sources/plugins/elementspath/lang/vi.js2
-rw-r--r--sources/plugins/elementspath/lang/zh-cn.js2
-rw-r--r--sources/plugins/elementspath/lang/zh.js2
-rw-r--r--sources/plugins/elementspath/plugin.js25
-rw-r--r--sources/plugins/enterkey/plugin.js27
-rw-r--r--sources/plugins/enterkey/samples/enterkey.html4
-rw-r--r--sources/plugins/entities/plugin.js2
-rw-r--r--sources/plugins/fakeobjects/lang/af.js2
-rw-r--r--sources/plugins/fakeobjects/lang/ar.js2
-rw-r--r--sources/plugins/fakeobjects/lang/az.js11
-rw-r--r--sources/plugins/fakeobjects/lang/bg.js2
-rw-r--r--sources/plugins/fakeobjects/lang/bn.js2
-rw-r--r--sources/plugins/fakeobjects/lang/bs.js2
-rw-r--r--sources/plugins/fakeobjects/lang/ca.js2
-rw-r--r--sources/plugins/fakeobjects/lang/cs.js2
-rw-r--r--sources/plugins/fakeobjects/lang/cy.js2
-rw-r--r--sources/plugins/fakeobjects/lang/da.js2
-rw-r--r--sources/plugins/fakeobjects/lang/de-ch.js2
-rw-r--r--sources/plugins/fakeobjects/lang/de.js2
-rw-r--r--sources/plugins/fakeobjects/lang/el.js2
-rw-r--r--sources/plugins/fakeobjects/lang/en-au.js2
-rw-r--r--sources/plugins/fakeobjects/lang/en-ca.js2
-rw-r--r--sources/plugins/fakeobjects/lang/en-gb.js2
-rw-r--r--sources/plugins/fakeobjects/lang/en.js2
-rw-r--r--sources/plugins/fakeobjects/lang/eo.js2
-rw-r--r--sources/plugins/fakeobjects/lang/es-mx.js11
-rw-r--r--sources/plugins/fakeobjects/lang/es.js2
-rw-r--r--sources/plugins/fakeobjects/lang/et.js2
-rw-r--r--sources/plugins/fakeobjects/lang/eu.js2
-rw-r--r--sources/plugins/fakeobjects/lang/fa.js2
-rw-r--r--sources/plugins/fakeobjects/lang/fi.js2
-rw-r--r--sources/plugins/fakeobjects/lang/fo.js2
-rw-r--r--sources/plugins/fakeobjects/lang/fr-ca.js2
-rw-r--r--sources/plugins/fakeobjects/lang/fr.js6
-rw-r--r--sources/plugins/fakeobjects/lang/gl.js2
-rw-r--r--sources/plugins/fakeobjects/lang/gu.js2
-rw-r--r--sources/plugins/fakeobjects/lang/he.js2
-rw-r--r--sources/plugins/fakeobjects/lang/hi.js2
-rw-r--r--sources/plugins/fakeobjects/lang/hr.js2
-rw-r--r--sources/plugins/fakeobjects/lang/hu.js2
-rw-r--r--sources/plugins/fakeobjects/lang/id.js2
-rw-r--r--sources/plugins/fakeobjects/lang/is.js2
-rw-r--r--sources/plugins/fakeobjects/lang/it.js2
-rw-r--r--sources/plugins/fakeobjects/lang/ja.js2
-rw-r--r--sources/plugins/fakeobjects/lang/ka.js2
-rw-r--r--sources/plugins/fakeobjects/lang/km.js2
-rw-r--r--sources/plugins/fakeobjects/lang/ko.js2
-rw-r--r--sources/plugins/fakeobjects/lang/ku.js2
-rw-r--r--sources/plugins/fakeobjects/lang/lt.js2
-rw-r--r--sources/plugins/fakeobjects/lang/lv.js2
-rw-r--r--sources/plugins/fakeobjects/lang/mk.js2
-rw-r--r--sources/plugins/fakeobjects/lang/mn.js2
-rw-r--r--sources/plugins/fakeobjects/lang/ms.js2
-rw-r--r--sources/plugins/fakeobjects/lang/nb.js2
-rw-r--r--sources/plugins/fakeobjects/lang/nl.js2
-rw-r--r--sources/plugins/fakeobjects/lang/no.js2
-rw-r--r--sources/plugins/fakeobjects/lang/oc.js11
-rw-r--r--sources/plugins/fakeobjects/lang/pl.js2
-rw-r--r--sources/plugins/fakeobjects/lang/pt-br.js2
-rw-r--r--sources/plugins/fakeobjects/lang/pt.js6
-rw-r--r--sources/plugins/fakeobjects/lang/ro.js2
-rw-r--r--sources/plugins/fakeobjects/lang/ru.js2
-rw-r--r--sources/plugins/fakeobjects/lang/si.js2
-rw-r--r--sources/plugins/fakeobjects/lang/sk.js2
-rw-r--r--sources/plugins/fakeobjects/lang/sl.js4
-rw-r--r--sources/plugins/fakeobjects/lang/sq.js2
-rw-r--r--sources/plugins/fakeobjects/lang/sr-latn.js2
-rw-r--r--sources/plugins/fakeobjects/lang/sr.js2
-rw-r--r--sources/plugins/fakeobjects/lang/sv.js2
-rw-r--r--sources/plugins/fakeobjects/lang/th.js2
-rw-r--r--sources/plugins/fakeobjects/lang/tr.js2
-rw-r--r--sources/plugins/fakeobjects/lang/tt.js2
-rw-r--r--sources/plugins/fakeobjects/lang/ug.js2
-rw-r--r--sources/plugins/fakeobjects/lang/uk.js2
-rw-r--r--sources/plugins/fakeobjects/lang/vi.js2
-rw-r--r--sources/plugins/fakeobjects/lang/zh-cn.js2
-rw-r--r--sources/plugins/fakeobjects/lang/zh.js2
-rw-r--r--sources/plugins/fakeobjects/plugin.js30
-rw-r--r--sources/plugins/filebrowser/plugin.js4
-rw-r--r--sources/plugins/floatingspace/plugin.js10
-rw-r--r--sources/plugins/floatpanel/plugin.js50
-rw-r--r--sources/plugins/format/lang/af.js2
-rw-r--r--sources/plugins/format/lang/ar.js2
-rw-r--r--sources/plugins/format/lang/az.js18
-rw-r--r--sources/plugins/format/lang/bg.js2
-rw-r--r--sources/plugins/format/lang/bn.js4
-rw-r--r--sources/plugins/format/lang/bs.js2
-rw-r--r--sources/plugins/format/lang/ca.js2
-rw-r--r--sources/plugins/format/lang/cs.js2
-rw-r--r--sources/plugins/format/lang/cy.js2
-rw-r--r--sources/plugins/format/lang/da.js2
-rw-r--r--sources/plugins/format/lang/de-ch.js2
-rw-r--r--sources/plugins/format/lang/de.js2
-rw-r--r--sources/plugins/format/lang/el.js2
-rw-r--r--sources/plugins/format/lang/en-au.js2
-rw-r--r--sources/plugins/format/lang/en-ca.js2
-rw-r--r--sources/plugins/format/lang/en-gb.js2
-rw-r--r--sources/plugins/format/lang/en.js2
-rw-r--r--sources/plugins/format/lang/eo.js2
-rw-r--r--sources/plugins/format/lang/es-mx.js18
-rw-r--r--sources/plugins/format/lang/es.js2
-rw-r--r--sources/plugins/format/lang/et.js2
-rw-r--r--sources/plugins/format/lang/eu.js2
-rw-r--r--sources/plugins/format/lang/fa.js2
-rw-r--r--sources/plugins/format/lang/fi.js2
-rw-r--r--sources/plugins/format/lang/fo.js2
-rw-r--r--sources/plugins/format/lang/fr-ca.js2
-rw-r--r--sources/plugins/format/lang/fr.js6
-rw-r--r--sources/plugins/format/lang/gl.js2
-rw-r--r--sources/plugins/format/lang/gu.js2
-rw-r--r--sources/plugins/format/lang/he.js2
-rw-r--r--sources/plugins/format/lang/hi.js2
-rw-r--r--sources/plugins/format/lang/hr.js22
-rw-r--r--sources/plugins/format/lang/hu.js2
-rw-r--r--sources/plugins/format/lang/id.js2
-rw-r--r--sources/plugins/format/lang/is.js2
-rw-r--r--sources/plugins/format/lang/it.js2
-rw-r--r--sources/plugins/format/lang/ja.js2
-rw-r--r--sources/plugins/format/lang/ka.js2
-rw-r--r--sources/plugins/format/lang/km.js2
-rw-r--r--sources/plugins/format/lang/ko.js2
-rw-r--r--sources/plugins/format/lang/ku.js2
-rw-r--r--sources/plugins/format/lang/lt.js2
-rw-r--r--sources/plugins/format/lang/lv.js2
-rw-r--r--sources/plugins/format/lang/mk.js2
-rw-r--r--sources/plugins/format/lang/mn.js2
-rw-r--r--sources/plugins/format/lang/ms.js2
-rw-r--r--sources/plugins/format/lang/nb.js2
-rw-r--r--sources/plugins/format/lang/nl.js2
-rw-r--r--sources/plugins/format/lang/no.js2
-rw-r--r--sources/plugins/format/lang/oc.js18
-rw-r--r--sources/plugins/format/lang/pl.js2
-rw-r--r--sources/plugins/format/lang/pt-br.js2
-rw-r--r--sources/plugins/format/lang/pt.js2
-rw-r--r--sources/plugins/format/lang/ro.js2
-rw-r--r--sources/plugins/format/lang/ru.js2
-rw-r--r--sources/plugins/format/lang/si.js2
-rw-r--r--sources/plugins/format/lang/sk.js2
-rw-r--r--sources/plugins/format/lang/sl.js4
-rw-r--r--sources/plugins/format/lang/sq.js2
-rw-r--r--sources/plugins/format/lang/sr-latn.js2
-rw-r--r--sources/plugins/format/lang/sr.js2
-rw-r--r--sources/plugins/format/lang/sv.js2
-rw-r--r--sources/plugins/format/lang/th.js2
-rw-r--r--sources/plugins/format/lang/tr.js2
-rw-r--r--sources/plugins/format/lang/tt.js2
-rw-r--r--sources/plugins/format/lang/ug.js2
-rw-r--r--sources/plugins/format/lang/uk.js2
-rw-r--r--sources/plugins/format/lang/vi.js2
-rw-r--r--sources/plugins/format/lang/zh-cn.js2
-rw-r--r--sources/plugins/format/lang/zh.js2
-rw-r--r--sources/plugins/format/plugin.js6
-rw-r--r--sources/plugins/horizontalrule/icons/hidpi/horizontalrule.pngbin939 -> 530 bytes
-rw-r--r--sources/plugins/horizontalrule/icons/horizontalrule.pngbin519 -> 432 bytes
-rw-r--r--sources/plugins/horizontalrule/lang/af.js2
-rw-r--r--sources/plugins/horizontalrule/lang/ar.js2
-rw-r--r--sources/plugins/horizontalrule/lang/az.js7
-rw-r--r--sources/plugins/horizontalrule/lang/bg.js2
-rw-r--r--sources/plugins/horizontalrule/lang/bn.js4
-rw-r--r--sources/plugins/horizontalrule/lang/bs.js2
-rw-r--r--sources/plugins/horizontalrule/lang/ca.js2
-rw-r--r--sources/plugins/horizontalrule/lang/cs.js2
-rw-r--r--sources/plugins/horizontalrule/lang/cy.js2
-rw-r--r--sources/plugins/horizontalrule/lang/da.js2
-rw-r--r--sources/plugins/horizontalrule/lang/de-ch.js2
-rw-r--r--sources/plugins/horizontalrule/lang/de.js2
-rw-r--r--sources/plugins/horizontalrule/lang/el.js2
-rw-r--r--sources/plugins/horizontalrule/lang/en-au.js2
-rw-r--r--sources/plugins/horizontalrule/lang/en-ca.js2
-rw-r--r--sources/plugins/horizontalrule/lang/en-gb.js2
-rw-r--r--sources/plugins/horizontalrule/lang/en.js2
-rw-r--r--sources/plugins/horizontalrule/lang/eo.js2
-rw-r--r--sources/plugins/horizontalrule/lang/es-mx.js7
-rw-r--r--sources/plugins/horizontalrule/lang/es.js2
-rw-r--r--sources/plugins/horizontalrule/lang/et.js2
-rw-r--r--sources/plugins/horizontalrule/lang/eu.js2
-rw-r--r--sources/plugins/horizontalrule/lang/fa.js2
-rw-r--r--sources/plugins/horizontalrule/lang/fi.js2
-rw-r--r--sources/plugins/horizontalrule/lang/fo.js2
-rw-r--r--sources/plugins/horizontalrule/lang/fr-ca.js2
-rw-r--r--sources/plugins/horizontalrule/lang/fr.js2
-rw-r--r--sources/plugins/horizontalrule/lang/gl.js2
-rw-r--r--sources/plugins/horizontalrule/lang/gu.js2
-rw-r--r--sources/plugins/horizontalrule/lang/he.js2
-rw-r--r--sources/plugins/horizontalrule/lang/hi.js2
-rw-r--r--sources/plugins/horizontalrule/lang/hr.js2
-rw-r--r--sources/plugins/horizontalrule/lang/hu.js2
-rw-r--r--sources/plugins/horizontalrule/lang/id.js2
-rw-r--r--sources/plugins/horizontalrule/lang/is.js2
-rw-r--r--sources/plugins/horizontalrule/lang/it.js2
-rw-r--r--sources/plugins/horizontalrule/lang/ja.js2
-rw-r--r--sources/plugins/horizontalrule/lang/ka.js2
-rw-r--r--sources/plugins/horizontalrule/lang/km.js2
-rw-r--r--sources/plugins/horizontalrule/lang/ko.js2
-rw-r--r--sources/plugins/horizontalrule/lang/ku.js2
-rw-r--r--sources/plugins/horizontalrule/lang/lt.js2
-rw-r--r--sources/plugins/horizontalrule/lang/lv.js2
-rw-r--r--sources/plugins/horizontalrule/lang/mk.js2
-rw-r--r--sources/plugins/horizontalrule/lang/mn.js2
-rw-r--r--sources/plugins/horizontalrule/lang/ms.js2
-rw-r--r--sources/plugins/horizontalrule/lang/nb.js2
-rw-r--r--sources/plugins/horizontalrule/lang/nl.js2
-rw-r--r--sources/plugins/horizontalrule/lang/no.js2
-rw-r--r--sources/plugins/horizontalrule/lang/oc.js7
-rw-r--r--sources/plugins/horizontalrule/lang/pl.js2
-rw-r--r--sources/plugins/horizontalrule/lang/pt-br.js2
-rw-r--r--sources/plugins/horizontalrule/lang/pt.js4
-rw-r--r--sources/plugins/horizontalrule/lang/ro.js2
-rw-r--r--sources/plugins/horizontalrule/lang/ru.js2
-rw-r--r--sources/plugins/horizontalrule/lang/si.js2
-rw-r--r--sources/plugins/horizontalrule/lang/sk.js2
-rw-r--r--sources/plugins/horizontalrule/lang/sl.js2
-rw-r--r--sources/plugins/horizontalrule/lang/sq.js2
-rw-r--r--sources/plugins/horizontalrule/lang/sr-latn.js2
-rw-r--r--sources/plugins/horizontalrule/lang/sr.js2
-rw-r--r--sources/plugins/horizontalrule/lang/sv.js2
-rw-r--r--sources/plugins/horizontalrule/lang/th.js2
-rw-r--r--sources/plugins/horizontalrule/lang/tr.js2
-rw-r--r--sources/plugins/horizontalrule/lang/tt.js2
-rw-r--r--sources/plugins/horizontalrule/lang/ug.js2
-rw-r--r--sources/plugins/horizontalrule/lang/uk.js2
-rw-r--r--sources/plugins/horizontalrule/lang/vi.js2
-rw-r--r--sources/plugins/horizontalrule/lang/zh-cn.js2
-rw-r--r--sources/plugins/horizontalrule/lang/zh.js2
-rw-r--r--sources/plugins/horizontalrule/plugin.js4
-rw-r--r--sources/plugins/html5video/dialogs/html5video.js161
-rw-r--r--sources/plugins/html5video/icons/html5video.pngbin0 -> 14773 bytes
-rw-r--r--sources/plugins/html5video/lang/de.js14
-rw-r--r--sources/plugins/html5video/lang/en.js15
-rw-r--r--sources/plugins/html5video/lang/es.js14
-rw-r--r--sources/plugins/html5video/lang/eu.js14
-rw-r--r--sources/plugins/html5video/lang/fr.js14
-rw-r--r--sources/plugins/html5video/lang/ru.js15
-rw-r--r--sources/plugins/html5video/lang/uk.js14
-rw-r--r--sources/plugins/html5video/lang/uz.js14
-rw-r--r--sources/plugins/html5video/plugin.js139
-rw-r--r--sources/plugins/htmlwriter/plugin.js7
-rw-r--r--sources/plugins/htmlwriter/samples/outputforflash.html4
-rw-r--r--sources/plugins/htmlwriter/samples/outputhtml.html4
-rw-r--r--sources/plugins/iframe/dialogs/iframe.js4
-rw-r--r--sources/plugins/iframe/icons/hidpi/iframe.pngbin3091 -> 1837 bytes
-rw-r--r--sources/plugins/iframe/icons/iframe.pngbin989 -> 816 bytes
-rw-r--r--sources/plugins/iframe/lang/af.js2
-rw-r--r--sources/plugins/iframe/lang/ar.js2
-rw-r--r--sources/plugins/iframe/lang/az.js11
-rw-r--r--sources/plugins/iframe/lang/bg.js2
-rw-r--r--sources/plugins/iframe/lang/bn.js2
-rw-r--r--sources/plugins/iframe/lang/bs.js2
-rw-r--r--sources/plugins/iframe/lang/ca.js2
-rw-r--r--sources/plugins/iframe/lang/cs.js2
-rw-r--r--sources/plugins/iframe/lang/cy.js2
-rw-r--r--sources/plugins/iframe/lang/da.js2
-rw-r--r--sources/plugins/iframe/lang/de-ch.js2
-rw-r--r--sources/plugins/iframe/lang/de.js2
-rw-r--r--sources/plugins/iframe/lang/el.js2
-rw-r--r--sources/plugins/iframe/lang/en-au.js2
-rw-r--r--sources/plugins/iframe/lang/en-ca.js2
-rw-r--r--sources/plugins/iframe/lang/en-gb.js2
-rw-r--r--sources/plugins/iframe/lang/en.js2
-rw-r--r--sources/plugins/iframe/lang/eo.js2
-rw-r--r--sources/plugins/iframe/lang/es-mx.js11
-rw-r--r--sources/plugins/iframe/lang/es.js2
-rw-r--r--sources/plugins/iframe/lang/et.js2
-rw-r--r--sources/plugins/iframe/lang/eu.js2
-rw-r--r--sources/plugins/iframe/lang/fa.js2
-rw-r--r--sources/plugins/iframe/lang/fi.js2
-rw-r--r--sources/plugins/iframe/lang/fo.js2
-rw-r--r--sources/plugins/iframe/lang/fr-ca.js2
-rw-r--r--sources/plugins/iframe/lang/fr.js12
-rw-r--r--sources/plugins/iframe/lang/gl.js2
-rw-r--r--sources/plugins/iframe/lang/gu.js2
-rw-r--r--sources/plugins/iframe/lang/he.js2
-rw-r--r--sources/plugins/iframe/lang/hi.js2
-rw-r--r--sources/plugins/iframe/lang/hr.js4
-rw-r--r--sources/plugins/iframe/lang/hu.js2
-rw-r--r--sources/plugins/iframe/lang/id.js2
-rw-r--r--sources/plugins/iframe/lang/is.js2
-rw-r--r--sources/plugins/iframe/lang/it.js2
-rw-r--r--sources/plugins/iframe/lang/ja.js2
-rw-r--r--sources/plugins/iframe/lang/ka.js2
-rw-r--r--sources/plugins/iframe/lang/km.js2
-rw-r--r--sources/plugins/iframe/lang/ko.js2
-rw-r--r--sources/plugins/iframe/lang/ku.js2
-rw-r--r--sources/plugins/iframe/lang/lt.js2
-rw-r--r--sources/plugins/iframe/lang/lv.js2
-rw-r--r--sources/plugins/iframe/lang/mk.js2
-rw-r--r--sources/plugins/iframe/lang/mn.js2
-rw-r--r--sources/plugins/iframe/lang/ms.js2
-rw-r--r--sources/plugins/iframe/lang/nb.js2
-rw-r--r--sources/plugins/iframe/lang/nl.js2
-rw-r--r--sources/plugins/iframe/lang/no.js2
-rw-r--r--sources/plugins/iframe/lang/oc.js11
-rw-r--r--sources/plugins/iframe/lang/pl.js2
-rw-r--r--sources/plugins/iframe/lang/pt-br.js2
-rw-r--r--sources/plugins/iframe/lang/pt.js2
-rw-r--r--sources/plugins/iframe/lang/ro.js2
-rw-r--r--sources/plugins/iframe/lang/ru.js2
-rw-r--r--sources/plugins/iframe/lang/si.js2
-rw-r--r--sources/plugins/iframe/lang/sk.js2
-rw-r--r--sources/plugins/iframe/lang/sl.js8
-rw-r--r--sources/plugins/iframe/lang/sq.js2
-rw-r--r--sources/plugins/iframe/lang/sr-latn.js2
-rw-r--r--sources/plugins/iframe/lang/sr.js2
-rw-r--r--sources/plugins/iframe/lang/sv.js4
-rw-r--r--sources/plugins/iframe/lang/th.js2
-rw-r--r--sources/plugins/iframe/lang/tr.js2
-rw-r--r--sources/plugins/iframe/lang/tt.js2
-rw-r--r--sources/plugins/iframe/lang/ug.js2
-rw-r--r--sources/plugins/iframe/lang/uk.js2
-rw-r--r--sources/plugins/iframe/lang/vi.js2
-rw-r--r--sources/plugins/iframe/lang/zh-cn.js2
-rw-r--r--sources/plugins/iframe/lang/zh.js2
-rw-r--r--sources/plugins/iframe/plugin.js4
-rw-r--r--sources/plugins/image/dialogs/image.js15
-rw-r--r--sources/plugins/image/icons/hidpi/image.pngbin1745 -> 905 bytes
-rw-r--r--sources/plugins/image/icons/image.pngbin756 -> 498 bytes
-rw-r--r--sources/plugins/image/lang/af.js2
-rw-r--r--sources/plugins/image/lang/ar.js2
-rw-r--r--sources/plugins/image/lang/az.js25
-rw-r--r--sources/plugins/image/lang/bg.js2
-rw-r--r--sources/plugins/image/lang/bn.js4
-rw-r--r--sources/plugins/image/lang/bs.js2
-rw-r--r--sources/plugins/image/lang/ca.js2
-rw-r--r--sources/plugins/image/lang/cs.js2
-rw-r--r--sources/plugins/image/lang/cy.js2
-rw-r--r--sources/plugins/image/lang/da.js2
-rw-r--r--sources/plugins/image/lang/de-ch.js2
-rw-r--r--sources/plugins/image/lang/de.js2
-rw-r--r--sources/plugins/image/lang/el.js2
-rw-r--r--sources/plugins/image/lang/en-au.js2
-rw-r--r--sources/plugins/image/lang/en-ca.js2
-rw-r--r--sources/plugins/image/lang/en-gb.js2
-rw-r--r--sources/plugins/image/lang/en.js2
-rw-r--r--sources/plugins/image/lang/eo.js2
-rw-r--r--sources/plugins/image/lang/es-mx.js25
-rw-r--r--sources/plugins/image/lang/es.js2
-rw-r--r--sources/plugins/image/lang/et.js2
-rw-r--r--sources/plugins/image/lang/eu.js2
-rw-r--r--sources/plugins/image/lang/fa.js2
-rw-r--r--sources/plugins/image/lang/fi.js2
-rw-r--r--sources/plugins/image/lang/fo.js2
-rw-r--r--sources/plugins/image/lang/fr-ca.js2
-rw-r--r--sources/plugins/image/lang/fr.js22
-rw-r--r--sources/plugins/image/lang/gl.js2
-rw-r--r--sources/plugins/image/lang/gu.js2
-rw-r--r--sources/plugins/image/lang/he.js2
-rw-r--r--sources/plugins/image/lang/hi.js2
-rw-r--r--sources/plugins/image/lang/hr.js4
-rw-r--r--sources/plugins/image/lang/hu.js2
-rw-r--r--sources/plugins/image/lang/id.js2
-rw-r--r--sources/plugins/image/lang/is.js2
-rw-r--r--sources/plugins/image/lang/it.js2
-rw-r--r--sources/plugins/image/lang/ja.js2
-rw-r--r--sources/plugins/image/lang/ka.js2
-rw-r--r--sources/plugins/image/lang/km.js2
-rw-r--r--sources/plugins/image/lang/ko.js2
-rw-r--r--sources/plugins/image/lang/ku.js2
-rw-r--r--sources/plugins/image/lang/lt.js2
-rw-r--r--sources/plugins/image/lang/lv.js2
-rw-r--r--sources/plugins/image/lang/mk.js2
-rw-r--r--sources/plugins/image/lang/mn.js2
-rw-r--r--sources/plugins/image/lang/ms.js2
-rw-r--r--sources/plugins/image/lang/nb.js2
-rw-r--r--sources/plugins/image/lang/nl.js2
-rw-r--r--sources/plugins/image/lang/no.js2
-rw-r--r--sources/plugins/image/lang/oc.js25
-rw-r--r--sources/plugins/image/lang/pl.js2
-rw-r--r--sources/plugins/image/lang/pt-br.js2
-rw-r--r--sources/plugins/image/lang/pt.js24
-rw-r--r--sources/plugins/image/lang/ro.js2
-rw-r--r--sources/plugins/image/lang/ru.js2
-rw-r--r--sources/plugins/image/lang/si.js2
-rw-r--r--sources/plugins/image/lang/sk.js2
-rw-r--r--sources/plugins/image/lang/sl.js16
-rw-r--r--sources/plugins/image/lang/sq.js2
-rw-r--r--sources/plugins/image/lang/sr-latn.js2
-rw-r--r--sources/plugins/image/lang/sr.js2
-rw-r--r--sources/plugins/image/lang/sv.js2
-rw-r--r--sources/plugins/image/lang/th.js2
-rw-r--r--sources/plugins/image/lang/tr.js2
-rw-r--r--sources/plugins/image/lang/tt.js2
-rw-r--r--sources/plugins/image/lang/ug.js2
-rw-r--r--sources/plugins/image/lang/uk.js2
-rw-r--r--sources/plugins/image/lang/vi.js2
-rw-r--r--sources/plugins/image/lang/zh-cn.js2
-rw-r--r--sources/plugins/image/lang/zh.js2
-rw-r--r--sources/plugins/image/plugin.js10
-rw-r--r--sources/plugins/indent/dev/indent.html2
-rw-r--r--sources/plugins/indent/icons/hidpi/indent-rtl.pngbin1610 -> 757 bytes
-rw-r--r--sources/plugins/indent/icons/hidpi/indent.pngbin1573 -> 1001 bytes
-rw-r--r--sources/plugins/indent/icons/hidpi/outdent-rtl.pngbin1584 -> 738 bytes
-rw-r--r--sources/plugins/indent/icons/hidpi/outdent.pngbin1598 -> 754 bytes
-rw-r--r--sources/plugins/indent/icons/indent-rtl.pngbin726 -> 438 bytes
-rw-r--r--sources/plugins/indent/icons/indent.pngbin711 -> 489 bytes
-rw-r--r--sources/plugins/indent/icons/outdent-rtl.pngbin708 -> 450 bytes
-rw-r--r--sources/plugins/indent/icons/outdent.pngbin699 -> 413 bytes
-rw-r--r--sources/plugins/indent/lang/af.js2
-rw-r--r--sources/plugins/indent/lang/ar.js2
-rw-r--r--sources/plugins/indent/lang/az.js8
-rw-r--r--sources/plugins/indent/lang/bg.js2
-rw-r--r--sources/plugins/indent/lang/bn.js4
-rw-r--r--sources/plugins/indent/lang/bs.js2
-rw-r--r--sources/plugins/indent/lang/ca.js2
-rw-r--r--sources/plugins/indent/lang/cs.js2
-rw-r--r--sources/plugins/indent/lang/cy.js2
-rw-r--r--sources/plugins/indent/lang/da.js2
-rw-r--r--sources/plugins/indent/lang/de-ch.js2
-rw-r--r--sources/plugins/indent/lang/de.js2
-rw-r--r--sources/plugins/indent/lang/el.js2
-rw-r--r--sources/plugins/indent/lang/en-au.js2
-rw-r--r--sources/plugins/indent/lang/en-ca.js2
-rw-r--r--sources/plugins/indent/lang/en-gb.js2
-rw-r--r--sources/plugins/indent/lang/en.js2
-rw-r--r--sources/plugins/indent/lang/eo.js2
-rw-r--r--sources/plugins/indent/lang/es-mx.js8
-rw-r--r--sources/plugins/indent/lang/es.js2
-rw-r--r--sources/plugins/indent/lang/et.js2
-rw-r--r--sources/plugins/indent/lang/eu.js2
-rw-r--r--sources/plugins/indent/lang/fa.js2
-rw-r--r--sources/plugins/indent/lang/fi.js2
-rw-r--r--sources/plugins/indent/lang/fo.js2
-rw-r--r--sources/plugins/indent/lang/fr-ca.js2
-rw-r--r--sources/plugins/indent/lang/fr.js6
-rw-r--r--sources/plugins/indent/lang/gl.js2
-rw-r--r--sources/plugins/indent/lang/gu.js2
-rw-r--r--sources/plugins/indent/lang/he.js2
-rw-r--r--sources/plugins/indent/lang/hi.js2
-rw-r--r--sources/plugins/indent/lang/hr.js2
-rw-r--r--sources/plugins/indent/lang/hu.js2
-rw-r--r--sources/plugins/indent/lang/id.js2
-rw-r--r--sources/plugins/indent/lang/is.js2
-rw-r--r--sources/plugins/indent/lang/it.js2
-rw-r--r--sources/plugins/indent/lang/ja.js2
-rw-r--r--sources/plugins/indent/lang/ka.js2
-rw-r--r--sources/plugins/indent/lang/km.js2
-rw-r--r--sources/plugins/indent/lang/ko.js2
-rw-r--r--sources/plugins/indent/lang/ku.js2
-rw-r--r--sources/plugins/indent/lang/lt.js2
-rw-r--r--sources/plugins/indent/lang/lv.js2
-rw-r--r--sources/plugins/indent/lang/mk.js2
-rw-r--r--sources/plugins/indent/lang/mn.js2
-rw-r--r--sources/plugins/indent/lang/ms.js2
-rw-r--r--sources/plugins/indent/lang/nb.js2
-rw-r--r--sources/plugins/indent/lang/nl.js2
-rw-r--r--sources/plugins/indent/lang/no.js2
-rw-r--r--sources/plugins/indent/lang/oc.js8
-rw-r--r--sources/plugins/indent/lang/pl.js2
-rw-r--r--sources/plugins/indent/lang/pt-br.js2
-rw-r--r--sources/plugins/indent/lang/pt.js6
-rw-r--r--sources/plugins/indent/lang/ro.js2
-rw-r--r--sources/plugins/indent/lang/ru.js2
-rw-r--r--sources/plugins/indent/lang/si.js2
-rw-r--r--sources/plugins/indent/lang/sk.js2
-rw-r--r--sources/plugins/indent/lang/sl.js2
-rw-r--r--sources/plugins/indent/lang/sq.js2
-rw-r--r--sources/plugins/indent/lang/sr-latn.js2
-rw-r--r--sources/plugins/indent/lang/sr.js2
-rw-r--r--sources/plugins/indent/lang/sv.js2
-rw-r--r--sources/plugins/indent/lang/th.js2
-rw-r--r--sources/plugins/indent/lang/tr.js2
-rw-r--r--sources/plugins/indent/lang/tt.js2
-rw-r--r--sources/plugins/indent/lang/ug.js2
-rw-r--r--sources/plugins/indent/lang/uk.js2
-rw-r--r--sources/plugins/indent/lang/vi.js2
-rw-r--r--sources/plugins/indent/lang/zh-cn.js2
-rw-r--r--sources/plugins/indent/lang/zh.js2
-rw-r--r--sources/plugins/indent/plugin.js4
-rw-r--r--sources/plugins/indentblock/plugin.js16
-rw-r--r--sources/plugins/indentlist/plugin.js29
-rw-r--r--sources/plugins/justify/icons/hidpi/justifyblock.pngbin882 -> 533 bytes
-rw-r--r--sources/plugins/justify/icons/hidpi/justifycenter.pngbin1142 -> 576 bytes
-rw-r--r--sources/plugins/justify/icons/hidpi/justifyleft.pngbin1042 -> 569 bytes
-rw-r--r--sources/plugins/justify/icons/hidpi/justifyright.pngbin1048 -> 549 bytes
-rw-r--r--sources/plugins/justify/icons/justifyblock.pngbin496 -> 315 bytes
-rw-r--r--sources/plugins/justify/icons/justifycenter.pngbin609 -> 564 bytes
-rw-r--r--sources/plugins/justify/icons/justifyleft.pngbin558 -> 342 bytes
-rw-r--r--sources/plugins/justify/icons/justifyright.pngbin554 -> 348 bytes
-rw-r--r--sources/plugins/justify/lang/af.js2
-rw-r--r--sources/plugins/justify/lang/ar.js2
-rw-r--r--sources/plugins/justify/lang/az.js10
-rw-r--r--sources/plugins/justify/lang/bg.js2
-rw-r--r--sources/plugins/justify/lang/bn.js4
-rw-r--r--sources/plugins/justify/lang/bs.js2
-rw-r--r--sources/plugins/justify/lang/ca.js2
-rw-r--r--sources/plugins/justify/lang/cs.js2
-rw-r--r--sources/plugins/justify/lang/cy.js2
-rw-r--r--sources/plugins/justify/lang/da.js2
-rw-r--r--sources/plugins/justify/lang/de-ch.js2
-rw-r--r--sources/plugins/justify/lang/de.js2
-rw-r--r--sources/plugins/justify/lang/el.js2
-rw-r--r--sources/plugins/justify/lang/en-au.js2
-rw-r--r--sources/plugins/justify/lang/en-ca.js2
-rw-r--r--sources/plugins/justify/lang/en-gb.js2
-rw-r--r--sources/plugins/justify/lang/en.js2
-rw-r--r--sources/plugins/justify/lang/eo.js2
-rw-r--r--sources/plugins/justify/lang/es-mx.js10
-rw-r--r--sources/plugins/justify/lang/es.js2
-rw-r--r--sources/plugins/justify/lang/et.js2
-rw-r--r--sources/plugins/justify/lang/eu.js2
-rw-r--r--sources/plugins/justify/lang/fa.js2
-rw-r--r--sources/plugins/justify/lang/fi.js2
-rw-r--r--sources/plugins/justify/lang/fo.js2
-rw-r--r--sources/plugins/justify/lang/fr-ca.js2
-rw-r--r--sources/plugins/justify/lang/fr.js2
-rw-r--r--sources/plugins/justify/lang/gl.js2
-rw-r--r--sources/plugins/justify/lang/gu.js2
-rw-r--r--sources/plugins/justify/lang/he.js2
-rw-r--r--sources/plugins/justify/lang/hi.js2
-rw-r--r--sources/plugins/justify/lang/hr.js2
-rw-r--r--sources/plugins/justify/lang/hu.js2
-rw-r--r--sources/plugins/justify/lang/id.js2
-rw-r--r--sources/plugins/justify/lang/is.js2
-rw-r--r--sources/plugins/justify/lang/it.js2
-rw-r--r--sources/plugins/justify/lang/ja.js2
-rw-r--r--sources/plugins/justify/lang/ka.js2
-rw-r--r--sources/plugins/justify/lang/km.js2
-rw-r--r--sources/plugins/justify/lang/ko.js2
-rw-r--r--sources/plugins/justify/lang/ku.js2
-rw-r--r--sources/plugins/justify/lang/lt.js2
-rw-r--r--sources/plugins/justify/lang/lv.js2
-rw-r--r--sources/plugins/justify/lang/mk.js2
-rw-r--r--sources/plugins/justify/lang/mn.js2
-rw-r--r--sources/plugins/justify/lang/ms.js2
-rw-r--r--sources/plugins/justify/lang/nb.js2
-rw-r--r--sources/plugins/justify/lang/nl.js2
-rw-r--r--sources/plugins/justify/lang/no.js2
-rw-r--r--sources/plugins/justify/lang/oc.js10
-rw-r--r--sources/plugins/justify/lang/pl.js2
-rw-r--r--sources/plugins/justify/lang/pt-br.js2
-rw-r--r--sources/plugins/justify/lang/pt.js4
-rw-r--r--sources/plugins/justify/lang/ro.js2
-rw-r--r--sources/plugins/justify/lang/ru.js2
-rw-r--r--sources/plugins/justify/lang/si.js2
-rw-r--r--sources/plugins/justify/lang/sk.js2
-rw-r--r--sources/plugins/justify/lang/sl.js2
-rw-r--r--sources/plugins/justify/lang/sq.js2
-rw-r--r--sources/plugins/justify/lang/sr-latn.js2
-rw-r--r--sources/plugins/justify/lang/sr.js2
-rw-r--r--sources/plugins/justify/lang/sv.js2
-rw-r--r--sources/plugins/justify/lang/th.js2
-rw-r--r--sources/plugins/justify/lang/tr.js2
-rw-r--r--sources/plugins/justify/lang/tt.js2
-rw-r--r--sources/plugins/justify/lang/ug.js2
-rw-r--r--sources/plugins/justify/lang/uk.js2
-rw-r--r--sources/plugins/justify/lang/vi.js2
-rw-r--r--sources/plugins/justify/lang/zh-cn.js2
-rw-r--r--sources/plugins/justify/lang/zh.js2
-rw-r--r--sources/plugins/justify/plugin.js43
-rw-r--r--sources/plugins/lineutils/dev/dnd.html172
-rw-r--r--sources/plugins/lineutils/dev/magicfinger.html285
-rw-r--r--sources/plugins/lineutils/plugin.js1018
-rw-r--r--sources/plugins/link/dialogs/anchor.js29
-rw-r--r--sources/plugins/link/dialogs/link.js223
-rw-r--r--sources/plugins/link/icons/anchor-rtl.pngbin764 -> 523 bytes
-rw-r--r--sources/plugins/link/icons/anchor.pngbin757 -> 517 bytes
-rw-r--r--sources/plugins/link/icons/hidpi/anchor-rtl.pngbin1654 -> 957 bytes
-rw-r--r--sources/plugins/link/icons/hidpi/anchor.pngbin1633 -> 917 bytes
-rw-r--r--sources/plugins/link/icons/hidpi/link.pngbin1620 -> 935 bytes
-rw-r--r--sources/plugins/link/icons/hidpi/unlink.pngbin2209 -> 1317 bytes
-rw-r--r--sources/plugins/link/icons/link.pngbin656 -> 533 bytes
-rw-r--r--sources/plugins/link/icons/unlink.pngbin812 -> 692 bytes
-rw-r--r--sources/plugins/link/images/anchor.pngbin589 -> 752 bytes
-rw-r--r--sources/plugins/link/images/hidpi/anchor.pngbin1379 -> 1109 bytes
-rw-r--r--sources/plugins/link/lang/af.js4
-rw-r--r--sources/plugins/link/lang/ar.js4
-rw-r--r--sources/plugins/link/lang/az.js67
-rw-r--r--sources/plugins/link/lang/bg.js4
-rw-r--r--sources/plugins/link/lang/bn.js6
-rw-r--r--sources/plugins/link/lang/bs.js4
-rw-r--r--sources/plugins/link/lang/ca.js4
-rw-r--r--sources/plugins/link/lang/cs.js4
-rw-r--r--sources/plugins/link/lang/cy.js4
-rw-r--r--sources/plugins/link/lang/da.js4
-rw-r--r--sources/plugins/link/lang/de-ch.js4
-rw-r--r--sources/plugins/link/lang/de.js4
-rw-r--r--sources/plugins/link/lang/el.js4
-rw-r--r--sources/plugins/link/lang/en-au.js4
-rw-r--r--sources/plugins/link/lang/en-ca.js4
-rw-r--r--sources/plugins/link/lang/en-gb.js4
-rw-r--r--sources/plugins/link/lang/en.js4
-rw-r--r--sources/plugins/link/lang/eo.js4
-rw-r--r--sources/plugins/link/lang/es-mx.js67
-rw-r--r--sources/plugins/link/lang/es.js4
-rw-r--r--sources/plugins/link/lang/et.js4
-rw-r--r--sources/plugins/link/lang/eu.js4
-rw-r--r--sources/plugins/link/lang/fa.js4
-rw-r--r--sources/plugins/link/lang/fi.js4
-rw-r--r--sources/plugins/link/lang/fo.js4
-rw-r--r--sources/plugins/link/lang/fr-ca.js4
-rw-r--r--sources/plugins/link/lang/fr.js50
-rw-r--r--sources/plugins/link/lang/gl.js4
-rw-r--r--sources/plugins/link/lang/gu.js4
-rw-r--r--sources/plugins/link/lang/he.js4
-rw-r--r--sources/plugins/link/lang/hi.js4
-rw-r--r--sources/plugins/link/lang/hr.js16
-rw-r--r--sources/plugins/link/lang/hu.js4
-rw-r--r--sources/plugins/link/lang/id.js4
-rw-r--r--sources/plugins/link/lang/is.js4
-rw-r--r--sources/plugins/link/lang/it.js4
-rw-r--r--sources/plugins/link/lang/ja.js4
-rw-r--r--sources/plugins/link/lang/ka.js4
-rw-r--r--sources/plugins/link/lang/km.js4
-rw-r--r--sources/plugins/link/lang/ko.js4
-rw-r--r--sources/plugins/link/lang/ku.js4
-rw-r--r--sources/plugins/link/lang/lt.js4
-rw-r--r--sources/plugins/link/lang/lv.js4
-rw-r--r--sources/plugins/link/lang/mk.js4
-rw-r--r--sources/plugins/link/lang/mn.js4
-rw-r--r--sources/plugins/link/lang/ms.js4
-rw-r--r--sources/plugins/link/lang/nb.js14
-rw-r--r--sources/plugins/link/lang/nl.js4
-rw-r--r--sources/plugins/link/lang/no.js4
-rw-r--r--sources/plugins/link/lang/oc.js67
-rw-r--r--sources/plugins/link/lang/pl.js4
-rw-r--r--sources/plugins/link/lang/pt-br.js4
-rw-r--r--sources/plugins/link/lang/pt.js70
-rw-r--r--sources/plugins/link/lang/ro.js4
-rw-r--r--sources/plugins/link/lang/ru.js4
-rw-r--r--sources/plugins/link/lang/si.js4
-rw-r--r--sources/plugins/link/lang/sk.js4
-rw-r--r--sources/plugins/link/lang/sl.js50
-rw-r--r--sources/plugins/link/lang/sq.js4
-rw-r--r--sources/plugins/link/lang/sr-latn.js4
-rw-r--r--sources/plugins/link/lang/sr.js4
-rw-r--r--sources/plugins/link/lang/sv.js6
-rw-r--r--sources/plugins/link/lang/th.js4
-rw-r--r--sources/plugins/link/lang/tr.js4
-rw-r--r--sources/plugins/link/lang/tt.js4
-rw-r--r--sources/plugins/link/lang/ug.js4
-rw-r--r--sources/plugins/link/lang/uk.js4
-rw-r--r--sources/plugins/link/lang/vi.js4
-rw-r--r--sources/plugins/link/lang/zh-cn.js4
-rw-r--r--sources/plugins/link/lang/zh.js4
-rw-r--r--sources/plugins/link/plugin.js133
-rw-r--r--sources/plugins/list/icons/bulletedlist-rtl.pngbin647 -> 367 bytes
-rw-r--r--sources/plugins/list/icons/bulletedlist.pngbin646 -> 370 bytes
-rw-r--r--sources/plugins/list/icons/hidpi/bulletedlist-rtl.pngbin1451 -> 820 bytes
-rw-r--r--sources/plugins/list/icons/hidpi/bulletedlist.pngbin1441 -> 828 bytes
-rw-r--r--sources/plugins/list/icons/hidpi/numberedlist-rtl.pngbin1248 -> 628 bytes
-rw-r--r--sources/plugins/list/icons/hidpi/numberedlist.pngbin1218 -> 655 bytes
-rw-r--r--sources/plugins/list/icons/numberedlist-rtl.pngbin666 -> 390 bytes
-rw-r--r--sources/plugins/list/icons/numberedlist.pngbin645 -> 390 bytes
-rw-r--r--sources/plugins/list/lang/af.js2
-rw-r--r--sources/plugins/list/lang/ar.js2
-rw-r--r--sources/plugins/list/lang/az.js8
-rw-r--r--sources/plugins/list/lang/bg.js2
-rw-r--r--sources/plugins/list/lang/bn.js4
-rw-r--r--sources/plugins/list/lang/bs.js2
-rw-r--r--sources/plugins/list/lang/ca.js2
-rw-r--r--sources/plugins/list/lang/cs.js2
-rw-r--r--sources/plugins/list/lang/cy.js2
-rw-r--r--sources/plugins/list/lang/da.js2
-rw-r--r--sources/plugins/list/lang/de-ch.js2
-rw-r--r--sources/plugins/list/lang/de.js2
-rw-r--r--sources/plugins/list/lang/el.js2
-rw-r--r--sources/plugins/list/lang/en-au.js2
-rw-r--r--sources/plugins/list/lang/en-ca.js2
-rw-r--r--sources/plugins/list/lang/en-gb.js2
-rw-r--r--sources/plugins/list/lang/en.js2
-rw-r--r--sources/plugins/list/lang/eo.js2
-rw-r--r--sources/plugins/list/lang/es-mx.js8
-rw-r--r--sources/plugins/list/lang/es.js2
-rw-r--r--sources/plugins/list/lang/et.js2
-rw-r--r--sources/plugins/list/lang/eu.js2
-rw-r--r--sources/plugins/list/lang/fa.js2
-rw-r--r--sources/plugins/list/lang/fi.js2
-rw-r--r--sources/plugins/list/lang/fo.js2
-rw-r--r--sources/plugins/list/lang/fr-ca.js2
-rw-r--r--sources/plugins/list/lang/fr.js6
-rw-r--r--sources/plugins/list/lang/gl.js2
-rw-r--r--sources/plugins/list/lang/gu.js2
-rw-r--r--sources/plugins/list/lang/he.js2
-rw-r--r--sources/plugins/list/lang/hi.js2
-rw-r--r--sources/plugins/list/lang/hr.js2
-rw-r--r--sources/plugins/list/lang/hu.js2
-rw-r--r--sources/plugins/list/lang/id.js2
-rw-r--r--sources/plugins/list/lang/is.js2
-rw-r--r--sources/plugins/list/lang/it.js2
-rw-r--r--sources/plugins/list/lang/ja.js2
-rw-r--r--sources/plugins/list/lang/ka.js2
-rw-r--r--sources/plugins/list/lang/km.js2
-rw-r--r--sources/plugins/list/lang/ko.js2
-rw-r--r--sources/plugins/list/lang/ku.js2
-rw-r--r--sources/plugins/list/lang/lt.js2
-rw-r--r--sources/plugins/list/lang/lv.js2
-rw-r--r--sources/plugins/list/lang/mk.js2
-rw-r--r--sources/plugins/list/lang/mn.js2
-rw-r--r--sources/plugins/list/lang/ms.js2
-rw-r--r--sources/plugins/list/lang/nb.js4
-rw-r--r--sources/plugins/list/lang/nl.js2
-rw-r--r--sources/plugins/list/lang/no.js2
-rw-r--r--sources/plugins/list/lang/oc.js8
-rw-r--r--sources/plugins/list/lang/pl.js2
-rw-r--r--sources/plugins/list/lang/pt-br.js2
-rw-r--r--sources/plugins/list/lang/pt.js2
-rw-r--r--sources/plugins/list/lang/ro.js2
-rw-r--r--sources/plugins/list/lang/ru.js2
-rw-r--r--sources/plugins/list/lang/si.js2
-rw-r--r--sources/plugins/list/lang/sk.js2
-rw-r--r--sources/plugins/list/lang/sl.js6
-rw-r--r--sources/plugins/list/lang/sq.js2
-rw-r--r--sources/plugins/list/lang/sr-latn.js2
-rw-r--r--sources/plugins/list/lang/sr.js2
-rw-r--r--sources/plugins/list/lang/sv.js2
-rw-r--r--sources/plugins/list/lang/th.js2
-rw-r--r--sources/plugins/list/lang/tr.js2
-rw-r--r--sources/plugins/list/lang/tt.js2
-rw-r--r--sources/plugins/list/lang/ug.js2
-rw-r--r--sources/plugins/list/lang/uk.js2
-rw-r--r--sources/plugins/list/lang/vi.js2
-rw-r--r--sources/plugins/list/lang/zh-cn.js2
-rw-r--r--sources/plugins/list/lang/zh.js2
-rw-r--r--sources/plugins/list/plugin.js42
-rw-r--r--sources/plugins/listblock/plugin.js14
-rw-r--r--sources/plugins/liststyle/dialogs/liststyle.js2
-rw-r--r--sources/plugins/liststyle/lang/af.js2
-rw-r--r--sources/plugins/liststyle/lang/ar.js2
-rw-r--r--sources/plugins/liststyle/lang/az.js25
-rw-r--r--sources/plugins/liststyle/lang/bg.js2
-rw-r--r--sources/plugins/liststyle/lang/bn.js4
-rw-r--r--sources/plugins/liststyle/lang/bs.js2
-rw-r--r--sources/plugins/liststyle/lang/ca.js2
-rw-r--r--sources/plugins/liststyle/lang/cs.js2
-rw-r--r--sources/plugins/liststyle/lang/cy.js2
-rw-r--r--sources/plugins/liststyle/lang/da.js2
-rw-r--r--sources/plugins/liststyle/lang/de-ch.js2
-rw-r--r--sources/plugins/liststyle/lang/de.js2
-rw-r--r--sources/plugins/liststyle/lang/el.js2
-rw-r--r--sources/plugins/liststyle/lang/en-au.js2
-rw-r--r--sources/plugins/liststyle/lang/en-ca.js2
-rw-r--r--sources/plugins/liststyle/lang/en-gb.js2
-rw-r--r--sources/plugins/liststyle/lang/en.js2
-rw-r--r--sources/plugins/liststyle/lang/eo.js2
-rw-r--r--sources/plugins/liststyle/lang/es-mx.js25
-rw-r--r--sources/plugins/liststyle/lang/es.js2
-rw-r--r--sources/plugins/liststyle/lang/et.js2
-rw-r--r--sources/plugins/liststyle/lang/eu.js2
-rw-r--r--sources/plugins/liststyle/lang/fa.js2
-rw-r--r--sources/plugins/liststyle/lang/fi.js2
-rw-r--r--sources/plugins/liststyle/lang/fo.js2
-rw-r--r--sources/plugins/liststyle/lang/fr-ca.js2
-rw-r--r--sources/plugins/liststyle/lang/fr.js14
-rw-r--r--sources/plugins/liststyle/lang/gl.js2
-rw-r--r--sources/plugins/liststyle/lang/gu.js2
-rw-r--r--sources/plugins/liststyle/lang/he.js2
-rw-r--r--sources/plugins/liststyle/lang/hi.js2
-rw-r--r--sources/plugins/liststyle/lang/hr.js2
-rw-r--r--sources/plugins/liststyle/lang/hu.js2
-rw-r--r--sources/plugins/liststyle/lang/id.js2
-rw-r--r--sources/plugins/liststyle/lang/is.js2
-rw-r--r--sources/plugins/liststyle/lang/it.js2
-rw-r--r--sources/plugins/liststyle/lang/ja.js2
-rw-r--r--sources/plugins/liststyle/lang/ka.js2
-rw-r--r--sources/plugins/liststyle/lang/km.js2
-rw-r--r--sources/plugins/liststyle/lang/ko.js2
-rw-r--r--sources/plugins/liststyle/lang/ku.js2
-rw-r--r--sources/plugins/liststyle/lang/lt.js2
-rw-r--r--sources/plugins/liststyle/lang/lv.js2
-rw-r--r--sources/plugins/liststyle/lang/mk.js2
-rw-r--r--sources/plugins/liststyle/lang/mn.js2
-rw-r--r--sources/plugins/liststyle/lang/ms.js2
-rw-r--r--sources/plugins/liststyle/lang/nb.js4
-rw-r--r--sources/plugins/liststyle/lang/nl.js2
-rw-r--r--sources/plugins/liststyle/lang/no.js2
-rw-r--r--sources/plugins/liststyle/lang/oc.js25
-rw-r--r--sources/plugins/liststyle/lang/pl.js2
-rw-r--r--sources/plugins/liststyle/lang/pt-br.js2
-rw-r--r--sources/plugins/liststyle/lang/pt.js20
-rw-r--r--sources/plugins/liststyle/lang/ro.js2
-rw-r--r--sources/plugins/liststyle/lang/ru.js2
-rw-r--r--sources/plugins/liststyle/lang/si.js2
-rw-r--r--sources/plugins/liststyle/lang/sk.js2
-rw-r--r--sources/plugins/liststyle/lang/sl.js2
-rw-r--r--sources/plugins/liststyle/lang/sq.js2
-rw-r--r--sources/plugins/liststyle/lang/sr-latn.js2
-rw-r--r--sources/plugins/liststyle/lang/sr.js2
-rw-r--r--sources/plugins/liststyle/lang/sv.js2
-rw-r--r--sources/plugins/liststyle/lang/th.js2
-rw-r--r--sources/plugins/liststyle/lang/tr.js2
-rw-r--r--sources/plugins/liststyle/lang/tt.js2
-rw-r--r--sources/plugins/liststyle/lang/ug.js2
-rw-r--r--sources/plugins/liststyle/lang/uk.js2
-rw-r--r--sources/plugins/liststyle/lang/vi.js2
-rw-r--r--sources/plugins/liststyle/lang/zh-cn.js2
-rw-r--r--sources/plugins/liststyle/lang/zh.js2
-rw-r--r--sources/plugins/liststyle/plugin.js14
-rw-r--r--sources/plugins/magicline/dev/magicline.html2
-rw-r--r--sources/plugins/magicline/lang/af.js2
-rw-r--r--sources/plugins/magicline/lang/ar.js2
-rw-r--r--sources/plugins/magicline/lang/az.js8
-rw-r--r--sources/plugins/magicline/lang/bg.js2
-rw-r--r--sources/plugins/magicline/lang/ca.js2
-rw-r--r--sources/plugins/magicline/lang/cs.js2
-rw-r--r--sources/plugins/magicline/lang/cy.js2
-rw-r--r--sources/plugins/magicline/lang/da.js2
-rw-r--r--sources/plugins/magicline/lang/de-ch.js2
-rw-r--r--sources/plugins/magicline/lang/de.js2
-rw-r--r--sources/plugins/magicline/lang/el.js2
-rw-r--r--sources/plugins/magicline/lang/en-gb.js2
-rw-r--r--sources/plugins/magicline/lang/en.js2
-rw-r--r--sources/plugins/magicline/lang/eo.js2
-rw-r--r--sources/plugins/magicline/lang/es-mx.js8
-rw-r--r--sources/plugins/magicline/lang/es.js2
-rw-r--r--sources/plugins/magicline/lang/et.js2
-rw-r--r--sources/plugins/magicline/lang/eu.js2
-rw-r--r--sources/plugins/magicline/lang/fa.js2
-rw-r--r--sources/plugins/magicline/lang/fi.js2
-rw-r--r--sources/plugins/magicline/lang/fr-ca.js2
-rw-r--r--sources/plugins/magicline/lang/fr.js4
-rw-r--r--sources/plugins/magicline/lang/gl.js2
-rw-r--r--sources/plugins/magicline/lang/he.js2
-rw-r--r--sources/plugins/magicline/lang/hr.js2
-rw-r--r--sources/plugins/magicline/lang/hu.js2
-rw-r--r--sources/plugins/magicline/lang/id.js2
-rw-r--r--sources/plugins/magicline/lang/it.js2
-rw-r--r--sources/plugins/magicline/lang/ja.js2
-rw-r--r--sources/plugins/magicline/lang/km.js2
-rw-r--r--sources/plugins/magicline/lang/ko.js2
-rw-r--r--sources/plugins/magicline/lang/ku.js2
-rw-r--r--sources/plugins/magicline/lang/lv.js2
-rw-r--r--sources/plugins/magicline/lang/nb.js2
-rw-r--r--sources/plugins/magicline/lang/nl.js2
-rw-r--r--sources/plugins/magicline/lang/no.js2
-rw-r--r--sources/plugins/magicline/lang/oc.js8
-rw-r--r--sources/plugins/magicline/lang/pl.js2
-rw-r--r--sources/plugins/magicline/lang/pt-br.js2
-rw-r--r--sources/plugins/magicline/lang/pt.js4
-rw-r--r--sources/plugins/magicline/lang/ru.js2
-rw-r--r--sources/plugins/magicline/lang/si.js2
-rw-r--r--sources/plugins/magicline/lang/sk.js2
-rw-r--r--sources/plugins/magicline/lang/sl.js2
-rw-r--r--sources/plugins/magicline/lang/sq.js2
-rw-r--r--sources/plugins/magicline/lang/sv.js2
-rw-r--r--sources/plugins/magicline/lang/tr.js2
-rw-r--r--sources/plugins/magicline/lang/tt.js2
-rw-r--r--sources/plugins/magicline/lang/ug.js2
-rw-r--r--sources/plugins/magicline/lang/uk.js2
-rw-r--r--sources/plugins/magicline/lang/vi.js2
-rw-r--r--sources/plugins/magicline/lang/zh-cn.js2
-rw-r--r--sources/plugins/magicline/lang/zh.js2
-rw-r--r--sources/plugins/magicline/plugin.js16
-rw-r--r--sources/plugins/magicline/samples/magicline.html4
-rw-r--r--sources/plugins/maximize/icons/hidpi/maximize.pngbin2462 -> 1112 bytes
-rw-r--r--sources/plugins/maximize/icons/maximize.pngbin921 -> 461 bytes
-rw-r--r--sources/plugins/maximize/lang/af.js2
-rw-r--r--sources/plugins/maximize/lang/ar.js2
-rw-r--r--sources/plugins/maximize/lang/az.js8
-rw-r--r--sources/plugins/maximize/lang/bg.js2
-rw-r--r--sources/plugins/maximize/lang/bn.js2
-rw-r--r--sources/plugins/maximize/lang/bs.js2
-rw-r--r--sources/plugins/maximize/lang/ca.js2
-rw-r--r--sources/plugins/maximize/lang/cs.js2
-rw-r--r--sources/plugins/maximize/lang/cy.js2
-rw-r--r--sources/plugins/maximize/lang/da.js2
-rw-r--r--sources/plugins/maximize/lang/de-ch.js2
-rw-r--r--sources/plugins/maximize/lang/de.js2
-rw-r--r--sources/plugins/maximize/lang/el.js2
-rw-r--r--sources/plugins/maximize/lang/en-au.js2
-rw-r--r--sources/plugins/maximize/lang/en-ca.js2
-rw-r--r--sources/plugins/maximize/lang/en-gb.js2
-rw-r--r--sources/plugins/maximize/lang/en.js2
-rw-r--r--sources/plugins/maximize/lang/eo.js2
-rw-r--r--sources/plugins/maximize/lang/es-mx.js8
-rw-r--r--sources/plugins/maximize/lang/es.js2
-rw-r--r--sources/plugins/maximize/lang/et.js2
-rw-r--r--sources/plugins/maximize/lang/eu.js2
-rw-r--r--sources/plugins/maximize/lang/fa.js2
-rw-r--r--sources/plugins/maximize/lang/fi.js2
-rw-r--r--sources/plugins/maximize/lang/fo.js2
-rw-r--r--sources/plugins/maximize/lang/fr-ca.js2
-rw-r--r--sources/plugins/maximize/lang/fr.js4
-rw-r--r--sources/plugins/maximize/lang/gl.js2
-rw-r--r--sources/plugins/maximize/lang/gu.js2
-rw-r--r--sources/plugins/maximize/lang/he.js2
-rw-r--r--sources/plugins/maximize/lang/hi.js2
-rw-r--r--sources/plugins/maximize/lang/hr.js2
-rw-r--r--sources/plugins/maximize/lang/hu.js2
-rw-r--r--sources/plugins/maximize/lang/id.js2
-rw-r--r--sources/plugins/maximize/lang/is.js2
-rw-r--r--sources/plugins/maximize/lang/it.js2
-rw-r--r--sources/plugins/maximize/lang/ja.js2
-rw-r--r--sources/plugins/maximize/lang/ka.js2
-rw-r--r--sources/plugins/maximize/lang/km.js2
-rw-r--r--sources/plugins/maximize/lang/ko.js2
-rw-r--r--sources/plugins/maximize/lang/ku.js2
-rw-r--r--sources/plugins/maximize/lang/lt.js2
-rw-r--r--sources/plugins/maximize/lang/lv.js2
-rw-r--r--sources/plugins/maximize/lang/mk.js2
-rw-r--r--sources/plugins/maximize/lang/mn.js2
-rw-r--r--sources/plugins/maximize/lang/ms.js2
-rw-r--r--sources/plugins/maximize/lang/nb.js2
-rw-r--r--sources/plugins/maximize/lang/nl.js2
-rw-r--r--sources/plugins/maximize/lang/no.js2
-rw-r--r--sources/plugins/maximize/lang/oc.js8
-rw-r--r--sources/plugins/maximize/lang/pl.js2
-rw-r--r--sources/plugins/maximize/lang/pt-br.js2
-rw-r--r--sources/plugins/maximize/lang/pt.js2
-rw-r--r--sources/plugins/maximize/lang/ro.js2
-rw-r--r--sources/plugins/maximize/lang/ru.js2
-rw-r--r--sources/plugins/maximize/lang/si.js2
-rw-r--r--sources/plugins/maximize/lang/sk.js2
-rw-r--r--sources/plugins/maximize/lang/sl.js2
-rw-r--r--sources/plugins/maximize/lang/sq.js2
-rw-r--r--sources/plugins/maximize/lang/sr-latn.js2
-rw-r--r--sources/plugins/maximize/lang/sr.js2
-rw-r--r--sources/plugins/maximize/lang/sv.js2
-rw-r--r--sources/plugins/maximize/lang/th.js2
-rw-r--r--sources/plugins/maximize/lang/tr.js2
-rw-r--r--sources/plugins/maximize/lang/tt.js2
-rw-r--r--sources/plugins/maximize/lang/ug.js2
-rw-r--r--sources/plugins/maximize/lang/uk.js2
-rw-r--r--sources/plugins/maximize/lang/vi.js2
-rw-r--r--sources/plugins/maximize/lang/zh-cn.js2
-rw-r--r--sources/plugins/maximize/lang/zh.js2
-rw-r--r--sources/plugins/maximize/plugin.js34
-rw-r--r--sources/plugins/menu/plugin.js59
-rw-r--r--sources/plugins/notification/lang/az.js7
-rw-r--r--sources/plugins/notification/lang/ca.js7
-rw-r--r--sources/plugins/notification/lang/cs.js7
-rw-r--r--sources/plugins/notification/lang/da.js7
-rw-r--r--sources/plugins/notification/lang/de-ch.js7
-rw-r--r--sources/plugins/notification/lang/de.js7
-rw-r--r--sources/plugins/notification/lang/en.js7
-rw-r--r--sources/plugins/notification/lang/eo.js7
-rw-r--r--sources/plugins/notification/lang/es-mx.js7
-rw-r--r--sources/plugins/notification/lang/es.js7
-rw-r--r--sources/plugins/notification/lang/eu.js7
-rw-r--r--sources/plugins/notification/lang/fr.js7
-rw-r--r--sources/plugins/notification/lang/gl.js7
-rw-r--r--sources/plugins/notification/lang/hr.js7
-rw-r--r--sources/plugins/notification/lang/hu.js7
-rw-r--r--sources/plugins/notification/lang/id.js7
-rw-r--r--sources/plugins/notification/lang/it.js7
-rw-r--r--sources/plugins/notification/lang/ja.js7
-rw-r--r--sources/plugins/notification/lang/km.js7
-rw-r--r--sources/plugins/notification/lang/ko.js7
-rw-r--r--sources/plugins/notification/lang/ku.js7
-rw-r--r--sources/plugins/notification/lang/nb.js7
-rw-r--r--sources/plugins/notification/lang/nl.js7
-rw-r--r--sources/plugins/notification/lang/oc.js7
-rw-r--r--sources/plugins/notification/lang/pl.js7
-rw-r--r--sources/plugins/notification/lang/pt-br.js7
-rw-r--r--sources/plugins/notification/lang/pt.js7
-rw-r--r--sources/plugins/notification/lang/ru.js7
-rw-r--r--sources/plugins/notification/lang/sk.js7
-rw-r--r--sources/plugins/notification/lang/sv.js7
-rw-r--r--sources/plugins/notification/lang/tr.js7
-rw-r--r--sources/plugins/notification/lang/ug.js7
-rw-r--r--sources/plugins/notification/lang/uk.js7
-rw-r--r--sources/plugins/notification/lang/zh-cn.js7
-rw-r--r--sources/plugins/notification/lang/zh.js7
-rw-r--r--sources/plugins/notification/plugin.js929
-rw-r--r--sources/plugins/oembed/LICENSE.md21
-rw-r--r--sources/plugins/oembed/README.md201
-rw-r--r--sources/plugins/oembed/icons/hidpi/oembed.pngbin0 -> 1849 bytes
-rw-r--r--sources/plugins/oembed/icons/oembed.pngbin0 -> 3143 bytes
-rw-r--r--sources/plugins/oembed/lang/de.js23
-rw-r--r--sources/plugins/oembed/lang/en.js23
-rw-r--r--sources/plugins/oembed/lang/fr.js25
-rw-r--r--sources/plugins/oembed/lang/nl.js23
-rw-r--r--sources/plugins/oembed/lang/pl.js23
-rw-r--r--sources/plugins/oembed/lang/pt-br.js23
-rw-r--r--sources/plugins/oembed/lang/ru.js23
-rw-r--r--sources/plugins/oembed/lang/tr.js23
-rw-r--r--sources/plugins/oembed/libs/jquery.oembed.min.js1
-rw-r--r--sources/plugins/oembed/plugin.js446
-rw-r--r--sources/plugins/panel/plugin.js71
-rw-r--r--sources/plugins/popup/plugin.js4
-rw-r--r--sources/plugins/removeformat/icons/hidpi/removeformat.pngbin2119 -> 1219 bytes
-rw-r--r--sources/plugins/removeformat/icons/removeformat.pngbin871 -> 637 bytes
-rw-r--r--sources/plugins/removeformat/lang/af.js2
-rw-r--r--sources/plugins/removeformat/lang/ar.js2
-rw-r--r--sources/plugins/removeformat/lang/az.js7
-rw-r--r--sources/plugins/removeformat/lang/bg.js2
-rw-r--r--sources/plugins/removeformat/lang/bn.js4
-rw-r--r--sources/plugins/removeformat/lang/bs.js2
-rw-r--r--sources/plugins/removeformat/lang/ca.js2
-rw-r--r--sources/plugins/removeformat/lang/cs.js2
-rw-r--r--sources/plugins/removeformat/lang/cy.js2
-rw-r--r--sources/plugins/removeformat/lang/da.js2
-rw-r--r--sources/plugins/removeformat/lang/de-ch.js2
-rw-r--r--sources/plugins/removeformat/lang/de.js2
-rw-r--r--sources/plugins/removeformat/lang/el.js2
-rw-r--r--sources/plugins/removeformat/lang/en-au.js2
-rw-r--r--sources/plugins/removeformat/lang/en-ca.js2
-rw-r--r--sources/plugins/removeformat/lang/en-gb.js2
-rw-r--r--sources/plugins/removeformat/lang/en.js2
-rw-r--r--sources/plugins/removeformat/lang/eo.js2
-rw-r--r--sources/plugins/removeformat/lang/es-mx.js7
-rw-r--r--sources/plugins/removeformat/lang/es.js2
-rw-r--r--sources/plugins/removeformat/lang/et.js2
-rw-r--r--sources/plugins/removeformat/lang/eu.js2
-rw-r--r--sources/plugins/removeformat/lang/fa.js2
-rw-r--r--sources/plugins/removeformat/lang/fi.js2
-rw-r--r--sources/plugins/removeformat/lang/fo.js2
-rw-r--r--sources/plugins/removeformat/lang/fr-ca.js2
-rw-r--r--sources/plugins/removeformat/lang/fr.js2
-rw-r--r--sources/plugins/removeformat/lang/gl.js2
-rw-r--r--sources/plugins/removeformat/lang/gu.js2
-rw-r--r--sources/plugins/removeformat/lang/he.js2
-rw-r--r--sources/plugins/removeformat/lang/hi.js2
-rw-r--r--sources/plugins/removeformat/lang/hr.js2
-rw-r--r--sources/plugins/removeformat/lang/hu.js2
-rw-r--r--sources/plugins/removeformat/lang/id.js2
-rw-r--r--sources/plugins/removeformat/lang/is.js2
-rw-r--r--sources/plugins/removeformat/lang/it.js2
-rw-r--r--sources/plugins/removeformat/lang/ja.js2
-rw-r--r--sources/plugins/removeformat/lang/ka.js2
-rw-r--r--sources/plugins/removeformat/lang/km.js2
-rw-r--r--sources/plugins/removeformat/lang/ko.js2
-rw-r--r--sources/plugins/removeformat/lang/ku.js2
-rw-r--r--sources/plugins/removeformat/lang/lt.js2
-rw-r--r--sources/plugins/removeformat/lang/lv.js2
-rw-r--r--sources/plugins/removeformat/lang/mk.js2
-rw-r--r--sources/plugins/removeformat/lang/mn.js2
-rw-r--r--sources/plugins/removeformat/lang/ms.js2
-rw-r--r--sources/plugins/removeformat/lang/nb.js2
-rw-r--r--sources/plugins/removeformat/lang/nl.js2
-rw-r--r--sources/plugins/removeformat/lang/no.js2
-rw-r--r--sources/plugins/removeformat/lang/oc.js7
-rw-r--r--sources/plugins/removeformat/lang/pl.js2
-rw-r--r--sources/plugins/removeformat/lang/pt-br.js2
-rw-r--r--sources/plugins/removeformat/lang/pt.js4
-rw-r--r--sources/plugins/removeformat/lang/ro.js2
-rw-r--r--sources/plugins/removeformat/lang/ru.js2
-rw-r--r--sources/plugins/removeformat/lang/si.js2
-rw-r--r--sources/plugins/removeformat/lang/sk.js2
-rw-r--r--sources/plugins/removeformat/lang/sl.js2
-rw-r--r--sources/plugins/removeformat/lang/sq.js2
-rw-r--r--sources/plugins/removeformat/lang/sr-latn.js2
-rw-r--r--sources/plugins/removeformat/lang/sr.js2
-rw-r--r--sources/plugins/removeformat/lang/sv.js2
-rw-r--r--sources/plugins/removeformat/lang/th.js2
-rw-r--r--sources/plugins/removeformat/lang/tr.js2
-rw-r--r--sources/plugins/removeformat/lang/tt.js2
-rw-r--r--sources/plugins/removeformat/lang/ug.js2
-rw-r--r--sources/plugins/removeformat/lang/uk.js2
-rw-r--r--sources/plugins/removeformat/lang/vi.js2
-rw-r--r--sources/plugins/removeformat/lang/zh-cn.js2
-rw-r--r--sources/plugins/removeformat/lang/zh.js2
-rw-r--r--sources/plugins/removeformat/plugin.js6
-rw-r--r--sources/plugins/resize/plugin.js6
-rw-r--r--sources/plugins/richcombo/plugin.js21
-rw-r--r--sources/plugins/showborders/plugin.js2
-rw-r--r--sources/plugins/sourcearea/icons/hidpi/source-rtl.pngbin1968 -> 1018 bytes
-rw-r--r--sources/plugins/sourcearea/icons/hidpi/source.pngbin1999 -> 1041 bytes
-rw-r--r--sources/plugins/sourcearea/icons/source-rtl.pngbin762 -> 565 bytes
-rw-r--r--sources/plugins/sourcearea/icons/source.pngbin764 -> 571 bytes
-rw-r--r--sources/plugins/sourcearea/lang/af.js2
-rw-r--r--sources/plugins/sourcearea/lang/ar.js2
-rw-r--r--sources/plugins/sourcearea/lang/az.js7
-rw-r--r--sources/plugins/sourcearea/lang/bg.js2
-rw-r--r--sources/plugins/sourcearea/lang/bn.js4
-rw-r--r--sources/plugins/sourcearea/lang/bs.js2
-rw-r--r--sources/plugins/sourcearea/lang/ca.js2
-rw-r--r--sources/plugins/sourcearea/lang/cs.js2
-rw-r--r--sources/plugins/sourcearea/lang/cy.js2
-rw-r--r--sources/plugins/sourcearea/lang/da.js2
-rw-r--r--sources/plugins/sourcearea/lang/de-ch.js2
-rw-r--r--sources/plugins/sourcearea/lang/de.js2
-rw-r--r--sources/plugins/sourcearea/lang/el.js2
-rw-r--r--sources/plugins/sourcearea/lang/en-au.js2
-rw-r--r--sources/plugins/sourcearea/lang/en-ca.js2
-rw-r--r--sources/plugins/sourcearea/lang/en-gb.js2
-rw-r--r--sources/plugins/sourcearea/lang/en.js2
-rw-r--r--sources/plugins/sourcearea/lang/eo.js2
-rw-r--r--sources/plugins/sourcearea/lang/es-mx.js7
-rw-r--r--sources/plugins/sourcearea/lang/es.js2
-rw-r--r--sources/plugins/sourcearea/lang/et.js2
-rw-r--r--sources/plugins/sourcearea/lang/eu.js2
-rw-r--r--sources/plugins/sourcearea/lang/fa.js2
-rw-r--r--sources/plugins/sourcearea/lang/fi.js2
-rw-r--r--sources/plugins/sourcearea/lang/fo.js2
-rw-r--r--sources/plugins/sourcearea/lang/fr-ca.js2
-rw-r--r--sources/plugins/sourcearea/lang/fr.js2
-rw-r--r--sources/plugins/sourcearea/lang/gl.js2
-rw-r--r--sources/plugins/sourcearea/lang/gu.js2
-rw-r--r--sources/plugins/sourcearea/lang/he.js2
-rw-r--r--sources/plugins/sourcearea/lang/hi.js2
-rw-r--r--sources/plugins/sourcearea/lang/hr.js2
-rw-r--r--sources/plugins/sourcearea/lang/hu.js2
-rw-r--r--sources/plugins/sourcearea/lang/id.js2
-rw-r--r--sources/plugins/sourcearea/lang/is.js2
-rw-r--r--sources/plugins/sourcearea/lang/it.js2
-rw-r--r--sources/plugins/sourcearea/lang/ja.js2
-rw-r--r--sources/plugins/sourcearea/lang/ka.js2
-rw-r--r--sources/plugins/sourcearea/lang/km.js2
-rw-r--r--sources/plugins/sourcearea/lang/ko.js2
-rw-r--r--sources/plugins/sourcearea/lang/ku.js2
-rw-r--r--sources/plugins/sourcearea/lang/lt.js2
-rw-r--r--sources/plugins/sourcearea/lang/lv.js2
-rw-r--r--sources/plugins/sourcearea/lang/mk.js2
-rw-r--r--sources/plugins/sourcearea/lang/mn.js2
-rw-r--r--sources/plugins/sourcearea/lang/ms.js2
-rw-r--r--sources/plugins/sourcearea/lang/nb.js2
-rw-r--r--sources/plugins/sourcearea/lang/nl.js2
-rw-r--r--sources/plugins/sourcearea/lang/no.js2
-rw-r--r--sources/plugins/sourcearea/lang/oc.js7
-rw-r--r--sources/plugins/sourcearea/lang/pl.js2
-rw-r--r--sources/plugins/sourcearea/lang/pt-br.js2
-rw-r--r--sources/plugins/sourcearea/lang/pt.js2
-rw-r--r--sources/plugins/sourcearea/lang/ro.js2
-rw-r--r--sources/plugins/sourcearea/lang/ru.js2
-rw-r--r--sources/plugins/sourcearea/lang/si.js2
-rw-r--r--sources/plugins/sourcearea/lang/sk.js2
-rw-r--r--sources/plugins/sourcearea/lang/sl.js2
-rw-r--r--sources/plugins/sourcearea/lang/sq.js2
-rw-r--r--sources/plugins/sourcearea/lang/sr-latn.js2
-rw-r--r--sources/plugins/sourcearea/lang/sr.js2
-rw-r--r--sources/plugins/sourcearea/lang/sv.js2
-rw-r--r--sources/plugins/sourcearea/lang/th.js2
-rw-r--r--sources/plugins/sourcearea/lang/tr.js2
-rw-r--r--sources/plugins/sourcearea/lang/tt.js2
-rw-r--r--sources/plugins/sourcearea/lang/ug.js2
-rw-r--r--sources/plugins/sourcearea/lang/uk.js2
-rw-r--r--sources/plugins/sourcearea/lang/vi.js2
-rw-r--r--sources/plugins/sourcearea/lang/zh-cn.js2
-rw-r--r--sources/plugins/sourcearea/lang/zh.js2
-rw-r--r--sources/plugins/sourcearea/plugin.js10
-rw-r--r--sources/plugins/tab/plugin.js2
-rw-r--r--sources/plugins/toolbar/lang/af.js2
-rw-r--r--sources/plugins/toolbar/lang/ar.js2
-rw-r--r--sources/plugins/toolbar/lang/az.js22
-rw-r--r--sources/plugins/toolbar/lang/bg.js2
-rw-r--r--sources/plugins/toolbar/lang/bn.js2
-rw-r--r--sources/plugins/toolbar/lang/bs.js2
-rw-r--r--sources/plugins/toolbar/lang/ca.js2
-rw-r--r--sources/plugins/toolbar/lang/cs.js2
-rw-r--r--sources/plugins/toolbar/lang/cy.js2
-rw-r--r--sources/plugins/toolbar/lang/da.js2
-rw-r--r--sources/plugins/toolbar/lang/de-ch.js2
-rw-r--r--sources/plugins/toolbar/lang/de.js2
-rw-r--r--sources/plugins/toolbar/lang/el.js2
-rw-r--r--sources/plugins/toolbar/lang/en-au.js2
-rw-r--r--sources/plugins/toolbar/lang/en-ca.js2
-rw-r--r--sources/plugins/toolbar/lang/en-gb.js2
-rw-r--r--sources/plugins/toolbar/lang/en.js2
-rw-r--r--sources/plugins/toolbar/lang/eo.js2
-rw-r--r--sources/plugins/toolbar/lang/es-mx.js22
-rw-r--r--sources/plugins/toolbar/lang/es.js2
-rw-r--r--sources/plugins/toolbar/lang/et.js2
-rw-r--r--sources/plugins/toolbar/lang/eu.js2
-rw-r--r--sources/plugins/toolbar/lang/fa.js2
-rw-r--r--sources/plugins/toolbar/lang/fi.js2
-rw-r--r--sources/plugins/toolbar/lang/fo.js2
-rw-r--r--sources/plugins/toolbar/lang/fr-ca.js2
-rw-r--r--sources/plugins/toolbar/lang/fr.js6
-rw-r--r--sources/plugins/toolbar/lang/gl.js2
-rw-r--r--sources/plugins/toolbar/lang/gu.js2
-rw-r--r--sources/plugins/toolbar/lang/he.js2
-rw-r--r--sources/plugins/toolbar/lang/hi.js2
-rw-r--r--sources/plugins/toolbar/lang/hr.js2
-rw-r--r--sources/plugins/toolbar/lang/hu.js2
-rw-r--r--sources/plugins/toolbar/lang/id.js2
-rw-r--r--sources/plugins/toolbar/lang/is.js2
-rw-r--r--sources/plugins/toolbar/lang/it.js2
-rw-r--r--sources/plugins/toolbar/lang/ja.js2
-rw-r--r--sources/plugins/toolbar/lang/ka.js2
-rw-r--r--sources/plugins/toolbar/lang/km.js2
-rw-r--r--sources/plugins/toolbar/lang/ko.js2
-rw-r--r--sources/plugins/toolbar/lang/ku.js2
-rw-r--r--sources/plugins/toolbar/lang/lt.js2
-rw-r--r--sources/plugins/toolbar/lang/lv.js2
-rw-r--r--sources/plugins/toolbar/lang/mk.js2
-rw-r--r--sources/plugins/toolbar/lang/mn.js2
-rw-r--r--sources/plugins/toolbar/lang/ms.js2
-rw-r--r--sources/plugins/toolbar/lang/nb.js2
-rw-r--r--sources/plugins/toolbar/lang/nl.js2
-rw-r--r--sources/plugins/toolbar/lang/no.js2
-rw-r--r--sources/plugins/toolbar/lang/oc.js22
-rw-r--r--sources/plugins/toolbar/lang/pl.js2
-rw-r--r--sources/plugins/toolbar/lang/pt-br.js2
-rw-r--r--sources/plugins/toolbar/lang/pt.js6
-rw-r--r--sources/plugins/toolbar/lang/ro.js2
-rw-r--r--sources/plugins/toolbar/lang/ru.js2
-rw-r--r--sources/plugins/toolbar/lang/si.js2
-rw-r--r--sources/plugins/toolbar/lang/sk.js2
-rw-r--r--sources/plugins/toolbar/lang/sl.js30
-rw-r--r--sources/plugins/toolbar/lang/sq.js2
-rw-r--r--sources/plugins/toolbar/lang/sr-latn.js2
-rw-r--r--sources/plugins/toolbar/lang/sr.js2
-rw-r--r--sources/plugins/toolbar/lang/sv.js4
-rw-r--r--sources/plugins/toolbar/lang/th.js2
-rw-r--r--sources/plugins/toolbar/lang/tr.js2
-rw-r--r--sources/plugins/toolbar/lang/tt.js2
-rw-r--r--sources/plugins/toolbar/lang/ug.js2
-rw-r--r--sources/plugins/toolbar/lang/uk.js2
-rw-r--r--sources/plugins/toolbar/lang/vi.js2
-rw-r--r--sources/plugins/toolbar/lang/zh-cn.js2
-rw-r--r--sources/plugins/toolbar/lang/zh.js2
-rw-r--r--sources/plugins/toolbar/plugin.js23
-rw-r--r--sources/plugins/toolbar/samples/toolbar.html4
-rw-r--r--sources/plugins/widget/dev/assets/contents.css23
-rw-r--r--sources/plugins/widget/dev/assets/sample.jpgbin0 -> 17932 bytes
-rw-r--r--sources/plugins/widget/dev/assets/simplebox/contents.css36
-rw-r--r--sources/plugins/widget/dev/assets/simplebox/dialogs/simplebox.js51
-rw-r--r--sources/plugins/widget/dev/assets/simplebox/icons/simplebox.pngbin0 -> 286 bytes
-rw-r--r--sources/plugins/widget/dev/assets/simplebox/plugin.js114
-rw-r--r--sources/plugins/widget/dev/console.js131
-rw-r--r--sources/plugins/widget/dev/nestedwidgets.html134
-rw-r--r--sources/plugins/widget/dev/widgetstyles.html144
-rw-r--r--sources/plugins/widget/images/handle.pngbin0 -> 220 bytes
-rw-r--r--sources/plugins/widget/lang/af.js8
-rw-r--r--sources/plugins/widget/lang/ar.js8
-rw-r--r--sources/plugins/widget/lang/az.js8
-rw-r--r--sources/plugins/widget/lang/bg.js8
-rw-r--r--sources/plugins/widget/lang/ca.js8
-rw-r--r--sources/plugins/widget/lang/cs.js8
-rw-r--r--sources/plugins/widget/lang/cy.js8
-rw-r--r--sources/plugins/widget/lang/da.js8
-rw-r--r--sources/plugins/widget/lang/de-ch.js8
-rw-r--r--sources/plugins/widget/lang/de.js8
-rw-r--r--sources/plugins/widget/lang/el.js8
-rw-r--r--sources/plugins/widget/lang/en-gb.js8
-rw-r--r--sources/plugins/widget/lang/en.js8
-rw-r--r--sources/plugins/widget/lang/eo.js8
-rw-r--r--sources/plugins/widget/lang/es-mx.js8
-rw-r--r--sources/plugins/widget/lang/es.js8
-rw-r--r--sources/plugins/widget/lang/eu.js8
-rw-r--r--sources/plugins/widget/lang/fa.js8
-rw-r--r--sources/plugins/widget/lang/fi.js8
-rw-r--r--sources/plugins/widget/lang/fr.js8
-rw-r--r--sources/plugins/widget/lang/gl.js8
-rw-r--r--sources/plugins/widget/lang/he.js8
-rw-r--r--sources/plugins/widget/lang/hr.js8
-rw-r--r--sources/plugins/widget/lang/hu.js8
-rw-r--r--sources/plugins/widget/lang/id.js8
-rw-r--r--sources/plugins/widget/lang/it.js8
-rw-r--r--sources/plugins/widget/lang/ja.js8
-rw-r--r--sources/plugins/widget/lang/km.js8
-rw-r--r--sources/plugins/widget/lang/ko.js8
-rw-r--r--sources/plugins/widget/lang/ku.js8
-rw-r--r--sources/plugins/widget/lang/lv.js8
-rw-r--r--sources/plugins/widget/lang/nb.js8
-rw-r--r--sources/plugins/widget/lang/nl.js8
-rw-r--r--sources/plugins/widget/lang/no.js8
-rw-r--r--sources/plugins/widget/lang/oc.js8
-rw-r--r--sources/plugins/widget/lang/pl.js8
-rw-r--r--sources/plugins/widget/lang/pt-br.js8
-rw-r--r--sources/plugins/widget/lang/pt.js8
-rw-r--r--sources/plugins/widget/lang/ru.js8
-rw-r--r--sources/plugins/widget/lang/sk.js8
-rw-r--r--sources/plugins/widget/lang/sl.js8
-rw-r--r--sources/plugins/widget/lang/sq.js8
-rw-r--r--sources/plugins/widget/lang/sv.js8
-rw-r--r--sources/plugins/widget/lang/tr.js8
-rw-r--r--sources/plugins/widget/lang/tt.js8
-rw-r--r--sources/plugins/widget/lang/ug.js8
-rw-r--r--sources/plugins/widget/lang/uk.js8
-rw-r--r--sources/plugins/widget/lang/vi.js8
-rw-r--r--sources/plugins/widget/lang/zh-cn.js8
-rw-r--r--sources/plugins/widget/lang/zh.js8
-rw-r--r--sources/plugins/widget/plugin.js4147
-rw-r--r--sources/plugins/widgetselection/plugin.js366
-rw-r--r--sources/plugins/wysiwygarea/plugin.js63
-rw-r--r--sources/plugins/wysiwygarea/samples/fullpage.html4
-rw-r--r--sources/samples/css/samples.css62
-rw-r--r--sources/samples/index.html6
-rw-r--r--sources/samples/js/sample.js2
-rw-r--r--sources/samples/js/sf.js4
-rw-r--r--sources/samples/old/ajax.html4
-rw-r--r--sources/samples/old/api.html4
-rw-r--r--sources/samples/old/appendto.html4
-rw-r--r--sources/samples/old/assets/outputxhtml/outputxhtml.css2
-rw-r--r--sources/samples/old/assets/posteddata.php4
-rw-r--r--sources/samples/old/assets/uilanguages/languages.js5
-rw-r--r--sources/samples/old/datafiltering.html8
-rw-r--r--sources/samples/old/divreplace.html4
-rw-r--r--sources/samples/old/index.html4
-rw-r--r--sources/samples/old/inlineall.html4
-rw-r--r--sources/samples/old/inlinebycode.html4
-rw-r--r--sources/samples/old/inlinetextarea.html4
-rw-r--r--sources/samples/old/jquery.html4
-rw-r--r--sources/samples/old/readonly.html4
-rw-r--r--sources/samples/old/replacebyclass.html4
-rw-r--r--sources/samples/old/replacebycode.html4
-rw-r--r--sources/samples/old/sample.css2
-rw-r--r--sources/samples/old/sample.js2
-rw-r--r--sources/samples/old/sample_posteddata.php2
-rw-r--r--sources/samples/old/tabindex.html4
-rw-r--r--sources/samples/old/uicolor.html4
-rw-r--r--sources/samples/old/uilanguages.html4
-rw-r--r--sources/samples/old/xhtmlstyle.html4
-rw-r--r--sources/samples/toolbarconfigurator/index.html6
-rw-r--r--sources/samples/toolbarconfigurator/less/base.less2
-rw-r--r--sources/samples/toolbarconfigurator/less/toolbarmodifier.less2
-rw-r--r--sources/samples/toolbarconfigurator/lib/codemirror/codemirror.js16
-rw-r--r--sources/skins/moono/colorpanel.css2
-rw-r--r--sources/skins/moono/dev/locations.json5
-rw-r--r--sources/skins/moono/dialog.css4
-rw-r--r--sources/skins/moono/dialog_ie.css2
-rw-r--r--sources/skins/moono/dialog_ie7.css2
-rw-r--r--sources/skins/moono/dialog_ie8.css2
-rw-r--r--sources/skins/moono/dialog_iequirks.css2
-rw-r--r--sources/skins/moono/editor.css2
-rw-r--r--sources/skins/moono/editor_gecko.css2
-rw-r--r--sources/skins/moono/editor_ie.css2
-rw-r--r--sources/skins/moono/editor_ie7.css2
-rw-r--r--sources/skins/moono/editor_ie8.css2
-rw-r--r--sources/skins/moono/editor_iequirks.css2
-rw-r--r--sources/skins/moono/elementspath.css2
-rw-r--r--sources/skins/moono/icons/about.pngbin0 -> 1101 bytes
-rw-r--r--sources/skins/moono/icons/anchor-rtl.pngbin0 -> 893 bytes
-rw-r--r--sources/skins/moono/icons/anchor.pngbin0 -> 913 bytes
-rw-r--r--sources/skins/moono/icons/bgcolor.pngbin0 -> 1005 bytes
-rw-r--r--sources/skins/moono/icons/bidiltr.pngbin0 -> 954 bytes
-rw-r--r--sources/skins/moono/icons/bidirtl.pngbin0 -> 986 bytes
-rw-r--r--sources/skins/moono/icons/blockquote.pngbin0 -> 1126 bytes
-rw-r--r--sources/skins/moono/icons/bold.pngbin0 -> 985 bytes
-rw-r--r--sources/skins/moono/icons/bulletedlist-rtl.pngbin0 -> 814 bytes
-rw-r--r--sources/skins/moono/icons/bulletedlist.pngbin0 -> 811 bytes
-rw-r--r--sources/skins/moono/icons/button.pngbin0 -> 637 bytes
-rw-r--r--sources/skins/moono/icons/checkbox.pngbin0 -> 1005 bytes
-rw-r--r--sources/skins/moono/icons/codesnippet.pngbin0 -> 827 bytes
-rw-r--r--sources/skins/moono/icons/copy-rtl.pngbin0 -> 1011 bytes
-rw-r--r--sources/skins/moono/icons/copy.pngbin0 -> 1011 bytes
-rw-r--r--sources/skins/moono/icons/copyformatting.pngbin0 -> 1293 bytes
-rw-r--r--sources/skins/moono/icons/creatediv.pngbin0 -> 1128 bytes
-rw-r--r--sources/skins/moono/icons/cut-rtl.pngbin0 -> 1177 bytes
-rw-r--r--sources/skins/moono/icons/cut.pngbin0 -> 1177 bytes
-rw-r--r--sources/skins/moono/icons/docprops-rtl.pngbin0 -> 1093 bytes
-rw-r--r--sources/skins/moono/icons/docprops.pngbin0 -> 1078 bytes
-rw-r--r--sources/skins/moono/icons/find-rtl.pngbin0 -> 1132 bytes
-rw-r--r--sources/skins/moono/icons/find.pngbin0 -> 1132 bytes
-rw-r--r--sources/skins/moono/icons/flash.pngbin0 -> 1162 bytes
-rw-r--r--sources/skins/moono/icons/form.pngbin0 -> 819 bytes
-rw-r--r--sources/skins/moono/icons/hiddenfield.pngbin0 -> 1092 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/.DS_Storebin0 -> 12292 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/about.pngbin0 -> 2197 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/anchor-rtl.pngbin0 -> 1474 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/anchor.pngbin0 -> 1527 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/bgcolor.pngbin0 -> 2169 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/bidiltr.pngbin0 -> 1672 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/bidirtl.pngbin0 -> 1702 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/blockquote.pngbin0 -> 2421 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/bold.pngbin0 -> 1987 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/bulletedlist-rtl.pngbin0 -> 1659 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/bulletedlist.pngbin0 -> 1639 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/button.pngbin0 -> 988 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/checkbox.pngbin0 -> 1905 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/codesnippet.pngbin0 -> 1893 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/copy-rtl.pngbin0 -> 1905 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/copy.pngbin0 -> 1905 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/copyformatting.pngbin0 -> 1642 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/creatediv.pngbin0 -> 3049 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/cut-rtl.pngbin0 -> 2855 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/cut.pngbin0 -> 2855 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/docprops-rtl.pngbin0 -> 2179 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/docprops.pngbin0 -> 2228 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/find-rtl.pngbin0 -> 2407 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/find.pngbin0 -> 2407 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/flash.pngbin0 -> 2614 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/form.pngbin0 -> 1187 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/hiddenfield.pngbin0 -> 2346 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/horizontalrule.pngbin0 -> 894 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/iframe.pngbin0 -> 3099 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/image.pngbin0 -> 1782 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/imagebutton.pngbin0 -> 1462 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/indent-rtl.pngbin0 -> 1988 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/indent.pngbin0 -> 2024 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/italic.pngbin0 -> 1687 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/justifyblock.pngbin0 -> 830 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/justifycenter.pngbin0 -> 1372 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/justifyleft.pngbin0 -> 1092 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/justifyright.pngbin0 -> 1094 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/language.pngbin0 -> 1874 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/link.pngbin0 -> 1627 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/maximize.pngbin0 -> 2395 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/newpage-rtl.pngbin0 -> 1197 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/newpage.pngbin0 -> 1285 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/numberedlist-rtl.pngbin0 -> 1471 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/numberedlist.pngbin0 -> 1523 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/outdent-rtl.pngbin0 -> 1976 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/outdent.pngbin0 -> 1928 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/pagebreak-rtl.pngbin0 -> 1379 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/pagebreak.pngbin0 -> 1351 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/paste-rtl.pngbin0 -> 1956 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/paste.pngbin0 -> 1956 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/pastefromword-rtl.pngbin0 -> 2071 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/pastefromword.pngbin0 -> 2115 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/pastetext-rtl.pngbin0 -> 1964 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/pastetext.pngbin0 -> 1963 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/placeholder.pngbin0 -> 1812 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/preview-rtl.pngbin0 -> 2336 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/preview.pngbin0 -> 2409 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/print.pngbin0 -> 1758 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/radio.pngbin0 -> 2676 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/redo-rtl.pngbin0 -> 1868 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/redo.pngbin0 -> 1885 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/removeformat.pngbin0 -> 2358 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/replace.pngbin0 -> 2822 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/save.pngbin0 -> 1678 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/scayt.pngbin0 -> 2854 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/select-rtl.pngbin0 -> 1601 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/select.pngbin0 -> 1608 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/selectall.pngbin0 -> 1149 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/showblocks-rtl.pngbin0 -> 2084 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/showblocks.pngbin0 -> 2030 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/smiley.pngbin0 -> 3096 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/source-rtl.pngbin0 -> 1955 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/source.pngbin0 -> 2035 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/sourcedialog-rtl.pngbin0 -> 1955 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/sourcedialog.pngbin0 -> 2035 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/specialchar.pngbin0 -> 2707 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/spellchecker.pngbin0 -> 2854 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/strike.pngbin0 -> 2256 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/subscript.pngbin0 -> 2025 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/superscript.pngbin0 -> 2029 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/table.pngbin0 -> 1201 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/templates-rtl.pngbin0 -> 1515 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/templates.pngbin0 -> 1515 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/textarea-rtl.pngbin0 -> 1988 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/textarea.pngbin0 -> 1857 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/textcolor.pngbin0 -> 1961 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/textfield-rtl.pngbin0 -> 1501 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/textfield.pngbin0 -> 1501 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/uicolor.pngbin0 -> 2234 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/underline.pngbin0 -> 1739 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/undo-rtl.pngbin0 -> 1885 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/undo.pngbin0 -> 1868 bytes
-rw-r--r--sources/skins/moono/icons/hidpi/unlink.pngbin0 -> 2293 bytes
-rw-r--r--sources/skins/moono/icons/horizontalrule.pngbin0 -> 560 bytes
-rw-r--r--sources/skins/moono/icons/iframe.pngbin0 -> 1227 bytes
-rw-r--r--sources/skins/moono/icons/image.pngbin0 -> 973 bytes
-rw-r--r--sources/skins/moono/icons/imagebutton.pngbin0 -> 813 bytes
-rw-r--r--sources/skins/moono/icons/indent-rtl.pngbin0 -> 959 bytes
-rw-r--r--sources/skins/moono/icons/indent.pngbin0 -> 967 bytes
-rw-r--r--sources/skins/moono/icons/italic.pngbin0 -> 932 bytes
-rw-r--r--sources/skins/moono/icons/justifyblock.pngbin0 -> 610 bytes
-rw-r--r--sources/skins/moono/icons/justifycenter.pngbin0 -> 830 bytes
-rw-r--r--sources/skins/moono/icons/justifyleft.pngbin0 -> 715 bytes
-rw-r--r--sources/skins/moono/icons/justifyright.pngbin0 -> 751 bytes
-rw-r--r--sources/skins/moono/icons/language.pngbin0 -> 885 bytes
-rw-r--r--sources/skins/moono/icons/link.pngbin0 -> 811 bytes
-rw-r--r--sources/skins/moono/icons/maximize.pngbin0 -> 1085 bytes
-rw-r--r--sources/skins/moono/icons/newpage-rtl.pngbin0 -> 858 bytes
-rw-r--r--sources/skins/moono/icons/newpage.pngbin0 -> 873 bytes
-rw-r--r--sources/skins/moono/icons/numberedlist-rtl.pngbin0 -> 821 bytes
-rw-r--r--sources/skins/moono/icons/numberedlist.pngbin0 -> 849 bytes
-rw-r--r--sources/skins/moono/icons/outdent-rtl.pngbin0 -> 959 bytes
-rw-r--r--sources/skins/moono/icons/outdent.pngbin0 -> 924 bytes
-rw-r--r--sources/skins/moono/icons/pagebreak-rtl.pngbin0 -> 804 bytes
-rw-r--r--sources/skins/moono/icons/pagebreak.pngbin0 -> 783 bytes
-rw-r--r--sources/skins/moono/icons/paste-rtl.pngbin0 -> 969 bytes
-rw-r--r--sources/skins/moono/icons/paste.pngbin0 -> 969 bytes
-rw-r--r--sources/skins/moono/icons/pastefromword-rtl.pngbin0 -> 967 bytes
-rw-r--r--sources/skins/moono/icons/pastefromword.pngbin0 -> 991 bytes
-rw-r--r--sources/skins/moono/icons/pastetext-rtl.pngbin0 -> 969 bytes
-rw-r--r--sources/skins/moono/icons/pastetext.pngbin0 -> 989 bytes
-rw-r--r--sources/skins/moono/icons/placeholder.pngbin0 -> 865 bytes
-rw-r--r--sources/skins/moono/icons/preview-rtl.pngbin0 -> 1077 bytes
-rw-r--r--sources/skins/moono/icons/preview.pngbin0 -> 1077 bytes
-rw-r--r--sources/skins/moono/icons/print.pngbin0 -> 920 bytes
-rw-r--r--sources/skins/moono/icons/radio.pngbin0 -> 1092 bytes
-rw-r--r--sources/skins/moono/icons/redo-rtl.pngbin0 -> 1012 bytes
-rw-r--r--sources/skins/moono/icons/redo.pngbin0 -> 1000 bytes
-rw-r--r--sources/skins/moono/icons/removeformat.pngbin0 -> 1079 bytes
-rw-r--r--sources/skins/moono/icons/replace.pngbin0 -> 1143 bytes
-rw-r--r--sources/skins/moono/icons/save.pngbin0 -> 896 bytes
-rw-r--r--sources/skins/moono/icons/scayt.pngbin0 -> 1094 bytes
-rw-r--r--sources/skins/moono/icons/select-rtl.pngbin0 -> 889 bytes
-rw-r--r--sources/skins/moono/icons/select.pngbin0 -> 882 bytes
-rw-r--r--sources/skins/moono/icons/selectall.pngbin0 -> 813 bytes
-rw-r--r--sources/skins/moono/icons/showblocks-rtl.pngbin0 -> 1000 bytes
-rw-r--r--sources/skins/moono/icons/showblocks.pngbin0 -> 1004 bytes
-rw-r--r--sources/skins/moono/icons/smiley.pngbin0 -> 1130 bytes
-rw-r--r--sources/skins/moono/icons/source-rtl.pngbin0 -> 1002 bytes
-rw-r--r--sources/skins/moono/icons/source.pngbin0 -> 988 bytes
-rw-r--r--sources/skins/moono/icons/sourcedialog-rtl.pngbin0 -> 1002 bytes
-rw-r--r--sources/skins/moono/icons/sourcedialog.pngbin0 -> 988 bytes
-rw-r--r--sources/skins/moono/icons/specialchar.pngbin0 -> 1156 bytes
-rw-r--r--sources/skins/moono/icons/spellchecker.pngbin0 -> 1094 bytes
-rw-r--r--sources/skins/moono/icons/strike.pngbin0 -> 1016 bytes
-rw-r--r--sources/skins/moono/icons/subscript.pngbin0 -> 978 bytes
-rw-r--r--sources/skins/moono/icons/superscript.pngbin0 -> 1015 bytes
-rw-r--r--sources/skins/moono/icons/table.pngbin0 -> 664 bytes
-rw-r--r--sources/skins/moono/icons/templates-rtl.pngbin0 -> 857 bytes
-rw-r--r--sources/skins/moono/icons/templates.pngbin0 -> 857 bytes
-rw-r--r--sources/skins/moono/icons/textarea-rtl.pngbin0 -> 986 bytes
-rw-r--r--sources/skins/moono/icons/textarea.pngbin0 -> 982 bytes
-rw-r--r--sources/skins/moono/icons/textcolor.pngbin0 -> 944 bytes
-rw-r--r--sources/skins/moono/icons/textfield-rtl.pngbin0 -> 859 bytes
-rw-r--r--sources/skins/moono/icons/textfield.pngbin0 -> 859 bytes
-rw-r--r--sources/skins/moono/icons/uicolor.pngbin0 -> 1090 bytes
-rw-r--r--sources/skins/moono/icons/underline.pngbin0 -> 895 bytes
-rw-r--r--sources/skins/moono/icons/undo-rtl.pngbin0 -> 1000 bytes
-rw-r--r--sources/skins/moono/icons/undo.pngbin0 -> 1011 bytes
-rw-r--r--sources/skins/moono/icons/unlink.pngbin0 -> 996 bytes
-rw-r--r--sources/skins/moono/images/anchor.pngbin0 -> 929 bytes
-rw-r--r--sources/skins/moono/images/close.pngbin468 -> 869 bytes
-rw-r--r--sources/skins/moono/images/hidpi/anchor.pngbin0 -> 1510 bytes
-rw-r--r--sources/skins/moono/images/hidpi/close.pngbin1271 -> 1732 bytes
-rw-r--r--sources/skins/moono/images/hidpi/lock-open.pngbin1329 -> 1582 bytes
-rw-r--r--sources/skins/moono/images/hidpi/lock.pngbin1299 -> 1644 bytes
-rw-r--r--sources/skins/moono/images/hidpi/refresh.pngbin1842 -> 2311 bytes
-rw-r--r--sources/skins/moono/images/lock-open.pngbin349 -> 801 bytes
-rw-r--r--sources/skins/moono/images/lock.pngbin475 -> 849 bytes
-rw-r--r--sources/skins/moono/images/refresh.pngbin422 -> 1050 bytes
-rw-r--r--sources/skins/moono/mainui.css2
-rw-r--r--sources/skins/moono/menu.css8
-rw-r--r--sources/skins/moono/notification.css2
-rw-r--r--sources/skins/moono/panel.css2
-rw-r--r--sources/skins/moono/presets.css2
-rw-r--r--sources/skins/moono/readme.md6
-rw-r--r--sources/skins/moono/reset.css2
-rw-r--r--sources/skins/moono/richcombo.css2
-rw-r--r--sources/skins/moono/skin.js53
-rw-r--r--sources/skins/moono/toolbar.css2
-rw-r--r--sources/styles.js58
2241 files changed, 25621 insertions, 4658 deletions
diff --git a/build-config.js b/build-config.js
index 390d131..207d280 100644
--- a/build-config.js
+++ b/build-config.js
@@ -1,55 +1,57 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
6/** 6/**
7 * This file was added automatically by CKEditor builder. 7 * This file was added automatically by CKEditor builder.
8 * You may re-use it at any time to build CKEditor again. 8 * You may re-use it at any time to build CKEditor again.
9 * 9 *
10 * If you would like to build CKEditor online again 10 * If you would like to build CKEditor online again
11 * (for example to upgrade), visit one the following links: 11 * (for example to upgrade), visit one the following links:
12 * 12 *
13 * (1) http://ckeditor.com/builder 13 * (1) http://ckeditor.com/builder
14 * Visit online builder to build CKEditor from scratch. 14 * Visit online builder to build CKEditor from scratch.
15 * 15 *
16 * (2) http://ckeditor.com/builder/b1e1d617d24d65f0d8dbe476718f9ee1 16 * (2) http://ckeditor.com/builder/9323150a85589a6899021c19376669e6
17 * Visit online builder to build CKEditor, starting with the same setup as before. 17 * Visit online builder to build CKEditor, starting with the same setup as before.
18 * 18 *
19 * (3) http://ckeditor.com/builder/download/b1e1d617d24d65f0d8dbe476718f9ee1 19 * (3) http://ckeditor.com/builder/download/9323150a85589a6899021c19376669e6
20 * Straight download link to the latest version of CKEditor (Optimized) with the same setup as before. 20 * Straight download link to the latest version of CKEditor (Optimized) with the same setup as before.
21 * 21 *
22 * NOTE: 22 * NOTE:
23 * This file is not used by CKEditor, you may remove it. 23 * This file is not used by CKEditor, you may remove it.
24 * Changing this file will not change your CKEditor configuration. 24 * Changing this file will not change your CKEditor configuration.
25 */ 25 */
26 26
27var CKBUILDER_CONFIG = { 27var CKBUILDER_CONFIG = {
28 skin: 'moono', 28 skin: 'moono',
29 preset: 'full', 29 preset: 'full',
30 ignore: [ 30 ignore: [
31 '.bender', 31 '.DS_Store',
32 'bender.js', 32 '.bender',
33 'bender-err.log', 33 '.editorconfig',
34 'bender-out.log', 34 '.gitattributes',
35 'dev', 35 '.gitignore',
36 '.DS_Store', 36 '.idea',
37 '.editorconfig', 37 '.jscsrc',
38 '.gitattributes', 38 '.jshintignore',
39 '.gitignore', 39 '.jshintrc',
40 'gruntfile.js', 40 '.mailmap',
41 '.idea', 41 '.travis.yml',
42 '.jscsrc', 42 'bender-err.log',
43 '.jshintignore', 43 'bender-out.log',
44 '.jshintrc', 44 'bender.ci.js',
45 'less', 45 'bender.js',
46 '.mailmap', 46 'dev',
47 'node_modules', 47 'gruntfile.js',
48 'package.json', 48 'less',
49 'README.md', 49 'node_modules',
50 'tests' 50 'package.json',
51 ], 51 'tests'
52 ],
52 plugins : { 53 plugins : {
54 'Audio' : 1,
53 'a11yhelp' : 1, 55 'a11yhelp' : 1,
54 'basicstyles' : 1, 56 'basicstyles' : 1,
55 'contextmenu' : 1, 57 'contextmenu' : 1,
@@ -61,6 +63,7 @@ var CKBUILDER_CONFIG = {
61 'floatingspace' : 1, 63 'floatingspace' : 1,
62 'format' : 1, 64 'format' : 1,
63 'horizontalrule' : 1, 65 'horizontalrule' : 1,
66 'html5video' : 1,
64 'htmlwriter' : 1, 67 'htmlwriter' : 1,
65 'iframe' : 1, 68 'iframe' : 1,
66 'image' : 1, 69 'image' : 1,
@@ -72,6 +75,7 @@ var CKBUILDER_CONFIG = {
72 'liststyle' : 1, 75 'liststyle' : 1,
73 'magicline' : 1, 76 'magicline' : 1,
74 'maximize' : 1, 77 'maximize' : 1,
78 'oembed' : 1,
75 'removeformat' : 1, 79 'removeformat' : 1,
76 'resize' : 1, 80 'resize' : 1,
77 'showborders' : 1, 81 'showborders' : 1,
diff --git a/release/CHANGES.md b/release/CHANGES.md
index 333f69d..0803614 100644
--- a/release/CHANGES.md
+++ b/release/CHANGES.md
@@ -1,6 +1,299 @@
1CKEditor 4 Changelog 1CKEditor 4 Changelog
2==================== 2====================
3 3
4## CKEditor 4.7.3
5
6New Features:
7
8* [#568](https://github.com/ckeditor/ckeditor-dev/issues/568): Added possibility to adjust nested editables' filters using the [`CKEDITOR.filter.disallowedContent`](https://docs.ckeditor.com/#!/api/CKEDITOR.filter-property-disallowedContent) property.
9
10Fixed Issues:
11
12* [#554](https://github.com/ckeditor/ckeditor-dev/issues/554): Fixed: [`change`](https://docs.ckeditor.com/#!/api/CKEDITOR.editor-event-change) event not fired when typing the first character after pasting into the editor. Thanks to [Daniel Miller](https://github.com/millerdev)!
13* [#566](https://github.com/ckeditor/ckeditor-dev/issues/566): Fixed: The CSS `border` shorthand property with zero width (`border: 0px solid #000;`) causes the table to have the border attribute set to 1.
14* [#779](https://github.com/ckeditor/ckeditor-dev/issues/779): Fixed: The [Remove Format](https://ckeditor.com/addon/removeformat) plugin removes elements with language definition inserted by the [Language](https://ckeditor.com/addon/language) plugin.
15* [#423](https://github.com/ckeditor/ckeditor-dev/issues/423): Fixed: The [Paste from Word](https://ckeditor.com/addon/pastefromword) plugin pastes paragraphs into the editor even if [`CKEDITOR.config.enterMode`](https://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-enterMode) is set to `CKEDITOR.ENTER_BR`.
16* [#719](https://github.com/ckeditor/ckeditor-dev/issues/719): Fixed: Image inserted using the [Enhanced Image](https://ckeditor.com/addon/image2) plugin can be resized when the editor is in [read-only mode](https://docs.ckeditor.com/#!/guide/dev_readonly).
17* [#577](https://github.com/ckeditor/ckeditor-dev/issues/577): Fixed: The "Delete Columns" command provided by the [Table Tools](https://ckeditor.com/addon/tabletools) plugin throws an error when trying to delete columns.
18* [#867](https://github.com/ckeditor/ckeditor-dev/issues/867): Fixed: Typing into a selected table throws an error.
19* [#817](https://github.com/ckeditor/ckeditor-dev/issues/817): Fixed: The [Save](https://ckeditor.com/addon/save) plugin does not work in [Source Mode](https://ckeditor.com/addon/sourcearea).
20
21Other Changes:
22
23* Updated the [WebSpellChecker](http://ckeditor.com/addon/wsc) plugin:
24 * [#40](https://github.com/WebSpellChecker/ckeditor-plugin-wsc/issues/40): Fixed: IE10 throws an error when spell checking is started.
25* [#800](https://github.com/ckeditor/ckeditor-dev/issues/800): Added the [`CKEDITOR.dom.selection.isCollapsed`](https://docs.ckeditor.com/#!/api/CKEDITOR.dom.selection-method-isCollapsed) method which is a simpler way to check if the selection is collapsed.
26* [#830](https://github.com/ckeditor/ckeditor-dev/issues/830): Added an option to define which dialog tab should be shown by default when creating [`CKEDITOR.dialogCommand`](https://docs.ckeditor.com/#!/api/CKEDITOR.dialogCommand).
27
28## CKEditor 4.7.2
29
30New Features:
31
32* [#455](https://github.com/ckeditor/ckeditor-dev/issues/455): Added [Advanced Content Filter](https://docs.ckeditor.com/#!/guide/dev_acf) integration with the [Justify](http://ckeditor.com/addon/justify) plugin.
33
34Fixed Issues:
35
36* [#663](https://github.com/ckeditor/ckeditor-dev/issues/663): [Chrome] Fixed: Clicking the scrollbar throws an `Uncaught TypeError: element.is is not a function` error.
37* [#694](https://github.com/ckeditor/ckeditor-dev/pull/694): Refactoring in the [Table Selection](http://ckeditor.com/addon/tableselection) plugin:
38 * [#520](https://github.com/ckeditor/ckeditor-dev/issues/520): Fixed: Widgets cannot be properly pasted into a table cell.
39 * [#460](https://github.com/ckeditor/ckeditor-dev/issues/460): Fixed: Editor gone after pasting into an editor within a table.
40* [#579](https://github.com/ckeditor/ckeditor-dev/issues/579): Fixed: Internal `cke_table-faked-selection-table` class is visible in the Stylesheet Classes field of the [Table Properties](http://ckeditor.com/addon/table) dialog.
41* [#545](https://github.com/ckeditor/ckeditor-dev/issues/545): [Edge] Fixed: Error thrown when pressing the [Select All](https://ckeditor.com/addon/selectall) button in [Source Mode](http://ckeditor.com/addon/sourcearea).
42* [#582](https://github.com/ckeditor/ckeditor-dev/issues/582): Fixed: Double slash in the path to stylesheet needed by the [Table Selection](http://ckeditor.com/addon/tableselection) plugin. Thanks to [Marius Dumitru Florea](https://github.com/mflorea)!
43* [#491](https://github.com/ckeditor/ckeditor-dev/issues/491): Fixed: Unnecessary dependency on the [Editor Toolbar](http://ckeditor.com/addon/toolbar) plugin inside the [Notification](http://ckeditor.com/addon/notification) plugin.
44* [#646](https://github.com/ckeditor/ckeditor-dev/issues/646): Fixed: Error thrown into the browser console after opening the [Styles Combo](http://ckeditor.com/addon/stylescombo) plugin menu in the editor without any selection.
45* [#501](https://github.com/ckeditor/ckeditor-dev/issues/501): Fixed: Double click does not open the dialog for modifying anchors inserted via the [Link](http://ckeditor.com/addon/link) plugin.
46* [#9780](https://dev.ckeditor.com/ticket/9780): [IE8-9] Fixed: Clicking inside an empty [read-only](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-property-readOnly) editor throws an error.
47* [#16820](https://dev.ckeditor.com/ticket/16820): [IE10] Fixed: Clicking below a single horizontal rule throws an error.
48* [#426](https://github.com/ckeditor/ckeditor-dev/issues/426): Fixed: The [`range.cloneContents`](http://docs.ckeditor.com/#!/api/CKEDITOR.dom.range-method-cloneContents) method selects the whole element when the selection starts at the beginning of that element.
49* [#644](https://github.com/ckeditor/ckeditor-dev/issues/644): Fixed: The [`range.extractContents`](http://docs.ckeditor.com/#!/api/CKEDITOR.dom.range-method-extractContents) method returns an incorrect result when multiple nodes are selected.
50* [#684](https://github.com/ckeditor/ckeditor-dev/issues/684): Fixed: The [`elementPath.contains`](http://docs.ckeditor.com/#!/api/CKEDITOR.dom.elementPath-method-contains) method incorrectly excludes the last element instead of root when the `fromTop` parameter is set to `true`.
51
52Other Changes:
53
54* Updated the [SCAYT](http://ckeditor.com/addon/scayt) (Spell Check As You Type) plugin:
55 * [#148](https://github.com/WebSpellChecker/ckeditor-plugin-scayt/issues/148): Fixed: SCAYT leaves underlined word after the CKEditor Replace dialog corrects it.
56* [#751](https://github.com/ckeditor/ckeditor-dev/issues/751): Added the [`CKEDITOR.dom.nodeList.toArray`](https://docs.ckeditor.com/#!/api/CKEDITOR.dom.nodeList-method-toArray) method which returns an array representation of a [node list](https://docs.ckeditor.com/#!/api/CKEDITOR.dom.nodeList).
57
58## CKEditor 4.7.1
59
60New Features:
61
62* Added a new Mexican Spanish localization. Thanks to [David Alexandro Rodriguez](https://www.transifex.com/user/profile/darsco16/)!
63* [#413](https://github.com/ckeditor/ckeditor-dev/issues/413): Added Paste as Plain Text keyboard shortcut to the [Accessibility Help](http://ckeditor.com/addon/a11yhelp) instructions.
64
65Fixed Issues:
66
67* [#515](https://github.com/ckeditor/ckeditor-dev/issues/515): [Chrome] Fixed: Mouse actions on CKEditor scrollbar throw an exception when the [Table Selection](http://ckeditor.com/addon/tableselection) plugin is loaded.
68* [#493](https://github.com/ckeditor/ckeditor-dev/issues/493): Fixed: Selection started from a nested table causes an error in the browser while scrolling down.
69* [#415](https://github.com/ckeditor/ckeditor-dev/issues/415): [Firefox] Fixed: <kbd>Enter</kbd> key breaks the table structure when pressed in a table selection.
70* [#457](https://github.com/ckeditor/ckeditor-dev/issues/457): Fixed: Error thrown when deleting content from the editor with no selection.
71* [#478](https://github.com/ckeditor/ckeditor-dev/issues/478): [Chrome] Fixed: Error thrown by the [Enter Key](http://ckeditor.com/addon/enterkey) plugin when pressing <kbd>Enter</kbd> with no selection.
72* [#424](https://github.com/ckeditor/ckeditor-dev/issues/424): Fixed: Error thrown by [Tab Key Handling](http://ckeditor.com/addon/tab) and [Indent List](http://ckeditor.com/addon/indentlist) plugins when pressing <kbd>Tab</kbd> with no selection in inline editor.
73* [#476](https://github.com/ckeditor/ckeditor-dev/issues/476): Fixed: Anchors inserted with the [Link](http://ckeditor.com/addon/link) plugin on collapsed selection cannot be edited.
74* [#417](https://github.com/ckeditor/ckeditor-dev/issues/417): Fixed: The [Table Resize](http://ckeditor.com/addon/tableresize) plugin throws an error when used with a table with only header or footer rows.
75* [#523](https://github.com/ckeditor/ckeditor-dev/issues/523): Fixed: The [`editor.getCommandKeystroke`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-getCommandKeystroke) method does not obtain the correct keystroke.
76* [#534](https://github.com/ckeditor/ckeditor-dev/issues/534): [IE] Fixed: [Paste from Word](http://ckeditor.com/addon/pastefromword) does not work in Quirks Mode.
77* [#450](https://github.com/ckeditor/ckeditor-dev/issues/450): Fixed: [`CKEDITOR.filter`](http://docs.ckeditor.com/#!/api/CKEDITOR.filter) incorrectly transforms the `margin` CSS property.
78
79## CKEditor 4.7
80
81**Important Notes:**
82
83* [#13793](http://dev.ckeditor.com/ticket/13793): The [`embed_provider`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-embed_provider) configuration option for the [Media Embed](http://ckeditor.com/addon/embed) and [Semantic Media Embed](http://ckeditor.com/addon/embedsemantic) plugins is no longer preset by default.
84* The [UI Color](http://ckeditor.com/addon/uicolor) plugin now uses a custom color picker instead of the `YUI 2.7.0` library which has some known vulnerabilities (it's a security precaution, there was no security issue in CKEditor due to the way it was used).
85
86New Features:
87
88* [#16755](http://dev.ckeditor.com/ticket/16755): Added the [Table Selection](http://ckeditor.com/addon/tableselection) plugin that lets you select and manipulate an arbitrary rectangular table fragment (a few cells, a row or a column).
89* [#16961](http://dev.ckeditor.com/ticket/16961): Added support for pasting from Microsoft Excel.
90* [#13381](http://dev.ckeditor.com/ticket/13381): Dynamic code evaluation call in [`CKEDITOR.template`](http://docs.ckeditor.com/#!/api/CKEDITOR.template) removed. CKEditor can now be used without the `unsafe-eval` Content Security Policy. Thanks to [Caridy Patiño](http://caridy.name)!
91* [#16971](http://dev.ckeditor.com/ticket/16971): Added support for color in the `background` property containing also other styles for table cells in the [Table Tools](http://ckeditor.com/addon/tabletools) plugin.
92* [#16847](http://dev.ckeditor.com/ticket/16847): Added support for parsing and inlining any formatting created using the Microsoft Word style system to the [Paste from Word](http://ckeditor.com/addon/pastefromword) plugin.
93* [#16818](http://dev.ckeditor.com/ticket/16818): Added table cell height parsing in the [Paste from Word](http://ckeditor.com/addon/pastefromword) plugin.
94* [#16850](http://dev.ckeditor.com/ticket/16850): Added a new [`config.enableContextMenu`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-enableContextMenu) configuration option for enabling and disabling the [context menu](http://ckeditor.com/addon/contextmenu).
95* [#16937](http://dev.ckeditor.com/ticket/16937): The `command` parameter in [CKEDITOR.editor.getCommandKeystroke](http://docs.ckeditor.dev/#!/api/CKEDITOR.editor-method-getCommandKeystroke) now also accepts a command name as an argument.
96* [#17010](http://dev.ckeditor.com/ticket/17010): The [`CKEDITOR.dom.range.shrink`](http://docs.ckeditor.com/#!/api/CKEDITOR.dom.range-method-shrink) method now allows for skipping bogus `<br>` elements.
97
98Fixed Issues:
99
100* [#16935](http://dev.ckeditor.com/ticket/16935): [Chrome] Fixed: Blurring the editor in [Source Mode](http://ckeditor.com/addon/sourcearea) throws an error.
101* [#16825](http://dev.ckeditor.com/ticket/16825): [Chrome] Fixed: Error thrown when destroying a focused inline editor.
102* [#16857](http://dev.ckeditor.com/ticket/16857): Fixed: <kbd>Ctrl+Shift+V</kbd> blocked by [Copy Formatting](http://ckeditor.com/addon/copyformatting).
103* [#16845](https://dev.ckeditor.com/ticket/16845): [IE] Fixed: Cursor jumps to the top of the scrolled editor after focusing it when the [Copy Formatting](http://ckeditor.com/addon/copyformatting) plugin is enabled.
104* [#16786](http://dev.ckeditor.com/ticket/16786): Fixed: Added missing translations for the [Copy Formatting](http://ckeditor.com/addon/copyformatting) plugin.
105* [#14714](http://dev.ckeditor.com/ticket/14714): [WebKit/Blink] Fixed: Exception thrown on refocusing a blurred inline editor.
106* [#16913](http://dev.ckeditor.com/ticket/16913): [Firefox, IE] Fixed: [Paste as Plain Text](http://ckeditor.com/addon/pastetext) keystroke does not work.
107* [#16968](http://dev.ckeditor.com/ticket/16968): Fixed: [Safari] [Paste as Plain Text](http://ckeditor.com/addon/pastetext) is not handled by the editor.
108* [#16912](http://dev.ckeditor.com/ticket/16912): Fixed: Exception thrown when a single image is pasted using [Paste from Word](http://ckeditor.com/addon/pastefromword).
109* [#16821](http://dev.ckeditor.com/ticket/16821): Fixed: Extraneous `<span>` elements with `height` style stacked when [pasting from Word](http://ckeditor.com/addon/pastefromword).
110* [#16866](http://dev.ckeditor.com/ticket/16866): [IE, Edge] Fixed: Whitespaces not preserved when [pasting from Word](http://ckeditor.com/addon/pastefromword).
111* [#16860](http://dev.ckeditor.com/ticket/16860): Fixed: Paragraphs which only look like lists incorrectly transformed into them when [pasting from Word](http://ckeditor.com/addon/pastefromword).
112* [#16817](http://dev.ckeditor.com/ticket/16817): Fixed: When [pasting from Word](http://ckeditor.com/addon/pastefromword), paragraphs are transformed into lists with some corrupted data.
113* [#16833](http://dev.ckeditor.com/ticket/16833): [IE11] Fixed: Malformed list with headers [pasted from Word](http://ckeditor.com/addon/pastefromword).
114* [#16826](http://dev.ckeditor.com/ticket/16826): [IE] Fixed: Superfluous paragraphs within lists [pasted from Word](http://ckeditor.com/addon/pastefromword).
115* [#12465](http://dev.ckeditor.com/ticket/12465): Fixed: Cannot change the state of checkboxes or radio buttons if the properties dialog was invoked with a double-click.
116* [#13062](http://dev.ckeditor.com/ticket/13062): Fixed: Impossible to unlink when the caret is at the edge of the link.
117* [#13585](http://dev.ckeditor.com/ticket/13585): Fixed: Error when wrapping two adjacent `<div>` elements with a `<div>`.
118* [#16811](http://dev.ckeditor.com/ticket/16811): Fixed: Table alignment is not preserved by the [Paste from Word](http://ckeditor.com/addon/pastefromword) plugin.
119* [#16810](http://dev.ckeditor.com/ticket/16810): Fixed: Vertical align in tables is not supported by the [Paste from Word](http://ckeditor.com/addon/pastefromword) plugin.
120* [#11956](http://dev.ckeditor.com/ticket/11956): [Blink, IE] Fixed: [Link](http://ckeditor.com/addon/link) dialog does not open on a double click on the second word of the link with a background color or other styles.
121* [#10472](http://dev.ckeditor.com/ticket/10472): Fixed: Unable to use [Table Resize](http://ckeditor.com/addon/tableresize) on table header and footer.
122* [#14762](http://dev.ckeditor.com/ticket/14762): Fixed: Hovering over an empty table (without rows or cells) throws an error when the [Table Resize](http://ckeditor.com/addon/tableresize) plugin is active.
123* [#16777](https://dev.ckeditor.com/ticket/16777): [Edge] Fixed: The [Clipboard](http://ckeditor.com/addon/clipboard) plugin does not allow to drop widgets into the editor.
124* [#14894](https://dev.ckeditor.com/ticket/14894): [Chrome] Fixed: The editor scrolls to the top after focusing or when a dialog is opened.
125* [#14769](https://dev.ckeditor.com/ticket/14769): Fixed: URLs with '-' in host are not detected by the [Auto Link](http://ckeditor.com/addon/autolink) plugin.
126* [#16804](https://dev.ckeditor.com/ticket/16804): Fixed: Focus is not on the first menu item when the user opens a context menu or a drop-down list from the editor toolbar.
127* [#14407](https://dev.ckeditor.com/ticket/14407): [IE] Fixed: Non-editable widgets can be edited.
128* [#16927](https://dev.ckeditor.com/ticket/16927): Fixed: An error thrown if a bundle containing the [Color Button](http://ckeditor.com/addon/colorbutton) plugin is run in ES5 strict mode. Thanks to [Igor Rubinovich](https://github.com/IgorRubinovich)!
129* [#16920](http://dev.ckeditor.com/ticket/16920): Fixed: Several plugins not using the [Dialog](http://ckeditor.com/addon/dialog) plugin as a direct dependency.
130* [PR#336](https://github.com/ckeditor/ckeditor-dev/pull/336): Fixed: Typo in [`CKEDITOR.getCss`](http://docs.ckeditor.com/#!/api/CKEDITOR-method-getCss) API documentation. Thanks to [knusperpixel](https://github.com/knusperpixel)!
131* [#17027](http://dev.ckeditor.com/ticket/17027): Fixed: Command event data should be initialized as an empty object.
132* Fixed the behavior of HTML parser when parsing `src`/`srcdoc` attributes of the `<iframe>` element in a CKEditor setup with ACF turned off and without the [Iframe Dialog](http://ckeditor.com/addon/iframe) plugin. The issue was originally reported as a security issue by [Sriramk21](https://twitter.com/sriramk21) from Pegasystems and was later downgraded by the security team into a normal issue due to the requirement of having ACF turned off. Disabling [Advanced Content Filter](http://docs.ckeditor.com/#!/guide/dev_advanced_content_filter) is against [security best practices](http://docs.ckeditor.com/#!/guide/dev_best_practices-section-security), so the problem described above has not been considered a security issue as such.
133
134Other Changes:
135
136* Updated [SCAYT](http://ckeditor.com/addon/scayt) (Spell Check As You Type) and [WebSpellChecker](http://ckeditor.com/addon/wsc) plugins:
137 * Fixed: DOM Exception after clicking "Remove Language" on a selected word with enabled [Language](http://ckeditor.com/addon/language) plugin in SCAYT.
138* [#16958](http://dev.ckeditor.com/ticket/16958): Switched the default MathJax CDN provider for the [Mathematical Formulas](http://ckeditor.com/addon/mathjax) plugin from `cdn.mathjax.org` to [cdnjs](https://cdnjs.com/), due to closing of `cdn.mathjax.org` scheduled for April 30, 2017.
139* [#16954](http://dev.ckeditor.com/ticket/16954): Removed the paste dialog.
140* [#16982](http://dev.ckeditor.com/ticket/16982): Latest Safari now supports enhanced Clipboard API introduced in CKEditor 4.5.0.
141* [#17025](http://dev.ckeditor.com/ticket/17025): Updated [Bender.js](https://github.com/benderjs/benderjs) to 0.4.2.
142
143## CKEditor 4.6.2
144
145New Features:
146
147* [#16733](http://dev.ckeditor.com/ticket/16733): Added a new pastel color palette for the [Color Button](http://ckeditor.com/addon/colorbutton) plugin and a new [`config.colorButton_colorsPerRow`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-colorButton_colorsPerRow) configuration option for setting the number of rows in the color selector.
148* [#16752](http://dev.ckeditor.com/ticket/16752): Added a new Azerbaijani localization. Thanks to the [Azerbaijani language team](https://www.transifex.com/ckeditor/teams/11143/az/)!
149* [#13818](http://dev.ckeditor.com/ticket/13818): It is now possible to group [Widget](http://ckeditor.com/addon/widget) [style definitions](http://docs.ckeditor.com/#!/guide/dev_styles-section-widget-styles), so applying one style disables the other.
150
151Fixed Issues:
152
153* [#13446](http://dev.ckeditor.com/ticket/13446): [Chrome] Fixed: It is possible to type in an unfocused inline editor.
154* [#14856](http://dev.ckeditor.com/ticket/14856): Fixed: [Font size and font family](http://ckeditor.com/addon/font) reset each other when modified at certain positions.
155* [#16745](http://dev.ckeditor.com/ticket/16745): [Edge] Fixed: List items are lost when [pasted from Word](http://ckeditor.com/addon/pastefromword).
156* [#16682](http://dev.ckeditor.com/ticket/16682): [Edge] Fixed: A list gets [pasted from Word](http://ckeditor.com/addon/pastefromword) as a set of paragraphs. Added the [`config.pasteFromWord_heuristicsEdgeList`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-pasteFromWord_heuristicsEdgeList) configuration option.
157* [#10373](http://dev.ckeditor.com/ticket/10373): Fixed: Context menu items can be dragged into the editor.
158* [#16728](http://dev.ckeditor.com/ticket/16728): [IE] Fixed: [Copy Formatting](http://ckeditor.com/addon/copyformatting) breaks the editor in Quirks Mode.
159* [#16795](http://dev.ckeditor.com/ticket/16795): [IE] Fixed: [Copy Formatting](http://ckeditor.com/addon/copyformatting) breaks the editor in Compatibility Mode.
160* [#16675](http://dev.ckeditor.com/ticket/16675): Fixed: Styles applied with [Copy Formatting](http://ckeditor.com/addon/copyformatting) to a single table cell are applied to the whole table.
161* [#16753](http://dev.ckeditor.com/ticket/16753): Fixed: [`element.setSize`](http://docs.ckeditor.com/#!/api/CKEDITOR.dom.element-method-setSize) sets incorrect editor dimensions if the border width is represented as a fraction of pixels.
162* [#16705](http://dev.ckeditor.com/ticket/16705): [Firefox] Fixed: Unable to paste images as Base64 strings when using [Clipboard](http://ckeditor.com/addon/clipboard).
163* [#14869](http://dev.ckeditor.com/ticket/14869): Fixed: JavaScript error is thrown when trying to use [Find](http://ckeditor.com/addon/find) in a [`<div>`-based editor](http://ckeditor.com/addon/divarea).
164
165## CKEditor 4.6.1
166
167New Features:
168
169* [#16639](http://dev.ckeditor.com/ticket/16639): The `callback` parameter in the [CKEDITOR.ajax.post](http://docs.ckeditor.com/#!/api/CKEDITOR.ajax-method-post) method became optional.
170
171Fixed Issues:
172
173* [#11064](http://dev.ckeditor.com/ticket/11064): [Blink, WebKit] Fixed: Cannot select all editor content when a widget or a non-editable element is the first or last element of the content. Also fixes this issue in the [Select All](http://ckeditor.com/addon/selectall) plugin.
174* [#14755](http://dev.ckeditor.com/ticket/14755): [Blink, WebKit, IE8] Fixed: Browser hangs when a table is inserted in the place of a selected list with an empty last item.
175* [#16624](http://dev.ckeditor.com/ticket/16624): Fixed: Improved the [Color Button](http://ckeditor.com/addon/colorbutton) plugin which will now normalize the CSS `background` property if it only contains a color value. This fixes missing background colors when using [Paste from Word](http://ckeditor.com/addon/pastefromword).
176* [#16600](http://dev.ckeditor.com/ticket/16600): [Blink, WebKit] Fixed: Error thrown occasionally by an uninitialized editable for multiple CKEditor instances on the same page.
177
178## CKEditor 4.6
179
180New Features:
181
182* [#14569](http://dev.ckeditor.com/ticket/14569): Added a new, flat, default CKEditor skin called [Moono-Lisa](http://ckeditor.com/addon/moono-lisa). Refreshed default colors available in the [Color Button](http://ckeditor.com/addon/colorbutton) plugin ([Text Color and Background Color](http://docs.ckeditor.com/#!/guide/dev_colorbutton) feature).
183* [#14707](http://dev.ckeditor.com/ticket/14707): Added a new [Copy Formatting](http://ckeditor.com/addon/copyformatting) feature to enable easy copying of styles between your document parts.
184* Introduced the completely rewritten [Paste from Word](http://ckeditor.com/addon/pastefromword) plugin:
185 * Backward incompatibility: The [`config.pasteFromWordRemoveFontStyles`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-pasteFromWordRemoveFontStyles) option now defaults to `false`. This option will be deprecated in the future. Use [Advanced Content Filter](http://docs.ckeditor.com/#!/guide/dev_acf) to replicate the effect of setting it to `true`.
186 * Backward incompatibility: The [`config.pasteFromWordNumberedHeadingToList`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-pasteFromWordNumberedHeadingToList) and [`config.pasteFromWordRemoveStyles`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-pasteFromWordRemoveStyles) options were dropped and no longer have any effect on pasted content.
187 * Major improvements in preservation of list numbering, styling and indentation (nested lists with multiple levels).
188 * Major improvements in document structure parsing that fix plenty of issues with distorted or missing content after paste.
189* Added new translation: Occitan. Thanks to [Cédric Valmary](https://totenoc.eu/)!
190* [#10015](http://dev.ckeditor.com/ticket/10015): Keyboard shortcuts (relevant to the operating system in use) will now be displayed in tooltips and context menus.
191* [#13794](http://dev.ckeditor.com/ticket/13794): The [Upload Image](http://ckeditor.com/addon/uploadimage) feature now uses `uploaded.width/height` if set.
192* [#12541](http://dev.ckeditor.com/ticket/12541): Added the [Upload File](http://ckeditor.com/addon/uploadfile) plugin that lets you upload a file by drag&amp;dropping it into the editor content.
193* [#14449](http://dev.ckeditor.com/ticket/14449): Introduced the [Balloon Panel](http://ckeditor.com/addon/balloonpanel) plugin that lets you create stylish floating UI elements for the editor.
194* [#12077](https://dev.ckeditor.com/ticket/12077): Added support for the HTML5 `download` attribute in link (`<a>`) elements. Selecting the "Force Download" checkbox in the [Link](http://ckeditor.com/addon/link) dialog will cause the linked file to be downloaded automatically. Thanks to [sbusse](https://github.com/sbusse)!
195* [#13518](http://dev.ckeditor.com/ticket/13518): Introduced the [`additionalRequestParameters`](http://docs.ckeditor.com/#!/api/CKEDITOR.fileTools.uploadWidgetDefinition-property-additionalRequestParameters) property for file uploads to make it possible to send additional information about the uploaded file to the server.
196* [#14889](http://dev.ckeditor.com/ticket/14889): Added the [`config.image2_altRequired`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-image2_altRequired) option for the [Enhanced Image](http://ckeditor.com/addon/image2) plugin to allow making alternative text a mandatory field. Thanks to [Andrey Fedoseev](https://github.com/andreyfedoseev)!
197
198Fixed Issues:
199
200* [#9991](http://dev.ckeditor.com/ticket/9991): Fixed: [Paste from Word](http://ckeditor.com/addon/pastefromword) should only normalize input data.
201* [#7209](http://dev.ckeditor.com/ticket/7209): Fixed: Lists with 3 levels not [pasted from Word](http://ckeditor.com/addon/pastefromword) correctly.
202* [#14335](http://dev.ckeditor.com/ticket/14335): Fixed: Pasting a numbered list starting with a value different from "1" from Microsoft Word does not work correctly.
203* [#14542](http://dev.ckeditor.com/ticket/14542): Fixed: Copying a numbered list from Microsoft Word does not preserve list formatting.
204* [#14544](http://dev.ckeditor.com/ticket/14544): Fixed: Copying a nested list from Microsoft Word results in an empty list.
205* [#14660](http://dev.ckeditor.com/ticket/14660): Fixed: [Pasting text from Word](http://ckeditor.com/addon/pastefromword) breaks the styling in some cases.
206* [#14867](http://dev.ckeditor.com/ticket/14867): [Firefox] Fixed: Text gets stripped when [pasting content from Word](http://ckeditor.com/addon/pastefromword).
207* [#2507](http://dev.ckeditor.com/ticket/2507): Fixed: [Paste from Word](http://ckeditor.com/addon/pastefromword) does not detect pasting a part of a paragraph.
208* [#3336](http://dev.ckeditor.com/ticket/3336): Fixed: Extra blank row added on top of the content [pasted from Word](http://ckeditor.com/addon/pastefromword).
209* [#6115](http://dev.ckeditor.com/ticket/6115): Fixed: When Right-to-Left text direction is applied to a table [pasted from Word](http://ckeditor.com/addon/pastefromword), borders are missing on one side.
210* [#6342](http://dev.ckeditor.com/ticket/6342): Fixed: [Paste from Word](http://ckeditor.com/addon/pastefromword) filters out a basic text style when it is [configured to use attributes](http://docs.ckeditor.com/#!/guide/dev_basicstyles-section-custom-basic-text-style-definition).
211* [#6457](http://dev.ckeditor.com/ticket/6457): [IE] Fixed: [Pasting from Word](http://ckeditor.com/addon/pastefromword) is extremely slow.
212* [#6789](http://dev.ckeditor.com/ticket/6789): Fixed: The `mso-list: ignore` style is not handled properly when [pasting from Word](http://ckeditor.com/addon/pastefromword).
213* [#7262](http://dev.ckeditor.com/ticket/7262): Fixed: Lists in preformatted body disappear when [pasting from Word](http://ckeditor.com/addon/pastefromword).
214* [#7662](http://dev.ckeditor.com/ticket/7662): [Opera] Fixed: Extra empty number/bullet shown in the editor body when editing a multi-level list [pasted from Word](http://ckeditor.com/addon/pastefromword).
215* [#7807](http://dev.ckeditor.com/ticket/7807): Fixed: Last item in a list not converted to a `<li>` element after [pasting from Word](http://ckeditor.com/addon/pastefromword).
216* [#7950](http://dev.ckeditor.com/ticket/7950): [IE] Fixed: Content [from Word pasted](http://ckeditor.com/addon/pastefromword) differently than in other browsers.
217* [#7982](http://dev.ckeditor.com/ticket/7982): Fixed: Multi-level lists get split into smaller ones when [pasting from Word](http://ckeditor.com/addon/pastefromword).
218* [#8231](http://dev.ckeditor.com/ticket/8231): [WebKit, Opera] Fixed: [Paste from Word](http://ckeditor.com/addon/pastefromword) inserts empty paragraphs.
219* [#8266](http://dev.ckeditor.com/ticket/8266): Fixed: [Paste from Word](http://ckeditor.com/addon/pastefromword) inserts a blank line at the top.
220* [#8341](http://dev.ckeditor.com/ticket/8341), [#7646](http://dev.ckeditor.com/ticket/7646): Fixed: Faulty removal of empty `<span>` elements in [Paste from Word](http://ckeditor.com/addon/pastefromword) content cleanup breaking content formatting.
221* [#8754](http://dev.ckeditor.com/ticket/8754): [Firefox] Fixed: Incorrect pasting of multiple nested lists in [Paste from Word](http://ckeditor.com/addon/pastefromword).
222* [#8983](http://dev.ckeditor.com/ticket/8983): Fixed: Alignment lost when [pasting from Word](http://ckeditor.com/addon/pastefromword) with [`config.enterMode`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-enterMode) set to [`CKEDITOR.ENTER_BR`](http://docs.ckeditor.com/#!/api/CKEDITOR-property-ENTER_BR).
223* [#9331](http://dev.ckeditor.com/ticket/9331): [IE] Fixed: [Pasting text from Word](http://ckeditor.com/addon/pastefromword) creates a simple Caesar cipher.
224* [#9422](http://dev.ckeditor.com/ticket/9422): Fixed: [Paste from Word](http://ckeditor.com/addon/pastefromword) leaves an unwanted `color:windowtext` style.
225* [#10011](http://dev.ckeditor.com/ticket/10011): [IE9-10] Fixed: [`config.pasteFromWordRemoveFontStyles`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-pasteFromWordRemoveFontStyles) is ignored under certain conditions.
226* [#10643](http://dev.ckeditor.com/ticket/10643): Fixed: Differences between using <kbd>Ctrl+V</kbd> and pasting from the [Paste from Word](http://ckeditor.com/addon/pastefromword) dialog.
227* [#10784](http://dev.ckeditor.com/ticket/10784): Fixed: Lines missing when [pasting from Word](http://ckeditor.com/addon/pastefromword).
228* [#11294](http://dev.ckeditor.com/ticket/11294): [IE10] Fixed: Font size is not preserved when [pasting from Word](http://ckeditor.com/addon/pastefromword).
229* [#11627](http://dev.ckeditor.com/ticket/11627): Fixed: Missing words when [pasting from Word](http://ckeditor.com/addon/pastefromword).
230* [#12784](http://dev.ckeditor.com/ticket/12784): Fixed: Bulleted list with custom bullets gets changed to a numbered list when [pasting from Word](http://ckeditor.com/addon/pastefromword).
231* [#13174](http://dev.ckeditor.com/ticket/13174): Fixed: Data loss after [pasting from Word](http://ckeditor.com/addon/pastefromword).
232* [#13828](http://dev.ckeditor.com/ticket/13828): Fixed: Widget classes should be added to the wrapper rather than the widget element.
233* [#13829](http://dev.ckeditor.com/ticket/13829): Fixed: No class in [Widget](http://ckeditor.com/addon/widget) wrapper to identify the widget type.
234* [#13519](http://dev.ckeditor.com/ticket/13519): Server response received when uploading files should be more flexible.
235
236Other Changes:
237
238* Updated [SCAYT](http://ckeditor.com/addon/scayt) (Spell Check As You Type) and [WebSpellChecker](http://ckeditor.com/addon/wsc) plugins:
239 * Support for the new default Moono-Lisa skin.
240 * [#121](https://github.com/WebSpellChecker/ckeditor-plugin-scayt/issues/121): Fixed: [Basic Styles](http://ckeditor.com/addon/basicstyles) do not work when SCAYT is enabled.
241 * [#125](https://github.com/WebSpellChecker/ckeditor-plugin-scayt/issues/125): Fixed: Inline styles are not continued when writing multiple lines of styled text with SCAYT enabled.
242 * [#127](https://github.com/WebSpellChecker/ckeditor-plugin-scayt/issues/127): Fixed: Uncaught TypeError after enabling SCAYT in the CKEditor `<div>` element.
243 * [#128](https://github.com/WebSpellChecker/ckeditor-plugin-scayt/issues/128): Fixed: Error thrown after enabling SCAYT caused by conflicts with RequireJS.
244
245## CKEditor 4.5.11
246
247**Security Updates:**
248
249* [Severity: minor] Fixed the `target="_blank"` vulnerability reported by James Gaskell.
250
251 Issue summary: If a victim had access to a spoofed version of ckeditor.com via HTTP (e.g. due to DNS spoofing, using a hacked public network or mailicious hotspot), then when using a link to the ckeditor.com website it was possible for the attacker to change the current URL of the opening page, even if the opening page was protected with SSL.
252
253 An upgrade is recommended.
254
255New Features:
256
257* [#14747](http://dev.ckeditor.com/ticket/14747): The [Enhanced Image](http://ckeditor.com/addon/image2) caption now supports the link `target` attribute.
258* [#7154](http://dev.ckeditor.com/ticket/7154): Added support for the "Display Text" field to the [Link](http://ckeditor.com/addon/link) dialog. Thanks to [Ryan Guill](https://github.com/ryanguill)!
259
260Fixed Issues:
261
262* [#13362](http://dev.ckeditor.com/ticket/13362): [Blink, WebKit] Fixed: Active widget element is not cached when it is losing focus and it is inside an editable element.
263* [#13755](http://dev.ckeditor.com/ticket/13755): [Edge] Fixed: Pasting images does not work.
264* [#13548](http://dev.ckeditor.com/ticket/13548): [IE] Fixed: Clicking the [elements path](http://ckeditor.com/addon/elementspath) disables Cut and Copy icons.
265* [#13812](http://dev.ckeditor.com/ticket/13812): Fixed: When aborting file upload the placeholder for image is left.
266* [#14659](http://dev.ckeditor.com/ticket/14659): [Blink] Fixed: Content scrolled to the top after closing the dialog in a [`<div>`-based editor](http://ckeditor.com/addon/divarea).
267* [#14825](http://dev.ckeditor.com/ticket/14825): [Edge] Fixed: Focusing the editor causes unwanted scrolling due to dropped support for the `setActive` method.
268
269## CKEditor 4.5.10
270
271Fixed Issues:
272
273* [#10750](http://dev.ckeditor.com/ticket/10750): Fixed: The editor does not escape the `font-style` family property correctly, removing quotes and whitespace from font names.
274* [#14413](http://dev.ckeditor.com/ticket/14413): Fixed: The [Auto Grow](http://ckeditor.com/addon/autogrow) plugin with the [`config.autoGrow_onStartup`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-autoGrow_onStartup) option set to `true` does not work properly for an editor that is not visible.
275* [#14451](http://dev.ckeditor.com/ticket/14451): Fixed: Numeric element ID not escaped properly. Thanks to [Jakub Chalupa](https://github.com/chaluja7)!
276* [#14590](http://dev.ckeditor.com/ticket/14590): Fixed: Additional line break appearing after inline elements when switching modes. Thanks to [dpidcock](https://github.com/dpidcock)!
277* [#14539](https://dev.ckeditor.com/ticket/14539): Fixed: JAWS reads "selected Blank" instead of "selected <widget name>" when selecting a widget.
278* [#14701](http://dev.ckeditor.com/ticket/14701): Fixed: More precise labels for [Enhanced Image](http://ckeditor.com/addon/image2) and [Placeholder](http://ckeditor.com/addon/placeholder) widgets.
279* [#14667](http://dev.ckeditor.com/ticket/14667): [IE] Fixed: Removing background color from selected text removes background color from the whole paragraph.
280* [#14252](http://dev.ckeditor.com/ticket/14252): [IE] Fixed: Styles drop-down list does not always reflect the current style of the text line.
281* [#14275](http://dev.ckeditor.com/ticket/14275): [IE9+] Fixed: `onerror` and `onload` events are not used in browsers it could have been used when loading scripts dynamically.
282
283## CKEditor 4.5.9
284
285Fixed Issues:
286
287* [#10685](http://dev.ckeditor.com/ticket/10685): Fixed: Unreadable toolbar icons after updating to the new editor version. Fixed with [6876179](https://github.com/ckeditor/ckeditor-dev/commit/6876179db4ee97e786b07b8fd72e6b4120732185) in [ckeditor-dev](https://github.com/ckeditor/ckeditor-dev) and [6c9189f4](https://github.com/ckeditor/ckeditor-presets/commit/6c9189f46392d2c126854fe8889b820b8c76d291) in [ckeditor-presets](https://github.com/ckeditor/ckeditor-presets).
288* [#14573](https://dev.ckeditor.com/ticket/14573): Fixed: Missing [Widget](http://ckeditor.com/addon/widget) drag handler CSS when there are multiple editor instances.
289* [#14620](https://dev.ckeditor.com/ticket/14620): Fixed: Setting both the `min-height` style for the `<body>` element and the `height` style for the `<html>` element breaks the [Auto Grow](http://ckeditor.com/addon/autogrow) plugin.
290* [#14538](http://dev.ckeditor.com/ticket/14538): Fixed: Keyboard focus goes into an embedded `<iframe>` element.
291* [#14602](http://dev.ckeditor.com/ticket/14602): Fixed: The [`dom.element.removeAttribute()`](http://docs.ckeditor.com/#!/api/CKEDITOR.dom.element-method-removeAttribute) method does not remove all attributes if no parameter is given.
292* [#8679](http://dev.ckeditor.com/ticket/8679): Fixed: Better focus indication and ability to style the selected color in the [color picker dialog](http://ckeditor.com/addon/colordialog).
293* [#11697](http://dev.ckeditor.com/ticket/11697): Fixed: Content is replaced ignoring the letter case setting in the [Find and Replace](http://ckeditor.com/addon/find) dialog window.
294* [#13886](http://dev.ckeditor.com/ticket/13886): Fixed: Invalid handling of the [`CKEDITOR.style`](http://docs.ckeditor.com/#!/api/CKEDITOR.style) instance with the `styles` property by [`CKEDITOR.filter`](http://docs.ckeditor.com/#!/api/CKEDITOR.filter).
295* [#14535](http://dev.ckeditor.com/ticket/14535): Fixed: CSS syntax corrections. Thanks to [mdjdenormandie](https://github.com/mdjdenormandie)!
296
4## CKEditor 4.5.8 297## CKEditor 4.5.8
5 298
6New Features: 299New Features:
@@ -274,7 +567,7 @@ New Features:
274* Notification system: 567* Notification system:
275 * [#11580](http://dev.ckeditor.com/ticket/11580): Introduced the [notification system](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.notification). 568 * [#11580](http://dev.ckeditor.com/ticket/11580): Introduced the [notification system](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.notification).
276 * [#12810](http://dev.ckeditor.com/ticket/12810): Introduced a [notification aggregator](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.notificationAggregator) for the [notification system](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.notification) which simplifies displaying progress of many concurrent tasks. 569 * [#12810](http://dev.ckeditor.com/ticket/12810): Introduced a [notification aggregator](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.notificationAggregator) for the [notification system](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.notification) which simplifies displaying progress of many concurrent tasks.
277* [#11636](http://dev.ckeditor.com/ticket/11636): Introduced new, UX-focused, methods for getting selected HTML and deleting it &mdash; [`editor.getSelectedHtml()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-getSelectedHtml) and [`editor.deleteSelectedHtml()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-getSelectedHtml). 570* [#11636](http://dev.ckeditor.com/ticket/11636): Introduced new, UX-focused, methods for getting selected HTML and deleting it &mdash; [`editor.getSelectedHtml()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-getSelectedHtml) and [`editor.extractSelectedHtml()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-extractSelectedHtml).
278* [#12416](http://dev.ckeditor.com/ticket/12416): Added the [`widget.definition.upcastPriority`](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.widget.definition-property-upcastPriority) property which gives more control over widget upcasting order to the widget author. 571* [#12416](http://dev.ckeditor.com/ticket/12416): Added the [`widget.definition.upcastPriority`](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.widget.definition-property-upcastPriority) property which gives more control over widget upcasting order to the widget author.
279* [#12036](http://dev.ckeditor.com/ticket/12036): Initialize the editor in [read-only](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-property-readOnly) mode when the `<textarea>` element has a `readonly` attribute. 572* [#12036](http://dev.ckeditor.com/ticket/12036): Initialize the editor in [read-only](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-property-readOnly) mode when the `<textarea>` element has a `readonly` attribute.
280* [#11905](http://dev.ckeditor.com/ticket/11905): The [`resize` event](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-event-resize) passes the current dimensions in its data. 573* [#11905](http://dev.ckeditor.com/ticket/11905): The [`resize` event](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-event-resize) passes the current dimensions in its data.
diff --git a/release/LICENSE.md b/release/LICENSE.md
index 9ae5c06..044e7da 100644
--- a/release/LICENSE.md
+++ b/release/LICENSE.md
@@ -2,7 +2,7 @@ Software License Agreement
2========================== 2==========================
3 3
4CKEditor - The text editor for Internet - http://ckeditor.com 4CKEditor - The text editor for Internet - http://ckeditor.com
5Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 5Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
6 6
7Licensed under the terms of any of the following licenses at your 7Licensed under the terms of any of the following licenses at your
8choice: 8choice:
@@ -37,7 +37,7 @@ done by developers outside of CKSource with their express permission.
37 37
38The following libraries are included in CKEditor under the MIT license (see Appendix D): 38The following libraries are included in CKEditor under the MIT license (see Appendix D):
39 39
40* CKSource Samples Framework (included in the samples) - Copyright (c) 2014-2016, CKSource - Frederico Knabben. 40* CKSource Samples Framework (included in the samples) - Copyright (c) 2014-2017, CKSource - Frederico Knabben.
41* PicoModal (included in `samples/js/sf.js`) - Copyright (c) 2012 James Frasca. 41* PicoModal (included in `samples/js/sf.js`) - Copyright (c) 2012 James Frasca.
42* CodeMirror (included in the samples) - Copyright (C) 2014 by Marijn Haverbeke <marijnh@gmail.com> and others. 42* CodeMirror (included in the samples) - Copyright (C) 2014 by Marijn Haverbeke <marijnh@gmail.com> and others.
43 43
diff --git a/release/README.md b/release/README.md
index 5257b29..d18d4a1 100644
--- a/release/README.md
+++ b/release/README.md
@@ -1,7 +1,7 @@
1CKEditor 4 1CKEditor 4
2========== 2==========
3 3
4Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. 4Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
5http://ckeditor.com - See LICENSE.md for license information. 5http://ckeditor.com - See LICENSE.md for license information.
6 6
7CKEditor is a text editor to be used inside web pages. It's not a replacement 7CKEditor is a text editor to be used inside web pages. It's not a replacement
diff --git a/release/adapters/jquery.js b/release/adapters/jquery.js
index 9a99b65..86cb458 100644
--- a/release/adapters/jquery.js
+++ b/release/adapters/jquery.js
@@ -1,5 +1,5 @@
1/* 1/*
2 Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 For licensing, see LICENSE.md or http://ckeditor.com/license 3 For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5(function(a){if("undefined"==typeof a)throw Error("jQuery should be loaded before CKEditor jQuery adapter.");if("undefined"==typeof CKEDITOR)throw Error("CKEditor should be loaded before CKEditor jQuery adapter.");CKEDITOR.config.jqueryOverrideVal="undefined"==typeof CKEDITOR.config.jqueryOverrideVal?!0:CKEDITOR.config.jqueryOverrideVal;a.extend(a.fn,{ckeditorGet:function(){var a=this.eq(0).data("ckeditorInstance");if(!a)throw"CKEditor is not initialized yet, use ckeditor() with a callback.";return a}, 5(function(a){if("undefined"==typeof a)throw Error("jQuery should be loaded before CKEditor jQuery adapter.");if("undefined"==typeof CKEDITOR)throw Error("CKEditor should be loaded before CKEditor jQuery adapter.");CKEDITOR.config.jqueryOverrideVal="undefined"==typeof CKEDITOR.config.jqueryOverrideVal?!0:CKEDITOR.config.jqueryOverrideVal;a.extend(a.fn,{ckeditorGet:function(){var a=this.eq(0).data("ckeditorInstance");if(!a)throw"CKEditor is not initialized yet, use ckeditor() with a callback.";return a},
diff --git a/release/ckeditor.js b/release/ckeditor.js
index 4e067d0..f566561 100644
--- a/release/ckeditor.js
+++ b/release/ckeditor.js
@@ -1,15 +1,15 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5(function(){if(window.CKEDITOR&&window.CKEDITOR.dom)return;window.CKEDITOR||(window.CKEDITOR=function(){var a=/(^|.*[\\\/])ckeditor\.js(?:\?.*|;.*)?$/i,d={timestamp:"G2VC",version:"4.5.8",revision:"c1fc9a9",rnd:Math.floor(900*Math.random())+100,_:{pending:[],basePathSrcPattern:a},status:"unloaded",basePath:function(){var b=window.CKEDITOR_BASEPATH||"";if(!b)for(var c=document.getElementsByTagName("script"),d=0;d<c.length;d++){var k=c[d].src.match(a);if(k){b=k[1];break}}-1==b.indexOf(":/")&&"//"!=b.slice(0,2)&&(b=0===b.indexOf("/")?location.href.match(/^.*?:\/\/[^\/]*/)[0]+ 5(function(){if(window.CKEDITOR&&window.CKEDITOR.dom)return;window.CKEDITOR||(window.CKEDITOR=function(){var a=/(^|.*[\\\/])ckeditor\.js(?:\?.*|;.*)?$/i,d={timestamp:"H8DA",version:"4.7.3",revision:"dee99e2",rnd:Math.floor(900*Math.random())+100,_:{pending:[],basePathSrcPattern:a},status:"unloaded",basePath:function(){var b=window.CKEDITOR_BASEPATH||"";if(!b)for(var c=document.getElementsByTagName("script"),d=0;d<c.length;d++){var k=c[d].src.match(a);if(k){b=k[1];break}}-1==b.indexOf(":/")&&"//"!=b.slice(0,2)&&(b=0===b.indexOf("/")?location.href.match(/^.*?:\/\/[^\/]*/)[0]+
6b:location.href.match(/^[^\?]*\/(?:)/)[0]+b);if(!b)throw'The CKEditor installation path could not be automatically detected. Please set the global variable "CKEDITOR_BASEPATH" before creating editor instances.';return b}(),getUrl:function(a){-1==a.indexOf(":/")&&0!==a.indexOf("/")&&(a=this.basePath+a);this.timestamp&&"/"!=a.charAt(a.length-1)&&!/[&?]t=/.test(a)&&(a+=(0<=a.indexOf("?")?"\x26":"?")+"t\x3d"+this.timestamp);return a},domReady:function(){function a(){try{document.addEventListener?(document.removeEventListener("DOMContentLoaded", 6b:location.href.match(/^[^\?]*\/(?:)/)[0]+b);if(!b)throw'The CKEditor installation path could not be automatically detected. Please set the global variable "CKEDITOR_BASEPATH" before creating editor instances.';return b}(),getUrl:function(a){-1==a.indexOf(":/")&&0!==a.indexOf("/")&&(a=this.basePath+a);this.timestamp&&"/"!=a.charAt(a.length-1)&&!/[&?]t=/.test(a)&&(a+=(0<=a.indexOf("?")?"\x26":"?")+"t\x3d"+this.timestamp);return a},domReady:function(){function a(){try{document.addEventListener?(document.removeEventListener("DOMContentLoaded",
7a,!1),b()):document.attachEvent&&"complete"===document.readyState&&(document.detachEvent("onreadystatechange",a),b())}catch(c){}}function b(){for(var a;a=c.shift();)a()}var c=[];return function(b){function d(){try{document.documentElement.doScroll("left")}catch(f){setTimeout(d,1);return}a()}c.push(b);"complete"===document.readyState&&setTimeout(a,1);if(1==c.length)if(document.addEventListener)document.addEventListener("DOMContentLoaded",a,!1),window.addEventListener("load",a,!1);else if(document.attachEvent){document.attachEvent("onreadystatechange", 7a,!1),b()):document.attachEvent&&"complete"===document.readyState&&(document.detachEvent("onreadystatechange",a),b())}catch(c){}}function b(){for(var a;a=c.shift();)a()}var c=[];return function(b){function n(){try{document.documentElement.doScroll("left")}catch(f){setTimeout(n,1);return}a()}c.push(b);"complete"===document.readyState&&setTimeout(a,1);if(1==c.length)if(document.addEventListener)document.addEventListener("DOMContentLoaded",a,!1),window.addEventListener("load",a,!1);else if(document.attachEvent){document.attachEvent("onreadystatechange",
8a);window.attachEvent("onload",a);b=!1;try{b=!window.frameElement}catch(w){}document.documentElement.doScroll&&b&&d()}}}()},b=window.CKEDITOR_GETURL;if(b){var c=d.getUrl;d.getUrl=function(a){return b.call(d,a)||c.call(d,a)}}return d}()); 8a);window.attachEvent("onload",a);b=!1;try{b=!window.frameElement}catch(q){}document.documentElement.doScroll&&b&&n()}}}()},b=window.CKEDITOR_GETURL;if(b){var c=d.getUrl;d.getUrl=function(a){return b.call(d,a)||c.call(d,a)}}return d}());
9CKEDITOR.event||(CKEDITOR.event=function(){},CKEDITOR.event.implementOn=function(a){var d=CKEDITOR.event.prototype,b;for(b in d)null==a[b]&&(a[b]=d[b])},CKEDITOR.event.prototype=function(){function a(a){var e=d(this);return e[a]||(e[a]=new b(a))}var d=function(a){a=a.getPrivate&&a.getPrivate()||a._||(a._={});return a.events||(a.events={})},b=function(a){this.name=a;this.listeners=[]};b.prototype={getListenerIndex:function(a){for(var b=0,d=this.listeners;b<d.length;b++)if(d[b].fn==a)return b;return-1}}; 9CKEDITOR.event||(CKEDITOR.event=function(){},CKEDITOR.event.implementOn=function(a){var d=CKEDITOR.event.prototype,b;for(b in d)null==a[b]&&(a[b]=d[b])},CKEDITOR.event.prototype=function(){function a(a){var e=d(this);return e[a]||(e[a]=new b(a))}var d=function(a){a=a.getPrivate&&a.getPrivate()||a._||(a._={});return a.events||(a.events={})},b=function(a){this.name=a;this.listeners=[]};b.prototype={getListenerIndex:function(a){for(var b=0,d=this.listeners;b<d.length;b++)if(d[b].fn==a)return b;return-1}};
10return{define:function(b,d){var g=a.call(this,b);CKEDITOR.tools.extend(g,d,!0)},on:function(b,d,g,l,k){function n(a,f,x,k){a={name:b,sender:this,editor:a,data:f,listenerData:l,stop:x,cancel:k,removeListener:w};return!1===d.call(g,a)?!1:a.data}function w(){x.removeListener(b,d)}var f=a.call(this,b);if(0>f.getListenerIndex(d)){f=f.listeners;g||(g=this);isNaN(k)&&(k=10);var x=this;n.fn=d;n.priority=k;for(var A=f.length-1;0<=A;A--)if(f[A].priority<=k)return f.splice(A+1,0,n),{removeListener:w};f.unshift(n)}return{removeListener:w}}, 10return{define:function(b,d){var g=a.call(this,b);CKEDITOR.tools.extend(g,d,!0)},on:function(b,d,g,h,k){function n(a,f,D,k){a={name:b,sender:this,editor:a,data:f,listenerData:h,stop:D,cancel:k,removeListener:q};return!1===d.call(g,a)?!1:a.data}function q(){D.removeListener(b,d)}var f=a.call(this,b);if(0>f.getListenerIndex(d)){f=f.listeners;g||(g=this);isNaN(k)&&(k=10);var D=this;n.fn=d;n.priority=k;for(var w=f.length-1;0<=w;w--)if(f[w].priority<=k)return f.splice(w+1,0,n),{removeListener:q};f.unshift(n)}return{removeListener:q}},
11once:function(){var a=Array.prototype.slice.call(arguments),b=a[1];a[1]=function(a){a.removeListener();return b.apply(this,arguments)};return this.on.apply(this,a)},capture:function(){CKEDITOR.event.useCapture=1;var a=this.on.apply(this,arguments);CKEDITOR.event.useCapture=0;return a},fire:function(){var a=0,b=function(){a=1},g=0,l=function(){g=1};return function(k,n,w){var f=d(this)[k];k=a;var x=g;a=g=0;if(f){var A=f.listeners;if(A.length)for(var A=A.slice(0),u,B=0;B<A.length;B++){if(f.errorProof)try{u= 11once:function(){var a=Array.prototype.slice.call(arguments),b=a[1];a[1]=function(a){a.removeListener();return b.apply(this,arguments)};return this.on.apply(this,a)},capture:function(){CKEDITOR.event.useCapture=1;var a=this.on.apply(this,arguments);CKEDITOR.event.useCapture=0;return a},fire:function(){var a=0,b=function(){a=1},g=0,h=function(){g=1};return function(k,n,q){var f=d(this)[k];k=a;var D=g;a=g=0;if(f){var w=f.listeners;if(w.length)for(var w=w.slice(0),A,G=0;G<w.length;G++){if(f.errorProof)try{A=
12A[B].call(this,w,n,b,l)}catch(q){}else u=A[B].call(this,w,n,b,l);!1===u?g=1:"undefined"!=typeof u&&(n=u);if(a||g)break}}n=g?!1:"undefined"==typeof n?!0:n;a=k;g=x;return n}}(),fireOnce:function(a,b,g){b=this.fire(a,b,g);delete d(this)[a];return b},removeListener:function(a,b){var g=d(this)[a];if(g){var l=g.getListenerIndex(b);0<=l&&g.listeners.splice(l,1)}},removeAllListeners:function(){var a=d(this),b;for(b in a)delete a[b]},hasListeners:function(a){return(a=d(this)[a])&&0<a.listeners.length}}}()); 12w[G].call(this,q,n,b,h)}catch(x){}else A=w[G].call(this,q,n,b,h);!1===A?g=1:"undefined"!=typeof A&&(n=A);if(a||g)break}}n=g?!1:"undefined"==typeof n?!0:n;a=k;g=D;return n}}(),fireOnce:function(a,b,g){b=this.fire(a,b,g);delete d(this)[a];return b},removeListener:function(a,b){var g=d(this)[a];if(g){var h=g.getListenerIndex(b);0<=h&&g.listeners.splice(h,1)}},removeAllListeners:function(){var a=d(this),b;for(b in a)delete a[b]},hasListeners:function(a){return(a=d(this)[a])&&0<a.listeners.length}}}());
13CKEDITOR.editor||(CKEDITOR.editor=function(){CKEDITOR._.pending.push([this,arguments]);CKEDITOR.event.call(this)},CKEDITOR.editor.prototype.fire=function(a,d){a in{instanceReady:1,loaded:1}&&(this[a]=!0);return CKEDITOR.event.prototype.fire.call(this,a,d,this)},CKEDITOR.editor.prototype.fireOnce=function(a,d){a in{instanceReady:1,loaded:1}&&(this[a]=!0);return CKEDITOR.event.prototype.fireOnce.call(this,a,d,this)},CKEDITOR.event.implementOn(CKEDITOR.editor.prototype)); 13CKEDITOR.editor||(CKEDITOR.editor=function(){CKEDITOR._.pending.push([this,arguments]);CKEDITOR.event.call(this)},CKEDITOR.editor.prototype.fire=function(a,d){a in{instanceReady:1,loaded:1}&&(this[a]=!0);return CKEDITOR.event.prototype.fire.call(this,a,d,this)},CKEDITOR.editor.prototype.fireOnce=function(a,d){a in{instanceReady:1,loaded:1}&&(this[a]=!0);return CKEDITOR.event.prototype.fireOnce.call(this,a,d,this)},CKEDITOR.event.implementOn(CKEDITOR.editor.prototype));
14CKEDITOR.env||(CKEDITOR.env=function(){var a=navigator.userAgent.toLowerCase(),d=a.match(/edge[ \/](\d+.?\d*)/),b=-1<a.indexOf("trident/"),b=!(!d&&!b),b={ie:b,edge:!!d,webkit:!b&&-1<a.indexOf(" applewebkit/"),air:-1<a.indexOf(" adobeair/"),mac:-1<a.indexOf("macintosh"),quirks:"BackCompat"==document.compatMode&&(!document.documentMode||10>document.documentMode),mobile:-1<a.indexOf("mobile"),iOS:/(ipad|iphone|ipod)/.test(a),isCustomDomain:function(){if(!this.ie)return!1;var a=document.domain,b=window.location.hostname; 14CKEDITOR.env||(CKEDITOR.env=function(){var a=navigator.userAgent.toLowerCase(),d=a.match(/edge[ \/](\d+.?\d*)/),b=-1<a.indexOf("trident/"),b=!(!d&&!b),b={ie:b,edge:!!d,webkit:!b&&-1<a.indexOf(" applewebkit/"),air:-1<a.indexOf(" adobeair/"),mac:-1<a.indexOf("macintosh"),quirks:"BackCompat"==document.compatMode&&(!document.documentMode||10>document.documentMode),mobile:-1<a.indexOf("mobile"),iOS:/(ipad|iphone|ipod)/.test(a),isCustomDomain:function(){if(!this.ie)return!1;var a=document.domain,b=window.location.hostname;
15return a!=b&&a!="["+b+"]"},secure:"https:"==location.protocol};b.gecko="Gecko"==navigator.product&&!b.webkit&&!b.ie;b.webkit&&(-1<a.indexOf("chrome")?b.chrome=!0:b.safari=!0);var c=0;b.ie&&(c=d?parseFloat(d[1]):b.quirks||!document.documentMode?parseFloat(a.match(/msie (\d+)/)[1]):document.documentMode,b.ie9Compat=9==c,b.ie8Compat=8==c,b.ie7Compat=7==c,b.ie6Compat=7>c||b.quirks);b.gecko&&(d=a.match(/rv:([\d\.]+)/))&&(d=d[1].split("."),c=1E4*d[0]+100*(d[1]||0)+1*(d[2]||0));b.air&&(c=parseFloat(a.match(/ adobeair\/(\d+)/)[1])); 15return a!=b&&a!="["+b+"]"},secure:"https:"==location.protocol};b.gecko="Gecko"==navigator.product&&!b.webkit&&!b.ie;b.webkit&&(-1<a.indexOf("chrome")?b.chrome=!0:b.safari=!0);var c=0;b.ie&&(c=d?parseFloat(d[1]):b.quirks||!document.documentMode?parseFloat(a.match(/msie (\d+)/)[1]):document.documentMode,b.ie9Compat=9==c,b.ie8Compat=8==c,b.ie7Compat=7==c,b.ie6Compat=7>c||b.quirks);b.gecko&&(d=a.match(/rv:([\d\.]+)/))&&(d=d[1].split("."),c=1E4*d[0]+100*(d[1]||0)+1*(d[2]||0));b.air&&(c=parseFloat(a.match(/ adobeair\/(\d+)/)[1]));
@@ -19,29 +19,41 @@ b.iOS&&(b.cssClass+=" cke_browser_ios");b.hidpi&&(b.cssClass+=" cke_hidpi");retu
19CKEDITOR.loadFullCore,d=CKEDITOR.loadFullCoreTimeout;a&&(CKEDITOR.status="basic_ready",a&&a._load?a():d&&setTimeout(function(){CKEDITOR.loadFullCore&&CKEDITOR.loadFullCore()},1E3*d))})})();CKEDITOR.status="basic_loaded"}();"use strict";CKEDITOR.VERBOSITY_WARN=1;CKEDITOR.VERBOSITY_ERROR=2;CKEDITOR.verbosity=CKEDITOR.VERBOSITY_WARN|CKEDITOR.VERBOSITY_ERROR;CKEDITOR.warn=function(a,d){CKEDITOR.verbosity&CKEDITOR.VERBOSITY_WARN&&CKEDITOR.fire("log",{type:"warn",errorCode:a,additionalData:d})}; 19CKEDITOR.loadFullCore,d=CKEDITOR.loadFullCoreTimeout;a&&(CKEDITOR.status="basic_ready",a&&a._load?a():d&&setTimeout(function(){CKEDITOR.loadFullCore&&CKEDITOR.loadFullCore()},1E3*d))})})();CKEDITOR.status="basic_loaded"}();"use strict";CKEDITOR.VERBOSITY_WARN=1;CKEDITOR.VERBOSITY_ERROR=2;CKEDITOR.verbosity=CKEDITOR.VERBOSITY_WARN|CKEDITOR.VERBOSITY_ERROR;CKEDITOR.warn=function(a,d){CKEDITOR.verbosity&CKEDITOR.VERBOSITY_WARN&&CKEDITOR.fire("log",{type:"warn",errorCode:a,additionalData:d})};
20CKEDITOR.error=function(a,d){CKEDITOR.verbosity&CKEDITOR.VERBOSITY_ERROR&&CKEDITOR.fire("log",{type:"error",errorCode:a,additionalData:d})}; 20CKEDITOR.error=function(a,d){CKEDITOR.verbosity&CKEDITOR.VERBOSITY_ERROR&&CKEDITOR.fire("log",{type:"error",errorCode:a,additionalData:d})};
21CKEDITOR.on("log",function(a){if(window.console&&window.console.log){var d=console[a.data.type]?a.data.type:"log",b=a.data.errorCode;if(a=a.data.additionalData)console[d]("[CKEDITOR] Error code: "+b+".",a);else console[d]("[CKEDITOR] Error code: "+b+".");console[d]("[CKEDITOR] For more information about this error go to http://docs.ckeditor.com/#!/guide/dev_errors-section-"+b)}},null,null,999);CKEDITOR.dom={}; 21CKEDITOR.on("log",function(a){if(window.console&&window.console.log){var d=console[a.data.type]?a.data.type:"log",b=a.data.errorCode;if(a=a.data.additionalData)console[d]("[CKEDITOR] Error code: "+b+".",a);else console[d]("[CKEDITOR] Error code: "+b+".");console[d]("[CKEDITOR] For more information about this error go to http://docs.ckeditor.com/#!/guide/dev_errors-section-"+b)}},null,null,999);CKEDITOR.dom={};
22(function(){var a=[],d=CKEDITOR.env.gecko?"-moz-":CKEDITOR.env.webkit?"-webkit-":CKEDITOR.env.ie?"-ms-":"",b=/&/g,c=/>/g,e=/</g,g=/"/g,l=/&(lt|gt|amp|quot|nbsp|shy|#\d{1,5});/g,k={lt:"\x3c",gt:"\x3e",amp:"\x26",quot:'"',nbsp:" ",shy:"­"},n=function(a,f){return"#"==f[0]?String.fromCharCode(parseInt(f.slice(1),10)):k[f]};CKEDITOR.on("reset",function(){a=[]});CKEDITOR.tools={arrayCompare:function(a,f){if(!a&&!f)return!0;if(!a||!f||a.length!=f.length)return!1;for(var b=0;b<a.length;b++)if(a[b]!=f[b])return!1; 22(function(){var a=[],d=CKEDITOR.env.gecko?"-moz-":CKEDITOR.env.webkit?"-webkit-":CKEDITOR.env.ie?"-ms-":"",b=/&/g,c=/>/g,e=/</g,g=/"/g,h=/&(lt|gt|amp|quot|nbsp|shy|#\d{1,5});/g,k={lt:"\x3c",gt:"\x3e",amp:"\x26",quot:'"',nbsp:" ",shy:"­"},n=function(a,f){return"#"==f[0]?String.fromCharCode(parseInt(f.slice(1),10)):k[f]};CKEDITOR.on("reset",function(){a=[]});CKEDITOR.tools={arrayCompare:function(a,f){if(!a&&!f)return!0;if(!a||!f||a.length!=f.length)return!1;for(var b=0;b<a.length;b++)if(a[b]!=f[b])return!1;
23return!0},getIndex:function(a,f){for(var b=0;b<a.length;++b)if(f(a[b]))return b;return-1},clone:function(a){var f;if(a&&a instanceof Array){f=[];for(var b=0;b<a.length;b++)f[b]=CKEDITOR.tools.clone(a[b]);return f}if(null===a||"object"!=typeof a||a instanceof String||a instanceof Number||a instanceof Boolean||a instanceof Date||a instanceof RegExp||a.nodeType||a.window===a)return a;f=new a.constructor;for(b in a)f[b]=CKEDITOR.tools.clone(a[b]);return f},capitalize:function(a,f){return a.charAt(0).toUpperCase()+ 23return!0},getIndex:function(a,f){for(var b=0;b<a.length;++b)if(f(a[b]))return b;return-1},clone:function(a){var f;if(a&&a instanceof Array){f=[];for(var b=0;b<a.length;b++)f[b]=CKEDITOR.tools.clone(a[b]);return f}if(null===a||"object"!=typeof a||a instanceof String||a instanceof Number||a instanceof Boolean||a instanceof Date||a instanceof RegExp||a.nodeType||a.window===a)return a;f=new a.constructor;for(b in a)f[b]=CKEDITOR.tools.clone(a[b]);return f},capitalize:function(a,f){return a.charAt(0).toUpperCase()+
24(f?a.slice(1):a.slice(1).toLowerCase())},extend:function(a){var f=arguments.length,b,c;"boolean"==typeof(b=arguments[f-1])?f--:"boolean"==typeof(b=arguments[f-2])&&(c=arguments[f-1],f-=2);for(var k=1;k<f;k++){var d=arguments[k],q;for(q in d)if(!0===b||null==a[q])if(!c||q in c)a[q]=d[q]}return a},prototypedCopy:function(a){var f=function(){};f.prototype=a;return new f},copy:function(a){var f={},b;for(b in a)f[b]=a[b];return f},isArray:function(a){return"[object Array]"==Object.prototype.toString.call(a)}, 24(f?a.slice(1):a.slice(1).toLowerCase())},extend:function(a){var f=arguments.length,b,c;"boolean"==typeof(b=arguments[f-1])?f--:"boolean"==typeof(b=arguments[f-2])&&(c=arguments[f-1],f-=2);for(var k=1;k<f;k++){var d=arguments[k],n;for(n in d)if(!0===b||null==a[n])if(!c||n in c)a[n]=d[n]}return a},prototypedCopy:function(a){var f=function(){};f.prototype=a;return new f},copy:function(a){var f={},b;for(b in a)f[b]=a[b];return f},isArray:function(a){return"[object Array]"==Object.prototype.toString.call(a)},
25isEmpty:function(a){for(var f in a)if(a.hasOwnProperty(f))return!1;return!0},cssVendorPrefix:function(a,f,b){if(b)return d+a+":"+f+";"+a+":"+f;b={};b[a]=f;b[d+a]=f;return b},cssStyleToDomStyle:function(){var a=document.createElement("div").style,f="undefined"!=typeof a.cssFloat?"cssFloat":"undefined"!=typeof a.styleFloat?"styleFloat":"float";return function(a){return"float"==a?f:a.replace(/-./g,function(a){return a.substr(1).toUpperCase()})}}(),buildStyleHtml:function(a){a=[].concat(a);for(var f, 25isEmpty:function(a){for(var f in a)if(a.hasOwnProperty(f))return!1;return!0},cssVendorPrefix:function(a,f,b){if(b)return d+a+":"+f+";"+a+":"+f;b={};b[a]=f;b[d+a]=f;return b},cssStyleToDomStyle:function(){var a=document.createElement("div").style,f="undefined"!=typeof a.cssFloat?"cssFloat":"undefined"!=typeof a.styleFloat?"styleFloat":"float";return function(a){return"float"==a?f:a.replace(/-./g,function(a){return a.substr(1).toUpperCase()})}}(),buildStyleHtml:function(a){a=[].concat(a);for(var f,
26b=[],c=0;c<a.length;c++)if(f=a[c])/@import|[{}]/.test(f)?b.push("\x3cstyle\x3e"+f+"\x3c/style\x3e"):b.push('\x3clink type\x3d"text/css" rel\x3dstylesheet href\x3d"'+f+'"\x3e');return b.join("")},htmlEncode:function(a){return void 0===a||null===a?"":String(a).replace(b,"\x26amp;").replace(c,"\x26gt;").replace(e,"\x26lt;")},htmlDecode:function(a){return a.replace(l,n)},htmlEncodeAttr:function(a){return CKEDITOR.tools.htmlEncode(a).replace(g,"\x26quot;")},htmlDecodeAttr:function(a){return CKEDITOR.tools.htmlDecode(a)}, 26b=[],c=0;c<a.length;c++)if(f=a[c])/@import|[{}]/.test(f)?b.push("\x3cstyle\x3e"+f+"\x3c/style\x3e"):b.push('\x3clink type\x3d"text/css" rel\x3dstylesheet href\x3d"'+f+'"\x3e');return b.join("")},htmlEncode:function(a){return void 0===a||null===a?"":String(a).replace(b,"\x26amp;").replace(c,"\x26gt;").replace(e,"\x26lt;")},htmlDecode:function(a){return a.replace(h,n)},htmlEncodeAttr:function(a){return CKEDITOR.tools.htmlEncode(a).replace(g,"\x26quot;")},htmlDecodeAttr:function(a){return CKEDITOR.tools.htmlDecode(a)},
27transformPlainTextToHtml:function(a,f){var b=f==CKEDITOR.ENTER_BR,c=this.htmlEncode(a.replace(/\r\n/g,"\n")),c=c.replace(/\t/g,"\x26nbsp;\x26nbsp; \x26nbsp;"),k=f==CKEDITOR.ENTER_P?"p":"div";if(!b){var d=/\n{2}/g;if(d.test(c))var q="\x3c"+k+"\x3e",n="\x3c/"+k+"\x3e",c=q+c.replace(d,function(){return n+q})+n}c=c.replace(/\n/g,"\x3cbr\x3e");b||(c=c.replace(new RegExp("\x3cbr\x3e(?\x3d\x3c/"+k+"\x3e)"),function(a){return CKEDITOR.tools.repeat(a,2)}));c=c.replace(/^ | $/g,"\x26nbsp;");return c=c.replace(/(>|\s) /g, 27transformPlainTextToHtml:function(a,f){var b=f==CKEDITOR.ENTER_BR,c=this.htmlEncode(a.replace(/\r\n/g,"\n")),c=c.replace(/\t/g,"\x26nbsp;\x26nbsp; \x26nbsp;"),k=f==CKEDITOR.ENTER_P?"p":"div";if(!b){var d=/\n{2}/g;if(d.test(c))var n="\x3c"+k+"\x3e",m="\x3c/"+k+"\x3e",c=n+c.replace(d,function(){return m+n})+m}c=c.replace(/\n/g,"\x3cbr\x3e");b||(c=c.replace(new RegExp("\x3cbr\x3e(?\x3d\x3c/"+k+"\x3e)"),function(a){return CKEDITOR.tools.repeat(a,2)}));c=c.replace(/^ | $/g,"\x26nbsp;");return c=c.replace(/(>|\s) /g,
28function(a,f){return f+"\x26nbsp;"}).replace(/ (?=<)/g,"\x26nbsp;")},getNextNumber:function(){var a=0;return function(){return++a}}(),getNextId:function(){return"cke_"+this.getNextNumber()},getUniqueId:function(){for(var a="e",f=0;8>f;f++)a+=Math.floor(65536*(1+Math.random())).toString(16).substring(1);return a},override:function(a,f){var b=f(a);b.prototype=a.prototype;return b},setTimeout:function(a,f,b,c,k){k||(k=window);b||(b=k);return k.setTimeout(function(){c?a.apply(b,[].concat(c)):a.apply(b)}, 28function(a,f){return f+"\x26nbsp;"}).replace(/ (?=<)/g,"\x26nbsp;")},getNextNumber:function(){var a=0;return function(){return++a}}(),getNextId:function(){return"cke_"+this.getNextNumber()},getUniqueId:function(){for(var a="e",f=0;8>f;f++)a+=Math.floor(65536*(1+Math.random())).toString(16).substring(1);return a},override:function(a,f){var b=f(a);b.prototype=a.prototype;return b},setTimeout:function(a,f,b,c,k){k||(k=window);b||(b=k);return k.setTimeout(function(){c?a.apply(b,[].concat(c)):a.apply(b)},
29f||0)},trim:function(){var a=/(?:^[ \t\n\r]+)|(?:[ \t\n\r]+$)/g;return function(f){return f.replace(a,"")}}(),ltrim:function(){var a=/^[ \t\n\r]+/g;return function(f){return f.replace(a,"")}}(),rtrim:function(){var a=/[ \t\n\r]+$/g;return function(f){return f.replace(a,"")}}(),indexOf:function(a,f){if("function"==typeof f)for(var b=0,c=a.length;b<c;b++){if(f(a[b]))return b}else{if(a.indexOf)return a.indexOf(f);b=0;for(c=a.length;b<c;b++)if(a[b]===f)return b}return-1},search:function(a,b){var c=CKEDITOR.tools.indexOf(a, 29f||0)},trim:function(){var a=/(?:^[ \t\n\r]+)|(?:[ \t\n\r]+$)/g;return function(f){return f.replace(a,"")}}(),ltrim:function(){var a=/^[ \t\n\r]+/g;return function(f){return f.replace(a,"")}}(),rtrim:function(){var a=/[ \t\n\r]+$/g;return function(f){return f.replace(a,"")}}(),indexOf:function(a,f){if("function"==typeof f)for(var b=0,c=a.length;b<c;b++){if(f(a[b]))return b}else{if(a.indexOf)return a.indexOf(f);b=0;for(c=a.length;b<c;b++)if(a[b]===f)return b}return-1},search:function(a,f){var b=CKEDITOR.tools.indexOf(a,
30b);return 0<=c?a[c]:null},bind:function(a,b){return function(){return a.apply(b,arguments)}},createClass:function(a){var b=a.$,c=a.base,k=a.privates||a._,d=a.proto;a=a.statics;!b&&(b=function(){c&&this.base.apply(this,arguments)});if(k)var n=b,b=function(){var a=this._||(this._={}),b;for(b in k){var f=k[b];a[b]="function"==typeof f?CKEDITOR.tools.bind(f,this):f}n.apply(this,arguments)};c&&(b.prototype=this.prototypedCopy(c.prototype),b.prototype.constructor=b,b.base=c,b.baseProto=c.prototype,b.prototype.base= 30f);return 0<=b?a[b]:null},bind:function(a,f){return function(){return a.apply(f,arguments)}},createClass:function(a){var f=a.$,b=a.base,c=a.privates||a._,k=a.proto;a=a.statics;!f&&(f=function(){b&&this.base.apply(this,arguments)});if(c)var d=f,f=function(){var a=this._||(this._={}),f;for(f in c){var b=c[f];a[f]="function"==typeof b?CKEDITOR.tools.bind(b,this):b}d.apply(this,arguments)};b&&(f.prototype=this.prototypedCopy(b.prototype),f.prototype.constructor=f,f.base=b,f.baseProto=b.prototype,f.prototype.base=
31function(){this.base=c.prototype.base;c.apply(this,arguments);this.base=arguments.callee});d&&this.extend(b.prototype,d,!0);a&&this.extend(b,a,!0);return b},addFunction:function(b,f){return a.push(function(){return b.apply(f||this,arguments)})-1},removeFunction:function(b){a[b]=null},callFunction:function(b){var f=a[b];return f&&f.apply(window,Array.prototype.slice.call(arguments,1))},cssLength:function(){var a=/^-?\d+\.?\d*px$/,b;return function(c){b=CKEDITOR.tools.trim(c+"")+"px";return a.test(b)? 31function(){this.base=b.prototype.base;b.apply(this,arguments);this.base=arguments.callee});k&&this.extend(f.prototype,k,!0);a&&this.extend(f,a,!0);return f},addFunction:function(b,f){return a.push(function(){return b.apply(f||this,arguments)})-1},removeFunction:function(b){a[b]=null},callFunction:function(b){var f=a[b];return f&&f.apply(window,Array.prototype.slice.call(arguments,1))},cssLength:function(){var a=/^-?\d+\.?\d*px$/,f;return function(b){f=CKEDITOR.tools.trim(b+"")+"px";return a.test(f)?
32b:c||""}}(),convertToPx:function(){var a;return function(b){a||(a=CKEDITOR.dom.element.createFromHtml('\x3cdiv style\x3d"position:absolute;left:-9999px;top:-9999px;margin:0px;padding:0px;border:0px;"\x3e\x3c/div\x3e',CKEDITOR.document),CKEDITOR.document.getBody().append(a));return/%$/.test(b)?b:(a.setStyle("width",b),a.$.clientWidth)}}(),repeat:function(a,b){return Array(b+1).join(a)},tryThese:function(){for(var a,b=0,c=arguments.length;b<c;b++){var k=arguments[b];try{a=k();break}catch(d){}}return a}, 32f:b||""}}(),convertToPx:function(){var a;return function(f){a||(a=CKEDITOR.dom.element.createFromHtml('\x3cdiv style\x3d"position:absolute;left:-9999px;top:-9999px;margin:0px;padding:0px;border:0px;"\x3e\x3c/div\x3e',CKEDITOR.document),CKEDITOR.document.getBody().append(a));return/%$/.test(f)?f:(a.setStyle("width",f),a.$.clientWidth)}}(),repeat:function(a,f){return Array(f+1).join(a)},tryThese:function(){for(var a,f=0,b=arguments.length;f<b;f++){var c=arguments[f];try{a=c();break}catch(k){}}return a},
33genKey:function(){return Array.prototype.slice.call(arguments).join("-")},defer:function(a){return function(){var b=arguments,c=this;window.setTimeout(function(){a.apply(c,b)},0)}},normalizeCssText:function(a,b){var c=[],k,d=CKEDITOR.tools.parseCssText(a,!0,b);for(k in d)c.push(k+":"+d[k]);c.sort();return c.length?c.join(";")+";":""},convertRgbToHex:function(a){return a.replace(/(?:rgb\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\))/gi,function(a,b,c,k){a=[b,c,k];for(b=0;3>b;b++)a[b]=("0"+parseInt(a[b],10).toString(16)).slice(-2); 33genKey:function(){return Array.prototype.slice.call(arguments).join("-")},defer:function(a){return function(){var f=arguments,b=this;window.setTimeout(function(){a.apply(b,f)},0)}},normalizeCssText:function(a,f){var b=[],c,k=CKEDITOR.tools.parseCssText(a,!0,f);for(c in k)b.push(c+":"+k[c]);b.sort();return b.length?b.join(";")+";":""},convertRgbToHex:function(a){return a.replace(/(?:rgb\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\))/gi,function(a,b,c,k){a=[b,c,k];for(b=0;3>b;b++)a[b]=("0"+parseInt(a[b],10).toString(16)).slice(-2);
34return"#"+a.join("")})},parseCssText:function(a,b,c){var k={};c&&(c=new CKEDITOR.dom.element("span"),c.setAttribute("style",a),a=CKEDITOR.tools.convertRgbToHex(c.getAttribute("style")||""));if(!a||";"==a)return k;a.replace(/&quot;/g,'"').replace(/\s*([^:;\s]+)\s*:\s*([^;]+)\s*(?=;|$)/g,function(a,c,d){b&&(c=c.toLowerCase(),"font-family"==c&&(d=d.toLowerCase().replace(/["']/g,"").replace(/\s*,\s*/g,",")),d=CKEDITOR.tools.trim(d));k[c]=d});return k},writeCssText:function(a,b){var c,k=[];for(c in a)k.push(c+ 34return"#"+a.join("")})},normalizeHex:function(a){return a.replace(/#(([0-9a-f]{3}){1,2})($|;|\s+)/gi,function(a,b,c,k){a=b.toLowerCase();3==a.length&&(a=a.split(""),a=[a[0],a[0],a[1],a[1],a[2],a[2]].join(""));return"#"+a+k})},parseCssText:function(a,f,b){var c={};b&&(a=(new CKEDITOR.dom.element("span")).setAttribute("style",a).getAttribute("style")||"");a&&(a=CKEDITOR.tools.normalizeHex(CKEDITOR.tools.convertRgbToHex(a)));if(!a||";"==a)return c;a.replace(/&quot;/g,'"').replace(/\s*([^:;\s]+)\s*:\s*([^;]+)\s*(?=;|$)/g,
35":"+a[c]);b&&k.sort();return k.join("; ")},objectCompare:function(a,b,c){var k;if(!a&&!b)return!0;if(!a||!b)return!1;for(k in a)if(a[k]!=b[k])return!1;if(!c)for(k in b)if(a[k]!=b[k])return!1;return!0},objectKeys:function(a){var b=[],c;for(c in a)b.push(c);return b},convertArrayToObject:function(a,b){var c={};1==arguments.length&&(b=!0);for(var k=0,d=a.length;k<d;++k)c[a[k]]=b;return c},fixDomain:function(){for(var a;;)try{a=window.parent.document.domain;break}catch(b){a=a?a.replace(/.+?(?:\.|$)/, 35function(a,b,k){f&&(b=b.toLowerCase(),"font-family"==b&&(k=k.replace(/\s*,\s*/g,",")),k=CKEDITOR.tools.trim(k));c[b]=k});return c},writeCssText:function(a,f){var b,c=[];for(b in a)c.push(b+":"+a[b]);f&&c.sort();return c.join("; ")},objectCompare:function(a,f,b){var c;if(!a&&!f)return!0;if(!a||!f)return!1;for(c in a)if(a[c]!=f[c])return!1;if(!b)for(c in f)if(a[c]!=f[c])return!1;return!0},objectKeys:function(a){var f=[],b;for(b in a)f.push(b);return f},convertArrayToObject:function(a,f){var b={};1==
36""):document.domain;if(!a)break;document.domain=a}return!!a},eventsBuffer:function(a,b,c){function k(){n=(new Date).getTime();d=!1;c?b.call(c):b()}var d,n=0;return{input:function(){if(!d){var b=(new Date).getTime()-n;b<a?d=setTimeout(k,a-b):k()}},reset:function(){d&&clearTimeout(d);d=n=0}}},enableHtml5Elements:function(a,b){for(var c="abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup main mark meter nav output progress section summary time video".split(" "), 36arguments.length&&(f=!0);for(var c=0,k=a.length;c<k;++c)b[a[c]]=f;return b},fixDomain:function(){for(var a;;)try{a=window.parent.document.domain;break}catch(f){a=a?a.replace(/.+?(?:\.|$)/,""):document.domain;if(!a)break;document.domain=a}return!!a},eventsBuffer:function(a,f,b){function c(){d=(new Date).getTime();k=!1;b?f.call(b):f()}var k,d=0;return{input:function(){if(!k){var f=(new Date).getTime()-d;f<a?k=setTimeout(c,a-f):c()}},reset:function(){k&&clearTimeout(k);k=d=0}}},enableHtml5Elements:function(a,
37k=c.length,d;k--;)d=a.createElement(c[k]),b&&a.appendChild(d)},checkIfAnyArrayItemMatches:function(a,b){for(var c=0,k=a.length;c<k;++c)if(a[c].match(b))return!0;return!1},checkIfAnyObjectPropertyMatches:function(a,b){for(var c in a)if(c.match(b))return!0;return!1},transparentImageData:"data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw\x3d\x3d",getCookie:function(a){a=a.toLowerCase();for(var b=document.cookie.split(";"),c,k,d=0;d<b.length;d++)if(c=b[d].split("\x3d"), 37f){for(var b="abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup main mark meter nav output progress section summary time video".split(" "),c=b.length,k;c--;)k=a.createElement(b[c]),f&&a.appendChild(k)},checkIfAnyArrayItemMatches:function(a,f){for(var b=0,c=a.length;b<c;++b)if(a[b].match(f))return!0;return!1},checkIfAnyObjectPropertyMatches:function(a,f){for(var b in a)if(b.match(f))return!0;return!1},keystrokeToString:function(a,b){var c=b&16711680,k=
38k=decodeURIComponent(CKEDITOR.tools.trim(c[0]).toLowerCase()),k===a)return decodeURIComponent(1<c.length?c[1]:"");return null},setCookie:function(a,b){document.cookie=encodeURIComponent(a)+"\x3d"+encodeURIComponent(b)+";path\x3d/"},getCsrfToken:function(){var a=CKEDITOR.tools.getCookie("ckCsrfToken");if(!a||40!=a.length){var a=[],b="";if(window.crypto&&window.crypto.getRandomValues)a=new Uint8Array(40),window.crypto.getRandomValues(a);else for(var c=0;40>c;c++)a.push(Math.floor(256*Math.random())); 38b&65535,d=CKEDITOR.env.mac,n=[],e=[];c&CKEDITOR.CTRL&&(n.push(d?"⌘":a[17]),e.push(d?a[224]:a[17]));c&CKEDITOR.ALT&&(n.push(d?"⌥":a[18]),e.push(a[18]));c&CKEDITOR.SHIFT&&(n.push(d?"⇧":a[16]),e.push(a[16]));k&&(a[k]?(n.push(a[k]),e.push(a[k])):(n.push(String.fromCharCode(k)),e.push(String.fromCharCode(k))));return{display:n.join("+"),aria:e.join("+")}},transparentImageData:"data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw\x3d\x3d",getCookie:function(a){a=a.toLowerCase();
39for(c=0;c<a.length;c++)var k="abcdefghijklmnopqrstuvwxyz0123456789".charAt(a[c]%36),b=b+(.5<Math.random()?k.toUpperCase():k);a=b;CKEDITOR.tools.setCookie("ckCsrfToken",a)}return a}}})(); 39for(var b=document.cookie.split(";"),c,k,d=0;d<b.length;d++)if(c=b[d].split("\x3d"),k=decodeURIComponent(CKEDITOR.tools.trim(c[0]).toLowerCase()),k===a)return decodeURIComponent(1<c.length?c[1]:"");return null},setCookie:function(a,b){document.cookie=encodeURIComponent(a)+"\x3d"+encodeURIComponent(b)+";path\x3d/"},getCsrfToken:function(){var a=CKEDITOR.tools.getCookie("ckCsrfToken");if(!a||40!=a.length){var a=[],b="";if(window.crypto&&window.crypto.getRandomValues)a=new Uint8Array(40),window.crypto.getRandomValues(a);
40CKEDITOR.dtd=function(){var a=CKEDITOR.tools.extend,d=function(a,b){for(var c=CKEDITOR.tools.clone(a),k=1;k<arguments.length;k++){b=arguments[k];for(var d in b)delete c[d]}return c},b={},c={},e={address:1,article:1,aside:1,blockquote:1,details:1,div:1,dl:1,fieldset:1,figure:1,footer:1,form:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,header:1,hgroup:1,hr:1,main:1,menu:1,nav:1,ol:1,p:1,pre:1,section:1,table:1,ul:1},g={command:1,link:1,meta:1,noscript:1,script:1,style:1},l={},k={"#":1},n={center:1,dir:1,noframes:1}; 40else for(var c=0;40>c;c++)a.push(Math.floor(256*Math.random()));for(c=0;c<a.length;c++)var k="abcdefghijklmnopqrstuvwxyz0123456789".charAt(a[c]%36),b=b+(.5<Math.random()?k.toUpperCase():k);a=b;CKEDITOR.tools.setCookie("ckCsrfToken",a)}return a},escapeCss:function(a){return a?window.CSS&&CSS.escape?CSS.escape(a):isNaN(parseInt(a.charAt(0),10))?a:"\\3"+a.charAt(0)+" "+a.substring(1,a.length):""},getMouseButton:function(a){var b=(a=a.data)&&a.$;return a&&b?CKEDITOR.env.ie&&9>CKEDITOR.env.version?4===
41b.button?CKEDITOR.MOUSE_BUTTON_MIDDLE:1===b.button?CKEDITOR.MOUSE_BUTTON_LEFT:CKEDITOR.MOUSE_BUTTON_RIGHT:b.button:!1},style:{parse:{_colors:{aliceblue:"#F0F8FF",antiquewhite:"#FAEBD7",aqua:"#00FFFF",aquamarine:"#7FFFD4",azure:"#F0FFFF",beige:"#F5F5DC",bisque:"#FFE4C4",black:"#000000",blanchedalmond:"#FFEBCD",blue:"#0000FF",blueviolet:"#8A2BE2",brown:"#A52A2A",burlywood:"#DEB887",cadetblue:"#5F9EA0",chartreuse:"#7FFF00",chocolate:"#D2691E",coral:"#FF7F50",cornflowerblue:"#6495ED",cornsilk:"#FFF8DC",
42crimson:"#DC143C",cyan:"#00FFFF",darkblue:"#00008B",darkcyan:"#008B8B",darkgoldenrod:"#B8860B",darkgray:"#A9A9A9",darkgreen:"#006400",darkgrey:"#A9A9A9",darkkhaki:"#BDB76B",darkmagenta:"#8B008B",darkolivegreen:"#556B2F",darkorange:"#FF8C00",darkorchid:"#9932CC",darkred:"#8B0000",darksalmon:"#E9967A",darkseagreen:"#8FBC8F",darkslateblue:"#483D8B",darkslategray:"#2F4F4F",darkslategrey:"#2F4F4F",darkturquoise:"#00CED1",darkviolet:"#9400D3",deeppink:"#FF1493",deepskyblue:"#00BFFF",dimgray:"#696969",dimgrey:"#696969",
43dodgerblue:"#1E90FF",firebrick:"#B22222",floralwhite:"#FFFAF0",forestgreen:"#228B22",fuchsia:"#FF00FF",gainsboro:"#DCDCDC",ghostwhite:"#F8F8FF",gold:"#FFD700",goldenrod:"#DAA520",gray:"#808080",green:"#008000",greenyellow:"#ADFF2F",grey:"#808080",honeydew:"#F0FFF0",hotpink:"#FF69B4",indianred:"#CD5C5C",indigo:"#4B0082",ivory:"#FFFFF0",khaki:"#F0E68C",lavender:"#E6E6FA",lavenderblush:"#FFF0F5",lawngreen:"#7CFC00",lemonchiffon:"#FFFACD",lightblue:"#ADD8E6",lightcoral:"#F08080",lightcyan:"#E0FFFF",lightgoldenrodyellow:"#FAFAD2",
44lightgray:"#D3D3D3",lightgreen:"#90EE90",lightgrey:"#D3D3D3",lightpink:"#FFB6C1",lightsalmon:"#FFA07A",lightseagreen:"#20B2AA",lightskyblue:"#87CEFA",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#B0C4DE",lightyellow:"#FFFFE0",lime:"#00FF00",limegreen:"#32CD32",linen:"#FAF0E6",magenta:"#FF00FF",maroon:"#800000",mediumaquamarine:"#66CDAA",mediumblue:"#0000CD",mediumorchid:"#BA55D3",mediumpurple:"#9370DB",mediumseagreen:"#3CB371",mediumslateblue:"#7B68EE",mediumspringgreen:"#00FA9A",
45mediumturquoise:"#48D1CC",mediumvioletred:"#C71585",midnightblue:"#191970",mintcream:"#F5FFFA",mistyrose:"#FFE4E1",moccasin:"#FFE4B5",navajowhite:"#FFDEAD",navy:"#000080",oldlace:"#FDF5E6",olive:"#808000",olivedrab:"#6B8E23",orange:"#FFA500",orangered:"#FF4500",orchid:"#DA70D6",palegoldenrod:"#EEE8AA",palegreen:"#98FB98",paleturquoise:"#AFEEEE",palevioletred:"#DB7093",papayawhip:"#FFEFD5",peachpuff:"#FFDAB9",peru:"#CD853F",pink:"#FFC0CB",plum:"#DDA0DD",powderblue:"#B0E0E6",purple:"#800080",rebeccapurple:"#663399",
46red:"#FF0000",rosybrown:"#BC8F8F",royalblue:"#4169E1",saddlebrown:"#8B4513",salmon:"#FA8072",sandybrown:"#F4A460",seagreen:"#2E8B57",seashell:"#FFF5EE",sienna:"#A0522D",silver:"#C0C0C0",skyblue:"#87CEEB",slateblue:"#6A5ACD",slategray:"#708090",slategrey:"#708090",snow:"#FFFAFA",springgreen:"#00FF7F",steelblue:"#4682B4",tan:"#D2B48C",teal:"#008080",thistle:"#D8BFD8",tomato:"#FF6347",turquoise:"#40E0D0",violet:"#EE82EE",wheat:"#F5DEB3",white:"#FFFFFF",whitesmoke:"#F5F5F5",yellow:"#FFFF00",yellowgreen:"#9ACD32"},
47_borderStyle:"none hidden dotted dashed solid double groove ridge inset outset".split(" "),_widthRegExp:/^(thin|medium|thick|[\+-]?\d+(\.\d+)?[a-z%]+|[\+-]?0+(\.0+)?|\.\d+[a-z%]+)$/,_rgbaRegExp:/rgba?\(\s*\d+%?\s*,\s*\d+%?\s*,\s*\d+%?\s*(?:,\s*[0-9.]+\s*)?\)/gi,_hslaRegExp:/hsla?\(\s*[0-9.]+\s*,\s*\d+%\s*,\s*\d+%\s*(?:,\s*[0-9.]+\s*)?\)/gi,background:function(a){var b={},c=this._findColor(a);c.length&&(b.color=c[0],CKEDITOR.tools.array.forEach(c,function(b){a=a.replace(b,"")}));if(a=CKEDITOR.tools.trim(a))b.unprocessed=
48a;return b},margin:function(a){function b(a){c.top=k[a[0]];c.right=k[a[1]];c.bottom=k[a[2]];c.left=k[a[3]]}var c={},k=a.match(/(?:\-?[\.\d]+(?:%|\w*)|auto|inherit|initial|unset)/g)||["0px"];switch(k.length){case 1:b([0,0,0,0]);break;case 2:b([0,1,0,1]);break;case 3:b([0,1,2,1]);break;case 4:b([0,1,2,3])}return c},border:function(a){var b={};a=a.split(/\s+/);CKEDITOR.tools.array.forEach(a,function(a){if(!b.color){var c=CKEDITOR.tools.style.parse._findColor(a);if(c.length){b.color=c[0];return}}b.style||
49-1===CKEDITOR.tools.indexOf(CKEDITOR.tools.style.parse._borderStyle,a)?!b.width&&CKEDITOR.tools.style.parse._widthRegExp.test(a)&&(b.width=a):b.style=a});return b},_findColor:function(a){var b=[],c=CKEDITOR.tools.array,b=b.concat(a.match(this._rgbaRegExp)||[]),b=b.concat(a.match(this._hslaRegExp)||[]);return b=b.concat(c.filter(a.split(/\s+/),function(a){return a.match(/^\#[a-f0-9]{3}(?:[a-f0-9]{3})?$/gi)?!0:a.toLowerCase()in CKEDITOR.tools.style.parse._colors}))}}},array:{filter:function(a,b,c){var k=
50[];this.forEach(a,function(d,n){b.call(c,d,n,a)&&k.push(d)});return k},forEach:function(a,b,c){var k=a.length,d;for(d=0;d<k;d++)b.call(c,a[d],d,a)},map:function(a,b,c){for(var k=[],d=0;d<a.length;d++)k.push(b.call(c,a[d],d,a));return k},reduce:function(a,b,c,k){for(var d=0;d<a.length;d++)c=b.call(k,c,a[d],d,a);return c}},object:{findKey:function(a,b){if("object"!==typeof a)return null;for(var c in a)if(a[c]===b)return c;return null}}};CKEDITOR.tools.array.indexOf=CKEDITOR.tools.indexOf;CKEDITOR.tools.array.isArray=
51CKEDITOR.tools.isArray;CKEDITOR.MOUSE_BUTTON_LEFT=0;CKEDITOR.MOUSE_BUTTON_MIDDLE=1;CKEDITOR.MOUSE_BUTTON_RIGHT=2})();
52CKEDITOR.dtd=function(){var a=CKEDITOR.tools.extend,d=function(a,b){for(var c=CKEDITOR.tools.clone(a),k=1;k<arguments.length;k++){b=arguments[k];for(var d in b)delete c[d]}return c},b={},c={},e={address:1,article:1,aside:1,blockquote:1,details:1,div:1,dl:1,fieldset:1,figure:1,footer:1,form:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,header:1,hgroup:1,hr:1,main:1,menu:1,nav:1,ol:1,p:1,pre:1,section:1,table:1,ul:1},g={command:1,link:1,meta:1,noscript:1,script:1,style:1},h={},k={"#":1},n={center:1,dir:1,noframes:1};
41a(b,{a:1,abbr:1,area:1,audio:1,b:1,bdi:1,bdo:1,br:1,button:1,canvas:1,cite:1,code:1,command:1,datalist:1,del:1,dfn:1,em:1,embed:1,i:1,iframe:1,img:1,input:1,ins:1,kbd:1,keygen:1,label:1,map:1,mark:1,meter:1,noscript:1,object:1,output:1,progress:1,q:1,ruby:1,s:1,samp:1,script:1,select:1,small:1,span:1,strong:1,sub:1,sup:1,textarea:1,time:1,u:1,"var":1,video:1,wbr:1},k,{acronym:1,applet:1,basefont:1,big:1,font:1,isindex:1,strike:1,style:1,tt:1});a(c,e,b,n);d={a:d(b,{a:1,button:1}),abbr:b,address:c, 53a(b,{a:1,abbr:1,area:1,audio:1,b:1,bdi:1,bdo:1,br:1,button:1,canvas:1,cite:1,code:1,command:1,datalist:1,del:1,dfn:1,em:1,embed:1,i:1,iframe:1,img:1,input:1,ins:1,kbd:1,keygen:1,label:1,map:1,mark:1,meter:1,noscript:1,object:1,output:1,progress:1,q:1,ruby:1,s:1,samp:1,script:1,select:1,small:1,span:1,strong:1,sub:1,sup:1,textarea:1,time:1,u:1,"var":1,video:1,wbr:1},k,{acronym:1,applet:1,basefont:1,big:1,font:1,isindex:1,strike:1,style:1,tt:1});a(c,e,b,n);d={a:d(b,{a:1,button:1}),abbr:b,address:c,
42area:l,article:c,aside:c,audio:a({source:1,track:1},c),b:b,base:l,bdi:b,bdo:b,blockquote:c,body:c,br:l,button:d(b,{a:1,button:1}),canvas:b,caption:c,cite:b,code:b,col:l,colgroup:{col:1},command:l,datalist:a({option:1},b),dd:c,del:b,details:a({summary:1},c),dfn:b,div:c,dl:{dt:1,dd:1},dt:c,em:b,embed:l,fieldset:a({legend:1},c),figcaption:c,figure:a({figcaption:1},c),footer:c,form:c,h1:b,h2:b,h3:b,h4:b,h5:b,h6:b,head:a({title:1,base:1},g),header:c,hgroup:{h1:1,h2:1,h3:1,h4:1,h5:1,h6:1},hr:l,html:a({head:1, 54area:h,article:c,aside:c,audio:a({source:1,track:1},c),b:b,base:h,bdi:b,bdo:b,blockquote:c,body:c,br:h,button:d(b,{a:1,button:1}),canvas:b,caption:c,cite:b,code:b,col:h,colgroup:{col:1},command:h,datalist:a({option:1},b),dd:c,del:b,details:a({summary:1},c),dfn:b,div:c,dl:{dt:1,dd:1},dt:c,em:b,embed:h,fieldset:a({legend:1},c),figcaption:c,figure:a({figcaption:1},c),footer:c,form:c,h1:b,h2:b,h3:b,h4:b,h5:b,h6:b,head:a({title:1,base:1},g),header:c,hgroup:{h1:1,h2:1,h3:1,h4:1,h5:1,h6:1},hr:h,html:a({head:1,
43body:1},c,g),i:b,iframe:k,img:l,input:l,ins:b,kbd:b,keygen:l,label:b,legend:b,li:c,link:l,main:c,map:c,mark:b,menu:a({li:1},c),meta:l,meter:d(b,{meter:1}),nav:c,noscript:a({link:1,meta:1,style:1},b),object:a({param:1},b),ol:{li:1},optgroup:{option:1},option:k,output:b,p:b,param:l,pre:b,progress:d(b,{progress:1}),q:b,rp:b,rt:b,ruby:a({rp:1,rt:1},b),s:b,samp:b,script:k,section:c,select:{optgroup:1,option:1},small:b,source:l,span:b,strong:b,style:k,sub:b,summary:a({h1:1,h2:1,h3:1,h4:1,h5:1,h6:1},b), 55body:1},c,g),i:b,iframe:k,img:h,input:h,ins:b,kbd:b,keygen:h,label:b,legend:b,li:c,link:h,main:c,map:c,mark:b,menu:a({li:1},c),meta:h,meter:d(b,{meter:1}),nav:c,noscript:a({link:1,meta:1,style:1},b),object:a({param:1},b),ol:{li:1},optgroup:{option:1},option:k,output:b,p:b,param:h,pre:b,progress:d(b,{progress:1}),q:b,rp:b,rt:b,ruby:a({rp:1,rt:1},b),s:b,samp:b,script:k,section:c,select:{optgroup:1,option:1},small:b,source:h,span:b,strong:b,style:k,sub:b,summary:a({h1:1,h2:1,h3:1,h4:1,h5:1,h6:1},b),
44sup:b,table:{caption:1,colgroup:1,thead:1,tfoot:1,tbody:1,tr:1},tbody:{tr:1},td:c,textarea:k,tfoot:{tr:1},th:c,thead:{tr:1},time:d(b,{time:1}),title:k,tr:{th:1,td:1},track:l,u:b,ul:{li:1},"var":b,video:a({source:1,track:1},c),wbr:l,acronym:b,applet:a({param:1},c),basefont:l,big:b,center:c,dialog:l,dir:{li:1},font:b,isindex:l,noframes:c,strike:b,tt:b};a(d,{$block:a({audio:1,dd:1,dt:1,figcaption:1,li:1,video:1},e,n),$blockLimit:{article:1,aside:1,audio:1,body:1,caption:1,details:1,dir:1,div:1,dl:1, 56sup:b,table:{caption:1,colgroup:1,thead:1,tfoot:1,tbody:1,tr:1},tbody:{tr:1},td:c,textarea:k,tfoot:{tr:1},th:c,thead:{tr:1},time:d(b,{time:1}),title:k,tr:{th:1,td:1},track:h,u:b,ul:{li:1},"var":b,video:a({source:1,track:1},c),wbr:h,acronym:b,applet:a({param:1},c),basefont:h,big:b,center:c,dialog:h,dir:{li:1},font:b,isindex:h,noframes:c,strike:b,tt:b};a(d,{$block:a({audio:1,dd:1,dt:1,figcaption:1,li:1,video:1},e,n),$blockLimit:{article:1,aside:1,audio:1,body:1,caption:1,details:1,dir:1,div:1,dl:1,
45fieldset:1,figcaption:1,figure:1,footer:1,form:1,header:1,hgroup:1,main:1,menu:1,nav:1,ol:1,section:1,table:1,td:1,th:1,tr:1,ul:1,video:1},$cdata:{script:1,style:1},$editable:{address:1,article:1,aside:1,blockquote:1,body:1,details:1,div:1,fieldset:1,figcaption:1,footer:1,form:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,header:1,hgroup:1,main:1,nav:1,p:1,pre:1,section:1},$empty:{area:1,base:1,basefont:1,br:1,col:1,command:1,dialog:1,embed:1,hr:1,img:1,input:1,isindex:1,keygen:1,link:1,meta:1,param:1,source:1, 57fieldset:1,figcaption:1,figure:1,footer:1,form:1,header:1,hgroup:1,main:1,menu:1,nav:1,ol:1,section:1,table:1,td:1,th:1,tr:1,ul:1,video:1},$cdata:{script:1,style:1},$editable:{address:1,article:1,aside:1,blockquote:1,body:1,details:1,div:1,fieldset:1,figcaption:1,footer:1,form:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,header:1,hgroup:1,main:1,nav:1,p:1,pre:1,section:1},$empty:{area:1,base:1,basefont:1,br:1,col:1,command:1,dialog:1,embed:1,hr:1,img:1,input:1,isindex:1,keygen:1,link:1,meta:1,param:1,source:1,
46track:1,wbr:1},$inline:b,$list:{dl:1,ol:1,ul:1},$listItem:{dd:1,dt:1,li:1},$nonBodyContent:a({body:1,head:1,html:1},d.head),$nonEditable:{applet:1,audio:1,button:1,embed:1,iframe:1,map:1,object:1,option:1,param:1,script:1,textarea:1,video:1},$object:{applet:1,audio:1,button:1,hr:1,iframe:1,img:1,input:1,object:1,select:1,table:1,textarea:1,video:1},$removeEmpty:{abbr:1,acronym:1,b:1,bdi:1,bdo:1,big:1,cite:1,code:1,del:1,dfn:1,em:1,font:1,i:1,ins:1,label:1,kbd:1,mark:1,meter:1,output:1,q:1,ruby:1, 58track:1,wbr:1},$inline:b,$list:{dl:1,ol:1,ul:1},$listItem:{dd:1,dt:1,li:1},$nonBodyContent:a({body:1,head:1,html:1},d.head),$nonEditable:{applet:1,audio:1,button:1,embed:1,iframe:1,map:1,object:1,option:1,param:1,script:1,textarea:1,video:1},$object:{applet:1,audio:1,button:1,hr:1,iframe:1,img:1,input:1,object:1,select:1,table:1,textarea:1,video:1},$removeEmpty:{abbr:1,acronym:1,b:1,bdi:1,bdo:1,big:1,cite:1,code:1,del:1,dfn:1,em:1,font:1,i:1,ins:1,label:1,kbd:1,mark:1,meter:1,output:1,q:1,ruby:1,
47s:1,samp:1,small:1,span:1,strike:1,strong:1,sub:1,sup:1,time:1,tt:1,u:1,"var":1},$tabIndex:{a:1,area:1,button:1,input:1,object:1,select:1,textarea:1},$tableContent:{caption:1,col:1,colgroup:1,tbody:1,td:1,tfoot:1,th:1,thead:1,tr:1},$transparent:{a:1,audio:1,canvas:1,del:1,ins:1,map:1,noscript:1,object:1,video:1},$intermediate:{caption:1,colgroup:1,dd:1,dt:1,figcaption:1,legend:1,li:1,optgroup:1,option:1,rp:1,rt:1,summary:1,tbody:1,td:1,tfoot:1,th:1,thead:1,tr:1}});return d}(); 59s:1,samp:1,small:1,span:1,strike:1,strong:1,sub:1,sup:1,time:1,tt:1,u:1,"var":1},$tabIndex:{a:1,area:1,button:1,input:1,object:1,select:1,textarea:1},$tableContent:{caption:1,col:1,colgroup:1,tbody:1,td:1,tfoot:1,th:1,thead:1,tr:1},$transparent:{a:1,audio:1,canvas:1,del:1,ins:1,map:1,noscript:1,object:1,video:1},$intermediate:{caption:1,colgroup:1,dd:1,dt:1,figcaption:1,legend:1,li:1,optgroup:1,option:1,rp:1,rt:1,summary:1,tbody:1,td:1,tfoot:1,th:1,thead:1,tr:1}});return d}();
@@ -73,192 +85,201 @@ CKEDITOR.tools.extend(CKEDITOR.dom.window.prototype,{focus:function(){this.$.foc
73a.body.scrollTop||0}},getFrame:function(){var a=this.$.frameElement;return a?new CKEDITOR.dom.element.get(a):null}});CKEDITOR.dom.document=function(a){CKEDITOR.dom.domObject.call(this,a)};CKEDITOR.dom.document.prototype=new CKEDITOR.dom.domObject; 85a.body.scrollTop||0}},getFrame:function(){var a=this.$.frameElement;return a?new CKEDITOR.dom.element.get(a):null}});CKEDITOR.dom.document=function(a){CKEDITOR.dom.domObject.call(this,a)};CKEDITOR.dom.document.prototype=new CKEDITOR.dom.domObject;
74CKEDITOR.tools.extend(CKEDITOR.dom.document.prototype,{type:CKEDITOR.NODE_DOCUMENT,appendStyleSheet:function(a){if(this.$.createStyleSheet)this.$.createStyleSheet(a);else{var d=new CKEDITOR.dom.element("link");d.setAttributes({rel:"stylesheet",type:"text/css",href:a});this.getHead().append(d)}},appendStyleText:function(a){if(this.$.createStyleSheet){var d=this.$.createStyleSheet("");d.cssText=a}else{var b=new CKEDITOR.dom.element("style",this);b.append(new CKEDITOR.dom.text(a,this));this.getHead().append(b)}return d|| 86CKEDITOR.tools.extend(CKEDITOR.dom.document.prototype,{type:CKEDITOR.NODE_DOCUMENT,appendStyleSheet:function(a){if(this.$.createStyleSheet)this.$.createStyleSheet(a);else{var d=new CKEDITOR.dom.element("link");d.setAttributes({rel:"stylesheet",type:"text/css",href:a});this.getHead().append(d)}},appendStyleText:function(a){if(this.$.createStyleSheet){var d=this.$.createStyleSheet("");d.cssText=a}else{var b=new CKEDITOR.dom.element("style",this);b.append(new CKEDITOR.dom.text(a,this));this.getHead().append(b)}return d||
75b.$.sheet},createElement:function(a,d){var b=new CKEDITOR.dom.element(a,this);d&&(d.attributes&&b.setAttributes(d.attributes),d.styles&&b.setStyles(d.styles));return b},createText:function(a){return new CKEDITOR.dom.text(a,this)},focus:function(){this.getWindow().focus()},getActive:function(){var a;try{a=this.$.activeElement}catch(d){return null}return new CKEDITOR.dom.element(a)},getById:function(a){return(a=this.$.getElementById(a))?new CKEDITOR.dom.element(a):null},getByAddress:function(a,d){for(var b= 87b.$.sheet},createElement:function(a,d){var b=new CKEDITOR.dom.element(a,this);d&&(d.attributes&&b.setAttributes(d.attributes),d.styles&&b.setStyles(d.styles));return b},createText:function(a){return new CKEDITOR.dom.text(a,this)},focus:function(){this.getWindow().focus()},getActive:function(){var a;try{a=this.$.activeElement}catch(d){return null}return new CKEDITOR.dom.element(a)},getById:function(a){return(a=this.$.getElementById(a))?new CKEDITOR.dom.element(a):null},getByAddress:function(a,d){for(var b=
76this.$.documentElement,c=0;b&&c<a.length;c++){var e=a[c];if(d)for(var g=-1,l=0;l<b.childNodes.length;l++){var k=b.childNodes[l];if(!0!==d||3!=k.nodeType||!k.previousSibling||3!=k.previousSibling.nodeType)if(g++,g==e){b=k;break}}else b=b.childNodes[e]}return b?new CKEDITOR.dom.node(b):null},getElementsByTag:function(a,d){CKEDITOR.env.ie&&8>=document.documentMode||!d||(a=d+":"+a);return new CKEDITOR.dom.nodeList(this.$.getElementsByTagName(a))},getHead:function(){var a=this.$.getElementsByTagName("head")[0]; 88this.$.documentElement,c=0;b&&c<a.length;c++){var e=a[c];if(d)for(var g=-1,h=0;h<b.childNodes.length;h++){var k=b.childNodes[h];if(!0!==d||3!=k.nodeType||!k.previousSibling||3!=k.previousSibling.nodeType)if(g++,g==e){b=k;break}}else b=b.childNodes[e]}return b?new CKEDITOR.dom.node(b):null},getElementsByTag:function(a,d){CKEDITOR.env.ie&&8>=document.documentMode||!d||(a=d+":"+a);return new CKEDITOR.dom.nodeList(this.$.getElementsByTagName(a))},getHead:function(){var a=this.$.getElementsByTagName("head")[0];
77return a=a?new CKEDITOR.dom.element(a):this.getDocumentElement().append(new CKEDITOR.dom.element("head"),!0)},getBody:function(){return new CKEDITOR.dom.element(this.$.body)},getDocumentElement:function(){return new CKEDITOR.dom.element(this.$.documentElement)},getWindow:function(){return new CKEDITOR.dom.window(this.$.parentWindow||this.$.defaultView)},write:function(a){this.$.open("text/html","replace");CKEDITOR.env.ie&&(a=a.replace(/(?:^\s*<!DOCTYPE[^>]*?>)|^/i,'$\x26\n\x3cscript data-cke-temp\x3d"1"\x3e('+ 89return a=a?new CKEDITOR.dom.element(a):this.getDocumentElement().append(new CKEDITOR.dom.element("head"),!0)},getBody:function(){return new CKEDITOR.dom.element(this.$.body)},getDocumentElement:function(){return new CKEDITOR.dom.element(this.$.documentElement)},getWindow:function(){return new CKEDITOR.dom.window(this.$.parentWindow||this.$.defaultView)},write:function(a){this.$.open("text/html","replace");CKEDITOR.env.ie&&(a=a.replace(/(?:^\s*<!DOCTYPE[^>]*?>)|^/i,'$\x26\n\x3cscript data-cke-temp\x3d"1"\x3e('+
78CKEDITOR.tools.fixDomain+")();\x3c/script\x3e"));this.$.write(a);this.$.close()},find:function(a){return new CKEDITOR.dom.nodeList(this.$.querySelectorAll(a))},findOne:function(a){return(a=this.$.querySelector(a))?new CKEDITOR.dom.element(a):null},_getHtml5ShivFrag:function(){var a=this.getCustomData("html5ShivFrag");a||(a=this.$.createDocumentFragment(),CKEDITOR.tools.enableHtml5Elements(a,!0),this.setCustomData("html5ShivFrag",a));return a}});CKEDITOR.dom.nodeList=function(a){this.$=a}; 90CKEDITOR.tools.fixDomain+")();\x3c/script\x3e"));this.$.write(a);this.$.close()},find:function(a){return new CKEDITOR.dom.nodeList(this.$.querySelectorAll(a))},findOne:function(a){return(a=this.$.querySelector(a))?new CKEDITOR.dom.element(a):null},_getHtml5ShivFrag:function(){var a=this.getCustomData("html5ShivFrag");a||(a=this.$.createDocumentFragment(),CKEDITOR.tools.enableHtml5Elements(a,!0),this.setCustomData("html5ShivFrag",a));return a}});CKEDITOR.dom.nodeList=function(a){this.$=a};
79CKEDITOR.dom.nodeList.prototype={count:function(){return this.$.length},getItem:function(a){return 0>a||a>=this.$.length?null:(a=this.$[a])?new CKEDITOR.dom.node(a):null}};CKEDITOR.dom.element=function(a,d){"string"==typeof a&&(a=(d?d.$:document).createElement(a));CKEDITOR.dom.domObject.call(this,a)};CKEDITOR.dom.element.get=function(a){return(a="string"==typeof a?document.getElementById(a)||document.getElementsByName(a)[0]:a)&&(a.$?a:new CKEDITOR.dom.element(a))};CKEDITOR.dom.element.prototype=new CKEDITOR.dom.node; 91CKEDITOR.dom.nodeList.prototype={count:function(){return this.$.length},getItem:function(a){return 0>a||a>=this.$.length?null:(a=this.$[a])?new CKEDITOR.dom.node(a):null},toArray:function(){return CKEDITOR.tools.array.map(this.$,function(a){return new CKEDITOR.dom.node(a)})}};CKEDITOR.dom.element=function(a,d){"string"==typeof a&&(a=(d?d.$:document).createElement(a));CKEDITOR.dom.domObject.call(this,a)};
80CKEDITOR.dom.element.createFromHtml=function(a,d){var b=new CKEDITOR.dom.element("div",d);b.setHtml(a);return b.getFirst().remove()};CKEDITOR.dom.element.setMarker=function(a,d,b,c){var e=d.getCustomData("list_marker_id")||d.setCustomData("list_marker_id",CKEDITOR.tools.getNextNumber()).getCustomData("list_marker_id"),g=d.getCustomData("list_marker_names")||d.setCustomData("list_marker_names",{}).getCustomData("list_marker_names");a[e]=d;g[b]=1;return d.setCustomData(b,c)}; 92CKEDITOR.dom.element.get=function(a){return(a="string"==typeof a?document.getElementById(a)||document.getElementsByName(a)[0]:a)&&(a.$?a:new CKEDITOR.dom.element(a))};CKEDITOR.dom.element.prototype=new CKEDITOR.dom.node;CKEDITOR.dom.element.createFromHtml=function(a,d){var b=new CKEDITOR.dom.element("div",d);b.setHtml(a);return b.getFirst().remove()};
81CKEDITOR.dom.element.clearAllMarkers=function(a){for(var d in a)CKEDITOR.dom.element.clearMarkers(a,a[d],1)};CKEDITOR.dom.element.clearMarkers=function(a,d,b){var c=d.getCustomData("list_marker_names"),e=d.getCustomData("list_marker_id"),g;for(g in c)d.removeCustomData(g);d.removeCustomData("list_marker_names");b&&(d.removeCustomData("list_marker_id"),delete a[e])}; 93CKEDITOR.dom.element.setMarker=function(a,d,b,c){var e=d.getCustomData("list_marker_id")||d.setCustomData("list_marker_id",CKEDITOR.tools.getNextNumber()).getCustomData("list_marker_id"),g=d.getCustomData("list_marker_names")||d.setCustomData("list_marker_names",{}).getCustomData("list_marker_names");a[e]=d;g[b]=1;return d.setCustomData(b,c)};CKEDITOR.dom.element.clearAllMarkers=function(a){for(var d in a)CKEDITOR.dom.element.clearMarkers(a,a[d],1)};
82(function(){function a(a,b){return-1<(" "+a+" ").replace(g," ").indexOf(" "+b+" ")}function d(a){var b=!0;a.$.id||(a.$.id="cke_tmp_"+CKEDITOR.tools.getNextNumber(),b=!1);return function(){b||a.removeAttribute("id")}}function b(a,b){return"#"+a.$.id+" "+b.split(/,\s*/).join(", #"+a.$.id+" ")}function c(a){for(var b=0,c=0,f=l[a].length;c<f;c++)b+=parseInt(this.getComputedStyle(l[a][c])||0,10)||0;return b}var e=document.createElement("_").classList,e="undefined"!==typeof e&&null!==String(e.add).match(/\[Native code\]/gi), 94CKEDITOR.dom.element.clearMarkers=function(a,d,b){var c=d.getCustomData("list_marker_names"),e=d.getCustomData("list_marker_id"),g;for(g in c)d.removeCustomData(g);d.removeCustomData("list_marker_names");b&&(d.removeCustomData("list_marker_id"),delete a[e])};
83g=/[\n\t\r]/g;CKEDITOR.tools.extend(CKEDITOR.dom.element.prototype,{type:CKEDITOR.NODE_ELEMENT,addClass:e?function(a){this.$.classList.add(a);return this}:function(b){var c=this.$.className;c&&(a(c,b)||(c+=" "+b));this.$.className=c||b;return this},removeClass:e?function(a){var b=this.$;b.classList.remove(a);b.className||b.removeAttribute("class");return this}:function(b){var c=this.getAttribute("class");c&&a(c,b)&&((c=c.replace(new RegExp("(?:^|\\s+)"+b+"(?\x3d\\s|$)"),"").replace(/^\s+/,""))?this.setAttribute("class", 95(function(){function a(a,b){return-1<(" "+a+" ").replace(g," ").indexOf(" "+b+" ")}function d(a){var b=!0;a.$.id||(a.$.id="cke_tmp_"+CKEDITOR.tools.getNextNumber(),b=!1);return function(){b||a.removeAttribute("id")}}function b(a,b){var c=CKEDITOR.tools.escapeCss(a.$.id);return"#"+c+" "+b.split(/,\s*/).join(", #"+c+" ")}function c(a){for(var b=0,c=0,f=h[a].length;c<f;c++)b+=parseFloat(this.getComputedStyle(h[a][c])||0,10)||0;return b}var e=document.createElement("_").classList,e="undefined"!==typeof e&&
84c):this.removeAttribute("class"));return this},hasClass:function(b){return a(this.$.className,b)},append:function(a,b){"string"==typeof a&&(a=this.getDocument().createElement(a));b?this.$.insertBefore(a.$,this.$.firstChild):this.$.appendChild(a.$);return a},appendHtml:function(a){if(this.$.childNodes.length){var b=new CKEDITOR.dom.element("div",this.getDocument());b.setHtml(a);b.moveChildren(this)}else this.setHtml(a)},appendText:function(a){null!=this.$.text&&CKEDITOR.env.ie&&9>CKEDITOR.env.version? 96null!==String(e.add).match(/\[Native code\]/gi),g=/[\n\t\r]/g;CKEDITOR.tools.extend(CKEDITOR.dom.element.prototype,{type:CKEDITOR.NODE_ELEMENT,addClass:e?function(a){this.$.classList.add(a);return this}:function(b){var c=this.$.className;c&&(a(c,b)||(c+=" "+b));this.$.className=c||b;return this},removeClass:e?function(a){var b=this.$;b.classList.remove(a);b.className||b.removeAttribute("class");return this}:function(b){var c=this.getAttribute("class");c&&a(c,b)&&((c=c.replace(new RegExp("(?:^|\\s+)"+
85this.$.text+=a:this.append(new CKEDITOR.dom.text(a))},appendBogus:function(a){if(a||CKEDITOR.env.needsBrFiller){for(a=this.getLast();a&&a.type==CKEDITOR.NODE_TEXT&&!CKEDITOR.tools.rtrim(a.getText());)a=a.getPrevious();a&&a.is&&a.is("br")||(a=this.getDocument().createElement("br"),CKEDITOR.env.gecko&&a.setAttribute("type","_moz"),this.append(a))}},breakParent:function(a,b){var c=new CKEDITOR.dom.range(this.getDocument());c.setStartAfter(this);c.setEndAfter(a);var f=c.extractContents(!1,b||!1);c.insertNode(this.remove()); 97b+"(?\x3d\\s|$)"),"").replace(/^\s+/,""))?this.setAttribute("class",c):this.removeAttribute("class"));return this},hasClass:function(b){return a(this.$.className,b)},append:function(a,b){"string"==typeof a&&(a=this.getDocument().createElement(a));b?this.$.insertBefore(a.$,this.$.firstChild):this.$.appendChild(a.$);return a},appendHtml:function(a){if(this.$.childNodes.length){var b=new CKEDITOR.dom.element("div",this.getDocument());b.setHtml(a);b.moveChildren(this)}else this.setHtml(a)},appendText:function(a){null!=
86f.insertAfterNode(this)},contains:document.compareDocumentPosition?function(a){return!!(this.$.compareDocumentPosition(a.$)&16)}:function(a){var b=this.$;return a.type!=CKEDITOR.NODE_ELEMENT?b.contains(a.getParent().$):b!=a.$&&b.contains(a.$)},focus:function(){function a(){try{this.$.focus()}catch(b){}}return function(b){b?CKEDITOR.tools.setTimeout(a,100,this):a.call(this)}}(),getHtml:function(){var a=this.$.innerHTML;return CKEDITOR.env.ie?a.replace(/<\?[^>]*>/g,""):a},getOuterHtml:function(){if(this.$.outerHTML)return this.$.outerHTML.replace(/<\?[^>]*>/, 98this.$.text&&CKEDITOR.env.ie&&9>CKEDITOR.env.version?this.$.text+=a:this.append(new CKEDITOR.dom.text(a))},appendBogus:function(a){if(a||CKEDITOR.env.needsBrFiller){for(a=this.getLast();a&&a.type==CKEDITOR.NODE_TEXT&&!CKEDITOR.tools.rtrim(a.getText());)a=a.getPrevious();a&&a.is&&a.is("br")||(a=this.getDocument().createElement("br"),CKEDITOR.env.gecko&&a.setAttribute("type","_moz"),this.append(a))}},breakParent:function(a,b){var c=new CKEDITOR.dom.range(this.getDocument());c.setStartAfter(this);c.setEndAfter(a);
87"");var a=this.$.ownerDocument.createElement("div");a.appendChild(this.$.cloneNode(!0));return a.innerHTML},getClientRect:function(){var a=CKEDITOR.tools.extend({},this.$.getBoundingClientRect());!a.width&&(a.width=a.right-a.left);!a.height&&(a.height=a.bottom-a.top);return a},setHtml:CKEDITOR.env.ie&&9>CKEDITOR.env.version?function(a){try{var b=this.$;if(this.getParent())return b.innerHTML=a;var c=this.getDocument()._getHtml5ShivFrag();c.appendChild(b);b.innerHTML=a;c.removeChild(b);return a}catch(f){this.$.innerHTML= 99var f=c.extractContents(!1,b||!1),d;c.insertNode(this.remove());if(CKEDITOR.env.ie&&!CKEDITOR.env.edge){for(c=new CKEDITOR.dom.element("div");d=f.getFirst();)d.$.style.backgroundColor&&(d.$.style.backgroundColor=d.$.style.backgroundColor),c.append(d);c.insertAfter(this);c.remove(!0)}else f.insertAfterNode(this)},contains:document.compareDocumentPosition?function(a){return!!(this.$.compareDocumentPosition(a.$)&16)}:function(a){var b=this.$;return a.type!=CKEDITOR.NODE_ELEMENT?b.contains(a.getParent().$):
88"";b=new CKEDITOR.dom.element("body",this.getDocument());b.$.innerHTML=a;for(b=b.getChildren();b.count();)this.append(b.getItem(0));return a}}:function(a){return this.$.innerHTML=a},setText:function(){var a=document.createElement("p");a.innerHTML="x";a=a.textContent;return function(b){this.$[a?"textContent":"innerText"]=b}}(),getAttribute:function(){var a=function(a){return this.$.getAttribute(a,2)};return CKEDITOR.env.ie&&(CKEDITOR.env.ie7Compat||CKEDITOR.env.quirks)?function(a){switch(a){case "class":a= 100b!=a.$&&b.contains(a.$)},focus:function(){function a(){try{this.$.focus()}catch(b){}}return function(b){b?CKEDITOR.tools.setTimeout(a,100,this):a.call(this)}}(),getHtml:function(){var a=this.$.innerHTML;return CKEDITOR.env.ie?a.replace(/<\?[^>]*>/g,""):a},getOuterHtml:function(){if(this.$.outerHTML)return this.$.outerHTML.replace(/<\?[^>]*>/,"");var a=this.$.ownerDocument.createElement("div");a.appendChild(this.$.cloneNode(!0));return a.innerHTML},getClientRect:function(){var a=CKEDITOR.tools.extend({},
89"className";break;case "http-equiv":a="httpEquiv";break;case "name":return this.$.name;case "tabindex":return a=this.$.getAttribute(a,2),0!==a&&0===this.$.tabIndex&&(a=null),a;case "checked":return a=this.$.attributes.getNamedItem(a),(a.specified?a.nodeValue:this.$.checked)?"checked":null;case "hspace":case "value":return this.$[a];case "style":return this.$.style.cssText;case "contenteditable":case "contentEditable":return this.$.attributes.getNamedItem("contentEditable").specified?this.$.getAttribute("contentEditable"): 101this.$.getBoundingClientRect());!a.width&&(a.width=a.right-a.left);!a.height&&(a.height=a.bottom-a.top);return a},setHtml:CKEDITOR.env.ie&&9>CKEDITOR.env.version?function(a){try{var b=this.$;if(this.getParent())return b.innerHTML=a;var c=this.getDocument()._getHtml5ShivFrag();c.appendChild(b);b.innerHTML=a;c.removeChild(b);return a}catch(f){this.$.innerHTML="";b=new CKEDITOR.dom.element("body",this.getDocument());b.$.innerHTML=a;for(b=b.getChildren();b.count();)this.append(b.getItem(0));return a}}:
90null}return this.$.getAttribute(a,2)}:a}(),getChildren:function(){return new CKEDITOR.dom.nodeList(this.$.childNodes)},getComputedStyle:document.defaultView&&document.defaultView.getComputedStyle?function(a){var b=this.getWindow().$.getComputedStyle(this.$,null);return b?b.getPropertyValue(a):""}:function(a){return this.$.currentStyle[CKEDITOR.tools.cssStyleToDomStyle(a)]},getDtd:function(){var a=CKEDITOR.dtd[this.getName()];this.getDtd=function(){return a};return a},getElementsByTag:CKEDITOR.dom.document.prototype.getElementsByTag, 102function(a){return this.$.innerHTML=a},setText:function(){var a=document.createElement("p");a.innerHTML="x";a=a.textContent;return function(b){this.$[a?"textContent":"innerText"]=b}}(),getAttribute:function(){var a=function(a){return this.$.getAttribute(a,2)};return CKEDITOR.env.ie&&(CKEDITOR.env.ie7Compat||CKEDITOR.env.quirks)?function(a){switch(a){case "class":a="className";break;case "http-equiv":a="httpEquiv";break;case "name":return this.$.name;case "tabindex":return a=this.$.getAttribute(a,
91getTabIndex:function(){var a=this.$.tabIndex;return 0!==a||CKEDITOR.dtd.$tabIndex[this.getName()]||0===parseInt(this.getAttribute("tabindex"),10)?a:-1},getText:function(){return this.$.textContent||this.$.innerText||""},getWindow:function(){return this.getDocument().getWindow()},getId:function(){return this.$.id||null},getNameAtt:function(){return this.$.name||null},getName:function(){var a=this.$.nodeName.toLowerCase();if(CKEDITOR.env.ie&&8>=document.documentMode){var b=this.$.scopeName;"HTML"!= 1032),0!==a&&0===this.$.tabIndex&&(a=null),a;case "checked":return a=this.$.attributes.getNamedItem(a),(a.specified?a.nodeValue:this.$.checked)?"checked":null;case "hspace":case "value":return this.$[a];case "style":return this.$.style.cssText;case "contenteditable":case "contentEditable":return this.$.attributes.getNamedItem("contentEditable").specified?this.$.getAttribute("contentEditable"):null}return this.$.getAttribute(a,2)}:a}(),getAttributes:function(a){var b={},c=this.$.attributes,f;a=CKEDITOR.tools.isArray(a)?
92b&&(a=b.toLowerCase()+":"+a)}this.getName=function(){return a};return this.getName()},getValue:function(){return this.$.value},getFirst:function(a){var b=this.$.firstChild;(b=b&&new CKEDITOR.dom.node(b))&&a&&!a(b)&&(b=b.getNext(a));return b},getLast:function(a){var b=this.$.lastChild;(b=b&&new CKEDITOR.dom.node(b))&&a&&!a(b)&&(b=b.getPrevious(a));return b},getStyle:function(a){return this.$.style[CKEDITOR.tools.cssStyleToDomStyle(a)]},is:function(){var a=this.getName();if("object"==typeof arguments[0])return!!arguments[0][a]; 104a:[];for(f=0;f<c.length;f++)-1===CKEDITOR.tools.indexOf(a,c[f].name)&&(b[c[f].name]=c[f].value);return b},getChildren:function(){return new CKEDITOR.dom.nodeList(this.$.childNodes)},getComputedStyle:document.defaultView&&document.defaultView.getComputedStyle?function(a){var b=this.getWindow().$.getComputedStyle(this.$,null);return b?b.getPropertyValue(a):""}:function(a){return this.$.currentStyle[CKEDITOR.tools.cssStyleToDomStyle(a)]},getDtd:function(){var a=CKEDITOR.dtd[this.getName()];this.getDtd=
93for(var b=0;b<arguments.length;b++)if(arguments[b]==a)return!0;return!1},isEditable:function(a){var b=this.getName();return this.isReadOnly()||"none"==this.getComputedStyle("display")||"hidden"==this.getComputedStyle("visibility")||CKEDITOR.dtd.$nonEditable[b]||CKEDITOR.dtd.$empty[b]||this.is("a")&&(this.data("cke-saved-name")||this.hasAttribute("name"))&&!this.getChildCount()?!1:!1!==a?(a=CKEDITOR.dtd[b]||CKEDITOR.dtd.span,!(!a||!a["#"])):!0},isIdentical:function(a){var b=this.clone(0,1);a=a.clone(0, 105function(){return a};return a},getElementsByTag:CKEDITOR.dom.document.prototype.getElementsByTag,getTabIndex:function(){var a=this.$.tabIndex;return 0!==a||CKEDITOR.dtd.$tabIndex[this.getName()]||0===parseInt(this.getAttribute("tabindex"),10)?a:-1},getText:function(){return this.$.textContent||this.$.innerText||""},getWindow:function(){return this.getDocument().getWindow()},getId:function(){return this.$.id||null},getNameAtt:function(){return this.$.name||null},getName:function(){var a=this.$.nodeName.toLowerCase();
941);b.removeAttributes(["_moz_dirty","data-cke-expando","data-cke-saved-href","data-cke-saved-name"]);a.removeAttributes(["_moz_dirty","data-cke-expando","data-cke-saved-href","data-cke-saved-name"]);if(b.$.isEqualNode)return b.$.style.cssText=CKEDITOR.tools.normalizeCssText(b.$.style.cssText),a.$.style.cssText=CKEDITOR.tools.normalizeCssText(a.$.style.cssText),b.$.isEqualNode(a.$);b=b.getOuterHtml();a=a.getOuterHtml();if(CKEDITOR.env.ie&&9>CKEDITOR.env.version&&this.is("a")){var c=this.getParent(); 106if(CKEDITOR.env.ie&&8>=document.documentMode){var b=this.$.scopeName;"HTML"!=b&&(a=b.toLowerCase()+":"+a)}this.getName=function(){return a};return this.getName()},getValue:function(){return this.$.value},getFirst:function(a){var b=this.$.firstChild;(b=b&&new CKEDITOR.dom.node(b))&&a&&!a(b)&&(b=b.getNext(a));return b},getLast:function(a){var b=this.$.lastChild;(b=b&&new CKEDITOR.dom.node(b))&&a&&!a(b)&&(b=b.getPrevious(a));return b},getStyle:function(a){return this.$.style[CKEDITOR.tools.cssStyleToDomStyle(a)]},
95c.type==CKEDITOR.NODE_ELEMENT&&(c=c.clone(),c.setHtml(b),b=c.getHtml(),c.setHtml(a),a=c.getHtml())}return b==a},isVisible:function(){var a=(this.$.offsetHeight||this.$.offsetWidth)&&"hidden"!=this.getComputedStyle("visibility"),b,c;a&&CKEDITOR.env.webkit&&(b=this.getWindow(),!b.equals(CKEDITOR.document.getWindow())&&(c=b.$.frameElement)&&(a=(new CKEDITOR.dom.element(c)).isVisible()));return!!a},isEmptyInlineRemoveable:function(){if(!CKEDITOR.dtd.$removeEmpty[this.getName()])return!1;for(var a=this.getChildren(), 107is:function(){var a=this.getName();if("object"==typeof arguments[0])return!!arguments[0][a];for(var b=0;b<arguments.length;b++)if(arguments[b]==a)return!0;return!1},isEditable:function(a){var b=this.getName();return this.isReadOnly()||"none"==this.getComputedStyle("display")||"hidden"==this.getComputedStyle("visibility")||CKEDITOR.dtd.$nonEditable[b]||CKEDITOR.dtd.$empty[b]||this.is("a")&&(this.data("cke-saved-name")||this.hasAttribute("name"))&&!this.getChildCount()?!1:!1!==a?(a=CKEDITOR.dtd[b]||
96b=0,c=a.count();b<c;b++){var f=a.getItem(b);if(f.type!=CKEDITOR.NODE_ELEMENT||!f.data("cke-bookmark"))if(f.type==CKEDITOR.NODE_ELEMENT&&!f.isEmptyInlineRemoveable()||f.type==CKEDITOR.NODE_TEXT&&CKEDITOR.tools.trim(f.getText()))return!1}return!0},hasAttributes:CKEDITOR.env.ie&&(CKEDITOR.env.ie7Compat||CKEDITOR.env.quirks)?function(){for(var a=this.$.attributes,b=0;b<a.length;b++){var c=a[b];switch(c.nodeName){case "class":if(this.getAttribute("class"))return!0;case "data-cke-expando":continue;default:if(c.specified)return!0}}return!1}: 108CKEDITOR.dtd.span,!(!a||!a["#"])):!0},isIdentical:function(a){var b=this.clone(0,1);a=a.clone(0,1);b.removeAttributes(["_moz_dirty","data-cke-expando","data-cke-saved-href","data-cke-saved-name"]);a.removeAttributes(["_moz_dirty","data-cke-expando","data-cke-saved-href","data-cke-saved-name"]);if(b.$.isEqualNode)return b.$.style.cssText=CKEDITOR.tools.normalizeCssText(b.$.style.cssText),a.$.style.cssText=CKEDITOR.tools.normalizeCssText(a.$.style.cssText),b.$.isEqualNode(a.$);b=b.getOuterHtml();a=
97function(){var a=this.$.attributes,b=a.length,c={"data-cke-expando":1,_moz_dirty:1};return 0<b&&(2<b||!c[a[0].nodeName]||2==b&&!c[a[1].nodeName])},hasAttribute:function(){function a(b){var c=this.$.attributes.getNamedItem(b);if("input"==this.getName())switch(b){case "class":return 0<this.$.className.length;case "checked":return!!this.$.checked;case "value":return b=this.getAttribute("type"),"checkbox"==b||"radio"==b?"on"!=this.$.value:!!this.$.value}return c?c.specified:!1}return CKEDITOR.env.ie? 109a.getOuterHtml();if(CKEDITOR.env.ie&&9>CKEDITOR.env.version&&this.is("a")){var c=this.getParent();c.type==CKEDITOR.NODE_ELEMENT&&(c=c.clone(),c.setHtml(b),b=c.getHtml(),c.setHtml(a),a=c.getHtml())}return b==a},isVisible:function(){var a=(this.$.offsetHeight||this.$.offsetWidth)&&"hidden"!=this.getComputedStyle("visibility"),b,c;a&&CKEDITOR.env.webkit&&(b=this.getWindow(),!b.equals(CKEDITOR.document.getWindow())&&(c=b.$.frameElement)&&(a=(new CKEDITOR.dom.element(c)).isVisible()));return!!a},isEmptyInlineRemoveable:function(){if(!CKEDITOR.dtd.$removeEmpty[this.getName()])return!1;
988>CKEDITOR.env.version?function(b){return"name"==b?!!this.$.name:a.call(this,b)}:a:function(a){return!!this.$.attributes.getNamedItem(a)}}(),hide:function(){this.setStyle("display","none")},moveChildren:function(a,b){var c=this.$;a=a.$;if(c!=a){var f;if(b)for(;f=c.lastChild;)a.insertBefore(c.removeChild(f),a.firstChild);else for(;f=c.firstChild;)a.appendChild(c.removeChild(f))}},mergeSiblings:function(){function a(b,c,f){if(c&&c.type==CKEDITOR.NODE_ELEMENT){for(var d=[];c.data("cke-bookmark")||c.isEmptyInlineRemoveable();)if(d.push(c), 110for(var a=this.getChildren(),b=0,c=a.count();b<c;b++){var f=a.getItem(b);if(f.type!=CKEDITOR.NODE_ELEMENT||!f.data("cke-bookmark"))if(f.type==CKEDITOR.NODE_ELEMENT&&!f.isEmptyInlineRemoveable()||f.type==CKEDITOR.NODE_TEXT&&CKEDITOR.tools.trim(f.getText()))return!1}return!0},hasAttributes:CKEDITOR.env.ie&&(CKEDITOR.env.ie7Compat||CKEDITOR.env.quirks)?function(){for(var a=this.$.attributes,b=0;b<a.length;b++){var c=a[b];switch(c.nodeName){case "class":if(this.getAttribute("class"))return!0;case "data-cke-expando":continue;
99c=f?c.getNext():c.getPrevious(),!c||c.type!=CKEDITOR.NODE_ELEMENT)return;if(b.isIdentical(c)){for(var k=f?b.getLast():b.getFirst();d.length;)d.shift().move(b,!f);c.moveChildren(b,!f);c.remove();k&&k.type==CKEDITOR.NODE_ELEMENT&&k.mergeSiblings()}}}return function(b){if(!1===b||CKEDITOR.dtd.$removeEmpty[this.getName()]||this.is("a"))a(this,this.getNext(),!0),a(this,this.getPrevious())}}(),show:function(){this.setStyles({display:"",visibility:""})},setAttribute:function(){var a=function(a,b){this.$.setAttribute(a, 111default:if(c.specified)return!0}}return!1}:function(){var a=this.$.attributes,b=a.length,c={"data-cke-expando":1,_moz_dirty:1};return 0<b&&(2<b||!c[a[0].nodeName]||2==b&&!c[a[1].nodeName])},hasAttribute:function(){function a(b){var c=this.$.attributes.getNamedItem(b);if("input"==this.getName())switch(b){case "class":return 0<this.$.className.length;case "checked":return!!this.$.checked;case "value":return b=this.getAttribute("type"),"checkbox"==b||"radio"==b?"on"!=this.$.value:!!this.$.value}return c?
100b);return this};return CKEDITOR.env.ie&&(CKEDITOR.env.ie7Compat||CKEDITOR.env.quirks)?function(b,c){"class"==b?this.$.className=c:"style"==b?this.$.style.cssText=c:"tabindex"==b?this.$.tabIndex=c:"checked"==b?this.$.checked=c:"contenteditable"==b?a.call(this,"contentEditable",c):a.apply(this,arguments);return this}:CKEDITOR.env.ie8Compat&&CKEDITOR.env.secure?function(b,c){if("src"==b&&c.match(/^http:\/\//))try{a.apply(this,arguments)}catch(f){}else a.apply(this,arguments);return this}:a}(),setAttributes:function(a){for(var b in a)this.setAttribute(b, 112c.specified:!1}return CKEDITOR.env.ie?8>CKEDITOR.env.version?function(b){return"name"==b?!!this.$.name:a.call(this,b)}:a:function(a){return!!this.$.attributes.getNamedItem(a)}}(),hide:function(){this.setStyle("display","none")},moveChildren:function(a,b){var c=this.$;a=a.$;if(c!=a){var f;if(b)for(;f=c.lastChild;)a.insertBefore(c.removeChild(f),a.firstChild);else for(;f=c.firstChild;)a.appendChild(c.removeChild(f))}},mergeSiblings:function(){function a(b,c,f){if(c&&c.type==CKEDITOR.NODE_ELEMENT){for(var d=
101a[b]);return this},setValue:function(a){this.$.value=a;return this},removeAttribute:function(){var a=function(a){this.$.removeAttribute(a)};return CKEDITOR.env.ie&&(CKEDITOR.env.ie7Compat||CKEDITOR.env.quirks)?function(a){"class"==a?a="className":"tabindex"==a?a="tabIndex":"contenteditable"==a&&(a="contentEditable");this.$.removeAttribute(a)}:a}(),removeAttributes:function(a){if(CKEDITOR.tools.isArray(a))for(var b=0;b<a.length;b++)this.removeAttribute(a[b]);else for(b in a)a.hasOwnProperty(b)&&this.removeAttribute(b)}, 113[];c.data("cke-bookmark")||c.isEmptyInlineRemoveable();)if(d.push(c),c=f?c.getNext():c.getPrevious(),!c||c.type!=CKEDITOR.NODE_ELEMENT)return;if(b.isIdentical(c)){for(var k=f?b.getLast():b.getFirst();d.length;)d.shift().move(b,!f);c.moveChildren(b,!f);c.remove();k&&k.type==CKEDITOR.NODE_ELEMENT&&k.mergeSiblings()}}}return function(b){if(!1===b||CKEDITOR.dtd.$removeEmpty[this.getName()]||this.is("a"))a(this,this.getNext(),!0),a(this,this.getPrevious())}}(),show:function(){this.setStyles({display:"",
102removeStyle:function(a){var b=this.$.style;if(b.removeProperty||"border"!=a&&"margin"!=a&&"padding"!=a)b.removeProperty?b.removeProperty(a):b.removeAttribute(CKEDITOR.tools.cssStyleToDomStyle(a)),this.$.style.cssText||this.removeAttribute("style");else{var c=["top","left","right","bottom"],f;"border"==a&&(f=["color","style","width"]);for(var b=[],d=0;d<c.length;d++)if(f)for(var e=0;e<f.length;e++)b.push([a,c[d],f[e]].join("-"));else b.push([a,c[d]].join("-"));for(a=0;a<b.length;a++)this.removeStyle(b[a])}}, 114visibility:""})},setAttribute:function(){var a=function(a,b){this.$.setAttribute(a,b);return this};return CKEDITOR.env.ie&&(CKEDITOR.env.ie7Compat||CKEDITOR.env.quirks)?function(b,c){"class"==b?this.$.className=c:"style"==b?this.$.style.cssText=c:"tabindex"==b?this.$.tabIndex=c:"checked"==b?this.$.checked=c:"contenteditable"==b?a.call(this,"contentEditable",c):a.apply(this,arguments);return this}:CKEDITOR.env.ie8Compat&&CKEDITOR.env.secure?function(b,c){if("src"==b&&c.match(/^http:\/\//))try{a.apply(this,
103setStyle:function(a,b){this.$.style[CKEDITOR.tools.cssStyleToDomStyle(a)]=b;return this},setStyles:function(a){for(var b in a)this.setStyle(b,a[b]);return this},setOpacity:function(a){CKEDITOR.env.ie&&9>CKEDITOR.env.version?(a=Math.round(100*a),this.setStyle("filter",100<=a?"":"progid:DXImageTransform.Microsoft.Alpha(opacity\x3d"+a+")")):this.setStyle("opacity",a)},unselectable:function(){this.setStyles(CKEDITOR.tools.cssVendorPrefix("user-select","none"));if(CKEDITOR.env.ie){this.setAttribute("unselectable", 115arguments)}catch(f){}else a.apply(this,arguments);return this}:a}(),setAttributes:function(a){for(var b in a)this.setAttribute(b,a[b]);return this},setValue:function(a){this.$.value=a;return this},removeAttribute:function(){var a=function(a){this.$.removeAttribute(a)};return CKEDITOR.env.ie&&(CKEDITOR.env.ie7Compat||CKEDITOR.env.quirks)?function(a){"class"==a?a="className":"tabindex"==a?a="tabIndex":"contenteditable"==a&&(a="contentEditable");this.$.removeAttribute(a)}:a}(),removeAttributes:function(a){if(CKEDITOR.tools.isArray(a))for(var b=
104"on");for(var a,b=this.getElementsByTag("*"),c=0,f=b.count();c<f;c++)a=b.getItem(c),a.setAttribute("unselectable","on")}},getPositionedAncestor:function(){for(var a=this;"html"!=a.getName();){if("static"!=a.getComputedStyle("position"))return a;a=a.getParent()}return null},getDocumentPosition:function(a){var b=0,c=0,f=this.getDocument(),d=f.getBody(),e="BackCompat"==f.$.compatMode;if(document.documentElement.getBoundingClientRect){var u=this.$.getBoundingClientRect(),g=f.$.documentElement,q=g.clientTop|| 1160;b<a.length;b++)this.removeAttribute(a[b]);else for(b in a=a||this.getAttributes(),a)a.hasOwnProperty(b)&&this.removeAttribute(b)},removeStyle:function(a){var b=this.$.style;if(b.removeProperty||"border"!=a&&"margin"!=a&&"padding"!=a)b.removeProperty?b.removeProperty(a):b.removeAttribute(CKEDITOR.tools.cssStyleToDomStyle(a)),this.$.style.cssText||this.removeAttribute("style");else{var c=["top","left","right","bottom"],f;"border"==a&&(f=["color","style","width"]);for(var b=[],d=0;d<c.length;d++)if(f)for(var w=
105d.$.clientTop||0,y=g.clientLeft||d.$.clientLeft||0,l=!0;CKEDITOR.env.ie&&(l=f.getDocumentElement().contains(this),f=f.getBody().contains(this),l=e&&f||!e&&l);l&&(CKEDITOR.env.webkit||CKEDITOR.env.ie&&12<=CKEDITOR.env.version?(b=d.$.scrollLeft||g.scrollLeft,c=d.$.scrollTop||g.scrollTop):(c=e?d.$:g,b=c.scrollLeft,c=c.scrollTop),b=u.left+b-y,c=u.top+c-q)}else for(q=this,y=null;q&&"body"!=q.getName()&&"html"!=q.getName();){b+=q.$.offsetLeft-q.$.scrollLeft;c+=q.$.offsetTop-q.$.scrollTop;q.equals(this)|| 1170;w<f.length;w++)b.push([a,c[d],f[w]].join("-"));else b.push([a,c[d]].join("-"));for(a=0;a<b.length;a++)this.removeStyle(b[a])}},setStyle:function(a,b){this.$.style[CKEDITOR.tools.cssStyleToDomStyle(a)]=b;return this},setStyles:function(a){for(var b in a)this.setStyle(b,a[b]);return this},setOpacity:function(a){CKEDITOR.env.ie&&9>CKEDITOR.env.version?(a=Math.round(100*a),this.setStyle("filter",100<=a?"":"progid:DXImageTransform.Microsoft.Alpha(opacity\x3d"+a+")")):this.setStyle("opacity",a)},unselectable:function(){this.setStyles(CKEDITOR.tools.cssVendorPrefix("user-select",
106(b+=q.$.clientLeft||0,c+=q.$.clientTop||0);for(;y&&!y.equals(q);)b-=y.$.scrollLeft,c-=y.$.scrollTop,y=y.getParent();y=q;q=(u=q.$.offsetParent)?new CKEDITOR.dom.element(u):null}a&&(u=this.getWindow(),q=a.getWindow(),!u.equals(q)&&u.$.frameElement&&(a=(new CKEDITOR.dom.element(u.$.frameElement)).getDocumentPosition(a),b+=a.x,c+=a.y));document.documentElement.getBoundingClientRect||!CKEDITOR.env.gecko||e||(b+=this.$.clientLeft?1:0,c+=this.$.clientTop?1:0);return{x:b,y:c}},scrollIntoView:function(a){var b= 118"none"));if(CKEDITOR.env.ie){this.setAttribute("unselectable","on");for(var a,b=this.getElementsByTag("*"),c=0,f=b.count();c<f;c++)a=b.getItem(c),a.setAttribute("unselectable","on")}},getPositionedAncestor:function(){for(var a=this;"html"!=a.getName();){if("static"!=a.getComputedStyle("position"))return a;a=a.getParent()}return null},getDocumentPosition:function(a){var b=0,c=0,f=this.getDocument(),d=f.getBody(),w="BackCompat"==f.$.compatMode;if(document.documentElement.getBoundingClientRect&&(CKEDITOR.env.ie?
107this.getParent();if(b){do if((b.$.clientWidth&&b.$.clientWidth<b.$.scrollWidth||b.$.clientHeight&&b.$.clientHeight<b.$.scrollHeight)&&!b.is("body")&&this.scrollIntoParent(b,a,1),b.is("html")){var c=b.getWindow();try{var f=c.$.frameElement;f&&(b=new CKEDITOR.dom.element(f))}catch(d){}}while(b=b.getParent())}},scrollIntoParent:function(a,b,c){var f,d,e,u;function g(b,c){/body|html/.test(a.getName())?a.getWindow().$.scrollBy(b,c):(a.$.scrollLeft+=b,a.$.scrollTop+=c)}function q(a,b){var c={x:0,y:0};if(!a.is(l? 1198!==CKEDITOR.env.version:1)){var e=this.$.getBoundingClientRect(),g=f.$.documentElement,x=g.clientTop||d.$.clientTop||0,m=g.clientLeft||d.$.clientLeft||0,h=!0;CKEDITOR.env.ie&&(h=f.getDocumentElement().contains(this),f=f.getBody().contains(this),h=w&&f||!w&&h);h&&(CKEDITOR.env.webkit||CKEDITOR.env.ie&&12<=CKEDITOR.env.version?(b=d.$.scrollLeft||g.scrollLeft,c=d.$.scrollTop||g.scrollTop):(c=w?d.$:g,b=c.scrollLeft,c=c.scrollTop),b=e.left+b-m,c=e.top+c-x)}else for(x=this,m=null;x&&"body"!=x.getName()&&
108"body":"html")){var f=a.$.getBoundingClientRect();c.x=f.left;c.y=f.top}f=a.getWindow();f.equals(b)||(f=q(CKEDITOR.dom.element.get(f.$.frameElement),b),c.x+=f.x,c.y+=f.y);return c}function y(a,b){return parseInt(a.getComputedStyle("margin-"+b)||0,10)||0}!a&&(a=this.getWindow());e=a.getDocument();var l="BackCompat"==e.$.compatMode;a instanceof CKEDITOR.dom.window&&(a=l?e.getBody():e.getDocumentElement());e=a.getWindow();d=q(this,e);var t=q(a,e),z=this.$.offsetHeight;f=this.$.offsetWidth;var h=a.$.clientHeight, 120"html"!=x.getName();){b+=x.$.offsetLeft-x.$.scrollLeft;c+=x.$.offsetTop-x.$.scrollTop;x.equals(this)||(b+=x.$.clientLeft||0,c+=x.$.clientTop||0);for(;m&&!m.equals(x);)b-=m.$.scrollLeft,c-=m.$.scrollTop,m=m.getParent();m=x;x=(e=x.$.offsetParent)?new CKEDITOR.dom.element(e):null}a&&(e=this.getWindow(),x=a.getWindow(),!e.equals(x)&&e.$.frameElement&&(a=(new CKEDITOR.dom.element(e.$.frameElement)).getDocumentPosition(a),b+=a.x,c+=a.y));document.documentElement.getBoundingClientRect||!CKEDITOR.env.gecko||
109p=a.$.clientWidth;e=d.x-y(this,"left")-t.x||0;u=d.y-y(this,"top")-t.y||0;f=d.x+f+y(this,"right")-(t.x+p)||0;d=d.y+z+y(this,"bottom")-(t.y+h)||0;(0>u||0<d)&&g(0,!0===b?u:!1===b?d:0>u?u:d);c&&(0>e||0<f)&&g(0>e?e:f,0)},setState:function(a,b,c){b=b||"cke";switch(a){case CKEDITOR.TRISTATE_ON:this.addClass(b+"_on");this.removeClass(b+"_off");this.removeClass(b+"_disabled");c&&this.setAttribute("aria-pressed",!0);c&&this.removeAttribute("aria-disabled");break;case CKEDITOR.TRISTATE_DISABLED:this.addClass(b+ 121w||(b+=this.$.clientLeft?1:0,c+=this.$.clientTop?1:0);return{x:b,y:c}},scrollIntoView:function(a){var b=this.getParent();if(b){do if((b.$.clientWidth&&b.$.clientWidth<b.$.scrollWidth||b.$.clientHeight&&b.$.clientHeight<b.$.scrollHeight)&&!b.is("body")&&this.scrollIntoParent(b,a,1),b.is("html")){var c=b.getWindow();try{var f=c.$.frameElement;f&&(b=new CKEDITOR.dom.element(f))}catch(d){}}while(b=b.getParent())}},scrollIntoParent:function(a,b,c){var f,d,w,e;function g(b,c){/body|html/.test(a.getName())?
110"_disabled");this.removeClass(b+"_off");this.removeClass(b+"_on");c&&this.setAttribute("aria-disabled",!0);c&&this.removeAttribute("aria-pressed");break;default:this.addClass(b+"_off"),this.removeClass(b+"_on"),this.removeClass(b+"_disabled"),c&&this.removeAttribute("aria-pressed"),c&&this.removeAttribute("aria-disabled")}},getFrameDocument:function(){var a=this.$;try{a.contentWindow.document}catch(b){a.src=a.src}return a&&new CKEDITOR.dom.document(a.contentWindow.document)},copyAttributes:function(a, 122a.getWindow().$.scrollBy(b,c):(a.$.scrollLeft+=b,a.$.scrollTop+=c)}function x(a,b){var c={x:0,y:0};if(!a.is(h?"body":"html")){var f=a.$.getBoundingClientRect();c.x=f.left;c.y=f.top}f=a.getWindow();f.equals(b)||(f=x(CKEDITOR.dom.element.get(f.$.frameElement),b),c.x+=f.x,c.y+=f.y);return c}function m(a,b){return parseInt(a.getComputedStyle("margin-"+b)||0,10)||0}!a&&(a=this.getWindow());w=a.getDocument();var h="BackCompat"==w.$.compatMode;a instanceof CKEDITOR.dom.window&&(a=h?w.getBody():w.getDocumentElement());
111b){var c=this.$.attributes;b=b||{};for(var f=0;f<c.length;f++){var d=c[f],e=d.nodeName.toLowerCase(),u;if(!(e in b))if("checked"==e&&(u=this.getAttribute(e)))a.setAttribute(e,u);else if(!CKEDITOR.env.ie||this.hasAttribute(e))u=this.getAttribute(e),null===u&&(u=d.nodeValue),a.setAttribute(e,u)}""!==this.$.style.cssText&&(a.$.style.cssText=this.$.style.cssText)},renameNode:function(a){if(this.getName()!=a){var b=this.getDocument();a=new CKEDITOR.dom.element(a,b);this.copyAttributes(a);this.moveChildren(a); 123CKEDITOR.env.webkit&&(w=this.getEditor(!1))&&(w._.previousScrollTop=null);w=a.getWindow();d=x(this,w);var z=x(a,w),I=this.$.offsetHeight;f=this.$.offsetWidth;var l=a.$.clientHeight,r=a.$.clientWidth;w=d.x-m(this,"left")-z.x||0;e=d.y-m(this,"top")-z.y||0;f=d.x+f+m(this,"right")-(z.x+r)||0;d=d.y+I+m(this,"bottom")-(z.y+l)||0;(0>e||0<d)&&g(0,!0===b?e:!1===b?d:0>e?e:d);c&&(0>w||0<f)&&g(0>w?w:f,0)},setState:function(a,b,c){b=b||"cke";switch(a){case CKEDITOR.TRISTATE_ON:this.addClass(b+"_on");this.removeClass(b+
112this.getParent(!0)&&this.$.parentNode.replaceChild(a.$,this.$);a.$["data-cke-expando"]=this.$["data-cke-expando"];this.$=a.$;delete this.getName}},getChild:function(){function a(b,c){var f=b.childNodes;if(0<=c&&c<f.length)return f[c]}return function(b){var c=this.$;if(b.slice)for(b=b.slice();0<b.length&&c;)c=a(c,b.shift());else c=a(c,b);return c?new CKEDITOR.dom.node(c):null}}(),getChildCount:function(){return this.$.childNodes.length},disableContextMenu:function(){function a(b){return b.type==CKEDITOR.NODE_ELEMENT&& 124"_off");this.removeClass(b+"_disabled");c&&this.setAttribute("aria-pressed",!0);c&&this.removeAttribute("aria-disabled");break;case CKEDITOR.TRISTATE_DISABLED:this.addClass(b+"_disabled");this.removeClass(b+"_off");this.removeClass(b+"_on");c&&this.setAttribute("aria-disabled",!0);c&&this.removeAttribute("aria-pressed");break;default:this.addClass(b+"_off"),this.removeClass(b+"_on"),this.removeClass(b+"_disabled"),c&&this.removeAttribute("aria-pressed"),c&&this.removeAttribute("aria-disabled")}},
113b.hasClass("cke_enable_context_menu")}this.on("contextmenu",function(b){b.data.getTarget().getAscendant(a,!0)||b.data.preventDefault()})},getDirection:function(a){return a?this.getComputedStyle("direction")||this.getDirection()||this.getParent()&&this.getParent().getDirection(1)||this.getDocument().$.dir||"ltr":this.getStyle("direction")||this.getAttribute("dir")},data:function(a,b){a="data-"+a;if(void 0===b)return this.getAttribute(a);!1===b?this.removeAttribute(a):this.setAttribute(a,b);return null}, 125getFrameDocument:function(){var a=this.$;try{a.contentWindow.document}catch(b){a.src=a.src}return a&&new CKEDITOR.dom.document(a.contentWindow.document)},copyAttributes:function(a,b){var c=this.$.attributes;b=b||{};for(var f=0;f<c.length;f++){var d=c[f],w=d.nodeName.toLowerCase(),e;if(!(w in b))if("checked"==w&&(e=this.getAttribute(w)))a.setAttribute(w,e);else if(!CKEDITOR.env.ie||this.hasAttribute(w))e=this.getAttribute(w),null===e&&(e=d.nodeValue),a.setAttribute(w,e)}""!==this.$.style.cssText&&
114getEditor:function(){var a=CKEDITOR.instances,b,c;for(b in a)if(c=a[b],c.element.equals(this)&&c.elementMode!=CKEDITOR.ELEMENT_MODE_APPENDTO)return c;return null},find:function(a){var c=d(this);a=new CKEDITOR.dom.nodeList(this.$.querySelectorAll(b(this,a)));c();return a},findOne:function(a){var c=d(this);a=this.$.querySelector(b(this,a));c();return a?new CKEDITOR.dom.element(a):null},forEach:function(a,b,c){if(!(c||b&&this.type!=b))var f=a(this);if(!1!==f){c=this.getChildren();for(var d=0;d<c.count();d++)f= 126(a.$.style.cssText=this.$.style.cssText)},renameNode:function(a){if(this.getName()!=a){var b=this.getDocument();a=new CKEDITOR.dom.element(a,b);this.copyAttributes(a);this.moveChildren(a);this.getParent(!0)&&this.$.parentNode.replaceChild(a.$,this.$);a.$["data-cke-expando"]=this.$["data-cke-expando"];this.$=a.$;delete this.getName}},getChild:function(){function a(b,c){var f=b.childNodes;if(0<=c&&c<f.length)return f[c]}return function(b){var c=this.$;if(b.slice)for(b=b.slice();0<b.length&&c;)c=a(c,
115c.getItem(d),f.type==CKEDITOR.NODE_ELEMENT?f.forEach(a,b):b&&f.type!=b||a(f)}}});var l={width:["border-left-width","border-right-width","padding-left","padding-right"],height:["border-top-width","border-bottom-width","padding-top","padding-bottom"]};CKEDITOR.dom.element.prototype.setSize=function(a,b,d){"number"==typeof b&&(!d||CKEDITOR.env.ie&&CKEDITOR.env.quirks||(b-=c.call(this,a)),this.setStyle(a,b+"px"))};CKEDITOR.dom.element.prototype.getSize=function(a,b){var d=Math.max(this.$["offset"+CKEDITOR.tools.capitalize(a)], 127b.shift());else c=a(c,b);return c?new CKEDITOR.dom.node(c):null}}(),getChildCount:function(){return this.$.childNodes.length},disableContextMenu:function(){function a(b){return b.type==CKEDITOR.NODE_ELEMENT&&b.hasClass("cke_enable_context_menu")}this.on("contextmenu",function(b){b.data.getTarget().getAscendant(a,!0)||b.data.preventDefault()})},getDirection:function(a){return a?this.getComputedStyle("direction")||this.getDirection()||this.getParent()&&this.getParent().getDirection(1)||this.getDocument().$.dir||
116this.$["client"+CKEDITOR.tools.capitalize(a)])||0;b&&(d-=c.call(this,a));return d}})();CKEDITOR.dom.documentFragment=function(a){a=a||CKEDITOR.document;this.$=a.type==CKEDITOR.NODE_DOCUMENT?a.$.createDocumentFragment():a}; 128"ltr":this.getStyle("direction")||this.getAttribute("dir")},data:function(a,b){a="data-"+a;if(void 0===b)return this.getAttribute(a);!1===b?this.removeAttribute(a):this.setAttribute(a,b);return null},getEditor:function(a){var b=CKEDITOR.instances,c,f,d;a=a||void 0===a;for(c in b)if(f=b[c],f.element.equals(this)&&f.elementMode!=CKEDITOR.ELEMENT_MODE_APPENDTO||!a&&(d=f.editable())&&(d.equals(this)||d.contains(this)))return f;return null},find:function(a){var c=d(this);a=new CKEDITOR.dom.nodeList(this.$.querySelectorAll(b(this,
129a)));c();return a},findOne:function(a){var c=d(this);a=this.$.querySelector(b(this,a));c();return a?new CKEDITOR.dom.element(a):null},forEach:function(a,b,c){if(!(c||b&&this.type!=b))var f=a(this);if(!1!==f){c=this.getChildren();for(var d=0;d<c.count();d++)f=c.getItem(d),f.type==CKEDITOR.NODE_ELEMENT?f.forEach(a,b):b&&f.type!=b||a(f)}}});var h={width:["border-left-width","border-right-width","padding-left","padding-right"],height:["border-top-width","border-bottom-width","padding-top","padding-bottom"]};
130CKEDITOR.dom.element.prototype.setSize=function(a,b,d){"number"==typeof b&&(!d||CKEDITOR.env.ie&&CKEDITOR.env.quirks||(b-=c.call(this,a)),this.setStyle(a,b+"px"))};CKEDITOR.dom.element.prototype.getSize=function(a,b){var d=Math.max(this.$["offset"+CKEDITOR.tools.capitalize(a)],this.$["client"+CKEDITOR.tools.capitalize(a)])||0;b&&(d-=c.call(this,a));return d}})();CKEDITOR.dom.documentFragment=function(a){a=a||CKEDITOR.document;this.$=a.type==CKEDITOR.NODE_DOCUMENT?a.$.createDocumentFragment():a};
117CKEDITOR.tools.extend(CKEDITOR.dom.documentFragment.prototype,CKEDITOR.dom.element.prototype,{type:CKEDITOR.NODE_DOCUMENT_FRAGMENT,insertAfterNode:function(a){a=a.$;a.parentNode.insertBefore(this.$,a.nextSibling)},getHtml:function(){var a=new CKEDITOR.dom.element("div");this.clone(1,1).appendTo(a);return a.getHtml().replace(/\s*data-cke-expando=".*?"/g,"")}},!0,{append:1,appendBogus:1,clone:1,getFirst:1,getHtml:1,getLast:1,getParent:1,getNext:1,getPrevious:1,appendTo:1,moveChildren:1,insertBefore:1, 131CKEDITOR.tools.extend(CKEDITOR.dom.documentFragment.prototype,CKEDITOR.dom.element.prototype,{type:CKEDITOR.NODE_DOCUMENT_FRAGMENT,insertAfterNode:function(a){a=a.$;a.parentNode.insertBefore(this.$,a.nextSibling)},getHtml:function(){var a=new CKEDITOR.dom.element("div");this.clone(1,1).appendTo(a);return a.getHtml().replace(/\s*data-cke-expando=".*?"/g,"")}},!0,{append:1,appendBogus:1,clone:1,getFirst:1,getHtml:1,getLast:1,getParent:1,getNext:1,getPrevious:1,appendTo:1,moveChildren:1,insertBefore:1,
118insertAfterNode:1,replace:1,trim:1,type:1,ltrim:1,rtrim:1,getDocument:1,getChildCount:1,getChild:1,getChildren:1}); 132insertAfterNode:1,replace:1,trim:1,type:1,ltrim:1,rtrim:1,getDocument:1,getChildCount:1,getChild:1,getChildren:1});
119(function(){function a(a,b){var c=this.range;if(this._.end)return null;if(!this._.start){this._.start=1;if(c.collapsed)return this.end(),null;c.optimize()}var f,d=c.startContainer;f=c.endContainer;var e=c.startOffset,x=c.endOffset,z,h=this.guard,p=this.type,m=a?"getPreviousSourceNode":"getNextSourceNode";if(!a&&!this._.guardLTR){var C=f.type==CKEDITOR.NODE_ELEMENT?f:f.getParent(),r=f.type==CKEDITOR.NODE_ELEMENT?f.getChild(x):f.getNext();this._.guardLTR=function(a,b){return(!b||!C.equals(a))&&(!r|| 133(function(){function a(a,b){var c=this.range;if(this._.end)return null;if(!this._.start){this._.start=1;if(c.collapsed)return this.end(),null;c.optimize()}var f,d=c.startContainer;f=c.endContainer;var e=c.startOffset,D=c.endOffset,g,l=this.guard,r=this.type,J=a?"getPreviousSourceNode":"getNextSourceNode";if(!a&&!this._.guardLTR){var H=f.type==CKEDITOR.NODE_ELEMENT?f:f.getParent(),k=f.type==CKEDITOR.NODE_ELEMENT?f.getChild(D):f.getNext();this._.guardLTR=function(a,b){return(!b||!H.equals(a))&&(!k||
120!a.equals(r))&&(a.type!=CKEDITOR.NODE_ELEMENT||!b||!a.equals(c.root))}}if(a&&!this._.guardRTL){var G=d.type==CKEDITOR.NODE_ELEMENT?d:d.getParent(),g=d.type==CKEDITOR.NODE_ELEMENT?e?d.getChild(e-1):null:d.getPrevious();this._.guardRTL=function(a,b){return(!b||!G.equals(a))&&(!g||!a.equals(g))&&(a.type!=CKEDITOR.NODE_ELEMENT||!b||!a.equals(c.root))}}var l=a?this._.guardRTL:this._.guardLTR;z=h?function(a,b){return!1===l(a,b)?!1:h(a,b)}:l;this.current?f=this.current[m](!1,p,z):(a?f.type==CKEDITOR.NODE_ELEMENT&& 134!a.equals(k))&&(a.type!=CKEDITOR.NODE_ELEMENT||!b||!a.equals(c.root))}}if(a&&!this._.guardRTL){var u=d.type==CKEDITOR.NODE_ELEMENT?d:d.getParent(),y=d.type==CKEDITOR.NODE_ELEMENT?e?d.getChild(e-1):null:d.getPrevious();this._.guardRTL=function(a,b){return(!b||!u.equals(a))&&(!y||!a.equals(y))&&(a.type!=CKEDITOR.NODE_ELEMENT||!b||!a.equals(c.root))}}var v=a?this._.guardRTL:this._.guardLTR;g=l?function(a,b){return!1===v(a,b)?!1:l(a,b)}:v;this.current?f=this.current[J](!1,r,g):(a?f.type==CKEDITOR.NODE_ELEMENT&&
121(f=0<x?f.getChild(x-1):!1===z(f,!0)?null:f.getPreviousSourceNode(!0,p,z)):(f=d,f.type==CKEDITOR.NODE_ELEMENT&&((f=f.getChild(e))||(f=!1===z(d,!0)?null:d.getNextSourceNode(!0,p,z)))),f&&!1===z(f)&&(f=null));for(;f&&!this._.end;){this.current=f;if(!this.evaluator||!1!==this.evaluator(f)){if(!b)return f}else if(b&&this.evaluator)return!1;f=f[m](!1,p,z)}this.end();return this.current=null}function d(b){for(var c,f=null;c=a.call(this,b);)f=c;return f}CKEDITOR.dom.walker=CKEDITOR.tools.createClass({$:function(a){this.range= 135(f=0<D?f.getChild(D-1):!1===g(f,!0)?null:f.getPreviousSourceNode(!0,r,g)):(f=d,f.type==CKEDITOR.NODE_ELEMENT&&((f=f.getChild(e))||(f=!1===g(d,!0)?null:d.getNextSourceNode(!0,r,g)))),f&&!1===g(f)&&(f=null));for(;f&&!this._.end;){this.current=f;if(!this.evaluator||!1!==this.evaluator(f)){if(!b)return f}else if(b&&this.evaluator)return!1;f=f[J](!1,r,g)}this.end();return this.current=null}function d(b){for(var c,f=null;c=a.call(this,b);)f=c;return f}CKEDITOR.dom.walker=CKEDITOR.tools.createClass({$:function(a){this.range=
122a;this._={}},proto:{end:function(){this._.end=1},next:function(){return a.call(this)},previous:function(){return a.call(this,1)},checkForward:function(){return!1!==a.call(this,0,1)},checkBackward:function(){return!1!==a.call(this,1,1)},lastForward:function(){return d.call(this)},lastBackward:function(){return d.call(this,1)},reset:function(){delete this.current;this._={}}}});var b={block:1,"list-item":1,table:1,"table-row-group":1,"table-header-group":1,"table-footer-group":1,"table-row":1,"table-column-group":1, 136a;this._={}},proto:{end:function(){this._.end=1},next:function(){return a.call(this)},previous:function(){return a.call(this,1)},checkForward:function(){return!1!==a.call(this,0,1)},checkBackward:function(){return!1!==a.call(this,1,1)},lastForward:function(){return d.call(this)},lastBackward:function(){return d.call(this,1)},reset:function(){delete this.current;this._={}}}});var b={block:1,"list-item":1,table:1,"table-row-group":1,"table-header-group":1,"table-footer-group":1,"table-row":1,"table-column-group":1,
123"table-column":1,"table-cell":1,"table-caption":1},c={absolute:1,fixed:1};CKEDITOR.dom.element.prototype.isBlockBoundary=function(a){return"none"!=this.getComputedStyle("float")||this.getComputedStyle("position")in c||!b[this.getComputedStyle("display")]?!!(this.is(CKEDITOR.dtd.$block)||a&&this.is(a)):!0};CKEDITOR.dom.walker.blockBoundary=function(a){return function(b){return!(b.type==CKEDITOR.NODE_ELEMENT&&b.isBlockBoundary(a))}};CKEDITOR.dom.walker.listItemBoundary=function(){return this.blockBoundary({br:1})}; 137"table-column":1,"table-cell":1,"table-caption":1},c={absolute:1,fixed:1};CKEDITOR.dom.element.prototype.isBlockBoundary=function(a){return"none"!=this.getComputedStyle("float")||this.getComputedStyle("position")in c||!b[this.getComputedStyle("display")]?!!(this.is(CKEDITOR.dtd.$block)||a&&this.is(a)):!0};CKEDITOR.dom.walker.blockBoundary=function(a){return function(b){return!(b.type==CKEDITOR.NODE_ELEMENT&&b.isBlockBoundary(a))}};CKEDITOR.dom.walker.listItemBoundary=function(){return this.blockBoundary({br:1})};
124CKEDITOR.dom.walker.bookmark=function(a,b){function c(a){return a&&a.getName&&"span"==a.getName()&&a.data("cke-bookmark")}return function(f){var d,e;d=f&&f.type!=CKEDITOR.NODE_ELEMENT&&(e=f.getParent())&&c(e);d=a?d:d||c(f);return!!(b^d)}};CKEDITOR.dom.walker.whitespaces=function(a){return function(b){var c;b&&b.type==CKEDITOR.NODE_TEXT&&(c=!CKEDITOR.tools.trim(b.getText())||CKEDITOR.env.webkit&&b.getText()==CKEDITOR.dom.selection.FILLING_CHAR_SEQUENCE);return!!(a^c)}};CKEDITOR.dom.walker.invisible= 138CKEDITOR.dom.walker.bookmark=function(a,b){function c(a){return a&&a.getName&&"span"==a.getName()&&a.data("cke-bookmark")}return function(f){var d,e;d=f&&f.type!=CKEDITOR.NODE_ELEMENT&&(e=f.getParent())&&c(e);d=a?d:d||c(f);return!!(b^d)}};CKEDITOR.dom.walker.whitespaces=function(a){return function(b){var c;b&&b.type==CKEDITOR.NODE_TEXT&&(c=!CKEDITOR.tools.trim(b.getText())||CKEDITOR.env.webkit&&b.getText()==CKEDITOR.dom.selection.FILLING_CHAR_SEQUENCE);return!!(a^c)}};CKEDITOR.dom.walker.invisible=
125function(a){var b=CKEDITOR.dom.walker.whitespaces(),c=CKEDITOR.env.webkit?1:0;return function(f){b(f)?f=1:(f.type==CKEDITOR.NODE_TEXT&&(f=f.getParent()),f=f.$.offsetWidth<=c);return!!(a^f)}};CKEDITOR.dom.walker.nodeType=function(a,b){return function(c){return!!(b^c.type==a)}};CKEDITOR.dom.walker.bogus=function(a){function b(a){return!g(a)&&!l(a)}return function(c){var f=CKEDITOR.env.needsBrFiller?c.is&&c.is("br"):c.getText&&e.test(c.getText());f&&(f=c.getParent(),c=c.getNext(b),f=f.isBlockBoundary()&& 139function(a){var b=CKEDITOR.dom.walker.whitespaces(),c=CKEDITOR.env.webkit?1:0;return function(f){b(f)?f=1:(f.type==CKEDITOR.NODE_TEXT&&(f=f.getParent()),f=f.$.offsetWidth<=c);return!!(a^f)}};CKEDITOR.dom.walker.nodeType=function(a,b){return function(c){return!!(b^c.type==a)}};CKEDITOR.dom.walker.bogus=function(a){function b(a){return!g(a)&&!h(a)}return function(c){var f=CKEDITOR.env.needsBrFiller?c.is&&c.is("br"):c.getText&&e.test(c.getText());f&&(f=c.getParent(),c=c.getNext(b),f=f.isBlockBoundary()&&
126(!c||c.type==CKEDITOR.NODE_ELEMENT&&c.isBlockBoundary()));return!!(a^f)}};CKEDITOR.dom.walker.temp=function(a){return function(b){b.type!=CKEDITOR.NODE_ELEMENT&&(b=b.getParent());b=b&&b.hasAttribute("data-cke-temp");return!!(a^b)}};var e=/^[\t\r\n ]*(?:&nbsp;|\xa0)$/,g=CKEDITOR.dom.walker.whitespaces(),l=CKEDITOR.dom.walker.bookmark(),k=CKEDITOR.dom.walker.temp(),n=function(a){return l(a)||g(a)||a.type==CKEDITOR.NODE_ELEMENT&&a.is(CKEDITOR.dtd.$inline)&&!a.is(CKEDITOR.dtd.$empty)};CKEDITOR.dom.walker.ignored= 140(!c||c.type==CKEDITOR.NODE_ELEMENT&&c.isBlockBoundary()));return!!(a^f)}};CKEDITOR.dom.walker.temp=function(a){return function(b){b.type!=CKEDITOR.NODE_ELEMENT&&(b=b.getParent());b=b&&b.hasAttribute("data-cke-temp");return!!(a^b)}};var e=/^[\t\r\n ]*(?:&nbsp;|\xa0)$/,g=CKEDITOR.dom.walker.whitespaces(),h=CKEDITOR.dom.walker.bookmark(),k=CKEDITOR.dom.walker.temp(),n=function(a){return h(a)||g(a)||a.type==CKEDITOR.NODE_ELEMENT&&a.is(CKEDITOR.dtd.$inline)&&!a.is(CKEDITOR.dtd.$empty)};CKEDITOR.dom.walker.ignored=
127function(a){return function(b){b=g(b)||l(b)||k(b);return!!(a^b)}};var w=CKEDITOR.dom.walker.ignored();CKEDITOR.dom.walker.empty=function(a){return function(b){for(var c=0,f=b.getChildCount();c<f;++c)if(!w(b.getChild(c)))return!!a;return!a}};var f=CKEDITOR.dom.walker.empty(),x=CKEDITOR.dom.walker.validEmptyBlockContainers=CKEDITOR.tools.extend(function(a){var b={},c;for(c in a)CKEDITOR.dtd[c]["#"]&&(b[c]=1);return b}(CKEDITOR.dtd.$block),{caption:1,td:1,th:1});CKEDITOR.dom.walker.editable=function(a){return function(b){b= 141function(a){return function(b){b=g(b)||h(b)||k(b);return!!(a^b)}};var q=CKEDITOR.dom.walker.ignored();CKEDITOR.dom.walker.empty=function(a){return function(b){for(var c=0,f=b.getChildCount();c<f;++c)if(!q(b.getChild(c)))return!!a;return!a}};var f=CKEDITOR.dom.walker.empty(),D=CKEDITOR.dom.walker.validEmptyBlockContainers=CKEDITOR.tools.extend(function(a){var b={},c;for(c in a)CKEDITOR.dtd[c]["#"]&&(b[c]=1);return b}(CKEDITOR.dtd.$block),{caption:1,td:1,th:1});CKEDITOR.dom.walker.editable=function(a){return function(b){b=
128w(b)?!1:b.type==CKEDITOR.NODE_TEXT||b.type==CKEDITOR.NODE_ELEMENT&&(b.is(CKEDITOR.dtd.$inline)||b.is("hr")||"false"==b.getAttribute("contenteditable")||!CKEDITOR.env.needsBrFiller&&b.is(x)&&f(b))?!0:!1;return!!(a^b)}};CKEDITOR.dom.element.prototype.getBogus=function(){var a=this;do a=a.getPreviousSourceNode();while(n(a));return a&&(CKEDITOR.env.needsBrFiller?a.is&&a.is("br"):a.getText&&e.test(a.getText()))?a:!1}})(); 142q(b)?!1:b.type==CKEDITOR.NODE_TEXT||b.type==CKEDITOR.NODE_ELEMENT&&(b.is(CKEDITOR.dtd.$inline)||b.is("hr")||"false"==b.getAttribute("contenteditable")||!CKEDITOR.env.needsBrFiller&&b.is(D)&&f(b))?!0:!1;return!!(a^b)}};CKEDITOR.dom.element.prototype.getBogus=function(){var a=this;do a=a.getPreviousSourceNode();while(n(a));return a&&(CKEDITOR.env.needsBrFiller?a.is&&a.is("br"):a.getText&&e.test(a.getText()))?a:!1}})();
129CKEDITOR.dom.range=function(a){this.endOffset=this.endContainer=this.startOffset=this.startContainer=null;this.collapsed=!0;var d=a instanceof CKEDITOR.dom.document;this.document=d?a:a.getDocument();this.root=d?a.getBody():a}; 143CKEDITOR.dom.range=function(a){this.endOffset=this.endContainer=this.startOffset=this.startContainer=null;this.collapsed=!0;var d=a instanceof CKEDITOR.dom.document;this.document=d?a:a.getDocument();this.root=d?a.getBody():a};
130(function(){function a(a){a.collapsed=a.startContainer&&a.endContainer&&a.startContainer.equals(a.endContainer)&&a.startOffset==a.endOffset}function d(a,b,c,d,e){function q(a,b,c,f){var d=c?a.getPrevious():a.getNext();if(f&&k)return d;h||f?b.append(a.clone(!0,e),c):(a.remove(),z&&b.append(a));return d}function g(){var a,b,c,f=Math.min(v.length,D.length);for(a=0;a<f;a++)if(b=v[a],c=D[a],!b.equals(c))return a;return a-1}function l(){var b=I-1,c=w&&n&&!p.equals(m);b<E-1||b<L-1||c?(c?a.moveToPosition(m, 144(function(){function a(a){a.collapsed=a.startContainer&&a.endContainer&&a.startContainer.equals(a.endContainer)&&a.startOffset==a.endOffset}function d(a,b,c,d,e){function g(a,b,c,f){var X=c?a.getPrevious():a.getNext();if(f&&h)return X;l||f?b.append(a.clone(!0,e),c):(a.remove(),q&&b.append(a,c));return X}function m(){var a,b,c,f=Math.min(O.length,p.length);for(a=0;a<f;a++)if(b=O[a],c=p[a],!b.equals(c))return a;return a-1}function k(){var b=C-1,c=v&&B&&!r.equals(J);b<t-1||b<F-1||c?(c?a.moveToPosition(J,
131CKEDITOR.POSITION_BEFORE_START):L==b+1&&H?a.moveToPosition(D[b],CKEDITOR.POSITION_BEFORE_END):a.moveToPosition(D[b+1],CKEDITOR.POSITION_BEFORE_START),d&&(b=v[b+1])&&b.type==CKEDITOR.NODE_ELEMENT&&(c=CKEDITOR.dom.element.createFromHtml('\x3cspan data-cke-bookmark\x3d"1" style\x3d"display:none"\x3e\x26nbsp;\x3c/span\x3e',a.document),c.insertAfter(b),b.mergeSiblings(!1),a.moveToBookmark({startNode:c}))):a.collapse(!0)}a.optimizeBookmark();var k=0===b,z=1==b,h=2==b;b=h||z;var p=a.startContainer,m=a.endContainer, 145CKEDITOR.POSITION_BEFORE_START):F==b+1&&y?a.moveToPosition(p[b],CKEDITOR.POSITION_BEFORE_END):a.moveToPosition(p[b+1],CKEDITOR.POSITION_BEFORE_START),d&&(b=O[b+1])&&b.type==CKEDITOR.NODE_ELEMENT&&(c=CKEDITOR.dom.element.createFromHtml('\x3cspan data-cke-bookmark\x3d"1" style\x3d"display:none"\x3e\x26nbsp;\x3c/span\x3e',a.document),c.insertAfter(b),b.mergeSiblings(!1),a.moveToBookmark({startNode:c}))):a.collapse(!0)}a.optimizeBookmark();var h=0===b,q=1==b,l=2==b;b=l||q;var r=a.startContainer,J=a.endContainer,
132C=a.startOffset,r=a.endOffset,G,H,w,n,M,Q;if(h&&m.type==CKEDITOR.NODE_TEXT&&p.equals(m))p=a.document.createText(p.substring(C,r)),c.append(p);else{m.type==CKEDITOR.NODE_TEXT?h?Q=!0:m=m.split(r):0<m.getChildCount()?r>=m.getChildCount()?(m=m.getChild(r-1),H=!0):m=m.getChild(r):n=H=!0;p.type==CKEDITOR.NODE_TEXT?h?M=!0:p.split(C):0<p.getChildCount()?0===C?(p=p.getChild(C),G=!0):p=p.getChild(C-1):w=G=!0;for(var v=p.getParents(),D=m.getParents(),I=g(),E=v.length-1,L=D.length-1,J=c,ba,Z,V,fa=-1,O=I;O<=E;O++){Z= 146H=a.startOffset,E=a.endOffset,u,y,v,B,L,n;if(l&&J.type==CKEDITOR.NODE_TEXT&&(r.equals(J)||r.type===CKEDITOR.NODE_ELEMENT&&r.getFirst().equals(J)))c.append(a.document.createText(J.substring(H,E)));else{J.type==CKEDITOR.NODE_TEXT?l?n=!0:J=J.split(E):0<J.getChildCount()?E>=J.getChildCount()?(J=J.getChild(E-1),y=!0):J=J.getChild(E):B=y=!0;r.type==CKEDITOR.NODE_TEXT?l?L=!0:r.split(H):0<r.getChildCount()?0===H?(r=r.getChild(H),u=!0):r=r.getChild(H-1):v=u=!0;for(var O=r.getParents(),p=J.getParents(),C=m(),
133v[O];V=Z.getNext();for(O!=E||Z.equals(D[O])&&E<L?b&&(ba=J.append(Z.clone(0,e))):G?q(Z,J,!1,w):M&&J.append(a.document.createText(Z.substring(C)));V;){if(V.equals(D[O])){fa=O;break}V=q(V,J)}J=ba}J=c;for(O=I;O<=L;O++)if(c=D[O],V=c.getPrevious(),c.equals(v[O]))b&&(J=J.getChild(0));else{O!=L||c.equals(v[O])&&L<E?b&&(ba=J.append(c.clone(0,e))):H?q(c,J,!1,n):Q&&J.append(a.document.createText(c.substring(0,r)));if(O>fa)for(;V;)V=q(V,J,!0);J=ba}h||l()}}function b(){var a=!1,b=CKEDITOR.dom.walker.whitespaces(), 147t=O.length-1,F=p.length-1,N=c,X,Y,U,ea=-1,P=C;P<=t;P++){Y=O[P];U=Y.getNext();for(P!=t||Y.equals(p[P])&&t<F?b&&(X=N.append(Y.clone(0,e))):u?g(Y,N,!1,v):L&&N.append(a.document.createText(Y.substring(H)));U;){if(U.equals(p[P])){ea=P;break}U=g(U,N)}N=X}N=c;for(P=C;P<=F;P++)if(c=p[P],U=c.getPrevious(),c.equals(O[P]))b&&(N=N.getChild(0));else{P!=F||c.equals(O[P])&&F<t?b&&(X=N.append(c.clone(0,e))):y?g(c,N,!1,B):n&&N.append(a.document.createText(c.substring(0,E)));if(P>ea)for(;U;)U=g(U,N,!0);N=X}l||k()}}
134c=CKEDITOR.dom.walker.bookmark(!0),d=CKEDITOR.dom.walker.bogus();return function(e){return c(e)||b(e)?!0:d(e)&&!a?a=!0:e.type==CKEDITOR.NODE_TEXT&&(e.hasAscendant("pre")||CKEDITOR.tools.trim(e.getText()).length)||e.type==CKEDITOR.NODE_ELEMENT&&!e.is(g)?!1:!0}}function c(a){var b=CKEDITOR.dom.walker.whitespaces(),c=CKEDITOR.dom.walker.bookmark(1);return function(d){return c(d)||b(d)?!0:!a&&l(d)||d.type==CKEDITOR.NODE_ELEMENT&&d.is(CKEDITOR.dtd.$removeEmpty)}}function e(a){return function(){var b;return this[a? 148function b(){var a=!1,b=CKEDITOR.dom.walker.whitespaces(),c=CKEDITOR.dom.walker.bookmark(!0),d=CKEDITOR.dom.walker.bogus();return function(e){return c(e)||b(e)?!0:d(e)&&!a?a=!0:e.type==CKEDITOR.NODE_TEXT&&(e.hasAscendant("pre")||CKEDITOR.tools.trim(e.getText()).length)||e.type==CKEDITOR.NODE_ELEMENT&&!e.is(g)?!1:!0}}function c(a){var b=CKEDITOR.dom.walker.whitespaces(),c=CKEDITOR.dom.walker.bookmark(1);return function(d){return c(d)||b(d)?!0:!a&&h(d)||d.type==CKEDITOR.NODE_ELEMENT&&d.is(CKEDITOR.dtd.$removeEmpty)}}
135"getPreviousNode":"getNextNode"](function(a){!b&&w(a)&&(b=a);return n(a)&&!(l(a)&&a.equals(b))})}}var g={abbr:1,acronym:1,b:1,bdo:1,big:1,cite:1,code:1,del:1,dfn:1,em:1,font:1,i:1,ins:1,label:1,kbd:1,q:1,samp:1,small:1,span:1,strike:1,strong:1,sub:1,sup:1,tt:1,u:1,"var":1},l=CKEDITOR.dom.walker.bogus(),k=/^[\t\r\n ]*(?:&nbsp;|\xa0)$/,n=CKEDITOR.dom.walker.editable(),w=CKEDITOR.dom.walker.ignored(!0);CKEDITOR.dom.range.prototype={clone:function(){var a=new CKEDITOR.dom.range(this.root);a._setStartContainer(this.startContainer); 149function e(a){return function(){var b;return this[a?"getPreviousNode":"getNextNode"](function(a){!b&&q(a)&&(b=a);return n(a)&&!(h(a)&&a.equals(b))})}}var g={abbr:1,acronym:1,b:1,bdo:1,big:1,cite:1,code:1,del:1,dfn:1,em:1,font:1,i:1,ins:1,label:1,kbd:1,q:1,samp:1,small:1,span:1,strike:1,strong:1,sub:1,sup:1,tt:1,u:1,"var":1},h=CKEDITOR.dom.walker.bogus(),k=/^[\t\r\n ]*(?:&nbsp;|\xa0)$/,n=CKEDITOR.dom.walker.editable(),q=CKEDITOR.dom.walker.ignored(!0);CKEDITOR.dom.range.prototype={clone:function(){var a=
136a.startOffset=this.startOffset;a._setEndContainer(this.endContainer);a.endOffset=this.endOffset;a.collapsed=this.collapsed;return a},collapse:function(a){a?(this._setEndContainer(this.startContainer),this.endOffset=this.startOffset):(this._setStartContainer(this.endContainer),this.startOffset=this.endOffset);this.collapsed=!0},cloneContents:function(a){var b=new CKEDITOR.dom.documentFragment(this.document);this.collapsed||d(this,2,b,!1,"undefined"==typeof a?!0:a);return b},deleteContents:function(a){this.collapsed|| 150new CKEDITOR.dom.range(this.root);a._setStartContainer(this.startContainer);a.startOffset=this.startOffset;a._setEndContainer(this.endContainer);a.endOffset=this.endOffset;a.collapsed=this.collapsed;return a},collapse:function(a){a?(this._setEndContainer(this.startContainer),this.endOffset=this.startOffset):(this._setStartContainer(this.endContainer),this.startOffset=this.endOffset);this.collapsed=!0},cloneContents:function(a){var b=new CKEDITOR.dom.documentFragment(this.document);this.collapsed||
137d(this,0,null,a)},extractContents:function(a,b){var c=new CKEDITOR.dom.documentFragment(this.document);this.collapsed||d(this,1,c,a,"undefined"==typeof b?!0:b);return c},createBookmark:function(a){var b,c,d,e,q=this.collapsed;b=this.document.createElement("span");b.data("cke-bookmark",1);b.setStyle("display","none");b.setHtml("\x26nbsp;");a&&(d="cke_bm_"+CKEDITOR.tools.getNextNumber(),b.setAttribute("id",d+(q?"C":"S")));q||(c=b.clone(),c.setHtml("\x26nbsp;"),a&&c.setAttribute("id",d+"E"),e=this.clone(), 151d(this,2,b,!1,"undefined"==typeof a?!0:a);return b},deleteContents:function(a){this.collapsed||d(this,0,null,a)},extractContents:function(a,b){var c=new CKEDITOR.dom.documentFragment(this.document);this.collapsed||d(this,1,c,a,"undefined"==typeof b?!0:b);return c},createBookmark:function(a){var b,c,d,e,g=this.collapsed;b=this.document.createElement("span");b.data("cke-bookmark",1);b.setStyle("display","none");b.setHtml("\x26nbsp;");a&&(d="cke_bm_"+CKEDITOR.tools.getNextNumber(),b.setAttribute("id",
138e.collapse(),e.insertNode(c));e=this.clone();e.collapse(!0);e.insertNode(b);c?(this.setStartAfter(b),this.setEndBefore(c)):this.moveToPosition(b,CKEDITOR.POSITION_AFTER_END);return{startNode:a?d+(q?"C":"S"):b,endNode:a?d+"E":c,serializable:a,collapsed:q}},createBookmark2:function(){function a(b){var f=b.container,d=b.offset,e;e=f;var g=d;e=e.type!=CKEDITOR.NODE_ELEMENT||0===g||g==e.getChildCount()?0:e.getChild(g-1).type==CKEDITOR.NODE_TEXT&&e.getChild(g).type==CKEDITOR.NODE_TEXT;e&&(f=f.getChild(d- 152d+(g?"C":"S")));g||(c=b.clone(),c.setHtml("\x26nbsp;"),a&&c.setAttribute("id",d+"E"),e=this.clone(),e.collapse(),e.insertNode(c));e=this.clone();e.collapse(!0);e.insertNode(b);c?(this.setStartAfter(b),this.setEndBefore(c)):this.moveToPosition(b,CKEDITOR.POSITION_AFTER_END);return{startNode:a?d+(g?"C":"S"):b,endNode:a?d+"E":c,serializable:a,collapsed:g}},createBookmark2:function(){function a(b){var f=b.container,d=b.offset,e;e=f;var g=d;e=e.type!=CKEDITOR.NODE_ELEMENT||0===g||g==e.getChildCount()?
1391),d=f.getLength());if(f.type==CKEDITOR.NODE_ELEMENT&&0<d){a:{for(e=f;d--;)if(g=e.getChild(d).getIndex(!0),0<=g){d=g;break a}d=-1}d+=1}if(f.type==CKEDITOR.NODE_TEXT){e=f;for(g=0;(e=e.getPrevious())&&e.type==CKEDITOR.NODE_TEXT;)g+=e.getText().replace(CKEDITOR.dom.selection.FILLING_CHAR_SEQUENCE,"").length;e=g;f.getText()?d+=e:(g=f.getPrevious(c),e?(d=e,f=g?g.getNext():f.getParent().getFirst()):(f=f.getParent(),d=g?g.getIndex(!0)+1:0))}b.container=f;b.offset=d}function b(a,c){var f=c.getCustomData("cke-fillingChar"); 1530:e.getChild(g-1).type==CKEDITOR.NODE_TEXT&&e.getChild(g).type==CKEDITOR.NODE_TEXT;e&&(f=f.getChild(d-1),d=f.getLength());if(f.type==CKEDITOR.NODE_ELEMENT&&0<d){a:{for(e=f;d--;)if(g=e.getChild(d).getIndex(!0),0<=g){d=g;break a}d=-1}d+=1}if(f.type==CKEDITOR.NODE_TEXT){e=f;for(g=0;(e=e.getPrevious())&&e.type==CKEDITOR.NODE_TEXT;)g+=e.getText().replace(CKEDITOR.dom.selection.FILLING_CHAR_SEQUENCE,"").length;e=g;f.getText()?d+=e:(g=f.getPrevious(c),e?(d=e,f=g?g.getNext():f.getParent().getFirst()):(f=
140if(f){var d=a.container;f.equals(d)&&(a.offset-=CKEDITOR.dom.selection.FILLING_CHAR_SEQUENCE.length,0>=a.offset&&(a.offset=d.getIndex(),a.container=d.getParent()))}}var c=CKEDITOR.dom.walker.nodeType(CKEDITOR.NODE_TEXT,!0);return function(c){var d=this.collapsed,e={container:this.startContainer,offset:this.startOffset},g={container:this.endContainer,offset:this.endOffset};c&&(a(e),b(e,this.root),d||(a(g),b(g,this.root)));return{start:e.container.getAddress(c),end:d?null:g.container.getAddress(c), 154f.getParent(),d=g?g.getIndex(!0)+1:0))}b.container=f;b.offset=d}function b(a,c){var f=c.getCustomData("cke-fillingChar");if(f){var d=a.container;f.equals(d)&&(a.offset-=CKEDITOR.dom.selection.FILLING_CHAR_SEQUENCE.length,0>=a.offset&&(a.offset=d.getIndex(),a.container=d.getParent()))}}var c=CKEDITOR.dom.walker.nodeType(CKEDITOR.NODE_TEXT,!0);return function(c){var d=this.collapsed,e={container:this.startContainer,offset:this.startOffset},m={container:this.endContainer,offset:this.endOffset};c&&(a(e),
141startOffset:e.offset,endOffset:g.offset,normalized:c,collapsed:d,is2:!0}}}(),moveToBookmark:function(a){if(a.is2){var b=this.document.getByAddress(a.start,a.normalized),c=a.startOffset,d=a.end&&this.document.getByAddress(a.end,a.normalized);a=a.endOffset;this.setStart(b,c);d?this.setEnd(d,a):this.collapse(!0)}else b=(c=a.serializable)?this.document.getById(a.startNode):a.startNode,a=c?this.document.getById(a.endNode):a.endNode,this.setStartBefore(b),b.remove(),a?(this.setEndBefore(a),a.remove()): 155b(e,this.root),d||(a(m),b(m,this.root)));return{start:e.container.getAddress(c),end:d?null:m.container.getAddress(c),startOffset:e.offset,endOffset:m.offset,normalized:c,collapsed:d,is2:!0}}}(),moveToBookmark:function(a){if(a.is2){var b=this.document.getByAddress(a.start,a.normalized),c=a.startOffset,d=a.end&&this.document.getByAddress(a.end,a.normalized);a=a.endOffset;this.setStart(b,c);d?this.setEnd(d,a):this.collapse(!0)}else b=(c=a.serializable)?this.document.getById(a.startNode):a.startNode,
142this.collapse(!0)},getBoundaryNodes:function(){var a=this.startContainer,b=this.endContainer,c=this.startOffset,d=this.endOffset,e;if(a.type==CKEDITOR.NODE_ELEMENT)if(e=a.getChildCount(),e>c)a=a.getChild(c);else if(1>e)a=a.getPreviousSourceNode();else{for(a=a.$;a.lastChild;)a=a.lastChild;a=new CKEDITOR.dom.node(a);a=a.getNextSourceNode()||a}if(b.type==CKEDITOR.NODE_ELEMENT)if(e=b.getChildCount(),e>d)b=b.getChild(d).getPreviousSourceNode(!0);else if(1>e)b=b.getPreviousSourceNode();else{for(b=b.$;b.lastChild;)b= 156a=c?this.document.getById(a.endNode):a.endNode,this.setStartBefore(b),b.remove(),a?(this.setEndBefore(a),a.remove()):this.collapse(!0)},getBoundaryNodes:function(){var a=this.startContainer,b=this.endContainer,c=this.startOffset,d=this.endOffset,e;if(a.type==CKEDITOR.NODE_ELEMENT)if(e=a.getChildCount(),e>c)a=a.getChild(c);else if(1>e)a=a.getPreviousSourceNode();else{for(a=a.$;a.lastChild;)a=a.lastChild;a=new CKEDITOR.dom.node(a);a=a.getNextSourceNode()||a}if(b.type==CKEDITOR.NODE_ELEMENT)if(e=b.getChildCount(),
143b.lastChild;b=new CKEDITOR.dom.node(b)}a.getPosition(b)&CKEDITOR.POSITION_FOLLOWING&&(a=b);return{startNode:a,endNode:b}},getCommonAncestor:function(a,b){var c=this.startContainer,d=this.endContainer,c=c.equals(d)?a&&c.type==CKEDITOR.NODE_ELEMENT&&this.startOffset==this.endOffset-1?c.getChild(this.startOffset):c:c.getCommonAncestor(d);return b&&!c.is?c.getParent():c},optimize:function(){var a=this.startContainer,b=this.startOffset;a.type!=CKEDITOR.NODE_ELEMENT&&(b?b>=a.getLength()&&this.setStartAfter(a): 157e>d)b=b.getChild(d).getPreviousSourceNode(!0);else if(1>e)b=b.getPreviousSourceNode();else{for(b=b.$;b.lastChild;)b=b.lastChild;b=new CKEDITOR.dom.node(b)}a.getPosition(b)&CKEDITOR.POSITION_FOLLOWING&&(a=b);return{startNode:a,endNode:b}},getCommonAncestor:function(a,b){var c=this.startContainer,d=this.endContainer,c=c.equals(d)?a&&c.type==CKEDITOR.NODE_ELEMENT&&this.startOffset==this.endOffset-1?c.getChild(this.startOffset):c:c.getCommonAncestor(d);return b&&!c.is?c.getParent():c},optimize:function(){var a=
144this.setStartBefore(a));a=this.endContainer;b=this.endOffset;a.type!=CKEDITOR.NODE_ELEMENT&&(b?b>=a.getLength()&&this.setEndAfter(a):this.setEndBefore(a))},optimizeBookmark:function(){var a=this.startContainer,b=this.endContainer;a.is&&a.is("span")&&a.data("cke-bookmark")&&this.setStartAt(a,CKEDITOR.POSITION_BEFORE_START);b&&b.is&&b.is("span")&&b.data("cke-bookmark")&&this.setEndAt(b,CKEDITOR.POSITION_AFTER_END)},trim:function(a,b){var c=this.startContainer,d=this.startOffset,e=this.collapsed;if((!a|| 158this.startContainer,b=this.startOffset;a.type!=CKEDITOR.NODE_ELEMENT&&(b?b>=a.getLength()&&this.setStartAfter(a):this.setStartBefore(a));a=this.endContainer;b=this.endOffset;a.type!=CKEDITOR.NODE_ELEMENT&&(b?b>=a.getLength()&&this.setEndAfter(a):this.setEndBefore(a))},optimizeBookmark:function(){var a=this.startContainer,b=this.endContainer;a.is&&a.is("span")&&a.data("cke-bookmark")&&this.setStartAt(a,CKEDITOR.POSITION_BEFORE_START);b&&b.is&&b.is("span")&&b.data("cke-bookmark")&&this.setEndAt(b,CKEDITOR.POSITION_AFTER_END)},
145e)&&c&&c.type==CKEDITOR.NODE_TEXT){if(d)if(d>=c.getLength())d=c.getIndex()+1,c=c.getParent();else{var q=c.split(d),d=c.getIndex()+1,c=c.getParent();this.startContainer.equals(this.endContainer)?this.setEnd(q,this.endOffset-this.startOffset):c.equals(this.endContainer)&&(this.endOffset+=1)}else d=c.getIndex(),c=c.getParent();this.setStart(c,d);if(e){this.collapse(!0);return}}c=this.endContainer;d=this.endOffset;b||e||!c||c.type!=CKEDITOR.NODE_TEXT||(d?(d>=c.getLength()||c.split(d),d=c.getIndex()+1): 159trim:function(a,b){var c=this.startContainer,d=this.startOffset,e=this.collapsed;if((!a||e)&&c&&c.type==CKEDITOR.NODE_TEXT){if(d)if(d>=c.getLength())d=c.getIndex()+1,c=c.getParent();else{var g=c.split(d),d=c.getIndex()+1,c=c.getParent();this.startContainer.equals(this.endContainer)?this.setEnd(g,this.endOffset-this.startOffset):c.equals(this.endContainer)&&(this.endOffset+=1)}else d=c.getIndex(),c=c.getParent();this.setStart(c,d);if(e){this.collapse(!0);return}}c=this.endContainer;d=this.endOffset;
146d=c.getIndex(),c=c.getParent(),this.setEnd(c,d))},enlarge:function(a,b){function c(a){return a&&a.type==CKEDITOR.NODE_ELEMENT&&a.hasAttribute("contenteditable")?null:a}var d=new RegExp(/[^\s\ufeff]/);switch(a){case CKEDITOR.ENLARGE_INLINE:var e=1;case CKEDITOR.ENLARGE_ELEMENT:var q=function(a,b){var c=new CKEDITOR.dom.range(l);c.setStart(a,b);c.setEndAt(l,CKEDITOR.POSITION_BEFORE_END);var c=new CKEDITOR.dom.walker(c),f;for(c.guard=function(a){return!(a.type==CKEDITOR.NODE_ELEMENT&&a.isBlockBoundary())};f= 160b||e||!c||c.type!=CKEDITOR.NODE_TEXT||(d?(d>=c.getLength()||c.split(d),d=c.getIndex()+1):d=c.getIndex(),c=c.getParent(),this.setEnd(c,d))},enlarge:function(a,b){function c(a){return a&&a.type==CKEDITOR.NODE_ELEMENT&&a.hasAttribute("contenteditable")?null:a}var d=new RegExp(/[^\s\ufeff]/);switch(a){case CKEDITOR.ENLARGE_INLINE:var e=1;case CKEDITOR.ENLARGE_ELEMENT:var g=function(a,b){var c=new CKEDITOR.dom.range(k);c.setStart(a,b);c.setEndAt(k,CKEDITOR.POSITION_BEFORE_END);var c=new CKEDITOR.dom.walker(c),
147c.next();){if(f.type!=CKEDITOR.NODE_TEXT)return!1;G=f!=a?f.getText():f.substring(b);if(d.test(G))return!1}return!0};if(this.collapsed)break;var g=this.getCommonAncestor(),l=this.root,k,z,h,p,m,C=!1,r,G;r=this.startContainer;var H=this.startOffset;r.type==CKEDITOR.NODE_TEXT?(H&&(r=!CKEDITOR.tools.trim(r.substring(0,H)).length&&r,C=!!r),r&&((p=r.getPrevious())||(h=r.getParent()))):(H&&(p=r.getChild(H-1)||r.getLast()),p||(h=r));for(h=c(h);h||p;){if(h&&!p){!m&&h.equals(g)&&(m=!0);if(e?h.isBlockBoundary(): 161f;for(c.guard=function(a){return!(a.type==CKEDITOR.NODE_ELEMENT&&a.isBlockBoundary())};f=c.next();){if(f.type!=CKEDITOR.NODE_TEXT)return!1;u=f!=a?f.getText():f.substring(b);if(d.test(u))return!1}return!0};if(this.collapsed)break;var m=this.getCommonAncestor(),k=this.root,h,q,l,r,J,H=!1,E,u;E=this.startContainer;var y=this.startOffset;E.type==CKEDITOR.NODE_TEXT?(y&&(E=!CKEDITOR.tools.trim(E.substring(0,y)).length&&E,H=!!E),E&&((r=E.getPrevious())||(l=E.getParent()))):(y&&(r=E.getChild(y-1)||E.getLast()),
148!l.contains(h))break;C&&"inline"==h.getComputedStyle("display")||(C=!1,m?k=h:this.setStartBefore(h));p=h.getPrevious()}for(;p;)if(r=!1,p.type==CKEDITOR.NODE_COMMENT)p=p.getPrevious();else{if(p.type==CKEDITOR.NODE_TEXT)G=p.getText(),d.test(G)&&(p=null),r=/[\s\ufeff]$/.test(G);else if((p.$.offsetWidth>(CKEDITOR.env.webkit?1:0)||b&&p.is("br"))&&!p.data("cke-bookmark"))if(C&&CKEDITOR.dtd.$removeEmpty[p.getName()]){G=p.getText();if(d.test(G))p=null;else for(var H=p.$.getElementsByTagName("*"),w=0,n;n= 162r||(l=E));for(l=c(l);l||r;){if(l&&!r){!J&&l.equals(m)&&(J=!0);if(e?l.isBlockBoundary():!k.contains(l))break;H&&"inline"==l.getComputedStyle("display")||(H=!1,J?h=l:this.setStartBefore(l));r=l.getPrevious()}for(;r;)if(E=!1,r.type==CKEDITOR.NODE_COMMENT)r=r.getPrevious();else{if(r.type==CKEDITOR.NODE_TEXT)u=r.getText(),d.test(u)&&(r=null),E=/[\s\ufeff]$/.test(u);else if((r.$.offsetWidth>(CKEDITOR.env.webkit?1:0)||b&&r.is("br"))&&!r.data("cke-bookmark"))if(H&&CKEDITOR.dtd.$removeEmpty[r.getName()]){u=
149H[w++];)if(!CKEDITOR.dtd.$removeEmpty[n.nodeName.toLowerCase()]){p=null;break}p&&(r=!!G.length)}else p=null;r&&(C?m?k=h:h&&this.setStartBefore(h):C=!0);if(p){r=p.getPrevious();if(!h&&!r){h=p;p=null;break}p=r}else h=null}h&&(h=c(h.getParent()))}r=this.endContainer;H=this.endOffset;h=p=null;m=C=!1;r.type==CKEDITOR.NODE_TEXT?CKEDITOR.tools.trim(r.substring(H)).length?C=!0:(C=!r.getLength(),H==r.getLength()?(p=r.getNext())||(h=r.getParent()):q(r,H)&&(h=r.getParent())):(p=r.getChild(H))||(h=r);for(;h|| 163r.getText();if(d.test(u))r=null;else for(var y=r.$.getElementsByTagName("*"),v=0,B;B=y[v++];)if(!CKEDITOR.dtd.$removeEmpty[B.nodeName.toLowerCase()]){r=null;break}r&&(E=!!u.length)}else r=null;E&&(H?J?h=l:l&&this.setStartBefore(l):H=!0);if(r){E=r.getPrevious();if(!l&&!E){l=r;r=null;break}r=E}else l=null}l&&(l=c(l.getParent()))}E=this.endContainer;y=this.endOffset;l=r=null;J=H=!1;E.type==CKEDITOR.NODE_TEXT?CKEDITOR.tools.trim(E.substring(y)).length?H=!0:(H=!E.getLength(),y==E.getLength()?(r=E.getNext())||
150p;){if(h&&!p){!m&&h.equals(g)&&(m=!0);if(e?h.isBlockBoundary():!l.contains(h))break;C&&"inline"==h.getComputedStyle("display")||(C=!1,m?z=h:h&&this.setEndAfter(h));p=h.getNext()}for(;p;){r=!1;if(p.type==CKEDITOR.NODE_TEXT)G=p.getText(),q(p,0)||(p=null),r=/^[\s\ufeff]/.test(G);else if(p.type==CKEDITOR.NODE_ELEMENT){if((0<p.$.offsetWidth||b&&p.is("br"))&&!p.data("cke-bookmark"))if(C&&CKEDITOR.dtd.$removeEmpty[p.getName()]){G=p.getText();if(d.test(G))p=null;else for(H=p.$.getElementsByTagName("*"),w= 164(l=E.getParent()):g(E,y)&&(l=E.getParent())):(r=E.getChild(y))||(l=E);for(;l||r;){if(l&&!r){!J&&l.equals(m)&&(J=!0);if(e?l.isBlockBoundary():!k.contains(l))break;H&&"inline"==l.getComputedStyle("display")||(H=!1,J?q=l:l&&this.setEndAfter(l));r=l.getNext()}for(;r;){E=!1;if(r.type==CKEDITOR.NODE_TEXT)u=r.getText(),g(r,0)||(r=null),E=/^[\s\ufeff]/.test(u);else if(r.type==CKEDITOR.NODE_ELEMENT){if((0<r.$.offsetWidth||b&&r.is("br"))&&!r.data("cke-bookmark"))if(H&&CKEDITOR.dtd.$removeEmpty[r.getName()]){u=
1510;n=H[w++];)if(!CKEDITOR.dtd.$removeEmpty[n.nodeName.toLowerCase()]){p=null;break}p&&(r=!!G.length)}else p=null}else r=1;r&&C&&(m?z=h:this.setEndAfter(h));if(p){r=p.getNext();if(!h&&!r){h=p;p=null;break}p=r}else h=null}h&&(h=c(h.getParent()))}k&&z&&(g=k.contains(z)?z:k,this.setStartBefore(g),this.setEndAfter(g));break;case CKEDITOR.ENLARGE_BLOCK_CONTENTS:case CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS:h=new CKEDITOR.dom.range(this.root);l=this.root;h.setStartAt(l,CKEDITOR.POSITION_AFTER_START);h.setEnd(this.startContainer, 165r.getText();if(d.test(u))r=null;else for(y=r.$.getElementsByTagName("*"),v=0;B=y[v++];)if(!CKEDITOR.dtd.$removeEmpty[B.nodeName.toLowerCase()]){r=null;break}r&&(E=!!u.length)}else r=null}else E=1;E&&H&&(J?q=l:this.setEndAfter(l));if(r){E=r.getNext();if(!l&&!E){l=r;r=null;break}r=E}else l=null}l&&(l=c(l.getParent()))}h&&q&&(m=h.contains(q)?q:h,this.setStartBefore(m),this.setEndAfter(m));break;case CKEDITOR.ENLARGE_BLOCK_CONTENTS:case CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS:l=new CKEDITOR.dom.range(this.root);
152this.startOffset);h=new CKEDITOR.dom.walker(h);var M,Q,v=CKEDITOR.dom.walker.blockBoundary(a==CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS?{br:1}:null),D=null,I=function(a){if(a.type==CKEDITOR.NODE_ELEMENT&&"false"==a.getAttribute("contenteditable"))if(D){if(D.equals(a)){D=null;return}}else D=a;else if(D)return;var b=v(a);b||(M=a);return b},e=function(a){var b=I(a);!b&&a.is&&a.is("br")&&(Q=a);return b};h.guard=I;h=h.lastBackward();M=M||l;this.setStartAt(M,!M.is("br")&&(!h&&this.checkStartOfBlock()||h&&M.contains(h))? 166k=this.root;l.setStartAt(k,CKEDITOR.POSITION_AFTER_START);l.setEnd(this.startContainer,this.startOffset);l=new CKEDITOR.dom.walker(l);var L,n,O=CKEDITOR.dom.walker.blockBoundary(a==CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS?{br:1}:null),p=null,C=function(a){if(a.type==CKEDITOR.NODE_ELEMENT&&"false"==a.getAttribute("contenteditable"))if(p){if(p.equals(a)){p=null;return}}else p=a;else if(p)return;var b=O(a);b||(L=a);return b},e=function(a){var b=C(a);!b&&a.is&&a.is("br")&&(n=a);return b};l.guard=C;l=l.lastBackward();
153CKEDITOR.POSITION_AFTER_START:CKEDITOR.POSITION_AFTER_END);if(a==CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS){h=this.clone();h=new CKEDITOR.dom.walker(h);var E=CKEDITOR.dom.walker.whitespaces(),L=CKEDITOR.dom.walker.bookmark();h.evaluator=function(a){return!E(a)&&!L(a)};if((h=h.previous())&&h.type==CKEDITOR.NODE_ELEMENT&&h.is("br"))break}h=this.clone();h.collapse();h.setEndAt(l,CKEDITOR.POSITION_BEFORE_END);h=new CKEDITOR.dom.walker(h);h.guard=a==CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS?e:I;M=D=Q=null;h=h.lastForward(); 167L=L||k;this.setStartAt(L,!L.is("br")&&(!l&&this.checkStartOfBlock()||l&&L.contains(l))?CKEDITOR.POSITION_AFTER_START:CKEDITOR.POSITION_AFTER_END);if(a==CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS){l=this.clone();l=new CKEDITOR.dom.walker(l);var t=CKEDITOR.dom.walker.whitespaces(),F=CKEDITOR.dom.walker.bookmark();l.evaluator=function(a){return!t(a)&&!F(a)};if((l=l.previous())&&l.type==CKEDITOR.NODE_ELEMENT&&l.is("br"))break}l=this.clone();l.collapse();l.setEndAt(k,CKEDITOR.POSITION_BEFORE_END);l=new CKEDITOR.dom.walker(l);
154M=M||l;this.setEndAt(M,!h&&this.checkEndOfBlock()||h&&M.contains(h)?CKEDITOR.POSITION_BEFORE_END:CKEDITOR.POSITION_BEFORE_START);Q&&this.setEndAfter(Q)}},shrink:function(a,b,c){if(!this.collapsed){a=a||CKEDITOR.SHRINK_TEXT;var d=this.clone(),e=this.startContainer,q=this.endContainer,g=this.startOffset,l=this.endOffset,k=1,z=1;e&&e.type==CKEDITOR.NODE_TEXT&&(g?g>=e.getLength()?d.setStartAfter(e):(d.setStartBefore(e),k=0):d.setStartBefore(e));q&&q.type==CKEDITOR.NODE_TEXT&&(l?l>=q.getLength()?d.setEndAfter(q): 168l.guard=a==CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS?e:C;L=p=n=null;l=l.lastForward();L=L||k;this.setEndAt(L,!l&&this.checkEndOfBlock()||l&&L.contains(l)?CKEDITOR.POSITION_BEFORE_END:CKEDITOR.POSITION_BEFORE_START);n&&this.setEndAfter(n)}},shrink:function(a,b,c){var d="boolean"===typeof c?c:c&&"boolean"===typeof c.shrinkOnBlockBoundary?c.shrinkOnBlockBoundary:!0,e=c&&c.skipBogus;if(!this.collapsed){a=a||CKEDITOR.SHRINK_TEXT;var g=this.clone(),m=this.startContainer,k=this.endContainer,h=this.startOffset,
155(d.setEndAfter(q),z=0):d.setEndBefore(q));var d=new CKEDITOR.dom.walker(d),h=CKEDITOR.dom.walker.bookmark();d.evaluator=function(b){return b.type==(a==CKEDITOR.SHRINK_ELEMENT?CKEDITOR.NODE_ELEMENT:CKEDITOR.NODE_TEXT)};var p;d.guard=function(b,d){if(h(b))return!0;if(a==CKEDITOR.SHRINK_ELEMENT&&b.type==CKEDITOR.NODE_TEXT||d&&b.equals(p)||!1===c&&b.type==CKEDITOR.NODE_ELEMENT&&b.isBlockBoundary()||b.type==CKEDITOR.NODE_ELEMENT&&b.hasAttribute("contenteditable"))return!1;d||b.type!=CKEDITOR.NODE_ELEMENT|| 169q=this.endOffset,l=c=1;m&&m.type==CKEDITOR.NODE_TEXT&&(h?h>=m.getLength()?g.setStartAfter(m):(g.setStartBefore(m),c=0):g.setStartBefore(m));k&&k.type==CKEDITOR.NODE_TEXT&&(q?q>=k.getLength()?g.setEndAfter(k):(g.setEndAfter(k),l=0):g.setEndBefore(k));var g=new CKEDITOR.dom.walker(g),r=CKEDITOR.dom.walker.bookmark(),J=CKEDITOR.dom.walker.bogus();g.evaluator=function(b){return b.type==(a==CKEDITOR.SHRINK_ELEMENT?CKEDITOR.NODE_ELEMENT:CKEDITOR.NODE_TEXT)};var H;g.guard=function(b,c){if(e&&J(b)||r(b))return!0;
156(p=b);return!0};k&&(e=d[a==CKEDITOR.SHRINK_ELEMENT?"lastForward":"next"]())&&this.setStartAt(e,b?CKEDITOR.POSITION_AFTER_START:CKEDITOR.POSITION_BEFORE_START);z&&(d.reset(),(d=d[a==CKEDITOR.SHRINK_ELEMENT?"lastBackward":"previous"]())&&this.setEndAt(d,b?CKEDITOR.POSITION_BEFORE_END:CKEDITOR.POSITION_AFTER_END));return!(!k&&!z)}},insertNode:function(a){this.optimizeBookmark();this.trim(!1,!0);var b=this.startContainer,c=b.getChild(this.startOffset);c?a.insertBefore(c):b.append(a);a.getParent()&&a.getParent().equals(this.endContainer)&& 170if(a==CKEDITOR.SHRINK_ELEMENT&&b.type==CKEDITOR.NODE_TEXT||c&&b.equals(H)||!1===d&&b.type==CKEDITOR.NODE_ELEMENT&&b.isBlockBoundary()||b.type==CKEDITOR.NODE_ELEMENT&&b.hasAttribute("contenteditable"))return!1;c||b.type!=CKEDITOR.NODE_ELEMENT||(H=b);return!0};c&&(m=g[a==CKEDITOR.SHRINK_ELEMENT?"lastForward":"next"]())&&this.setStartAt(m,b?CKEDITOR.POSITION_AFTER_START:CKEDITOR.POSITION_BEFORE_START);l&&(g.reset(),(g=g[a==CKEDITOR.SHRINK_ELEMENT?"lastBackward":"previous"]())&&this.setEndAt(g,b?CKEDITOR.POSITION_BEFORE_END:
157this.endOffset++;this.setStartBefore(a)},moveToPosition:function(a,b){this.setStartAt(a,b);this.collapse(!0)},moveToRange:function(a){this.setStart(a.startContainer,a.startOffset);this.setEnd(a.endContainer,a.endOffset)},selectNodeContents:function(a){this.setStart(a,0);this.setEnd(a,a.type==CKEDITOR.NODE_TEXT?a.getLength():a.getChildCount())},setStart:function(b,c){b.type==CKEDITOR.NODE_ELEMENT&&CKEDITOR.dtd.$empty[b.getName()]&&(c=b.getIndex(),b=b.getParent());this._setStartContainer(b);this.startOffset= 171CKEDITOR.POSITION_AFTER_END));return!(!c&&!l)}},insertNode:function(a){this.optimizeBookmark();this.trim(!1,!0);var b=this.startContainer,c=b.getChild(this.startOffset);c?a.insertBefore(c):b.append(a);a.getParent()&&a.getParent().equals(this.endContainer)&&this.endOffset++;this.setStartBefore(a)},moveToPosition:function(a,b){this.setStartAt(a,b);this.collapse(!0)},moveToRange:function(a){this.setStart(a.startContainer,a.startOffset);this.setEnd(a.endContainer,a.endOffset)},selectNodeContents:function(a){this.setStart(a,
158c;this.endContainer||(this._setEndContainer(b),this.endOffset=c);a(this)},setEnd:function(b,c){b.type==CKEDITOR.NODE_ELEMENT&&CKEDITOR.dtd.$empty[b.getName()]&&(c=b.getIndex()+1,b=b.getParent());this._setEndContainer(b);this.endOffset=c;this.startContainer||(this._setStartContainer(b),this.startOffset=c);a(this)},setStartAfter:function(a){this.setStart(a.getParent(),a.getIndex()+1)},setStartBefore:function(a){this.setStart(a.getParent(),a.getIndex())},setEndAfter:function(a){this.setEnd(a.getParent(), 1720);this.setEnd(a,a.type==CKEDITOR.NODE_TEXT?a.getLength():a.getChildCount())},setStart:function(b,c){b.type==CKEDITOR.NODE_ELEMENT&&CKEDITOR.dtd.$empty[b.getName()]&&(c=b.getIndex(),b=b.getParent());this._setStartContainer(b);this.startOffset=c;this.endContainer||(this._setEndContainer(b),this.endOffset=c);a(this)},setEnd:function(b,c){b.type==CKEDITOR.NODE_ELEMENT&&CKEDITOR.dtd.$empty[b.getName()]&&(c=b.getIndex()+1,b=b.getParent());this._setEndContainer(b);this.endOffset=c;this.startContainer||
159a.getIndex()+1)},setEndBefore:function(a){this.setEnd(a.getParent(),a.getIndex())},setStartAt:function(b,c){switch(c){case CKEDITOR.POSITION_AFTER_START:this.setStart(b,0);break;case CKEDITOR.POSITION_BEFORE_END:b.type==CKEDITOR.NODE_TEXT?this.setStart(b,b.getLength()):this.setStart(b,b.getChildCount());break;case CKEDITOR.POSITION_BEFORE_START:this.setStartBefore(b);break;case CKEDITOR.POSITION_AFTER_END:this.setStartAfter(b)}a(this)},setEndAt:function(b,c){switch(c){case CKEDITOR.POSITION_AFTER_START:this.setEnd(b, 173(this._setStartContainer(b),this.startOffset=c);a(this)},setStartAfter:function(a){this.setStart(a.getParent(),a.getIndex()+1)},setStartBefore:function(a){this.setStart(a.getParent(),a.getIndex())},setEndAfter:function(a){this.setEnd(a.getParent(),a.getIndex()+1)},setEndBefore:function(a){this.setEnd(a.getParent(),a.getIndex())},setStartAt:function(b,c){switch(c){case CKEDITOR.POSITION_AFTER_START:this.setStart(b,0);break;case CKEDITOR.POSITION_BEFORE_END:b.type==CKEDITOR.NODE_TEXT?this.setStart(b,
1600);break;case CKEDITOR.POSITION_BEFORE_END:b.type==CKEDITOR.NODE_TEXT?this.setEnd(b,b.getLength()):this.setEnd(b,b.getChildCount());break;case CKEDITOR.POSITION_BEFORE_START:this.setEndBefore(b);break;case CKEDITOR.POSITION_AFTER_END:this.setEndAfter(b)}a(this)},fixBlock:function(a,b){var c=this.createBookmark(),d=this.document.createElement(b);this.collapse(a);this.enlarge(CKEDITOR.ENLARGE_BLOCK_CONTENTS);this.extractContents().appendTo(d);d.trim();this.insertNode(d);var e=d.getBogus();e&&e.remove(); 174b.getLength()):this.setStart(b,b.getChildCount());break;case CKEDITOR.POSITION_BEFORE_START:this.setStartBefore(b);break;case CKEDITOR.POSITION_AFTER_END:this.setStartAfter(b)}a(this)},setEndAt:function(b,c){switch(c){case CKEDITOR.POSITION_AFTER_START:this.setEnd(b,0);break;case CKEDITOR.POSITION_BEFORE_END:b.type==CKEDITOR.NODE_TEXT?this.setEnd(b,b.getLength()):this.setEnd(b,b.getChildCount());break;case CKEDITOR.POSITION_BEFORE_START:this.setEndBefore(b);break;case CKEDITOR.POSITION_AFTER_END:this.setEndAfter(b)}a(this)},
161d.appendBogus();this.moveToBookmark(c);return d},splitBlock:function(a,b){var c=new CKEDITOR.dom.elementPath(this.startContainer,this.root),d=new CKEDITOR.dom.elementPath(this.endContainer,this.root),e=c.block,q=d.block,g=null;if(!c.blockLimit.equals(d.blockLimit))return null;"br"!=a&&(e||(e=this.fixBlock(!0,a),q=(new CKEDITOR.dom.elementPath(this.endContainer,this.root)).block),q||(q=this.fixBlock(!1,a)));c=e&&this.checkStartOfBlock();d=q&&this.checkEndOfBlock();this.deleteContents();e&&e.equals(q)&& 175fixBlock:function(a,b){var c=this.createBookmark(),d=this.document.createElement(b);this.collapse(a);this.enlarge(CKEDITOR.ENLARGE_BLOCK_CONTENTS);this.extractContents().appendTo(d);d.trim();this.insertNode(d);var e=d.getBogus();e&&e.remove();d.appendBogus();this.moveToBookmark(c);return d},splitBlock:function(a,b){var c=new CKEDITOR.dom.elementPath(this.startContainer,this.root),d=new CKEDITOR.dom.elementPath(this.endContainer,this.root),e=c.block,g=d.block,m=null;if(!c.blockLimit.equals(d.blockLimit))return null;
162(d?(g=new CKEDITOR.dom.elementPath(this.startContainer,this.root),this.moveToPosition(q,CKEDITOR.POSITION_AFTER_END),q=null):c?(g=new CKEDITOR.dom.elementPath(this.startContainer,this.root),this.moveToPosition(e,CKEDITOR.POSITION_BEFORE_START),e=null):(q=this.splitElement(e,b||!1),e.is("ul","ol")||e.appendBogus()));return{previousBlock:e,nextBlock:q,wasStartOfBlock:c,wasEndOfBlock:d,elementPath:g}},splitElement:function(a,b){if(!this.collapsed)return null;this.setEndAt(a,CKEDITOR.POSITION_BEFORE_END); 176"br"!=a&&(e||(e=this.fixBlock(!0,a),g=(new CKEDITOR.dom.elementPath(this.endContainer,this.root)).block),g||(g=this.fixBlock(!1,a)));c=e&&this.checkStartOfBlock();d=g&&this.checkEndOfBlock();this.deleteContents();e&&e.equals(g)&&(d?(m=new CKEDITOR.dom.elementPath(this.startContainer,this.root),this.moveToPosition(g,CKEDITOR.POSITION_AFTER_END),g=null):c?(m=new CKEDITOR.dom.elementPath(this.startContainer,this.root),this.moveToPosition(e,CKEDITOR.POSITION_BEFORE_START),e=null):(g=this.splitElement(e,
163var c=this.extractContents(!1,b||!1),d=a.clone(!1,b||!1);c.appendTo(d);d.insertAfter(a);this.moveToPosition(a,CKEDITOR.POSITION_AFTER_END);return d},removeEmptyBlocksAtEnd:function(){function a(d){return function(a){return b(a)||c(a)||a.type==CKEDITOR.NODE_ELEMENT&&a.isEmptyInlineRemoveable()||d.is("table")&&a.is("caption")?!1:!0}}var b=CKEDITOR.dom.walker.whitespaces(),c=CKEDITOR.dom.walker.bookmark(!1);return function(b){for(var c=this.createBookmark(),d=this[b?"endPath":"startPath"](),e=d.block|| 177b||!1),e.is("ul","ol")||e.appendBogus()));return{previousBlock:e,nextBlock:g,wasStartOfBlock:c,wasEndOfBlock:d,elementPath:m}},splitElement:function(a,b){if(!this.collapsed)return null;this.setEndAt(a,CKEDITOR.POSITION_BEFORE_END);var c=this.extractContents(!1,b||!1),d=a.clone(!1,b||!1);c.appendTo(d);d.insertAfter(a);this.moveToPosition(a,CKEDITOR.POSITION_AFTER_END);return d},removeEmptyBlocksAtEnd:function(){function a(d){return function(a){return b(a)||c(a)||a.type==CKEDITOR.NODE_ELEMENT&&a.isEmptyInlineRemoveable()||
164d.blockLimit,g;e&&!e.equals(d.root)&&!e.getFirst(a(e));)g=e.getParent(),this[b?"setEndAt":"setStartAt"](e,CKEDITOR.POSITION_AFTER_END),e.remove(1),e=g;this.moveToBookmark(c)}}(),startPath:function(){return new CKEDITOR.dom.elementPath(this.startContainer,this.root)},endPath:function(){return new CKEDITOR.dom.elementPath(this.endContainer,this.root)},checkBoundaryOfElement:function(a,b){var d=b==CKEDITOR.START,e=this.clone();e.collapse(d);e[d?"setStartAt":"setEndAt"](a,d?CKEDITOR.POSITION_AFTER_START: 178d.is("table")&&a.is("caption")?!1:!0}}var b=CKEDITOR.dom.walker.whitespaces(),c=CKEDITOR.dom.walker.bookmark(!1);return function(b){for(var c=this.createBookmark(),d=this[b?"endPath":"startPath"](),e=d.block||d.blockLimit,g;e&&!e.equals(d.root)&&!e.getFirst(a(e));)g=e.getParent(),this[b?"setEndAt":"setStartAt"](e,CKEDITOR.POSITION_AFTER_END),e.remove(1),e=g;this.moveToBookmark(c)}}(),startPath:function(){return new CKEDITOR.dom.elementPath(this.startContainer,this.root)},endPath:function(){return new CKEDITOR.dom.elementPath(this.endContainer,
165CKEDITOR.POSITION_BEFORE_END);e=new CKEDITOR.dom.walker(e);e.evaluator=c(d);return e[d?"checkBackward":"checkForward"]()},checkStartOfBlock:function(){var a=this.startContainer,c=this.startOffset;CKEDITOR.env.ie&&c&&a.type==CKEDITOR.NODE_TEXT&&(a=CKEDITOR.tools.ltrim(a.substring(0,c)),k.test(a)&&this.trim(0,1));this.trim();a=new CKEDITOR.dom.elementPath(this.startContainer,this.root);c=this.clone();c.collapse(!0);c.setStartAt(a.block||a.blockLimit,CKEDITOR.POSITION_AFTER_START);a=new CKEDITOR.dom.walker(c); 179this.root)},checkBoundaryOfElement:function(a,b){var d=b==CKEDITOR.START,e=this.clone();e.collapse(d);e[d?"setStartAt":"setEndAt"](a,d?CKEDITOR.POSITION_AFTER_START:CKEDITOR.POSITION_BEFORE_END);e=new CKEDITOR.dom.walker(e);e.evaluator=c(d);return e[d?"checkBackward":"checkForward"]()},checkStartOfBlock:function(){var a=this.startContainer,c=this.startOffset;CKEDITOR.env.ie&&c&&a.type==CKEDITOR.NODE_TEXT&&(a=CKEDITOR.tools.ltrim(a.substring(0,c)),k.test(a)&&this.trim(0,1));this.trim();a=new CKEDITOR.dom.elementPath(this.startContainer,
166a.evaluator=b();return a.checkBackward()},checkEndOfBlock:function(){var a=this.endContainer,c=this.endOffset;CKEDITOR.env.ie&&a.type==CKEDITOR.NODE_TEXT&&(a=CKEDITOR.tools.rtrim(a.substring(c)),k.test(a)&&this.trim(1,0));this.trim();a=new CKEDITOR.dom.elementPath(this.endContainer,this.root);c=this.clone();c.collapse(!1);c.setEndAt(a.block||a.blockLimit,CKEDITOR.POSITION_BEFORE_END);a=new CKEDITOR.dom.walker(c);a.evaluator=b();return a.checkForward()},getPreviousNode:function(a,b,c){var d=this.clone(); 180this.root);c=this.clone();c.collapse(!0);c.setStartAt(a.block||a.blockLimit,CKEDITOR.POSITION_AFTER_START);a=new CKEDITOR.dom.walker(c);a.evaluator=b();return a.checkBackward()},checkEndOfBlock:function(){var a=this.endContainer,c=this.endOffset;CKEDITOR.env.ie&&a.type==CKEDITOR.NODE_TEXT&&(a=CKEDITOR.tools.rtrim(a.substring(c)),k.test(a)&&this.trim(1,0));this.trim();a=new CKEDITOR.dom.elementPath(this.endContainer,this.root);c=this.clone();c.collapse(!1);c.setEndAt(a.block||a.blockLimit,CKEDITOR.POSITION_BEFORE_END);
167d.collapse(1);d.setStartAt(c||this.root,CKEDITOR.POSITION_AFTER_START);c=new CKEDITOR.dom.walker(d);c.evaluator=a;c.guard=b;return c.previous()},getNextNode:function(a,b,c){var d=this.clone();d.collapse();d.setEndAt(c||this.root,CKEDITOR.POSITION_BEFORE_END);c=new CKEDITOR.dom.walker(d);c.evaluator=a;c.guard=b;return c.next()},checkReadOnly:function(){function a(b,c){for(;b;){if(b.type==CKEDITOR.NODE_ELEMENT){if("false"==b.getAttribute("contentEditable")&&!b.data("cke-editable"))return 0;if(b.is("html")|| 181a=new CKEDITOR.dom.walker(c);a.evaluator=b();return a.checkForward()},getPreviousNode:function(a,b,c){var d=this.clone();d.collapse(1);d.setStartAt(c||this.root,CKEDITOR.POSITION_AFTER_START);c=new CKEDITOR.dom.walker(d);c.evaluator=a;c.guard=b;return c.previous()},getNextNode:function(a,b,c){var d=this.clone();d.collapse();d.setEndAt(c||this.root,CKEDITOR.POSITION_BEFORE_END);c=new CKEDITOR.dom.walker(d);c.evaluator=a;c.guard=b;return c.next()},checkReadOnly:function(){function a(b,c){for(;b;){if(b.type==
168"true"==b.getAttribute("contentEditable")&&(b.contains(c)||b.equals(c)))break}b=b.getParent()}return 1}return function(){var b=this.startContainer,c=this.endContainer;return!(a(b,c)&&a(c,b))}}(),moveToElementEditablePosition:function(a,b){if(a.type==CKEDITOR.NODE_ELEMENT&&!a.isEditable(!1))return this.moveToPosition(a,b?CKEDITOR.POSITION_AFTER_END:CKEDITOR.POSITION_BEFORE_START),!0;for(var c=0;a;){if(a.type==CKEDITOR.NODE_TEXT){b&&this.endContainer&&this.checkEndOfBlock()&&k.test(a.getText())?this.moveToPosition(a, 182CKEDITOR.NODE_ELEMENT){if("false"==b.getAttribute("contentEditable")&&!b.data("cke-editable"))return 0;if(b.is("html")||"true"==b.getAttribute("contentEditable")&&(b.contains(c)||b.equals(c)))break}b=b.getParent()}return 1}return function(){var b=this.startContainer,c=this.endContainer;return!(a(b,c)&&a(c,b))}}(),moveToElementEditablePosition:function(a,b){if(a.type==CKEDITOR.NODE_ELEMENT&&!a.isEditable(!1))return this.moveToPosition(a,b?CKEDITOR.POSITION_AFTER_END:CKEDITOR.POSITION_BEFORE_START),
169CKEDITOR.POSITION_BEFORE_START):this.moveToPosition(a,b?CKEDITOR.POSITION_AFTER_END:CKEDITOR.POSITION_BEFORE_START);c=1;break}if(a.type==CKEDITOR.NODE_ELEMENT)if(a.isEditable())this.moveToPosition(a,b?CKEDITOR.POSITION_BEFORE_END:CKEDITOR.POSITION_AFTER_START),c=1;else if(b&&a.is("br")&&this.endContainer&&this.checkEndOfBlock())this.moveToPosition(a,CKEDITOR.POSITION_BEFORE_START);else if("false"==a.getAttribute("contenteditable")&&a.is(CKEDITOR.dtd.$block))return this.setStartBefore(a),this.setEndAfter(a), 183!0;for(var c=0;a;){if(a.type==CKEDITOR.NODE_TEXT){b&&this.endContainer&&this.checkEndOfBlock()&&k.test(a.getText())?this.moveToPosition(a,CKEDITOR.POSITION_BEFORE_START):this.moveToPosition(a,b?CKEDITOR.POSITION_AFTER_END:CKEDITOR.POSITION_BEFORE_START);c=1;break}if(a.type==CKEDITOR.NODE_ELEMENT)if(a.isEditable())this.moveToPosition(a,b?CKEDITOR.POSITION_BEFORE_END:CKEDITOR.POSITION_AFTER_START),c=1;else if(b&&a.is("br")&&this.endContainer&&this.checkEndOfBlock())this.moveToPosition(a,CKEDITOR.POSITION_BEFORE_START);
170!0;var d=a,e=c,q=void 0;d.type==CKEDITOR.NODE_ELEMENT&&d.isEditable(!1)&&(q=d[b?"getLast":"getFirst"](w));e||q||(q=d[b?"getPrevious":"getNext"](w));a=q}return!!c},moveToClosestEditablePosition:function(a,b){var c,d=0,e,q,g=[CKEDITOR.POSITION_AFTER_END,CKEDITOR.POSITION_BEFORE_START];a?(c=new CKEDITOR.dom.range(this.root),c.moveToPosition(a,g[b?0:1])):c=this.clone();if(a&&!a.is(CKEDITOR.dtd.$block))d=1;else if(e=c[b?"getNextEditableNode":"getPreviousEditableNode"]())d=1,(q=e.type==CKEDITOR.NODE_ELEMENT)&& 184else if("false"==a.getAttribute("contenteditable")&&a.is(CKEDITOR.dtd.$block))return this.setStartBefore(a),this.setEndAfter(a),!0;var d=a,e=c,g=void 0;d.type==CKEDITOR.NODE_ELEMENT&&d.isEditable(!1)&&(g=d[b?"getLast":"getFirst"](q));e||g||(g=d[b?"getPrevious":"getNext"](q));a=g}return!!c},moveToClosestEditablePosition:function(a,b){var c,d=0,e,g,m=[CKEDITOR.POSITION_AFTER_END,CKEDITOR.POSITION_BEFORE_START];a?(c=new CKEDITOR.dom.range(this.root),c.moveToPosition(a,m[b?0:1])):c=this.clone();if(a&&
171e.is(CKEDITOR.dtd.$block)&&"false"==e.getAttribute("contenteditable")?(c.setStartAt(e,CKEDITOR.POSITION_BEFORE_START),c.setEndAt(e,CKEDITOR.POSITION_AFTER_END)):!CKEDITOR.env.needsBrFiller&&q&&e.is(CKEDITOR.dom.walker.validEmptyBlockContainers)?(c.setEnd(e,0),c.collapse()):c.moveToPosition(e,g[b?1:0]);d&&this.moveToRange(c);return!!d},moveToElementEditStart:function(a){return this.moveToElementEditablePosition(a)},moveToElementEditEnd:function(a){return this.moveToElementEditablePosition(a,!0)},getEnclosedNode:function(){var a= 185!a.is(CKEDITOR.dtd.$block))d=1;else if(e=c[b?"getNextEditableNode":"getPreviousEditableNode"]())d=1,(g=e.type==CKEDITOR.NODE_ELEMENT)&&e.is(CKEDITOR.dtd.$block)&&"false"==e.getAttribute("contenteditable")?(c.setStartAt(e,CKEDITOR.POSITION_BEFORE_START),c.setEndAt(e,CKEDITOR.POSITION_AFTER_END)):!CKEDITOR.env.needsBrFiller&&g&&e.is(CKEDITOR.dom.walker.validEmptyBlockContainers)?(c.setEnd(e,0),c.collapse()):c.moveToPosition(e,m[b?1:0]);d&&this.moveToRange(c);return!!d},moveToElementEditStart:function(a){return this.moveToElementEditablePosition(a)},
172this.clone();a.optimize();if(a.startContainer.type!=CKEDITOR.NODE_ELEMENT||a.endContainer.type!=CKEDITOR.NODE_ELEMENT)return null;var a=new CKEDITOR.dom.walker(a),b=CKEDITOR.dom.walker.bookmark(!1,!0),c=CKEDITOR.dom.walker.whitespaces(!0);a.evaluator=function(a){return c(a)&&b(a)};var d=a.next();a.reset();return d&&d.equals(a.previous())?d:null},getTouchedStartNode:function(){var a=this.startContainer;return this.collapsed||a.type!=CKEDITOR.NODE_ELEMENT?a:a.getChild(this.startOffset)||a},getTouchedEndNode:function(){var a= 186moveToElementEditEnd:function(a){return this.moveToElementEditablePosition(a,!0)},getEnclosedNode:function(){var a=this.clone();a.optimize();if(a.startContainer.type!=CKEDITOR.NODE_ELEMENT||a.endContainer.type!=CKEDITOR.NODE_ELEMENT)return null;var a=new CKEDITOR.dom.walker(a),b=CKEDITOR.dom.walker.bookmark(!1,!0),c=CKEDITOR.dom.walker.whitespaces(!0);a.evaluator=function(a){return c(a)&&b(a)};var d=a.next();a.reset();return d&&d.equals(a.previous())?d:null},getTouchedStartNode:function(){var a=this.startContainer;
173this.endContainer;return this.collapsed||a.type!=CKEDITOR.NODE_ELEMENT?a:a.getChild(this.endOffset-1)||a},getNextEditableNode:e(),getPreviousEditableNode:e(1),scrollIntoView:function(){var a=new CKEDITOR.dom.element.createFromHtml("\x3cspan\x3e\x26nbsp;\x3c/span\x3e",this.document),b,c,d,e=this.clone();e.optimize();(d=e.startContainer.type==CKEDITOR.NODE_TEXT)?(c=e.startContainer.getText(),b=e.startContainer.split(e.startOffset),a.insertAfter(e.startContainer)):e.insertNode(a);a.scrollIntoView(); 187return this.collapsed||a.type!=CKEDITOR.NODE_ELEMENT?a:a.getChild(this.startOffset)||a},getTouchedEndNode:function(){var a=this.endContainer;return this.collapsed||a.type!=CKEDITOR.NODE_ELEMENT?a:a.getChild(this.endOffset-1)||a},getNextEditableNode:e(),getPreviousEditableNode:e(1),_getTableElement:function(a){a=a||{td:1,th:1,tr:1,tbody:1,thead:1,tfoot:1,table:1};var b=this.startContainer,c=this.endContainer,d=b.getAscendant("table",!0),e=c.getAscendant("table",!0);return CKEDITOR.env.safari&&d&&c.equals(this.root)?
174d&&(e.startContainer.setText(c),b.remove());a.remove()},_setStartContainer:function(a){this.startContainer=a},_setEndContainer:function(a){this.endContainer=a}}})();CKEDITOR.POSITION_AFTER_START=1;CKEDITOR.POSITION_BEFORE_END=2;CKEDITOR.POSITION_BEFORE_START=3;CKEDITOR.POSITION_AFTER_END=4;CKEDITOR.ENLARGE_ELEMENT=1;CKEDITOR.ENLARGE_BLOCK_CONTENTS=2;CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS=3;CKEDITOR.ENLARGE_INLINE=4;CKEDITOR.START=1;CKEDITOR.END=2;CKEDITOR.SHRINK_ELEMENT=1;CKEDITOR.SHRINK_TEXT=2;"use strict"; 188b.getAscendant(a,!0):this.getEnclosedNode()?this.getEnclosedNode().getAscendant(a,!0):d&&e&&(d.equals(e)||d.contains(e)||e.contains(d))?b.getAscendant(a,!0):null},scrollIntoView:function(){var a=new CKEDITOR.dom.element.createFromHtml("\x3cspan\x3e\x26nbsp;\x3c/span\x3e",this.document),b,c,d,e=this.clone();e.optimize();(d=e.startContainer.type==CKEDITOR.NODE_TEXT)?(c=e.startContainer.getText(),b=e.startContainer.split(e.startOffset),a.insertAfter(e.startContainer)):e.insertNode(a);a.scrollIntoView();
175(function(){function a(a){1>arguments.length||(this.range=a,this.forceBrBreak=0,this.enlargeBr=1,this.enforceRealBlocks=0,this._||(this._={}))}function d(a){var b=[];a.forEach(function(a){if("true"==a.getAttribute("contenteditable"))return b.push(a),!1},CKEDITOR.NODE_ELEMENT,!0);return b}function b(a,c,e,g){a:{null==g&&(g=d(e));for(var l;l=g.shift();)if(l.getDtd().p){g={element:l,remaining:g};break a}g=null}if(!g)return 0;if((l=CKEDITOR.filter.instances[g.element.data("cke-filter")])&&!l.check(c))return b(a, 189d&&(e.startContainer.setText(c),b.remove());a.remove()},_setStartContainer:function(a){this.startContainer=a},_setEndContainer:function(a){this.endContainer=a},_find:function(a,b){var c=this.getCommonAncestor(),d=this.getBoundaryNodes(),e=[],g,m,k,h;if(c&&c.find)for(m=c.find(a),g=0;g<m.count();g++)if(c=m.getItem(g),b||!c.isReadOnly())k=c.getPosition(d.startNode)&CKEDITOR.POSITION_FOLLOWING||d.startNode.equals(c),h=c.getPosition(d.endNode)&CKEDITOR.POSITION_PRECEDING+CKEDITOR.POSITION_IS_CONTAINED||
176c,e,g.remaining);c=new CKEDITOR.dom.range(g.element);c.selectNodeContents(g.element);c=c.createIterator();c.enlargeBr=a.enlargeBr;c.enforceRealBlocks=a.enforceRealBlocks;c.activeFilter=c.filter=l;a._.nestedEditable={element:g.element,container:e,remaining:g.remaining,iterator:c};return 1}function c(a,b,c){if(!b)return!1;a=a.clone();a.collapse(!c);return a.checkBoundaryOfElement(b,c?CKEDITOR.START:CKEDITOR.END)}var e=/^[\r\n\t ]+$/,g=CKEDITOR.dom.walker.bookmark(!1,!0),l=CKEDITOR.dom.walker.whitespaces(!0), 190d.endNode.equals(c),k&&h&&e.push(c);return e}};CKEDITOR.dom.range.mergeRanges=function(a){return CKEDITOR.tools.array.reduce(a,function(a,b){var c=a[a.length-1],d=!1;b=b.clone();b.enlarge(CKEDITOR.ENLARGE_ELEMENT);if(c){var e=new CKEDITOR.dom.range(b.root),d=new CKEDITOR.dom.walker(e),f=CKEDITOR.dom.walker.whitespaces();e.setStart(c.endContainer,c.endOffset);e.setEnd(b.startContainer,b.startOffset);for(e=d.next();f(e)||b.endContainer.equals(e);)e=d.next();d=!e}d?c.setEnd(b.endContainer,b.endOffset):
177k=function(a){return g(a)&&l(a)},n={dd:1,dt:1,li:1};a.prototype={getNextParagraph:function(a){var d,l,A,u,B;a=a||"p";if(this._.nestedEditable){if(d=this._.nestedEditable.iterator.getNextParagraph(a))return this.activeFilter=this._.nestedEditable.iterator.activeFilter,d;this.activeFilter=this.filter;if(b(this,a,this._.nestedEditable.container,this._.nestedEditable.remaining))return this.activeFilter=this._.nestedEditable.iterator.activeFilter,this._.nestedEditable.iterator.getNextParagraph(a);this._.nestedEditable= 191a.push(b);return a},[])}})();CKEDITOR.POSITION_AFTER_START=1;CKEDITOR.POSITION_BEFORE_END=2;CKEDITOR.POSITION_BEFORE_START=3;CKEDITOR.POSITION_AFTER_END=4;CKEDITOR.ENLARGE_ELEMENT=1;CKEDITOR.ENLARGE_BLOCK_CONTENTS=2;CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS=3;CKEDITOR.ENLARGE_INLINE=4;CKEDITOR.START=1;CKEDITOR.END=2;CKEDITOR.SHRINK_ELEMENT=1;CKEDITOR.SHRINK_TEXT=2;"use strict";
178null}if(!this.range.root.getDtd()[a])return null;if(!this._.started){var q=this.range.clone();l=q.startPath();var y=q.endPath(),F=!q.collapsed&&c(q,l.block),t=!q.collapsed&&c(q,y.block,1);q.shrink(CKEDITOR.SHRINK_ELEMENT,!0);F&&q.setStartAt(l.block,CKEDITOR.POSITION_BEFORE_END);t&&q.setEndAt(y.block,CKEDITOR.POSITION_AFTER_START);l=q.endContainer.hasAscendant("pre",!0)||q.startContainer.hasAscendant("pre",!0);q.enlarge(this.forceBrBreak&&!l||!this.enlargeBr?CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS:CKEDITOR.ENLARGE_BLOCK_CONTENTS); 192(function(){function a(a){1>arguments.length||(this.range=a,this.forceBrBreak=0,this.enlargeBr=1,this.enforceRealBlocks=0,this._||(this._={}))}function d(a){var b=[];a.forEach(function(a){if("true"==a.getAttribute("contenteditable"))return b.push(a),!1},CKEDITOR.NODE_ELEMENT,!0);return b}function b(a,c,e,g){a:{null==g&&(g=d(e));for(var k;k=g.shift();)if(k.getDtd().p){g={element:k,remaining:g};break a}g=null}if(!g)return 0;if((k=CKEDITOR.filter.instances[g.element.data("cke-filter")])&&!k.check(c))return b(a,
179q.collapsed||(l=new CKEDITOR.dom.walker(q.clone()),y=CKEDITOR.dom.walker.bookmark(!0,!0),l.evaluator=y,this._.nextNode=l.next(),l=new CKEDITOR.dom.walker(q.clone()),l.evaluator=y,l=l.previous(),this._.lastNode=l.getNextSourceNode(!0,null,q.root),this._.lastNode&&this._.lastNode.type==CKEDITOR.NODE_TEXT&&!CKEDITOR.tools.trim(this._.lastNode.getText())&&this._.lastNode.getParent().isBlockBoundary()&&(y=this.range.clone(),y.moveToPosition(this._.lastNode,CKEDITOR.POSITION_AFTER_END),y.checkEndOfBlock()&& 193c,e,g.remaining);c=new CKEDITOR.dom.range(g.element);c.selectNodeContents(g.element);c=c.createIterator();c.enlargeBr=a.enlargeBr;c.enforceRealBlocks=a.enforceRealBlocks;c.activeFilter=c.filter=k;a._.nestedEditable={element:g.element,container:e,remaining:g.remaining,iterator:c};return 1}function c(a,b,c){if(!b)return!1;a=a.clone();a.collapse(!c);return a.checkBoundaryOfElement(b,c?CKEDITOR.START:CKEDITOR.END)}var e=/^[\r\n\t ]+$/,g=CKEDITOR.dom.walker.bookmark(!1,!0),h=CKEDITOR.dom.walker.whitespaces(!0),
180(y=new CKEDITOR.dom.elementPath(y.endContainer,y.root),this._.lastNode=(y.block||y.blockLimit).getNextSourceNode(!0))),this._.lastNode&&q.root.contains(this._.lastNode)||(this._.lastNode=this._.docEndMarker=q.document.createText(""),this._.lastNode.insertAfter(l)),q=null);this._.started=1;l=q}y=this._.nextNode;q=this._.lastNode;for(this._.nextNode=null;y;){var F=0,t=y.hasAscendant("pre"),z=y.type!=CKEDITOR.NODE_ELEMENT,h=0;if(z)y.type==CKEDITOR.NODE_TEXT&&e.test(y.getText())&&(z=0);else{var p=y.getName(); 194k=function(a){return g(a)&&h(a)},n={dd:1,dt:1,li:1};a.prototype={getNextParagraph:function(a){var d,h,w,A,G;a=a||"p";if(this._.nestedEditable){if(d=this._.nestedEditable.iterator.getNextParagraph(a))return this.activeFilter=this._.nestedEditable.iterator.activeFilter,d;this.activeFilter=this.filter;if(b(this,a,this._.nestedEditable.container,this._.nestedEditable.remaining))return this.activeFilter=this._.nestedEditable.iterator.activeFilter,this._.nestedEditable.iterator.getNextParagraph(a);this._.nestedEditable=
181if(CKEDITOR.dtd.$block[p]&&"false"==y.getAttribute("contenteditable")){d=y;b(this,a,d);break}else if(y.isBlockBoundary(this.forceBrBreak&&!t&&{br:1})){if("br"==p)z=1;else if(!l&&!y.getChildCount()&&"hr"!=p){d=y;A=y.equals(q);break}l&&(l.setEndAt(y,CKEDITOR.POSITION_BEFORE_START),"br"!=p&&(this._.nextNode=y));F=1}else{if(y.getFirst()){l||(l=this.range.clone(),l.setStartAt(y,CKEDITOR.POSITION_BEFORE_START));y=y.getFirst();continue}z=1}}z&&!l&&(l=this.range.clone(),l.setStartAt(y,CKEDITOR.POSITION_BEFORE_START)); 195null}if(!this.range.root.getDtd()[a])return null;if(!this._.started){var x=this.range.clone();h=x.startPath();var m=x.endPath(),K=!x.collapsed&&c(x,h.block),z=!x.collapsed&&c(x,m.block,1);x.shrink(CKEDITOR.SHRINK_ELEMENT,!0);K&&x.setStartAt(h.block,CKEDITOR.POSITION_BEFORE_END);z&&x.setEndAt(m.block,CKEDITOR.POSITION_AFTER_START);h=x.endContainer.hasAscendant("pre",!0)||x.startContainer.hasAscendant("pre",!0);x.enlarge(this.forceBrBreak&&!h||!this.enlargeBr?CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS:CKEDITOR.ENLARGE_BLOCK_CONTENTS);
182A=(!F||z)&&y.equals(q);if(l&&!F)for(;!y.getNext(k)&&!A;){p=y.getParent();if(p.isBlockBoundary(this.forceBrBreak&&!t&&{br:1})){F=1;z=0;A||p.equals(q);l.setEndAt(p,CKEDITOR.POSITION_BEFORE_END);break}y=p;z=1;A=y.equals(q);h=1}z&&l.setEndAt(y,CKEDITOR.POSITION_AFTER_END);y=this._getNextSourceNode(y,h,q);if((A=!y)||F&&l)break}if(!d){if(!l)return this._.docEndMarker&&this._.docEndMarker.remove(),this._.nextNode=null;d=new CKEDITOR.dom.elementPath(l.startContainer,l.root);y=d.blockLimit;F={div:1,th:1,td:1}; 196x.collapsed||(h=new CKEDITOR.dom.walker(x.clone()),m=CKEDITOR.dom.walker.bookmark(!0,!0),h.evaluator=m,this._.nextNode=h.next(),h=new CKEDITOR.dom.walker(x.clone()),h.evaluator=m,h=h.previous(),this._.lastNode=h.getNextSourceNode(!0,null,x.root),this._.lastNode&&this._.lastNode.type==CKEDITOR.NODE_TEXT&&!CKEDITOR.tools.trim(this._.lastNode.getText())&&this._.lastNode.getParent().isBlockBoundary()&&(m=this.range.clone(),m.moveToPosition(this._.lastNode,CKEDITOR.POSITION_AFTER_END),m.checkEndOfBlock()&&
183d=d.block;!d&&y&&!this.enforceRealBlocks&&F[y.getName()]&&l.checkStartOfBlock()&&l.checkEndOfBlock()&&!y.equals(l.root)?d=y:!d||this.enforceRealBlocks&&d.is(n)?(d=this.range.document.createElement(a),l.extractContents().appendTo(d),d.trim(),l.insertNode(d),u=B=!0):"li"!=d.getName()?l.checkStartOfBlock()&&l.checkEndOfBlock()||(d=d.clone(!1),l.extractContents().appendTo(d),d.trim(),B=l.splitBlock(),u=!B.wasStartOfBlock,B=!B.wasEndOfBlock,l.insertNode(d)):A||(this._.nextNode=d.equals(q)?null:this._getNextSourceNode(l.getBoundaryNodes().endNode, 197(m=new CKEDITOR.dom.elementPath(m.endContainer,m.root),this._.lastNode=(m.block||m.blockLimit).getNextSourceNode(!0))),this._.lastNode&&x.root.contains(this._.lastNode)||(this._.lastNode=this._.docEndMarker=x.document.createText(""),this._.lastNode.insertAfter(h)),x=null);this._.started=1;h=x}m=this._.nextNode;x=this._.lastNode;for(this._.nextNode=null;m;){var K=0,z=m.hasAscendant("pre"),I=m.type!=CKEDITOR.NODE_ELEMENT,l=0;if(I)m.type==CKEDITOR.NODE_TEXT&&e.test(m.getText())&&(I=0);else{var r=m.getName();
1841,q))}u&&(u=d.getPrevious())&&u.type==CKEDITOR.NODE_ELEMENT&&("br"==u.getName()?u.remove():u.getLast()&&"br"==u.getLast().$.nodeName.toLowerCase()&&u.getLast().remove());B&&(u=d.getLast())&&u.type==CKEDITOR.NODE_ELEMENT&&"br"==u.getName()&&(!CKEDITOR.env.needsBrFiller||u.getPrevious(g)||u.getNext(g))&&u.remove();this._.nextNode||(this._.nextNode=A||d.equals(q)||!q?null:this._getNextSourceNode(d,1,q));return d},_getNextSourceNode:function(a,b,c){function d(a){return!(a.equals(c)||a.equals(e))}var e= 198if(CKEDITOR.dtd.$block[r]&&"false"==m.getAttribute("contenteditable")){d=m;b(this,a,d);break}else if(m.isBlockBoundary(this.forceBrBreak&&!z&&{br:1})){if("br"==r)I=1;else if(!h&&!m.getChildCount()&&"hr"!=r){d=m;w=m.equals(x);break}h&&(h.setEndAt(m,CKEDITOR.POSITION_BEFORE_START),"br"!=r&&(this._.nextNode=m));K=1}else{if(m.getFirst()){h||(h=this.range.clone(),h.setStartAt(m,CKEDITOR.POSITION_BEFORE_START));m=m.getFirst();continue}I=1}}I&&!h&&(h=this.range.clone(),h.setStartAt(m,CKEDITOR.POSITION_BEFORE_START));
199w=(!K||I)&&m.equals(x);if(h&&!K)for(;!m.getNext(k)&&!w;){r=m.getParent();if(r.isBlockBoundary(this.forceBrBreak&&!z&&{br:1})){K=1;I=0;w||r.equals(x);h.setEndAt(r,CKEDITOR.POSITION_BEFORE_END);break}m=r;I=1;w=m.equals(x);l=1}I&&h.setEndAt(m,CKEDITOR.POSITION_AFTER_END);m=this._getNextSourceNode(m,l,x);if((w=!m)||K&&h)break}if(!d){if(!h)return this._.docEndMarker&&this._.docEndMarker.remove(),this._.nextNode=null;d=new CKEDITOR.dom.elementPath(h.startContainer,h.root);m=d.blockLimit;K={div:1,th:1,td:1};
200d=d.block;!d&&m&&!this.enforceRealBlocks&&K[m.getName()]&&h.checkStartOfBlock()&&h.checkEndOfBlock()&&!m.equals(h.root)?d=m:!d||this.enforceRealBlocks&&d.is(n)?(d=this.range.document.createElement(a),h.extractContents().appendTo(d),d.trim(),h.insertNode(d),A=G=!0):"li"!=d.getName()?h.checkStartOfBlock()&&h.checkEndOfBlock()||(d=d.clone(!1),h.extractContents().appendTo(d),d.trim(),G=h.splitBlock(),A=!G.wasStartOfBlock,G=!G.wasEndOfBlock,h.insertNode(d)):w||(this._.nextNode=d.equals(x)?null:this._getNextSourceNode(h.getBoundaryNodes().endNode,
2011,x))}A&&(A=d.getPrevious())&&A.type==CKEDITOR.NODE_ELEMENT&&("br"==A.getName()?A.remove():A.getLast()&&"br"==A.getLast().$.nodeName.toLowerCase()&&A.getLast().remove());G&&(A=d.getLast())&&A.type==CKEDITOR.NODE_ELEMENT&&"br"==A.getName()&&(!CKEDITOR.env.needsBrFiller||A.getPrevious(g)||A.getNext(g))&&A.remove();this._.nextNode||(this._.nextNode=w||d.equals(x)||!x?null:this._getNextSourceNode(d,1,x));return d},_getNextSourceNode:function(a,b,c){function d(a){return!(a.equals(c)||a.equals(e))}var e=
185this.range.root;for(a=a.getNextSourceNode(b,null,d);!g(a);)a=a.getNextSourceNode(b,null,d);return a}};CKEDITOR.dom.range.prototype.createIterator=function(){return new a(this)}})(); 202this.range.root;for(a=a.getNextSourceNode(b,null,d);!g(a);)a=a.getNextSourceNode(b,null,d);return a}};CKEDITOR.dom.range.prototype.createIterator=function(){return new a(this)}})();
186CKEDITOR.command=function(a,d){this.uiItems=[];this.exec=function(b){if(this.state==CKEDITOR.TRISTATE_DISABLED||!this.checkAllowed())return!1;this.editorFocus&&a.focus();return!1===this.fire("exec")?!0:!1!==d.exec.call(this,a,b)};this.refresh=function(a,b){if(!this.readOnly&&a.readOnly)return!0;if(this.context&&!b.isContextFor(this.context)||!this.checkAllowed(!0))return this.disable(),!0;this.startDisabled||this.enable();this.modes&&!this.modes[a.mode]&&this.disable();return!1===this.fire("refresh", 203CKEDITOR.command=function(a,d){this.uiItems=[];this.exec=function(b){if(this.state==CKEDITOR.TRISTATE_DISABLED||!this.checkAllowed())return!1;this.editorFocus&&a.focus();return!1===this.fire("exec")?!0:!1!==d.exec.call(this,a,b)};this.refresh=function(a,b){if(!this.readOnly&&a.readOnly)return!0;if(this.context&&!b.isContextFor(this.context)||!this.checkAllowed(!0))return this.disable(),!0;this.startDisabled||this.enable();this.modes&&!this.modes[a.mode]&&this.disable();return!1===this.fire("refresh",
187{editor:a,path:b})?!0:d.refresh&&!1!==d.refresh.apply(this,arguments)};var b;this.checkAllowed=function(c){return c||"boolean"!=typeof b?b=a.activeFilter.checkFeature(this):b};CKEDITOR.tools.extend(this,d,{modes:{wysiwyg:1},editorFocus:1,contextSensitive:!!d.context,state:CKEDITOR.TRISTATE_DISABLED});CKEDITOR.event.call(this)}; 204{editor:a,path:b})?!0:d.refresh&&!1!==d.refresh.apply(this,arguments)};var b;this.checkAllowed=function(c){return c||"boolean"!=typeof b?b=a.activeFilter.checkFeature(this):b};CKEDITOR.tools.extend(this,d,{modes:{wysiwyg:1},editorFocus:1,contextSensitive:!!d.context,state:CKEDITOR.TRISTATE_DISABLED});CKEDITOR.event.call(this)};
188CKEDITOR.command.prototype={enable:function(){this.state==CKEDITOR.TRISTATE_DISABLED&&this.checkAllowed()&&this.setState(this.preserveState&&"undefined"!=typeof this.previousState?this.previousState:CKEDITOR.TRISTATE_OFF)},disable:function(){this.setState(CKEDITOR.TRISTATE_DISABLED)},setState:function(a){if(this.state==a||a!=CKEDITOR.TRISTATE_DISABLED&&!this.checkAllowed())return!1;this.previousState=this.state;this.state=a;this.fire("state");return!0},toggleState:function(){this.state==CKEDITOR.TRISTATE_OFF? 205CKEDITOR.command.prototype={enable:function(){this.state==CKEDITOR.TRISTATE_DISABLED&&this.checkAllowed()&&this.setState(this.preserveState&&"undefined"!=typeof this.previousState?this.previousState:CKEDITOR.TRISTATE_OFF)},disable:function(){this.setState(CKEDITOR.TRISTATE_DISABLED)},setState:function(a){if(this.state==a||a!=CKEDITOR.TRISTATE_DISABLED&&!this.checkAllowed())return!1;this.previousState=this.state;this.state=a;this.fire("state");return!0},toggleState:function(){this.state==CKEDITOR.TRISTATE_OFF?
189this.setState(CKEDITOR.TRISTATE_ON):this.state==CKEDITOR.TRISTATE_ON&&this.setState(CKEDITOR.TRISTATE_OFF)}};CKEDITOR.event.implementOn(CKEDITOR.command.prototype);CKEDITOR.ENTER_P=1;CKEDITOR.ENTER_BR=2;CKEDITOR.ENTER_DIV=3; 206this.setState(CKEDITOR.TRISTATE_ON):this.state==CKEDITOR.TRISTATE_ON&&this.setState(CKEDITOR.TRISTATE_OFF)}};CKEDITOR.event.implementOn(CKEDITOR.command.prototype);CKEDITOR.ENTER_P=1;CKEDITOR.ENTER_BR=2;CKEDITOR.ENTER_DIV=3;
190CKEDITOR.config={customConfig:"config.js",autoUpdateElement:!0,language:"",defaultLanguage:"en",contentsLangDirection:"",enterMode:CKEDITOR.ENTER_P,forceEnterMode:!1,shiftEnterMode:CKEDITOR.ENTER_BR,docType:"\x3c!DOCTYPE html\x3e",bodyId:"",bodyClass:"",fullPage:!1,height:200,contentsCss:CKEDITOR.getUrl("contents.css"),extraPlugins:"",removePlugins:"",protectedSource:[],tabIndex:0,width:"",baseFloatZIndex:1E4,blockedKeystrokes:[CKEDITOR.CTRL+66,CKEDITOR.CTRL+73,CKEDITOR.CTRL+85]}; 207CKEDITOR.config={customConfig:"config.js",autoUpdateElement:!0,language:"",defaultLanguage:"en",contentsLangDirection:"",enterMode:CKEDITOR.ENTER_P,forceEnterMode:!1,shiftEnterMode:CKEDITOR.ENTER_BR,docType:"\x3c!DOCTYPE html\x3e",bodyId:"",bodyClass:"",fullPage:!1,height:200,contentsCss:CKEDITOR.getUrl("contents.css"),extraPlugins:"",removePlugins:"",protectedSource:[],tabIndex:0,width:"",baseFloatZIndex:1E4,blockedKeystrokes:[CKEDITOR.CTRL+66,CKEDITOR.CTRL+73,CKEDITOR.CTRL+85]};
191(function(){function a(a,b,c,d,e){var h,p;a=[];for(h in b){p=b[h];p="boolean"==typeof p?{}:"function"==typeof p?{match:p}:K(p);"$"!=h.charAt(0)&&(p.elements=h);c&&(p.featureName=c.toLowerCase());var m=p;m.elements=l(m.elements,/\s+/)||null;m.propertiesOnly=m.propertiesOnly||!0===m.elements;var r=/\s*,\s*/,q=void 0;for(q in Q){m[q]=l(m[q],r)||null;var f=m,E=v[q],z=l(m[v[q]],r),g=m[q],C=[],G=!0,L=void 0;z?G=!1:z={};for(L in g)"!"==L.charAt(0)&&(L=L.slice(1),C.push(L),z[L]=!0,G=!1);for(;L=C.pop();)g[L]= 208(function(){function a(a,b,c,d,e){var f,l;a=[];for(f in b){l=b[f];l="boolean"==typeof l?{}:"function"==typeof l?{match:l}:v(l);"$"!=f.charAt(0)&&(l.elements=f);c&&(l.featureName=c.toLowerCase());var t=l;t.elements=h(t.elements,/\s+/)||null;t.propertiesOnly=t.propertiesOnly||!0===t.elements;var u=/\s*,\s*/,g=void 0;for(g in V){t[g]=h(t[g],u)||null;var p=t,r=O[g],m=h(t[O[g]],u),F=t[g],y=[],B=!0,C=void 0;m?B=!1:m={};for(C in F)"!"==C.charAt(0)&&(C=C.slice(1),y.push(C),m[C]=!0,B=!1);for(;C=y.pop();)F[C]=
192g["!"+L],delete g["!"+L];f[E]=(G?!1:z)||null}m.match=m.match||null;d.push(p);a.push(p)}b=e.elements;e=e.generic;var k;c=0;for(d=a.length;c<d;++c){h=K(a[c]);p=!0===h.classes||!0===h.styles||!0===h.attributes;m=h;q=E=r=void 0;for(r in Q)m[r]=F(m[r]);f=!0;for(q in v){r=v[q];E=m[r];z=[];g=void 0;for(g in E)-1<g.indexOf("*")?z.push(new RegExp("^"+g.replace(/\*/g,".*")+"$")):z.push(g);E=z;E.length&&(m[r]=E,f=!1)}m.nothingRequired=f;m.noProperties=!(m.attributes||m.classes||m.styles);if(!0===h.elements|| 209F["!"+C],delete F["!"+C];p[r]=(B?!1:m)||null}t.match=t.match||null;d.push(l);a.push(l)}b=e.elements;e=e.generic;var k;c=0;for(d=a.length;c<d;++c){f=v(a[c]);l=!0===f.classes||!0===f.styles||!0===f.attributes;t=f;g=r=u=void 0;for(u in V)t[u]=K(t[u]);p=!0;for(g in O){u=O[g];r=t[u];m=[];F=void 0;for(F in r)-1<F.indexOf("*")?m.push(new RegExp("^"+F.replace(/\*/g,".*")+"$")):m.push(F);r=m;r.length&&(t[u]=r,p=!1)}t.nothingRequired=p;t.noProperties=!(t.attributes||t.classes||t.styles);if(!0===f.elements||
193null===h.elements)e[p?"unshift":"push"](h);else for(k in m=h.elements,delete h.elements,m)if(b[k])b[k][p?"unshift":"push"](h);else b[k]=[h]}}function d(a,c,d,h){if(!a.match||a.match(c))if(h||k(a,c))if(a.propertiesOnly||(d.valid=!0),d.allAttributes||(d.allAttributes=b(a.attributes,c.attributes,d.validAttributes)),d.allStyles||(d.allStyles=b(a.styles,c.styles,d.validStyles)),!d.allClasses){a=a.classes;c=c.classes;h=d.validClasses;if(a)if(!0===a)a=!0;else{for(var p=0,e=c.length,m;p<e;++p)m=c[p],h[m]|| 210null===f.elements)e[l?"unshift":"push"](f);else for(k in t=f.elements,delete f.elements,t)if(b[k])b[k][l?"unshift":"push"](f);else b[k]=[f]}}function d(a,c,d,e){if(!a.match||a.match(c))if(e||k(a,c))if(a.propertiesOnly||(d.valid=!0),d.allAttributes||(d.allAttributes=b(a.attributes,c.attributes,d.validAttributes)),d.allStyles||(d.allStyles=b(a.styles,c.styles,d.validStyles)),!d.allClasses){a=a.classes;c=c.classes;e=d.validClasses;if(a)if(!0===a)a=!0;else{for(var f=0,l=c.length,t;f<l;++f)t=c[f],e[t]||
194(h[m]=a(m));a=!1}else a=!1;d.allClasses=a}}function b(a,b,c){if(!a)return!1;if(!0===a)return!0;for(var d in b)c[d]||(c[d]=a(d));return!1}function c(a,b,c){if(!a.match||a.match(b)){if(a.noProperties)return!1;c.hadInvalidAttribute=e(a.attributes,b.attributes)||c.hadInvalidAttribute;c.hadInvalidStyle=e(a.styles,b.styles)||c.hadInvalidStyle;a=a.classes;b=b.classes;if(a){for(var d=!1,h=!0===a,p=b.length;p--;)if(h||a(b[p]))b.splice(p,1),d=!0;a=d}else a=!1;c.hadInvalidClass=a||c.hadInvalidClass}}function e(a, 211(e[t]=a(t));a=!1}else a=!1;d.allClasses=a}}function b(a,b,c){if(!a)return!1;if(!0===a)return!0;for(var d in b)c[d]||(c[d]=a(d));return!1}function c(a,b,c){if(!a.match||a.match(b)){if(a.noProperties)return!1;c.hadInvalidAttribute=e(a.attributes,b.attributes)||c.hadInvalidAttribute;c.hadInvalidStyle=e(a.styles,b.styles)||c.hadInvalidStyle;a=a.classes;b=b.classes;if(a){for(var d=!1,f=!0===a,t=b.length;t--;)if(f||a(b[t]))b.splice(t,1),d=!0;a=d}else a=!1;c.hadInvalidClass=a||c.hadInvalidClass}}function e(a,
195b){if(!a)return!1;var c=!1,d=!0===a,h;for(h in b)if(d||a(h))delete b[h],c=!0;return c}function g(a,b,c){if(a.disabled||a.customConfig&&!c||!b)return!1;a._.cachedChecks={};return!0}function l(a,b){if(!a)return!1;if(!0===a)return a;if("string"==typeof a)return a=R(a),"*"==a?!0:CKEDITOR.tools.convertArrayToObject(a.split(b));if(CKEDITOR.tools.isArray(a))return a.length?CKEDITOR.tools.convertArrayToObject(a):!1;var c={},d=0,h;for(h in a)c[h]=a[h],d++;return d?c:!1}function k(a,b){if(a.nothingRequired)return!0; 212b){if(!a)return!1;var c=!1,d=!0===a,e;for(e in b)if(d||a(e))delete b[e],c=!0;return c}function g(a,b,c){if(a.disabled||a.customConfig&&!c||!b)return!1;a._.cachedChecks={};return!0}function h(a,b){if(!a)return!1;if(!0===a)return a;if("string"==typeof a)return a=B(a),"*"==a?!0:CKEDITOR.tools.convertArrayToObject(a.split(b));if(CKEDITOR.tools.isArray(a))return a.length?CKEDITOR.tools.convertArrayToObject(a):!1;var c={},d=0,e;for(e in a)c[e]=a[e],d++;return d?c:!1}function k(a,b){if(a.nothingRequired)return!0;
196var c,d,h,p;if(h=a.requiredClasses)for(p=b.classes,c=0;c<h.length;++c)if(d=h[c],"string"==typeof d){if(-1==CKEDITOR.tools.indexOf(p,d))return!1}else if(!CKEDITOR.tools.checkIfAnyArrayItemMatches(p,d))return!1;return n(b.styles,a.requiredStyles)&&n(b.attributes,a.requiredAttributes)}function n(a,b){if(!b)return!0;for(var c=0,d;c<b.length;++c)if(d=b[c],"string"==typeof d){if(!(d in a))return!1}else if(!CKEDITOR.tools.checkIfAnyObjectPropertyMatches(a,d))return!1;return!0}function w(a){if(!a)return{}; 213var c,d,e,f;if(e=a.requiredClasses)for(f=b.classes,c=0;c<e.length;++c)if(d=e[c],"string"==typeof d){if(-1==CKEDITOR.tools.indexOf(f,d))return!1}else if(!CKEDITOR.tools.checkIfAnyArrayItemMatches(f,d))return!1;return n(b.styles,a.requiredStyles)&&n(b.attributes,a.requiredAttributes)}function n(a,b){if(!b)return!0;for(var c=0,d;c<b.length;++c)if(d=b[c],"string"==typeof d){if(!(d in a))return!1}else if(!CKEDITOR.tools.checkIfAnyObjectPropertyMatches(a,d))return!1;return!0}function q(a){if(!a)return{};
197a=a.split(/\s*,\s*/).sort();for(var b={};a.length;)b[a.shift()]="cke-test";return b}function f(a){var b,c,d,h,p={},e=1;for(a=R(a);b=a.match(D);)(c=b[2])?(d=x(c,"styles"),h=x(c,"attrs"),c=x(c,"classes")):d=h=c=null,p["$"+e++]={elements:b[1],classes:c,styles:d,attributes:h},a=a.slice(b[0].length);return p}function x(a,b){var c=a.match(I[b]);return c?R(c[1]):null}function A(a){var b=a.styleBackup=a.attributes.style,c=a.classBackup=a.attributes["class"];a.styles||(a.styles=CKEDITOR.tools.parseCssText(b|| 214a=a.split(/\s*,\s*/).sort();for(var b={};a.length;)b[a.shift()]="cke-test";return b}function f(a){var b,c,d,e,f={},t=1;for(a=B(a);b=a.match(p);)(c=b[2])?(d=D(c,"styles"),e=D(c,"attrs"),c=D(c,"classes")):d=e=c=null,f["$"+t++]={elements:b[1],classes:c,styles:d,attributes:e},a=a.slice(b[0].length);return f}function D(a,b){var c=a.match(C[b]);return c?B(c[1]):null}function w(a){var b=a.styleBackup=a.attributes.style,c=a.classBackup=a.attributes["class"];a.styles||(a.styles=CKEDITOR.tools.parseCssText(b||
198"",1));a.classes||(a.classes=c?c.split(/\s+/):[])}function u(a,b,h,e){var m=0,r;e.toHtml&&(b.name=b.name.replace(E,"$1"));if(e.doCallbacks&&a.elementCallbacks){a:{r=a.elementCallbacks;for(var g=0,f=r.length,z;g<f;++g)if(z=r[g](b)){r=z;break a}r=void 0}if(r)return r}if(e.doTransform&&(r=a._.transformations[b.name])){A(b);for(g=0;g<r.length;++g)p(a,b,r[g]);q(b)}if(e.doFilter){a:{g=b.name;f=a._;a=f.allowedRules.elements[g];r=f.allowedRules.generic;g=f.disallowedRules.elements[g];f=f.disallowedRules.generic; 215"",1));a.classes||(a.classes=c?c.split(/\s+/):[])}function A(a,b,e,f){var l=0,u;f.toHtml&&(b.name=b.name.replace(t,"$1"));if(f.doCallbacks&&a.elementCallbacks){a:{u=a.elementCallbacks;for(var v=0,g=u.length,p;v<g;++v)if(p=u[v](b)){u=p;break a}u=void 0}if(u)return u}if(f.doTransform&&(u=a._.transformations[b.name])){w(b);for(v=0;v<u.length;++v)r(a,b,u[v]);x(b)}if(f.doFilter){a:{v=b.name;g=a._;a=g.allowedRules.elements[v];u=g.allowedRules.generic;v=g.disallowedRules.elements[v];g=g.disallowedRules.generic;
199z=e.skipRequired;var C={valid:!1,validAttributes:{},validClasses:{},validStyles:{},allAttributes:!1,allClasses:!1,allStyles:!1,hadInvalidAttribute:!1,hadInvalidClass:!1,hadInvalidStyle:!1},v,l;if(a||r){A(b);if(g)for(v=0,l=g.length;v<l;++v)if(!1===c(g[v],b,C)){a=null;break a}if(f)for(v=0,l=f.length;v<l;++v)c(f[v],b,C);if(a)for(v=0,l=a.length;v<l;++v)d(a[v],b,C,z);if(r)for(v=0,l=r.length;v<l;++v)d(r[v],b,C,z);a=C}else a=null}if(!a||!a.valid)return h.push(b),1;l=a.validAttributes;var G=a.validStyles; 216p=f.skipRequired;var y={valid:!1,validAttributes:{},validClasses:{},validStyles:{},allAttributes:!1,allClasses:!1,allStyles:!1,hadInvalidAttribute:!1,hadInvalidClass:!1,hadInvalidStyle:!1},B,C;if(a||u){w(b);if(v)for(B=0,C=v.length;B<C;++B)if(!1===c(v[B],b,y)){a=null;break a}if(g)for(B=0,C=g.length;B<C;++B)c(g[B],b,y);if(a)for(B=0,C=a.length;B<C;++B)d(a[B],b,y,p);if(u)for(B=0,C=u.length;B<C;++B)d(u[B],b,y,p);a=y}else a=null}if(!a||!a.valid)return e.push(b),1;C=a.validAttributes;var h=a.validStyles;
200r=a.validClasses;var g=b.attributes,k=b.styles,f=b.classes;z=b.classBackup;var I=b.styleBackup,D,H,J=[],C=[],n=/^data-cke-/;v=!1;delete g.style;delete g["class"];delete b.classBackup;delete b.styleBackup;if(!a.allAttributes)for(D in g)l[D]||(n.test(D)?D==(H=D.replace(/^data-cke-saved-/,""))||l[H]||(delete g[D],v=!0):(delete g[D],v=!0));if(!a.allStyles||a.hadInvalidStyle){for(D in k)a.allStyles||G[D]?J.push(D+":"+k[D]):v=!0;J.length&&(g.style=J.sort().join("; "))}else I&&(g.style=I);if(!a.allClasses|| 217u=a.validClasses;var v=b.attributes,k=b.styles,g=b.classes;p=b.classBackup;var J=b.styleBackup,H,N,E=[],y=[],O=/^data-cke-/;B=!1;delete v.style;delete v["class"];delete b.classBackup;delete b.styleBackup;if(!a.allAttributes)for(H in v)C[H]||(O.test(H)?H==(N=H.replace(/^data-cke-saved-/,""))||C[N]||(delete v[H],B=!0):(delete v[H],B=!0));if(!a.allStyles||a.hadInvalidStyle){for(H in k)a.allStyles||h[H]?E.push(H+":"+k[H]):B=!0;E.length&&(v.style=E.sort().join("; "))}else J&&(v.style=J);if(!a.allClasses||
201a.hadInvalidClass){for(D=0;D<f.length;++D)(a.allClasses||r[f[D]])&&C.push(f[D]);C.length&&(g["class"]=C.sort().join(" "));z&&C.length<z.split(/\s+/).length&&(v=!0)}else z&&(g["class"]=z);v&&(m=1);if(!e.skipFinalValidation&&!y(b))return h.push(b),1}e.toHtml&&(b.name=b.name.replace(L,"cke:$1"));return m}function B(a){var b=[],c;for(c in a)-1<c.indexOf("*")&&b.push(c.replace(/\*/g,".*"));return b.length?new RegExp("^(?:"+b.join("|")+")$"):null}function q(a){var b=a.attributes,c;delete b.style;delete b["class"]; 218a.hadInvalidClass){for(H=0;H<g.length;++H)(a.allClasses||u[g[H]])&&y.push(g[H]);y.length&&(v["class"]=y.sort().join(" "));p&&y.length<p.split(/\s+/).length&&(B=!0)}else p&&(v["class"]=p);B&&(l=1);if(!f.skipFinalValidation&&!m(b))return e.push(b),1}f.toHtml&&(b.name=b.name.replace(F,"cke:$1"));return l}function G(a){var b=[],c;for(c in a)-1<c.indexOf("*")&&b.push(c.replace(/\*/g,".*"));return b.length?new RegExp("^(?:"+b.join("|")+")$"):null}function x(a){var b=a.attributes,c;delete b.style;delete b["class"];
202if(c=CKEDITOR.tools.writeCssText(a.styles,!0))b.style=c;a.classes.length&&(b["class"]=a.classes.sort().join(" "))}function y(a){switch(a.name){case "a":if(!(a.children.length||a.attributes.name||a.attributes.id))return!1;break;case "img":if(!a.attributes.src)return!1}return!0}function F(a){if(!a)return!1;if(!0===a)return!0;var b=B(a);return function(c){return c in a||b&&c.match(b)}}function t(){return new CKEDITOR.htmlParser.element("br")}function z(a){return a.type==CKEDITOR.NODE_ELEMENT&&("br"== 219if(c=CKEDITOR.tools.writeCssText(a.styles,!0))b.style=c;a.classes.length&&(b["class"]=a.classes.sort().join(" "))}function m(a){switch(a.name){case "a":if(!(a.children.length||a.attributes.name||a.attributes.id))return!1;break;case "img":if(!a.attributes.src)return!1}return!0}function K(a){if(!a)return!1;if(!0===a)return!0;var b=G(a);return function(c){return c in a||b&&c.match(b)}}function z(){return new CKEDITOR.htmlParser.element("br")}function I(a){return a.type==CKEDITOR.NODE_ELEMENT&&("br"==
203a.name||H.$block[a.name])}function h(a,b,c){var d=a.name;if(H.$empty[d]||!a.children.length)"hr"==d&&"br"==b?a.replaceWith(t()):(a.parent&&c.push({check:"it",el:a.parent}),a.remove());else if(H.$block[d]||"tr"==d)if("br"==b)a.previous&&!z(a.previous)&&(b=t(),b.insertBefore(a)),a.next&&!z(a.next)&&(b=t(),b.insertAfter(a)),a.replaceWithChildren();else{var d=a.children,h;b:{h=H[b];for(var p=0,e=d.length,m;p<e;++p)if(m=d[p],m.type==CKEDITOR.NODE_ELEMENT&&!h[m.name]){h=!1;break b}h=!0}if(h)a.name=b,a.attributes= 220a.name||y.$block[a.name])}function l(a,b,c){var d=a.name;if(y.$empty[d]||!a.children.length)"hr"==d&&"br"==b?a.replaceWith(z()):(a.parent&&c.push({check:"it",el:a.parent}),a.remove());else if(y.$block[d]||"tr"==d)if("br"==b)a.previous&&!I(a.previous)&&(b=z(),b.insertBefore(a)),a.next&&!I(a.next)&&(b=z(),b.insertAfter(a)),a.replaceWithChildren();else{var d=a.children,e;b:{e=y[b];for(var f=0,t=d.length,l;f<t;++f)if(l=d[f],l.type==CKEDITOR.NODE_ELEMENT&&!e[l.name]){e=!1;break b}e=!0}if(e)a.name=b,a.attributes=
204{},c.push({check:"parent-down",el:a});else{h=a.parent;for(var p=h.type==CKEDITOR.NODE_DOCUMENT_FRAGMENT||"body"==h.name,r,g,e=d.length;0<e;)m=d[--e],p&&(m.type==CKEDITOR.NODE_TEXT||m.type==CKEDITOR.NODE_ELEMENT&&H.$inline[m.name])?(r||(r=new CKEDITOR.htmlParser.element(b),r.insertAfter(a),c.push({check:"parent-down",el:r})),r.add(m,0)):(r=null,g=H[h.name]||H.span,m.insertAfter(a),h.type==CKEDITOR.NODE_DOCUMENT_FRAGMENT||m.type!=CKEDITOR.NODE_ELEMENT||g[m.name]||c.push({check:"el-up",el:m}));a.remove()}}else d in 221{},c.push({check:"parent-down",el:a});else{e=a.parent;for(var f=e.type==CKEDITOR.NODE_DOCUMENT_FRAGMENT||"body"==e.name,v,u,t=d.length;0<t;)l=d[--t],f&&(l.type==CKEDITOR.NODE_TEXT||l.type==CKEDITOR.NODE_ELEMENT&&y.$inline[l.name])?(v||(v=new CKEDITOR.htmlParser.element(b),v.insertAfter(a),c.push({check:"parent-down",el:v})),v.add(l,0)):(v=null,u=y[e.name]||y.span,l.insertAfter(a),e.type==CKEDITOR.NODE_DOCUMENT_FRAGMENT||l.type!=CKEDITOR.NODE_ELEMENT||u[l.name]||c.push({check:"el-up",el:l}));a.remove()}}else d in
205{style:1,script:1}?a.remove():(a.parent&&c.push({check:"it",el:a.parent}),a.replaceWithChildren())}function p(a,b,c){var d,h;for(d=0;d<c.length;++d)if(h=c[d],!(h.check&&!a.check(h.check,!1)||h.left&&!h.left(b))){h.right(b,J);break}}function m(a,b){var c=b.getDefinition(),d=c.attributes,h=c.styles,p,e,m,r;if(a.name!=c.element)return!1;for(p in d)if("class"==p)for(c=d[p].split(/\s+/),m=a.classes.join("|");r=c.pop();){if(-1==m.indexOf(r))return!1}else if(a.attributes[p]!=d[p])return!1;for(e in h)if(a.styles[e]!= 222{style:1,script:1}?a.remove():(a.parent&&c.push({check:"it",el:a.parent}),a.replaceWithChildren())}function r(a,b,c){var d,e;for(d=0;d<c.length;++d)if(e=c[d],!(e.check&&!a.check(e.check,!1)||e.left&&!e.left(b))){e.right(b,N);break}}function J(a,b){var c=b.getDefinition(),d=c.attributes,e=c.styles,f,l,t,v;if(a.name!=c.element)return!1;for(f in d)if("class"==f)for(c=d[f].split(/\s+/),t=a.classes.join("|");v=c.pop();){if(-1==t.indexOf(v))return!1}else if(a.attributes[f]!=d[f])return!1;for(l in e)if(a.styles[l]!=
206h[e])return!1;return!0}function C(a,b){var c,d;"string"==typeof a?c=a:a instanceof CKEDITOR.style?d=a:(c=a[0],d=a[1]);return[{element:c,left:d,right:function(a,c){c.transform(a,b)}}]}function r(a){return function(b){return m(b,a)}}function G(a){return function(b,c){c[a](b)}}var H=CKEDITOR.dtd,K=CKEDITOR.tools.copy,R=CKEDITOR.tools.trim,M=["","p","br","div"];CKEDITOR.FILTER_SKIP_TREE=2;CKEDITOR.filter=function(a){this.allowedContent=[];this.disallowedContent=[];this.elementCallbacks=null;this.disabled= 223e[l])return!1;return!0}function H(a,b){var c,d;"string"==typeof a?c=a:a instanceof CKEDITOR.style?d=a:(c=a[0],d=a[1]);return[{element:c,left:d,right:function(a,c){c.transform(a,b)}}]}function E(a){return function(b){return J(b,a)}}function u(a){return function(b,c){c[a](b)}}var y=CKEDITOR.dtd,v=CKEDITOR.tools.copy,B=CKEDITOR.tools.trim,L=["","p","br","div"];CKEDITOR.FILTER_SKIP_TREE=2;CKEDITOR.filter=function(a){this.allowedContent=[];this.disallowedContent=[];this.elementCallbacks=null;this.disabled=
207!1;this.editor=null;this.id=CKEDITOR.tools.getNextNumber();this._={allowedRules:{elements:{},generic:[]},disallowedRules:{elements:{},generic:[]},transformations:{},cachedTests:{}};CKEDITOR.filter.instances[this.id]=this;if(a instanceof CKEDITOR.editor){a=this.editor=a;this.customConfig=!0;var b=a.config.allowedContent;!0===b?this.disabled=!0:(b||(this.customConfig=!1),this.allow(b,"config",1),this.allow(a.config.extraAllowedContent,"extra",1),this.allow(M[a.enterMode]+" "+M[a.shiftEnterMode],"default", 224!1;this.editor=null;this.id=CKEDITOR.tools.getNextNumber();this._={allowedRules:{elements:{},generic:[]},disallowedRules:{elements:{},generic:[]},transformations:{},cachedTests:{},cachedChecks:{}};CKEDITOR.filter.instances[this.id]=this;if(a instanceof CKEDITOR.editor){a=this.editor=a;this.customConfig=!0;var b=a.config.allowedContent;!0===b?this.disabled=!0:(b||(this.customConfig=!1),this.allow(b,"config",1),this.allow(a.config.extraAllowedContent,"extra",1),this.allow(L[a.enterMode]+" "+L[a.shiftEnterMode],
2081),this.disallow(a.config.disallowedContent))}else this.customConfig=!1,this.allow(a,"default",1)};CKEDITOR.filter.instances={};CKEDITOR.filter.prototype={allow:function(b,c,d){if(!g(this,b,d))return!1;var h,p;if("string"==typeof b)b=f(b);else if(b instanceof CKEDITOR.style){if(b.toAllowedContentRules)return this.allow(b.toAllowedContentRules(this.editor),c,d);h=b.getDefinition();b={};d=h.attributes;b[h.element]=h={styles:h.styles,requiredStyles:h.styles&&CKEDITOR.tools.objectKeys(h.styles)};d&&(d= 225"default",1),this.disallow(a.config.disallowedContent))}else this.customConfig=!1,this.allow(a,"default",1)};CKEDITOR.filter.instances={};CKEDITOR.filter.prototype={allow:function(b,c,d){if(!g(this,b,d))return!1;var e,l;if("string"==typeof b)b=f(b);else if(b instanceof CKEDITOR.style){if(b.toAllowedContentRules)return this.allow(b.toAllowedContentRules(this.editor),c,d);e=b.getDefinition();b={};d=e.attributes;b[e.element]=e={styles:e.styles,requiredStyles:e.styles&&CKEDITOR.tools.objectKeys(e.styles)};
209K(d),h.classes=d["class"]?d["class"].split(/\s+/):null,h.requiredClasses=h.classes,delete d["class"],h.attributes=d,h.requiredAttributes=d&&CKEDITOR.tools.objectKeys(d))}else if(CKEDITOR.tools.isArray(b)){for(h=0;h<b.length;++h)p=this.allow(b[h],c,d);return p}a(this,b,c,this.allowedContent,this._.allowedRules);return!0},applyTo:function(a,b,c,d){if(this.disabled)return!1;var p=this,e=[],m=this.editor&&this.editor.config.protectedSource,r,g=!1,f={doFilter:!c,doTransform:!0,doCallbacks:!0,toHtml:b}; 226d&&(d=v(d),e.classes=d["class"]?d["class"].split(/\s+/):null,e.requiredClasses=e.classes,delete d["class"],e.attributes=d,e.requiredAttributes=d&&CKEDITOR.tools.objectKeys(d))}else if(CKEDITOR.tools.isArray(b)){for(e=0;e<b.length;++e)l=this.allow(b[e],c,d);return l}a(this,b,c,this.allowedContent,this._.allowedRules);return!0},applyTo:function(a,b,c,d){if(this.disabled)return!1;var e=this,f=[],t=this.editor&&this.editor.config.protectedSource,v,u=!1,g={doFilter:!c,doTransform:!0,doCallbacks:!0,toHtml:b};
210a.forEach(function(a){if(a.type==CKEDITOR.NODE_ELEMENT){if("off"==a.attributes["data-cke-filter"])return!1;if(!b||"span"!=a.name||!~CKEDITOR.tools.objectKeys(a.attributes).join("|").indexOf("data-cke-"))if(r=u(p,a,e,f),r&1)g=!0;else if(r&2)return!1}else if(a.type==CKEDITOR.NODE_COMMENT&&a.value.match(/^\{cke_protected\}(?!\{C\})/)){var c;a:{var d=decodeURIComponent(a.value.replace(/^\{cke_protected\}/,""));c=[];var h,q,z;if(m)for(q=0;q<m.length;++q)if((z=d.match(m[q]))&&z[0].length==d.length){c=!0; 227a.forEach(function(a){if(a.type==CKEDITOR.NODE_ELEMENT){if("off"==a.attributes["data-cke-filter"])return!1;if(!b||"span"!=a.name||!~CKEDITOR.tools.objectKeys(a.attributes).join("|").indexOf("data-cke-"))if(v=A(e,a,f,g),v&1)u=!0;else if(v&2)return!1}else if(a.type==CKEDITOR.NODE_COMMENT&&a.value.match(/^\{cke_protected\}(?!\{C\})/)){var c;a:{var d=decodeURIComponent(a.value.replace(/^\{cke_protected\}/,""));c=[];var l,p,r;if(t)for(p=0;p<t.length;++p)if((r=d.match(t[p]))&&r[0].length==d.length){c=!0;
211break a}d=CKEDITOR.htmlParser.fragment.fromHtml(d);1==d.children.length&&(h=d.children[0]).type==CKEDITOR.NODE_ELEMENT&&u(p,h,c,f);c=!c.length}c||e.push(a)}},null,!0);e.length&&(g=!0);var q;a=[];d=M[d||(this.editor?this.editor.enterMode:CKEDITOR.ENTER_P)];for(var z;c=e.pop();)c.type==CKEDITOR.NODE_ELEMENT?h(c,d,a):c.remove();for(;q=a.pop();)if(c=q.el,c.parent)switch(z=H[c.parent.name]||H.span,q.check){case "it":H.$removeEmpty[c.name]&&!c.children.length?h(c,d,a):y(c)||h(c,d,a);break;case "el-up":c.parent.type== 228break a}d=CKEDITOR.htmlParser.fragment.fromHtml(d);1==d.children.length&&(l=d.children[0]).type==CKEDITOR.NODE_ELEMENT&&A(e,l,c,g);c=!c.length}c||f.push(a)}},null,!0);f.length&&(u=!0);var p;a=[];d=L[d||(this.editor?this.editor.enterMode:CKEDITOR.ENTER_P)];for(var r;c=f.pop();)c.type==CKEDITOR.NODE_ELEMENT?l(c,d,a):c.remove();for(;p=a.pop();)if(c=p.el,c.parent)switch(r=y[c.parent.name]||y.span,p.check){case "it":y.$removeEmpty[c.name]&&!c.children.length?l(c,d,a):m(c)||l(c,d,a);break;case "el-up":c.parent.type==
212CKEDITOR.NODE_DOCUMENT_FRAGMENT||z[c.name]||h(c,d,a);break;case "parent-down":c.parent.type==CKEDITOR.NODE_DOCUMENT_FRAGMENT||z[c.name]||h(c.parent,d,a)}return g},checkFeature:function(a){if(this.disabled||!a)return!0;a.toFeature&&(a=a.toFeature(this.editor));return!a.requiredContent||this.check(a.requiredContent)},disable:function(){this.disabled=!0},disallow:function(b){if(!g(this,b,!0))return!1;"string"==typeof b&&(b=f(b));a(this,b,null,this.disallowedContent,this._.disallowedRules);return!0}, 229CKEDITOR.NODE_DOCUMENT_FRAGMENT||r[c.name]||l(c,d,a);break;case "parent-down":c.parent.type==CKEDITOR.NODE_DOCUMENT_FRAGMENT||r[c.name]||l(c.parent,d,a)}return u},checkFeature:function(a){if(this.disabled||!a)return!0;a.toFeature&&(a=a.toFeature(this.editor));return!a.requiredContent||this.check(a.requiredContent)},disable:function(){this.disabled=!0},disallow:function(b){if(!g(this,b,!0))return!1;"string"==typeof b&&(b=f(b));a(this,b,null,this.disallowedContent,this._.disallowedRules);return!0},
213addContentForms:function(a){if(!this.disabled&&a){var b,c,d=[],h;for(b=0;b<a.length&&!h;++b)c=a[b],("string"==typeof c||c instanceof CKEDITOR.style)&&this.check(c)&&(h=c);if(h){for(b=0;b<a.length;++b)d.push(C(a[b],h));this.addTransformations(d)}}},addElementCallback:function(a){this.elementCallbacks||(this.elementCallbacks=[]);this.elementCallbacks.push(a)},addFeature:function(a){if(this.disabled||!a)return!0;a.toFeature&&(a=a.toFeature(this.editor));this.allow(a.allowedContent,a.name);this.addTransformations(a.contentTransformations); 230addContentForms:function(a){if(!this.disabled&&a){var b,c,d=[],e;for(b=0;b<a.length&&!e;++b)c=a[b],("string"==typeof c||c instanceof CKEDITOR.style)&&this.check(c)&&(e=c);if(e){for(b=0;b<a.length;++b)d.push(H(a[b],e));this.addTransformations(d)}}},addElementCallback:function(a){this.elementCallbacks||(this.elementCallbacks=[]);this.elementCallbacks.push(a)},addFeature:function(a){if(this.disabled||!a)return!0;a.toFeature&&(a=a.toFeature(this.editor));this.allow(a.allowedContent,a.name);this.addTransformations(a.contentTransformations);
214this.addContentForms(a.contentForms);return a.requiredContent&&(this.customConfig||this.disallowedContent.length)?this.check(a.requiredContent):!0},addTransformations:function(a){var b,c;if(!this.disabled&&a){var d=this._.transformations,h;for(h=0;h<a.length;++h){b=a[h];var p=void 0,e=void 0,m=void 0,g=void 0,q=void 0,f=void 0;c=[];for(e=0;e<b.length;++e)m=b[e],"string"==typeof m?(m=m.split(/\s*:\s*/),g=m[0],q=null,f=m[1]):(g=m.check,q=m.left,f=m.right),p||(p=m,p=p.element?p.element:g?g.match(/^([a-z0-9]+)/i)[0]: 231this.addContentForms(a.contentForms);return a.requiredContent&&(this.customConfig||this.disallowedContent.length)?this.check(a.requiredContent):!0},addTransformations:function(a){var b,c;if(!this.disabled&&a){var d=this._.transformations,e;for(e=0;e<a.length;++e){b=a[e];var f=void 0,l=void 0,t=void 0,v=void 0,g=void 0,p=void 0;c=[];for(l=0;l<b.length;++l)t=b[l],"string"==typeof t?(t=t.split(/\s*:\s*/),v=t[0],g=null,p=t[1]):(v=t.check,g=t.left,p=t.right),f||(f=t,f=f.element?f.element:v?v.match(/^([a-z0-9]+)/i)[0]:
215p.left.getDefinition().element),q instanceof CKEDITOR.style&&(q=r(q)),c.push({check:g==p?null:g,left:q,right:"string"==typeof f?G(f):f});b=p;d[b]||(d[b]=[]);d[b].push(c)}}},check:function(a,b,c){if(this.disabled)return!0;if(CKEDITOR.tools.isArray(a)){for(var d=a.length;d--;)if(this.check(a[d],b,c))return!0;return!1}var h,e;if("string"==typeof a){e=a+"\x3c"+(!1===b?"0":"1")+(c?"1":"0")+"\x3e";if(e in this._.cachedChecks)return this._.cachedChecks[e];d=f(a).$1;h=d.styles;var m=d.classes;d.name=d.elements; 232f.left.getDefinition().element),g instanceof CKEDITOR.style&&(g=E(g)),c.push({check:v==f?null:v,left:g,right:"string"==typeof p?u(p):p});b=f;d[b]||(d[b]=[]);d[b].push(c)}}},check:function(a,b,c){if(this.disabled)return!0;if(CKEDITOR.tools.isArray(a)){for(var d=a.length;d--;)if(this.check(a[d],b,c))return!0;return!1}var e,l;if("string"==typeof a){l=a+"\x3c"+(!1===b?"0":"1")+(c?"1":"0")+"\x3e";if(l in this._.cachedChecks)return this._.cachedChecks[l];d=f(a).$1;e=d.styles;var t=d.classes;d.name=d.elements;
216d.classes=m=m?m.split(/\s*,\s*/):[];d.styles=w(h);d.attributes=w(d.attributes);d.children=[];m.length&&(d.attributes["class"]=m.join(" "));h&&(d.attributes.style=CKEDITOR.tools.writeCssText(d.styles));h=d}else d=a.getDefinition(),h=d.styles,m=d.attributes||{},h?(h=K(h),m.style=CKEDITOR.tools.writeCssText(h,!0)):h={},h={name:d.element,attributes:m,classes:m["class"]?m["class"].split(/\s+/):[],styles:h,children:[]};var m=CKEDITOR.tools.clone(h),r=[],g;if(!1!==b&&(g=this._.transformations[h.name])){for(d= 233d.classes=t=t?t.split(/\s*,\s*/):[];d.styles=q(e);d.attributes=q(d.attributes);d.children=[];t.length&&(d.attributes["class"]=t.join(" "));e&&(d.attributes.style=CKEDITOR.tools.writeCssText(d.styles));e=d}else d=a.getDefinition(),e=d.styles,t=d.attributes||{},e&&!CKEDITOR.tools.isEmpty(e)?(e=v(e),t.style=CKEDITOR.tools.writeCssText(e,!0)):e={},e={name:d.element,attributes:t,classes:t["class"]?t["class"].split(/\s+/):[],styles:e,children:[]};var t=CKEDITOR.tools.clone(e),u=[],g;if(!1!==b&&(g=this._.transformations[e.name])){for(d=
2170;d<g.length;++d)p(this,h,g[d]);q(h)}u(this,m,r,{doFilter:!0,doTransform:!1!==b,skipRequired:!c,skipFinalValidation:!c});b=0<r.length?!1:CKEDITOR.tools.objectCompare(h.attributes,m.attributes,!0)?!0:!1;"string"==typeof a&&(this._.cachedChecks[e]=b);return b},getAllowedEnterMode:function(){var a=["p","div","br"],b={p:CKEDITOR.ENTER_P,div:CKEDITOR.ENTER_DIV,br:CKEDITOR.ENTER_BR};return function(c,d){var h=a.slice(),p;if(this.check(M[c]))return c;for(d||(h=h.reverse());p=h.pop();)if(this.check(p))return b[p]; 2340;d<g.length;++d)r(this,e,g[d]);x(e)}A(this,t,u,{doFilter:!0,doTransform:!1!==b,skipRequired:!c,skipFinalValidation:!c});b=0<u.length?!1:CKEDITOR.tools.objectCompare(e.attributes,t.attributes,!0)?!0:!1;"string"==typeof a&&(this._.cachedChecks[l]=b);return b},getAllowedEnterMode:function(){var a=["p","div","br"],b={p:CKEDITOR.ENTER_P,div:CKEDITOR.ENTER_DIV,br:CKEDITOR.ENTER_BR};return function(c,d){var e=a.slice(),f;if(this.check(L[c]))return c;for(d||(e=e.reverse());f=e.pop();)if(this.check(f))return b[f];
218return CKEDITOR.ENTER_BR}}(),destroy:function(){delete CKEDITOR.filter.instances[this.id];delete this._;delete this.allowedContent;delete this.disallowedContent}};var Q={styles:1,attributes:1,classes:1},v={styles:"requiredStyles",attributes:"requiredAttributes",classes:"requiredClasses"},D=/^([a-z0-9\-*\s]+)((?:\s*\{[!\w\-,\s\*]+\}\s*|\s*\[[!\w\-,\s\*]+\]\s*|\s*\([!\w\-,\s\*]+\)\s*){0,3})(?:;\s*|$)/i,I={styles:/{([^}]+)}/,attrs:/\[([^\]]+)\]/,classes:/\(([^\)]+)\)/},E=/^cke:(object|embed|param)$/, 235return CKEDITOR.ENTER_BR}}(),clone:function(){var a=new CKEDITOR.filter,b=CKEDITOR.tools.clone;a.allowedContent=b(this.allowedContent);a._.allowedRules=b(this._.allowedRules);a.disallowedContent=b(this.disallowedContent);a._.disallowedRules=b(this._.disallowedRules);a._.transformations=b(this._.transformations);a.disabled=this.disabled;a.editor=this.editor;return a},destroy:function(){delete CKEDITOR.filter.instances[this.id];delete this._;delete this.allowedContent;delete this.disallowedContent}};
219L=/^(object|embed|param)$/,J=CKEDITOR.filter.transformationsTools={sizeToStyle:function(a){this.lengthToStyle(a,"width");this.lengthToStyle(a,"height")},sizeToAttribute:function(a){this.lengthToAttribute(a,"width");this.lengthToAttribute(a,"height")},lengthToStyle:function(a,b,c){c=c||b;if(!(c in a.styles)){var d=a.attributes[b];d&&(/^\d+$/.test(d)&&(d+="px"),a.styles[c]=d)}delete a.attributes[b]},lengthToAttribute:function(a,b,c){c=c||b;if(!(c in a.attributes)){var d=a.styles[b],h=d&&d.match(/^(\d+)(?:\.\d*)?px$/); 236var V={styles:1,attributes:1,classes:1},O={styles:"requiredStyles",attributes:"requiredAttributes",classes:"requiredClasses"},p=/^([a-z0-9\-*\s]+)((?:\s*\{[!\w\-,\s\*]+\}\s*|\s*\[[!\w\-,\s\*]+\]\s*|\s*\([!\w\-,\s\*]+\)\s*){0,3})(?:;\s*|$)/i,C={styles:/{([^}]+)}/,attrs:/\[([^\]]+)\]/,classes:/\(([^\)]+)\)/},t=/^cke:(object|embed|param)$/,F=/^(object|embed|param)$/,N;N=CKEDITOR.filter.transformationsTools={sizeToStyle:function(a){this.lengthToStyle(a,"width");this.lengthToStyle(a,"height")},sizeToAttribute:function(a){this.lengthToAttribute(a,
220h?a.attributes[c]=h[1]:"cke-test"==d&&(a.attributes[c]="cke-test")}delete a.styles[b]},alignmentToStyle:function(a){if(!("float"in a.styles)){var b=a.attributes.align;if("left"==b||"right"==b)a.styles["float"]=b}delete a.attributes.align},alignmentToAttribute:function(a){if(!("align"in a.attributes)){var b=a.styles["float"];if("left"==b||"right"==b)a.attributes.align=b}delete a.styles["float"]},matchesStyle:m,transform:function(a,b){if("string"==typeof b)a.name=b;else{var c=b.getDefinition(),d=c.styles, 237"width");this.lengthToAttribute(a,"height")},lengthToStyle:function(a,b,c){c=c||b;if(!(c in a.styles)){var d=a.attributes[b];d&&(/^\d+$/.test(d)&&(d+="px"),a.styles[c]=d)}delete a.attributes[b]},lengthToAttribute:function(a,b,c){c=c||b;if(!(c in a.attributes)){var d=a.styles[b],e=d&&d.match(/^(\d+)(?:\.\d*)?px$/);e?a.attributes[c]=e[1]:"cke-test"==d&&(a.attributes[c]="cke-test")}delete a.styles[b]},alignmentToStyle:function(a){if(!("float"in a.styles)){var b=a.attributes.align;if("left"==b||"right"==
221h=c.attributes,p,m,e,r;a.name=c.element;for(p in h)if("class"==p)for(c=a.classes.join("|"),e=h[p].split(/\s+/);r=e.pop();)-1==c.indexOf(r)&&a.classes.push(r);else a.attributes[p]=h[p];for(m in d)a.styles[m]=d[m]}}}})(); 238b)a.styles["float"]=b}delete a.attributes.align},alignmentToAttribute:function(a){if(!("align"in a.attributes)){var b=a.styles["float"];if("left"==b||"right"==b)a.attributes.align=b}delete a.styles["float"]},splitBorderShorthand:function(a){function b(d){a.styles["border-top-width"]=c[d[0]];a.styles["border-right-width"]=c[d[1]];a.styles["border-bottom-width"]=c[d[2]];a.styles["border-left-width"]=c[d[3]]}if(a.styles.border){var c=a.styles.border.match(/([\.\d]+\w+)/g)||["0px"];switch(c.length){case 1:a.styles["border-width"]=
239c[0];break;case 2:b([0,1,0,1]);break;case 3:b([0,1,2,1]);break;case 4:b([0,1,2,3])}a.styles["border-style"]=a.styles["border-style"]||(a.styles.border.match(/(none|hidden|dotted|dashed|solid|double|groove|ridge|inset|outset|initial|inherit)/)||[])[0];a.styles["border-style"]||delete a.styles["border-style"];delete a.styles.border}},listTypeToStyle:function(a){if(a.attributes.type)switch(a.attributes.type){case "a":a.styles["list-style-type"]="lower-alpha";break;case "A":a.styles["list-style-type"]=
240"upper-alpha";break;case "i":a.styles["list-style-type"]="lower-roman";break;case "I":a.styles["list-style-type"]="upper-roman";break;case "1":a.styles["list-style-type"]="decimal";break;default:a.styles["list-style-type"]=a.attributes.type}},splitMarginShorthand:function(a){function b(d){a.styles["margin-top"]=c[d[0]];a.styles["margin-right"]=c[d[1]];a.styles["margin-bottom"]=c[d[2]];a.styles["margin-left"]=c[d[3]]}if(a.styles.margin){var c=a.styles.margin.match(/(\-?[\.\d]+\w+)/g)||["0px"];switch(c.length){case 1:b([0,
2410,0,0]);break;case 2:b([0,1,0,1]);break;case 3:b([0,1,2,1]);break;case 4:b([0,1,2,3])}delete a.styles.margin}},matchesStyle:J,transform:function(a,b){if("string"==typeof b)a.name=b;else{var c=b.getDefinition(),d=c.styles,e=c.attributes,f,t,l,v;a.name=c.element;for(f in e)if("class"==f)for(c=a.classes.join("|"),l=e[f].split(/\s+/);v=l.pop();)-1==c.indexOf(v)&&a.classes.push(v);else a.attributes[f]=e[f];for(t in d)a.styles[t]=d[t]}}}})();
222(function(){CKEDITOR.focusManager=function(a){if(a.focusManager)return a.focusManager;this.hasFocus=!1;this.currentActive=null;this._={editor:a};return this};CKEDITOR.focusManager._={blurDelay:200};CKEDITOR.focusManager.prototype={focus:function(a){this._.timer&&clearTimeout(this._.timer);a&&(this.currentActive=a);this.hasFocus||this._.locked||((a=CKEDITOR.currentInstance)&&a.focusManager.blur(1),this.hasFocus=!0,(a=this._.editor.container)&&a.addClass("cke_focus"),this._.editor.fire("focus"))},lock:function(){this._.locked= 242(function(){CKEDITOR.focusManager=function(a){if(a.focusManager)return a.focusManager;this.hasFocus=!1;this.currentActive=null;this._={editor:a};return this};CKEDITOR.focusManager._={blurDelay:200};CKEDITOR.focusManager.prototype={focus:function(a){this._.timer&&clearTimeout(this._.timer);a&&(this.currentActive=a);this.hasFocus||this._.locked||((a=CKEDITOR.currentInstance)&&a.focusManager.blur(1),this.hasFocus=!0,(a=this._.editor.container)&&a.addClass("cke_focus"),this._.editor.fire("focus"))},lock:function(){this._.locked=
2231},unlock:function(){delete this._.locked},blur:function(a){function d(){if(this.hasFocus){this.hasFocus=!1;var a=this._.editor.container;a&&a.removeClass("cke_focus");this._.editor.fire("blur")}}if(!this._.locked){this._.timer&&clearTimeout(this._.timer);var b=CKEDITOR.focusManager._.blurDelay;a||!b?d.call(this):this._.timer=CKEDITOR.tools.setTimeout(function(){delete this._.timer;d.call(this)},b,this)}},add:function(a,d){var b=a.getCustomData("focusmanager");if(!b||b!=this){b&&b.remove(a);var b= 2431},unlock:function(){delete this._.locked},blur:function(a){function d(){if(this.hasFocus){this.hasFocus=!1;var a=this._.editor.container;a&&a.removeClass("cke_focus");this._.editor.fire("blur")}}if(!this._.locked){this._.timer&&clearTimeout(this._.timer);var b=CKEDITOR.focusManager._.blurDelay;a||!b?d.call(this):this._.timer=CKEDITOR.tools.setTimeout(function(){delete this._.timer;d.call(this)},b,this)}},add:function(a,d){var b=a.getCustomData("focusmanager");if(!b||b!=this){b&&b.remove(a);var b=
224"focus",c="blur";d&&(CKEDITOR.env.ie?(b="focusin",c="focusout"):CKEDITOR.event.useCapture=1);var e={blur:function(){a.equals(this.currentActive)&&this.blur()},focus:function(){this.focus(a)}};a.on(b,e.focus,this);a.on(c,e.blur,this);d&&(CKEDITOR.event.useCapture=0);a.setCustomData("focusmanager",this);a.setCustomData("focusmanager_handlers",e)}},remove:function(a){a.removeCustomData("focusmanager");var d=a.removeCustomData("focusmanager_handlers");a.removeListener("blur",d.blur);a.removeListener("focus", 244"focus",c="blur";d&&(CKEDITOR.env.ie?(b="focusin",c="focusout"):CKEDITOR.event.useCapture=1);var e={blur:function(){a.equals(this.currentActive)&&this.blur()},focus:function(){this.focus(a)}};a.on(b,e.focus,this);a.on(c,e.blur,this);d&&(CKEDITOR.event.useCapture=0);a.setCustomData("focusmanager",this);a.setCustomData("focusmanager_handlers",e)}},remove:function(a){a.removeCustomData("focusmanager");var d=a.removeCustomData("focusmanager_handlers");a.removeListener("blur",d.blur);a.removeListener("focus",
225d.focus)}}})();CKEDITOR.keystrokeHandler=function(a){if(a.keystrokeHandler)return a.keystrokeHandler;this.keystrokes={};this.blockedKeystrokes={};this._={editor:a};return this}; 245d.focus)}}})();CKEDITOR.keystrokeHandler=function(a){if(a.keystrokeHandler)return a.keystrokeHandler;this.keystrokes={};this.blockedKeystrokes={};this._={editor:a};return this};
226(function(){var a,d=function(b){b=b.data;var d=b.getKeystroke(),g=this.keystrokes[d],l=this._.editor;a=!1===l.fire("key",{keyCode:d,domEvent:b});a||(g&&(a=!1!==l.execCommand(g,{from:"keystrokeHandler"})),a||(a=!!this.blockedKeystrokes[d]));a&&b.preventDefault(!0);return!a},b=function(b){a&&(a=!1,b.data.preventDefault(!0))};CKEDITOR.keystrokeHandler.prototype={attach:function(a){a.on("keydown",d,this);if(CKEDITOR.env.gecko&&CKEDITOR.env.mac)a.on("keypress",b,this)}}})(); 246(function(){var a,d=function(b){b=b.data;var d=b.getKeystroke(),g=this.keystrokes[d],h=this._.editor;a=!1===h.fire("key",{keyCode:d,domEvent:b});a||(g&&(a=!1!==h.execCommand(g,{from:"keystrokeHandler"})),a||(a=!!this.blockedKeystrokes[d]));a&&b.preventDefault(!0);return!a},b=function(b){a&&(a=!1,b.data.preventDefault(!0))};CKEDITOR.keystrokeHandler.prototype={attach:function(a){a.on("keydown",d,this);if(CKEDITOR.env.gecko&&CKEDITOR.env.mac)a.on("keypress",b,this)}}})();
227(function(){CKEDITOR.lang={languages:{af:1,ar:1,bg:1,bn:1,bs:1,ca:1,cs:1,cy:1,da:1,de:1,"de-ch":1,el:1,"en-au":1,"en-ca":1,"en-gb":1,en:1,eo:1,es:1,et:1,eu:1,fa:1,fi:1,fo:1,"fr-ca":1,fr:1,gl:1,gu:1,he:1,hi:1,hr:1,hu:1,id:1,is:1,it:1,ja:1,ka:1,km:1,ko:1,ku:1,lt:1,lv:1,mk:1,mn:1,ms:1,nb:1,nl:1,no:1,pl:1,"pt-br":1,pt:1,ro:1,ru:1,si:1,sk:1,sl:1,sq:1,"sr-latn":1,sr:1,sv:1,th:1,tr:1,tt:1,ug:1,uk:1,vi:1,"zh-cn":1,zh:1},rtl:{ar:1,fa:1,he:1,ku:1,ug:1},load:function(a,d,b){a&&CKEDITOR.lang.languages[a]||(a= 247(function(){CKEDITOR.lang={languages:{af:1,ar:1,az:1,bg:1,bn:1,bs:1,ca:1,cs:1,cy:1,da:1,de:1,"de-ch":1,el:1,"en-au":1,"en-ca":1,"en-gb":1,en:1,eo:1,es:1,"es-mx":1,et:1,eu:1,fa:1,fi:1,fo:1,"fr-ca":1,fr:1,gl:1,gu:1,he:1,hi:1,hr:1,hu:1,id:1,is:1,it:1,ja:1,ka:1,km:1,ko:1,ku:1,lt:1,lv:1,mk:1,mn:1,ms:1,nb:1,nl:1,no:1,oc:1,pl:1,"pt-br":1,pt:1,ro:1,ru:1,si:1,sk:1,sl:1,sq:1,"sr-latn":1,sr:1,sv:1,th:1,tr:1,tt:1,ug:1,uk:1,vi:1,"zh-cn":1,zh:1},rtl:{ar:1,fa:1,he:1,ku:1,ug:1},load:function(a,d,b){a&&CKEDITOR.lang.languages[a]||
228this.detect(d,a));var c=this;d=function(){c[a].dir=c.rtl[a]?"rtl":"ltr";b(a,c[a])};this[a]?d():CKEDITOR.scriptLoader.load(CKEDITOR.getUrl("lang/"+a+".js"),d,this)},detect:function(a,d){var b=this.languages;d=d||navigator.userLanguage||navigator.language||a;var c=d.toLowerCase().match(/([a-z]+)(?:-([a-z]+))?/),e=c[1],c=c[2];b[e+"-"+c]?e=e+"-"+c:b[e]||(e=null);CKEDITOR.lang.detect=e?function(){return e}:function(a){return a};return e||a}}})(); 248(a=this.detect(d,a));var c=this;d=function(){c[a].dir=c.rtl[a]?"rtl":"ltr";b(a,c[a])};this[a]?d():CKEDITOR.scriptLoader.load(CKEDITOR.getUrl("lang/"+a+".js"),d,this)},detect:function(a,d){var b=this.languages;d=d||navigator.userLanguage||navigator.language||a;var c=d.toLowerCase().match(/([a-z]+)(?:-([a-z]+))?/),e=c[1],c=c[2];b[e+"-"+c]?e=e+"-"+c:b[e]||(e=null);CKEDITOR.lang.detect=e?function(){return e}:function(a){return a};return e||a}}})();
229CKEDITOR.scriptLoader=function(){var a={},d={};return{load:function(b,c,e,g){var l="string"==typeof b;l&&(b=[b]);e||(e=CKEDITOR);var k=b.length,n=[],w=[],f=function(a){c&&(l?c.call(e,a):c.call(e,n,w))};if(0===k)f(!0);else{var x=function(a,b){(b?n:w).push(a);0>=--k&&(g&&CKEDITOR.document.getDocumentElement().removeStyle("cursor"),f(b))},A=function(b,c){a[b]=1;var e=d[b];delete d[b];for(var g=0;g<e.length;g++)e[g](b,c)},u=function(b){if(a[b])x(b,!0);else{var e=d[b]||(d[b]=[]);e.push(x);if(!(1<e.length)){var g= 249CKEDITOR.scriptLoader=function(){var a={},d={};return{load:function(b,c,e,g){var h="string"==typeof b;h&&(b=[b]);e||(e=CKEDITOR);var k=b.length,n=[],q=[],f=function(a){c&&(h?c.call(e,a):c.call(e,n,q))};if(0===k)f(!0);else{var D=function(a,b){(b?n:q).push(a);0>=--k&&(g&&CKEDITOR.document.getDocumentElement().removeStyle("cursor"),f(b))},w=function(b,c){a[b]=1;var e=d[b];delete d[b];for(var f=0;f<e.length;f++)e[f](b,c)},A=function(b){if(a[b])D(b,!0);else{var e=d[b]||(d[b]=[]);e.push(D);if(!(1<e.length)){var f=
230new CKEDITOR.dom.element("script");g.setAttributes({type:"text/javascript",src:b});c&&(CKEDITOR.env.ie&&11>CKEDITOR.env.version?g.$.onreadystatechange=function(){if("loaded"==g.$.readyState||"complete"==g.$.readyState)g.$.onreadystatechange=null,A(b,!0)}:(g.$.onload=function(){setTimeout(function(){A(b,!0)},0)},g.$.onerror=function(){A(b,!1)}));g.appendTo(CKEDITOR.document.getHead())}}};g&&CKEDITOR.document.getDocumentElement().setStyle("cursor","wait");for(var B=0;B<k;B++)u(b[B])}},queue:function(){function a(){var b; 250new CKEDITOR.dom.element("script");f.setAttributes({type:"text/javascript",src:b});c&&(CKEDITOR.env.ie&&(8>=CKEDITOR.env.version||CKEDITOR.env.ie9Compat)?f.$.onreadystatechange=function(){if("loaded"==f.$.readyState||"complete"==f.$.readyState)f.$.onreadystatechange=null,w(b,!0)}:(f.$.onload=function(){setTimeout(function(){w(b,!0)},0)},f.$.onerror=function(){w(b,!1)}));f.appendTo(CKEDITOR.document.getHead())}}};g&&CKEDITOR.document.getDocumentElement().setStyle("cursor","wait");for(var G=0;G<k;G++)A(b[G])}},
231(b=c[0])&&this.load(b.scriptUrl,b.callback,CKEDITOR,0)}var c=[];return function(d,g){var l=this;c.push({scriptUrl:d,callback:function(){g&&g.apply(this,arguments);c.shift();a.call(l)}});1==c.length&&a.call(this)}}()}}();CKEDITOR.resourceManager=function(a,d){this.basePath=a;this.fileName=d;this.registered={};this.loaded={};this.externals={};this._={waitingList:{}}}; 251queue:function(){function a(){var b;(b=c[0])&&this.load(b.scriptUrl,b.callback,CKEDITOR,0)}var c=[];return function(d,g){var h=this;c.push({scriptUrl:d,callback:function(){g&&g.apply(this,arguments);c.shift();a.call(h)}});1==c.length&&a.call(this)}}()}}();CKEDITOR.resourceManager=function(a,d){this.basePath=a;this.fileName=d;this.registered={};this.loaded={};this.externals={};this._={waitingList:{}}};
232CKEDITOR.resourceManager.prototype={add:function(a,d){if(this.registered[a])throw Error('[CKEDITOR.resourceManager.add] The resource name "'+a+'" is already registered.');var b=this.registered[a]=d||{};b.name=a;b.path=this.getPath(a);CKEDITOR.fire(a+CKEDITOR.tools.capitalize(this.fileName)+"Ready",b);return this.get(a)},get:function(a){return this.registered[a]||null},getPath:function(a){var d=this.externals[a];return CKEDITOR.getUrl(d&&d.dir||this.basePath+a+"/")},getFilePath:function(a){var d=this.externals[a]; 252CKEDITOR.resourceManager.prototype={add:function(a,d){if(this.registered[a])throw Error('[CKEDITOR.resourceManager.add] The resource name "'+a+'" is already registered.');var b=this.registered[a]=d||{};b.name=a;b.path=this.getPath(a);CKEDITOR.fire(a+CKEDITOR.tools.capitalize(this.fileName)+"Ready",b);return this.get(a)},get:function(a){return this.registered[a]||null},getPath:function(a){var d=this.externals[a];return CKEDITOR.getUrl(d&&d.dir||this.basePath+a+"/")},getFilePath:function(a){var d=this.externals[a];
233return CKEDITOR.getUrl(this.getPath(a)+(d?d.file:this.fileName+".js"))},addExternal:function(a,d,b){a=a.split(",");for(var c=0;c<a.length;c++){var e=a[c];b||(d=d.replace(/[^\/]+$/,function(a){b=a;return""}));this.externals[e]={dir:d,file:b||this.fileName+".js"}}},load:function(a,d,b){CKEDITOR.tools.isArray(a)||(a=a?[a]:[]);for(var c=this.loaded,e=this.registered,g=[],l={},k={},n=0;n<a.length;n++){var w=a[n];if(w)if(c[w]||e[w])k[w]=this.get(w);else{var f=this.getFilePath(w);g.push(f);f in l||(l[f]= 253return CKEDITOR.getUrl(this.getPath(a)+(d?d.file:this.fileName+".js"))},addExternal:function(a,d,b){a=a.split(",");for(var c=0;c<a.length;c++){var e=a[c];b||(d=d.replace(/[^\/]+$/,function(a){b=a;return""}));this.externals[e]={dir:d,file:b||this.fileName+".js"}}},load:function(a,d,b){CKEDITOR.tools.isArray(a)||(a=a?[a]:[]);for(var c=this.loaded,e=this.registered,g=[],h={},k={},n=0;n<a.length;n++){var q=a[n];if(q)if(c[q]||e[q])k[q]=this.get(q);else{var f=this.getFilePath(q);g.push(f);f in h||(h[f]=
234[]);l[f].push(w)}}CKEDITOR.scriptLoader.load(g,function(a,e){if(e.length)throw Error('[CKEDITOR.resourceManager.load] Resource name "'+l[e[0]].join(",")+'" was not found at "'+e[0]+'".');for(var g=0;g<a.length;g++)for(var f=l[a[g]],q=0;q<f.length;q++){var y=f[q];k[y]=this.get(y);c[y]=1}d.call(b,k)},this)}};CKEDITOR.plugins=new CKEDITOR.resourceManager("plugins/","plugin"); 254[]);h[f].push(q)}}CKEDITOR.scriptLoader.load(g,function(a,e){if(e.length)throw Error('[CKEDITOR.resourceManager.load] Resource name "'+h[e[0]].join(",")+'" was not found at "'+e[0]+'".');for(var f=0;f<a.length;f++)for(var g=h[a[f]],n=0;n<g.length;n++){var m=g[n];k[m]=this.get(m);c[m]=1}d.call(b,k)},this)}};CKEDITOR.plugins=new CKEDITOR.resourceManager("plugins/","plugin");
235CKEDITOR.plugins.load=CKEDITOR.tools.override(CKEDITOR.plugins.load,function(a){var d={};return function(b,c,e){var g={},l=function(b){a.call(this,b,function(a){CKEDITOR.tools.extend(g,a);var b=[],f;for(f in a){var k=a[f],A=k&&k.requires;if(!d[f]){if(k.icons)for(var u=k.icons.split(","),B=u.length;B--;)CKEDITOR.skin.addIcon(u[B],k.path+"icons/"+(CKEDITOR.env.hidpi&&k.hidpi?"hidpi/":"")+u[B]+".png");d[f]=1}if(A)for(A.split&&(A=A.split(",")),k=0;k<A.length;k++)g[A[k]]||b.push(A[k])}if(b.length)l.call(this, 255CKEDITOR.plugins.load=CKEDITOR.tools.override(CKEDITOR.plugins.load,function(a){var d={};return function(b,c,e){var g={},h=function(b){a.call(this,b,function(a){CKEDITOR.tools.extend(g,a);var b=[],f;for(f in a){var k=a[f],w=k&&k.requires;if(!d[f]){if(k.icons)for(var A=k.icons.split(","),G=A.length;G--;)CKEDITOR.skin.addIcon(A[G],k.path+"icons/"+(CKEDITOR.env.hidpi&&k.hidpi?"hidpi/":"")+A[G]+".png");d[f]=1}if(w)for(w.split&&(w=w.split(",")),k=0;k<w.length;k++)g[w[k]]||b.push(w[k])}if(b.length)h.call(this,
236b);else{for(f in g)k=g[f],k.onLoad&&!k.onLoad._called&&(!1===k.onLoad()&&delete g[f],k.onLoad._called=1);c&&c.call(e||window,g)}},this)};l.call(this,b)}});CKEDITOR.plugins.setLang=function(a,d,b){var c=this.get(a);a=c.langEntries||(c.langEntries={});c=c.lang||(c.lang=[]);c.split&&(c=c.split(","));-1==CKEDITOR.tools.indexOf(c,d)&&c.push(d);a[d]=b};CKEDITOR.ui=function(a){if(a.ui)return a.ui;this.items={};this.instances={};this.editor=a;this._={handlers:{}};return this}; 256b);else{for(f in g)k=g[f],k.onLoad&&!k.onLoad._called&&(!1===k.onLoad()&&delete g[f],k.onLoad._called=1);c&&c.call(e||window,g)}},this)};h.call(this,b)}});CKEDITOR.plugins.setLang=function(a,d,b){var c=this.get(a);a=c.langEntries||(c.langEntries={});c=c.lang||(c.lang=[]);c.split&&(c=c.split(","));-1==CKEDITOR.tools.indexOf(c,d)&&c.push(d);a[d]=b};CKEDITOR.ui=function(a){if(a.ui)return a.ui;this.items={};this.instances={};this.editor=a;this._={handlers:{}};return this};
237CKEDITOR.ui.prototype={add:function(a,d,b){b.name=a.toLowerCase();var c=this.items[a]={type:d,command:b.command||null,args:Array.prototype.slice.call(arguments,2)};CKEDITOR.tools.extend(c,b)},get:function(a){return this.instances[a]},create:function(a){var d=this.items[a],b=d&&this._.handlers[d.type],c=d&&d.command&&this.editor.getCommand(d.command),b=b&&b.create.apply(this,d.args);this.instances[a]=b;c&&c.uiItems.push(b);b&&!b.type&&(b.type=d.type);return b},addHandler:function(a,d){this._.handlers[a]= 257CKEDITOR.ui.prototype={add:function(a,d,b){b.name=a.toLowerCase();var c=this.items[a]={type:d,command:b.command||null,args:Array.prototype.slice.call(arguments,2)};CKEDITOR.tools.extend(c,b)},get:function(a){return this.instances[a]},create:function(a){var d=this.items[a],b=d&&this._.handlers[d.type],c=d&&d.command&&this.editor.getCommand(d.command),b=b&&b.create.apply(this,d.args);this.instances[a]=b;c&&c.uiItems.push(b);b&&!b.type&&(b.type=d.type);return b},addHandler:function(a,d){this._.handlers[a]=
238d},space:function(a){return CKEDITOR.document.getById(this.spaceId(a))},spaceId:function(a){return this.editor.id+"_"+a}};CKEDITOR.event.implementOn(CKEDITOR.ui); 258d},space:function(a){return CKEDITOR.document.getById(this.spaceId(a))},spaceId:function(a){return this.editor.id+"_"+a}};CKEDITOR.event.implementOn(CKEDITOR.ui);
239(function(){function a(a,e,f){CKEDITOR.event.call(this);a=a&&CKEDITOR.tools.clone(a);if(void 0!==e){if(!(e instanceof CKEDITOR.dom.element))throw Error("Expect element of type CKEDITOR.dom.element.");if(!f)throw Error("One of the element modes must be specified.");if(CKEDITOR.env.ie&&CKEDITOR.env.quirks&&f==CKEDITOR.ELEMENT_MODE_INLINE)throw Error("Inline element mode is not supported on IE quirks.");if(!b(e,f))throw Error('The specified element mode is not supported on element: "'+e.getName()+'".'); 259(function(){function a(a,e,f){CKEDITOR.event.call(this);a=a&&CKEDITOR.tools.clone(a);if(void 0!==e){if(!(e instanceof CKEDITOR.dom.element))throw Error("Expect element of type CKEDITOR.dom.element.");if(!f)throw Error("One of the element modes must be specified.");if(CKEDITOR.env.ie&&CKEDITOR.env.quirks&&f==CKEDITOR.ELEMENT_MODE_INLINE)throw Error("Inline element mode is not supported on IE quirks.");if(!b(e,f))throw Error('The specified element mode is not supported on element: "'+e.getName()+'".');
240this.element=e;this.elementMode=f;this.name=this.elementMode!=CKEDITOR.ELEMENT_MODE_APPENDTO&&(e.getId()||e.getNameAtt())}else this.elementMode=CKEDITOR.ELEMENT_MODE_NONE;this._={};this.commands={};this.templates={};this.name=this.name||d();this.id=CKEDITOR.tools.getNextId();this.status="unloaded";this.config=CKEDITOR.tools.prototypedCopy(CKEDITOR.config);this.ui=new CKEDITOR.ui(this);this.focusManager=new CKEDITOR.focusManager(this);this.keystrokeHandler=new CKEDITOR.keystrokeHandler(this);this.on("readOnly", 260this.element=e;this.elementMode=f;this.name=this.elementMode!=CKEDITOR.ELEMENT_MODE_APPENDTO&&(e.getId()||e.getNameAtt())}else this.elementMode=CKEDITOR.ELEMENT_MODE_NONE;this._={};this.commands={};this.templates={};this.name=this.name||d();this.id=CKEDITOR.tools.getNextId();this.status="unloaded";this.config=CKEDITOR.tools.prototypedCopy(CKEDITOR.config);this.ui=new CKEDITOR.ui(this);this.focusManager=new CKEDITOR.focusManager(this);this.keystrokeHandler=new CKEDITOR.keystrokeHandler(this);this.on("readOnly",
241c);this.on("selectionChange",function(a){g(this,a.data.path)});this.on("activeFilterChange",function(){g(this,this.elementPath(),!0)});this.on("mode",c);this.on("instanceReady",function(){this.config.startupFocus&&this.focus()});CKEDITOR.fire("instanceCreated",null,this);CKEDITOR.add(this);CKEDITOR.tools.setTimeout(function(){"destroyed"!==this.status?k(this,a):CKEDITOR.warn("editor-incorrect-destroy")},0,this)}function d(){do var a="editor"+ ++u;while(CKEDITOR.instances[a]);return a}function b(a, 261c);this.on("selectionChange",function(a){g(this,a.data.path)});this.on("activeFilterChange",function(){g(this,this.elementPath(),!0)});this.on("mode",c);this.on("instanceReady",function(){this.config.startupFocus&&this.focus()});CKEDITOR.fire("instanceCreated",null,this);CKEDITOR.add(this);CKEDITOR.tools.setTimeout(function(){"destroyed"!==this.status?k(this,a):CKEDITOR.warn("editor-incorrect-destroy")},0,this)}function d(){do var a="editor"+ ++G;while(CKEDITOR.instances[a]);return a}function b(a,
242b){return b==CKEDITOR.ELEMENT_MODE_INLINE?a.is(CKEDITOR.dtd.$editable)||a.is("textarea"):b==CKEDITOR.ELEMENT_MODE_REPLACE?!a.is(CKEDITOR.dtd.$nonBodyContent):1}function c(){var a=this.commands,b;for(b in a)e(this,a[b])}function e(a,b){b[b.startDisabled?"disable":a.readOnly&&!b.readOnly?"disable":b.modes[a.mode]?"enable":"disable"]()}function g(a,b,c){if(b){var d,e,h=a.commands;for(e in h)d=h[e],(c||d.contextSensitive)&&d.refresh(a,b)}}function l(a){var b=a.config.customConfig;if(!b)return!1;var b= 262b){return b==CKEDITOR.ELEMENT_MODE_INLINE?a.is(CKEDITOR.dtd.$editable)||a.is("textarea"):b==CKEDITOR.ELEMENT_MODE_REPLACE?!a.is(CKEDITOR.dtd.$nonBodyContent):1}function c(){var a=this.commands,b;for(b in a)e(this,a[b])}function e(a,b){b[b.startDisabled?"disable":a.readOnly&&!b.readOnly?"disable":b.modes[a.mode]?"enable":"disable"]()}function g(a,b,c){if(b){var d,e,f=a.commands;for(e in f)d=f[e],(c||d.contextSensitive)&&d.refresh(a,b)}}function h(a){var b=a.config.customConfig;if(!b)return!1;var b=
243CKEDITOR.getUrl(b),c=B[b]||(B[b]={});c.fn?(c.fn.call(a,a.config),CKEDITOR.getUrl(a.config.customConfig)!=b&&l(a)||a.fireOnce("customConfigLoaded")):CKEDITOR.scriptLoader.queue(b,function(){c.fn=CKEDITOR.editorConfig?CKEDITOR.editorConfig:function(){};l(a)});return!0}function k(a,b){a.on("customConfigLoaded",function(){if(b){if(b.on)for(var c in b.on)a.on(c,b.on[c]);CKEDITOR.tools.extend(a.config,b,!0);delete a.config.on}c=a.config;a.readOnly=c.readOnly?!0:a.elementMode==CKEDITOR.ELEMENT_MODE_INLINE? 263CKEDITOR.getUrl(b),c=x[b]||(x[b]={});c.fn?(c.fn.call(a,a.config),CKEDITOR.getUrl(a.config.customConfig)!=b&&h(a)||a.fireOnce("customConfigLoaded")):CKEDITOR.scriptLoader.queue(b,function(){c.fn=CKEDITOR.editorConfig?CKEDITOR.editorConfig:function(){};h(a)});return!0}function k(a,b){a.on("customConfigLoaded",function(){if(b){if(b.on)for(var c in b.on)a.on(c,b.on[c]);CKEDITOR.tools.extend(a.config,b,!0);delete a.config.on}c=a.config;a.readOnly=c.readOnly?!0:a.elementMode==CKEDITOR.ELEMENT_MODE_INLINE?
244a.element.is("textarea")?a.element.hasAttribute("disabled")||a.element.hasAttribute("readonly"):a.element.isReadOnly():a.elementMode==CKEDITOR.ELEMENT_MODE_REPLACE?a.element.hasAttribute("disabled")||a.element.hasAttribute("readonly"):!1;a.blockless=a.elementMode==CKEDITOR.ELEMENT_MODE_INLINE?!(a.element.is("textarea")||CKEDITOR.dtd[a.element.getName()].p):!1;a.tabIndex=c.tabIndex||a.element&&a.element.getAttribute("tabindex")||0;a.activeEnterMode=a.enterMode=a.blockless?CKEDITOR.ENTER_BR:c.enterMode; 264a.element.is("textarea")?a.element.hasAttribute("disabled")||a.element.hasAttribute("readonly"):a.element.isReadOnly():a.elementMode==CKEDITOR.ELEMENT_MODE_REPLACE?a.element.hasAttribute("disabled")||a.element.hasAttribute("readonly"):!1;a.blockless=a.elementMode==CKEDITOR.ELEMENT_MODE_INLINE?!(a.element.is("textarea")||CKEDITOR.dtd[a.element.getName()].p):!1;a.tabIndex=c.tabIndex||a.element&&a.element.getAttribute("tabindex")||0;a.activeEnterMode=a.enterMode=a.blockless?CKEDITOR.ENTER_BR:c.enterMode;
245a.activeShiftEnterMode=a.shiftEnterMode=a.blockless?CKEDITOR.ENTER_BR:c.shiftEnterMode;c.skin&&(CKEDITOR.skinName=c.skin);a.fireOnce("configLoaded");a.dataProcessor=new CKEDITOR.htmlDataProcessor(a);a.filter=a.activeFilter=new CKEDITOR.filter(a);n(a)});b&&null!=b.customConfig&&(a.config.customConfig=b.customConfig);l(a)||a.fireOnce("customConfigLoaded")}function n(a){CKEDITOR.skin.loadPart("editor",function(){w(a)})}function w(a){CKEDITOR.lang.load(a.config.language,a.config.defaultLanguage,function(b, 265a.activeShiftEnterMode=a.shiftEnterMode=a.blockless?CKEDITOR.ENTER_BR:c.shiftEnterMode;c.skin&&(CKEDITOR.skinName=c.skin);a.fireOnce("configLoaded");a.dataProcessor=new CKEDITOR.htmlDataProcessor(a);a.filter=a.activeFilter=new CKEDITOR.filter(a);n(a)});b&&null!=b.customConfig&&(a.config.customConfig=b.customConfig);h(a)||a.fireOnce("customConfigLoaded")}function n(a){CKEDITOR.skin.loadPart("editor",function(){q(a)})}function q(a){CKEDITOR.lang.load(a.config.language,a.config.defaultLanguage,function(b,
246c){var d=a.config.title;a.langCode=b;a.lang=CKEDITOR.tools.prototypedCopy(c);a.title="string"==typeof d||!1===d?d:[a.lang.editor,a.name].join(", ");a.config.contentsLangDirection||(a.config.contentsLangDirection=a.elementMode==CKEDITOR.ELEMENT_MODE_INLINE?a.element.getDirection(1):a.lang.dir);a.fire("langLoaded");f(a)})}function f(a){a.getStylesSet(function(b){a.once("loaded",function(){a.fire("stylesSet",{styles:b})},null,null,1);x(a)})}function x(a){var b=a.config,c=b.plugins,d=b.extraPlugins,e= 266c){var d=a.config.title;a.langCode=b;a.lang=CKEDITOR.tools.prototypedCopy(c);a.title="string"==typeof d||!1===d?d:[a.lang.editor,a.name].join(", ");a.config.contentsLangDirection||(a.config.contentsLangDirection=a.elementMode==CKEDITOR.ELEMENT_MODE_INLINE?a.element.getDirection(1):a.lang.dir);a.fire("langLoaded");f(a)})}function f(a){a.getStylesSet(function(b){a.once("loaded",function(){a.fire("stylesSet",{styles:b})},null,null,1);D(a)})}function D(a){var b=a.config,c=b.plugins,d=b.extraPlugins,e=
247b.removePlugins;if(d)var h=new RegExp("(?:^|,)(?:"+d.replace(/\s*,\s*/g,"|")+")(?\x3d,|$)","g"),c=c.replace(h,""),c=c+(","+d);if(e)var p=new RegExp("(?:^|,)(?:"+e.replace(/\s*,\s*/g,"|")+")(?\x3d,|$)","g"),c=c.replace(p,"");CKEDITOR.env.air&&(c+=",adobeair");CKEDITOR.plugins.load(c.split(","),function(c){var d=[],h=[],e=[];a.plugins=c;for(var g in c){var f=c[g],z=f.lang,l=null,k=f.requires,v;CKEDITOR.tools.isArray(k)&&(k=k.join(","));if(k&&(v=k.match(p)))for(;k=v.pop();)CKEDITOR.error("editor-plugin-required", 267b.removePlugins;if(d)var f=new RegExp("(?:^|,)(?:"+d.replace(/\s*,\s*/g,"|")+")(?\x3d,|$)","g"),c=c.replace(f,""),c=c+(","+d);if(e)var g=new RegExp("(?:^|,)(?:"+e.replace(/\s*,\s*/g,"|")+")(?\x3d,|$)","g"),c=c.replace(g,"");CKEDITOR.env.air&&(c+=",adobeair");CKEDITOR.plugins.load(c.split(","),function(c){var d=[],e=[],f=[];a.plugins=c;for(var l in c){var r=c[l],k=r.lang,h=null,O=r.requires,p;CKEDITOR.tools.isArray(O)&&(O=O.join(","));if(O&&(p=O.match(g)))for(;O=p.pop();)CKEDITOR.error("editor-plugin-required",
248{plugin:k.replace(",",""),requiredBy:g});z&&!a.lang[g]&&(z.split&&(z=z.split(",")),0<=CKEDITOR.tools.indexOf(z,a.langCode)?l=a.langCode:(l=a.langCode.replace(/-.*/,""),l=l!=a.langCode&&0<=CKEDITOR.tools.indexOf(z,l)?l:0<=CKEDITOR.tools.indexOf(z,"en")?"en":z[0]),f.langEntries&&f.langEntries[l]?(a.lang[g]=f.langEntries[l],l=null):e.push(CKEDITOR.getUrl(f.path+"lang/"+l+".js")));h.push(l);d.push(f)}CKEDITOR.scriptLoader.load(e,function(){for(var c=["beforeInit","init","afterInit"],e=0;e<c.length;e++)for(var p= 268{plugin:O.replace(",",""),requiredBy:l});k&&!a.lang[l]&&(k.split&&(k=k.split(",")),0<=CKEDITOR.tools.indexOf(k,a.langCode)?h=a.langCode:(h=a.langCode.replace(/-.*/,""),h=h!=a.langCode&&0<=CKEDITOR.tools.indexOf(k,h)?h:0<=CKEDITOR.tools.indexOf(k,"en")?"en":k[0]),r.langEntries&&r.langEntries[h]?(a.lang[l]=r.langEntries[h],h=null):f.push(CKEDITOR.getUrl(r.path+"lang/"+h+".js")));e.push(h);d.push(r)}CKEDITOR.scriptLoader.load(f,function(){for(var c=["beforeInit","init","afterInit"],f=0;f<c.length;f++)for(var l=
2490;p<d.length;p++){var m=d[p];0===e&&h[p]&&m.lang&&m.langEntries&&(a.lang[m.name]=m.langEntries[h[p]]);if(m[c[e]])m[c[e]](a)}a.fireOnce("pluginsLoaded");b.keystrokes&&a.setKeystroke(a.config.keystrokes);for(p=0;p<a.config.blockedKeystrokes.length;p++)a.keystrokeHandler.blockedKeystrokes[a.config.blockedKeystrokes[p]]=1;a.status="loaded";a.fireOnce("loaded");CKEDITOR.fire("instanceLoaded",null,a)})})}function A(){var a=this.element;if(a&&this.elementMode!=CKEDITOR.ELEMENT_MODE_APPENDTO){var b=this.getData(); 2690;l<d.length;l++){var v=d[l];0===f&&e[l]&&v.lang&&v.langEntries&&(a.lang[v.name]=v.langEntries[e[l]]);if(v[c[f]])v[c[f]](a)}a.fireOnce("pluginsLoaded");b.keystrokes&&a.setKeystroke(a.config.keystrokes);for(l=0;l<a.config.blockedKeystrokes.length;l++)a.keystrokeHandler.blockedKeystrokes[a.config.blockedKeystrokes[l]]=1;a.status="loaded";a.fireOnce("loaded");CKEDITOR.fire("instanceLoaded",null,a)})})}function w(){var a=this.element;if(a&&this.elementMode!=CKEDITOR.ELEMENT_MODE_APPENDTO){var b=this.getData();
250this.config.htmlEncodeOutput&&(b=CKEDITOR.tools.htmlEncode(b));a.is("textarea")?a.setValue(b):a.setHtml(b);return!0}return!1}a.prototype=CKEDITOR.editor.prototype;CKEDITOR.editor=a;var u=0,B={};CKEDITOR.tools.extend(CKEDITOR.editor.prototype,{addCommand:function(a,b){b.name=a.toLowerCase();var c=new CKEDITOR.command(this,b);this.mode&&e(this,c);return this.commands[a]=c},_attachToForm:function(){function a(b){c.updateElement();c._.required&&!d.getValue()&&!1===c.fire("required")&&b.data.preventDefault()} 270this.config.htmlEncodeOutput&&(b=CKEDITOR.tools.htmlEncode(b));a.is("textarea")?a.setValue(b):a.setHtml(b);return!0}return!1}function A(a,b){function c(a){var b=a.startContainer,d=a.endContainer;return b.is&&(b.is("tr")||b.is("td")&&b.equals(d)&&a.endOffset===b.getChildCount())?!0:!1}function d(a){var b=a.startContainer;return b.is("tr")?a.cloneContents():b.clone(!0)}for(var e=new CKEDITOR.dom.documentFragment,f,g,k,h=0;h<a.length;h++){var u=a[h],y=u.startContainer.getAscendant("tr",!0);c(u)?(f||
251function b(a){return!!(a&&a.call&&a.apply)}var c=this,d=c.element,e=new CKEDITOR.dom.element(d.$.form);d.is("textarea")&&e&&(e.on("submit",a),b(e.$.submit)&&(e.$.submit=CKEDITOR.tools.override(e.$.submit,function(b){return function(){a();b.apply?b.apply(this):b()}})),c.on("destroy",function(){e.removeListener("submit",a)}))},destroy:function(a){this.fire("beforeDestroy");!a&&A.call(this);this.editable(null);this.filter&&(this.filter.destroy(),delete this.filter);delete this.activeFilter;this.status= 271(f=y.getAscendant("table").clone(),f.append(y.getAscendant({thead:1,tbody:1,tfoot:1}).clone()),e.append(f),f=f.findOne("thead, tbody, tfoot")),g&&g.equals(y)||(g=y,k=y.clone(),f.append(k)),k.append(d(u))):e.append(u.cloneContents())}return f?e:b.getHtmlFromRange(a[0])}a.prototype=CKEDITOR.editor.prototype;CKEDITOR.editor=a;var G=0,x={};CKEDITOR.tools.extend(CKEDITOR.editor.prototype,{addCommand:function(a,b){b.name=a.toLowerCase();var c=new CKEDITOR.command(this,b);this.mode&&e(this,c);return this.commands[a]=
252"destroyed";this.fire("destroy");this.removeAllListeners();CKEDITOR.remove(this);CKEDITOR.fire("instanceDestroyed",null,this)},elementPath:function(a){if(!a){a=this.getSelection();if(!a)return null;a=a.getStartElement()}return a?new CKEDITOR.dom.elementPath(a,this.editable()):null},createRange:function(){var a=this.editable();return a?new CKEDITOR.dom.range(a):null},execCommand:function(a,b){var c=this.getCommand(a),d={name:a,commandData:b,command:c};return c&&c.state!=CKEDITOR.TRISTATE_DISABLED&& 272c},_attachToForm:function(){function a(b){c.updateElement();c._.required&&!d.getValue()&&!1===c.fire("required")&&b.data.preventDefault()}function b(a){return!!(a&&a.call&&a.apply)}var c=this,d=c.element,e=new CKEDITOR.dom.element(d.$.form);d.is("textarea")&&e&&(e.on("submit",a),b(e.$.submit)&&(e.$.submit=CKEDITOR.tools.override(e.$.submit,function(b){return function(){a();b.apply?b.apply(this):b()}})),c.on("destroy",function(){e.removeListener("submit",a)}))},destroy:function(a){this.fire("beforeDestroy");
253!1!==this.fire("beforeCommandExec",d)&&(d.returnValue=c.exec(d.commandData),!c.async&&!1!==this.fire("afterCommandExec",d))?d.returnValue:!1},getCommand:function(a){return this.commands[a]},getData:function(a){!a&&this.fire("beforeGetData");var b=this._.data;"string"!=typeof b&&(b=(b=this.element)&&this.elementMode==CKEDITOR.ELEMENT_MODE_REPLACE?b.is("textarea")?b.getValue():b.getHtml():"");b={dataValue:b};!a&&this.fire("getData",b);return b.dataValue},getSnapshot:function(){var a=this.fire("getSnapshot"); 273!a&&w.call(this);this.editable(null);this.filter&&(this.filter.destroy(),delete this.filter);delete this.activeFilter;this.status="destroyed";this.fire("destroy");this.removeAllListeners();CKEDITOR.remove(this);CKEDITOR.fire("instanceDestroyed",null,this)},elementPath:function(a){if(!a){a=this.getSelection();if(!a)return null;a=a.getStartElement()}return a?new CKEDITOR.dom.elementPath(a,this.editable()):null},createRange:function(){var a=this.editable();return a?new CKEDITOR.dom.range(a):null},execCommand:function(a,
254"string"!=typeof a&&(a=(a=this.element)&&this.elementMode==CKEDITOR.ELEMENT_MODE_REPLACE?a.is("textarea")?a.getValue():a.getHtml():"");return a},loadSnapshot:function(a){this.fire("loadSnapshot",a)},setData:function(a,b,c){var d=!0,e=b;b&&"object"==typeof b&&(c=b.internal,e=b.callback,d=!b.noSnapshot);!c&&d&&this.fire("saveSnapshot");if(e||!c)this.once("dataReady",function(a){!c&&d&&this.fire("saveSnapshot");e&&e.call(a.editor)});a={dataValue:a};!c&&this.fire("setData",a);this._.data=a.dataValue; 274b){var c=this.getCommand(a),d={name:a,commandData:b||{},command:c};return c&&c.state!=CKEDITOR.TRISTATE_DISABLED&&!1!==this.fire("beforeCommandExec",d)&&(d.returnValue=c.exec(d.commandData),!c.async&&!1!==this.fire("afterCommandExec",d))?d.returnValue:!1},getCommand:function(a){return this.commands[a]},getData:function(a){!a&&this.fire("beforeGetData");var b=this._.data;"string"!=typeof b&&(b=(b=this.element)&&this.elementMode==CKEDITOR.ELEMENT_MODE_REPLACE?b.is("textarea")?b.getValue():b.getHtml():
255!c&&this.fire("afterSetData",a)},setReadOnly:function(a){a=null==a||a;this.readOnly!=a&&(this.readOnly=a,this.keystrokeHandler.blockedKeystrokes[8]=+a,this.editable().setReadOnly(a),this.fire("readOnly"))},insertHtml:function(a,b,c){this.fire("insertHtml",{dataValue:a,mode:b,range:c})},insertText:function(a){this.fire("insertText",a)},insertElement:function(a){this.fire("insertElement",a)},getSelectedHtml:function(a){var b=this.editable(),c=this.getSelection(),c=c&&c.getRanges();if(!b||!c||0===c.length)return null; 275"");b={dataValue:b};!a&&this.fire("getData",b);return b.dataValue},getSnapshot:function(){var a=this.fire("getSnapshot");"string"!=typeof a&&(a=(a=this.element)&&this.elementMode==CKEDITOR.ELEMENT_MODE_REPLACE?a.is("textarea")?a.getValue():a.getHtml():"");return a},loadSnapshot:function(a){this.fire("loadSnapshot",a)},setData:function(a,b,c){var d=!0,e=b;b&&"object"==typeof b&&(c=b.internal,e=b.callback,d=!b.noSnapshot);!c&&d&&this.fire("saveSnapshot");if(e||!c)this.once("dataReady",function(a){!c&&
256for(var d=new CKEDITOR.dom.documentFragment,e,h,p,m=0;m<c.length;m++){var g=c[m],r=g.startContainer;r.getName&&"tr"==r.getName()?(e||(e=r.getAscendant("table").clone(),e.append(r.getAscendant("tbody").clone()),d.append(e),e=e.findOne("tbody")),h&&h.equals(r)||(h=r,p=r.clone(),e.append(p)),p.append(g.cloneContents())):d.append(g.cloneContents())}b=e?d:b.getHtmlFromRange(c[0]);return a?b.getHtml():b},extractSelectedHtml:function(a,b){var c=this.editable(),d=this.getSelection().getRanges();if(!c||0=== 276d&&this.fire("saveSnapshot");e&&e.call(a.editor)});a={dataValue:a};!c&&this.fire("setData",a);this._.data=a.dataValue;!c&&this.fire("afterSetData",a)},setReadOnly:function(a){a=null==a||a;this.readOnly!=a&&(this.readOnly=a,this.keystrokeHandler.blockedKeystrokes[8]=+a,this.editable().setReadOnly(a),this.fire("readOnly"))},insertHtml:function(a,b,c){this.fire("insertHtml",{dataValue:a,mode:b,range:c})},insertText:function(a){this.fire("insertText",a)},insertElement:function(a){this.fire("insertElement",
257d.length)return null;d=d[0];c=c.extractHtmlFromRange(d,b);b||this.getSelection().selectRanges([d]);return a?c.getHtml():c},focus:function(){this.fire("beforeFocus")},checkDirty:function(){return"ready"==this.status&&this._.previousValue!==this.getSnapshot()},resetDirty:function(){this._.previousValue=this.getSnapshot()},updateElement:function(){return A.call(this)},setKeystroke:function(){for(var a=this.keystrokeHandler.keystrokes,b=CKEDITOR.tools.isArray(arguments[0])?arguments[0]:[[].slice.call(arguments, 277a)},getSelectedHtml:function(a){var b=this.editable(),c=this.getSelection(),c=c&&c.getRanges();if(!b||!c||0===c.length)return null;b=A(c,b);return a?b.getHtml():b},extractSelectedHtml:function(a,b){var c=this.editable(),d=this.getSelection().getRanges(),e=new CKEDITOR.dom.documentFragment,f;if(!c||0===d.length)return null;for(f=0;f<d.length;f++)e.append(c.extractHtmlFromRange(d[f],b));b||this.getSelection().selectRanges([d[0]]);return a?e.getHtml():e},focus:function(){this.fire("beforeFocus")},checkDirty:function(){return"ready"==
2580)],c,d,e=b.length;e--;)c=b[e],d=0,CKEDITOR.tools.isArray(c)&&(d=c[1],c=c[0]),d?a[c]=d:delete a[c]},addFeature:function(a){return this.filter.addFeature(a)},setActiveFilter:function(a){a||(a=this.filter);this.activeFilter!==a&&(this.activeFilter=a,this.fire("activeFilterChange"),a===this.filter?this.setActiveEnterMode(null,null):this.setActiveEnterMode(a.getAllowedEnterMode(this.enterMode),a.getAllowedEnterMode(this.shiftEnterMode,!0)))},setActiveEnterMode:function(a,b){a=a?this.blockless?CKEDITOR.ENTER_BR: 278this.status&&this._.previousValue!==this.getSnapshot()},resetDirty:function(){this._.previousValue=this.getSnapshot()},updateElement:function(){return w.call(this)},setKeystroke:function(){for(var a=this.keystrokeHandler.keystrokes,b=CKEDITOR.tools.isArray(arguments[0])?arguments[0]:[[].slice.call(arguments,0)],c,d,e=b.length;e--;)c=b[e],d=0,CKEDITOR.tools.isArray(c)&&(d=c[1],c=c[0]),d?a[c]=d:delete a[c]},getCommandKeystroke:function(a){if(a="string"===typeof a?this.getCommand(a):a){var b=CKEDITOR.tools.object.findKey(this.commands,
259a:this.enterMode;b=b?this.blockless?CKEDITOR.ENTER_BR:b:this.shiftEnterMode;if(this.activeEnterMode!=a||this.activeShiftEnterMode!=b)this.activeEnterMode=a,this.activeShiftEnterMode=b,this.fire("activeEnterModeChange")},showNotification:function(a){alert(a)}})})();CKEDITOR.ELEMENT_MODE_NONE=0;CKEDITOR.ELEMENT_MODE_REPLACE=1;CKEDITOR.ELEMENT_MODE_APPENDTO=2;CKEDITOR.ELEMENT_MODE_INLINE=3;CKEDITOR.htmlParser=function(){this._={htmlPartsRegex:/<(?:(?:\/([^>]+)>)|(?:!--([\S|\s]*?)--\x3e)|(?:([^\/\s>]+)((?:\s+[\w\-:.]+(?:\s*=\s*?(?:(?:"[^"]*")|(?:'[^']*')|[^\s"'\/>]+))?)*)[\S\s]*?(\/?)>))/g}}; 279a),c=this.keystrokeHandler.keystrokes,d;if(a.fakeKeystroke)return a.fakeKeystroke;for(d in c)if(c.hasOwnProperty(d)&&c[d]==b)return d}return null},addFeature:function(a){return this.filter.addFeature(a)},setActiveFilter:function(a){a||(a=this.filter);this.activeFilter!==a&&(this.activeFilter=a,this.fire("activeFilterChange"),a===this.filter?this.setActiveEnterMode(null,null):this.setActiveEnterMode(a.getAllowedEnterMode(this.enterMode),a.getAllowedEnterMode(this.shiftEnterMode,!0)))},setActiveEnterMode:function(a,
260(function(){var a=/([\w\-:.]+)(?:(?:\s*=\s*(?:(?:"([^"]*)")|(?:'([^']*)')|([^\s>]+)))|(?=\s|$))/g,d={checked:1,compact:1,declare:1,defer:1,disabled:1,ismap:1,multiple:1,nohref:1,noresize:1,noshade:1,nowrap:1,readonly:1,selected:1};CKEDITOR.htmlParser.prototype={onTagOpen:function(){},onTagClose:function(){},onText:function(){},onCDATA:function(){},onComment:function(){},parse:function(b){for(var c,e,g=0,l;c=this._.htmlPartsRegex.exec(b);){e=c.index;if(e>g)if(g=b.substring(g,e),l)l.push(g);else this.onText(g); 280b){a=a?this.blockless?CKEDITOR.ENTER_BR:a:this.enterMode;b=b?this.blockless?CKEDITOR.ENTER_BR:b:this.shiftEnterMode;if(this.activeEnterMode!=a||this.activeShiftEnterMode!=b)this.activeEnterMode=a,this.activeShiftEnterMode=b,this.fire("activeEnterModeChange")},showNotification:function(a){alert(a)}})})();CKEDITOR.ELEMENT_MODE_NONE=0;CKEDITOR.ELEMENT_MODE_REPLACE=1;CKEDITOR.ELEMENT_MODE_APPENDTO=2;CKEDITOR.ELEMENT_MODE_INLINE=3;CKEDITOR.htmlParser=function(){this._={htmlPartsRegex:/<(?:(?:\/([^>]+)>)|(?:!--([\S|\s]*?)--\x3e)|(?:([^\/\s>]+)((?:\s+[\w\-:.]+(?:\s*=\s*?(?:(?:"[^"]*")|(?:'[^']*')|[^\s"'\/>]+))?)*)[\S\s]*?(\/?)>))/g}};
261g=this._.htmlPartsRegex.lastIndex;if(e=c[1])if(e=e.toLowerCase(),l&&CKEDITOR.dtd.$cdata[e]&&(this.onCDATA(l.join("")),l=null),!l){this.onTagClose(e);continue}if(l)l.push(c[0]);else if(e=c[3]){if(e=e.toLowerCase(),!/="/.test(e)){var k={},n,w=c[4];c=!!c[5];if(w)for(;n=a.exec(w);){var f=n[1].toLowerCase();n=n[2]||n[3]||n[4]||"";k[f]=!n&&d[f]?f:CKEDITOR.tools.htmlDecodeAttr(n)}this.onTagOpen(e,k,c);!l&&CKEDITOR.dtd.$cdata[e]&&(l=[])}}else if(e=c[2])this.onComment(e)}if(b.length>g)this.onText(b.substring(g, 281(function(){var a=/([\w\-:.]+)(?:(?:\s*=\s*(?:(?:"([^"]*)")|(?:'([^']*)')|([^\s>]+)))|(?=\s|$))/g,d={checked:1,compact:1,declare:1,defer:1,disabled:1,ismap:1,multiple:1,nohref:1,noresize:1,noshade:1,nowrap:1,readonly:1,selected:1};CKEDITOR.htmlParser.prototype={onTagOpen:function(){},onTagClose:function(){},onText:function(){},onCDATA:function(){},onComment:function(){},parse:function(b){for(var c,e,g=0,h;c=this._.htmlPartsRegex.exec(b);){e=c.index;if(e>g)if(g=b.substring(g,e),h)h.push(g);else this.onText(g);
282g=this._.htmlPartsRegex.lastIndex;if(e=c[1])if(e=e.toLowerCase(),h&&CKEDITOR.dtd.$cdata[e]&&(this.onCDATA(h.join("")),h=null),!h){this.onTagClose(e);continue}if(h)h.push(c[0]);else if(e=c[3]){if(e=e.toLowerCase(),!/="/.test(e)){var k={},n,q=c[4];c=!!c[5];if(q)for(;n=a.exec(q);){var f=n[1].toLowerCase();n=n[2]||n[3]||n[4]||"";k[f]=!n&&d[f]?f:CKEDITOR.tools.htmlDecodeAttr(n)}this.onTagOpen(e,k,c);!h&&CKEDITOR.dtd.$cdata[e]&&(h=[])}}else if(e=c[2])this.onComment(e)}if(b.length>g)this.onText(b.substring(g,
262b.length))}}})(); 283b.length))}}})();
263CKEDITOR.htmlParser.basicWriter=CKEDITOR.tools.createClass({$:function(){this._={output:[]}},proto:{openTag:function(a){this._.output.push("\x3c",a)},openTagClose:function(a,d){d?this._.output.push(" /\x3e"):this._.output.push("\x3e")},attribute:function(a,d){"string"==typeof d&&(d=CKEDITOR.tools.htmlEncodeAttr(d));this._.output.push(" ",a,'\x3d"',d,'"')},closeTag:function(a){this._.output.push("\x3c/",a,"\x3e")},text:function(a){this._.output.push(a)},comment:function(a){this._.output.push("\x3c!--",a, 284CKEDITOR.htmlParser.basicWriter=CKEDITOR.tools.createClass({$:function(){this._={output:[]}},proto:{openTag:function(a){this._.output.push("\x3c",a)},openTagClose:function(a,d){d?this._.output.push(" /\x3e"):this._.output.push("\x3e")},attribute:function(a,d){"string"==typeof d&&(d=CKEDITOR.tools.htmlEncodeAttr(d));this._.output.push(" ",a,'\x3d"',d,'"')},closeTag:function(a){this._.output.push("\x3c/",a,"\x3e")},text:function(a){this._.output.push(a)},comment:function(a){this._.output.push("\x3c!--",a,
264"--\x3e")},write:function(a){this._.output.push(a)},reset:function(){this._.output=[];this._.indent=!1},getHtml:function(a){var d=this._.output.join("");a&&this.reset();return d}}});"use strict"; 285"--\x3e")},write:function(a){this._.output.push(a)},reset:function(){this._.output=[];this._.indent=!1},getHtml:function(a){var d=this._.output.join("");a&&this.reset();return d}}});"use strict";
@@ -269,225 +290,235 @@ CKEDITOR.htmlParser.comment.prototype=CKEDITOR.tools.extend(new CKEDITOR.htmlPar
269(function(){CKEDITOR.htmlParser.text=function(a){this.value=a;this._={isBlockLike:!1}};CKEDITOR.htmlParser.text.prototype=CKEDITOR.tools.extend(new CKEDITOR.htmlParser.node,{type:CKEDITOR.NODE_TEXT,filter:function(a,d){if(!(this.value=a.onText(d,this.value,this)))return this.remove(),!1},writeHtml:function(a,d){d&&this.filter(d);a.text(this.value)}})})();"use strict"; 290(function(){CKEDITOR.htmlParser.text=function(a){this.value=a;this._={isBlockLike:!1}};CKEDITOR.htmlParser.text.prototype=CKEDITOR.tools.extend(new CKEDITOR.htmlParser.node,{type:CKEDITOR.NODE_TEXT,filter:function(a,d){if(!(this.value=a.onText(d,this.value,this)))return this.remove(),!1},writeHtml:function(a,d){d&&this.filter(d);a.text(this.value)}})})();"use strict";
270(function(){CKEDITOR.htmlParser.cdata=function(a){this.value=a};CKEDITOR.htmlParser.cdata.prototype=CKEDITOR.tools.extend(new CKEDITOR.htmlParser.node,{type:CKEDITOR.NODE_TEXT,filter:function(){},writeHtml:function(a){a.write(this.value)}})})();"use strict";CKEDITOR.htmlParser.fragment=function(){this.children=[];this.parent=null;this._={isBlockLike:!0,hasInlineStarted:!1}}; 291(function(){CKEDITOR.htmlParser.cdata=function(a){this.value=a};CKEDITOR.htmlParser.cdata.prototype=CKEDITOR.tools.extend(new CKEDITOR.htmlParser.node,{type:CKEDITOR.NODE_TEXT,filter:function(){},writeHtml:function(a){a.write(this.value)}})})();"use strict";CKEDITOR.htmlParser.fragment=function(){this.children=[];this.parent=null;this._={isBlockLike:!0,hasInlineStarted:!1}};
271(function(){function a(a){return a.attributes["data-cke-survive"]?!1:"a"==a.name&&a.attributes.href||CKEDITOR.dtd.$removeEmpty[a.name]}var d=CKEDITOR.tools.extend({table:1,ul:1,ol:1,dl:1},CKEDITOR.dtd.table,CKEDITOR.dtd.ul,CKEDITOR.dtd.ol,CKEDITOR.dtd.dl),b={ol:1,ul:1},c=CKEDITOR.tools.extend({},{html:1},CKEDITOR.dtd.html,CKEDITOR.dtd.body,CKEDITOR.dtd.head,{style:1,script:1}),e={ul:"li",ol:"li",dl:"dd",table:"tbody",tbody:"tr",thead:"tr",tfoot:"tr",tr:"td"};CKEDITOR.htmlParser.fragment.fromHtml= 292(function(){function a(a){return a.attributes["data-cke-survive"]?!1:"a"==a.name&&a.attributes.href||CKEDITOR.dtd.$removeEmpty[a.name]}var d=CKEDITOR.tools.extend({table:1,ul:1,ol:1,dl:1},CKEDITOR.dtd.table,CKEDITOR.dtd.ul,CKEDITOR.dtd.ol,CKEDITOR.dtd.dl),b={ol:1,ul:1},c=CKEDITOR.tools.extend({},{html:1},CKEDITOR.dtd.html,CKEDITOR.dtd.body,CKEDITOR.dtd.head,{style:1,script:1}),e={ul:"li",ol:"li",dl:"dd",table:"tbody",tbody:"tr",thead:"tr",tfoot:"tr",tr:"td"};CKEDITOR.htmlParser.fragment.fromHtml=
272function(g,l,k){function n(a){var b;if(0<y.length)for(var c=0;c<y.length;c++){var d=y[c],h=d.name,e=CKEDITOR.dtd[h],g=t.name&&CKEDITOR.dtd[t.name];g&&!g[h]||a&&e&&!e[a]&&CKEDITOR.dtd[a]?h==t.name&&(x(t,t.parent,1),c--):(b||(w(),b=1),d=d.clone(),d.parent=t,t=d,y.splice(c,1),c--)}}function w(){for(;F.length;)x(F.shift(),t)}function f(a){if(a._.isBlockLike&&"pre"!=a.name&&"textarea"!=a.name){var b=a.children.length,c=a.children[b-1],d;c&&c.type==CKEDITOR.NODE_TEXT&&((d=CKEDITOR.tools.rtrim(c.value))? 293function(g,h,k){function n(a){var b;if(0<m.length)for(var c=0;c<m.length;c++){var d=m[c],e=d.name,f=CKEDITOR.dtd[e],l=z.name&&CKEDITOR.dtd[z.name];l&&!l[e]||a&&f&&!f[a]&&CKEDITOR.dtd[a]?e==z.name&&(D(z,z.parent,1),c--):(b||(q(),b=1),d=d.clone(),d.parent=z,z=d,m.splice(c,1),c--)}}function q(){for(;K.length;)D(K.shift(),z)}function f(a){if(a._.isBlockLike&&"pre"!=a.name&&"textarea"!=a.name){var b=a.children.length,c=a.children[b-1],d;c&&c.type==CKEDITOR.NODE_TEXT&&((d=CKEDITOR.tools.rtrim(c.value))?
273c.value=d:a.children.length=b-1)}}function x(b,c,d){c=c||t||q;var e=t;void 0===b.previous&&(A(c,b)&&(t=c,B.onTagOpen(k,{}),b.returnPoint=c=t),f(b),a(b)&&!b.children.length||c.add(b),"pre"==b.name&&(h=!1),"textarea"==b.name&&(z=!1));b.returnPoint?(t=b.returnPoint,delete b.returnPoint):t=d?c:e}function A(a,b){if((a==q||"body"==a.name)&&k&&(!a.name||CKEDITOR.dtd[a.name][k])){var c,d;return(c=b.attributes&&(d=b.attributes["data-cke-real-element-type"])?d:b.name)&&c in CKEDITOR.dtd.$inline&&!(c in CKEDITOR.dtd.head)&& 294c.value=d:a.children.length=b-1)}}function D(b,c,d){c=c||z||x;var e=z;void 0===b.previous&&(w(c,b)&&(z=c,G.onTagOpen(k,{}),b.returnPoint=c=z),f(b),a(b)&&!b.children.length||c.add(b),"pre"==b.name&&(l=!1),"textarea"==b.name&&(I=!1));b.returnPoint?(z=b.returnPoint,delete b.returnPoint):z=d?c:e}function w(a,b){if((a==x||"body"==a.name)&&k&&(!a.name||CKEDITOR.dtd[a.name][k])){var c,d;return(c=b.attributes&&(d=b.attributes["data-cke-real-element-type"])?d:b.name)&&c in CKEDITOR.dtd.$inline&&!(c in CKEDITOR.dtd.head)&&
274!b.isOrphan||b.type==CKEDITOR.NODE_TEXT}}function u(a,b){return a in CKEDITOR.dtd.$listItem||a in CKEDITOR.dtd.$tableContent?a==b||"dt"==a&&"dd"==b||"dd"==a&&"dt"==b:!1}var B=new CKEDITOR.htmlParser,q=l instanceof CKEDITOR.htmlParser.element?l:"string"==typeof l?new CKEDITOR.htmlParser.element(l):new CKEDITOR.htmlParser.fragment,y=[],F=[],t=q,z="textarea"==q.name,h="pre"==q.name;B.onTagOpen=function(e,m,g,f){m=new CKEDITOR.htmlParser.element(e,m);m.isUnknown&&g&&(m.isEmpty=!0);m.isOptionalClose=f; 295!b.isOrphan||b.type==CKEDITOR.NODE_TEXT}}function A(a,b){return a in CKEDITOR.dtd.$listItem||a in CKEDITOR.dtd.$tableContent?a==b||"dt"==a&&"dd"==b||"dd"==a&&"dt"==b:!1}var G=new CKEDITOR.htmlParser,x=h instanceof CKEDITOR.htmlParser.element?h:"string"==typeof h?new CKEDITOR.htmlParser.element(h):new CKEDITOR.htmlParser.fragment,m=[],K=[],z=x,I="textarea"==x.name,l="pre"==x.name;G.onTagOpen=function(e,f,g,k){f=new CKEDITOR.htmlParser.element(e,f);f.isUnknown&&g&&(f.isEmpty=!0);f.isOptionalClose=k;
275if(a(m))y.push(m);else{if("pre"==e)h=!0;else{if("br"==e&&h){t.add(new CKEDITOR.htmlParser.text("\n"));return}"textarea"==e&&(z=!0)}if("br"==e)F.push(m);else{for(;!(f=(g=t.name)?CKEDITOR.dtd[g]||(t._.isBlockLike?CKEDITOR.dtd.div:CKEDITOR.dtd.span):c,m.isUnknown||t.isUnknown||f[e]);)if(t.isOptionalClose)B.onTagClose(g);else if(e in b&&g in b)g=t.children,(g=g[g.length-1])&&"li"==g.name||x(g=new CKEDITOR.htmlParser.element("li"),t),!m.returnPoint&&(m.returnPoint=t),t=g;else if(e in CKEDITOR.dtd.$listItem&& 296if(a(f))m.push(f);else{if("pre"==e)l=!0;else{if("br"==e&&l){z.add(new CKEDITOR.htmlParser.text("\n"));return}"textarea"==e&&(I=!0)}if("br"==e)K.push(f);else{for(;!(k=(g=z.name)?CKEDITOR.dtd[g]||(z._.isBlockLike?CKEDITOR.dtd.div:CKEDITOR.dtd.span):c,f.isUnknown||z.isUnknown||k[e]);)if(z.isOptionalClose)G.onTagClose(g);else if(e in b&&g in b)g=z.children,(g=g[g.length-1])&&"li"==g.name||D(g=new CKEDITOR.htmlParser.element("li"),z),!f.returnPoint&&(f.returnPoint=z),z=g;else if(e in CKEDITOR.dtd.$listItem&&
276!u(e,g))B.onTagOpen("li"==e?"ul":"dl",{},0,1);else if(g in d&&!u(e,g))!m.returnPoint&&(m.returnPoint=t),t=t.parent;else if(g in CKEDITOR.dtd.$inline&&y.unshift(t),t.parent)x(t,t.parent,1);else{m.isOrphan=1;break}n(e);w();m.parent=t;m.isEmpty?x(m):t=m}}};B.onTagClose=function(a){for(var b=y.length-1;0<=b;b--)if(a==y[b].name){y.splice(b,1);return}for(var c=[],d=[],h=t;h!=q&&h.name!=a;)h._.isBlockLike||d.unshift(h),c.push(h),h=h.returnPoint||h.parent;if(h!=q){for(b=0;b<c.length;b++){var e=c[b];x(e,e.parent)}t= 297!A(e,g))G.onTagOpen("li"==e?"ul":"dl",{},0,1);else if(g in d&&!A(e,g))!f.returnPoint&&(f.returnPoint=z),z=z.parent;else if(g in CKEDITOR.dtd.$inline&&m.unshift(z),z.parent)D(z,z.parent,1);else{f.isOrphan=1;break}n(e);q();f.parent=z;f.isEmpty?D(f):z=f}}};G.onTagClose=function(a){for(var b=m.length-1;0<=b;b--)if(a==m[b].name){m.splice(b,1);return}for(var c=[],d=[],e=z;e!=x&&e.name!=a;)e._.isBlockLike||d.unshift(e),c.push(e),e=e.returnPoint||e.parent;if(e!=x){for(b=0;b<c.length;b++){var f=c[b];D(f,f.parent)}z=
277h;h._.isBlockLike&&w();x(h,h.parent);h==t&&(t=t.parent);y=y.concat(d)}"body"==a&&(k=!1)};B.onText=function(a){if(!(t._.hasInlineStarted&&!F.length||h||z)&&(a=CKEDITOR.tools.ltrim(a),0===a.length))return;var b=t.name,g=b?CKEDITOR.dtd[b]||(t._.isBlockLike?CKEDITOR.dtd.div:CKEDITOR.dtd.span):c;if(!z&&!g["#"]&&b in d)B.onTagOpen(e[b]||""),B.onText(a);else{w();n();h||z||(a=a.replace(/[\t\r\n ]{2,}|[\t\r\n]/g," "));a=new CKEDITOR.htmlParser.text(a);if(A(t,a))this.onTagOpen(k,{},0,1);t.add(a)}};B.onCDATA= 298e;e._.isBlockLike&&q();D(e,e.parent);e==z&&(z=z.parent);m=m.concat(d)}"body"==a&&(k=!1)};G.onText=function(a){if(!(z._.hasInlineStarted&&!K.length||l||I)&&(a=CKEDITOR.tools.ltrim(a),0===a.length))return;var b=z.name,f=b?CKEDITOR.dtd[b]||(z._.isBlockLike?CKEDITOR.dtd.div:CKEDITOR.dtd.span):c;if(!I&&!f["#"]&&b in d)G.onTagOpen(e[b]||""),G.onText(a);else{q();n();l||I||(a=a.replace(/[\t\r\n ]{2,}|[\t\r\n]/g," "));a=new CKEDITOR.htmlParser.text(a);if(w(z,a))this.onTagOpen(k,{},0,1);z.add(a)}};G.onCDATA=
278function(a){t.add(new CKEDITOR.htmlParser.cdata(a))};B.onComment=function(a){w();n();t.add(new CKEDITOR.htmlParser.comment(a))};B.parse(g);for(w();t!=q;)x(t,t.parent,1);f(q);return q};CKEDITOR.htmlParser.fragment.prototype={type:CKEDITOR.NODE_DOCUMENT_FRAGMENT,add:function(a,b){isNaN(b)&&(b=this.children.length);var c=0<b?this.children[b-1]:null;if(c){if(a._.isBlockLike&&c.type==CKEDITOR.NODE_TEXT&&(c.value=CKEDITOR.tools.rtrim(c.value),0===c.value.length)){this.children.pop();this.add(a);return}c.next= 299function(a){z.add(new CKEDITOR.htmlParser.cdata(a))};G.onComment=function(a){q();n();z.add(new CKEDITOR.htmlParser.comment(a))};G.parse(g);for(q();z!=x;)D(z,z.parent,1);f(x);return x};CKEDITOR.htmlParser.fragment.prototype={type:CKEDITOR.NODE_DOCUMENT_FRAGMENT,add:function(a,b){isNaN(b)&&(b=this.children.length);var c=0<b?this.children[b-1]:null;if(c){if(a._.isBlockLike&&c.type==CKEDITOR.NODE_TEXT&&(c.value=CKEDITOR.tools.rtrim(c.value),0===c.value.length)){this.children.pop();this.add(a);return}c.next=
279a}a.previous=c;a.parent=this;this.children.splice(b,0,a);this._.hasInlineStarted||(this._.hasInlineStarted=a.type==CKEDITOR.NODE_TEXT||a.type==CKEDITOR.NODE_ELEMENT&&!a._.isBlockLike)},filter:function(a,b){b=this.getFilterContext(b);a.onRoot(b,this);this.filterChildren(a,!1,b)},filterChildren:function(a,b,c){if(this.childrenFilteredBy!=a.id){c=this.getFilterContext(c);if(b&&!this.parent)a.onRoot(c,this);this.childrenFilteredBy=a.id;for(b=0;b<this.children.length;b++)!1===this.children[b].filter(a, 300a}a.previous=c;a.parent=this;this.children.splice(b,0,a);this._.hasInlineStarted||(this._.hasInlineStarted=a.type==CKEDITOR.NODE_TEXT||a.type==CKEDITOR.NODE_ELEMENT&&!a._.isBlockLike)},filter:function(a,b){b=this.getFilterContext(b);a.onRoot(b,this);this.filterChildren(a,!1,b)},filterChildren:function(a,b,c){if(this.childrenFilteredBy!=a.id){c=this.getFilterContext(c);if(b&&!this.parent)a.onRoot(c,this);this.childrenFilteredBy=a.id;for(b=0;b<this.children.length;b++)!1===this.children[b].filter(a,
280c)&&b--}},writeHtml:function(a,b){b&&this.filter(b);this.writeChildrenHtml(a)},writeChildrenHtml:function(a,b,c){var d=this.getFilterContext();if(c&&!this.parent&&b)b.onRoot(d,this);b&&this.filterChildren(b,!1,d);b=0;c=this.children;for(d=c.length;b<d;b++)c[b].writeHtml(a)},forEach:function(a,b,c){if(!(c||b&&this.type!=b))var d=a(this);if(!1!==d){c=this.children;for(var e=0;e<c.length;e++)d=c[e],d.type==CKEDITOR.NODE_ELEMENT?d.forEach(a,b):b&&d.type!=b||a(d)}},getFilterContext:function(a){return a|| 301c)&&b--}},writeHtml:function(a,b){b&&this.filter(b);this.writeChildrenHtml(a)},writeChildrenHtml:function(a,b,c){var d=this.getFilterContext();if(c&&!this.parent&&b)b.onRoot(d,this);b&&this.filterChildren(b,!1,d);b=0;c=this.children;for(d=c.length;b<d;b++)c[b].writeHtml(a)},forEach:function(a,b,c){if(!(c||b&&this.type!=b))var d=a(this);if(!1!==d){c=this.children;for(var e=0;e<c.length;e++)d=c[e],d.type==CKEDITOR.NODE_ELEMENT?d.forEach(a,b):b&&d.type!=b||a(d)}},getFilterContext:function(a){return a||
281{}}}})();"use strict"; 302{}}}})();"use strict";
282(function(){function a(){this.rules=[]}function d(b,c,d,g){var l,k;for(l in c)(k=b[l])||(k=b[l]=new a),k.add(c[l],d,g)}CKEDITOR.htmlParser.filter=CKEDITOR.tools.createClass({$:function(b){this.id=CKEDITOR.tools.getNextNumber();this.elementNameRules=new a;this.attributeNameRules=new a;this.elementsRules={};this.attributesRules={};this.textRules=new a;this.commentRules=new a;this.rootRules=new a;b&&this.addRules(b,10)},proto:{addRules:function(a,c){var e;"number"==typeof c?e=c:c&&"priority"in c&&(e= 303(function(){function a(){this.rules=[]}function d(b,c,d,g){var h,k;for(h in c)(k=b[h])||(k=b[h]=new a),k.add(c[h],d,g)}CKEDITOR.htmlParser.filter=CKEDITOR.tools.createClass({$:function(b){this.id=CKEDITOR.tools.getNextNumber();this.elementNameRules=new a;this.attributeNameRules=new a;this.elementsRules={};this.attributesRules={};this.textRules=new a;this.commentRules=new a;this.rootRules=new a;b&&this.addRules(b,10)},proto:{addRules:function(a,c){var e;"number"==typeof c?e=c:c&&"priority"in c&&(e=
283c.priority);"number"!=typeof e&&(e=10);"object"!=typeof c&&(c={});a.elementNames&&this.elementNameRules.addMany(a.elementNames,e,c);a.attributeNames&&this.attributeNameRules.addMany(a.attributeNames,e,c);a.elements&&d(this.elementsRules,a.elements,e,c);a.attributes&&d(this.attributesRules,a.attributes,e,c);a.text&&this.textRules.add(a.text,e,c);a.comment&&this.commentRules.add(a.comment,e,c);a.root&&this.rootRules.add(a.root,e,c)},applyTo:function(a){a.filter(this)},onElementName:function(a,c){return this.elementNameRules.execOnName(a, 304c.priority);"number"!=typeof e&&(e=10);"object"!=typeof c&&(c={});a.elementNames&&this.elementNameRules.addMany(a.elementNames,e,c);a.attributeNames&&this.attributeNameRules.addMany(a.attributeNames,e,c);a.elements&&d(this.elementsRules,a.elements,e,c);a.attributes&&d(this.attributesRules,a.attributes,e,c);a.text&&this.textRules.add(a.text,e,c);a.comment&&this.commentRules.add(a.comment,e,c);a.root&&this.rootRules.add(a.root,e,c)},applyTo:function(a){a.filter(this)},onElementName:function(a,c){return this.elementNameRules.execOnName(a,
284c)},onAttributeName:function(a,c){return this.attributeNameRules.execOnName(a,c)},onText:function(a,c,d){return this.textRules.exec(a,c,d)},onComment:function(a,c,d){return this.commentRules.exec(a,c,d)},onRoot:function(a,c){return this.rootRules.exec(a,c)},onElement:function(a,c){for(var d=[this.elementsRules["^"],this.elementsRules[c.name],this.elementsRules.$],g,l=0;3>l;l++)if(g=d[l]){g=g.exec(a,c,this);if(!1===g)return null;if(g&&g!=c)return this.onNode(a,g);if(c.parent&&!c.name)break}return c}, 305c)},onAttributeName:function(a,c){return this.attributeNameRules.execOnName(a,c)},onText:function(a,c,d){return this.textRules.exec(a,c,d)},onComment:function(a,c,d){return this.commentRules.exec(a,c,d)},onRoot:function(a,c){return this.rootRules.exec(a,c)},onElement:function(a,c){for(var d=[this.elementsRules["^"],this.elementsRules[c.name],this.elementsRules.$],g,h=0;3>h;h++)if(g=d[h]){g=g.exec(a,c,this);if(!1===g)return null;if(g&&g!=c)return this.onNode(a,g);if(c.parent&&!c.name)break}return c},
285onNode:function(a,c){var d=c.type;return d==CKEDITOR.NODE_ELEMENT?this.onElement(a,c):d==CKEDITOR.NODE_TEXT?new CKEDITOR.htmlParser.text(this.onText(a,c.value)):d==CKEDITOR.NODE_COMMENT?new CKEDITOR.htmlParser.comment(this.onComment(a,c.value)):null},onAttribute:function(a,c,d,g){return(d=this.attributesRules[d])?d.exec(a,g,c,this):g}}});CKEDITOR.htmlParser.filterRulesGroup=a;a.prototype={add:function(a,c,d){this.rules.splice(this.findIndex(c),0,{value:a,priority:c,options:d})},addMany:function(a, 306onNode:function(a,c){var d=c.type;return d==CKEDITOR.NODE_ELEMENT?this.onElement(a,c):d==CKEDITOR.NODE_TEXT?new CKEDITOR.htmlParser.text(this.onText(a,c.value)):d==CKEDITOR.NODE_COMMENT?new CKEDITOR.htmlParser.comment(this.onComment(a,c.value)):null},onAttribute:function(a,c,d,g){return(d=this.attributesRules[d])?d.exec(a,g,c,this):g}}});CKEDITOR.htmlParser.filterRulesGroup=a;a.prototype={add:function(a,c,d){this.rules.splice(this.findIndex(c),0,{value:a,priority:c,options:d})},addMany:function(a,
286c,d){for(var g=[this.findIndex(c),0],l=0,k=a.length;l<k;l++)g.push({value:a[l],priority:c,options:d});this.rules.splice.apply(this.rules,g)},findIndex:function(a){for(var c=this.rules,d=c.length-1;0<=d&&a<c[d].priority;)d--;return d+1},exec:function(a,c){var d=c instanceof CKEDITOR.htmlParser.node||c instanceof CKEDITOR.htmlParser.fragment,g=Array.prototype.slice.call(arguments,1),l=this.rules,k=l.length,n,w,f,x;for(x=0;x<k;x++)if(d&&(n=c.type,w=c.name),f=l[x],!(a.nonEditable&&!f.options.applyToAll|| 307c,d){for(var g=[this.findIndex(c),0],h=0,k=a.length;h<k;h++)g.push({value:a[h],priority:c,options:d});this.rules.splice.apply(this.rules,g)},findIndex:function(a){for(var c=this.rules,d=c.length-1;0<=d&&a<c[d].priority;)d--;return d+1},exec:function(a,c){var d=c instanceof CKEDITOR.htmlParser.node||c instanceof CKEDITOR.htmlParser.fragment,g=Array.prototype.slice.call(arguments,1),h=this.rules,k=h.length,n,q,f,D;for(D=0;D<k;D++)if(d&&(n=c.type,q=c.name),f=h[D],!(a.nonEditable&&!f.options.applyToAll||
287a.nestedEditable&&f.options.excludeNestedEditable)){f=f.value.apply(null,g);if(!1===f||d&&f&&(f.name!=w||f.type!=n))return f;null!=f&&(g[0]=c=f)}return c},execOnName:function(a,c){for(var d=0,g=this.rules,l=g.length,k;c&&d<l;d++)k=g[d],a.nonEditable&&!k.options.applyToAll||a.nestedEditable&&k.options.excludeNestedEditable||(c=c.replace(k.value[0],k.value[1]));return c}}})(); 308a.nestedEditable&&f.options.excludeNestedEditable)){f=f.value.apply(null,g);if(!1===f||d&&f&&(f.name!=q||f.type!=n))return f;null!=f&&(g[0]=c=f)}return c},execOnName:function(a,c){for(var d=0,g=this.rules,h=g.length,k;c&&d<h;d++)k=g[d],a.nonEditable&&!k.options.applyToAll||a.nestedEditable&&k.options.excludeNestedEditable||(c=c.replace(k.value[0],k.value[1]));return c}}})();
288(function(){function a(a,d){function m(a){return a||CKEDITOR.env.needsNbspFiller?new CKEDITOR.htmlParser.text(" "):new CKEDITOR.htmlParser.element("br",{"data-cke-bogus":1})}function p(a,d){return function(h){if(h.type!=CKEDITOR.NODE_DOCUMENT_FRAGMENT){var e=[],p=b(h),r,v;if(p)for(f(p,1)&&e.push(p);p;)g(p)&&(r=c(p))&&f(r)&&((v=c(r))&&!g(v)?e.push(r):(m(z).insertAfter(r),r.remove())),p=p.previous;for(p=0;p<e.length;p++)e[p].remove();if(e=!a||!1!==("function"==typeof d?d(h):d))z||CKEDITOR.env.needsBrFiller|| 309(function(){function a(a,d){function f(a){return a||CKEDITOR.env.needsNbspFiller?new CKEDITOR.htmlParser.text(" "):new CKEDITOR.htmlParser.element("br",{"data-cke-bogus":1})}function v(a,d){return function(e){if(e.type!=CKEDITOR.NODE_DOCUMENT_FRAGMENT){var t=[],l=b(e),v,p;if(l)for(u(l,1)&&t.push(l);l;)g(l)&&(v=c(l))&&u(v)&&((p=c(v))&&!g(p)?t.push(v):(f(y).insertAfter(v),v.remove())),l=l.previous;for(l=0;l<t.length;l++)t[l].remove();if(t=!a||!1!==("function"==typeof d?d(e):d))y||CKEDITOR.env.needsBrFiller||
289h.type!=CKEDITOR.NODE_DOCUMENT_FRAGMENT?z||CKEDITOR.env.needsBrFiller||!(7<document.documentMode||h.name in CKEDITOR.dtd.tr||h.name in CKEDITOR.dtd.$listItem)?(e=b(h),e=!e||"form"==h.name&&"input"==e.name):e=!1:e=!1;e&&h.add(m(a))}}}function f(a,b){if((!z||CKEDITOR.env.needsBrFiller)&&a.type==CKEDITOR.NODE_ELEMENT&&"br"==a.name&&!a.attributes["data-cke-eol"])return!0;var c;return a.type==CKEDITOR.NODE_TEXT&&(c=a.value.match(y))&&(c.index&&((new CKEDITOR.htmlParser.text(a.value.substring(0,c.index))).insertBefore(a), 310e.type!=CKEDITOR.NODE_DOCUMENT_FRAGMENT?y||CKEDITOR.env.needsBrFiller||!(7<document.documentMode||e.name in CKEDITOR.dtd.tr||e.name in CKEDITOR.dtd.$listItem)?(t=b(e),t=!t||"form"==e.name&&"input"==t.name):t=!1:t=!1;t&&e.add(f(a))}}}function u(a,b){if((!y||CKEDITOR.env.needsBrFiller)&&a.type==CKEDITOR.NODE_ELEMENT&&"br"==a.name&&!a.attributes["data-cke-eol"])return!0;var c;return a.type==CKEDITOR.NODE_TEXT&&(c=a.value.match(m))&&(c.index&&((new CKEDITOR.htmlParser.text(a.value.substring(0,c.index))).insertBefore(a),
290a.value=c[0]),!CKEDITOR.env.needsBrFiller&&z&&(!b||a.parent.name in v)||!z&&((c=a.previous)&&"br"==c.name||!c||g(c)))?!0:!1}var r={elements:{}},z="html"==d,v=CKEDITOR.tools.extend({},h),C;for(C in v)"#"in t[C]||delete v[C];for(C in v)r.elements[C]=p(z,a.config.fillEmptyBlocks);r.root=p(z,!1);r.elements.br=function(a){return function(b){if(b.parent.type!=CKEDITOR.NODE_DOCUMENT_FRAGMENT){var d=b.attributes;if("data-cke-bogus"in d||"data-cke-eol"in d)delete d["data-cke-bogus"];else{for(d=b.next;d&&e(d);)d= 311a.value=c[0]),!CKEDITOR.env.needsBrFiller&&y&&(!b||a.parent.name in B)||!y&&((c=a.previous)&&"br"==c.name||!c||g(c)))?!0:!1}var p={elements:{}},y="html"==d,B=CKEDITOR.tools.extend({},l),C;for(C in B)"#"in z[C]||delete B[C];for(C in B)p.elements[C]=v(y,a.config.fillEmptyBlocks);p.root=v(y,!1);p.elements.br=function(a){return function(b){if(b.parent.type!=CKEDITOR.NODE_DOCUMENT_FRAGMENT){var d=b.attributes;if("data-cke-bogus"in d||"data-cke-eol"in d)delete d["data-cke-bogus"];else{for(d=b.next;d&&e(d);)d=
291d.next;var h=c(b);!d&&g(b.parent)?l(b.parent,m(a)):g(d)&&h&&!g(h)&&m(a).insertBefore(d)}}}}(z);return r}function d(a,b){return a!=CKEDITOR.ENTER_BR&&!1!==b?a==CKEDITOR.ENTER_DIV?"div":"p":!1}function b(a){for(a=a.children[a.children.length-1];a&&e(a);)a=a.previous;return a}function c(a){for(a=a.previous;a&&e(a);)a=a.previous;return a}function e(a){return a.type==CKEDITOR.NODE_TEXT&&!CKEDITOR.tools.trim(a.value)||a.type==CKEDITOR.NODE_ELEMENT&&a.attributes["data-cke-bookmark"]}function g(a){return a&& 312d.next;var t=c(b);!d&&g(b.parent)?h(b.parent,f(a)):g(d)&&t&&!g(t)&&f(a).insertBefore(d)}}}}(y);return p}function d(a,b){return a!=CKEDITOR.ENTER_BR&&!1!==b?a==CKEDITOR.ENTER_DIV?"div":"p":!1}function b(a){for(a=a.children[a.children.length-1];a&&e(a);)a=a.previous;return a}function c(a){for(a=a.previous;a&&e(a);)a=a.previous;return a}function e(a){return a.type==CKEDITOR.NODE_TEXT&&!CKEDITOR.tools.trim(a.value)||a.type==CKEDITOR.NODE_ELEMENT&&a.attributes["data-cke-bookmark"]}function g(a){return a&&
292(a.type==CKEDITOR.NODE_ELEMENT&&a.name in h||a.type==CKEDITOR.NODE_DOCUMENT_FRAGMENT)}function l(a,b){var c=a.children[a.children.length-1];a.children.push(b);b.parent=a;c&&(c.next=b,b.previous=c)}function k(a){a=a.attributes;"false"!=a.contenteditable&&(a["data-cke-editable"]=a.contenteditable?"true":1);a.contenteditable="false"}function n(a){a=a.attributes;switch(a["data-cke-editable"]){case "true":a.contenteditable="true";break;case "1":delete a.contenteditable}}function w(a){return a.replace(G, 313(a.type==CKEDITOR.NODE_ELEMENT&&a.name in l||a.type==CKEDITOR.NODE_DOCUMENT_FRAGMENT)}function h(a,b){var c=a.children[a.children.length-1];a.children.push(b);b.parent=a;c&&(c.next=b,b.previous=c)}function k(a){a=a.attributes;"false"!=a.contenteditable&&(a["data-cke-editable"]=a.contenteditable?"true":1);a.contenteditable="false"}function n(a){a=a.attributes;switch(a["data-cke-editable"]){case "true":a.contenteditable="true";break;case "1":delete a.contenteditable}}function q(a){return a.replace(u,
293function(a,b,c){return"\x3c"+b+c.replace(H,function(a,b){return K.test(b)&&-1==c.indexOf("data-cke-saved-"+b)?" data-cke-saved-"+a+" data-cke-"+CKEDITOR.rnd+"-"+a:a})+"\x3e"})}function f(a,b){return a.replace(b,function(a,b,c){0===a.indexOf("\x3ctextarea")&&(a=b+u(c).replace(/</g,"\x26lt;").replace(/>/g,"\x26gt;")+"\x3c/textarea\x3e");return"\x3ccke:encoded\x3e"+encodeURIComponent(a)+"\x3c/cke:encoded\x3e"})}function x(a){return a.replace(Q,function(a,b){return decodeURIComponent(b)})}function A(a){return a.replace(/\x3c!--(?!{cke_protected})[\s\S]+?--\x3e/g, 314function(a,b,c){return"\x3c"+b+c.replace(y,function(a,b){return v.test(b)&&-1==c.indexOf("data-cke-saved-"+b)?" data-cke-saved-"+a+" data-cke-"+CKEDITOR.rnd+"-"+a:a})+"\x3e"})}function f(a,b){return a.replace(b,function(a,b,c){0===a.indexOf("\x3ctextarea")&&(a=b+A(c).replace(/</g,"\x26lt;").replace(/>/g,"\x26gt;")+"\x3c/textarea\x3e");return"\x3ccke:encoded\x3e"+encodeURIComponent(a)+"\x3c/cke:encoded\x3e"})}function D(a){return a.replace(V,function(a,b){return decodeURIComponent(b)})}function w(a){return a.replace(/\x3c!--(?!{cke_protected})[\s\S]+?--\x3e/g,
294function(a){return"\x3c!--"+F+"{C}"+encodeURIComponent(a).replace(/--/g,"%2D%2D")+"--\x3e"})}function u(a){return a.replace(/\x3c!--\{cke_protected\}\{C\}([\s\S]+?)--\x3e/g,function(a,b){return decodeURIComponent(b)})}function B(a,b){var c=b._.dataStore;return a.replace(/\x3c!--\{cke_protected\}([\s\S]+?)--\x3e/g,function(a,b){return decodeURIComponent(b)}).replace(/\{cke_protected_(\d+)\}/g,function(a,b){return c&&c[b]||""})}function q(a,b){var c=[],d=b.config.protectedSource,h=b._.dataStore||(b._.dataStore= 315function(a){return"\x3c!--"+K+"{C}"+encodeURIComponent(a).replace(/--/g,"%2D%2D")+"--\x3e"})}function A(a){return a.replace(/\x3c!--\{cke_protected\}\{C\}([\s\S]+?)--\x3e/g,function(a,b){return decodeURIComponent(b)})}function G(a,b){var c=b._.dataStore;return a.replace(/\x3c!--\{cke_protected\}([\s\S]+?)--\x3e/g,function(a,b){return decodeURIComponent(b)}).replace(/\{cke_protected_(\d+)\}/g,function(a,b){return c&&c[b]||""})}function x(a,b){var c=[],d=b.config.protectedSource,e=b._.dataStore||(b._.dataStore=
295{id:1}),e=/<\!--\{cke_temp(comment)?\}(\d*?)--\x3e/g,d=[/<script[\s\S]*?(<\/script>|$)/gi,/<noscript[\s\S]*?<\/noscript>/gi,/<meta[\s\S]*?\/?>/gi].concat(d);a=a.replace(/\x3c!--[\s\S]*?--\x3e/g,function(a){return"\x3c!--{cke_tempcomment}"+(c.push(a)-1)+"--\x3e"});for(var p=0;p<d.length;p++)a=a.replace(d[p],function(a){a=a.replace(e,function(a,b,d){return c[d]});return/cke_temp(comment)?/.test(a)?a:"\x3c!--{cke_temp}"+(c.push(a)-1)+"--\x3e"});a=a.replace(e,function(a,b,d){return"\x3c!--"+F+(b?"{C}": 316{id:1}),f=/<\!--\{cke_temp(comment)?\}(\d*?)--\x3e/g,d=[/<script[\s\S]*?(<\/script>|$)/gi,/<noscript[\s\S]*?<\/noscript>/gi,/<meta[\s\S]*?\/?>/gi].concat(d);a=a.replace(/\x3c!--[\s\S]*?--\x3e/g,function(a){return"\x3c!--{cke_tempcomment}"+(c.push(a)-1)+"--\x3e"});for(var l=0;l<d.length;l++)a=a.replace(d[l],function(a){a=a.replace(f,function(a,b,d){return c[d]});return/cke_temp(comment)?/.test(a)?a:"\x3c!--{cke_temp}"+(c.push(a)-1)+"--\x3e"});a=a.replace(f,function(a,b,d){return"\x3c!--"+K+(b?"{C}":
296"")+encodeURIComponent(c[d]).replace(/--/g,"%2D%2D")+"--\x3e"});a=a.replace(/<\w+(?:\s+(?:(?:[^\s=>]+\s*=\s*(?:[^'"\s>]+|'[^']*'|"[^"]*"))|[^\s=\/>]+))+\s*\/?>/g,function(a){return a.replace(/\x3c!--\{cke_protected\}([^>]*)--\x3e/g,function(a,b){h[h.id]=decodeURIComponent(b);return"{cke_protected_"+h.id++ +"}"})});return a=a.replace(/<(title|iframe|textarea)([^>]*)>([\s\S]*?)<\/\1>/g,function(a,c,d,h){return"\x3c"+c+d+"\x3e"+B(u(h),b)+"\x3c/"+c+"\x3e"})}CKEDITOR.htmlDataProcessor=function(b){var c, 317"")+encodeURIComponent(c[d]).replace(/--/g,"%2D%2D")+"--\x3e"});a=a.replace(/<\w+(?:\s+(?:(?:[^\s=>]+\s*=\s*(?:[^'"\s>]+|'[^']*'|"[^"]*"))|[^\s=\/>]+))+\s*\/?>/g,function(a){return a.replace(/\x3c!--\{cke_protected\}([^>]*)--\x3e/g,function(a,b){e[e.id]=decodeURIComponent(b);return"{cke_protected_"+e.id++ +"}"})});return a=a.replace(/<(title|iframe|textarea)([^>]*)>([\s\S]*?)<\/\1>/g,function(a,c,d,e){return"\x3c"+c+d+"\x3e"+G(A(e),b)+"\x3c/"+c+"\x3e"})}CKEDITOR.htmlDataProcessor=function(b){var c,
297h,e=this;this.editor=b;this.dataFilter=c=new CKEDITOR.htmlParser.filter;this.htmlFilter=h=new CKEDITOR.htmlParser.filter;this.writer=new CKEDITOR.htmlParser.basicWriter;c.addRules(p);c.addRules(m,{applyToAll:!0});c.addRules(a(b,"data"),{applyToAll:!0});h.addRules(C);h.addRules(r,{applyToAll:!0});h.addRules(a(b,"html"),{applyToAll:!0});b.on("toHtml",function(a){a=a.data;var c=a.dataValue,h,c=q(c,b),c=f(c,M),c=w(c),c=f(c,R),c=c.replace(v,"$1cke:$2"),c=c.replace(I,"\x3ccke:$1$2\x3e\x3c/cke:$1\x3e"), 318e,l=this;this.editor=b;this.dataFilter=c=new CKEDITOR.htmlParser.filter;this.htmlFilter=e=new CKEDITOR.htmlParser.filter;this.writer=new CKEDITOR.htmlParser.basicWriter;c.addRules(r);c.addRules(J,{applyToAll:!0});c.addRules(a(b,"data"),{applyToAll:!0});e.addRules(H);e.addRules(E,{applyToAll:!0});e.addRules(a(b,"html"),{applyToAll:!0});b.on("toHtml",function(a){a=a.data;var c=a.dataValue,e,c=x(c,b),c=f(c,L),c=q(c),c=f(c,B),c=c.replace(O,"$1cke:$2"),c=c.replace(C,"\x3ccke:$1$2\x3e\x3c/cke:$1\x3e"),
298c=c.replace(/(<pre\b[^>]*>)(\r\n|\n)/g,"$1$2$2"),c=c.replace(/([^a-z0-9<\-])(on\w{3,})(?!>)/gi,"$1data-cke-"+CKEDITOR.rnd+"-$2");h=a.context||b.editable().getName();var e;CKEDITOR.env.ie&&9>CKEDITOR.env.version&&"pre"==h&&(h="div",c="\x3cpre\x3e"+c+"\x3c/pre\x3e",e=1);h=b.document.createElement(h);h.setHtml("a"+c);c=h.getHtml().substr(1);c=c.replace(new RegExp("data-cke-"+CKEDITOR.rnd+"-","ig"),"");e&&(c=c.replace(/^<pre>|<\/pre>$/gi,""));c=c.replace(D,"$1$2");c=x(c);c=u(c);h=!1===a.fixForBody?!1: 319c=c.replace(/(<pre\b[^>]*>)(\r\n|\n)/g,"$1$2$2"),c=c.replace(/([^a-z0-9<\-])(on\w{3,})(?!>)/gi,"$1data-cke-"+CKEDITOR.rnd+"-$2");e=a.context||b.editable().getName();var l;CKEDITOR.env.ie&&9>CKEDITOR.env.version&&"pre"==e&&(e="div",c="\x3cpre\x3e"+c+"\x3c/pre\x3e",l=1);e=b.document.createElement(e);e.setHtml("a"+c);c=e.getHtml().substr(1);c=c.replace(new RegExp("data-cke-"+CKEDITOR.rnd+"-","ig"),"");l&&(c=c.replace(/^<pre>|<\/pre>$/gi,""));c=c.replace(p,"$1$2");c=D(c);c=A(c);e=!1===a.fixForBody?!1:
299d(a.enterMode,b.config.autoParagraph);c=CKEDITOR.htmlParser.fragment.fromHtml(c,a.context,h);h&&(e=c,!e.children.length&&CKEDITOR.dtd[e.name][h]&&(h=new CKEDITOR.htmlParser.element(h),e.add(h)));a.dataValue=c},null,null,5);b.on("toHtml",function(a){a.data.filter.applyTo(a.data.dataValue,!0,a.data.dontFilter,a.data.enterMode)&&b.fire("dataFiltered")},null,null,6);b.on("toHtml",function(a){a.data.dataValue.filterChildren(e.dataFilter,!0)},null,null,10);b.on("toHtml",function(a){a=a.data;var b=a.dataValue, 320d(a.enterMode,b.config.autoParagraph);c=CKEDITOR.htmlParser.fragment.fromHtml(c,a.context,e);e&&(l=c,!l.children.length&&CKEDITOR.dtd[l.name][e]&&(e=new CKEDITOR.htmlParser.element(e),l.add(e)));a.dataValue=c},null,null,5);b.on("toHtml",function(a){a.data.filter.applyTo(a.data.dataValue,!0,a.data.dontFilter,a.data.enterMode)&&b.fire("dataFiltered")},null,null,6);b.on("toHtml",function(a){a.data.dataValue.filterChildren(l.dataFilter,!0)},null,null,10);b.on("toHtml",function(a){a=a.data;var b=a.dataValue,
300c=new CKEDITOR.htmlParser.basicWriter;b.writeChildrenHtml(c);b=c.getHtml(!0);a.dataValue=A(b)},null,null,15);b.on("toDataFormat",function(a){var c=a.data.dataValue;a.data.enterMode!=CKEDITOR.ENTER_BR&&(c=c.replace(/^<br *\/?>/i,""));a.data.dataValue=CKEDITOR.htmlParser.fragment.fromHtml(c,a.data.context,d(a.data.enterMode,b.config.autoParagraph))},null,null,5);b.on("toDataFormat",function(a){a.data.dataValue.filterChildren(e.htmlFilter,!0)},null,null,10);b.on("toDataFormat",function(a){a.data.filter.applyTo(a.data.dataValue, 321c=new CKEDITOR.htmlParser.basicWriter;b.writeChildrenHtml(c);b=c.getHtml(!0);a.dataValue=w(b)},null,null,15);b.on("toDataFormat",function(a){var c=a.data.dataValue;a.data.enterMode!=CKEDITOR.ENTER_BR&&(c=c.replace(/^<br *\/?>/i,""));a.data.dataValue=CKEDITOR.htmlParser.fragment.fromHtml(c,a.data.context,d(a.data.enterMode,b.config.autoParagraph))},null,null,5);b.on("toDataFormat",function(a){a.data.dataValue.filterChildren(l.htmlFilter,!0)},null,null,10);b.on("toDataFormat",function(a){a.data.filter.applyTo(a.data.dataValue,
301!1,!0)},null,null,11);b.on("toDataFormat",function(a){var c=a.data.dataValue,d=e.writer;d.reset();c.writeChildrenHtml(d);c=d.getHtml(!0);c=u(c);c=B(c,b);a.data.dataValue=c},null,null,15)};CKEDITOR.htmlDataProcessor.prototype={toHtml:function(a,b,c,d){var h=this.editor,e,p,m,g;b&&"object"==typeof b?(e=b.context,c=b.fixForBody,d=b.dontFilter,p=b.filter,m=b.enterMode,g=b.protectedWhitespaces):e=b;e||null===e||(e=h.editable().getName());return h.fire("toHtml",{dataValue:a,context:e,fixForBody:c,dontFilter:d, 322!1,!0)},null,null,11);b.on("toDataFormat",function(a){var c=a.data.dataValue,d=l.writer;d.reset();c.writeChildrenHtml(d);c=d.getHtml(!0);c=A(c);c=G(c,b);a.data.dataValue=c},null,null,15)};CKEDITOR.htmlDataProcessor.prototype={toHtml:function(a,b,c,d){var e=this.editor,f,l,v,g;b&&"object"==typeof b?(f=b.context,c=b.fixForBody,d=b.dontFilter,l=b.filter,v=b.enterMode,g=b.protectedWhitespaces):f=b;f||null===f||(f=e.editable().getName());return e.fire("toHtml",{dataValue:a,context:f,fixForBody:c,dontFilter:d,
302filter:p||h.filter,enterMode:m||h.enterMode,protectedWhitespaces:g}).dataValue},toDataFormat:function(a,b){var c,d,h;b&&(c=b.context,d=b.filter,h=b.enterMode);c||null===c||(c=this.editor.editable().getName());return this.editor.fire("toDataFormat",{dataValue:a,filter:d||this.editor.filter,context:c,enterMode:h||this.editor.enterMode}).dataValue}};var y=/(?:&nbsp;|\xa0)$/,F="{cke_protected}",t=CKEDITOR.dtd,z="caption colgroup col thead tfoot tbody".split(" "),h=CKEDITOR.tools.extend({},t.$blockLimit, 323filter:l||e.filter,enterMode:v||e.enterMode,protectedWhitespaces:g}).dataValue},toDataFormat:function(a,b){var c,d,e;b&&(c=b.context,d=b.filter,e=b.enterMode);c||null===c||(c=this.editor.editable().getName());return this.editor.fire("toDataFormat",{dataValue:a,filter:d||this.editor.filter,context:c,enterMode:e||this.editor.enterMode}).dataValue}};var m=/(?:&nbsp;|\xa0)$/,K="{cke_protected}",z=CKEDITOR.dtd,I="caption colgroup col thead tfoot tbody".split(" "),l=CKEDITOR.tools.extend({},z.$blockLimit,
303t.$block),p={elements:{input:k,textarea:k}},m={attributeNames:[[/^on/,"data-cke-pa-on"],[/^data-cke-expando$/,""]]},C={elements:{embed:function(a){var b=a.parent;if(b&&"object"==b.name){var c=b.attributes.width,b=b.attributes.height;c&&(a.attributes.width=c);b&&(a.attributes.height=b)}},a:function(a){var b=a.attributes;if(!(a.children.length||b.name||b.id||a.attributes["data-cke-saved-name"]))return!1}}},r={elementNames:[[/^cke:/,""],[/^\?xml:namespace$/,""]],attributeNames:[[/^data-cke-(saved|pa)-/, 324z.$block),r={elements:{input:k,textarea:k}},J={attributeNames:[[/^on/,"data-cke-pa-on"],[/^srcdoc/,"data-cke-pa-srcdoc"],[/^data-cke-expando$/,""]],elements:{iframe:function(a){if(a.attributes&&a.attributes.src){var b=a.attributes.src.toLowerCase().replace(/[^a-z]/gi,"");if(0===b.indexOf("javascript")||0===b.indexOf("data"))a.attributes["data-cke-pa-src"]=a.attributes.src,delete a.attributes.src}}}},H={elements:{embed:function(a){var b=a.parent;if(b&&"object"==b.name){var c=b.attributes.width,b=b.attributes.height;
304""],[/^data-cke-.*/,""],["hidefocus",""]],elements:{$:function(a){var b=a.attributes;if(b){if(b["data-cke-temp"])return!1;for(var c=["name","href","src"],d,h=0;h<c.length;h++)d="data-cke-saved-"+c[h],d in b&&delete b[c[h]]}return a},table:function(a){a.children.slice(0).sort(function(a,b){var c,d;a.type==CKEDITOR.NODE_ELEMENT&&b.type==a.type&&(c=CKEDITOR.tools.indexOf(z,a.name),d=CKEDITOR.tools.indexOf(z,b.name));-1<c&&-1<d&&c!=d||(c=a.parent?a.getIndex():-1,d=b.parent?b.getIndex():-1);return c>d? 325c&&(a.attributes.width=c);b&&(a.attributes.height=b)}},a:function(a){var b=a.attributes;if(!(a.children.length||b.name||b.id||a.attributes["data-cke-saved-name"]))return!1}}},E={elementNames:[[/^cke:/,""],[/^\?xml:namespace$/,""]],attributeNames:[[/^data-cke-(saved|pa)-/,""],[/^data-cke-.*/,""],["hidefocus",""]],elements:{$:function(a){var b=a.attributes;if(b){if(b["data-cke-temp"])return!1;for(var c=["name","href","src"],d,e=0;e<c.length;e++)d="data-cke-saved-"+c[e],d in b&&delete b[c[e]]}return a},
3051:-1})},param:function(a){a.children=[];a.isEmpty=!0;return a},span:function(a){"Apple-style-span"==a.attributes["class"]&&delete a.name},html:function(a){delete a.attributes.contenteditable;delete a.attributes["class"]},body:function(a){delete a.attributes.spellcheck;delete a.attributes.contenteditable},style:function(a){var b=a.children[0];b&&b.value&&(b.value=CKEDITOR.tools.trim(b.value));a.attributes.type||(a.attributes.type="text/css")},title:function(a){var b=a.children[0];!b&&l(a,b=new CKEDITOR.htmlParser.text); 326table:function(a){a.children.slice(0).sort(function(a,b){var c,d;a.type==CKEDITOR.NODE_ELEMENT&&b.type==a.type&&(c=CKEDITOR.tools.indexOf(I,a.name),d=CKEDITOR.tools.indexOf(I,b.name));-1<c&&-1<d&&c!=d||(c=a.parent?a.getIndex():-1,d=b.parent?b.getIndex():-1);return c>d?1:-1})},param:function(a){a.children=[];a.isEmpty=!0;return a},span:function(a){"Apple-style-span"==a.attributes["class"]&&delete a.name},html:function(a){delete a.attributes.contenteditable;delete a.attributes["class"]},body:function(a){delete a.attributes.spellcheck;
306b.value=a.attributes["data-cke-title"]||""},input:n,textarea:n},attributes:{"class":function(a){return CKEDITOR.tools.ltrim(a.replace(/(?:^|\s+)cke_[^\s]*/g,""))||!1}}};CKEDITOR.env.ie&&(r.attributes.style=function(a){return a.replace(/(^|;)([^\:]+)/g,function(a){return a.toLowerCase()})});var G=/<(a|area|img|input|source)\b([^>]*)>/gi,H=/([\w-:]+)\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|(?:[^ "'>]+))/gi,K=/^(href|src|name)$/i,R=/(?:<style(?=[ >])[^>]*>[\s\S]*?<\/style>)|(?:<(:?link|meta|base)[^>]*>)/gi, 327delete a.attributes.contenteditable},style:function(a){var b=a.children[0];b&&b.value&&(b.value=CKEDITOR.tools.trim(b.value));a.attributes.type||(a.attributes.type="text/css")},title:function(a){var b=a.children[0];!b&&h(a,b=new CKEDITOR.htmlParser.text);b.value=a.attributes["data-cke-title"]||""},input:n,textarea:n},attributes:{"class":function(a){return CKEDITOR.tools.ltrim(a.replace(/(?:^|\s+)cke_[^\s]*/g,""))||!1}}};CKEDITOR.env.ie&&(E.attributes.style=function(a){return a.replace(/(^|;)([^\:]+)/g,
307M=/(<textarea(?=[ >])[^>]*>)([\s\S]*?)(?:<\/textarea>)/gi,Q=/<cke:encoded>([^<]*)<\/cke:encoded>/gi,v=/(<\/?)((?:object|embed|param|html|body|head|title)[^>]*>)/gi,D=/(<\/?)cke:((?:html|body|head|title)[^>]*>)/gi,I=/<cke:(param|embed)([^>]*?)\/?>(?!\s*<\/cke:\1)/gi})();"use strict"; 328function(a){return a.toLowerCase()})});var u=/<(a|area|img|input|source)\b([^>]*)>/gi,y=/([\w-:]+)\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|(?:[^ "'>]+))/gi,v=/^(href|src|name)$/i,B=/(?:<style(?=[ >])[^>]*>[\s\S]*?<\/style>)|(?:<(:?link|meta|base)[^>]*>)/gi,L=/(<textarea(?=[ >])[^>]*>)([\s\S]*?)(?:<\/textarea>)/gi,V=/<cke:encoded>([^<]*)<\/cke:encoded>/gi,O=/(<\/?)((?:object|embed|param|html|body|head|title)[^>]*>)/gi,p=/(<\/?)cke:((?:html|body|head|title)[^>]*>)/gi,C=/<cke:(param|embed)([^>]*?)\/?>(?!\s*<\/cke:\1)/gi})();
308CKEDITOR.htmlParser.element=function(a,d){this.name=a;this.attributes=d||{};this.children=[];var b=a||"",c=b.match(/^cke:(.*)/);c&&(b=c[1]);b=!!(CKEDITOR.dtd.$nonBodyContent[b]||CKEDITOR.dtd.$block[b]||CKEDITOR.dtd.$listItem[b]||CKEDITOR.dtd.$tableContent[b]||CKEDITOR.dtd.$nonEditable[b]||"br"==b);this.isEmpty=!!CKEDITOR.dtd.$empty[a];this.isUnknown=!CKEDITOR.dtd[a];this._={isBlockLike:b,hasInlineStarted:this.isEmpty||!b}}; 329"use strict";CKEDITOR.htmlParser.element=function(a,d){this.name=a;this.attributes=d||{};this.children=[];var b=a||"",c=b.match(/^cke:(.*)/);c&&(b=c[1]);b=!!(CKEDITOR.dtd.$nonBodyContent[b]||CKEDITOR.dtd.$block[b]||CKEDITOR.dtd.$listItem[b]||CKEDITOR.dtd.$tableContent[b]||CKEDITOR.dtd.$nonEditable[b]||"br"==b);this.isEmpty=!!CKEDITOR.dtd.$empty[a];this.isUnknown=!CKEDITOR.dtd[a];this._={isBlockLike:b,hasInlineStarted:this.isEmpty||!b}};
309CKEDITOR.htmlParser.cssStyle=function(a){var d={};((a instanceof CKEDITOR.htmlParser.element?a.attributes.style:a)||"").replace(/&quot;/g,'"').replace(/\s*([^ :;]+)\s*:\s*([^;]+)\s*(?=;|$)/g,function(a,c,e){"font-family"==c&&(e=e.replace(/["']/g,""));d[c.toLowerCase()]=e});return{rules:d,populate:function(a){var c=this.toString();c&&(a instanceof CKEDITOR.dom.element?a.setAttribute("style",c):a instanceof CKEDITOR.htmlParser.element?a.attributes.style=c:a.style=c)},toString:function(){var a=[],c; 330CKEDITOR.htmlParser.cssStyle=function(a){var d={};((a instanceof CKEDITOR.htmlParser.element?a.attributes.style:a)||"").replace(/&quot;/g,'"').replace(/\s*([^ :;]+)\s*:\s*([^;]+)\s*(?=;|$)/g,function(a,c,e){"font-family"==c&&(e=e.replace(/["']/g,""));d[c.toLowerCase()]=e});return{rules:d,populate:function(a){var c=this.toString();c&&(a instanceof CKEDITOR.dom.element?a.setAttribute("style",c):a instanceof CKEDITOR.htmlParser.element?a.attributes.style=c:a.style=c)},toString:function(){var a=[],c;
310for(c in d)d[c]&&a.push(c,":",d[c],";");return a.join("")}}}; 331for(c in d)d[c]&&a.push(c,":",d[c],";");return a.join("")}}};
311(function(){function a(a){return function(b){return b.type==CKEDITOR.NODE_ELEMENT&&("string"==typeof a?b.name==a:b.name in a)}}var d=function(a,b){a=a[0];b=b[0];return a<b?-1:a>b?1:0},b=CKEDITOR.htmlParser.fragment.prototype;CKEDITOR.htmlParser.element.prototype=CKEDITOR.tools.extend(new CKEDITOR.htmlParser.node,{type:CKEDITOR.NODE_ELEMENT,add:b.add,clone:function(){return new CKEDITOR.htmlParser.element(this.name,this.attributes)},filter:function(a,b){var d=this,l,k;b=d.getFilterContext(b);if(b.off)return!0; 332(function(){function a(a){return function(b){return b.type==CKEDITOR.NODE_ELEMENT&&("string"==typeof a?b.name==a:b.name in a)}}var d=function(a,b){a=a[0];b=b[0];return a<b?-1:a>b?1:0},b=CKEDITOR.htmlParser.fragment.prototype;CKEDITOR.htmlParser.element.prototype=CKEDITOR.tools.extend(new CKEDITOR.htmlParser.node,{type:CKEDITOR.NODE_ELEMENT,add:b.add,clone:function(){return new CKEDITOR.htmlParser.element(this.name,this.attributes)},filter:function(a,b){var d=this,h,k;b=d.getFilterContext(b);if(b.off)return!0;
312if(!d.parent)a.onRoot(b,d);for(;;){l=d.name;if(!(k=a.onElementName(b,l)))return this.remove(),!1;d.name=k;if(!(d=a.onElement(b,d)))return this.remove(),!1;if(d!==this)return this.replaceWith(d),!1;if(d.name==l)break;if(d.type!=CKEDITOR.NODE_ELEMENT)return this.replaceWith(d),!1;if(!d.name)return this.replaceWithChildren(),!1}l=d.attributes;var n,w;for(n in l){for(k=l[n];;)if(w=a.onAttributeName(b,n))if(w!=n)delete l[n],n=w;else break;else{delete l[n];break}w&&(!1===(k=a.onAttribute(b,d,w,k))?delete l[w]: 333if(!d.parent)a.onRoot(b,d);for(;;){h=d.name;if(!(k=a.onElementName(b,h)))return this.remove(),!1;d.name=k;if(!(d=a.onElement(b,d)))return this.remove(),!1;if(d!==this)return this.replaceWith(d),!1;if(d.name==h)break;if(d.type!=CKEDITOR.NODE_ELEMENT)return this.replaceWith(d),!1;if(!d.name)return this.replaceWithChildren(),!1}h=d.attributes;var n,q;for(n in h){for(k=h[n];;)if(q=a.onAttributeName(b,n))if(q!=n)delete h[n],n=q;else break;else{delete h[n];break}q&&(!1===(k=a.onAttribute(b,d,q,k))?delete h[q]:
313l[w]=k)}d.isEmpty||this.filterChildren(a,!1,b);return!0},filterChildren:b.filterChildren,writeHtml:function(a,b){b&&this.filter(b);var g=this.name,l=[],k=this.attributes,n,w;a.openTag(g,k);for(n in k)l.push([n,k[n]]);a.sortAttributes&&l.sort(d);n=0;for(w=l.length;n<w;n++)k=l[n],a.attribute(k[0],k[1]);a.openTagClose(g,this.isEmpty);this.writeChildrenHtml(a);this.isEmpty||a.closeTag(g)},writeChildrenHtml:b.writeChildrenHtml,replaceWithChildren:function(){for(var a=this.children,b=a.length;b;)a[--b].insertAfter(this); 334h[q]=k)}d.isEmpty||this.filterChildren(a,!1,b);return!0},filterChildren:b.filterChildren,writeHtml:function(a,b){b&&this.filter(b);var g=this.name,h=[],k=this.attributes,n,q;a.openTag(g,k);for(n in k)h.push([n,k[n]]);a.sortAttributes&&h.sort(d);n=0;for(q=h.length;n<q;n++)k=h[n],a.attribute(k[0],k[1]);a.openTagClose(g,this.isEmpty);this.writeChildrenHtml(a);this.isEmpty||a.closeTag(g)},writeChildrenHtml:b.writeChildrenHtml,replaceWithChildren:function(){for(var a=this.children,b=a.length;b;)a[--b].insertAfter(this);
314this.remove()},forEach:b.forEach,getFirst:function(b){if(!b)return this.children.length?this.children[0]:null;"function"!=typeof b&&(b=a(b));for(var d=0,g=this.children.length;d<g;++d)if(b(this.children[d]))return this.children[d];return null},getHtml:function(){var a=new CKEDITOR.htmlParser.basicWriter;this.writeChildrenHtml(a);return a.getHtml()},setHtml:function(a){a=this.children=CKEDITOR.htmlParser.fragment.fromHtml(a).children;for(var b=0,d=a.length;b<d;++b)a[b].parent=this},getOuterHtml:function(){var a= 335this.remove()},forEach:b.forEach,getFirst:function(b){if(!b)return this.children.length?this.children[0]:null;"function"!=typeof b&&(b=a(b));for(var d=0,g=this.children.length;d<g;++d)if(b(this.children[d]))return this.children[d];return null},getHtml:function(){var a=new CKEDITOR.htmlParser.basicWriter;this.writeChildrenHtml(a);return a.getHtml()},setHtml:function(a){a=this.children=CKEDITOR.htmlParser.fragment.fromHtml(a).children;for(var b=0,d=a.length;b<d;++b)a[b].parent=this},getOuterHtml:function(){var a=
315new CKEDITOR.htmlParser.basicWriter;this.writeHtml(a);return a.getHtml()},split:function(a){for(var b=this.children.splice(a,this.children.length-a),d=this.clone(),l=0;l<b.length;++l)b[l].parent=d;d.children=b;b[0]&&(b[0].previous=null);0<a&&(this.children[a-1].next=null);this.parent.add(d,this.getIndex()+1);return d},addClass:function(a){if(!this.hasClass(a)){var b=this.attributes["class"]||"";this.attributes["class"]=b+(b?" ":"")+a}},removeClass:function(a){var b=this.attributes["class"];b&&((b= 336new CKEDITOR.htmlParser.basicWriter;this.writeHtml(a);return a.getHtml()},split:function(a){for(var b=this.children.splice(a,this.children.length-a),d=this.clone(),h=0;h<b.length;++h)b[h].parent=d;d.children=b;b[0]&&(b[0].previous=null);0<a&&(this.children[a-1].next=null);this.parent.add(d,this.getIndex()+1);return d},find:function(a,b){void 0===b&&(b=!1);var d=[],h;for(h=0;h<this.children.length;h++){var k=this.children[h];"function"==typeof a&&a(k)?d.push(k):"string"==typeof a&&k.name===a&&d.push(k);
316CKEDITOR.tools.trim(b.replace(new RegExp("(?:\\s+|^)"+a+"(?:\\s+|$)")," ")))?this.attributes["class"]=b:delete this.attributes["class"])},hasClass:function(a){var b=this.attributes["class"];return b?(new RegExp("(?:^|\\s)"+a+"(?\x3d\\s|$)")).test(b):!1},getFilterContext:function(a){var b=[];a||(a={off:!1,nonEditable:!1,nestedEditable:!1});a.off||"off"!=this.attributes["data-cke-processor"]||b.push("off",!0);a.nonEditable||"false"!=this.attributes.contenteditable?a.nonEditable&&!a.nestedEditable&& 337b&&k.find&&(d=d.concat(k.find(a,b)))}return d},addClass:function(a){if(!this.hasClass(a)){var b=this.attributes["class"]||"";this.attributes["class"]=b+(b?" ":"")+a}},removeClass:function(a){var b=this.attributes["class"];b&&((b=CKEDITOR.tools.trim(b.replace(new RegExp("(?:\\s+|^)"+a+"(?:\\s+|$)")," ")))?this.attributes["class"]=b:delete this.attributes["class"])},hasClass:function(a){var b=this.attributes["class"];return b?(new RegExp("(?:^|\\s)"+a+"(?\x3d\\s|$)")).test(b):!1},getFilterContext:function(a){var b=
317"true"==this.attributes.contenteditable&&b.push("nestedEditable",!0):b.push("nonEditable",!0);if(b.length){a=CKEDITOR.tools.copy(a);for(var d=0;d<b.length;d+=2)a[b[d]]=b[d+1]}return a}},!0)})(); 338[];a||(a={off:!1,nonEditable:!1,nestedEditable:!1});a.off||"off"!=this.attributes["data-cke-processor"]||b.push("off",!0);a.nonEditable||"false"!=this.attributes.contenteditable?a.nonEditable&&!a.nestedEditable&&"true"==this.attributes.contenteditable&&b.push("nestedEditable",!0):b.push("nonEditable",!0);if(b.length){a=CKEDITOR.tools.copy(a);for(var d=0;d<b.length;d+=2)a[b[d]]=b[d+1]}return a}},!0)})();
318(function(){var a={},d=/{([^}]+)}/g,b=/([\\'])/g,c=/\n/g,e=/\r/g;CKEDITOR.template=function(g){if(a[g])this.output=a[g];else{var l=g.replace(b,"\\$1").replace(c,"\\n").replace(e,"\\r").replace(d,function(a,b){return"',data['"+b+"']\x3d\x3dundefined?'{"+b+"}':data['"+b+"'],'"});this.output=a[g]=Function("data","buffer","return buffer?buffer.push('"+l+"'):['"+l+"'].join('');")}}})();delete CKEDITOR.loadFullCore;CKEDITOR.instances={};CKEDITOR.document=new CKEDITOR.dom.document(document); 339(function(){var a=/{([^}]+)}/g;CKEDITOR.template=function(a){this.source=String(a)};CKEDITOR.template.prototype.output=function(d,b){var c=this.source.replace(a,function(a,b){return void 0!==d[b]?d[b]:a});return b?b.push(c):c}})();delete CKEDITOR.loadFullCore;CKEDITOR.instances={};CKEDITOR.document=new CKEDITOR.dom.document(document);
319CKEDITOR.add=function(a){CKEDITOR.instances[a.name]=a;a.on("focus",function(){CKEDITOR.currentInstance!=a&&(CKEDITOR.currentInstance=a,CKEDITOR.fire("currentInstance"))});a.on("blur",function(){CKEDITOR.currentInstance==a&&(CKEDITOR.currentInstance=null,CKEDITOR.fire("currentInstance"))});CKEDITOR.fire("instance",null,a)};CKEDITOR.remove=function(a){delete CKEDITOR.instances[a.name]}; 340CKEDITOR.add=function(a){CKEDITOR.instances[a.name]=a;a.on("focus",function(){CKEDITOR.currentInstance!=a&&(CKEDITOR.currentInstance=a,CKEDITOR.fire("currentInstance"))});a.on("blur",function(){CKEDITOR.currentInstance==a&&(CKEDITOR.currentInstance=null,CKEDITOR.fire("currentInstance"))});CKEDITOR.fire("instance",null,a)};CKEDITOR.remove=function(a){delete CKEDITOR.instances[a.name]};
320(function(){var a={};CKEDITOR.addTemplate=function(d,b){var c=a[d];if(c)return c;c={name:d,source:b};CKEDITOR.fire("template",c);return a[d]=new CKEDITOR.template(c.source)};CKEDITOR.getTemplate=function(d){return a[d]}})();(function(){var a=[];CKEDITOR.addCss=function(d){a.push(d)};CKEDITOR.getCss=function(){return a.join("\n")}})();CKEDITOR.on("instanceDestroyed",function(){CKEDITOR.tools.isEmpty(this.instances)&&CKEDITOR.fire("reset")});CKEDITOR.TRISTATE_ON=1;CKEDITOR.TRISTATE_OFF=2; 341(function(){var a={};CKEDITOR.addTemplate=function(d,b){var c=a[d];if(c)return c;c={name:d,source:b};CKEDITOR.fire("template",c);return a[d]=new CKEDITOR.template(c.source)};CKEDITOR.getTemplate=function(d){return a[d]}})();(function(){var a=[];CKEDITOR.addCss=function(d){a.push(d)};CKEDITOR.getCss=function(){return a.join("\n")}})();CKEDITOR.on("instanceDestroyed",function(){CKEDITOR.tools.isEmpty(this.instances)&&CKEDITOR.fire("reset")});CKEDITOR.TRISTATE_ON=1;CKEDITOR.TRISTATE_OFF=2;
321CKEDITOR.TRISTATE_DISABLED=0; 342CKEDITOR.TRISTATE_DISABLED=0;
322(function(){CKEDITOR.inline=function(a,d){if(!CKEDITOR.env.isCompatible)return null;a=CKEDITOR.dom.element.get(a);if(a.getEditor())throw'The editor instance "'+a.getEditor().name+'" is already attached to the provided element.';var b=new CKEDITOR.editor(d,a,CKEDITOR.ELEMENT_MODE_INLINE),c=a.is("textarea")?a:null;c?(b.setData(c.getValue(),null,!0),a=CKEDITOR.dom.element.createFromHtml('\x3cdiv contenteditable\x3d"'+!!b.readOnly+'" class\x3d"cke_textarea_inline"\x3e'+c.getValue()+"\x3c/div\x3e",CKEDITOR.document), 343(function(){CKEDITOR.inline=function(a,d){if(!CKEDITOR.env.isCompatible)return null;a=CKEDITOR.dom.element.get(a);if(a.getEditor())throw'The editor instance "'+a.getEditor().name+'" is already attached to the provided element.';var b=new CKEDITOR.editor(d,a,CKEDITOR.ELEMENT_MODE_INLINE),c=a.is("textarea")?a:null;c?(b.setData(c.getValue(),null,!0),a=CKEDITOR.dom.element.createFromHtml('\x3cdiv contenteditable\x3d"'+!!b.readOnly+'" class\x3d"cke_textarea_inline"\x3e'+c.getValue()+"\x3c/div\x3e",CKEDITOR.document),
323a.insertAfter(c),c.hide(),c.$.form&&b._attachToForm()):b.setData(a.getHtml(),null,!0);b.on("loaded",function(){b.fire("uiReady");b.editable(a);b.container=a;b.ui.contentsElement=a;b.setData(b.getData(1));b.resetDirty();b.fire("contentDom");b.mode="wysiwyg";b.fire("mode");b.status="ready";b.fireOnce("instanceReady");CKEDITOR.fire("instanceReady",null,b)},null,null,1E4);b.on("destroy",function(){c&&(b.container.clearCustomData(),b.container.remove(),c.show());b.element.clearCustomData();delete b.element}); 344a.insertAfter(c),c.hide(),c.$.form&&b._attachToForm()):b.setData(a.getHtml(),null,!0);b.on("loaded",function(){b.fire("uiReady");b.editable(a);b.container=a;b.ui.contentsElement=a;b.setData(b.getData(1));b.resetDirty();b.fire("contentDom");b.mode="wysiwyg";b.fire("mode");b.status="ready";b.fireOnce("instanceReady");CKEDITOR.fire("instanceReady",null,b)},null,null,1E4);b.on("destroy",function(){c&&(b.container.clearCustomData(),b.container.remove(),c.show());b.element.clearCustomData();delete b.element});
324return b};CKEDITOR.inlineAll=function(){var a,d,b;for(b in CKEDITOR.dtd.$editable)for(var c=CKEDITOR.document.getElementsByTag(b),e=0,g=c.count();e<g;e++)a=c.getItem(e),"true"==a.getAttribute("contenteditable")&&(d={element:a,config:{}},!1!==CKEDITOR.fire("inline",d)&&CKEDITOR.inline(a,d.config))};CKEDITOR.domReady(function(){!CKEDITOR.disableAutoInline&&CKEDITOR.inlineAll()})})();CKEDITOR.replaceClass="ckeditor"; 345return b};CKEDITOR.inlineAll=function(){var a,d,b;for(b in CKEDITOR.dtd.$editable)for(var c=CKEDITOR.document.getElementsByTag(b),e=0,g=c.count();e<g;e++)a=c.getItem(e),"true"==a.getAttribute("contenteditable")&&(d={element:a,config:{}},!1!==CKEDITOR.fire("inline",d)&&CKEDITOR.inline(a,d.config))};CKEDITOR.domReady(function(){!CKEDITOR.disableAutoInline&&CKEDITOR.inlineAll()})})();CKEDITOR.replaceClass="ckeditor";
325(function(){function a(a,e,g,l){if(!CKEDITOR.env.isCompatible)return null;a=CKEDITOR.dom.element.get(a);if(a.getEditor())throw'The editor instance "'+a.getEditor().name+'" is already attached to the provided element.';var k=new CKEDITOR.editor(e,a,l);l==CKEDITOR.ELEMENT_MODE_REPLACE&&(a.setStyle("visibility","hidden"),k._.required=a.hasAttribute("required"),a.removeAttribute("required"));g&&k.setData(g,null,!0);k.on("loaded",function(){b(k);l==CKEDITOR.ELEMENT_MODE_REPLACE&&k.config.autoUpdateElement&& 346(function(){function a(a,e,g,h){if(!CKEDITOR.env.isCompatible)return null;a=CKEDITOR.dom.element.get(a);if(a.getEditor())throw'The editor instance "'+a.getEditor().name+'" is already attached to the provided element.';var k=new CKEDITOR.editor(e,a,h);h==CKEDITOR.ELEMENT_MODE_REPLACE&&(a.setStyle("visibility","hidden"),k._.required=a.hasAttribute("required"),a.removeAttribute("required"));g&&k.setData(g,null,!0);k.on("loaded",function(){b(k);h==CKEDITOR.ELEMENT_MODE_REPLACE&&k.config.autoUpdateElement&&
326a.$.form&&k._attachToForm();k.setMode(k.config.startupMode,function(){k.resetDirty();k.status="ready";k.fireOnce("instanceReady");CKEDITOR.fire("instanceReady",null,k)})});k.on("destroy",d);return k}function d(){var a=this.container,b=this.element;a&&(a.clearCustomData(),a.remove());b&&(b.clearCustomData(),this.elementMode==CKEDITOR.ELEMENT_MODE_REPLACE&&(b.show(),this._.required&&b.setAttribute("required","required")),delete this.element)}function b(a){var b=a.name,d=a.element,l=a.elementMode,k= 347a.$.form&&k._attachToForm();k.setMode(k.config.startupMode,function(){k.resetDirty();k.status="ready";k.fireOnce("instanceReady");CKEDITOR.fire("instanceReady",null,k)})});k.on("destroy",d);return k}function d(){var a=this.container,b=this.element;a&&(a.clearCustomData(),a.remove());b&&(b.clearCustomData(),this.elementMode==CKEDITOR.ELEMENT_MODE_REPLACE&&(b.show(),this._.required&&b.setAttribute("required","required")),delete this.element)}function b(a){var b=a.name,d=a.element,h=a.elementMode,k=
327a.fire("uiSpace",{space:"top",html:""}).html,n=a.fire("uiSpace",{space:"bottom",html:""}).html,w=new CKEDITOR.template('\x3c{outerEl} id\x3d"cke_{name}" class\x3d"{id} cke cke_reset cke_chrome cke_editor_{name} cke_{langDir} '+CKEDITOR.env.cssClass+'" dir\x3d"{langDir}" lang\x3d"{langCode}" role\x3d"application"'+(a.title?' aria-labelledby\x3d"cke_{name}_arialbl"':"")+"\x3e"+(a.title?'\x3cspan id\x3d"cke_{name}_arialbl" class\x3d"cke_voice_label"\x3e{voiceLabel}\x3c/span\x3e':"")+'\x3c{outerEl} class\x3d"cke_inner cke_reset" role\x3d"presentation"\x3e{topHtml}\x3c{outerEl} id\x3d"{contentId}" class\x3d"cke_contents cke_reset" role\x3d"presentation"\x3e\x3c/{outerEl}\x3e{bottomHtml}\x3c/{outerEl}\x3e\x3c/{outerEl}\x3e'), 348a.fire("uiSpace",{space:"top",html:""}).html,n=a.fire("uiSpace",{space:"bottom",html:""}).html,q=new CKEDITOR.template('\x3c{outerEl} id\x3d"cke_{name}" class\x3d"{id} cke cke_reset cke_chrome cke_editor_{name} cke_{langDir} '+CKEDITOR.env.cssClass+'" dir\x3d"{langDir}" lang\x3d"{langCode}" role\x3d"application"'+(a.title?' aria-labelledby\x3d"cke_{name}_arialbl"':"")+"\x3e"+(a.title?'\x3cspan id\x3d"cke_{name}_arialbl" class\x3d"cke_voice_label"\x3e{voiceLabel}\x3c/span\x3e':"")+'\x3c{outerEl} class\x3d"cke_inner cke_reset" role\x3d"presentation"\x3e{topHtml}\x3c{outerEl} id\x3d"{contentId}" class\x3d"cke_contents cke_reset" role\x3d"presentation"\x3e\x3c/{outerEl}\x3e{bottomHtml}\x3c/{outerEl}\x3e\x3c/{outerEl}\x3e'),
328b=CKEDITOR.dom.element.createFromHtml(w.output({id:a.id,name:b,langDir:a.lang.dir,langCode:a.langCode,voiceLabel:a.title,topHtml:k?'\x3cspan id\x3d"'+a.ui.spaceId("top")+'" class\x3d"cke_top cke_reset_all" role\x3d"presentation" style\x3d"height:auto"\x3e'+k+"\x3c/span\x3e":"",contentId:a.ui.spaceId("contents"),bottomHtml:n?'\x3cspan id\x3d"'+a.ui.spaceId("bottom")+'" class\x3d"cke_bottom cke_reset_all" role\x3d"presentation"\x3e'+n+"\x3c/span\x3e":"",outerEl:CKEDITOR.env.ie?"span":"div"}));l==CKEDITOR.ELEMENT_MODE_REPLACE? 349b=CKEDITOR.dom.element.createFromHtml(q.output({id:a.id,name:b,langDir:a.lang.dir,langCode:a.langCode,voiceLabel:a.title,topHtml:k?'\x3cspan id\x3d"'+a.ui.spaceId("top")+'" class\x3d"cke_top cke_reset_all" role\x3d"presentation" style\x3d"height:auto"\x3e'+k+"\x3c/span\x3e":"",contentId:a.ui.spaceId("contents"),bottomHtml:n?'\x3cspan id\x3d"'+a.ui.spaceId("bottom")+'" class\x3d"cke_bottom cke_reset_all" role\x3d"presentation"\x3e'+n+"\x3c/span\x3e":"",outerEl:CKEDITOR.env.ie?"span":"div"}));h==CKEDITOR.ELEMENT_MODE_REPLACE?
329(d.hide(),b.insertAfter(d)):d.append(b);a.container=b;a.ui.contentsElement=a.ui.space("contents");k&&a.ui.space("top").unselectable();n&&a.ui.space("bottom").unselectable();d=a.config.width;l=a.config.height;d&&b.setStyle("width",CKEDITOR.tools.cssLength(d));l&&a.ui.space("contents").setStyle("height",CKEDITOR.tools.cssLength(l));b.disableContextMenu();CKEDITOR.env.webkit&&b.on("focus",function(){a.focus()});a.fireOnce("uiReady")}CKEDITOR.replace=function(b,d){return a(b,d,null,CKEDITOR.ELEMENT_MODE_REPLACE)}; 350(d.hide(),b.insertAfter(d)):d.append(b);a.container=b;a.ui.contentsElement=a.ui.space("contents");k&&a.ui.space("top").unselectable();n&&a.ui.space("bottom").unselectable();d=a.config.width;h=a.config.height;d&&b.setStyle("width",CKEDITOR.tools.cssLength(d));h&&a.ui.space("contents").setStyle("height",CKEDITOR.tools.cssLength(h));b.disableContextMenu();CKEDITOR.env.webkit&&b.on("focus",function(){a.focus()});a.fireOnce("uiReady")}CKEDITOR.replace=function(b,d){return a(b,d,null,CKEDITOR.ELEMENT_MODE_REPLACE)};
330CKEDITOR.appendTo=function(b,d,g){return a(b,d,g,CKEDITOR.ELEMENT_MODE_APPENDTO)};CKEDITOR.replaceAll=function(){for(var a=document.getElementsByTagName("textarea"),b=0;b<a.length;b++){var d=null,l=a[b];if(l.name||l.id){if("string"==typeof arguments[0]){if(!(new RegExp("(?:^|\\s)"+arguments[0]+"(?:$|\\s)")).test(l.className))continue}else if("function"==typeof arguments[0]&&(d={},!1===arguments[0](l,d)))continue;this.replace(l,d)}}};CKEDITOR.editor.prototype.addMode=function(a,b){(this._.modes||(this._.modes= 351CKEDITOR.appendTo=function(b,d,g){return a(b,d,g,CKEDITOR.ELEMENT_MODE_APPENDTO)};CKEDITOR.replaceAll=function(){for(var a=document.getElementsByTagName("textarea"),b=0;b<a.length;b++){var d=null,h=a[b];if(h.name||h.id){if("string"==typeof arguments[0]){if(!(new RegExp("(?:^|\\s)"+arguments[0]+"(?:$|\\s)")).test(h.className))continue}else if("function"==typeof arguments[0]&&(d={},!1===arguments[0](h,d)))continue;this.replace(h,d)}}};CKEDITOR.editor.prototype.addMode=function(a,b){(this._.modes||(this._.modes=
331{}))[a]=b};CKEDITOR.editor.prototype.setMode=function(a,b){var d=this,l=this._.modes;if(a!=d.mode&&l&&l[a]){d.fire("beforeSetMode",a);if(d.mode){var k=d.checkDirty(),l=d._.previousModeData,n,w=0;d.fire("beforeModeUnload");d.editable(0);d._.previousMode=d.mode;d._.previousModeData=n=d.getData(1);"source"==d.mode&&l==n&&(d.fire("lockSnapshot",{forceUpdate:!0}),w=1);d.ui.space("contents").setHtml("");d.mode=""}else d._.previousModeData=d.getData(1);this._.modes[a](function(){d.mode=a;void 0!==k&&!k&& 352{}))[a]=b};CKEDITOR.editor.prototype.setMode=function(a,b){var d=this,h=this._.modes;if(a!=d.mode&&h&&h[a]){d.fire("beforeSetMode",a);if(d.mode){var k=d.checkDirty(),h=d._.previousModeData,n,q=0;d.fire("beforeModeUnload");d.editable(0);d._.previousMode=d.mode;d._.previousModeData=n=d.getData(1);"source"==d.mode&&h==n&&(d.fire("lockSnapshot",{forceUpdate:!0}),q=1);d.ui.space("contents").setHtml("");d.mode=""}else d._.previousModeData=d.getData(1);this._.modes[a](function(){d.mode=a;void 0!==k&&!k&&
332d.resetDirty();w?d.fire("unlockSnapshot"):"wysiwyg"==a&&d.fire("saveSnapshot");setTimeout(function(){d.fire("mode");b&&b.call(d)},0)})}};CKEDITOR.editor.prototype.resize=function(a,b,d,l){var k=this.container,n=this.ui.space("contents"),w=CKEDITOR.env.webkit&&this.document&&this.document.getWindow().$.frameElement;l=l?this.container.getFirst(function(a){return a.type==CKEDITOR.NODE_ELEMENT&&a.hasClass("cke_inner")}):k;l.setSize("width",a,!0);w&&(w.style.width="1%");var f=(l.$.offsetHeight||0)-(n.$.clientHeight|| 353d.resetDirty();q?d.fire("unlockSnapshot"):"wysiwyg"==a&&d.fire("saveSnapshot");setTimeout(function(){d.fire("mode");b&&b.call(d)},0)})}};CKEDITOR.editor.prototype.resize=function(a,b,d,h){var k=this.container,n=this.ui.space("contents"),q=CKEDITOR.env.webkit&&this.document&&this.document.getWindow().$.frameElement;h=h?this.container.getFirst(function(a){return a.type==CKEDITOR.NODE_ELEMENT&&a.hasClass("cke_inner")}):k;h.setSize("width",a,!0);q&&(q.style.width="1%");var f=(h.$.offsetHeight||0)-(n.$.clientHeight||
3330),k=Math.max(b-(d?0:f),0);b=d?b+f:b;n.setStyle("height",k+"px");w&&(w.style.width="100%");this.fire("resize",{outerHeight:b,contentsHeight:k,outerWidth:a||l.getSize("width")})};CKEDITOR.editor.prototype.getResizable=function(a){return a?this.ui.space("contents"):this.container};CKEDITOR.domReady(function(){CKEDITOR.replaceClass&&CKEDITOR.replaceAll(CKEDITOR.replaceClass)})})();CKEDITOR.config.startupMode="wysiwyg"; 3540),k=Math.max(b-(d?0:f),0);b=d?b+f:b;n.setStyle("height",k+"px");q&&(q.style.width="100%");this.fire("resize",{outerHeight:b,contentsHeight:k,outerWidth:a||h.getSize("width")})};CKEDITOR.editor.prototype.getResizable=function(a){return a?this.ui.space("contents"):this.container};CKEDITOR.domReady(function(){CKEDITOR.replaceClass&&CKEDITOR.replaceAll(CKEDITOR.replaceClass)})})();CKEDITOR.config.startupMode="wysiwyg";
334(function(){function a(a){var b=a.editor,e=a.data.path,m=e.blockLimit,f=a.data.selection,r=f.getRanges()[0],g;if(CKEDITOR.env.gecko||CKEDITOR.env.ie&&CKEDITOR.env.needsBrFiller)if(f=d(f,e))f.appendBogus(),g=CKEDITOR.env.ie;l(b,e.block,m)&&r.collapsed&&!r.getCommonAncestor().isReadOnly()&&(e=r.clone(),e.enlarge(CKEDITOR.ENLARGE_BLOCK_CONTENTS),m=new CKEDITOR.dom.walker(e),m.guard=function(a){return!c(a)||a.type==CKEDITOR.NODE_COMMENT||a.isReadOnly()},!m.checkForward()||e.checkStartOfBlock()&&e.checkEndOfBlock())&& 355(function(){function a(a){var b=a.editor,e=a.data.path,f=e.blockLimit,g=a.data.selection,u=g.getRanges()[0],y;if(CKEDITOR.env.gecko||CKEDITOR.env.ie&&CKEDITOR.env.needsBrFiller)if(g=d(g,e))g.appendBogus(),y=CKEDITOR.env.ie;h(b,e.block,f)&&u.collapsed&&!u.getCommonAncestor().isReadOnly()&&(e=u.clone(),e.enlarge(CKEDITOR.ENLARGE_BLOCK_CONTENTS),f=new CKEDITOR.dom.walker(e),f.guard=function(a){return!c(a)||a.type==CKEDITOR.NODE_COMMENT||a.isReadOnly()},!f.checkForward()||e.checkStartOfBlock()&&e.checkEndOfBlock())&&
335(b=r.fixBlock(!0,b.activeEnterMode==CKEDITOR.ENTER_DIV?"div":"p"),CKEDITOR.env.needsBrFiller||(b=b.getFirst(c))&&b.type==CKEDITOR.NODE_TEXT&&CKEDITOR.tools.trim(b.getText()).match(/^(?:&nbsp;|\xa0)$/)&&b.remove(),g=1,a.cancel());g&&r.select()}function d(a,b){if(a.isFake)return 0;var d=b.block||b.blockLimit,e=d&&d.getLast(c);if(!(!d||!d.isBlockBoundary()||e&&e.type==CKEDITOR.NODE_ELEMENT&&e.isBlockBoundary()||d.is("pre")||d.getBogus()))return d}function b(a){var b=a.data.getTarget();b.is("input")&& 356(b=u.fixBlock(!0,b.activeEnterMode==CKEDITOR.ENTER_DIV?"div":"p"),CKEDITOR.env.needsBrFiller||(b=b.getFirst(c))&&b.type==CKEDITOR.NODE_TEXT&&CKEDITOR.tools.trim(b.getText()).match(/^(?:&nbsp;|\xa0)$/)&&b.remove(),y=1,a.cancel());y&&u.select()}function d(a,b){if(a.isFake)return 0;var d=b.block||b.blockLimit,e=d&&d.getLast(c);if(!(!d||!d.isBlockBoundary()||e&&e.type==CKEDITOR.NODE_ELEMENT&&e.isBlockBoundary()||d.is("pre")||d.getBogus()))return d}function b(a){var b=a.data.getTarget();b.is("input")&&
336(b=b.getAttribute("type"),"submit"!=b&&"reset"!=b||a.data.preventDefault())}function c(a){return f(a)&&x(a)}function e(a,b){return function(c){var d=c.data.$.toElement||c.data.$.fromElement||c.data.$.relatedTarget;(d=d&&d.nodeType==CKEDITOR.NODE_ELEMENT?new CKEDITOR.dom.element(d):null)&&(b.equals(d)||b.contains(d))||a.call(this,c)}}function g(a){function b(a){return function(b,h){h&&b.type==CKEDITOR.NODE_ELEMENT&&b.is(f)&&(d=b);if(!(h||!c(b)||a&&u(b)))return!1}}var d,e=a.getRanges()[0];a=a.root; 357(b=b.getAttribute("type"),"submit"!=b&&"reset"!=b||a.data.preventDefault())}function c(a){return f(a)&&D(a)}function e(a,b){return function(c){var d=c.data.$.toElement||c.data.$.fromElement||c.data.$.relatedTarget;(d=d&&d.nodeType==CKEDITOR.NODE_ELEMENT?new CKEDITOR.dom.element(d):null)&&(b.equals(d)||b.contains(d))||a.call(this,c)}}function g(a){function b(a){return function(b,e){e&&b.type==CKEDITOR.NODE_ELEMENT&&b.is(f)&&(d=b);if(!(e||!c(b)||a&&A(b)))return!1}}var d,e=a.getRanges()[0];a=a.root;
337var f={table:1,ul:1,ol:1,dl:1};if(e.startPath().contains(f)){var r=e.clone();r.collapse(1);r.setStartAt(a,CKEDITOR.POSITION_AFTER_START);a=new CKEDITOR.dom.walker(r);a.guard=b();a.checkBackward();if(d)return r=e.clone(),r.collapse(),r.setEndAt(d,CKEDITOR.POSITION_AFTER_END),a=new CKEDITOR.dom.walker(r),a.guard=b(!0),d=!1,a.checkForward(),d}return null}function l(a,b,c){return!1!==a.config.autoParagraph&&a.activeEnterMode!=CKEDITOR.ENTER_BR&&(a.editable().equals(c)&&!b||b&&"true"==b.getAttribute("contenteditable"))} 358var f={table:1,ul:1,ol:1,dl:1};if(e.startPath().contains(f)){var u=e.clone();u.collapse(1);u.setStartAt(a,CKEDITOR.POSITION_AFTER_START);a=new CKEDITOR.dom.walker(u);a.guard=b();a.checkBackward();if(d)return u=e.clone(),u.collapse(),u.setEndAt(d,CKEDITOR.POSITION_AFTER_END),a=new CKEDITOR.dom.walker(u),a.guard=b(!0),d=!1,a.checkForward(),d}return null}function h(a,b,c){return!1!==a.config.autoParagraph&&a.activeEnterMode!=CKEDITOR.ENTER_BR&&(a.editable().equals(c)&&!b||b&&"true"==b.getAttribute("contenteditable"))}
338function k(a){return a.activeEnterMode!=CKEDITOR.ENTER_BR&&!1!==a.config.autoParagraph?a.activeEnterMode==CKEDITOR.ENTER_DIV?"div":"p":!1}function n(a){var b=a.editor;b.getSelection().scrollIntoView();setTimeout(function(){b.fire("saveSnapshot")},0)}function w(a,b,c){var d=a.getCommonAncestor(b);for(b=a=c?b:a;(a=a.getParent())&&!d.equals(a)&&1==a.getChildCount();)b=a;b.remove()}CKEDITOR.editable=CKEDITOR.tools.createClass({base:CKEDITOR.dom.element,$:function(a,b){this.base(b.$||b);this.editor=a; 359function k(a){return a.activeEnterMode!=CKEDITOR.ENTER_BR&&!1!==a.config.autoParagraph?a.activeEnterMode==CKEDITOR.ENTER_DIV?"div":"p":!1}function n(a){var b=a.editor;b.getSelection().scrollIntoView();setTimeout(function(){b.fire("saveSnapshot")},0)}function q(a,b,c){var d=a.getCommonAncestor(b);for(b=a=c?b:a;(a=a.getParent())&&!d.equals(a)&&1==a.getChildCount();)b=a;b.remove()}var f,D,w,A,G,x,m,K,z,I;CKEDITOR.editable=CKEDITOR.tools.createClass({base:CKEDITOR.dom.element,$:function(a,b){this.base(b.$||
339this.status="unloaded";this.hasFocus=!1;this.setup()},proto:{focus:function(){var a;if(CKEDITOR.env.webkit&&!this.hasFocus&&(a=this.editor._.previousActive||this.getDocument().getActive(),this.contains(a))){a.focus();return}try{this.$[CKEDITOR.env.ie&&this.getDocument().equals(CKEDITOR.document)?"setActive":"focus"]()}catch(b){if(!CKEDITOR.env.ie)throw b;}CKEDITOR.env.safari&&!this.isInline()&&(a=CKEDITOR.document.getActive(),a.equals(this.getWindow().getFrame())||this.getWindow().focus())},on:function(a, 360b);this.editor=a;this.status="unloaded";this.hasFocus=!1;this.setup()},proto:{focus:function(){var a;if(CKEDITOR.env.webkit&&!this.hasFocus&&(a=this.editor._.previousActive||this.getDocument().getActive(),this.contains(a))){a.focus();return}CKEDITOR.env.edge&&14<CKEDITOR.env.version&&!this.hasFocus&&this.getDocument().equals(CKEDITOR.document)&&(this.editor._.previousScrollTop=this.$.scrollTop);try{if(!CKEDITOR.env.ie||CKEDITOR.env.edge&&14<CKEDITOR.env.version||!this.getDocument().equals(CKEDITOR.document))if(CKEDITOR.env.chrome){var b=
340b){var c=Array.prototype.slice.call(arguments,0);CKEDITOR.env.ie&&/^focus|blur$/.exec(a)&&(a="focus"==a?"focusin":"focusout",b=e(b,this),c[0]=a,c[1]=b);return CKEDITOR.dom.element.prototype.on.apply(this,c)},attachListener:function(a){!this._.listeners&&(this._.listeners=[]);var b=Array.prototype.slice.call(arguments,1),b=a.on.apply(a,b);this._.listeners.push(b);return b},clearListeners:function(){var a=this._.listeners;try{for(;a.length;)a.pop().removeListener()}catch(b){}},restoreAttrs:function(){var a= 361this.$.scrollTop;this.$.focus();this.$.scrollTop=b}else this.$.focus();else this.$.setActive()}catch(c){if(!CKEDITOR.env.ie)throw c;}CKEDITOR.env.safari&&!this.isInline()&&(a=CKEDITOR.document.getActive(),a.equals(this.getWindow().getFrame())||this.getWindow().focus())},on:function(a,b){var c=Array.prototype.slice.call(arguments,0);CKEDITOR.env.ie&&/^focus|blur$/.exec(a)&&(a="focus"==a?"focusin":"focusout",b=e(b,this),c[0]=a,c[1]=b);return CKEDITOR.dom.element.prototype.on.apply(this,c)},attachListener:function(a){!this._.listeners&&
341this._.attrChanges,b,c;for(c in a)a.hasOwnProperty(c)&&(b=a[c],null!==b?this.setAttribute(c,b):this.removeAttribute(c))},attachClass:function(a){var b=this.getCustomData("classes");this.hasClass(a)||(!b&&(b=[]),b.push(a),this.setCustomData("classes",b),this.addClass(a))},changeAttr:function(a,b){var c=this.getAttribute(a);b!==c&&(!this._.attrChanges&&(this._.attrChanges={}),a in this._.attrChanges||(this._.attrChanges[a]=c),this.setAttribute(a,b))},insertText:function(a){this.editor.focus();this.insertHtml(this.transformPlainTextToHtml(a), 362(this._.listeners=[]);var b=Array.prototype.slice.call(arguments,1),b=a.on.apply(a,b);this._.listeners.push(b);return b},clearListeners:function(){var a=this._.listeners;try{for(;a.length;)a.pop().removeListener()}catch(b){}},restoreAttrs:function(){var a=this._.attrChanges,b,c;for(c in a)a.hasOwnProperty(c)&&(b=a[c],null!==b?this.setAttribute(c,b):this.removeAttribute(c))},attachClass:function(a){var b=this.getCustomData("classes");this.hasClass(a)||(!b&&(b=[]),b.push(a),this.setCustomData("classes",
342"text")},transformPlainTextToHtml:function(a){var b=this.editor.getSelection().getStartElement().hasAscendant("pre",!0)?CKEDITOR.ENTER_BR:this.editor.activeEnterMode;return CKEDITOR.tools.transformPlainTextToHtml(a,b)},insertHtml:function(a,b,c){var d=this.editor;d.focus();d.fire("saveSnapshot");c||(c=d.getSelection().getRanges()[0]);q(this,b||"html",a,c);c.select();n(this);this.editor.fire("afterInsertHtml",{})},insertHtmlIntoRange:function(a,b,c){q(this,c||"html",a,b);this.editor.fire("afterInsertHtml", 363b),this.addClass(a))},changeAttr:function(a,b){var c=this.getAttribute(a);b!==c&&(!this._.attrChanges&&(this._.attrChanges={}),a in this._.attrChanges||(this._.attrChanges[a]=c),this.setAttribute(a,b))},insertText:function(a){this.editor.focus();this.insertHtml(this.transformPlainTextToHtml(a),"text")},transformPlainTextToHtml:function(a){var b=this.editor.getSelection().getStartElement().hasAscendant("pre",!0)?CKEDITOR.ENTER_BR:this.editor.activeEnterMode;return CKEDITOR.tools.transformPlainTextToHtml(a,
343{intoRange:b})},insertElement:function(a,b){var d=this.editor;d.focus();d.fire("saveSnapshot");var e=d.activeEnterMode,d=d.getSelection(),f=a.getName(),f=CKEDITOR.dtd.$block[f];b||(b=d.getRanges()[0]);this.insertElementIntoRange(a,b)&&(b.moveToPosition(a,CKEDITOR.POSITION_AFTER_END),f&&((f=a.getNext(function(a){return c(a)&&!u(a)}))&&f.type==CKEDITOR.NODE_ELEMENT&&f.is(CKEDITOR.dtd.$block)?f.getDtd()["#"]?b.moveToElementEditStart(f):b.moveToElementEditEnd(a):f||e==CKEDITOR.ENTER_BR||(f=b.fixBlock(!0, 364b)},insertHtml:function(a,b,c){var d=this.editor;d.focus();d.fire("saveSnapshot");c||(c=d.getSelection().getRanges()[0]);x(this,b||"html",a,c);c.select();n(this);this.editor.fire("afterInsertHtml",{})},insertHtmlIntoRange:function(a,b,c){x(this,c||"html",a,b);this.editor.fire("afterInsertHtml",{intoRange:b})},insertElement:function(a,b){var d=this.editor;d.focus();d.fire("saveSnapshot");var e=d.activeEnterMode,d=d.getSelection(),f=a.getName(),f=CKEDITOR.dtd.$block[f];b||(b=d.getRanges()[0]);this.insertElementIntoRange(a,
344e==CKEDITOR.ENTER_DIV?"div":"p"),b.moveToElementEditStart(f))));d.selectRanges([b]);n(this)},insertElementIntoSelection:function(a){this.insertElement(a)},insertElementIntoRange:function(a,b){var c=this.editor,d=c.config.enterMode,e=a.getName(),f=CKEDITOR.dtd.$block[e];if(b.checkReadOnly())return!1;b.deleteContents(1);b.startContainer.type==CKEDITOR.NODE_ELEMENT&&b.startContainer.is({tr:1,table:1,tbody:1,thead:1,tfoot:1})&&y(b);var g,l;if(f)for(;(g=b.getCommonAncestor(0,1))&&(l=CKEDITOR.dtd[g.getName()])&& 365b)&&(b.moveToPosition(a,CKEDITOR.POSITION_AFTER_END),f&&((f=a.getNext(function(a){return c(a)&&!A(a)}))&&f.type==CKEDITOR.NODE_ELEMENT&&f.is(CKEDITOR.dtd.$block)?f.getDtd()["#"]?b.moveToElementEditStart(f):b.moveToElementEditEnd(a):f||e==CKEDITOR.ENTER_BR||(f=b.fixBlock(!0,e==CKEDITOR.ENTER_DIV?"div":"p"),b.moveToElementEditStart(f))));d.selectRanges([b]);n(this)},insertElementIntoSelection:function(a){this.insertElement(a)},insertElementIntoRange:function(a,b){var c=this.editor,d=c.config.enterMode,
345(!l||!l[e]);)g.getName()in CKEDITOR.dtd.span?b.splitElement(g):b.checkStartOfBlock()&&b.checkEndOfBlock()?(b.setStartBefore(g),b.collapse(!0),g.remove()):b.splitBlock(d==CKEDITOR.ENTER_DIV?"div":"p",c.editable());b.insertNode(a);return!0},setData:function(a,b){b||(a=this.editor.dataProcessor.toHtml(a));this.setHtml(a);this.fixInitialSelection();"unloaded"==this.status&&(this.status="ready");this.editor.fire("dataReady")},getData:function(a){var b=this.getHtml();a||(b=this.editor.dataProcessor.toDataFormat(b)); 366e=a.getName(),f=CKEDITOR.dtd.$block[e];if(b.checkReadOnly())return!1;b.deleteContents(1);b.startContainer.type==CKEDITOR.NODE_ELEMENT&&(b.startContainer.is({tr:1,table:1,tbody:1,thead:1,tfoot:1})?m(b):b.startContainer.is(CKEDITOR.dtd.$list)&&K(b));var g,v;if(f)for(;(g=b.getCommonAncestor(0,1))&&(v=CKEDITOR.dtd[g.getName()])&&(!v||!v[e]);)g.getName()in CKEDITOR.dtd.span?b.splitElement(g):b.checkStartOfBlock()&&b.checkEndOfBlock()?(b.setStartBefore(g),b.collapse(!0),g.remove()):b.splitBlock(d==CKEDITOR.ENTER_DIV?
346return b},setReadOnly:function(a){this.setAttribute("contenteditable",!a)},detach:function(){this.removeClass("cke_editable");this.status="detached";var a=this.editor;this._.detach();delete a.document;delete a.window},isInline:function(){return this.getDocument().equals(CKEDITOR.document)},fixInitialSelection:function(){function a(){var b=c.getDocument().$,d=b.getSelection(),h;a:if(d.anchorNode&&d.anchorNode==c.$)h=!0;else{if(CKEDITOR.env.webkit&&(h=c.getDocument().getActive())&&h.equals(c)&&!d.anchorNode){h= 367"div":"p",c.editable());b.insertNode(a);return!0},setData:function(a,b){b||(a=this.editor.dataProcessor.toHtml(a));this.setHtml(a);this.fixInitialSelection();"unloaded"==this.status&&(this.status="ready");this.editor.fire("dataReady")},getData:function(a){var b=this.getHtml();a||(b=this.editor.dataProcessor.toDataFormat(b));return b},setReadOnly:function(a){this.setAttribute("contenteditable",!a)},detach:function(){this.removeClass("cke_editable");this.status="detached";var a=this.editor;this._.detach();
347!0;break a}h=void 0}h&&(h=new CKEDITOR.dom.range(c),h.moveToElementEditStart(c),b=b.createRange(),b.setStart(h.startContainer.$,h.startOffset),b.collapse(!0),d.removeAllRanges(),d.addRange(b))}function b(){var a=c.getDocument().$,d=a.selection,h=c.getDocument().getActive();"None"==d.type&&h.equals(c)&&(d=new CKEDITOR.dom.range(c),a=a.body.createTextRange(),d.moveToElementEditStart(c),d=d.startContainer,d.type!=CKEDITOR.NODE_ELEMENT&&(d=d.getParent()),a.moveToElementText(d.$),a.collapse(!0),a.select())} 368delete a.document;delete a.window},isInline:function(){return this.getDocument().equals(CKEDITOR.document)},fixInitialSelection:function(){function a(){var b=c.getDocument().$,d=b.getSelection(),e;a:if(d.anchorNode&&d.anchorNode==c.$)e=!0;else{if(CKEDITOR.env.webkit&&(e=c.getDocument().getActive())&&e.equals(c)&&!d.anchorNode){e=!0;break a}e=void 0}e&&(e=new CKEDITOR.dom.range(c),e.moveToElementEditStart(c),b=b.createRange(),b.setStart(e.startContainer.$,e.startOffset),b.collapse(!0),d.removeAllRanges(),
348var c=this;if(CKEDITOR.env.ie&&(9>CKEDITOR.env.version||CKEDITOR.env.quirks))this.hasFocus&&(this.focus(),b());else if(this.hasFocus)this.focus(),a();else this.once("focus",function(){a()},null,null,-999)},getHtmlFromRange:function(a){if(a.collapsed)return new CKEDITOR.dom.documentFragment(a.document);a={doc:this.getDocument(),range:a.clone()};F.eol.detect(a,this);F.bogus.exclude(a);F.cell.shrink(a);a.fragment=a.range.cloneContents();F.tree.rebuild(a,this);F.eol.fix(a,this);return new CKEDITOR.dom.documentFragment(a.fragment.$)}, 369d.addRange(b))}function b(){var a=c.getDocument().$,d=a.selection,e=c.getDocument().getActive();"None"==d.type&&e.equals(c)&&(d=new CKEDITOR.dom.range(c),a=a.body.createTextRange(),d.moveToElementEditStart(c),d=d.startContainer,d.type!=CKEDITOR.NODE_ELEMENT&&(d=d.getParent()),a.moveToElementText(d.$),a.collapse(!0),a.select())}var c=this;if(CKEDITOR.env.ie&&(9>CKEDITOR.env.version||CKEDITOR.env.quirks))this.hasFocus&&(this.focus(),b());else if(this.hasFocus)this.focus(),a();else this.once("focus",
349extractHtmlFromRange:function(a,b){var c=t,d={range:a,doc:a.document},e=this.getHtmlFromRange(a);if(a.collapsed)return a.optimize(),e;a.enlarge(CKEDITOR.ENLARGE_INLINE,1);c.table.detectPurge(d);d.bookmark=a.createBookmark();delete d.range;var f=this.editor.createRange();f.moveToPosition(d.bookmark.startNode,CKEDITOR.POSITION_BEFORE_START);d.targetBookmark=f.createBookmark();c.list.detectMerge(d,this);c.table.detectRanges(d,this);c.block.detectMerge(d,this);d.tableContentsRanges?(c.table.deleteRanges(d), 370function(){a()},null,null,-999)},getHtmlFromRange:function(a){if(a.collapsed)return new CKEDITOR.dom.documentFragment(a.document);a={doc:this.getDocument(),range:a.clone()};z.eol.detect(a,this);z.bogus.exclude(a);z.cell.shrink(a);a.fragment=a.range.cloneContents();z.tree.rebuild(a,this);z.eol.fix(a,this);return new CKEDITOR.dom.documentFragment(a.fragment.$)},extractHtmlFromRange:function(a,b){var c=I,d={range:a,doc:a.document},e=this.getHtmlFromRange(a);if(a.collapsed)return a.optimize(),e;a.enlarge(CKEDITOR.ENLARGE_INLINE,
350a.moveToBookmark(d.bookmark),d.range=a):(a.moveToBookmark(d.bookmark),d.range=a,a.extractContents(c.detectExtractMerge(d)));a.moveToBookmark(d.targetBookmark);a.optimize();c.fixUneditableRangePosition(a);c.list.merge(d,this);c.table.purge(d,this);c.block.merge(d,this);if(b){c=a.startPath();if(d=a.checkStartOfBlock()&&a.checkEndOfBlock()&&c.block&&!a.root.equals(c.block)){a:{var d=c.block.getElementsByTag("span"),f=0,g;if(d)for(;g=d.getItem(f++);)if(!x(g)){d=!0;break a}d=!1}d=!d}d&&(a.moveToPosition(c.block, 3711);c.table.detectPurge(d);d.bookmark=a.createBookmark();delete d.range;var f=this.editor.createRange();f.moveToPosition(d.bookmark.startNode,CKEDITOR.POSITION_BEFORE_START);d.targetBookmark=f.createBookmark();c.list.detectMerge(d,this);c.table.detectRanges(d,this);c.block.detectMerge(d,this);d.tableContentsRanges?(c.table.deleteRanges(d),a.moveToBookmark(d.bookmark),d.range=a):(a.moveToBookmark(d.bookmark),d.range=a,a.extractContents(c.detectExtractMerge(d)));a.moveToBookmark(d.targetBookmark);a.optimize();
351CKEDITOR.POSITION_BEFORE_START),c.block.remove())}else c.autoParagraph(this.editor,a),A(a.startContainer)&&a.startContainer.appendBogus();a.startContainer.mergeSiblings();return e},setup:function(){var a=this.editor;this.attachListener(a,"beforeGetData",function(){var b=this.getData();this.is("textarea")||!1!==a.config.ignoreEmptyParagraph&&(b=b.replace(B,function(a,b){return b}));a.setData(b,null,1)},this);this.attachListener(a,"getSnapshot",function(a){a.data=this.getData(1)},this);this.attachListener(a, 372c.fixUneditableRangePosition(a);c.list.merge(d,this);c.table.purge(d,this);c.block.merge(d,this);if(b){c=a.startPath();if(d=a.checkStartOfBlock()&&a.checkEndOfBlock()&&c.block&&!a.root.equals(c.block)){a:{var d=c.block.getElementsByTag("span"),f=0,g;if(d)for(;g=d.getItem(f++);)if(!D(g)){d=!0;break a}d=!1}d=!d}d&&(a.moveToPosition(c.block,CKEDITOR.POSITION_BEFORE_START),c.block.remove())}else c.autoParagraph(this.editor,a),w(a.startContainer)&&a.startContainer.appendBogus();a.startContainer.mergeSiblings();
352"afterSetData",function(){this.setData(a.getData(1))},this);this.attachListener(a,"loadSnapshot",function(a){this.setData(a.data,1)},this);this.attachListener(a,"beforeFocus",function(){var b=a.getSelection();(b=b&&b.getNative())&&"Control"==b.type||this.focus()},this);this.attachListener(a,"insertHtml",function(a){this.insertHtml(a.data.dataValue,a.data.mode,a.data.range)},this);this.attachListener(a,"insertElement",function(a){this.insertElement(a.data)},this);this.attachListener(a,"insertText", 373return e},setup:function(){var a=this.editor;this.attachListener(a,"beforeGetData",function(){var b=this.getData();this.is("textarea")||!1!==a.config.ignoreEmptyParagraph&&(b=b.replace(G,function(a,b){return b}));a.setData(b,null,1)},this);this.attachListener(a,"getSnapshot",function(a){a.data=this.getData(1)},this);this.attachListener(a,"afterSetData",function(){this.setData(a.getData(1))},this);this.attachListener(a,"loadSnapshot",function(a){this.setData(a.data,1)},this);this.attachListener(a,
353function(a){this.insertText(a.data)},this);this.setReadOnly(a.readOnly);this.attachClass("cke_editable");a.elementMode==CKEDITOR.ELEMENT_MODE_INLINE?this.attachClass("cke_editable_inline"):a.elementMode!=CKEDITOR.ELEMENT_MODE_REPLACE&&a.elementMode!=CKEDITOR.ELEMENT_MODE_APPENDTO||this.attachClass("cke_editable_themed");this.attachClass("cke_contents_"+a.config.contentsLangDirection);a.keystrokeHandler.blockedKeystrokes[8]=+a.readOnly;a.keystrokeHandler.attach(this);this.on("blur",function(){this.hasFocus= 374"beforeFocus",function(){var b=a.getSelection();(b=b&&b.getNative())&&"Control"==b.type||this.focus()},this);this.attachListener(a,"insertHtml",function(a){this.insertHtml(a.data.dataValue,a.data.mode,a.data.range)},this);this.attachListener(a,"insertElement",function(a){this.insertElement(a.data)},this);this.attachListener(a,"insertText",function(a){this.insertText(a.data)},this);this.setReadOnly(a.readOnly);this.attachClass("cke_editable");a.elementMode==CKEDITOR.ELEMENT_MODE_INLINE?this.attachClass("cke_editable_inline"):
354!1},null,null,-1);this.on("focus",function(){this.hasFocus=!0},null,null,-1);a.focusManager.add(this);this.equals(CKEDITOR.document.getActive())&&(this.hasFocus=!0,a.once("contentDom",function(){a.focusManager.focus(this)},this));this.isInline()&&this.changeAttr("tabindex",a.tabIndex);if(!this.is("textarea")){a.document=this.getDocument();a.window=this.getWindow();var d=a.document;this.changeAttr("spellcheck",!a.config.disableNativeSpellChecker);var e=a.config.contentsLangDirection;this.getDirection(1)!= 375a.elementMode!=CKEDITOR.ELEMENT_MODE_REPLACE&&a.elementMode!=CKEDITOR.ELEMENT_MODE_APPENDTO||this.attachClass("cke_editable_themed");this.attachClass("cke_contents_"+a.config.contentsLangDirection);a.keystrokeHandler.blockedKeystrokes[8]=+a.readOnly;a.keystrokeHandler.attach(this);this.on("blur",function(){this.hasFocus=!1},null,null,-1);this.on("focus",function(){this.hasFocus=!0},null,null,-1);if(CKEDITOR.env.webkit)this.on("scroll",function(){a._.previousScrollTop=a.editable().$.scrollTop},null,
355e&&this.changeAttr("dir",e);var m=CKEDITOR.getCss();m&&(e=d.getHead(),e.getCustomData("stylesheet")||(m=d.appendStyleText(m),m=new CKEDITOR.dom.element(m.ownerNode||m.owningElement),e.setCustomData("stylesheet",m),m.data("cke-temp",1)));e=d.getCustomData("stylesheet_ref")||0;d.setCustomData("stylesheet_ref",e+1);this.setCustomData("cke_includeReadonly",!a.config.disableReadonlyStyling);this.attachListener(this,"click",function(a){a=a.data;var b=(new CKEDITOR.dom.elementPath(a.getTarget(),this)).contains("a"); 376null,-1);if(CKEDITOR.env.edge&&14<CKEDITOR.env.version){var d=function(){var b=a.editable();null!=a._.previousScrollTop&&b.getDocument().equals(CKEDITOR.document)&&(b.$.scrollTop=a._.previousScrollTop,a._.previousScrollTop=null,this.removeListener("scroll",d))};this.on("scroll",d)}a.focusManager.add(this);this.equals(CKEDITOR.document.getActive())&&(this.hasFocus=!0,a.once("contentDom",function(){a.focusManager.focus(this)},this));this.isInline()&&this.changeAttr("tabindex",a.tabIndex);if(!this.is("textarea")){a.document=
356b&&2!=a.$.button&&b.isReadOnly()&&a.preventDefault()});var l={8:1,46:1};this.attachListener(a,"key",function(b){if(a.readOnly)return!0;var c=b.data.domEvent.getKey(),d;if(c in l){b=a.getSelection();var h,e=b.getRanges()[0],m=e.startPath(),p,v,k,c=8==c;CKEDITOR.env.ie&&11>CKEDITOR.env.version&&(h=b.getSelectedElement())||(h=g(b))?(a.fire("saveSnapshot"),e.moveToPosition(h,CKEDITOR.POSITION_BEFORE_START),h.remove(),e.select(),a.fire("saveSnapshot"),d=1):e.collapsed&&((p=m.block)&&(k=p[c?"getPrevious": 377this.getDocument();a.window=this.getWindow();var e=a.document;this.changeAttr("spellcheck",!a.config.disableNativeSpellChecker);var k=a.config.contentsLangDirection;this.getDirection(1)!=k&&this.changeAttr("dir",k);var h=CKEDITOR.getCss();if(h){var k=e.getHead(),u=k.getCustomData("stylesheet");u?h!=u.getText()&&(CKEDITOR.env.ie&&9>CKEDITOR.env.version?u.$.styleSheet.cssText=h:u.setText(h)):(h=e.appendStyleText(h),h=new CKEDITOR.dom.element(h.ownerNode||h.owningElement),k.setCustomData("stylesheet",
357"getNext"](f))&&k.type==CKEDITOR.NODE_ELEMENT&&k.is("table")&&e[c?"checkStartOfBlock":"checkEndOfBlock"]()?(a.fire("saveSnapshot"),e[c?"checkEndOfBlock":"checkStartOfBlock"]()&&p.remove(),e["moveToElementEdit"+(c?"End":"Start")](k),e.select(),a.fire("saveSnapshot"),d=1):m.blockLimit&&m.blockLimit.is("td")&&(v=m.blockLimit.getAscendant("table"))&&e.checkBoundaryOfElement(v,c?CKEDITOR.START:CKEDITOR.END)&&(k=v[c?"getPrevious":"getNext"](f))?(a.fire("saveSnapshot"),e["moveToElementEdit"+(c?"End":"Start")](k), 378h),h.data("cke-temp",1))}k=e.getCustomData("stylesheet_ref")||0;e.setCustomData("stylesheet_ref",k+1);this.setCustomData("cke_includeReadonly",!a.config.disableReadonlyStyling);this.attachListener(this,"click",function(a){a=a.data;var b=(new CKEDITOR.dom.elementPath(a.getTarget(),this)).contains("a");b&&2!=a.$.button&&b.isReadOnly()&&a.preventDefault()});var y={8:1,46:1};this.attachListener(a,"key",function(b){if(a.readOnly)return!0;var c=b.data.domEvent.getKey(),d;b=a.getSelection();if(0!==b.getRanges().length){if(c in
358e.checkStartOfBlock()&&e.checkEndOfBlock()?k.remove():e.select(),a.fire("saveSnapshot"),d=1):(v=m.contains(["td","th","caption"]))&&e.checkBoundaryOfElement(v,c?CKEDITOR.START:CKEDITOR.END)&&(d=1))}return!d});a.blockless&&CKEDITOR.env.ie&&CKEDITOR.env.needsBrFiller&&this.attachListener(this,"keyup",function(b){b.data.getKeystroke()in l&&!this.getFirst(c)&&(this.appendBogus(),b=a.createRange(),b.moveToPosition(this,CKEDITOR.POSITION_AFTER_START),b.select())});this.attachListener(this,"dblclick",function(b){if(a.readOnly)return!1; 379y){var e,u=b.getRanges()[0],p=u.startPath(),C,t,k,c=8==c;CKEDITOR.env.ie&&11>CKEDITOR.env.version&&(e=b.getSelectedElement())||(e=g(b))?(a.fire("saveSnapshot"),u.moveToPosition(e,CKEDITOR.POSITION_BEFORE_START),e.remove(),u.select(),a.fire("saveSnapshot"),d=1):u.collapsed&&((C=p.block)&&(k=C[c?"getPrevious":"getNext"](f))&&k.type==CKEDITOR.NODE_ELEMENT&&k.is("table")&&u[c?"checkStartOfBlock":"checkEndOfBlock"]()?(a.fire("saveSnapshot"),u[c?"checkEndOfBlock":"checkStartOfBlock"]()&&C.remove(),u["moveToElementEdit"+
359b={element:b.data.getTarget()};a.fire("doubleclick",b)});CKEDITOR.env.ie&&this.attachListener(this,"click",b);CKEDITOR.env.ie&&!CKEDITOR.env.edge||this.attachListener(this,"mousedown",function(b){var c=b.data.getTarget();c.is("img","hr","input","textarea","select")&&!c.isReadOnly()&&(a.getSelection().selectElement(c),c.is("input","textarea","select")&&b.data.preventDefault())});CKEDITOR.env.edge&&this.attachListener(this,"mouseup",function(b){(b=b.data.getTarget())&&b.is("img")&&a.getSelection().selectElement(b)}); 380(c?"End":"Start")](k),u.select(),a.fire("saveSnapshot"),d=1):p.blockLimit&&p.blockLimit.is("td")&&(t=p.blockLimit.getAscendant("table"))&&u.checkBoundaryOfElement(t,c?CKEDITOR.START:CKEDITOR.END)&&(k=t[c?"getPrevious":"getNext"](f))?(a.fire("saveSnapshot"),u["moveToElementEdit"+(c?"End":"Start")](k),u.checkStartOfBlock()&&u.checkEndOfBlock()?k.remove():u.select(),a.fire("saveSnapshot"),d=1):(t=p.contains(["td","th","caption"]))&&u.checkBoundaryOfElement(t,c?CKEDITOR.START:CKEDITOR.END)&&(d=1))}return!d}});
360CKEDITOR.env.gecko&&this.attachListener(this,"mouseup",function(b){if(2==b.data.$.button&&(b=b.data.getTarget(),!b.getOuterHtml().replace(B,""))){var c=a.createRange();c.moveToElementEditStart(b);c.select(!0)}});CKEDITOR.env.webkit&&(this.attachListener(this,"click",function(a){a.data.getTarget().is("input","select")&&a.data.preventDefault()}),this.attachListener(this,"mouseup",function(a){a.data.getTarget().is("input","textarea")&&a.data.preventDefault()}));CKEDITOR.env.webkit&&this.attachListener(a, 381a.blockless&&CKEDITOR.env.ie&&CKEDITOR.env.needsBrFiller&&this.attachListener(this,"keyup",function(b){b.data.getKeystroke()in y&&!this.getFirst(c)&&(this.appendBogus(),b=a.createRange(),b.moveToPosition(this,CKEDITOR.POSITION_AFTER_START),b.select())});this.attachListener(this,"dblclick",function(b){if(a.readOnly)return!1;b={element:b.data.getTarget()};a.fire("doubleclick",b)});CKEDITOR.env.ie&&this.attachListener(this,"click",b);CKEDITOR.env.ie&&!CKEDITOR.env.edge||this.attachListener(this,"mousedown",
361"key",function(b){if(a.readOnly)return!0;b=b.data.domEvent.getKey();if(b in l){var c=8==b,d=a.getSelection().getRanges()[0];b=d.startPath();if(d.collapsed)a:{var h=b.block;if(h&&d[c?"checkStartOfBlock":"checkEndOfBlock"]()&&d.moveToClosestEditablePosition(h,!c)&&d.collapsed){if(d.startContainer.type==CKEDITOR.NODE_ELEMENT){var e=d.startContainer.getChild(d.startOffset-(c?1:0));if(e&&e.type==CKEDITOR.NODE_ELEMENT&&e.is("hr")){a.fire("saveSnapshot");e.remove();b=!0;break a}}d=d.startPath().block;if(!d|| 382function(b){var c=b.data.getTarget();c.is("img","hr","input","textarea","select")&&!c.isReadOnly()&&(a.getSelection().selectElement(c),c.is("input","textarea","select")&&b.data.preventDefault())});CKEDITOR.env.edge&&this.attachListener(this,"mouseup",function(b){(b=b.data.getTarget())&&b.is("img")&&a.getSelection().selectElement(b)});CKEDITOR.env.gecko&&this.attachListener(this,"mouseup",function(b){if(2==b.data.$.button&&(b=b.data.getTarget(),!b.getOuterHtml().replace(G,""))){var c=a.createRange();
362d&&d.contains(h))b=void 0;else{a.fire("saveSnapshot");var m;(m=(c?d:h).getBogus())&&m.remove();m=a.getSelection();e=m.createBookmarks();(c?h:d).moveChildren(c?d:h,!1);b.lastElement.mergeSiblings();w(h,d,!c);m.selectBookmarks(e);b=!0}}else b=!1}else c=d,m=b.block,d=c.endPath().block,m&&d&&!m.equals(d)?(a.fire("saveSnapshot"),(h=m.getBogus())&&h.remove(),c.enlarge(CKEDITOR.ENLARGE_INLINE),c.deleteContents(),d.getParent()&&(d.moveChildren(m,!1),b.lastElement.mergeSiblings(),w(m,d,!0)),c=a.getSelection().getRanges()[0], 383c.moveToElementEditStart(b);c.select(!0)}});CKEDITOR.env.webkit&&(this.attachListener(this,"click",function(a){a.data.getTarget().is("input","select")&&a.data.preventDefault()}),this.attachListener(this,"mouseup",function(a){a.data.getTarget().is("input","textarea")&&a.data.preventDefault()}));CKEDITOR.env.webkit&&this.attachListener(a,"key",function(b){if(a.readOnly)return!0;var c=b.data.domEvent.getKey();if(c in y&&(b=a.getSelection(),0!==b.getRanges().length)){var c=8==c,d=b.getRanges()[0];b=d.startPath();
363c.collapse(1),c.optimize(),""===c.startContainer.getHtml()&&c.startContainer.appendBogus(),c.select(),b=!0):b=!1;if(!b)return;a.getSelection().scrollIntoView();a.fire("saveSnapshot");return!1}},this,null,100)}}},_:{detach:function(){this.editor.setData(this.editor.getData(),0,1);this.clearListeners();this.restoreAttrs();var a;if(a=this.removeCustomData("classes"))for(;a.length;)this.removeClass(a.pop());if(!this.is("textarea")){a=this.getDocument();var b=a.getHead();if(b.getCustomData("stylesheet")){var c= 384if(d.collapsed)a:{var e=b.block;if(e&&d[c?"checkStartOfBlock":"checkEndOfBlock"]()&&d.moveToClosestEditablePosition(e,!c)&&d.collapsed){if(d.startContainer.type==CKEDITOR.NODE_ELEMENT){var f=d.startContainer.getChild(d.startOffset-(c?1:0));if(f&&f.type==CKEDITOR.NODE_ELEMENT&&f.is("hr")){a.fire("saveSnapshot");f.remove();b=!0;break a}}d=d.startPath().block;if(!d||d&&d.contains(e))b=void 0;else{a.fire("saveSnapshot");var p;(p=(c?d:e).getBogus())&&p.remove();p=a.getSelection();f=p.createBookmarks();
364a.getCustomData("stylesheet_ref");--c?a.setCustomData("stylesheet_ref",c):(a.removeCustomData("stylesheet_ref"),b.removeCustomData("stylesheet").remove())}}this.editor.fire("contentDomUnload");delete this.editor}}});CKEDITOR.editor.prototype.editable=function(a){var b=this._.editable;if(b&&a)return 0;arguments.length&&(b=this._.editable=a?a instanceof CKEDITOR.editable?a:new CKEDITOR.editable(this,a):(b&&b.detach(),null));return b};CKEDITOR.on("instanceLoaded",function(b){var c=b.editor;c.on("insertElement", 385(c?e:d).moveChildren(c?d:e,!1);b.lastElement.mergeSiblings();q(e,d,!c);p.selectBookmarks(f);b=!0}}else b=!1}else c=d,p=b.block,d=c.endPath().block,p&&d&&!p.equals(d)?(a.fire("saveSnapshot"),(e=p.getBogus())&&e.remove(),c.enlarge(CKEDITOR.ENLARGE_INLINE),c.deleteContents(),d.getParent()&&(d.moveChildren(p,!1),b.lastElement.mergeSiblings(),q(p,d,!0)),c=a.getSelection().getRanges()[0],c.collapse(1),c.optimize(),""===c.startContainer.getHtml()&&c.startContainer.appendBogus(),c.select(),b=!0):b=!1;if(!b)return;
365function(a){a=a.data;a.type==CKEDITOR.NODE_ELEMENT&&(a.is("input")||a.is("textarea"))&&("false"!=a.getAttribute("contentEditable")&&a.data("cke-editable",a.hasAttribute("contenteditable")?"true":"1"),a.setAttribute("contentEditable",!1))});c.on("selectionChange",function(b){if(!c.readOnly){var d=c.getSelection();d&&!d.isLocked&&(d=c.checkDirty(),c.fire("lockSnapshot"),a(b),c.fire("unlockSnapshot"),!d&&c.resetDirty())}})});CKEDITOR.on("instanceCreated",function(a){var b=a.editor;b.on("mode",function(){var a= 386a.getSelection().scrollIntoView();a.fire("saveSnapshot");return!1}},this,null,100)}}},_:{detach:function(){this.editor.setData(this.editor.getData(),0,1);this.clearListeners();this.restoreAttrs();var a;if(a=this.removeCustomData("classes"))for(;a.length;)this.removeClass(a.pop());if(!this.is("textarea")){a=this.getDocument();var b=a.getHead();if(b.getCustomData("stylesheet")){var c=a.getCustomData("stylesheet_ref");--c?a.setCustomData("stylesheet_ref",c):(a.removeCustomData("stylesheet_ref"),b.removeCustomData("stylesheet").remove())}}this.editor.fire("contentDomUnload");
366b.editable();if(a&&a.isInline()){var c=b.title;a.changeAttr("role","textbox");a.changeAttr("aria-label",c);c&&a.changeAttr("title",c);var d=b.fire("ariaEditorHelpLabel",{}).label;if(d&&(c=this.ui.space(this.elementMode==CKEDITOR.ELEMENT_MODE_INLINE?"top":"contents"))){var e=CKEDITOR.tools.getNextId(),d=CKEDITOR.dom.element.createFromHtml('\x3cspan id\x3d"'+e+'" class\x3d"cke_voice_label"\x3e'+d+"\x3c/span\x3e");c.append(d);a.changeAttr("aria-describedby",e)}}})});CKEDITOR.addCss(".cke_editable{cursor:text}.cke_editable img,.cke_editable input,.cke_editable textarea{cursor:default}"); 387delete this.editor}}});CKEDITOR.editor.prototype.editable=function(a){var b=this._.editable;if(b&&a)return 0;arguments.length&&(b=this._.editable=a?a instanceof CKEDITOR.editable?a:new CKEDITOR.editable(this,a):(b&&b.detach(),null));return b};CKEDITOR.on("instanceLoaded",function(b){var c=b.editor;c.on("insertElement",function(a){a=a.data;a.type==CKEDITOR.NODE_ELEMENT&&(a.is("input")||a.is("textarea"))&&("false"!=a.getAttribute("contentEditable")&&a.data("cke-editable",a.hasAttribute("contenteditable")?
367var f=CKEDITOR.dom.walker.whitespaces(!0),x=CKEDITOR.dom.walker.bookmark(!1,!0),A=CKEDITOR.dom.walker.empty(),u=CKEDITOR.dom.walker.bogus(),B=/(^|<body\b[^>]*>)\s*<(p|div|address|h\d|center|pre)[^>]*>\s*(?:<br[^>]*>|&nbsp;|\u00A0|&#160;)?\s*(:?<\/\2>)?\s*(?=$|<\/body>)/gi,q=function(){function a(b){return b.type==CKEDITOR.NODE_ELEMENT}function b(c,d){var e,m,f,p,g=[],l=d.range.startContainer;e=d.range.startPath();for(var l=q[l.getName()],r=0,k=c.getChildren(),C=k.count(),G=-1,n=-1,w=0,K=e.contains(q.$list);r< 388"true":"1"),a.setAttribute("contentEditable",!1))});c.on("selectionChange",function(b){if(!c.readOnly){var d=c.getSelection();d&&!d.isLocked&&(d=c.checkDirty(),c.fire("lockSnapshot"),a(b),c.fire("unlockSnapshot"),!d&&c.resetDirty())}})});CKEDITOR.on("instanceCreated",function(a){var b=a.editor;b.on("mode",function(){var a=b.editable();if(a&&a.isInline()){var c=b.title;a.changeAttr("role","textbox");a.changeAttr("aria-label",c);c&&a.changeAttr("title",c);var d=b.fire("ariaEditorHelpLabel",{}).label;
368C;++r)e=k.getItem(r),a(e)?(f=e.getName(),K&&f in CKEDITOR.dtd.$list?g=g.concat(b(e,d)):(p=!!l[f],"br"!=f||!e.data("cke-eol")||r&&r!=C-1||(w=(m=r?g[r-1].node:k.getItem(r+1))&&(!a(m)||!m.is("br")),m=m&&a(m)&&q.$block[m.getName()]),-1!=G||p||(G=r),p||(n=r),g.push({isElement:1,isLineBreak:w,isBlock:e.isBlockBoundary(),hasBlockSibling:m,node:e,name:f,allowed:p}),m=w=0)):g.push({isElement:0,node:e,allowed:1});-1<G&&(g[G].firstNotAllowed=1);-1<n&&(g[n].lastNotAllowed=1);return g}function d(b,c){var e=[], 389if(d&&(c=this.ui.space(this.elementMode==CKEDITOR.ELEMENT_MODE_INLINE?"top":"contents"))){var e=CKEDITOR.tools.getNextId(),d=CKEDITOR.dom.element.createFromHtml('\x3cspan id\x3d"'+e+'" class\x3d"cke_voice_label"\x3e'+d+"\x3c/span\x3e");c.append(d);a.changeAttr("aria-describedby",e)}}})});CKEDITOR.addCss(".cke_editable{cursor:text}.cke_editable img,.cke_editable input,.cke_editable textarea{cursor:default}");f=CKEDITOR.dom.walker.whitespaces(!0);D=CKEDITOR.dom.walker.bookmark(!1,!0);w=CKEDITOR.dom.walker.empty();
369h=b.getChildren(),m=h.count(),f,g=0,l=q[c],r=!b.is(q.$inline)||b.is("br");for(r&&e.push(" ");g<m;g++)f=h.getItem(g),a(f)&&!f.is(l)?e=e.concat(d(f,c)):e.push(f);r&&e.push(" ");return e}function e(b){return a(b.startContainer)&&b.startContainer.getChild(b.startOffset-1)}function f(b){return b&&a(b)&&(b.is(q.$removeEmpty)||b.is("a")&&!b.isBlockBoundary())}function g(b,c,d,e){var h=b.clone(),m,f;h.setEndAt(c,CKEDITOR.POSITION_BEFORE_END);(m=(new CKEDITOR.dom.walker(h)).next())&&a(m)&&n[m.getName()]&& 390A=CKEDITOR.dom.walker.bogus();G=/(^|<body\b[^>]*>)\s*<(p|div|address|h\d|center|pre)[^>]*>\s*(?:<br[^>]*>|&nbsp;|\u00A0|&#160;)?\s*(:?<\/\2>)?\s*(?=$|<\/body>)/gi;x=function(){function a(b){return b.type==CKEDITOR.NODE_ELEMENT}function b(c,d){var e,f,u,g,y=[],k=d.range.startContainer;e=d.range.startPath();for(var k=v[k.getName()],h=0,B=c.getChildren(),n=B.count(),L=-1,q=-1,E=0,H=e.contains(v.$list);h<n;++h)e=B.getItem(h),a(e)?(u=e.getName(),H&&u in CKEDITOR.dtd.$list?y=y.concat(b(e,d)):(g=!!k[u],
370(f=m.getPrevious())&&a(f)&&!f.getParent().equals(b.startContainer)&&d.contains(f)&&e.contains(m)&&m.isIdentical(f)&&(m.moveChildren(f),m.remove(),g(b,c,d,e))}function G(b,c){function d(b,c){if(c.isBlock&&c.isElement&&!c.node.is("br")&&a(b)&&b.is("br"))return b.remove(),1}var e=c.endContainer.getChild(c.endOffset),h=c.endContainer.getChild(c.endOffset-1);e&&d(e,b[b.length-1]);h&&d(h,b[0])&&(c.setEnd(c.endContainer,c.endOffset-1),c.collapse())}var q=CKEDITOR.dtd,n={p:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1, 391"br"!=u||!e.data("cke-eol")||h&&h!=n-1||(E=(f=h?y[h-1].node:B.getItem(h+1))&&(!a(f)||!f.is("br")),f=f&&a(f)&&v.$block[f.getName()]),-1!=L||g||(L=h),g||(q=h),y.push({isElement:1,isLineBreak:E,isBlock:e.isBlockBoundary(),hasBlockSibling:f,node:e,name:u,allowed:g}),f=E=0)):y.push({isElement:0,node:e,allowed:1});-1<L&&(y[L].firstNotAllowed=1);-1<q&&(y[q].lastNotAllowed=1);return y}function d(b,c){var e=[],f=b.getChildren(),u=f.count(),g,y=0,k=v[c],h=!b.is(v.$inline)||b.is("br");for(h&&e.push(" ");y<u;y++)g=
371h6:1,ul:1,ol:1,li:1,pre:1,dl:1,blockquote:1},w={p:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1},M=CKEDITOR.tools.extend({},q.$inline);delete M.br;return function(n,v,D,I){var E=n.editor,L=!1;"unfiltered_html"==v&&(v="html",L=!0);if(!I.checkReadOnly()){var J=(new CKEDITOR.dom.elementPath(I.startContainer,I.root)).blockLimit||I.root;n={type:v,dontFilter:L,editable:n,editor:E,range:I,blockLimit:J,mergeCandidates:[],zombies:[]};v=n.range;I=n.mergeCandidates;var K,u;"text"==n.type&&v.shrink(CKEDITOR.SHRINK_ELEMENT, 392f.getItem(y),a(g)&&!g.is(k)?e=e.concat(d(g,c)):e.push(g);h&&e.push(" ");return e}function e(b){return a(b.startContainer)&&b.startContainer.getChild(b.startOffset-1)}function f(b){return b&&a(b)&&(b.is(v.$removeEmpty)||b.is("a")&&!b.isBlockBoundary())}function u(b,c,d,e){var f=b.clone(),g,v;f.setEndAt(c,CKEDITOR.POSITION_BEFORE_END);(g=(new CKEDITOR.dom.walker(f)).next())&&a(g)&&B[g.getName()]&&(v=g.getPrevious())&&a(v)&&!v.getParent().equals(b.startContainer)&&d.contains(v)&&e.contains(g)&&g.isIdentical(v)&&
372!0,!1)&&(K=CKEDITOR.dom.element.createFromHtml("\x3cspan\x3e\x26nbsp;\x3c/span\x3e",v.document),v.insertNode(K),v.setStartAfter(K));L=new CKEDITOR.dom.elementPath(v.startContainer);n.endPath=J=new CKEDITOR.dom.elementPath(v.endContainer);if(!v.collapsed){var E=J.block||J.blockLimit,y=v.getCommonAncestor();E&&!E.equals(y)&&!E.contains(y)&&v.checkEndOfBlock()&&n.zombies.push(E);v.deleteContents()}for(;(u=e(v))&&a(u)&&u.isBlockBoundary()&&L.contains(u);)v.moveToPosition(u,CKEDITOR.POSITION_BEFORE_END); 393(g.moveChildren(v),g.remove(),u(b,c,d,e))}function g(b,c){function d(b,c){if(c.isBlock&&c.isElement&&!c.node.is("br")&&a(b)&&b.is("br"))return b.remove(),1}var e=c.endContainer.getChild(c.endOffset),f=c.endContainer.getChild(c.endOffset-1);e&&d(e,b[b.length-1]);f&&d(f,b[0])&&(c.setEnd(c.endContainer,c.endOffset-1),c.collapse())}var v=CKEDITOR.dtd,B={p:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,ul:1,ol:1,li:1,pre:1,dl:1,blockquote:1},L={p:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1},n=CKEDITOR.tools.extend({},
373g(v,n.blockLimit,L,J);K&&(v.setEndBefore(K),v.collapse(),K.remove());K=v.startPath();if(E=K.contains(f,!1,1))v.splitElement(E),n.inlineStylesRoot=E,n.inlineStylesPeak=K.lastElement;K=v.createBookmark();(E=K.startNode.getPrevious(c))&&a(E)&&f(E)&&I.push(E);(E=K.startNode.getNext(c))&&a(E)&&f(E)&&I.push(E);for(E=K.startNode;(E=E.getParent())&&f(E);)I.push(E);v.moveToBookmark(K);if(K=D){K=n.range;if("text"==n.type&&n.inlineStylesRoot){u=n.inlineStylesPeak;v=u.getDocument().createText("{cke-peak}");for(I= 394v.$inline);delete n.br;return function(B,p,C,t){var F=B.editor,N=!1;"unfiltered_html"==p&&(p="html",N=!0);if(!t.checkReadOnly()){var q=(new CKEDITOR.dom.elementPath(t.startContainer,t.root)).blockLimit||t.root;B={type:p,dontFilter:N,editable:B,editor:F,range:t,blockLimit:q,mergeCandidates:[],zombies:[]};p=B.range;t=B.mergeCandidates;var m,w;"text"==B.type&&p.shrink(CKEDITOR.SHRINK_ELEMENT,!0,!1)&&(m=CKEDITOR.dom.element.createFromHtml("\x3cspan\x3e\x26nbsp;\x3c/span\x3e",p.document),p.insertNode(m),
374n.inlineStylesRoot.getParent();!u.equals(I);)v=v.appendTo(u.clone()),u=u.getParent();D=v.getOuterHtml().split("{cke-peak}").join(D)}u=n.blockLimit.getName();if(/^\s+|\s+$/.test(D)&&"span"in CKEDITOR.dtd[u]){var A='\x3cspan data-cke-marker\x3d"1"\x3e\x26nbsp;\x3c/span\x3e';D=A+D+A}D=n.editor.dataProcessor.toHtml(D,{context:null,fixForBody:!1,protectedWhitespaces:!!A,dontFilter:n.dontFilter,filter:n.editor.activeFilter,enterMode:n.editor.activeEnterMode});u=K.document.createElement("body");u.setHtml(D); 395p.setStartAfter(m));N=new CKEDITOR.dom.elementPath(p.startContainer);B.endPath=q=new CKEDITOR.dom.elementPath(p.endContainer);if(!p.collapsed){var F=q.block||q.blockLimit,x=p.getCommonAncestor();F&&!F.equals(x)&&!F.contains(x)&&p.checkEndOfBlock()&&B.zombies.push(F);p.deleteContents()}for(;(w=e(p))&&a(w)&&w.isBlockBoundary()&&N.contains(w);)p.moveToPosition(w,CKEDITOR.POSITION_BEFORE_END);u(p,B.blockLimit,N,q);m&&(p.setEndBefore(m),p.collapse(),m.remove());m=p.startPath();if(F=m.contains(f,!1,1))p.splitElement(F),
375A&&(u.getFirst().remove(),u.getLast().remove());if((A=K.startPath().block)&&(1!=A.getChildCount()||!A.getBogus()))a:{var x;if(1==u.getChildCount()&&a(x=u.getFirst())&&x.is(w)&&!x.hasAttribute("contenteditable")){A=x.getElementsByTag("*");K=0;for(I=A.count();K<I;K++)if(v=A.getItem(K),!v.is(M))break a;x.moveChildren(x.getParent(1));x.remove()}}n.dataWrapper=u;K=D}if(K){x=n.range;K=x.document;var t;u=n.blockLimit;I=0;var B,A=[],N,T;D=E=0;var F,W;v=x.startContainer;var L=n.endPath.elements[0],X,J=L.getPosition(v), 396B.inlineStylesRoot=F,B.inlineStylesPeak=m.lastElement;m=p.createBookmark();(F=m.startNode.getPrevious(c))&&a(F)&&f(F)&&t.push(F);(F=m.startNode.getNext(c))&&a(F)&&f(F)&&t.push(F);for(F=m.startNode;(F=F.getParent())&&f(F);)t.push(F);p.moveToBookmark(m);if(m=C){m=B.range;if("text"==B.type&&B.inlineStylesRoot){w=B.inlineStylesPeak;p=w.getDocument().createText("{cke-peak}");for(t=B.inlineStylesRoot.getParent();!w.equals(t);)p=p.appendTo(w.clone()),w=w.getParent();C=p.getOuterHtml().split("{cke-peak}").join(C)}w=
376y=!!L.getCommonAncestor(v)&&J!=CKEDITOR.POSITION_IDENTICAL&&!(J&CKEDITOR.POSITION_CONTAINS+CKEDITOR.POSITION_IS_CONTAINED);v=b(n.dataWrapper,n);for(G(v,x);I<v.length;I++){J=v[I];if(t=J.isLineBreak){t=x;F=u;var S=void 0,aa=void 0;J.hasBlockSibling?t=1:(S=t.startContainer.getAscendant(q.$block,1))&&S.is({div:1,p:1})?(aa=S.getPosition(F),aa==CKEDITOR.POSITION_IDENTICAL||aa==CKEDITOR.POSITION_CONTAINS?t=0:(F=t.splitElement(S),t.moveToPosition(F,CKEDITOR.POSITION_AFTER_START),t=1)):t=0}if(t)D=0<I;else{t= 397B.blockLimit.getName();if(/^\s+|\s+$/.test(C)&&"span"in CKEDITOR.dtd[w]){var D='\x3cspan data-cke-marker\x3d"1"\x3e\x26nbsp;\x3c/span\x3e';C=D+C+D}C=B.editor.dataProcessor.toHtml(C,{context:null,fixForBody:!1,protectedWhitespaces:!!D,dontFilter:B.dontFilter,filter:B.editor.activeFilter,enterMode:B.editor.activeEnterMode});w=m.document.createElement("body");w.setHtml(C);D&&(w.getFirst().remove(),w.getLast().remove());if((D=m.startPath().block)&&(1!=D.getChildCount()||!D.getBogus()))a:{var A;if(1==
377x.startPath();!J.isBlock&&l(n.editor,t.block,t.blockLimit)&&(T=k(n.editor))&&(T=K.createElement(T),T.appendBogus(),x.insertNode(T),CKEDITOR.env.needsBrFiller&&(B=T.getBogus())&&B.remove(),x.moveToPosition(T,CKEDITOR.POSITION_BEFORE_END));if((t=x.startPath().block)&&!t.equals(N)){if(B=t.getBogus())B.remove(),A.push(t);N=t}J.firstNotAllowed&&(E=1);if(E&&J.isElement){t=x.startContainer;for(F=null;t&&!q[t.getName()][J.name];){if(t.equals(u)){t=null;break}F=t;t=t.getParent()}if(t)F&&(W=x.splitElement(F), 398w.getChildCount()&&a(A=w.getFirst())&&A.is(L)&&!A.hasAttribute("contenteditable")){D=A.getElementsByTag("*");m=0;for(t=D.count();m<t;m++)if(p=D.getItem(m),!p.is(n))break a;A.moveChildren(A.getParent(1));A.remove()}}B.dataWrapper=w;m=C}if(m){A=B.range;m=A.document;var M;w=B.blockLimit;t=0;var z,D=[],G,S;C=F=0;var I,K;p=A.startContainer;var N=B.endPath.elements[0],W,q=N.getPosition(p),x=!!N.getCommonAncestor(p)&&q!=CKEDITOR.POSITION_IDENTICAL&&!(q&CKEDITOR.POSITION_CONTAINS+CKEDITOR.POSITION_IS_CONTAINED);
378n.zombies.push(W),n.zombies.push(F));else{F=u.getName();X=!I;t=I==v.length-1;F=d(J.node,F);for(var S=[],aa=F.length,ca=0,ea=void 0,Y=0,U=-1;ca<aa;ca++)ea=F[ca]," "==ea?(Y||X&&!ca||(S.push(new CKEDITOR.dom.text(" ")),U=S.length),Y=1):(S.push(ea),Y=0);t&&U==S.length&&S.pop();X=S}}if(X){for(;t=X.pop();)x.insertNode(t);X=0}else x.insertNode(J.node);J.lastNotAllowed&&I<v.length-1&&((W=y?L:W)&&x.setEndAt(W,CKEDITOR.POSITION_AFTER_START),E=0);x.collapse()}}1!=v.length?B=!1:(B=v[0],B=B.isElement&&"false"== 399p=b(B.dataWrapper,B);for(g(p,A);t<p.length;t++){q=p[t];if(M=q.isLineBreak){M=A;I=w;var R=void 0,Z=void 0;q.hasBlockSibling?M=1:(R=M.startContainer.getAscendant(v.$block,1))&&R.is({div:1,p:1})?(Z=R.getPosition(I),Z==CKEDITOR.POSITION_IDENTICAL||Z==CKEDITOR.POSITION_CONTAINS?M=0:(I=M.splitElement(R),M.moveToPosition(I,CKEDITOR.POSITION_AFTER_START),M=1)):M=0}if(M)C=0<t;else{M=A.startPath();!q.isBlock&&h(B.editor,M.block,M.blockLimit)&&(S=k(B.editor))&&(S=m.createElement(S),S.appendBogus(),A.insertNode(S),
379B.node.getAttribute("contenteditable"));B&&(D=!0,t=v[0].node,x.setStartAt(t,CKEDITOR.POSITION_BEFORE_START),x.setEndAt(t,CKEDITOR.POSITION_AFTER_END));n.dontMoveCaret=D;n.bogusNeededBlocks=A}B=n.range;var P;W=n.bogusNeededBlocks;for(X=B.createBookmark();N=n.zombies.pop();)N.getParent()&&(T=B.clone(),T.moveToElementEditStart(N),T.removeEmptyBlocksAtEnd());if(W)for(;N=W.pop();)CKEDITOR.env.needsBrFiller?N.appendBogus():N.append(B.document.createText(" "));for(;N=n.mergeCandidates.pop();)N.mergeSiblings(); 400CKEDITOR.env.needsBrFiller&&(z=S.getBogus())&&z.remove(),A.moveToPosition(S,CKEDITOR.POSITION_BEFORE_END));if((M=A.startPath().block)&&!M.equals(G)){if(z=M.getBogus())z.remove(),D.push(M);G=M}q.firstNotAllowed&&(F=1);if(F&&q.isElement){M=A.startContainer;for(I=null;M&&!v[M.getName()][q.name];){if(M.equals(w)){M=null;break}I=M;M=M.getParent()}if(M)I&&(K=A.splitElement(I),B.zombies.push(K),B.zombies.push(I));else{I=w.getName();W=!t;M=t==p.length-1;I=d(q.node,I);for(var R=[],Z=I.length,aa=0,ca=void 0,
380B.moveToBookmark(X);if(!n.dontMoveCaret){for(N=e(B);N&&a(N)&&!N.is(q.$empty);){if(N.isBlockBoundary())B.moveToPosition(N,CKEDITOR.POSITION_BEFORE_END);else{if(f(N)&&N.getHtml().match(/(\s|&nbsp;)$/g)){P=null;break}P=B.clone();P.moveToPosition(N,CKEDITOR.POSITION_BEFORE_END)}N=N.getLast(c)}P&&B.moveToRange(P)}}}}(),y=function(){function a(b){b=new CKEDITOR.dom.walker(b);b.guard=function(a,b){if(b)return!1;if(a.type==CKEDITOR.NODE_ELEMENT)return a.is(CKEDITOR.dtd.$tableContent)};b.evaluator=function(a){return a.type== 401da=0,T=-1;aa<Z;aa++)ca=I[aa]," "==ca?(da||W&&!aa||(R.push(new CKEDITOR.dom.text(" ")),T=R.length),da=1):(R.push(ca),da=0);M&&T==R.length&&R.pop();W=R}}if(W){for(;M=W.pop();)A.insertNode(M);W=0}else A.insertNode(q.node);q.lastNotAllowed&&t<p.length-1&&((K=x?N:K)&&A.setEndAt(K,CKEDITOR.POSITION_AFTER_START),F=0);A.collapse()}}1!=p.length?z=!1:(z=p[0],z=z.isElement&&"false"==z.node.getAttribute("contenteditable"));z&&(C=!0,M=p[0].node,A.setStartAt(M,CKEDITOR.POSITION_BEFORE_START),A.setEndAt(M,CKEDITOR.POSITION_AFTER_END));
381CKEDITOR.NODE_ELEMENT};return b}function b(a,c,d){c=a.getDocument().createElement(c);a.append(c,d);return c}function c(a){var b=a.count(),d;for(b;0<b--;)d=a.getItem(b),CKEDITOR.tools.trim(d.getHtml())||(d.appendBogus(),CKEDITOR.env.ie&&9>CKEDITOR.env.version&&d.getChildCount()&&d.getFirst().remove())}return function(d){var e=d.startContainer,f=e.getAscendant("table",1),g=!1;c(f.getElementsByTag("td"));c(f.getElementsByTag("th"));f=d.clone();f.setStart(e,0);f=a(f).lastBackward();f||(f=d.clone(),f.setEndAt(e, 402B.dontMoveCaret=C;B.bogusNeededBlocks=D}z=B.range;var Q;K=B.bogusNeededBlocks;for(W=z.createBookmark();G=B.zombies.pop();)G.getParent()&&(S=z.clone(),S.moveToElementEditStart(G),S.removeEmptyBlocksAtEnd());if(K)for(;G=K.pop();)CKEDITOR.env.needsBrFiller?G.appendBogus():G.append(z.document.createText(" "));for(;G=B.mergeCandidates.pop();)G.mergeSiblings();z.moveToBookmark(W);if(!B.dontMoveCaret){for(G=e(z);G&&a(G)&&!G.is(v.$empty);){if(G.isBlockBoundary())z.moveToPosition(G,CKEDITOR.POSITION_BEFORE_END);
382CKEDITOR.POSITION_BEFORE_END),f=a(f).lastForward(),g=!0);f||(f=e);f.is("table")?(d.setStartAt(f,CKEDITOR.POSITION_BEFORE_START),d.collapse(!0),f.remove()):(f.is({tbody:1,thead:1,tfoot:1})&&(f=b(f,"tr",g)),f.is("tr")&&(f=b(f,f.getParent().is("thead")?"th":"td",g)),(e=f.getBogus())&&e.remove(),d.moveToPosition(f,g?CKEDITOR.POSITION_AFTER_START:CKEDITOR.POSITION_BEFORE_END))}}(),F={eol:{detect:function(a,b){var c=a.range,d=c.clone(),e=c.clone(),f=new CKEDITOR.dom.elementPath(c.startContainer,b),g=new CKEDITOR.dom.elementPath(c.endContainer, 403else{if(f(G)&&G.getHtml().match(/(\s|&nbsp;)$/g)){Q=null;break}Q=z.clone();Q.moveToPosition(G,CKEDITOR.POSITION_BEFORE_END)}G=G.getLast(c)}Q&&z.moveToRange(Q)}}}}();m=function(){function a(b){b=new CKEDITOR.dom.walker(b);b.guard=function(a,b){if(b)return!1;if(a.type==CKEDITOR.NODE_ELEMENT)return a.is(CKEDITOR.dtd.$tableContent)};b.evaluator=function(a){return a.type==CKEDITOR.NODE_ELEMENT};return b}function b(a,c,d){c=a.getDocument().createElement(c);a.append(c,d);return c}function c(a){var b=a.count(),
383b);d.collapse(1);e.collapse();f.block&&d.checkBoundaryOfElement(f.block,CKEDITOR.END)&&(c.setStartAfter(f.block),a.prependEolBr=1);g.block&&e.checkBoundaryOfElement(g.block,CKEDITOR.START)&&(c.setEndBefore(g.block),a.appendEolBr=1)},fix:function(a,b){var c=b.getDocument(),d;a.appendEolBr&&(d=this.createEolBr(c),a.fragment.append(d));!a.prependEolBr||d&&!d.getPrevious()||a.fragment.append(this.createEolBr(c),1)},createEolBr:function(a){return a.createElement("br",{attributes:{"data-cke-eol":1}})}}, 404d;for(b;0<b--;)d=a.getItem(b),CKEDITOR.tools.trim(d.getHtml())||(d.appendBogus(),CKEDITOR.env.ie&&9>CKEDITOR.env.version&&d.getChildCount()&&d.getFirst().remove())}return function(d){var e=d.startContainer,f=e.getAscendant("table",1),g=!1;c(f.getElementsByTag("td"));c(f.getElementsByTag("th"));f=d.clone();f.setStart(e,0);f=a(f).lastBackward();f||(f=d.clone(),f.setEndAt(e,CKEDITOR.POSITION_BEFORE_END),f=a(f).lastForward(),g=!0);f||(f=e);f.is("table")?(d.setStartAt(f,CKEDITOR.POSITION_BEFORE_START),
384bogus:{exclude:function(a){var b=a.range.getBoundaryNodes(),c=b.startNode,b=b.endNode;!b||!u(b)||c&&c.equals(b)||a.range.setEndBefore(b)}},tree:{rebuild:function(a,b){var c=a.range,d=c.getCommonAncestor(),e=new CKEDITOR.dom.elementPath(d,b),f=new CKEDITOR.dom.elementPath(c.startContainer,b),c=new CKEDITOR.dom.elementPath(c.endContainer,b),g;d.type==CKEDITOR.NODE_TEXT&&(d=d.getParent());if(e.blockLimit.is({tr:1,table:1})){var l=e.contains("table").getParent();g=function(a){return!a.equals(l)}}else if(e.block&& 405d.collapse(!0),f.remove()):(f.is({tbody:1,thead:1,tfoot:1})&&(f=b(f,"tr",g)),f.is("tr")&&(f=b(f,f.getParent().is("thead")?"th":"td",g)),(e=f.getBogus())&&e.remove(),d.moveToPosition(f,g?CKEDITOR.POSITION_AFTER_START:CKEDITOR.POSITION_BEFORE_END))}}();K=function(){function a(b){b=new CKEDITOR.dom.walker(b);b.guard=function(a,b){if(b)return!1;if(a.type==CKEDITOR.NODE_ELEMENT)return a.is(CKEDITOR.dtd.$list)||a.is(CKEDITOR.dtd.$listItem)};b.evaluator=function(a){return a.type==CKEDITOR.NODE_ELEMENT&&
385e.block.is(CKEDITOR.dtd.$listItem)&&(f=f.contains(CKEDITOR.dtd.$list),c=c.contains(CKEDITOR.dtd.$list),!f.equals(c))){var k=e.contains(CKEDITOR.dtd.$list).getParent();g=function(a){return!a.equals(k)}}g||(g=function(a){return!a.equals(e.block)&&!a.equals(e.blockLimit)});this.rebuildFragment(a,b,d,g)},rebuildFragment:function(a,b,c,d){for(var e;c&&!c.equals(b)&&d(c);)e=c.clone(0,1),a.fragment.appendTo(e),a.fragment=e,c=c.getParent()}},cell:{shrink:function(a){a=a.range;var b=a.startContainer,c=a.endContainer, 406a.is(CKEDITOR.dtd.$listItem)};return b}return function(b){var c=b.startContainer,d=!1,e;e=b.clone();e.setStart(c,0);e=a(e).lastBackward();e||(e=b.clone(),e.setEndAt(c,CKEDITOR.POSITION_BEFORE_END),e=a(e).lastForward(),d=!0);e||(e=c);e.is(CKEDITOR.dtd.$list)?(b.setStartAt(e,CKEDITOR.POSITION_BEFORE_START),b.collapse(!0),e.remove()):((c=e.getBogus())&&c.remove(),b.moveToPosition(e,d?CKEDITOR.POSITION_AFTER_START:CKEDITOR.POSITION_BEFORE_END),b.select())}}();z={eol:{detect:function(a,b){var c=a.range,
386d=a.startOffset,e=a.endOffset;b.type==CKEDITOR.NODE_ELEMENT&&b.equals(c)&&b.is("tr")&&++d==e&&a.shrink(CKEDITOR.SHRINK_TEXT)}}},t=function(){function a(b,c){var d=b.getParent();if(d.is(CKEDITOR.dtd.$inline))b[c?"insertBefore":"insertAfter"](d)}function b(c,d,e){a(d);a(e,1);for(var h;h=e.getNext();)h.insertAfter(d),d=h;A(c)&&c.remove()}function c(a,b){var d=new CKEDITOR.dom.range(a);d.setStartAfter(b.startNode);d.setEndBefore(b.endNode);return d}return{list:{detectMerge:function(a,b){var d=c(b,a.bookmark), 407d=c.clone(),e=c.clone(),f=new CKEDITOR.dom.elementPath(c.startContainer,b),g=new CKEDITOR.dom.elementPath(c.endContainer,b);d.collapse(1);e.collapse();f.block&&d.checkBoundaryOfElement(f.block,CKEDITOR.END)&&(c.setStartAfter(f.block),a.prependEolBr=1);g.block&&e.checkBoundaryOfElement(g.block,CKEDITOR.START)&&(c.setEndBefore(g.block),a.appendEolBr=1)},fix:function(a,b){var c=b.getDocument(),d;a.appendEolBr&&(d=this.createEolBr(c),a.fragment.append(d));!a.prependEolBr||d&&!d.getPrevious()||a.fragment.append(this.createEolBr(c),
387e=d.startPath(),h=d.endPath(),f=e.contains(CKEDITOR.dtd.$list),g=h.contains(CKEDITOR.dtd.$list);a.mergeList=f&&g&&f.getParent().equals(g.getParent())&&!f.equals(g);a.mergeListItems=e.block&&h.block&&e.block.is(CKEDITOR.dtd.$listItem)&&h.block.is(CKEDITOR.dtd.$listItem);if(a.mergeList||a.mergeListItems)d=d.clone(),d.setStartBefore(a.bookmark.startNode),d.setEndAfter(a.bookmark.endNode),a.mergeListBookmark=d.createBookmark()},merge:function(a,c){if(a.mergeListBookmark){var d=a.mergeListBookmark.startNode, 4081)},createEolBr:function(a){return a.createElement("br",{attributes:{"data-cke-eol":1}})}},bogus:{exclude:function(a){var b=a.range.getBoundaryNodes(),c=b.startNode,b=b.endNode;!b||!A(b)||c&&c.equals(b)||a.range.setEndBefore(b)}},tree:{rebuild:function(a,b){var c=a.range,d=c.getCommonAncestor(),e=new CKEDITOR.dom.elementPath(d,b),f=new CKEDITOR.dom.elementPath(c.startContainer,b),c=new CKEDITOR.dom.elementPath(c.endContainer,b),g;d.type==CKEDITOR.NODE_TEXT&&(d=d.getParent());if(e.blockLimit.is({tr:1,
388e=a.mergeListBookmark.endNode,f=new CKEDITOR.dom.elementPath(d,c),g=new CKEDITOR.dom.elementPath(e,c);if(a.mergeList){var p=f.contains(CKEDITOR.dtd.$list),l=g.contains(CKEDITOR.dtd.$list);p.equals(l)||(l.moveChildren(p),l.remove())}a.mergeListItems&&(f=f.contains(CKEDITOR.dtd.$listItem),g=g.contains(CKEDITOR.dtd.$listItem),f.equals(g)||b(g,d,e));d.remove();e.remove()}}},block:{detectMerge:function(a,b){if(!a.tableContentsRanges&&!a.mergeListBookmark){var c=new CKEDITOR.dom.range(b);c.setStartBefore(a.bookmark.startNode); 409table:1})){var v=e.contains("table").getParent();g=function(a){return!a.equals(v)}}else if(e.block&&e.block.is(CKEDITOR.dtd.$listItem)&&(f=f.contains(CKEDITOR.dtd.$list),c=c.contains(CKEDITOR.dtd.$list),!f.equals(c))){var k=e.contains(CKEDITOR.dtd.$list).getParent();g=function(a){return!a.equals(k)}}g||(g=function(a){return!a.equals(e.block)&&!a.equals(e.blockLimit)});this.rebuildFragment(a,b,d,g)},rebuildFragment:function(a,b,c,d){for(var e;c&&!c.equals(b)&&d(c);)e=c.clone(0,1),a.fragment.appendTo(e),
389c.setEndAfter(a.bookmark.endNode);a.mergeBlockBookmark=c.createBookmark()}},merge:function(a,c){if(a.mergeBlockBookmark&&!a.purgeTableBookmark){var d=a.mergeBlockBookmark.startNode,e=a.mergeBlockBookmark.endNode,f=new CKEDITOR.dom.elementPath(d,c),g=new CKEDITOR.dom.elementPath(e,c),f=f.block,g=g.block;f&&g&&!f.equals(g)&&b(g,d,e);d.remove();e.remove()}}},table:function(){function a(c){var e=[],h,f=new CKEDITOR.dom.walker(c),g=c.startPath().contains(d),m=c.endPath().contains(d),p={};f.guard=function(a, 410a.fragment=e,c=c.getParent()}},cell:{shrink:function(a){a=a.range;var b=a.startContainer,c=a.endContainer,d=a.startOffset,e=a.endOffset;b.type==CKEDITOR.NODE_ELEMENT&&b.equals(c)&&b.is("tr")&&++d==e&&a.shrink(CKEDITOR.SHRINK_TEXT)}}};I=function(){function a(b,c){var d=b.getParent();if(d.is(CKEDITOR.dtd.$inline))b[c?"insertBefore":"insertAfter"](d)}function b(c,d,e){a(d);a(e,1);for(var f;f=e.getNext();)f.insertAfter(d),d=f;w(c)&&c.remove()}function c(a,b){var d=new CKEDITOR.dom.range(a);d.setStartAfter(b.startNode);
390f){if(a.type==CKEDITOR.NODE_ELEMENT){var l="visited_"+(f?"out":"in");if(a.getCustomData(l))return;CKEDITOR.dom.element.setMarker(p,a,l,1)}if(f&&g&&a.equals(g))h=c.clone(),h.setEndAt(g,CKEDITOR.POSITION_BEFORE_END),e.push(h);else if(!f&&m&&a.equals(m))h=c.clone(),h.setStartAt(m,CKEDITOR.POSITION_AFTER_START),e.push(h);else{if(l=!f)l=a.type==CKEDITOR.NODE_ELEMENT&&a.is(d)&&(!g||b(a,g))&&(!m||b(a,m));l&&(h=c.clone(),h.selectNodeContents(a),e.push(h))}};f.lastForward();CKEDITOR.dom.element.clearAllMarkers(p); 411d.setEndBefore(b.endNode);return d}return{list:{detectMerge:function(a,b){var d=c(b,a.bookmark),e=d.startPath(),f=d.endPath(),g=e.contains(CKEDITOR.dtd.$list),k=f.contains(CKEDITOR.dtd.$list);a.mergeList=g&&k&&g.getParent().equals(k.getParent())&&!g.equals(k);a.mergeListItems=e.block&&f.block&&e.block.is(CKEDITOR.dtd.$listItem)&&f.block.is(CKEDITOR.dtd.$listItem);if(a.mergeList||a.mergeListItems)d=d.clone(),d.setStartBefore(a.bookmark.startNode),d.setEndAfter(a.bookmark.endNode),a.mergeListBookmark=
391return e}function b(a,c){var d=CKEDITOR.POSITION_CONTAINS+CKEDITOR.POSITION_IS_CONTAINED,e=a.getPosition(c);return e===CKEDITOR.POSITION_IDENTICAL?!1:0===(e&d)}var d={td:1,th:1,caption:1};return{detectPurge:function(a){var b=a.range,c=b.clone();c.enlarge(CKEDITOR.ENLARGE_ELEMENT);var c=new CKEDITOR.dom.walker(c),e=0;c.evaluator=function(a){a.type==CKEDITOR.NODE_ELEMENT&&a.is(d)&&++e};c.checkForward();if(1<e){var c=b.startPath().contains("table"),h=b.endPath().contains("table");c&&h&&b.checkBoundaryOfElement(c, 412d.createBookmark()},merge:function(a,c){if(a.mergeListBookmark){var d=a.mergeListBookmark.startNode,e=a.mergeListBookmark.endNode,f=new CKEDITOR.dom.elementPath(d,c),g=new CKEDITOR.dom.elementPath(e,c);if(a.mergeList){var k=f.contains(CKEDITOR.dtd.$list),h=g.contains(CKEDITOR.dtd.$list);k.equals(h)||(h.moveChildren(k),h.remove())}a.mergeListItems&&(f=f.contains(CKEDITOR.dtd.$listItem),g=g.contains(CKEDITOR.dtd.$listItem),f.equals(g)||b(g,d,e));d.remove();e.remove()}}},block:{detectMerge:function(a,
392CKEDITOR.START)&&b.checkBoundaryOfElement(h,CKEDITOR.END)&&(b=a.range.clone(),b.setStartBefore(c),b.setEndAfter(h),a.purgeTableBookmark=b.createBookmark())}},detectRanges:function(e,h){var f=c(h,e.bookmark),g=f.clone(),l,k,v=f.getCommonAncestor();v.is(CKEDITOR.dtd.$tableContent)&&!v.is(d)&&(v=v.getAscendant("table",!0));k=v;v=new CKEDITOR.dom.elementPath(f.startContainer,k);k=new CKEDITOR.dom.elementPath(f.endContainer,k);v=v.contains("table");k=k.contains("table");if(v||k)v&&k&&b(v,k)?(e.tableSurroundingRange= 413b){if(!a.tableContentsRanges&&!a.mergeListBookmark){var c=new CKEDITOR.dom.range(b);c.setStartBefore(a.bookmark.startNode);c.setEndAfter(a.bookmark.endNode);a.mergeBlockBookmark=c.createBookmark()}},merge:function(a,c){if(a.mergeBlockBookmark&&!a.purgeTableBookmark){var d=a.mergeBlockBookmark.startNode,e=a.mergeBlockBookmark.endNode,f=new CKEDITOR.dom.elementPath(d,c),g=new CKEDITOR.dom.elementPath(e,c),f=f.block,g=g.block;f&&g&&!f.equals(g)&&b(g,d,e);d.remove();e.remove()}}},table:function(){function a(c){var e=
393g,g.setStartAt(v,CKEDITOR.POSITION_AFTER_END),g.setEndAt(k,CKEDITOR.POSITION_BEFORE_START),g=f.clone(),g.setEndAt(v,CKEDITOR.POSITION_AFTER_END),l=f.clone(),l.setStartAt(k,CKEDITOR.POSITION_BEFORE_START),l=a(g).concat(a(l))):v?k||(e.tableSurroundingRange=g,g.setStartAt(v,CKEDITOR.POSITION_AFTER_END),f.setEndAt(v,CKEDITOR.POSITION_AFTER_END)):(e.tableSurroundingRange=g,g.setEndAt(k,CKEDITOR.POSITION_BEFORE_START),f.setStartAt(k,CKEDITOR.POSITION_AFTER_START)),e.tableContentsRanges=l?l:a(f)},deleteRanges:function(a){for(var b;b= 414[],f,g=new CKEDITOR.dom.walker(c),k=c.startPath().contains(d),h=c.endPath().contains(d),p={};g.guard=function(a,g){if(a.type==CKEDITOR.NODE_ELEMENT){var F="visited_"+(g?"out":"in");if(a.getCustomData(F))return;CKEDITOR.dom.element.setMarker(p,a,F,1)}if(g&&k&&a.equals(k))f=c.clone(),f.setEndAt(k,CKEDITOR.POSITION_BEFORE_END),e.push(f);else if(!g&&h&&a.equals(h))f=c.clone(),f.setStartAt(h,CKEDITOR.POSITION_AFTER_START),e.push(f);else{if(F=!g)F=a.type==CKEDITOR.NODE_ELEMENT&&a.is(d)&&(!k||b(a,k))&&(!h||
394a.tableContentsRanges.pop();)b.extractContents(),A(b.startContainer)&&b.startContainer.appendBogus();a.tableSurroundingRange&&a.tableSurroundingRange.extractContents()},purge:function(a){if(a.purgeTableBookmark){var b=a.doc,c=a.range.clone(),b=b.createElement("p");b.insertBefore(a.purgeTableBookmark.startNode);c.moveToBookmark(a.purgeTableBookmark);c.deleteContents();a.range.moveToPosition(b,CKEDITOR.POSITION_AFTER_START)}}}}(),detectExtractMerge:function(a){return!(a.range.startPath().contains(CKEDITOR.dtd.$listItem)&& 415b(a,h));F&&(f=c.clone(),f.selectNodeContents(a),e.push(f))}};g.lastForward();CKEDITOR.dom.element.clearAllMarkers(p);return e}function b(a,c){var d=CKEDITOR.POSITION_CONTAINS+CKEDITOR.POSITION_IS_CONTAINED,e=a.getPosition(c);return e===CKEDITOR.POSITION_IDENTICAL?!1:0===(e&d)}var d={td:1,th:1,caption:1};return{detectPurge:function(a){var b=a.range,c=b.clone();c.enlarge(CKEDITOR.ENLARGE_ELEMENT);var c=new CKEDITOR.dom.walker(c),e=0;c.evaluator=function(a){a.type==CKEDITOR.NODE_ELEMENT&&a.is(d)&&++e};
395a.range.endPath().contains(CKEDITOR.dtd.$listItem))},fixUneditableRangePosition:function(a){a.startContainer.getDtd()["#"]||a.moveToClosestEditablePosition(null,!0)},autoParagraph:function(a,b){var c=b.startPath(),d;l(a,c.block,c.blockLimit)&&(d=k(a))&&(d=b.document.createElement(d),d.appendBogus(),b.insertNode(d),b.moveToPosition(d,CKEDITOR.POSITION_AFTER_START))}}}()})(); 416c.checkForward();if(1<e){var c=b.startPath().contains("table"),f=b.endPath().contains("table");c&&f&&b.checkBoundaryOfElement(c,CKEDITOR.START)&&b.checkBoundaryOfElement(f,CKEDITOR.END)&&(b=a.range.clone(),b.setStartBefore(c),b.setEndAfter(f),a.purgeTableBookmark=b.createBookmark())}},detectRanges:function(e,f){var g=c(f,e.bookmark),k=g.clone(),h,l,p=g.getCommonAncestor();p.is(CKEDITOR.dtd.$tableContent)&&!p.is(d)&&(p=p.getAscendant("table",!0));l=p;p=new CKEDITOR.dom.elementPath(g.startContainer,
396(function(){function a(){var a=this._.fakeSelection,b;a&&(b=this.getSelection(1),b&&b.isHidden()||(a.reset(),a=0));if(!a&&(a=b||this.getSelection(1),!a||a.getType()==CKEDITOR.SELECTION_NONE))return;this.fire("selectionCheck",a);b=this.elementPath();b.compare(this._.selectionPreviousPath)||(CKEDITOR.env.webkit&&(this._.previousActive=this.document.getActive()),this._.selectionPreviousPath=b,this.fire("selectionChange",{selection:a,path:b}))}function d(){A=!0;x||(b.call(this),x=CKEDITOR.tools.setTimeout(b, 417l);l=new CKEDITOR.dom.elementPath(g.endContainer,l);p=p.contains("table");l=l.contains("table");if(p||l)p&&l&&b(p,l)?(e.tableSurroundingRange=k,k.setStartAt(p,CKEDITOR.POSITION_AFTER_END),k.setEndAt(l,CKEDITOR.POSITION_BEFORE_START),k=g.clone(),k.setEndAt(p,CKEDITOR.POSITION_AFTER_END),h=g.clone(),h.setStartAt(l,CKEDITOR.POSITION_BEFORE_START),h=a(k).concat(a(h))):p?l||(e.tableSurroundingRange=k,k.setStartAt(p,CKEDITOR.POSITION_AFTER_END),g.setEndAt(p,CKEDITOR.POSITION_AFTER_END)):(e.tableSurroundingRange=
397200,this))}function b(){x=null;A&&(CKEDITOR.tools.setTimeout(a,0,this),A=!1)}function c(a){return u(a)||a.type==CKEDITOR.NODE_ELEMENT&&!a.is(CKEDITOR.dtd.$empty)?!0:!1}function e(a){function b(c,d){return c&&c.type!=CKEDITOR.NODE_TEXT?a.clone()["moveToElementEdit"+(d?"End":"Start")](c):!1}if(!(a.root instanceof CKEDITOR.editable))return!1;var d=a.startContainer,e=a.getPreviousNode(c,null,d),f=a.getNextNode(c,null,d);return b(e)||b(f,1)||!(e||f||d.type==CKEDITOR.NODE_ELEMENT&&d.isBlockBoundary()&& 418k,k.setEndAt(l,CKEDITOR.POSITION_BEFORE_START),g.setStartAt(l,CKEDITOR.POSITION_AFTER_START)),e.tableContentsRanges=h?h:a(g)},deleteRanges:function(a){for(var b;b=a.tableContentsRanges.pop();)b.extractContents(),w(b.startContainer)&&b.startContainer.appendBogus();a.tableSurroundingRange&&a.tableSurroundingRange.extractContents()},purge:function(a){if(a.purgeTableBookmark){var b=a.doc,c=a.range.clone(),b=b.createElement("p");b.insertBefore(a.purgeTableBookmark.startNode);c.moveToBookmark(a.purgeTableBookmark);
398d.getBogus())?!0:!1}function g(a){l(a,!1);var b=a.getDocument().createText(t);a.setCustomData("cke-fillingChar",b);return b}function l(a,b){var c=a&&a.removeCustomData("cke-fillingChar");if(c){if(!1!==b){var d=a.getDocument().getSelection().getNative(),e=d&&"None"!=d.type&&d.getRangeAt(0),f=t.length;if(c.getLength()>f&&e&&e.intersectsNode(c.$)){var g=[{node:d.anchorNode,offset:d.anchorOffset},{node:d.focusNode,offset:d.focusOffset}];d.anchorNode==c.$&&d.anchorOffset>f&&(g[0].offset-=f);d.focusNode== 419c.deleteContents();a.range.moveToPosition(b,CKEDITOR.POSITION_AFTER_START)}}}}(),detectExtractMerge:function(a){return!(a.range.startPath().contains(CKEDITOR.dtd.$listItem)&&a.range.endPath().contains(CKEDITOR.dtd.$listItem))},fixUneditableRangePosition:function(a){a.startContainer.getDtd()["#"]||a.moveToClosestEditablePosition(null,!0)},autoParagraph:function(a,b){var c=b.startPath(),d;h(a,c.block,c.blockLimit)&&(d=k(a))&&(d=b.document.createElement(d),d.appendBogus(),b.insertNode(d),b.moveToPosition(d,
399c.$&&d.focusOffset>f&&(g[1].offset-=f)}}c.setText(k(c.getText(),1));g&&(c=a.getDocument().$,d=c.getSelection(),c=c.createRange(),c.setStart(g[0].node,g[0].offset),c.collapse(!0),d.removeAllRanges(),d.addRange(c),d.extend(g[1].node,g[1].offset))}}function k(a,b){return b?a.replace(z,function(a,b){return b?" ":""}):a.replace(t,"")}function n(a){var b=CKEDITOR.dom.element.createFromHtml('\x3cdiv data-cke-hidden-sel\x3d"1" data-cke-temp\x3d"1" style\x3d"'+(CKEDITOR.env.ie?"display:none":"position:fixed;top:0;left:-1000px")+ 420CKEDITOR.POSITION_AFTER_START))}}}()})();
400'"\x3e\x26nbsp;\x3c/div\x3e',a.document);a.fire("lockSnapshot");a.editable().append(b);var c=a.getSelection(1),d=a.createRange(),e=c.root.on("selectionchange",function(a){a.cancel()},null,null,0);d.setStartAt(b,CKEDITOR.POSITION_AFTER_START);d.setEndAt(b,CKEDITOR.POSITION_BEFORE_END);c.selectRanges([d]);e.removeListener();a.fire("unlockSnapshot");a._.hiddenSelectionContainer=b}function w(a){var b={37:1,39:1,8:1,46:1};return function(c){var d=c.data.getKeystroke();if(b[d]){var e=a.getSelection().getRanges(), 421(function(){function a(a,b){if(0===a.length)return!1;var c,d;if((c=!b&&1===a.length)&&!(c=a[0].collapsed)){var e=a[0];c=e.startContainer.getAscendant({td:1,th:1},!0);var f=e.endContainer.getAscendant({td:1,th:1},!0);d=CKEDITOR.tools.trim;c&&c.equals(f)&&!c.findOne("td, th, tr, tbody, table")?(e=e.cloneContents(),c=e.getFirst()?d(e.getFirst().getText())!==d(c.getText()):!0):c=!1}if(c)return!1;for(d=0;d<a.length;d++)if(c=a[d]._getTableElement(),!c)return!1;return!0}function d(a){function b(a){a=a.find("td, th");
401f=e[0];1==e.length&&f.collapsed&&(d=f[38>d?"getPreviousEditableNode":"getNextEditableNode"]())&&d.type==CKEDITOR.NODE_ELEMENT&&"false"==d.getAttribute("contenteditable")&&(a.getSelection().fake(d),c.data.preventDefault(),c.cancel())}}}function f(a){for(var b=0;b<a.length;b++){var c=a[b];c.getCommonAncestor().isReadOnly()&&a.splice(b,1);if(!c.collapsed){if(c.startContainer.isReadOnly())for(var d=c.startContainer,e;d&&!((e=d.type==CKEDITOR.NODE_ELEMENT)&&d.is("body")||!d.isReadOnly());)e&&"false"== 422var c=[],d;for(d=0;d<a.count();d++)c.push(a.getItem(d));return c}var c=[],d,e;for(e=0;e<a.length;e++)d=a[e]._getTableElement(),d.is&&d.is({td:1,th:1})?c.push(d):c=c.concat(b(d));return c}function b(a){a=d(a);var b="",c=[],e,f;for(f=0;f<a.length;f++)e&&!e.equals(a[f].getAscendant("tr"))?(b+=c.join("\t")+"\n",e=a[f].getAscendant("tr"),c=[]):0===f&&(e=a[f].getAscendant("tr")),c.push(a[f].getText());return b+=c.join("\t")}function c(a){var c=this.root.editor,d=c.getSelection(1);this.reset();I=!0;d.root.once("selectionchange",
402d.getAttribute("contentEditable")&&c.setStartAfter(d),d=d.getParent();d=c.startContainer;e=c.endContainer;var f=c.startOffset,g=c.endOffset,l=c.clone();d&&d.type==CKEDITOR.NODE_TEXT&&(f>=d.getLength()?l.setStartAfter(d):l.setStartBefore(d));e&&e.type==CKEDITOR.NODE_TEXT&&(g?l.setEndAfter(e):l.setEndBefore(e));d=new CKEDITOR.dom.walker(l);d.evaluator=function(d){if(d.type==CKEDITOR.NODE_ELEMENT&&d.isReadOnly()){var e=c.clone();c.setEndBefore(d);c.collapsed&&a.splice(b--,1);d.getPosition(l.endContainer)& 423function(a){a.cancel()},null,null,0);d.selectRanges([a[0]]);d=this._.cache;d.ranges=new CKEDITOR.dom.rangeList(a);d.type=CKEDITOR.SELECTION_TEXT;d.selectedElement=a[0]._getTableElement();d.selectedText=b(a);d.nativeSel=null;this.isFake=1;this.rev=m++;c._.fakeSelection=this;I=!1;this.root.fire("selectionchange")}function e(){var b=this._.fakeSelection,c;if(b){c=this.getSelection(1);var d;if(!(d=!c)&&(d=!c.isHidden())){d=b;var e=c.getRanges(),f=d.getRanges(),g=e.length&&e[0]._getTableElement()&&e[0]._getTableElement().getAscendant("table",
403CKEDITOR.POSITION_CONTAINS||(e.setStartAfter(d),e.collapsed||a.splice(b+1,0,e));return!0}return!1};d.next()}}return a}var x,A,u=CKEDITOR.dom.walker.invisible(1),B=function(){function a(b){return function(a){var c=a.editor.createRange();c.moveToClosestEditablePosition(a.selected,b)&&a.editor.getSelection().selectRanges([c]);return!1}}function b(a){return function(b){var c=b.editor,d=c.createRange(),e;(e=d.moveToClosestEditablePosition(b.selected,a))||(e=d.moveToClosestEditablePosition(b.selected,!a)); 424!0),k=f.length&&f[0]._getTableElement()&&f[0]._getTableElement().getAscendant("table",!0),p=1===e.length&&e[0]._getTableElement()&&e[0]._getTableElement().is("table"),h=1===f.length&&f[0]._getTableElement()&&f[0]._getTableElement().is("table"),t=1===e.length&&e[0].collapsed,f=a(e,!!CKEDITOR.env.webkit)&&a(f);g=g&&k?g.equals(k)||k.contains(g):!1;g&&(t||f)?(p&&!h&&d.selectRanges(e),d=!0):d=!1;d=!d}d&&(b.reset(),b=0)}if(!b&&(b=c||this.getSelection(1),!b||b.getType()==CKEDITOR.SELECTION_NONE))return;
404e&&c.getSelection().selectRanges([d]);c.fire("saveSnapshot");b.selected.remove();e||(d.moveToElementEditablePosition(c.editable()),c.getSelection().selectRanges([d]));c.fire("saveSnapshot");return!1}}var c=a(),d=a(1);return{37:c,38:c,39:d,40:d,8:b(),46:b(1)}}();CKEDITOR.on("instanceCreated",function(b){function c(){var a=e.getSelection();a&&a.removeAllRanges()}var e=b.editor;e.on("contentDom",function(){function b(){D=new CKEDITOR.dom.selection(e.getSelection());D.lock()}function c(){h.removeListener("mouseup", 425this.fire("selectionCheck",b);c=this.elementPath();c.compare(this._.selectionPreviousPath)||(d=this._.selectionPreviousPath&&this._.selectionPreviousPath.blockLimit.equals(c.blockLimit),CKEDITOR.env.webkit&&!d&&(this._.previousActive=this.document.getActive()),this._.selectionPreviousPath=c,this.fire("selectionChange",{selection:b,path:c}))}function g(){r=!0;l||(h.call(this),l=CKEDITOR.tools.setTimeout(h,200,this))}function h(){l=null;r&&(CKEDITOR.tools.setTimeout(e,0,this),r=!1)}function k(a){return J(a)||
405c);k.removeListener("mouseup",c);var a=CKEDITOR.document.$.selection,b=a.createRange();"None"!=a.type&&b.parentElement().ownerDocument==f.$&&b.select()}var f=e.document,h=CKEDITOR.document,g=e.editable(),p=f.getBody(),k=f.getDocumentElement(),n=g.isInline(),v,D;CKEDITOR.env.gecko&&g.attachListener(g,"focus",function(a){a.removeListener();0!==v&&(a=e.getSelection().getNative())&&a.isCollapsed&&a.anchorNode==g.$&&(a=e.createRange(),a.moveToElementEditStart(g),a.select())},null,null,-2);g.attachListener(g, 426a.type==CKEDITOR.NODE_ELEMENT&&!a.is(CKEDITOR.dtd.$empty)?!0:!1}function n(a){function b(c,d){return c&&c.type!=CKEDITOR.NODE_TEXT?a.clone()["moveToElementEdit"+(d?"End":"Start")](c):!1}if(!(a.root instanceof CKEDITOR.editable))return!1;var c=a.startContainer,d=a.getPreviousNode(k,null,c),e=a.getNextNode(k,null,c);return b(d)||b(e,1)||!(d||e||c.type==CKEDITOR.NODE_ELEMENT&&c.isBlockBoundary()&&c.getBogus())?!0:!1}function q(a){f(a,!1);var b=a.getDocument().createText(K);a.setCustomData("cke-fillingChar",
406CKEDITOR.env.webkit?"DOMFocusIn":"focus",function(){v&&CKEDITOR.env.webkit&&(v=e._.previousActive&&e._.previousActive.equals(f.getActive()));e.unlockSelection(v);v=0},null,null,-1);g.attachListener(g,"mousedown",function(){v=0});if(CKEDITOR.env.ie||n)q?g.attachListener(g,"beforedeactivate",b,null,null,-1):g.attachListener(e,"selectionCheck",b,null,null,-1),g.attachListener(g,CKEDITOR.env.webkit?"DOMFocusOut":"blur",function(){e.lockSelection(D);v=1},null,null,-1),g.attachListener(g,"mousedown",function(){v= 427b);return b}function f(a,b){var c=a&&a.removeCustomData("cke-fillingChar");if(c){if(!1!==b){var d=a.getDocument().getSelection().getNative(),e=d&&"None"!=d.type&&d.getRangeAt(0),f=K.length;if(c.getLength()>f&&e&&e.intersectsNode(c.$)){var g=[{node:d.anchorNode,offset:d.anchorOffset},{node:d.focusNode,offset:d.focusOffset}];d.anchorNode==c.$&&d.anchorOffset>f&&(g[0].offset-=f);d.focusNode==c.$&&d.focusOffset>f&&(g[1].offset-=f)}}c.setText(D(c.getText(),1));g&&(c=a.getDocument().$,d=c.getSelection(),
4070});if(CKEDITOR.env.ie&&!n){var I;g.attachListener(g,"mousedown",function(a){2==a.data.$.button&&((a=e.document.getSelection())&&a.getType()!=CKEDITOR.SELECTION_NONE||(I=e.window.getScrollPosition()))});g.attachListener(g,"mouseup",function(a){2==a.data.$.button&&I&&(e.document.$.documentElement.scrollLeft=I.x,e.document.$.documentElement.scrollTop=I.y);I=null});if("BackCompat"!=f.$.compatMode){if(CKEDITOR.env.ie7Compat||CKEDITOR.env.ie6Compat)k.on("mousedown",function(a){function b(a){a=a.data.$; 428c=c.createRange(),c.setStart(g[0].node,g[0].offset),c.collapse(!0),d.removeAllRanges(),d.addRange(c),d.extend(g[1].node,g[1].offset))}}function D(a,b){return b?a.replace(z,function(a,b){return b?" ":""}):a.replace(K,"")}function w(a,b){var c=CKEDITOR.dom.element.createFromHtml('\x3cdiv data-cke-hidden-sel\x3d"1" data-cke-temp\x3d"1" style\x3d"'+(CKEDITOR.env.ie&&14>CKEDITOR.env.version?"display:none":"position:fixed;top:0;left:-1000px")+'"\x3e'+(b||"\x26nbsp;")+"\x3c/div\x3e",a.document);a.fire("lockSnapshot");
408if(d){var c=p.$.createTextRange();try{c.moveToPoint(a.clientX,a.clientY)}catch(e){}d.setEndPoint(0>f.compareEndPoints("StartToStart",c)?"EndToEnd":"StartToStart",c);d.select()}}function c(){k.removeListener("mousemove",b);h.removeListener("mouseup",c);k.removeListener("mouseup",c);d.select()}a=a.data;if(a.getTarget().is("html")&&a.$.y<k.$.clientHeight&&a.$.x<k.$.clientWidth){var d=p.$.createTextRange();try{d.moveToPoint(a.$.clientX,a.$.clientY)}catch(e){}var f=d.duplicate();k.on("mousemove",b);h.on("mouseup", 429a.editable().append(c);var d=a.getSelection(1),e=a.createRange(),f=d.root.on("selectionchange",function(a){a.cancel()},null,null,0);e.setStartAt(c,CKEDITOR.POSITION_AFTER_START);e.setEndAt(c,CKEDITOR.POSITION_BEFORE_END);d.selectRanges([e]);f.removeListener();a.fire("unlockSnapshot");a._.hiddenSelectionContainer=c}function A(a){var b={37:1,39:1,8:1,46:1};return function(c){var d=c.data.getKeystroke();if(b[d]){var e=a.getSelection().getRanges(),f=e[0];1==e.length&&f.collapsed&&(d=f[38>d?"getPreviousEditableNode":
409c);k.on("mouseup",c)}});if(7<CKEDITOR.env.version&&11>CKEDITOR.env.version)k.on("mousedown",function(a){a.data.getTarget().is("html")&&(h.on("mouseup",c),k.on("mouseup",c))})}}g.attachListener(g,"selectionchange",a,e);g.attachListener(g,"keyup",d,e);g.attachListener(g,CKEDITOR.env.webkit?"DOMFocusIn":"focus",function(){e.forceNextSelectionCheck();e.selectionChange(1)});if(n&&(CKEDITOR.env.webkit||CKEDITOR.env.gecko)){var E;g.attachListener(g,"mousedown",function(){E=1});g.attachListener(f.getDocumentElement(), 430"getNextEditableNode"]())&&d.type==CKEDITOR.NODE_ELEMENT&&"false"==d.getAttribute("contenteditable")&&(a.getSelection().fake(d),c.data.preventDefault(),c.cancel())}}}function G(a){for(var b=0;b<a.length;b++){var c=a[b];c.getCommonAncestor().isReadOnly()&&a.splice(b,1);if(!c.collapsed){if(c.startContainer.isReadOnly())for(var d=c.startContainer,e;d&&!((e=d.type==CKEDITOR.NODE_ELEMENT)&&d.is("body")||!d.isReadOnly());)e&&"false"==d.getAttribute("contentEditable")&&c.setStartAfter(d),d=d.getParent();
410"mouseup",function(){E&&d.call(e);E=0})}else g.attachListener(CKEDITOR.env.ie?g:f.getDocumentElement(),"mouseup",d,e);CKEDITOR.env.webkit&&g.attachListener(f,"keydown",function(a){switch(a.data.getKey()){case 13:case 33:case 34:case 35:case 36:case 37:case 39:case 8:case 45:case 46:l(g)}},null,null,-1);g.attachListener(g,"keydown",w(e),null,null,-1)});e.on("setData",function(){e.unlockSelection();CKEDITOR.env.webkit&&c()});e.on("contentDomUnload",function(){e.unlockSelection()});if(CKEDITOR.env.ie9Compat)e.on("beforeDestroy", 431d=c.startContainer;e=c.endContainer;var f=c.startOffset,g=c.endOffset,p=c.clone();d&&d.type==CKEDITOR.NODE_TEXT&&(f>=d.getLength()?p.setStartAfter(d):p.setStartBefore(d));e&&e.type==CKEDITOR.NODE_TEXT&&(g?p.setEndAfter(e):p.setEndBefore(e));d=new CKEDITOR.dom.walker(p);d.evaluator=function(d){if(d.type==CKEDITOR.NODE_ELEMENT&&d.isReadOnly()){var e=c.clone();c.setEndBefore(d);c.collapsed&&a.splice(b--,1);d.getPosition(p.endContainer)&CKEDITOR.POSITION_CONTAINS||(e.setStartAfter(d),e.collapsed||a.splice(b+
411c,null,null,9);e.on("dataReady",function(){delete e._.fakeSelection;delete e._.hiddenSelectionContainer;e.selectionChange(1)});e.on("loadSnapshot",function(){var a=CKEDITOR.dom.walker.nodeType(CKEDITOR.NODE_ELEMENT),b=e.editable().getLast(a);b&&b.hasAttribute("data-cke-hidden-sel")&&(b.remove(),CKEDITOR.env.gecko&&(a=e.editable().getFirst(a))&&a.is("br")&&a.getAttribute("_moz_editor_bogus_node")&&a.remove())},null,null,100);e.on("key",function(a){if("wysiwyg"==e.mode){var b=e.getSelection();if(b.isFake){var c= 4321,0,e));return!0}return!1};d.next()}}return a}var x="function"!=typeof window.getSelection,m=1,K=CKEDITOR.tools.repeat("​",7),z=new RegExp(K+"( )?","g"),I,l,r,J=CKEDITOR.dom.walker.invisible(1),H=function(){function a(b){return function(a){var c=a.editor.createRange();c.moveToClosestEditablePosition(a.selected,b)&&a.editor.getSelection().selectRanges([c]);return!1}}function b(a){return function(b){var c=b.editor,d=c.createRange(),e;(e=d.moveToClosestEditablePosition(b.selected,a))||(e=d.moveToClosestEditablePosition(b.selected,
412B[a.data.keyCode];if(c)return c({editor:e,selected:b.getSelectedElement(),selection:b,keyEvent:a})}}})});if(CKEDITOR.env.webkit)CKEDITOR.on("instanceReady",function(a){var b=a.editor;b.on("selectionChange",function(){var a=b.editable(),c=a.getCustomData("cke-fillingChar");c&&(c.getCustomData("ready")?l(a):c.setCustomData("ready",1))},null,null,-1);b.on("beforeSetMode",function(){l(b.editable())},null,null,-1);b.on("getSnapshot",function(a){a.data&&(a.data=k(a.data))},b,null,20);b.on("toDataFormat", 433!a));e&&c.getSelection().selectRanges([d]);c.fire("saveSnapshot");b.selected.remove();e||(d.moveToElementEditablePosition(c.editable()),c.getSelection().selectRanges([d]));c.fire("saveSnapshot");return!1}}var c=a(),d=a(1);return{37:c,38:c,39:d,40:d,8:b(),46:b(1)}}();CKEDITOR.on("instanceCreated",function(a){function b(){var a=c.getSelection();a&&a.removeAllRanges()}var c=a.editor;c.on("contentDom",function(){function a(){q=new CKEDITOR.dom.selection(c.getSelection());q.lock()}function b(){p.removeListener("mouseup",
413function(a){a.data.dataValue=k(a.data.dataValue)},null,null,0)});CKEDITOR.editor.prototype.selectionChange=function(b){(b?a:d).call(this)};CKEDITOR.editor.prototype.getSelection=function(a){return!this._.savedSelection&&!this._.fakeSelection||a?(a=this.editable())&&"wysiwyg"==this.mode?new CKEDITOR.dom.selection(a):null:this._.savedSelection||this._.fakeSelection};CKEDITOR.editor.prototype.lockSelection=function(a){a=a||this.getSelection(1);return a.getType()!=CKEDITOR.SELECTION_NONE?(!a.isLocked&& 434b);u.removeListener("mouseup",b);var a=CKEDITOR.document.$.selection,c=a.createRange();"None"!=a.type&&c.parentElement()&&c.parentElement().ownerDocument==k.$&&c.select()}function d(a){if(CKEDITOR.env.ie){var b=(a=a.getRanges()[0])?a.startContainer.getAscendant(function(a){return a.type==CKEDITOR.NODE_ELEMENT&&("false"==a.getAttribute("contenteditable")||"true"==a.getAttribute("contenteditable"))},!0):null;return a&&"false"==b.getAttribute("contenteditable")&&b}}var k=c.document,p=CKEDITOR.document,
414a.lock(),this._.savedSelection=a,!0):!1};CKEDITOR.editor.prototype.unlockSelection=function(a){var b=this._.savedSelection;return b?(b.unlock(a),delete this._.savedSelection,!0):!1};CKEDITOR.editor.prototype.forceNextSelectionCheck=function(){delete this._.selectionPreviousPath};CKEDITOR.dom.document.prototype.getSelection=function(){return new CKEDITOR.dom.selection(this)};CKEDITOR.dom.range.prototype.select=function(){var a=this.root instanceof CKEDITOR.editable?this.root.editor.getSelection(): 435h=c.editable(),t=k.getBody(),u=k.getDocumentElement(),l=h.isInline(),y,q;CKEDITOR.env.gecko&&h.attachListener(h,"focus",function(a){a.removeListener();0!==y&&(a=c.getSelection().getNative())&&a.isCollapsed&&a.anchorNode==h.$&&(a=c.createRange(),a.moveToElementEditStart(h),a.select())},null,null,-2);h.attachListener(h,CKEDITOR.env.webkit?"DOMFocusIn":"focus",function(){y&&CKEDITOR.env.webkit&&(y=c._.previousActive&&c._.previousActive.equals(k.getActive()))&&null!=c._.previousScrollTop&&c._.previousScrollTop!=
415new CKEDITOR.dom.selection(this.root);a.selectRanges([this]);return a};CKEDITOR.SELECTION_NONE=1;CKEDITOR.SELECTION_TEXT=2;CKEDITOR.SELECTION_ELEMENT=3;var q="function"!=typeof window.getSelection,y=1;CKEDITOR.dom.selection=function(a){if(a instanceof CKEDITOR.dom.selection){var b=a;a=a.root}var c=a instanceof CKEDITOR.dom.element;this.rev=b?b.rev:y++;this.document=a instanceof CKEDITOR.dom.document?a:a.getDocument();this.root=c?a:this.document.getBody();this.isLocked=0;this._={cache:{}};if(b)return CKEDITOR.tools.extend(this._.cache, 436h.$.scrollTop&&(h.$.scrollTop=c._.previousScrollTop);c.unlockSelection(y);y=0},null,null,-1);h.attachListener(h,"mousedown",function(){y=0});if(CKEDITOR.env.ie||l)x?h.attachListener(h,"beforedeactivate",a,null,null,-1):h.attachListener(c,"selectionCheck",a,null,null,-1),h.attachListener(h,CKEDITOR.env.webkit?"DOMFocusOut":"blur",function(){c.lockSelection(q);y=1},null,null,-1),h.attachListener(h,"mousedown",function(){y=0});if(CKEDITOR.env.ie&&!l){var n;h.attachListener(h,"mousedown",function(a){2==
416b._.cache),this.isFake=b.isFake,this.isLocked=b.isLocked,this;a=this.getNative();var d,e;if(a)if(a.getRangeAt)d=(e=a.rangeCount&&a.getRangeAt(0))&&new CKEDITOR.dom.node(e.commonAncestorContainer);else{try{e=a.createRange()}catch(f){}d=e&&CKEDITOR.dom.element.get(e.item&&e.item(0)||e.parentElement())}if(!d||d.type!=CKEDITOR.NODE_ELEMENT&&d.type!=CKEDITOR.NODE_TEXT||!this.root.equals(d)&&!this.root.contains(d))this._.cache.type=CKEDITOR.SELECTION_NONE,this._.cache.startElement=null,this._.cache.selectedElement= 437a.data.$.button&&((a=c.document.getSelection())&&a.getType()!=CKEDITOR.SELECTION_NONE||(n=c.window.getScrollPosition()))});h.attachListener(h,"mouseup",function(a){2==a.data.$.button&&n&&(c.document.$.documentElement.scrollLeft=n.x,c.document.$.documentElement.scrollTop=n.y);n=null});if("BackCompat"!=k.$.compatMode){if(CKEDITOR.env.ie7Compat||CKEDITOR.env.ie6Compat){var m,w;u.on("mousedown",function(a){function b(a){a=a.data.$;if(m){var c=t.$.createTextRange();try{c.moveToPoint(a.clientX,a.clientY)}catch(d){}m.setEndPoint(0>
417null,this._.cache.selectedText="",this._.cache.ranges=new CKEDITOR.dom.rangeList;return this};var F={img:1,hr:1,li:1,table:1,tr:1,td:1,th:1,embed:1,object:1,ol:1,ul:1,a:1,input:1,form:1,select:1,textarea:1,button:1,fieldset:1,thead:1,tfoot:1},t=CKEDITOR.tools.repeat("​",7),z=new RegExp(t+"( )?","g");CKEDITOR.tools.extend(CKEDITOR.dom.selection,{_removeFillingCharSequenceString:k,_createFillingCharSequenceNode:g,FILLING_CHAR_SEQUENCE:t});CKEDITOR.dom.selection.prototype={getNative:function(){return void 0!== 438w.compareEndPoints("StartToStart",c)?"EndToEnd":"StartToStart",c);m.select()}}function c(){u.removeListener("mousemove",b);p.removeListener("mouseup",c);u.removeListener("mouseup",c);m.select()}a=a.data;if(a.getTarget().is("html")&&a.$.y<u.$.clientHeight&&a.$.x<u.$.clientWidth){m=t.$.createTextRange();try{m.moveToPoint(a.$.clientX,a.$.clientY)}catch(d){}w=m.duplicate();u.on("mousemove",b);p.on("mouseup",c);u.on("mouseup",c)}})}if(7<CKEDITOR.env.version&&11>CKEDITOR.env.version)u.on("mousedown",function(a){a.data.getTarget().is("html")&&
418this._.cache.nativeSel?this._.cache.nativeSel:this._.cache.nativeSel=q?this.document.$.selection:this.document.getWindow().$.getSelection()},getType:q?function(){var a=this._.cache;if(a.type)return a.type;var b=CKEDITOR.SELECTION_NONE;try{var c=this.getNative(),d=c.type;"Text"==d&&(b=CKEDITOR.SELECTION_TEXT);"Control"==d&&(b=CKEDITOR.SELECTION_ELEMENT);c.createRange().parentElement()&&(b=CKEDITOR.SELECTION_TEXT)}catch(e){}return a.type=b}:function(){var a=this._.cache;if(a.type)return a.type;var b= 439(p.on("mouseup",b),u.on("mouseup",b))})}}h.attachListener(h,"selectionchange",e,c);h.attachListener(h,"keyup",g,c);h.attachListener(h,"keydown",function(a){var b=this.getSelection(1);d(b)&&(b.selectElement(d(b)),a.data.preventDefault())},c);h.attachListener(h,CKEDITOR.env.webkit?"DOMFocusIn":"focus",function(){c.forceNextSelectionCheck();c.selectionChange(1)});if(l&&(CKEDITOR.env.webkit||CKEDITOR.env.gecko)){var r;h.attachListener(h,"mousedown",function(){r=1});h.attachListener(k.getDocumentElement(),
419CKEDITOR.SELECTION_TEXT,c=this.getNative();if(!c||!c.rangeCount)b=CKEDITOR.SELECTION_NONE;else if(1==c.rangeCount){var c=c.getRangeAt(0),d=c.startContainer;d==c.endContainer&&1==d.nodeType&&1==c.endOffset-c.startOffset&&F[d.childNodes[c.startOffset].nodeName.toLowerCase()]&&(b=CKEDITOR.SELECTION_ELEMENT)}return a.type=b},getRanges:function(){var a=q?function(){function a(b){return(new CKEDITOR.dom.node(b)).getIndex()}var b=function(b,c){b=b.duplicate();b.collapse(c);var d=b.parentElement();if(!d.hasChildNodes())return{container:d, 440"mouseup",function(){r&&g.call(c);r=0})}else h.attachListener(CKEDITOR.env.ie?h:k.getDocumentElement(),"mouseup",g,c);CKEDITOR.env.webkit&&h.attachListener(k,"keydown",function(a){switch(a.data.getKey()){case 13:case 33:case 34:case 35:case 36:case 37:case 39:case 8:case 45:case 46:h.hasFocus&&f(h)}},null,null,-1);h.attachListener(h,"keydown",A(c),null,null,-1)});c.on("setData",function(){c.unlockSelection();CKEDITOR.env.webkit&&b()});c.on("contentDomUnload",function(){c.unlockSelection()});if(CKEDITOR.env.ie9Compat)c.on("beforeDestroy",
420offset:0};for(var e=d.children,f,g,h=b.duplicate(),l=0,v=e.length-1,k=-1,m,E;l<=v;)if(k=Math.floor((l+v)/2),f=e[k],h.moveToElementText(f),m=h.compareEndPoints("StartToStart",b),0<m)v=k-1;else if(0>m)l=k+1;else return{container:d,offset:a(f)};if(-1==k||k==e.length-1&&0>m){h.moveToElementText(d);h.setEndPoint("StartToStart",b);h=h.text.replace(/(\r\n|\r)/g,"\n").length;e=d.childNodes;if(!h)return f=e[e.length-1],f.nodeType!=CKEDITOR.NODE_TEXT?{container:d,offset:e.length}:{container:f,offset:f.nodeValue.length}; 441b,null,null,9);c.on("dataReady",function(){delete c._.fakeSelection;delete c._.hiddenSelectionContainer;c.selectionChange(1)});c.on("loadSnapshot",function(){var a=CKEDITOR.dom.walker.nodeType(CKEDITOR.NODE_ELEMENT),b=c.editable().getLast(a);b&&b.hasAttribute("data-cke-hidden-sel")&&(b.remove(),CKEDITOR.env.gecko&&(a=c.editable().getFirst(a))&&a.is("br")&&a.getAttribute("_moz_editor_bogus_node")&&a.remove())},null,null,100);c.on("key",function(a){if("wysiwyg"==c.mode){var b=c.getSelection();if(b.isFake){var d=
421for(d=e.length;0<h&&0<d;)g=e[--d],g.nodeType==CKEDITOR.NODE_TEXT&&(E=g,h-=g.nodeValue.length);return{container:E,offset:-h}}h.collapse(0<m?!0:!1);h.setEndPoint(0<m?"StartToStart":"EndToStart",b);h=h.text.replace(/(\r\n|\r)/g,"\n").length;if(!h)return{container:d,offset:a(f)+(0<m?0:1)};for(;0<h;)try{g=f[0<m?"previousSibling":"nextSibling"],g.nodeType==CKEDITOR.NODE_TEXT&&(h-=g.nodeValue.length,E=g),f=g}catch(n){return{container:d,offset:a(f)}}return{container:E,offset:0<m?-h:E.nodeValue.length+h}}; 442H[a.data.keyCode];if(d)return d({editor:c,selected:b.getSelectedElement(),selection:b,keyEvent:a})}}})});if(CKEDITOR.env.webkit)CKEDITOR.on("instanceReady",function(a){var b=a.editor;b.on("selectionChange",function(){var a=b.editable(),c=a.getCustomData("cke-fillingChar");c&&(c.getCustomData("ready")?(f(a),a.editor.fire("selectionCheck")):c.setCustomData("ready",1))},null,null,-1);b.on("beforeSetMode",function(){f(b.editable())},null,null,-1);b.on("getSnapshot",function(a){a.data&&(a.data=D(a.data))},
422return function(){var a=this.getNative(),c=a&&a.createRange(),d=this.getType();if(!a)return[];if(d==CKEDITOR.SELECTION_TEXT)return a=new CKEDITOR.dom.range(this.root),d=b(c,!0),a.setStart(new CKEDITOR.dom.node(d.container),d.offset),d=b(c),a.setEnd(new CKEDITOR.dom.node(d.container),d.offset),a.endContainer.getPosition(a.startContainer)&CKEDITOR.POSITION_PRECEDING&&a.endOffset<=a.startContainer.getIndex()&&a.collapse(),[a];if(d==CKEDITOR.SELECTION_ELEMENT){for(var d=[],e=0;e<c.length;e++){for(var f= 443b,null,20);b.on("toDataFormat",function(a){a.data.dataValue=D(a.data.dataValue)},null,null,0)});CKEDITOR.editor.prototype.selectionChange=function(a){(a?e:g).call(this)};CKEDITOR.editor.prototype.getSelection=function(a){return!this._.savedSelection&&!this._.fakeSelection||a?(a=this.editable())&&"wysiwyg"==this.mode?new CKEDITOR.dom.selection(a):null:this._.savedSelection||this._.fakeSelection};CKEDITOR.editor.prototype.lockSelection=function(a){a=a||this.getSelection(1);return a.getType()!=CKEDITOR.SELECTION_NONE?
423c.item(e),h=f.parentNode,g=0,a=new CKEDITOR.dom.range(this.root);g<h.childNodes.length&&h.childNodes[g]!=f;g++);a.setStart(new CKEDITOR.dom.node(h),g);a.setEnd(new CKEDITOR.dom.node(h),g+1);d.push(a)}return d}return[]}}():function(){var a=[],b,c=this.getNative();if(!c)return a;for(var d=0;d<c.rangeCount;d++){var e=c.getRangeAt(d);b=new CKEDITOR.dom.range(this.root);b.setStart(new CKEDITOR.dom.node(e.startContainer),e.startOffset);b.setEnd(new CKEDITOR.dom.node(e.endContainer),e.endOffset);a.push(b)}return a}; 444(!a.isLocked&&a.lock(),this._.savedSelection=a,!0):!1};CKEDITOR.editor.prototype.unlockSelection=function(a){var b=this._.savedSelection;return b?(b.unlock(a),delete this._.savedSelection,!0):!1};CKEDITOR.editor.prototype.forceNextSelectionCheck=function(){delete this._.selectionPreviousPath};CKEDITOR.dom.document.prototype.getSelection=function(){return new CKEDITOR.dom.selection(this)};CKEDITOR.dom.range.prototype.select=function(){var a=this.root instanceof CKEDITOR.editable?this.root.editor.getSelection():
424return function(b){var c=this._.cache,d=c.ranges;d||(c.ranges=d=new CKEDITOR.dom.rangeList(a.call(this)));return b?f(new CKEDITOR.dom.rangeList(d.slice())):d}}(),getStartElement:function(){var a=this._.cache;if(void 0!==a.startElement)return a.startElement;var b;switch(this.getType()){case CKEDITOR.SELECTION_ELEMENT:return this.getSelectedElement();case CKEDITOR.SELECTION_TEXT:var c=this.getRanges()[0];if(c){if(c.collapsed)b=c.startContainer,b.type!=CKEDITOR.NODE_ELEMENT&&(b=b.getParent());else{for(c.optimize();b= 445new CKEDITOR.dom.selection(this.root);a.selectRanges([this]);return a};CKEDITOR.SELECTION_NONE=1;CKEDITOR.SELECTION_TEXT=2;CKEDITOR.SELECTION_ELEMENT=3;CKEDITOR.dom.selection=function(a){if(a instanceof CKEDITOR.dom.selection){var b=a;a=a.root}var c=a instanceof CKEDITOR.dom.element;this.rev=b?b.rev:m++;this.document=a instanceof CKEDITOR.dom.document?a:a.getDocument();this.root=c?a:this.document.getBody();this.isLocked=0;this._={cache:{}};if(b)return CKEDITOR.tools.extend(this._.cache,b._.cache),
425c.startContainer,c.startOffset==(b.getChildCount?b.getChildCount():b.getLength())&&!b.isBlockBoundary();)c.setStartAfter(b);b=c.startContainer;if(b.type!=CKEDITOR.NODE_ELEMENT)return b.getParent();if((b=b.getChild(c.startOffset))&&b.type==CKEDITOR.NODE_ELEMENT)for(c=b.getFirst();c&&c.type==CKEDITOR.NODE_ELEMENT;)b=c,c=c.getFirst();else b=c.startContainer}b=b.$}}return a.startElement=b?new CKEDITOR.dom.element(b):null},getSelectedElement:function(){var a=this._.cache;if(void 0!==a.selectedElement)return a.selectedElement; 446this.isFake=b.isFake,this.isLocked=b.isLocked,this;a=this.getNative();var d,e;if(a)if(a.getRangeAt)d=(e=a.rangeCount&&a.getRangeAt(0))&&new CKEDITOR.dom.node(e.commonAncestorContainer);else{try{e=a.createRange()}catch(f){}d=e&&CKEDITOR.dom.element.get(e.item&&e.item(0)||e.parentElement())}if(!d||d.type!=CKEDITOR.NODE_ELEMENT&&d.type!=CKEDITOR.NODE_TEXT||!this.root.equals(d)&&!this.root.contains(d))this._.cache.type=CKEDITOR.SELECTION_NONE,this._.cache.startElement=null,this._.cache.selectedElement=
426var b=this,c=CKEDITOR.tools.tryThese(function(){return b.getNative().createRange().item(0)},function(){for(var a=b.getRanges()[0].clone(),c,d,e=2;e&&!((c=a.getEnclosedNode())&&c.type==CKEDITOR.NODE_ELEMENT&&F[c.getName()]&&(d=c));e--)a.shrink(CKEDITOR.SHRINK_ELEMENT);return d&&d.$});return a.selectedElement=c?new CKEDITOR.dom.element(c):null},getSelectedText:function(){var a=this._.cache;if(void 0!==a.selectedText)return a.selectedText;var b=this.getNative(),b=q?"Control"==b.type?"":b.createRange().text: 447null,this._.cache.selectedText="",this._.cache.ranges=new CKEDITOR.dom.rangeList;return this};var E={img:1,hr:1,li:1,table:1,tr:1,td:1,th:1,embed:1,object:1,ol:1,ul:1,a:1,input:1,form:1,select:1,textarea:1,button:1,fieldset:1,thead:1,tfoot:1};CKEDITOR.tools.extend(CKEDITOR.dom.selection,{_removeFillingCharSequenceString:D,_createFillingCharSequenceNode:q,FILLING_CHAR_SEQUENCE:K});CKEDITOR.dom.selection.prototype={getNative:function(){return void 0!==this._.cache.nativeSel?this._.cache.nativeSel:this._.cache.nativeSel=
427b.toString();return a.selectedText=b},lock:function(){this.getRanges();this.getStartElement();this.getSelectedElement();this.getSelectedText();this._.cache.nativeSel=null;this.isLocked=1},unlock:function(a){if(this.isLocked){if(a)var b=this.getSelectedElement(),c=!b&&this.getRanges(),d=this.isFake;this.isLocked=0;this.reset();a&&(a=b||c[0]&&c[0].getCommonAncestor())&&a.getAscendant("body",1)&&(d?this.fake(b):b?this.selectElement(b):this.selectRanges(c))}},reset:function(){this._.cache={};this.isFake= 448x?this.document.$.selection:this.document.getWindow().$.getSelection()},getType:x?function(){var a=this._.cache;if(a.type)return a.type;var b=CKEDITOR.SELECTION_NONE;try{var c=this.getNative(),d=c.type;"Text"==d&&(b=CKEDITOR.SELECTION_TEXT);"Control"==d&&(b=CKEDITOR.SELECTION_ELEMENT);c.createRange().parentElement()&&(b=CKEDITOR.SELECTION_TEXT)}catch(e){}return a.type=b}:function(){var a=this._.cache;if(a.type)return a.type;var b=CKEDITOR.SELECTION_TEXT,c=this.getNative();if(!c||!c.rangeCount)b=CKEDITOR.SELECTION_NONE;
4280;var a=this.root.editor;if(a&&a._.fakeSelection)if(this.rev==a._.fakeSelection.rev){delete a._.fakeSelection;var b=a._.hiddenSelectionContainer;if(b){var c=a.checkDirty();a.fire("lockSnapshot");b.remove();a.fire("unlockSnapshot");!c&&a.resetDirty()}delete a._.hiddenSelectionContainer}else CKEDITOR.warn("selection-fake-reset");this.rev=y++},selectElement:function(a){var b=new CKEDITOR.dom.range(this.root);b.setStartBefore(a);b.setEndAfter(a);this.selectRanges([b])},selectRanges:function(a){var b= 449else if(1==c.rangeCount){var c=c.getRangeAt(0),d=c.startContainer;d==c.endContainer&&1==d.nodeType&&1==c.endOffset-c.startOffset&&E[d.childNodes[c.startOffset].nodeName.toLowerCase()]&&(b=CKEDITOR.SELECTION_ELEMENT)}return a.type=b},getRanges:function(){var a=x?function(){function a(b){return(new CKEDITOR.dom.node(b)).getIndex()}var b=function(b,c){b=b.duplicate();b.collapse(c);var d=b.parentElement();if(!d.hasChildNodes())return{container:d,offset:0};for(var e=d.children,f,g,h=b.duplicate(),k=0,
429this.root.editor,b=b&&b._.hiddenSelectionContainer;this.reset();if(b)for(var b=this.root,c,d=0;d<a.length;++d)c=a[d],c.endContainer.equals(b)&&(c.endOffset=Math.min(c.endOffset,b.getChildCount()));if(a.length)if(this.isLocked){var f=CKEDITOR.document.getActive();this.unlock();this.selectRanges(a);this.lock();f&&!f.equals(this.root)&&f.focus()}else{var k;a:{var n,w;if(1==a.length&&!(w=a[0]).collapsed&&(k=w.getEnclosedNode())&&k.type==CKEDITOR.NODE_ELEMENT&&(w=w.clone(),w.shrink(CKEDITOR.SHRINK_ELEMENT, 450l=e.length-1,u=-1,q,n;k<=l;)if(u=Math.floor((k+l)/2),f=e[u],h.moveToElementText(f),q=h.compareEndPoints("StartToStart",b),0<q)l=u-1;else if(0>q)k=u+1;else return{container:d,offset:a(f)};if(-1==u||u==e.length-1&&0>q){h.moveToElementText(d);h.setEndPoint("StartToStart",b);h=h.text.replace(/(\r\n|\r)/g,"\n").length;e=d.childNodes;if(!h)return f=e[e.length-1],f.nodeType!=CKEDITOR.NODE_TEXT?{container:d,offset:e.length}:{container:f,offset:f.nodeValue.length};for(d=e.length;0<h&&0<d;)g=e[--d],g.nodeType==
430!0),(n=w.getEnclosedNode())&&n.type==CKEDITOR.NODE_ELEMENT&&(k=n),"false"==k.getAttribute("contenteditable")))break a;k=void 0}if(k)this.fake(k);else{if(q){w=CKEDITOR.dom.walker.whitespaces(!0);n=/\ufeff|\u00a0/;b={table:1,tbody:1,tr:1};1<a.length&&(k=a[a.length-1],a[0].setEnd(k.endContainer,k.endOffset));k=a[0];a=k.collapsed;var u,t,x;if((c=k.getEnclosedNode())&&c.type==CKEDITOR.NODE_ELEMENT&&c.getName()in F&&(!c.is("a")||!c.getText()))try{x=c.$.createControlRange();x.addElement(c.$);x.select(); 451CKEDITOR.NODE_TEXT&&(n=g,h-=g.nodeValue.length);return{container:n,offset:-h}}h.collapse(0<q?!0:!1);h.setEndPoint(0<q?"StartToStart":"EndToStart",b);h=h.text.replace(/(\r\n|\r)/g,"\n").length;if(!h)return{container:d,offset:a(f)+(0<q?0:1)};for(;0<h;)try{g=f[0<q?"previousSibling":"nextSibling"],g.nodeType==CKEDITOR.NODE_TEXT&&(h-=g.nodeValue.length,n=g),f=g}catch(m){return{container:d,offset:a(f)}}return{container:n,offset:0<q?-h:n.nodeValue.length+h}};return function(){var a=this.getNative(),c=a&&
431return}catch(v){}if(k.startContainer.type==CKEDITOR.NODE_ELEMENT&&k.startContainer.getName()in b||k.endContainer.type==CKEDITOR.NODE_ELEMENT&&k.endContainer.getName()in b)k.shrink(CKEDITOR.NODE_ELEMENT,!0),a=k.collapsed;x=k.createBookmark();b=x.startNode;a||(f=x.endNode);x=k.document.$.body.createTextRange();x.moveToElementText(b.$);x.moveStart("character",1);f?(n=k.document.$.body.createTextRange(),n.moveToElementText(f.$),x.setEndPoint("EndToEnd",n),x.moveEnd("character",-1)):(u=b.getNext(w),t= 452a.createRange(),d=this.getType();if(!a)return[];if(d==CKEDITOR.SELECTION_TEXT)return a=new CKEDITOR.dom.range(this.root),d=b(c,!0),a.setStart(new CKEDITOR.dom.node(d.container),d.offset),d=b(c),a.setEnd(new CKEDITOR.dom.node(d.container),d.offset),a.endContainer.getPosition(a.startContainer)&CKEDITOR.POSITION_PRECEDING&&a.endOffset<=a.startContainer.getIndex()&&a.collapse(),[a];if(d==CKEDITOR.SELECTION_ELEMENT){for(var d=[],e=0;e<c.length;e++){for(var f=c.item(e),g=f.parentNode,h=0,a=new CKEDITOR.dom.range(this.root);h<
432b.hasAscendant("pre"),u=!(u&&u.getText&&u.getText().match(n))&&(t||!b.hasPrevious()||b.getPrevious().is&&b.getPrevious().is("br")),t=k.document.createElement("span"),t.setHtml("\x26#65279;"),t.insertBefore(b),u&&k.document.createText("").insertBefore(b));k.setStartBefore(b);b.remove();a?(u?(x.moveStart("character",-1),x.select(),k.document.$.selection.clear()):x.select(),k.moveToPosition(t,CKEDITOR.POSITION_BEFORE_START),t.remove()):(k.setEndBefore(f),f.remove(),x.select())}else{f=this.getNative(); 453g.childNodes.length&&g.childNodes[h]!=f;h++);a.setStart(new CKEDITOR.dom.node(g),h);a.setEnd(new CKEDITOR.dom.node(g),h+1);d.push(a)}return d}return[]}}():function(){var a=[],b,c=this.getNative();if(!c)return a;for(var d=0;d<c.rangeCount;d++){var e=c.getRangeAt(d);b=new CKEDITOR.dom.range(this.root);b.setStart(new CKEDITOR.dom.node(e.startContainer),e.startOffset);b.setEnd(new CKEDITOR.dom.node(e.endContainer),e.endOffset);a.push(b)}return a};return function(b){var c=this._.cache,d=c.ranges;d||(c.ranges=
433if(!f)return;this.removeAllRanges();for(x=0;x<a.length;x++){if(x<a.length-1&&(u=a[x],t=a[x+1],n=u.clone(),n.setStart(u.endContainer,u.endOffset),n.setEnd(t.startContainer,t.startOffset),!n.collapsed&&(n.shrink(CKEDITOR.NODE_ELEMENT,!0),k=n.getCommonAncestor(),n=n.getEnclosedNode(),k.isReadOnly()||n&&n.isReadOnly()))){t.setStart(u.startContainer,u.startOffset);a.splice(x--,1);continue}k=a[x];t=this.document.$.createRange();k.collapsed&&CKEDITOR.env.webkit&&e(k)&&(n=g(this.root),k.insertNode(n),(u= 454d=new CKEDITOR.dom.rangeList(a.call(this)));return b?G(new CKEDITOR.dom.rangeList(d.slice())):d}}(),getStartElement:function(){var a=this._.cache;if(void 0!==a.startElement)return a.startElement;var b;switch(this.getType()){case CKEDITOR.SELECTION_ELEMENT:return this.getSelectedElement();case CKEDITOR.SELECTION_TEXT:var c=this.getRanges()[0];if(c){if(c.collapsed)b=c.startContainer,b.type!=CKEDITOR.NODE_ELEMENT&&(b=b.getParent());else{for(c.optimize();b=c.startContainer,c.startOffset==(b.getChildCount?
434n.getNext())&&!n.getPrevious()&&u.type==CKEDITOR.NODE_ELEMENT&&"br"==u.getName()?(l(this.root),k.moveToPosition(u,CKEDITOR.POSITION_BEFORE_START)):k.moveToPosition(n,CKEDITOR.POSITION_AFTER_END));t.setStart(k.startContainer.$,k.startOffset);try{t.setEnd(k.endContainer.$,k.endOffset)}catch(D){if(0<=D.toString().indexOf("NS_ERROR_ILLEGAL_VALUE"))k.collapse(1),t.setEnd(k.endContainer.$,k.endOffset);else throw D;}f.addRange(t)}}this.reset();this.root.fire("selectionchange")}}},fake:function(a){var b= 455b.getChildCount():b.getLength())&&!b.isBlockBoundary();)c.setStartAfter(b);b=c.startContainer;if(b.type!=CKEDITOR.NODE_ELEMENT)return b.getParent();if((b=b.getChild(c.startOffset))&&b.type==CKEDITOR.NODE_ELEMENT)for(c=b.getFirst();c&&c.type==CKEDITOR.NODE_ELEMENT;)b=c,c=c.getFirst();else b=c.startContainer}b=b.$}}return a.startElement=b?new CKEDITOR.dom.element(b):null},getSelectedElement:function(){var a=this._.cache;if(void 0!==a.selectedElement)return a.selectedElement;var b=this,c=CKEDITOR.tools.tryThese(function(){return b.getNative().createRange().item(0)},
435this.root.editor;this.reset();n(b);var c=this._.cache,d=new CKEDITOR.dom.range(this.root);d.setStartBefore(a);d.setEndAfter(a);c.ranges=new CKEDITOR.dom.rangeList(d);c.selectedElement=c.startElement=a;c.type=CKEDITOR.SELECTION_ELEMENT;c.selectedText=c.nativeSel=null;this.isFake=1;this.rev=y++;b._.fakeSelection=this;this.root.fire("selectionchange")},isHidden:function(){var a=this.getCommonAncestor();a&&a.type==CKEDITOR.NODE_TEXT&&(a=a.getParent());return!(!a||!a.data("cke-hidden-sel"))},createBookmarks:function(a){a= 456function(){for(var a=b.getRanges()[0].clone(),c,d,e=2;e&&!((c=a.getEnclosedNode())&&c.type==CKEDITOR.NODE_ELEMENT&&E[c.getName()]&&(d=c));e--)a.shrink(CKEDITOR.SHRINK_ELEMENT);return d&&d.$});return a.selectedElement=c?new CKEDITOR.dom.element(c):null},getSelectedText:function(){var a=this._.cache;if(void 0!==a.selectedText)return a.selectedText;var b=this.getNative(),b=x?"Control"==b.type?"":b.createRange().text:b.toString();return a.selectedText=b},lock:function(){this.getRanges();this.getStartElement();
436this.getRanges().createBookmarks(a);this.isFake&&(a.isFake=1);return a},createBookmarks2:function(a){a=this.getRanges().createBookmarks2(a);this.isFake&&(a.isFake=1);return a},selectBookmarks:function(a){for(var b=[],c,d=0;d<a.length;d++){var e=new CKEDITOR.dom.range(this.root);e.moveToBookmark(a[d]);b.push(e)}a.isFake&&(c=b[0].getEnclosedNode(),c&&c.type==CKEDITOR.NODE_ELEMENT||(CKEDITOR.warn("selection-not-fake"),a.isFake=0));a.isFake?this.fake(c):this.selectRanges(b);return this},getCommonAncestor:function(){var a= 457this.getSelectedElement();this.getSelectedText();this._.cache.nativeSel=null;this.isLocked=1},unlock:function(b){if(this.isLocked){if(b)var d=this.getSelectedElement(),e=this.getRanges(),f=this.isFake;this.isLocked=0;this.reset();b&&(b=d||e[0]&&e[0].getCommonAncestor())&&b.getAscendant("body",1)&&(a(e)?c.call(this,e):f?this.fake(d):d?this.selectElement(d):this.selectRanges(e))}},reset:function(){this._.cache={};this.isFake=0;var a=this.root.editor;if(a&&a._.fakeSelection)if(this.rev==a._.fakeSelection.rev){delete a._.fakeSelection;
437this.getRanges();return a.length?a[0].startContainer.getCommonAncestor(a[a.length-1].endContainer):null},scrollIntoView:function(){this.type!=CKEDITOR.SELECTION_NONE&&this.getRanges()[0].scrollIntoView()},removeAllRanges:function(){if(this.getType()!=CKEDITOR.SELECTION_NONE){var a=this.getNative();try{a&&a[q?"empty":"removeAllRanges"]()}catch(b){}this.reset()}}}})();"use strict";CKEDITOR.STYLE_BLOCK=1;CKEDITOR.STYLE_INLINE=2;CKEDITOR.STYLE_OBJECT=3; 458var b=a._.hiddenSelectionContainer;if(b){var c=a.checkDirty();a.fire("lockSnapshot");b.remove();a.fire("unlockSnapshot");!c&&a.resetDirty()}delete a._.hiddenSelectionContainer}else CKEDITOR.warn("selection-fake-reset");this.rev=m++},selectElement:function(a){var b=new CKEDITOR.dom.range(this.root);b.setStartBefore(a);b.setEndAfter(a);this.selectRanges([b])},selectRanges:function(b){var d=this.root.editor,e=d&&d._.hiddenSelectionContainer;this.reset();if(e)for(var e=this.root,g,h=0;h<b.length;++h)g=
438(function(){function a(a,b){for(var c,d;(a=a.getParent())&&!a.equals(b);)if(a.getAttribute("data-nostyle"))c=a;else if(!d){var e=a.getAttribute("contentEditable");"false"==e?c=a:"true"==e&&(d=1)}return c}function d(a,b,c,d){return(a.getPosition(b)|d)==d&&(!c.childRule||c.childRule(a))}function b(c){var f=c.document;if(c.collapsed)f=F(this,f),c.insertNode(f),c.moveToPosition(f,CKEDITOR.POSITION_BEFORE_END);else{var g=this.element,h=this._.definition,l,k=h.ignoreReadonly,m=k||h.includeReadonly;null== 459b[h],g.endContainer.equals(e)&&(g.endOffset=Math.min(g.endOffset,e.getChildCount()));if(b.length)if(this.isLocked){var k=CKEDITOR.document.getActive();this.unlock();this.selectRanges(b);this.lock();k&&!k.equals(this.root)&&k.focus()}else{var l;a:{var p,C;if(1==b.length&&!(C=b[0]).collapsed&&(l=C.getEnclosedNode())&&l.type==CKEDITOR.NODE_ELEMENT&&(C=C.clone(),C.shrink(CKEDITOR.SHRINK_ELEMENT,!0),(p=C.getEnclosedNode())&&p.type==CKEDITOR.NODE_ELEMENT&&(l=p),"false"==l.getAttribute("contenteditable")))break a;
439m&&(m=c.root.getCustomData("cke_includeReadonly"));var n=CKEDITOR.dtd[g];n||(l=!0,n=CKEDITOR.dtd.span);c.enlarge(CKEDITOR.ENLARGE_INLINE,1);c.trim();var p=c.createBookmark(),q=p.startNode,w=p.endNode,r=q,u;if(!k){var x=c.getCommonAncestor(),k=a(q,x),x=a(w,x);k&&(r=k.getNextSourceNode(!0));x&&(w=x)}for(r.getPosition(w)==CKEDITOR.POSITION_FOLLOWING&&(r=0);r;){k=!1;if(r.equals(w))r=null,k=!0;else{var t=r.type==CKEDITOR.NODE_ELEMENT?r.getName():null,x=t&&"false"==r.getAttribute("contentEditable"),y=t&& 460l=void 0}if(l)this.fake(l);else if(d&&d.plugins.tableselection&&CKEDITOR.plugins.tableselection.isSupportedEnvironment&&a(b)&&!I)c.call(this,b);else{if(x){p=CKEDITOR.dom.walker.whitespaces(!0);l=/\ufeff|\u00a0/;C={table:1,tbody:1,tr:1};1<b.length&&(d=b[b.length-1],b[0].setEnd(d.endContainer,d.endOffset));d=b[0];b=d.collapsed;var t,F,m;if((e=d.getEnclosedNode())&&e.type==CKEDITOR.NODE_ELEMENT&&e.getName()in E&&(!e.is("a")||!e.getText()))try{m=e.$.createControlRange();m.addElement(e.$);m.select();return}catch(w){}if(d.startContainer.type==
440r.getAttribute("data-nostyle");if(t&&r.data("cke-bookmark")){r=r.getNextSourceNode(!0);continue}if(x&&m&&CKEDITOR.dtd.$block[t])for(var A=r,z=e(A),C=void 0,G=z.length,H=0,A=G&&new CKEDITOR.dom.range(A.getDocument());H<G;++H){var C=z[H],R=CKEDITOR.filter.instances[C.data("cke-filter")];if(R?R.check(this):1)A.selectNodeContents(C),b.call(this,A)}z=t?!n[t]||y?0:x&&!m?0:d(r,w,h,M):1;if(z)if(C=r.getParent(),z=h,G=g,H=l,!C||!(C.getDtd()||CKEDITOR.dtd.span)[G]&&!H||z.parentRule&&!z.parentRule(C))k=!0;else{if(u|| 461CKEDITOR.NODE_ELEMENT&&d.startContainer.getName()in C||d.endContainer.type==CKEDITOR.NODE_ELEMENT&&d.endContainer.getName()in C)d.shrink(CKEDITOR.NODE_ELEMENT,!0),b=d.collapsed;m=d.createBookmark();C=m.startNode;b||(k=m.endNode);m=d.document.$.body.createTextRange();m.moveToElementText(C.$);m.moveStart("character",1);k?(l=d.document.$.body.createTextRange(),l.moveToElementText(k.$),m.setEndPoint("EndToEnd",l),m.moveEnd("character",-1)):(t=C.getNext(p),F=C.hasAscendant("pre"),t=!(t&&t.getText&&t.getText().match(l))&&
441t&&CKEDITOR.dtd.$removeEmpty[t]&&(r.getPosition(w)|M)!=M||(u=c.clone(),u.setStartBefore(r)),t=r.type,t==CKEDITOR.NODE_TEXT||x||t==CKEDITOR.NODE_ELEMENT&&!r.getChildCount()){for(var t=r,Y;(k=!t.getNext(K))&&(Y=t.getParent(),n[Y.getName()])&&d(Y,q,h,Q);)t=Y;u.setEndAfter(t)}}else k=!0;r=r.getNextSourceNode(y||x)}if(k&&u&&!u.collapsed){for(var k=F(this,f),x=k.hasAttributes(),y=u.getCommonAncestor(),t={},z={},C={},G={},U,P,da;k&&y;){if(y.getName()==g){for(U in h.attributes)!G[U]&&(da=y.getAttribute(P))&& 462(F||!C.hasPrevious()||C.getPrevious().is&&C.getPrevious().is("br")),F=d.document.createElement("span"),F.setHtml("\x26#65279;"),F.insertBefore(C),t&&d.document.createText("").insertBefore(C));d.setStartBefore(C);C.remove();b?(t?(m.moveStart("character",-1),m.select(),d.document.$.selection.clear()):m.select(),d.moveToPosition(F,CKEDITOR.POSITION_BEFORE_START),F.remove()):(d.setEndBefore(k),k.remove(),m.select())}else{k=this.getNative();if(!k)return;this.removeAllRanges();for(m=0;m<b.length;m++){if(m<
442(k.getAttribute(U)==da?z[U]=1:G[U]=1);for(P in h.styles)!C[P]&&(da=y.getStyle(P))&&(k.getStyle(P)==da?t[P]=1:C[P]=1)}y=y.getParent()}for(U in z)k.removeAttribute(U);for(P in t)k.removeStyle(P);x&&!k.hasAttributes()&&(k=null);k?(u.extractContents().appendTo(k),u.insertNode(k),B.call(this,k),k.mergeSiblings(),CKEDITOR.env.ie||k.$.normalize()):(k=new CKEDITOR.dom.element("span"),u.extractContents().appendTo(k),u.insertNode(k),B.call(this,k),k.remove(!0));u=null}}c.moveToBookmark(p);c.shrink(CKEDITOR.SHRINK_TEXT); 463b.length-1&&(t=b[m],F=b[m+1],l=t.clone(),l.setStart(t.endContainer,t.endOffset),l.setEnd(F.startContainer,F.startOffset),!l.collapsed&&(l.shrink(CKEDITOR.NODE_ELEMENT,!0),d=l.getCommonAncestor(),l=l.getEnclosedNode(),d.isReadOnly()||l&&l.isReadOnly()))){F.setStart(t.startContainer,t.startOffset);b.splice(m--,1);continue}d=b[m];F=this.document.$.createRange();d.collapsed&&CKEDITOR.env.webkit&&n(d)&&(l=q(this.root),d.insertNode(l),(t=l.getNext())&&!l.getPrevious()&&t.type==CKEDITOR.NODE_ELEMENT&&"br"==
443c.shrink(CKEDITOR.NODE_ELEMENT,!0)}}function c(a){function b(){for(var a=new CKEDITOR.dom.elementPath(d.getParent()),c=new CKEDITOR.dom.elementPath(m.getParent()),e=null,f=null,g=0;g<a.elements.length;g++){var h=a.elements[g];if(h==a.block||h==a.blockLimit)break;n.checkElementRemovable(h,!0)&&(e=h)}for(g=0;g<c.elements.length;g++){h=c.elements[g];if(h==c.block||h==c.blockLimit)break;n.checkElementRemovable(h,!0)&&(f=h)}f&&m.breakParent(f);e&&d.breakParent(e)}a.enlarge(CKEDITOR.ENLARGE_INLINE,1);var c= 464t.getName()?(f(this.root),d.moveToPosition(t,CKEDITOR.POSITION_BEFORE_START)):d.moveToPosition(l,CKEDITOR.POSITION_AFTER_END));F.setStart(d.startContainer.$,d.startOffset);try{F.setEnd(d.endContainer.$,d.endOffset)}catch(r){if(0<=r.toString().indexOf("NS_ERROR_ILLEGAL_VALUE"))d.collapse(1),F.setEnd(d.endContainer.$,d.endOffset);else throw r;}k.addRange(F)}}this.reset();this.root.fire("selectionchange")}}},fake:function(a,b){var c=this.root.editor;void 0===b&&a.hasAttribute("aria-label")&&(b=a.getAttribute("aria-label"));
444a.createBookmark(),d=c.startNode;if(a.collapsed){for(var e=new CKEDITOR.dom.elementPath(d.getParent(),a.root),f,g=0,k;g<e.elements.length&&(k=e.elements[g])&&k!=e.block&&k!=e.blockLimit;g++)if(this.checkElementRemovable(k)){var l;a.collapsed&&(a.checkBoundaryOfElement(k,CKEDITOR.END)||(l=a.checkBoundaryOfElement(k,CKEDITOR.START)))?(f=k,f.match=l?"start":"end"):(k.mergeSiblings(),k.is(this.element)?u.call(this,k):q(k,h(this)[k.getName()]))}if(f){k=d;for(g=0;;g++){l=e.elements[g];if(l.equals(f))break; 465this.reset();w(c,b);var d=this._.cache,e=new CKEDITOR.dom.range(this.root);e.setStartBefore(a);e.setEndAfter(a);d.ranges=new CKEDITOR.dom.rangeList(e);d.selectedElement=d.startElement=a;d.type=CKEDITOR.SELECTION_ELEMENT;d.selectedText=d.nativeSel=null;this.isFake=1;this.rev=m++;c._.fakeSelection=this;this.root.fire("selectionchange")},isHidden:function(){var a=this.getCommonAncestor();a&&a.type==CKEDITOR.NODE_TEXT&&(a=a.getParent());return!(!a||!a.data("cke-hidden-sel"))},isInTable:function(b){return a(this.getRanges(),
445else if(l.match)continue;else l=l.clone();l.append(k);k=l}k["start"==f.match?"insertBefore":"insertAfter"](f)}}else{var m=c.endNode,n=this;b();for(e=d;!e.equals(m);)f=e.getNextSourceNode(),e.type==CKEDITOR.NODE_ELEMENT&&this.checkElementRemovable(e)&&(e.getName()==this.element?u.call(this,e):q(e,h(this)[e.getName()]),f.type==CKEDITOR.NODE_ELEMENT&&f.contains(d)&&(b(),f=d.getNext())),e=f}a.moveToBookmark(c);a.shrink(CKEDITOR.NODE_ELEMENT,!0)}function e(a){var b=[];a.forEach(function(a){if("true"== 466b)},isCollapsed:function(){var a=this.getRanges();return 1===a.length&&a[0].collapsed},createBookmarks:function(a){a=this.getRanges().createBookmarks(a);this.isFake&&(a.isFake=1);return a},createBookmarks2:function(a){a=this.getRanges().createBookmarks2(a);this.isFake&&(a.isFake=1);return a},selectBookmarks:function(b){for(var c=[],d,e=0;e<b.length;e++){var f=new CKEDITOR.dom.range(this.root);f.moveToBookmark(b[e]);c.push(f)}b.isFake&&(d=a(c)?c[0]._getTableElement():c[0].getEnclosedNode(),d&&d.type==
446a.getAttribute("contenteditable"))return b.push(a),!1},CKEDITOR.NODE_ELEMENT,!0);return b}function g(a){var b=a.getEnclosedNode()||a.getCommonAncestor(!1,!0);(a=(new CKEDITOR.dom.elementPath(b,a.root)).contains(this.element,1))&&!a.isReadOnly()&&t(a,this)}function l(a){var b=a.getCommonAncestor(!0,!0);if(a=(new CKEDITOR.dom.elementPath(b,a.root)).contains(this.element,1)){var b=this._.definition,c=b.attributes;if(c)for(var d in c)a.removeAttribute(d,c[d]);if(b.styles)for(var e in b.styles)b.styles.hasOwnProperty(e)&& 467CKEDITOR.NODE_ELEMENT||(CKEDITOR.warn("selection-not-fake"),b.isFake=0));b.isFake&&!a(c)?this.fake(d):this.selectRanges(c);return this},getCommonAncestor:function(){var a=this.getRanges();return a.length?a[0].startContainer.getCommonAncestor(a[a.length-1].endContainer):null},scrollIntoView:function(){this.type!=CKEDITOR.SELECTION_NONE&&this.getRanges()[0].scrollIntoView()},removeAllRanges:function(){if(this.getType()!=CKEDITOR.SELECTION_NONE){var a=this.getNative();try{a&&a[x?"empty":"removeAllRanges"]()}catch(b){}this.reset()}}}})();
447a.removeStyle(e)}}function k(a){var b=a.createBookmark(!0),c=a.createIterator();c.enforceRealBlocks=!0;this._.enterMode&&(c.enlargeBr=this._.enterMode!=CKEDITOR.ENTER_BR);for(var d,e=a.document,f;d=c.getNextParagraph();)!d.isReadOnly()&&(c.activeFilter?c.activeFilter.check(this):1)&&(f=F(this,e,d),w(d,f));a.moveToBookmark(b)}function n(a){var b=a.createBookmark(1),c=a.createIterator();c.enforceRealBlocks=!0;c.enlargeBr=this._.enterMode!=CKEDITOR.ENTER_BR;for(var d,e;d=c.getNextParagraph();)this.checkElementRemovable(d)&& 468"use strict";CKEDITOR.STYLE_BLOCK=1;CKEDITOR.STYLE_INLINE=2;CKEDITOR.STYLE_OBJECT=3;
448(d.is("pre")?((e=this._.enterMode==CKEDITOR.ENTER_BR?null:a.document.createElement(this._.enterMode==CKEDITOR.ENTER_P?"p":"div"))&&d.copyAttributes(e),w(d,e)):u.call(this,d));a.moveToBookmark(b)}function w(a,b){var c=!b;c&&(b=a.getDocument().createElement("div"),a.copyAttributes(b));var d=b&&b.is("pre"),e=a.is("pre"),g=!d&&e;if(d&&!e){e=b;(g=a.getBogus())&&g.remove();g=a.getHtml();g=x(g,/(?:^[ \t\n\r]+)|(?:[ \t\n\r]+$)/g,"");g=g.replace(/[ \t\r\n]*(<br[^>]*>)[ \t\r\n]*/gi,"$1");g=g.replace(/([ \t\n\r]+|&nbsp;)/g, 469(function(){function a(a,b){for(var c,d;(a=a.getParent())&&!a.equals(b);)if(a.getAttribute("data-nostyle"))c=a;else if(!d){var e=a.getAttribute("contentEditable");"false"==e?c=a:"true"==e&&(d=1)}return c}function d(a,b,c,d){return(a.getPosition(b)|d)==d&&(!c.childRule||c.childRule(a))}function b(c){var f=c.document;if(c.collapsed)f=K(this,f),c.insertNode(f),c.moveToPosition(f,CKEDITOR.POSITION_BEFORE_END);else{var g=this.element,h=this._.definition,k,l=h.ignoreReadonly,m=l||h.includeReadonly;null==
449" ");g=g.replace(/<br\b[^>]*>/gi,"\n");if(CKEDITOR.env.ie){var h=a.getDocument().createElement("div");h.append(e);e.$.outerHTML="\x3cpre\x3e"+g+"\x3c/pre\x3e";e.copyAttributes(h.getFirst());e=h.getFirst().remove()}else e.setHtml(g);b=e}else g?b=A(c?[a.getHtml()]:f(a),b):a.moveChildren(b);b.replace(a);if(d){var c=b,k;(k=c.getPrevious(R))&&k.type==CKEDITOR.NODE_ELEMENT&&k.is("pre")&&(d=x(k.getHtml(),/\n$/,"")+"\n\n"+x(c.getHtml(),/^\n/,""),CKEDITOR.env.ie?c.$.outerHTML="\x3cpre\x3e"+d+"\x3c/pre\x3e": 470m&&(m=c.root.getCustomData("cke_includeReadonly"));var q=CKEDITOR.dtd[g];q||(k=!0,q=CKEDITOR.dtd.span);c.enlarge(CKEDITOR.ENLARGE_INLINE,1);c.trim();var n=c.createBookmark(),w=n.startNode,u=n.endNode,r=w,v;if(!l){var x=c.getCommonAncestor(),l=a(w,x),x=a(u,x);l&&(r=l.getNextSourceNode(!0));x&&(u=x)}for(r.getPosition(u)==CKEDITOR.POSITION_FOLLOWING&&(r=0);r;){l=!1;if(r.equals(u))r=null,l=!0;else{var A=r.type==CKEDITOR.NODE_ELEMENT?r.getName():null,x=A&&"false"==r.getAttribute("contentEditable"),D=A&&
450c.setHtml(d),k.remove())}else c&&y(b)}function f(a){var b=[];x(a.getOuterHtml(),/(\S\s*)\n(?:\s|(<span[^>]+data-cke-bookmark.*?\/span>))*\n(?!$)/gi,function(a,b,c){return b+"\x3c/pre\x3e"+c+"\x3cpre\x3e"}).replace(/<pre\b.*?>([\s\S]*?)<\/pre>/gi,function(a,c){b.push(c)});return b}function x(a,b,c){var d="",e="";a=a.replace(/(^<span[^>]+data-cke-bookmark.*?\/span>)|(<span[^>]+data-cke-bookmark.*?\/span>$)/gi,function(a,b,c){b&&(d=b);c&&(e=c);return""});return d+a.replace(b,c)+e}function A(a,b){var c; 471r.getAttribute("data-nostyle");if(A&&r.data("cke-bookmark")){r=r.getNextSourceNode(!0);continue}if(x&&m&&CKEDITOR.dtd.$block[A])for(var z=r,y=e(z),E=void 0,H=y.length,I=0,z=H&&new CKEDITOR.dom.range(z.getDocument());I<H;++I){var E=y[I],J=CKEDITOR.filter.instances[E.data("cke-filter")];if(J?J.check(this):1)z.selectNodeContents(E),b.call(this,z)}y=A?!q[A]||D?0:x&&!m?0:d(r,u,h,V):1;if(y)if(E=r.getParent(),y=h,H=g,I=k,!E||!(E.getDtd()||CKEDITOR.dtd.span)[H]&&!I||y.parentRule&&!y.parentRule(E))l=!0;else{if(v||
4511<a.length&&(c=new CKEDITOR.dom.documentFragment(b.getDocument()));for(var d=0;d<a.length;d++){var e=a[d],e=e.replace(/(\r\n|\r)/g,"\n"),e=x(e,/^[ \t]*\n/,""),e=x(e,/\n$/,""),e=x(e,/^[ \t]+|[ \t]+$/g,function(a,b){return 1==a.length?"\x26nbsp;":b?" "+CKEDITOR.tools.repeat("\x26nbsp;",a.length-1):CKEDITOR.tools.repeat("\x26nbsp;",a.length-1)+" "}),e=e.replace(/\n/g,"\x3cbr\x3e"),e=e.replace(/[ \t]{2,}/g,function(a){return CKEDITOR.tools.repeat("\x26nbsp;",a.length-1)+" "});if(c){var f=b.clone();f.setHtml(e); 472A&&CKEDITOR.dtd.$removeEmpty[A]&&(r.getPosition(u)|V)!=V||(v=c.clone(),v.setStartBefore(r)),A=r.type,A==CKEDITOR.NODE_TEXT||x||A==CKEDITOR.NODE_ELEMENT&&!r.getChildCount()){for(var A=r,L;(l=!A.getNext(B))&&(L=A.getParent(),q[L.getName()])&&d(L,w,h,O);)A=L;v.setEndAfter(A)}}else l=!0;r=r.getNextSourceNode(D||x)}if(l&&v&&!v.collapsed){for(var l=K(this,f),x=l.hasAttributes(),D=v.getCommonAncestor(),A={},y={},E={},H={},T,Q,ba;l&&D;){if(D.getName()==g){for(T in h.attributes)!H[T]&&(ba=D.getAttribute(Q))&&
452c.append(f)}else b.setHtml(e)}return c||b}function u(a,b){var c=this._.definition,d=c.attributes,c=c.styles,e=h(this)[a.getName()],f=CKEDITOR.tools.isEmpty(d)&&CKEDITOR.tools.isEmpty(c),g;for(g in d)if("class"!=g&&!this._.definition.fullMatch||a.getAttribute(g)==p(g,d[g]))b&&"data-"==g.slice(0,5)||(f=a.hasAttribute(g),a.removeAttribute(g));for(var k in c)this._.definition.fullMatch&&a.getStyle(k)!=p(k,c[k],!0)||(f=f||!!a.getStyle(k),a.removeStyle(k));q(a,e,C[a.getName()]);f&&(this._.definition.alwaysRemoveElement? 473(l.getAttribute(T)==ba?y[T]=1:H[T]=1);for(Q in h.styles)!E[Q]&&(ba=D.getStyle(Q))&&(l.getStyle(Q)==ba?A[Q]=1:E[Q]=1)}D=D.getParent()}for(T in y)l.removeAttribute(T);for(Q in A)l.removeStyle(Q);x&&!l.hasAttributes()&&(l=null);l?(v.extractContents().appendTo(l),v.insertNode(l),G.call(this,l),l.mergeSiblings(),CKEDITOR.env.ie||l.$.normalize()):(l=new CKEDITOR.dom.element("span"),v.extractContents().appendTo(l),v.insertNode(l),G.call(this,l),l.remove(!0));v=null}}c.moveToBookmark(n);c.shrink(CKEDITOR.SHRINK_TEXT);
453y(a,1):!CKEDITOR.dtd.$block[a.getName()]||this._.enterMode==CKEDITOR.ENTER_BR&&!a.hasAttributes()?y(a):a.renameNode(this._.enterMode==CKEDITOR.ENTER_P?"p":"div"))}function B(a){for(var b=h(this),c=a.getElementsByTag(this.element),d,e=c.count();0<=--e;)d=c.getItem(e),d.isReadOnly()||u.call(this,d,!0);for(var f in b)if(f!=this.element)for(c=a.getElementsByTag(f),e=c.count()-1;0<=e;e--)d=c.getItem(e),d.isReadOnly()||q(d,b[f])}function q(a,b,c){if(b=b&&b.attributes)for(var d=0;d<b.length;d++){var e=b[d][0], 474c.shrink(CKEDITOR.NODE_ELEMENT,!0)}}function c(a){function b(){for(var a=new CKEDITOR.dom.elementPath(d.getParent()),c=new CKEDITOR.dom.elementPath(q.getParent()),e=null,f=null,g=0;g<a.elements.length;g++){var h=a.elements[g];if(h==a.block||h==a.blockLimit)break;n.checkElementRemovable(h,!0)&&(e=h)}for(g=0;g<c.elements.length;g++){h=c.elements[g];if(h==c.block||h==c.blockLimit)break;n.checkElementRemovable(h,!0)&&(f=h)}f&&q.breakParent(f);e&&d.breakParent(e)}a.enlarge(CKEDITOR.ENLARGE_INLINE,1);var c=
454f;if(f=a.getAttribute(e)){var g=b[d][1];(null===g||g.test&&g.test(f)||"string"==typeof g&&f==g)&&a.removeAttribute(e)}}c||y(a)}function y(a,b){if(!a.hasAttributes()||b)if(CKEDITOR.dtd.$block[a.getName()]){var c=a.getPrevious(R),d=a.getNext(R);!c||c.type!=CKEDITOR.NODE_TEXT&&c.isBlockBoundary({br:1})||a.append("br",1);!d||d.type!=CKEDITOR.NODE_TEXT&&d.isBlockBoundary({br:1})||a.append("br");a.remove(!0)}else c=a.getFirst(),d=a.getLast(),a.remove(!0),c&&(c.type==CKEDITOR.NODE_ELEMENT&&c.mergeSiblings(), 475a.createBookmark(),d=c.startNode,e=this._.definition.alwaysRemoveElement;if(a.collapsed){for(var f=new CKEDITOR.dom.elementPath(d.getParent(),a.root),g,h=0,k;h<f.elements.length&&(k=f.elements[h])&&k!=f.block&&k!=f.blockLimit;h++)if(this.checkElementRemovable(k)){var m;!e&&a.collapsed&&(a.checkBoundaryOfElement(k,CKEDITOR.END)||(m=a.checkBoundaryOfElement(k,CKEDITOR.START)))?(g=k,g.match=m?"start":"end"):(k.mergeSiblings(),k.is(this.element)?A.call(this,k):x(k,l(this)[k.getName()]))}if(g){e=d;for(h=
455d&&!c.equals(d)&&d.type==CKEDITOR.NODE_ELEMENT&&d.mergeSiblings())}function F(a,b,c){var d;d=a.element;"*"==d&&(d="span");d=new CKEDITOR.dom.element(d,b);c&&c.copyAttributes(d);d=t(d,a);b.getCustomData("doc_processing_style")&&d.hasAttribute("id")?d.removeAttribute("id"):b.setCustomData("doc_processing_style",1);return d}function t(a,b){var c=b._.definition,d=c.attributes,c=CKEDITOR.style.getStyleText(c);if(d)for(var e in d)a.setAttribute(e,d[e]);c&&a.setAttribute("style",c);return a}function z(a, 4760;;h++){k=f.elements[h];if(k.equals(g))break;else if(k.match)continue;else k=k.clone();k.append(e);e=k}e["start"==g.match?"insertBefore":"insertAfter"](g)}}else{var q=c.endNode,n=this;b();for(f=d;!f.equals(q);)g=f.getNextSourceNode(),f.type==CKEDITOR.NODE_ELEMENT&&this.checkElementRemovable(f)&&(f.getName()==this.element?A.call(this,f):x(f,l(this)[f.getName()]),g.type==CKEDITOR.NODE_ELEMENT&&g.contains(d)&&(b(),g=d.getNext())),f=g}a.moveToBookmark(c);a.shrink(CKEDITOR.NODE_ELEMENT,!0)}function e(a){var b=
456b){for(var c in a)a[c]=a[c].replace(H,function(a,c){return b[c]})}function h(a){if(a._.overrides)return a._.overrides;var b=a._.overrides={},c=a._.definition.overrides;if(c){CKEDITOR.tools.isArray(c)||(c=[c]);for(var d=0;d<c.length;d++){var e=c[d],f,g;"string"==typeof e?f=e.toLowerCase():(f=e.element?e.element.toLowerCase():a.element,g=e.attributes);e=b[f]||(b[f]={});if(g){var e=e.attributes=e.attributes||[],h;for(h in g)e.push([h.toLowerCase(),g[h]])}}}return b}function p(a,b,c){var d=new CKEDITOR.dom.element("span"); 477[];a.forEach(function(a){if("true"==a.getAttribute("contenteditable"))return b.push(a),!1},CKEDITOR.NODE_ELEMENT,!0);return b}function g(a){var b=a.getEnclosedNode()||a.getCommonAncestor(!1,!0);(a=(new CKEDITOR.dom.elementPath(b,a.root)).contains(this.element,1))&&!a.isReadOnly()&&z(a,this)}function h(a){var b=a.getCommonAncestor(!0,!0);if(a=(new CKEDITOR.dom.elementPath(b,a.root)).contains(this.element,1)){var b=this._.definition,c=b.attributes;if(c)for(var d in c)a.removeAttribute(d,c[d]);if(b.styles)for(var e in b.styles)b.styles.hasOwnProperty(e)&&
457d[c?"setStyle":"setAttribute"](a,b);return d[c?"getStyle":"getAttribute"](a)}function m(a,b,c){var d=a.document,e=a.getRanges();b=b?this.removeFromRange:this.applyToRange;for(var f,g=e.createIterator();f=g.getNextRange();)b.call(this,f,c);a.selectRanges(e);d.removeCustomData("doc_processing_style")}var C={address:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,p:1,pre:1,section:1,header:1,footer:1,nav:1,article:1,aside:1,figure:1,dialog:1,hgroup:1,time:1,meter:1,menu:1,command:1,keygen:1,output:1,progress:1, 478a.removeStyle(e)}}function k(a){var b=a.createBookmark(!0),c=a.createIterator();c.enforceRealBlocks=!0;this._.enterMode&&(c.enlargeBr=this._.enterMode!=CKEDITOR.ENTER_BR);for(var d,e=a.document,f;d=c.getNextParagraph();)!d.isReadOnly()&&(c.activeFilter?c.activeFilter.check(this):1)&&(f=K(this,e,d),q(d,f));a.moveToBookmark(b)}function n(a){var b=a.createBookmark(1),c=a.createIterator();c.enforceRealBlocks=!0;c.enlargeBr=this._.enterMode!=CKEDITOR.ENTER_BR;for(var d,e;d=c.getNextParagraph();)this.checkElementRemovable(d)&&
458details:1,datagrid:1,datalist:1},r={a:1,blockquote:1,embed:1,hr:1,img:1,li:1,object:1,ol:1,table:1,td:1,tr:1,th:1,ul:1,dl:1,dt:1,dd:1,form:1,audio:1,video:1},G=/\s*(?:;\s*|$)/,H=/#\((.+?)\)/g,K=CKEDITOR.dom.walker.bookmark(0,1),R=CKEDITOR.dom.walker.whitespaces(1);CKEDITOR.style=function(a,b){if("string"==typeof a.type)return new CKEDITOR.style.customHandlers[a.type](a);var c=a.attributes;c&&c.style&&(a.styles=CKEDITOR.tools.extend({},a.styles,CKEDITOR.tools.parseCssText(c.style)),delete c.style); 479(d.is("pre")?((e=this._.enterMode==CKEDITOR.ENTER_BR?null:a.document.createElement(this._.enterMode==CKEDITOR.ENTER_P?"p":"div"))&&d.copyAttributes(e),q(d,e)):A.call(this,d));a.moveToBookmark(b)}function q(a,b){var c=!b;c&&(b=a.getDocument().createElement("div"),a.copyAttributes(b));var d=b&&b.is("pre"),e=a.is("pre"),g=!d&&e;if(d&&!e){e=b;(g=a.getBogus())&&g.remove();g=a.getHtml();g=D(g,/(?:^[ \t\n\r]+)|(?:[ \t\n\r]+$)/g,"");g=g.replace(/[ \t\r\n]*(<br[^>]*>)[ \t\r\n]*/gi,"$1");g=g.replace(/([ \t\n\r]+|&nbsp;)/g,
459b&&(a=CKEDITOR.tools.clone(a),z(a.attributes,b),z(a.styles,b));c=this.element=a.element?"string"==typeof a.element?a.element.toLowerCase():a.element:"*";this.type=a.type||(C[c]?CKEDITOR.STYLE_BLOCK:r[c]?CKEDITOR.STYLE_OBJECT:CKEDITOR.STYLE_INLINE);"object"==typeof this.element&&(this.type=CKEDITOR.STYLE_OBJECT);this._={definition:a}};CKEDITOR.style.prototype={apply:function(a){if(a instanceof CKEDITOR.dom.document)return m.call(this,a.getSelection());if(this.checkApplicable(a.elementPath(),a)){var b= 480" ");g=g.replace(/<br\b[^>]*>/gi,"\n");if(CKEDITOR.env.ie){var h=a.getDocument().createElement("div");h.append(e);e.$.outerHTML="\x3cpre\x3e"+g+"\x3c/pre\x3e";e.copyAttributes(h.getFirst());e=h.getFirst().remove()}else e.setHtml(g);b=e}else g?b=w(c?[a.getHtml()]:f(a),b):a.moveChildren(b);b.replace(a);if(d){var c=b,k;(k=c.getPrevious(L))&&k.type==CKEDITOR.NODE_ELEMENT&&k.is("pre")&&(d=D(k.getHtml(),/\n$/,"")+"\n\n"+D(c.getHtml(),/^\n/,""),CKEDITOR.env.ie?c.$.outerHTML="\x3cpre\x3e"+d+"\x3c/pre\x3e":
460this._.enterMode;b||(this._.enterMode=a.activeEnterMode);m.call(this,a.getSelection(),0,a);this._.enterMode=b}},remove:function(a){if(a instanceof CKEDITOR.dom.document)return m.call(this,a.getSelection(),1);if(this.checkApplicable(a.elementPath(),a)){var b=this._.enterMode;b||(this._.enterMode=a.activeEnterMode);m.call(this,a.getSelection(),1,a);this._.enterMode=b}},applyToRange:function(a){this.applyToRange=this.type==CKEDITOR.STYLE_INLINE?b:this.type==CKEDITOR.STYLE_BLOCK?k:this.type==CKEDITOR.STYLE_OBJECT? 481c.setHtml(d),k.remove())}else c&&m(b)}function f(a){var b=[];D(a.getOuterHtml(),/(\S\s*)\n(?:\s|(<span[^>]+data-cke-bookmark.*?\/span>))*\n(?!$)/gi,function(a,b,c){return b+"\x3c/pre\x3e"+c+"\x3cpre\x3e"}).replace(/<pre\b.*?>([\s\S]*?)<\/pre>/gi,function(a,c){b.push(c)});return b}function D(a,b,c){var d="",e="";a=a.replace(/(^<span[^>]+data-cke-bookmark.*?\/span>)|(<span[^>]+data-cke-bookmark.*?\/span>$)/gi,function(a,b,c){b&&(d=b);c&&(e=c);return""});return d+a.replace(b,c)+e}function w(a,b){var c;
461g:null;return this.applyToRange(a)},removeFromRange:function(a){this.removeFromRange=this.type==CKEDITOR.STYLE_INLINE?c:this.type==CKEDITOR.STYLE_BLOCK?n:this.type==CKEDITOR.STYLE_OBJECT?l:null;return this.removeFromRange(a)},applyToObject:function(a){t(a,this)},checkActive:function(a,b){switch(this.type){case CKEDITOR.STYLE_BLOCK:return this.checkElementRemovable(a.block||a.blockLimit,!0,b);case CKEDITOR.STYLE_OBJECT:case CKEDITOR.STYLE_INLINE:for(var c=a.elements,d=0,e;d<c.length;d++)if(e=c[d], 4821<a.length&&(c=new CKEDITOR.dom.documentFragment(b.getDocument()));for(var d=0;d<a.length;d++){var e=a[d],e=e.replace(/(\r\n|\r)/g,"\n"),e=D(e,/^[ \t]*\n/,""),e=D(e,/\n$/,""),e=D(e,/^[ \t]+|[ \t]+$/g,function(a,b){return 1==a.length?"\x26nbsp;":b?" "+CKEDITOR.tools.repeat("\x26nbsp;",a.length-1):CKEDITOR.tools.repeat("\x26nbsp;",a.length-1)+" "}),e=e.replace(/\n/g,"\x3cbr\x3e"),e=e.replace(/[ \t]{2,}/g,function(a){return CKEDITOR.tools.repeat("\x26nbsp;",a.length-1)+" "});if(c){var f=b.clone();f.setHtml(e);
462this.type!=CKEDITOR.STYLE_INLINE||e!=a.block&&e!=a.blockLimit){if(this.type==CKEDITOR.STYLE_OBJECT){var f=e.getName();if(!("string"==typeof this.element?f==this.element:f in this.element))continue}if(this.checkElementRemovable(e,!0,b))return!0}}return!1},checkApplicable:function(a,b,c){b&&b instanceof CKEDITOR.filter&&(c=b);if(c&&!c.check(this))return!1;switch(this.type){case CKEDITOR.STYLE_OBJECT:return!!a.contains(this.element);case CKEDITOR.STYLE_BLOCK:return!!a.blockLimit.getDtd()[this.element]}return!0}, 483c.append(f)}else b.setHtml(e)}return c||b}function A(a,b){var c=this._.definition,d=c.attributes,c=c.styles,e=l(this)[a.getName()],f=CKEDITOR.tools.isEmpty(d)&&CKEDITOR.tools.isEmpty(c),g;for(g in d)if("class"!=g&&!this._.definition.fullMatch||a.getAttribute(g)==r(g,d[g]))b&&"data-"==g.slice(0,5)||(f=a.hasAttribute(g),a.removeAttribute(g));for(var h in c)this._.definition.fullMatch&&a.getStyle(h)!=r(h,c[h],!0)||(f=f||!!a.getStyle(h),a.removeStyle(h));x(a,e,E[a.getName()]);f&&(this._.definition.alwaysRemoveElement?
463checkElementMatch:function(a,b){var c=this._.definition;if(!a||!c.ignoreReadonly&&a.isReadOnly())return!1;var d=a.getName();if("string"==typeof this.element?d==this.element:d in this.element){if(!b&&!a.hasAttributes())return!0;if(d=c._AC)c=d;else{var d={},e=0,f=c.attributes;if(f)for(var g in f)e++,d[g]=f[g];if(g=CKEDITOR.style.getStyleText(c))d.style||e++,d.style=g;d._length=e;c=c._AC=d}if(c._length){for(var h in c)if("_length"!=h){e=a.getAttribute(h)||"";if("style"==h)a:{d=c[h];"string"==typeof d&& 484m(a,1):!CKEDITOR.dtd.$block[a.getName()]||this._.enterMode==CKEDITOR.ENTER_BR&&!a.hasAttributes()?m(a):a.renameNode(this._.enterMode==CKEDITOR.ENTER_P?"p":"div"))}function G(a){for(var b=l(this),c=a.getElementsByTag(this.element),d,e=c.count();0<=--e;)d=c.getItem(e),d.isReadOnly()||A.call(this,d,!0);for(var f in b)if(f!=this.element)for(c=a.getElementsByTag(f),e=c.count()-1;0<=e;e--)d=c.getItem(e),d.isReadOnly()||x(d,b[f])}function x(a,b,c){if(b=b&&b.attributes)for(var d=0;d<b.length;d++){var e=b[d][0],
464(d=CKEDITOR.tools.parseCssText(d));"string"==typeof e&&(e=CKEDITOR.tools.parseCssText(e,!0));g=void 0;for(g in d)if(!(g in e)||e[g]!=d[g]&&"inherit"!=d[g]&&"inherit"!=e[g]){d=!1;break a}d=!0}else d=c[h]==e;if(d){if(!b)return!0}else if(b)return!1}if(b)return!0}else return!0}return!1},checkElementRemovable:function(a,b,c){if(this.checkElementMatch(a,b,c))return!0;if(b=h(this)[a.getName()]){var d;if(!(b=b.attributes))return!0;for(c=0;c<b.length;c++)if(d=b[c][0],d=a.getAttribute(d)){var e=b[c][1];if(null=== 485f;if(f=a.getAttribute(e)){var g=b[d][1];(null===g||g.test&&g.test(f)||"string"==typeof g&&f==g)&&a.removeAttribute(e)}}c||m(a)}function m(a,b){if(!a.hasAttributes()||b)if(CKEDITOR.dtd.$block[a.getName()]){var c=a.getPrevious(L),d=a.getNext(L);!c||c.type!=CKEDITOR.NODE_TEXT&&c.isBlockBoundary({br:1})||a.append("br",1);!d||d.type!=CKEDITOR.NODE_TEXT&&d.isBlockBoundary({br:1})||a.append("br");a.remove(!0)}else c=a.getFirst(),d=a.getLast(),a.remove(!0),c&&(c.type==CKEDITOR.NODE_ELEMENT&&c.mergeSiblings(),
465e)return!0;if("string"==typeof e){if(d==e)return!0}else if(e.test(d))return!0}}return!1},buildPreview:function(a){var b=this._.definition,c=[],d=b.element;"bdo"==d&&(d="span");var c=["\x3c",d],e=b.attributes;if(e)for(var f in e)c.push(" ",f,'\x3d"',e[f],'"');(e=CKEDITOR.style.getStyleText(b))&&c.push(' style\x3d"',e,'"');c.push("\x3e",a||b.name,"\x3c/",d,"\x3e");return c.join("")},getDefinition:function(){return this._.definition}};CKEDITOR.style.getStyleText=function(a){var b=a._ST;if(b)return b; 486d&&!c.equals(d)&&d.type==CKEDITOR.NODE_ELEMENT&&d.mergeSiblings())}function K(a,b,c){var d;d=a.element;"*"==d&&(d="span");d=new CKEDITOR.dom.element(d,b);c&&c.copyAttributes(d);d=z(d,a);b.getCustomData("doc_processing_style")&&d.hasAttribute("id")?d.removeAttribute("id"):b.setCustomData("doc_processing_style",1);return d}function z(a,b){var c=b._.definition,d=c.attributes,c=CKEDITOR.style.getStyleText(c);if(d)for(var e in d)a.setAttribute(e,d[e]);c&&a.setAttribute("style",c);return a}function I(a,
466var b=a.styles,c=a.attributes&&a.attributes.style||"",d="";c.length&&(c=c.replace(G,";"));for(var e in b){var f=b[e],g=(e+":"+f).replace(G,";");"inherit"==f?d+=g:c+=g}c.length&&(c=CKEDITOR.tools.normalizeCssText(c,!0));return a._ST=c+d};CKEDITOR.style.customHandlers={};CKEDITOR.style.addCustomHandler=function(a){var b=function(a){this._={definition:a};this.setup&&this.setup(a)};b.prototype=CKEDITOR.tools.extend(CKEDITOR.tools.prototypedCopy(CKEDITOR.style.prototype),{assignedTo:CKEDITOR.STYLE_OBJECT}, 487b){for(var c in a)a[c]=a[c].replace(v,function(a,c){return b[c]})}function l(a){if(a._.overrides)return a._.overrides;var b=a._.overrides={},c=a._.definition.overrides;if(c){CKEDITOR.tools.isArray(c)||(c=[c]);for(var d=0;d<c.length;d++){var e=c[d],f,g;"string"==typeof e?f=e.toLowerCase():(f=e.element?e.element.toLowerCase():a.element,g=e.attributes);e=b[f]||(b[f]={});if(g){var e=e.attributes=e.attributes||[],h;for(h in g)e.push([h.toLowerCase(),g[h]])}}}return b}function r(a,b,c){var d=new CKEDITOR.dom.element("span");
467a,!0);return this.customHandlers[a.type]=b};var M=CKEDITOR.POSITION_PRECEDING|CKEDITOR.POSITION_IDENTICAL|CKEDITOR.POSITION_IS_CONTAINED,Q=CKEDITOR.POSITION_FOLLOWING|CKEDITOR.POSITION_IDENTICAL|CKEDITOR.POSITION_IS_CONTAINED})();CKEDITOR.styleCommand=function(a,d){this.requiredContent=this.allowedContent=this.style=a;CKEDITOR.tools.extend(this,d,!0)}; 488d[c?"setStyle":"setAttribute"](a,b);return d[c?"getStyle":"getAttribute"](a)}function J(a,b){function c(a,b){return"font-family"==b.toLowerCase()?a.replace(/["']/g,""):a}"string"==typeof a&&(a=CKEDITOR.tools.parseCssText(a));"string"==typeof b&&(b=CKEDITOR.tools.parseCssText(b,!0));for(var d in a)if(!(d in b)||c(b[d],d)!=c(a[d],d)&&"inherit"!=a[d]&&"inherit"!=b[d])return!1;return!0}function H(a,b,c){var d=a.document,e=a.getRanges();b=b?this.removeFromRange:this.applyToRange;var f,g;if(a.isFake&&a.isInTable())for(f=
489[],g=0;g<e.length;g++)f.push(e[g].clone());for(var h=e.createIterator();g=h.getNextRange();)b.call(this,g,c);a.selectRanges(f||e);d.removeCustomData("doc_processing_style")}var E={address:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,p:1,pre:1,section:1,header:1,footer:1,nav:1,article:1,aside:1,figure:1,dialog:1,hgroup:1,time:1,meter:1,menu:1,command:1,keygen:1,output:1,progress:1,details:1,datagrid:1,datalist:1},u={a:1,blockquote:1,embed:1,hr:1,img:1,li:1,object:1,ol:1,table:1,td:1,tr:1,th:1,ul:1,dl:1,dt:1,
490dd:1,form:1,audio:1,video:1},y=/\s*(?:;\s*|$)/,v=/#\((.+?)\)/g,B=CKEDITOR.dom.walker.bookmark(0,1),L=CKEDITOR.dom.walker.whitespaces(1);CKEDITOR.style=function(a,b){if("string"==typeof a.type)return new CKEDITOR.style.customHandlers[a.type](a);var c=a.attributes;c&&c.style&&(a.styles=CKEDITOR.tools.extend({},a.styles,CKEDITOR.tools.parseCssText(c.style)),delete c.style);b&&(a=CKEDITOR.tools.clone(a),I(a.attributes,b),I(a.styles,b));c=this.element=a.element?"string"==typeof a.element?a.element.toLowerCase():
491a.element:"*";this.type=a.type||(E[c]?CKEDITOR.STYLE_BLOCK:u[c]?CKEDITOR.STYLE_OBJECT:CKEDITOR.STYLE_INLINE);"object"==typeof this.element&&(this.type=CKEDITOR.STYLE_OBJECT);this._={definition:a}};CKEDITOR.style.prototype={apply:function(a){if(a instanceof CKEDITOR.dom.document)return H.call(this,a.getSelection());if(this.checkApplicable(a.elementPath(),a)){var b=this._.enterMode;b||(this._.enterMode=a.activeEnterMode);H.call(this,a.getSelection(),0,a);this._.enterMode=b}},remove:function(a){if(a instanceof
492CKEDITOR.dom.document)return H.call(this,a.getSelection(),1);if(this.checkApplicable(a.elementPath(),a)){var b=this._.enterMode;b||(this._.enterMode=a.activeEnterMode);H.call(this,a.getSelection(),1,a);this._.enterMode=b}},applyToRange:function(a){this.applyToRange=this.type==CKEDITOR.STYLE_INLINE?b:this.type==CKEDITOR.STYLE_BLOCK?k:this.type==CKEDITOR.STYLE_OBJECT?g:null;return this.applyToRange(a)},removeFromRange:function(a){this.removeFromRange=this.type==CKEDITOR.STYLE_INLINE?c:this.type==CKEDITOR.STYLE_BLOCK?
493n:this.type==CKEDITOR.STYLE_OBJECT?h:null;return this.removeFromRange(a)},applyToObject:function(a){z(a,this)},checkActive:function(a,b){switch(this.type){case CKEDITOR.STYLE_BLOCK:return this.checkElementRemovable(a.block||a.blockLimit,!0,b);case CKEDITOR.STYLE_OBJECT:case CKEDITOR.STYLE_INLINE:for(var c=a.elements,d=0,e;d<c.length;d++)if(e=c[d],this.type!=CKEDITOR.STYLE_INLINE||e!=a.block&&e!=a.blockLimit){if(this.type==CKEDITOR.STYLE_OBJECT){var f=e.getName();if(!("string"==typeof this.element?
494f==this.element:f in this.element))continue}if(this.checkElementRemovable(e,!0,b))return!0}}return!1},checkApplicable:function(a,b,c){b&&b instanceof CKEDITOR.filter&&(c=b);if(c&&!c.check(this))return!1;switch(this.type){case CKEDITOR.STYLE_OBJECT:return!!a.contains(this.element);case CKEDITOR.STYLE_BLOCK:return!!a.blockLimit.getDtd()[this.element]}return!0},checkElementMatch:function(a,b){var c=this._.definition;if(!a||!c.ignoreReadonly&&a.isReadOnly())return!1;var d=a.getName();if("string"==typeof this.element?
495d==this.element:d in this.element){if(!b&&!a.hasAttributes())return!0;if(d=c._AC)c=d;else{var d={},e=0,f=c.attributes;if(f)for(var g in f)e++,d[g]=f[g];if(g=CKEDITOR.style.getStyleText(c))d.style||e++,d.style=g;d._length=e;c=c._AC=d}if(c._length){for(var h in c)if("_length"!=h)if(d=a.getAttribute(h)||"","style"==h?J(c[h],d):c[h]==d){if(!b)return!0}else if(b)return!1;if(b)return!0}else return!0}return!1},checkElementRemovable:function(a,b,c){if(this.checkElementMatch(a,b,c))return!0;if(b=l(this)[a.getName()]){var d;
496if(!(b=b.attributes))return!0;for(c=0;c<b.length;c++)if(d=b[c][0],d=a.getAttribute(d)){var e=b[c][1];if(null===e)return!0;if("string"==typeof e){if(d==e)return!0}else if(e.test(d))return!0}}return!1},buildPreview:function(a){var b=this._.definition,c=[],d=b.element;"bdo"==d&&(d="span");var c=["\x3c",d],e=b.attributes;if(e)for(var f in e)c.push(" ",f,'\x3d"',e[f],'"');(e=CKEDITOR.style.getStyleText(b))&&c.push(' style\x3d"',e,'"');c.push("\x3e",a||b.name,"\x3c/",d,"\x3e");return c.join("")},getDefinition:function(){return this._.definition}};
497CKEDITOR.style.getStyleText=function(a){var b=a._ST;if(b)return b;var b=a.styles,c=a.attributes&&a.attributes.style||"",d="";c.length&&(c=c.replace(y,";"));for(var e in b){var f=b[e],g=(e+":"+f).replace(y,";");"inherit"==f?d+=g:c+=g}c.length&&(c=CKEDITOR.tools.normalizeCssText(c,!0));return a._ST=c+d};CKEDITOR.style.customHandlers={};CKEDITOR.style.addCustomHandler=function(a){var b=function(a){this._={definition:a};this.setup&&this.setup(a)};b.prototype=CKEDITOR.tools.extend(CKEDITOR.tools.prototypedCopy(CKEDITOR.style.prototype),
498{assignedTo:CKEDITOR.STYLE_OBJECT},a,!0);return this.customHandlers[a.type]=b};var V=CKEDITOR.POSITION_PRECEDING|CKEDITOR.POSITION_IDENTICAL|CKEDITOR.POSITION_IS_CONTAINED,O=CKEDITOR.POSITION_FOLLOWING|CKEDITOR.POSITION_IDENTICAL|CKEDITOR.POSITION_IS_CONTAINED})();CKEDITOR.styleCommand=function(a,d){this.requiredContent=this.allowedContent=this.style=a;CKEDITOR.tools.extend(this,d,!0)};
468CKEDITOR.styleCommand.prototype.exec=function(a){a.focus();this.state==CKEDITOR.TRISTATE_OFF?a.applyStyle(this.style):this.state==CKEDITOR.TRISTATE_ON&&a.removeStyle(this.style)};CKEDITOR.stylesSet=new CKEDITOR.resourceManager("","stylesSet");CKEDITOR.addStylesSet=CKEDITOR.tools.bind(CKEDITOR.stylesSet.add,CKEDITOR.stylesSet);CKEDITOR.loadStylesSet=function(a,d,b){CKEDITOR.stylesSet.addExternal(a,d,"");CKEDITOR.stylesSet.load(a,b)}; 499CKEDITOR.styleCommand.prototype.exec=function(a){a.focus();this.state==CKEDITOR.TRISTATE_OFF?a.applyStyle(this.style):this.state==CKEDITOR.TRISTATE_ON&&a.removeStyle(this.style)};CKEDITOR.stylesSet=new CKEDITOR.resourceManager("","stylesSet");CKEDITOR.addStylesSet=CKEDITOR.tools.bind(CKEDITOR.stylesSet.add,CKEDITOR.stylesSet);CKEDITOR.loadStylesSet=function(a,d,b){CKEDITOR.stylesSet.addExternal(a,d,"");CKEDITOR.stylesSet.load(a,b)};
469CKEDITOR.tools.extend(CKEDITOR.editor.prototype,{attachStyleStateChange:function(a,d){var b=this._.styleStateChangeCallbacks;b||(b=this._.styleStateChangeCallbacks=[],this.on("selectionChange",function(a){for(var d=0;d<b.length;d++){var g=b[d],l=g.style.checkActive(a.data.path,this)?CKEDITOR.TRISTATE_ON:CKEDITOR.TRISTATE_OFF;g.fn.call(this,l)}}));b.push({style:a,fn:d})},applyStyle:function(a){a.apply(this)},removeStyle:function(a){a.remove(this)},getStylesSet:function(a){if(this._.stylesDefinitions)a(this._.stylesDefinitions); 500CKEDITOR.tools.extend(CKEDITOR.editor.prototype,{attachStyleStateChange:function(a,d){var b=this._.styleStateChangeCallbacks;b||(b=this._.styleStateChangeCallbacks=[],this.on("selectionChange",function(a){for(var d=0;d<b.length;d++){var g=b[d],h=g.style.checkActive(a.data.path,this)?CKEDITOR.TRISTATE_ON:CKEDITOR.TRISTATE_OFF;g.fn.call(this,h)}}));b.push({style:a,fn:d})},applyStyle:function(a){a.apply(this)},removeStyle:function(a){a.remove(this)},getStylesSet:function(a){if(this._.stylesDefinitions)a(this._.stylesDefinitions);
470else{var d=this,b=d.config.stylesCombo_stylesSet||d.config.stylesSet;if(!1===b)a(null);else if(b instanceof Array)d._.stylesDefinitions=b,a(b);else{b||(b="default");var b=b.split(":"),c=b[0];CKEDITOR.stylesSet.addExternal(c,b[1]?b.slice(1).join(":"):CKEDITOR.getUrl("styles.js"),"");CKEDITOR.stylesSet.load(c,function(b){d._.stylesDefinitions=b[c];a(d._.stylesDefinitions)})}}}}); 501else{var d=this,b=d.config.stylesCombo_stylesSet||d.config.stylesSet;if(!1===b)a(null);else if(b instanceof Array)d._.stylesDefinitions=b,a(b);else{b||(b="default");var b=b.split(":"),c=b[0];CKEDITOR.stylesSet.addExternal(c,b[1]?b.slice(1).join(":"):CKEDITOR.getUrl("styles.js"),"");CKEDITOR.stylesSet.load(c,function(b){d._.stylesDefinitions=b[c];a(d._.stylesDefinitions)})}}}});
471CKEDITOR.dom.comment=function(a,d){"string"==typeof a&&(a=(d?d.$:document).createComment(a));CKEDITOR.dom.domObject.call(this,a)};CKEDITOR.dom.comment.prototype=new CKEDITOR.dom.node;CKEDITOR.tools.extend(CKEDITOR.dom.comment.prototype,{type:CKEDITOR.NODE_COMMENT,getOuterHtml:function(){return"\x3c!--"+this.$.nodeValue+"--\x3e"}});"use strict"; 502CKEDITOR.dom.comment=function(a,d){"string"==typeof a&&(a=(d?d.$:document).createComment(a));CKEDITOR.dom.domObject.call(this,a)};CKEDITOR.dom.comment.prototype=new CKEDITOR.dom.node;CKEDITOR.tools.extend(CKEDITOR.dom.comment.prototype,{type:CKEDITOR.NODE_COMMENT,getOuterHtml:function(){return"\x3c!--"+this.$.nodeValue+"--\x3e"}});"use strict";
472(function(){var a={},d={},b;for(b in CKEDITOR.dtd.$blockLimit)b in CKEDITOR.dtd.$list||(a[b]=1);for(b in CKEDITOR.dtd.$block)b in CKEDITOR.dtd.$blockLimit||b in CKEDITOR.dtd.$empty||(d[b]=1);CKEDITOR.dom.elementPath=function(b,e){var g=null,l=null,k=[],n=b,w;e=e||b.getDocument().getBody();do if(n.type==CKEDITOR.NODE_ELEMENT){k.push(n);if(!this.lastElement&&(this.lastElement=n,n.is(CKEDITOR.dtd.$object)||"false"==n.getAttribute("contenteditable")))continue;if(n.equals(e))break;if(!l&&(w=n.getName(), 503(function(){var a={},d={},b;for(b in CKEDITOR.dtd.$blockLimit)b in CKEDITOR.dtd.$list||(a[b]=1);for(b in CKEDITOR.dtd.$block)b in CKEDITOR.dtd.$blockLimit||b in CKEDITOR.dtd.$empty||(d[b]=1);CKEDITOR.dom.elementPath=function(b,e){var g=null,h=null,k=[],n=b,q;e=e||b.getDocument().getBody();n||(n=e);do if(n.type==CKEDITOR.NODE_ELEMENT){k.push(n);if(!this.lastElement&&(this.lastElement=n,n.is(CKEDITOR.dtd.$object)||"false"==n.getAttribute("contenteditable")))continue;if(n.equals(e))break;if(!h&&(q=n.getName(),
473"true"==n.getAttribute("contenteditable")?l=n:!g&&d[w]&&(g=n),a[w])){if(w=!g&&"div"==w){a:{w=n.getChildren();for(var f=0,x=w.count();f<x;f++){var A=w.getItem(f);if(A.type==CKEDITOR.NODE_ELEMENT&&CKEDITOR.dtd.$block[A.getName()]){w=!0;break a}}w=!1}w=!w}w?g=n:l=n}}while(n=n.getParent());l||(l=e);this.block=g;this.blockLimit=l;this.root=e;this.elements=k}})(); 504"true"==n.getAttribute("contenteditable")?h=n:!g&&d[q]&&(g=n),a[q])){if(q=!g&&"div"==q){a:{q=n.getChildren();for(var f=0,D=q.count();f<D;f++){var w=q.getItem(f);if(w.type==CKEDITOR.NODE_ELEMENT&&CKEDITOR.dtd.$block[w.getName()]){q=!0;break a}}q=!1}q=!q}q?g=n:h=n}}while(n=n.getParent());h||(h=e);this.block=g;this.blockLimit=h;this.root=e;this.elements=k}})();
474CKEDITOR.dom.elementPath.prototype={compare:function(a){var d=this.elements;a=a&&a.elements;if(!a||d.length!=a.length)return!1;for(var b=0;b<d.length;b++)if(!d[b].equals(a[b]))return!1;return!0},contains:function(a,d,b){var c;"string"==typeof a&&(c=function(b){return b.getName()==a});a instanceof CKEDITOR.dom.element?c=function(b){return b.equals(a)}:CKEDITOR.tools.isArray(a)?c=function(b){return-1<CKEDITOR.tools.indexOf(a,b.getName())}:"function"==typeof a?c=a:"object"==typeof a&&(c=function(b){return b.getName()in 505CKEDITOR.dom.elementPath.prototype={compare:function(a){var d=this.elements;a=a&&a.elements;if(!a||d.length!=a.length)return!1;for(var b=0;b<d.length;b++)if(!d[b].equals(a[b]))return!1;return!0},contains:function(a,d,b){var c=0,e;"string"==typeof a&&(e=function(b){return b.getName()==a});a instanceof CKEDITOR.dom.element?e=function(b){return b.equals(a)}:CKEDITOR.tools.isArray(a)?e=function(b){return-1<CKEDITOR.tools.indexOf(a,b.getName())}:"function"==typeof a?e=a:"object"==typeof a&&(e=function(b){return b.getName()in
475a});var e=this.elements,g=e.length;d&&g--;b&&(e=Array.prototype.slice.call(e,0),e.reverse());for(d=0;d<g;d++)if(c(e[d]))return e[d];return null},isContextFor:function(a){var d;return a in CKEDITOR.dtd.$block?(d=this.contains(CKEDITOR.dtd.$intermediate)||this.root.equals(this.block)&&this.block||this.blockLimit,!!d.getDtd()[a]):!0},direction:function(){return(this.block||this.blockLimit||this.root).getDirection(1)}}; 506a});var g=this.elements,h=g.length;d&&(b?c+=1:--h);b&&(g=Array.prototype.slice.call(g,0),g.reverse());for(;c<h;c++)if(e(g[c]))return g[c];return null},isContextFor:function(a){var d;return a in CKEDITOR.dtd.$block?(d=this.contains(CKEDITOR.dtd.$intermediate)||this.root.equals(this.block)&&this.block||this.blockLimit,!!d.getDtd()[a]):!0},direction:function(){return(this.block||this.blockLimit||this.root).getDirection(1)}};
476CKEDITOR.dom.text=function(a,d){"string"==typeof a&&(a=(d?d.$:document).createTextNode(a));this.$=a};CKEDITOR.dom.text.prototype=new CKEDITOR.dom.node; 507CKEDITOR.dom.text=function(a,d){"string"==typeof a&&(a=(d?d.$:document).createTextNode(a));this.$=a};CKEDITOR.dom.text.prototype=new CKEDITOR.dom.node;
477CKEDITOR.tools.extend(CKEDITOR.dom.text.prototype,{type:CKEDITOR.NODE_TEXT,getLength:function(){return this.$.nodeValue.length},getText:function(){return this.$.nodeValue},setText:function(a){this.$.nodeValue=a},split:function(a){var d=this.$.parentNode,b=d.childNodes.length,c=this.getLength(),e=this.getDocument(),g=new CKEDITOR.dom.text(this.$.splitText(a),e);d.childNodes.length==b&&(a>=c?(g=e.createText(""),g.insertAfter(this)):(a=e.createText(""),a.insertAfter(g),a.remove()));return g},substring:function(a, 508CKEDITOR.tools.extend(CKEDITOR.dom.text.prototype,{type:CKEDITOR.NODE_TEXT,getLength:function(){return this.$.nodeValue.length},getText:function(){return this.$.nodeValue},setText:function(a){this.$.nodeValue=a},split:function(a){var d=this.$.parentNode,b=d.childNodes.length,c=this.getLength(),e=this.getDocument(),g=new CKEDITOR.dom.text(this.$.splitText(a),e);d.childNodes.length==b&&(a>=c?(g=e.createText(""),g.insertAfter(this)):(a=e.createText(""),a.insertAfter(g),a.remove()));return g},substring:function(a,
478d){return"number"!=typeof d?this.$.nodeValue.substr(a):this.$.nodeValue.substring(a,d)}}); 509d){return"number"!=typeof d?this.$.nodeValue.substr(a):this.$.nodeValue.substring(a,d)}});
479(function(){function a(a,c,d){var g=a.serializable,l=c[d?"endContainer":"startContainer"],k=d?"endOffset":"startOffset",n=g?c.document.getById(a.startNode):a.startNode;a=g?c.document.getById(a.endNode):a.endNode;l.equals(n.getPrevious())?(c.startOffset=c.startOffset-l.getLength()-a.getPrevious().getLength(),l=a.getNext()):l.equals(a.getPrevious())&&(c.startOffset-=l.getLength(),l=a.getNext());l.equals(n.getParent())&&c[k]++;l.equals(a.getParent())&&c[k]++;c[d?"endContainer":"startContainer"]=l;return c} 510(function(){function a(a,c,d){var g=a.serializable,h=c[d?"endContainer":"startContainer"],k=d?"endOffset":"startOffset",n=g?c.document.getById(a.startNode):a.startNode;a=g?c.document.getById(a.endNode):a.endNode;h.equals(n.getPrevious())?(c.startOffset=c.startOffset-h.getLength()-a.getPrevious().getLength(),h=a.getNext()):h.equals(a.getPrevious())&&(c.startOffset-=h.getLength(),h=a.getNext());h.equals(n.getParent())&&c[k]++;h.equals(a.getParent())&&c[k]++;c[d?"endContainer":"startContainer"]=h;return c}
480CKEDITOR.dom.rangeList=function(a){if(a instanceof CKEDITOR.dom.rangeList)return a;a?a instanceof CKEDITOR.dom.range&&(a=[a]):a=[];return CKEDITOR.tools.extend(a,d)};var d={createIterator:function(){var a=this,c=CKEDITOR.dom.walker.bookmark(),d=[],g;return{getNextRange:function(l){g=void 0===g?0:g+1;var k=a[g];if(k&&1<a.length){if(!g)for(var n=a.length-1;0<=n;n--)d.unshift(a[n].createBookmark(!0));if(l)for(var w=0;a[g+w+1];){var f=k.document;l=0;n=f.getById(d[w].endNode);for(f=f.getById(d[w+1].startNode);;){n= 511CKEDITOR.dom.rangeList=function(a){if(a instanceof CKEDITOR.dom.rangeList)return a;a?a instanceof CKEDITOR.dom.range&&(a=[a]):a=[];return CKEDITOR.tools.extend(a,d)};var d={createIterator:function(){var a=this,c=CKEDITOR.dom.walker.bookmark(),d=[],g;return{getNextRange:function(h){g=void 0===g?0:g+1;var k=a[g];if(k&&1<a.length){if(!g)for(var n=a.length-1;0<=n;n--)d.unshift(a[n].createBookmark(!0));if(h)for(var q=0;a[g+q+1];){var f=k.document;h=0;n=f.getById(d[q].endNode);for(f=f.getById(d[q+1].startNode);;){n=
481n.getNextSourceNode(!1);if(f.equals(n))l=1;else if(c(n)||n.type==CKEDITOR.NODE_ELEMENT&&n.isBlockBoundary())continue;break}if(!l)break;w++}for(k.moveToBookmark(d.shift());w--;)n=a[++g],n.moveToBookmark(d.shift()),k.setEnd(n.endContainer,n.endOffset)}return k}}},createBookmarks:function(b){for(var c=[],d,g=0;g<this.length;g++){c.push(d=this[g].createBookmark(b,!0));for(var l=g+1;l<this.length;l++)this[l]=a(d,this[l]),this[l]=a(d,this[l],!0)}return c},createBookmarks2:function(a){for(var c=[],d=0;d< 512n.getNextSourceNode(!1);if(f.equals(n))h=1;else if(c(n)||n.type==CKEDITOR.NODE_ELEMENT&&n.isBlockBoundary())continue;break}if(!h)break;q++}for(k.moveToBookmark(d.shift());q--;)n=a[++g],n.moveToBookmark(d.shift()),k.setEnd(n.endContainer,n.endOffset)}return k}}},createBookmarks:function(b){for(var c=[],d,g=0;g<this.length;g++){c.push(d=this[g].createBookmark(b,!0));for(var h=g+1;h<this.length;h++)this[h]=a(d,this[h]),this[h]=a(d,this[h],!0)}return c},createBookmarks2:function(a){for(var c=[],d=0;d<
482this.length;d++)c.push(this[d].createBookmark2(a));return c},moveToBookmarks:function(a){for(var c=0;c<this.length;c++)this[c].moveToBookmark(a[c])}}})(); 513this.length;d++)c.push(this[d].createBookmark2(a));return c},moveToBookmarks:function(a){for(var c=0;c<this.length;c++)this[c].moveToBookmark(a[c])}}})();
483(function(){function a(){return CKEDITOR.getUrl(CKEDITOR.skinName.split(",")[1]||"skins/"+CKEDITOR.skinName.split(",")[0]+"/")}function d(b){var c=CKEDITOR.skin["ua_"+b],d=CKEDITOR.env;if(c)for(var c=c.split(",").sort(function(a,b){return a>b?-1:1}),e=0,g;e<c.length;e++)if(g=c[e],d.ie&&(g.replace(/^ie/,"")==d.version||d.quirks&&"iequirks"==g)&&(g="ie"),d[g]){b+="_"+c[e];break}return CKEDITOR.getUrl(a()+b+".css")}function b(a,b){g[a]||(CKEDITOR.document.appendStyleSheet(d(a)),g[a]=1);b&&b()}function c(a){var b= 514(function(){function a(){return CKEDITOR.getUrl(CKEDITOR.skinName.split(",")[1]||"skins/"+CKEDITOR.skinName.split(",")[0]+"/")}function d(b){var c=CKEDITOR.skin["ua_"+b],d=CKEDITOR.env;if(c)for(var c=c.split(",").sort(function(a,b){return a>b?-1:1}),e=0,g;e<c.length;e++)if(g=c[e],d.ie&&(g.replace(/^ie/,"")==d.version||d.quirks&&"iequirks"==g)&&(g="ie"),d[g]){b+="_"+c[e];break}return CKEDITOR.getUrl(a()+b+".css")}function b(a,b){g[a]||(CKEDITOR.document.appendStyleSheet(d(a)),g[a]=1);b&&b()}function c(a){var b=
484a.getById(l);b||(b=a.getHead().append("style"),b.setAttribute("id",l),b.setAttribute("type","text/css"));return b}function e(a,b,c){var d,e,g;if(CKEDITOR.env.webkit)for(b=b.split("}").slice(0,-1),e=0;e<b.length;e++)b[e]=b[e].split("{");for(var k=0;k<a.length;k++)if(CKEDITOR.env.webkit)for(e=0;e<b.length;e++){g=b[e][1];for(d=0;d<c.length;d++)g=g.replace(c[d][0],c[d][1]);a[k].$.sheet.addRule(b[e][0],g)}else{g=b;for(d=0;d<c.length;d++)g=g.replace(c[d][0],c[d][1]);CKEDITOR.env.ie&&11>CKEDITOR.env.version? 515a.getById(h);b||(b=a.getHead().append("style"),b.setAttribute("id",h),b.setAttribute("type","text/css"));return b}function e(a,b,c){var d,e,g;if(CKEDITOR.env.webkit)for(b=b.split("}").slice(0,-1),e=0;e<b.length;e++)b[e]=b[e].split("{");for(var h=0;h<a.length;h++)if(CKEDITOR.env.webkit)for(e=0;e<b.length;e++){g=b[e][1];for(d=0;d<c.length;d++)g=g.replace(c[d][0],c[d][1]);a[h].$.sheet.addRule(b[e][0],g)}else{g=b;for(d=0;d<c.length;d++)g=g.replace(c[d][0],c[d][1]);CKEDITOR.env.ie&&11>CKEDITOR.env.version?
485a[k].$.styleSheet.cssText+=g:a[k].$.innerHTML+=g}}var g={};CKEDITOR.skin={path:a,loadPart:function(c,d){CKEDITOR.skin.name!=CKEDITOR.skinName.split(",")[0]?CKEDITOR.scriptLoader.load(CKEDITOR.getUrl(a()+"skin.js"),function(){b(c,d)}):b(c,d)},getPath:function(a){return CKEDITOR.getUrl(d(a))},icons:{},addIcon:function(a,b,c,d){a=a.toLowerCase();this.icons[a]||(this.icons[a]={path:b,offset:c||0,bgsize:d||"16px"})},getIconStyle:function(a,b,c,d,e){var g;a&&(a=a.toLowerCase(),b&&(g=this.icons[a+"-rtl"]), 516a[h].$.styleSheet.cssText+=g:a[h].$.innerHTML+=g}}var g={};CKEDITOR.skin={path:a,loadPart:function(c,d){CKEDITOR.skin.name!=CKEDITOR.skinName.split(",")[0]?CKEDITOR.scriptLoader.load(CKEDITOR.getUrl(a()+"skin.js"),function(){b(c,d)}):b(c,d)},getPath:function(a){return CKEDITOR.getUrl(d(a))},icons:{},addIcon:function(a,b,c,d){a=a.toLowerCase();this.icons[a]||(this.icons[a]={path:b,offset:c||0,bgsize:d||"16px"})},getIconStyle:function(a,b,c,d,e){var g;a&&(a=a.toLowerCase(),b&&(g=this.icons[a+"-rtl"]),
486g||(g=this.icons[a]));a=c||g&&g.path||"";d=d||g&&g.offset;e=e||g&&g.bgsize||"16px";a&&(a=a.replace(/'/g,"\\'"));return a&&"background-image:url('"+CKEDITOR.getUrl(a)+"');background-position:0 "+d+"px;background-size:"+e+";"}};CKEDITOR.tools.extend(CKEDITOR.editor.prototype,{getUiColor:function(){return this.uiColor},setUiColor:function(a){var b=c(CKEDITOR.document);return(this.setUiColor=function(a){this.uiColor=a;var c=CKEDITOR.skin.chameleon,d="",g="";"function"==typeof c&&(d=c(this,"editor"),g= 517g||(g=this.icons[a]));a=c||g&&g.path||"";d=d||g&&g.offset;e=e||g&&g.bgsize||"16px";a&&(a=a.replace(/'/g,"\\'"));return a&&"background-image:url('"+CKEDITOR.getUrl(a)+"');background-position:0 "+d+"px;background-size:"+e+";"}};CKEDITOR.tools.extend(CKEDITOR.editor.prototype,{getUiColor:function(){return this.uiColor},setUiColor:function(a){var b=c(CKEDITOR.document);return(this.setUiColor=function(a){this.uiColor=a;var c=CKEDITOR.skin.chameleon,d="",g="";"function"==typeof c&&(d=c(this,"editor"),g=
487c(this,"panel"));a=[[n,a]];e([b],d,a);e(k,g,a)}).call(this,a)}});var l="cke_ui_color",k=[],n=/\$color/g;CKEDITOR.on("instanceLoaded",function(a){if(!CKEDITOR.env.ie||!CKEDITOR.env.quirks){var b=a.editor;a=function(a){a=(a.data[0]||a.data).element.getElementsByTag("iframe").getItem(0).getFrameDocument();if(!a.getById("cke_ui_color")){a=c(a);k.push(a);var d=b.getUiColor();d&&e([a],CKEDITOR.skin.chameleon(b,"panel"),[[n,d]])}};b.on("panelShow",a);b.on("menuShow",a);b.config.uiColor&&b.setUiColor(b.config.uiColor)}})})(); 518c(this,"panel"));a=[[n,a]];e([b],d,a);e(k,g,a)}).call(this,a)}});var h="cke_ui_color",k=[],n=/\$color/g;CKEDITOR.on("instanceLoaded",function(a){if(!CKEDITOR.env.ie||!CKEDITOR.env.quirks){var b=a.editor;a=function(a){a=(a.data[0]||a.data).element.getElementsByTag("iframe").getItem(0).getFrameDocument();if(!a.getById("cke_ui_color")){a=c(a);k.push(a);var d=b.getUiColor();d&&e([a],CKEDITOR.skin.chameleon(b,"panel"),[[n,d]])}};b.on("panelShow",a);b.on("menuShow",a);b.config.uiColor&&b.setUiColor(b.config.uiColor)}})})();
488(function(){if(CKEDITOR.env.webkit)CKEDITOR.env.hc=!1;else{var a=CKEDITOR.dom.element.createFromHtml('\x3cdiv style\x3d"width:0;height:0;position:absolute;left:-10000px;border:1px solid;border-color:red blue"\x3e\x3c/div\x3e',CKEDITOR.document);a.appendTo(CKEDITOR.document.getHead());try{var d=a.getComputedStyle("border-top-color"),b=a.getComputedStyle("border-right-color");CKEDITOR.env.hc=!(!d||d!=b)}catch(c){CKEDITOR.env.hc=!1}a.remove()}CKEDITOR.env.hc&&(CKEDITOR.env.cssClass+=" cke_hc");CKEDITOR.document.appendStyleText(".cke{visibility:hidden;}"); 519(function(){if(CKEDITOR.env.webkit)CKEDITOR.env.hc=!1;else{var a=CKEDITOR.dom.element.createFromHtml('\x3cdiv style\x3d"width:0;height:0;position:absolute;left:-10000px;border:1px solid;border-color:red blue"\x3e\x3c/div\x3e',CKEDITOR.document);a.appendTo(CKEDITOR.document.getHead());try{var d=a.getComputedStyle("border-top-color"),b=a.getComputedStyle("border-right-color");CKEDITOR.env.hc=!(!d||d!=b)}catch(c){CKEDITOR.env.hc=!1}a.remove()}CKEDITOR.env.hc&&(CKEDITOR.env.cssClass+=" cke_hc");CKEDITOR.document.appendStyleText(".cke{visibility:hidden;}");
489CKEDITOR.status="loaded";CKEDITOR.fireOnce("loaded");if(a=CKEDITOR._.pending)for(delete CKEDITOR._.pending,d=0;d<a.length;d++)CKEDITOR.editor.prototype.constructor.apply(a[d][0],a[d][1]),CKEDITOR.add(a[d][0])})();/* 520CKEDITOR.status="loaded";CKEDITOR.fireOnce("loaded");if(a=CKEDITOR._.pending)for(delete CKEDITOR._.pending,d=0;d<a.length;d++)CKEDITOR.editor.prototype.constructor.apply(a[d][0],a[d][1]),CKEDITOR.add(a[d][0])})();/*
490 Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 521 Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
491 For licensing, see LICENSE.md or http://ckeditor.com/license 522 For licensing, see LICENSE.md or http://ckeditor.com/license
492*/ 523*/
493CKEDITOR.skin.name="moono";CKEDITOR.skin.ua_editor="ie,iequirks,ie7,ie8,gecko";CKEDITOR.skin.ua_dialog="ie,iequirks,ie7,ie8"; 524CKEDITOR.skin.name="moono";CKEDITOR.skin.ua_editor="ie,iequirks,ie7,ie8,gecko";CKEDITOR.skin.ua_dialog="ie,iequirks,ie7,ie8";
@@ -533,127 +564,156 @@ CKEDITOR.tools.removeFunction(m)}));CKEDITOR.env.gecko?setTimeout(b,500):b()},ge
533new CKEDITOR.ui.dialog.button;CKEDITOR.ui.dialog.fieldset.prototype=CKEDITOR.tools.clone(CKEDITOR.ui.dialog.hbox.prototype);CKEDITOR.dialog.addUIElement("text",v);CKEDITOR.dialog.addUIElement("password",v);CKEDITOR.dialog.addUIElement("textarea",n);CKEDITOR.dialog.addUIElement("checkbox",n);CKEDITOR.dialog.addUIElement("radio",n);CKEDITOR.dialog.addUIElement("button",n);CKEDITOR.dialog.addUIElement("select",n);CKEDITOR.dialog.addUIElement("file",n);CKEDITOR.dialog.addUIElement("fileButton",n);CKEDITOR.dialog.addUIElement("html", 564new CKEDITOR.ui.dialog.button;CKEDITOR.ui.dialog.fieldset.prototype=CKEDITOR.tools.clone(CKEDITOR.ui.dialog.hbox.prototype);CKEDITOR.dialog.addUIElement("text",v);CKEDITOR.dialog.addUIElement("password",v);CKEDITOR.dialog.addUIElement("textarea",n);CKEDITOR.dialog.addUIElement("checkbox",n);CKEDITOR.dialog.addUIElement("radio",n);CKEDITOR.dialog.addUIElement("button",n);CKEDITOR.dialog.addUIElement("select",n);CKEDITOR.dialog.addUIElement("file",n);CKEDITOR.dialog.addUIElement("fileButton",n);CKEDITOR.dialog.addUIElement("html",
534n);CKEDITOR.dialog.addUIElement("fieldset",{build:function(b,a,d){for(var f=a.children,c,e=[],h=[],g=0;g<f.length&&(c=f[g]);g++){var k=[];e.push(k);h.push(CKEDITOR.dialog._.uiElementBuilders[c.type].build(b,c,k))}return new CKEDITOR.ui.dialog[a.type](b,h,e,d,a)}})}});CKEDITOR.DIALOG_RESIZE_NONE=0;CKEDITOR.DIALOG_RESIZE_WIDTH=1;CKEDITOR.DIALOG_RESIZE_HEIGHT=2;CKEDITOR.DIALOG_RESIZE_BOTH=3;CKEDITOR.DIALOG_STATE_IDLE=1;CKEDITOR.DIALOG_STATE_BUSY=2; 565n);CKEDITOR.dialog.addUIElement("fieldset",{build:function(b,a,d){for(var f=a.children,c,e=[],h=[],g=0;g<f.length&&(c=f[g]);g++){var k=[];e.push(k);h.push(CKEDITOR.dialog._.uiElementBuilders[c.type].build(b,c,k))}return new CKEDITOR.ui.dialog[a.type](b,h,e,d,a)}})}});CKEDITOR.DIALOG_RESIZE_NONE=0;CKEDITOR.DIALOG_RESIZE_WIDTH=1;CKEDITOR.DIALOG_RESIZE_HEIGHT=2;CKEDITOR.DIALOG_RESIZE_BOTH=3;CKEDITOR.DIALOG_STATE_IDLE=1;CKEDITOR.DIALOG_STATE_BUSY=2;
535(function(){function x(){for(var a=this._.tabIdList.length,b=CKEDITOR.tools.indexOf(this._.tabIdList,this._.currentTabId)+a,c=b-1;c>b-a;c--)if(this._.tabs[this._.tabIdList[c%a]][0].$.offsetHeight)return this._.tabIdList[c%a];return null}function A(){for(var a=this._.tabIdList.length,b=CKEDITOR.tools.indexOf(this._.tabIdList,this._.currentTabId),c=b+1;c<b+a;c++)if(this._.tabs[this._.tabIdList[c%a]][0].$.offsetHeight)return this._.tabIdList[c%a];return null}function K(a,b){for(var c=a.$.getElementsByTagName("input"), 566(function(){function x(){for(var a=this._.tabIdList.length,b=CKEDITOR.tools.indexOf(this._.tabIdList,this._.currentTabId)+a,c=b-1;c>b-a;c--)if(this._.tabs[this._.tabIdList[c%a]][0].$.offsetHeight)return this._.tabIdList[c%a];return null}function A(){for(var a=this._.tabIdList.length,b=CKEDITOR.tools.indexOf(this._.tabIdList,this._.currentTabId),c=b+1;c<b+a;c++)if(this._.tabs[this._.tabIdList[c%a]][0].$.offsetHeight)return this._.tabIdList[c%a];return null}function K(a,b){for(var c=a.$.getElementsByTagName("input"),
536d=0,e=c.length;d<e;d++){var f=new CKEDITOR.dom.element(c[d]);"text"==f.getAttribute("type").toLowerCase()&&(b?(f.setAttribute("value",f.getCustomData("fake_value")||""),f.removeCustomData("fake_value")):(f.setCustomData("fake_value",f.getAttribute("value")),f.setAttribute("value","")))}}function T(a,b){var c=this.getInputElement();c&&(a?c.removeAttribute("aria-invalid"):c.setAttribute("aria-invalid",!0));a||(this.select?this.select():this.focus());b&&alert(b);this.fire("validated",{valid:a,msg:b})} 567e=0,d=c.length;e<d;e++){var f=new CKEDITOR.dom.element(c[e]);"text"==f.getAttribute("type").toLowerCase()&&(b?(f.setAttribute("value",f.getCustomData("fake_value")||""),f.removeCustomData("fake_value")):(f.setCustomData("fake_value",f.getAttribute("value")),f.setAttribute("value","")))}}function T(a,b){var c=this.getInputElement();c&&(a?c.removeAttribute("aria-invalid"):c.setAttribute("aria-invalid",!0));a||(this.select?this.select():this.focus());b&&alert(b);this.fire("validated",{valid:a,msg:b})}
537function U(){var a=this.getInputElement();a&&a.removeAttribute("aria-invalid")}function V(a){var b=CKEDITOR.dom.element.createFromHtml(CKEDITOR.addTemplate("dialog",W).output({id:CKEDITOR.tools.getNextNumber(),editorId:a.id,langDir:a.lang.dir,langCode:a.langCode,editorDialogClass:"cke_editor_"+a.name.replace(/\./g,"\\.")+"_dialog",closeTitle:a.lang.common.close,hidpi:CKEDITOR.env.hidpi?"cke_hidpi":""})),c=b.getChild([0,0,0,0,0]),d=c.getChild(0),e=c.getChild(1);a.plugins.clipboard&&CKEDITOR.plugins.clipboard.preventDefaultDropOnElement(c); 568function U(){var a=this.getInputElement();a&&a.removeAttribute("aria-invalid")}function V(a){var b=CKEDITOR.dom.element.createFromHtml(CKEDITOR.addTemplate("dialog",W).output({id:CKEDITOR.tools.getNextNumber(),editorId:a.id,langDir:a.lang.dir,langCode:a.langCode,editorDialogClass:"cke_editor_"+a.name.replace(/\./g,"\\.")+"_dialog",closeTitle:a.lang.common.close,hidpi:CKEDITOR.env.hidpi?"cke_hidpi":""})),c=b.getChild([0,0,0,0,0]),e=c.getChild(0),d=c.getChild(1);a.plugins.clipboard&&CKEDITOR.plugins.clipboard.preventDefaultDropOnElement(c);
538!CKEDITOR.env.ie||CKEDITOR.env.quirks||CKEDITOR.env.edge||(a="javascript:void(function(){"+encodeURIComponent("document.open();("+CKEDITOR.tools.fixDomain+")();document.close();")+"}())",CKEDITOR.dom.element.createFromHtml('\x3ciframe frameBorder\x3d"0" class\x3d"cke_iframe_shim" src\x3d"'+a+'" tabIndex\x3d"-1"\x3e\x3c/iframe\x3e').appendTo(c.getParent()));d.unselectable();e.unselectable();return{element:b,parts:{dialog:b.getChild(0),title:d,close:e,tabs:c.getChild(2),contents:c.getChild([3,0,0,0]), 569!CKEDITOR.env.ie||CKEDITOR.env.quirks||CKEDITOR.env.edge||(a="javascript:void(function(){"+encodeURIComponent("document.open();("+CKEDITOR.tools.fixDomain+")();document.close();")+"}())",CKEDITOR.dom.element.createFromHtml('\x3ciframe frameBorder\x3d"0" class\x3d"cke_iframe_shim" src\x3d"'+a+'" tabIndex\x3d"-1"\x3e\x3c/iframe\x3e').appendTo(c.getParent()));e.unselectable();d.unselectable();return{element:b,parts:{dialog:b.getChild(0),title:e,close:d,tabs:c.getChild(2),contents:c.getChild([3,0,0,0]),
539footer:c.getChild([3,0,1,0])}}}function L(a,b,c){this.element=b;this.focusIndex=c;this.tabIndex=0;this.isFocusable=function(){return!b.getAttribute("disabled")&&b.isVisible()};this.focus=function(){a._.currentFocusIndex=this.focusIndex;this.element.focus()};b.on("keydown",function(a){a.data.getKeystroke()in{32:1,13:1}&&this.fire("click")});b.on("focus",function(){this.fire("mouseover")});b.on("blur",function(){this.fire("mouseout")})}function X(a){function b(){a.layout()}var c=CKEDITOR.document.getWindow(); 570footer:c.getChild([3,0,1,0])}}}function L(a,b,c){this.element=b;this.focusIndex=c;this.tabIndex=0;this.isFocusable=function(){return!b.getAttribute("disabled")&&b.isVisible()};this.focus=function(){a._.currentFocusIndex=this.focusIndex;this.element.focus()};b.on("keydown",function(a){a.data.getKeystroke()in{32:1,13:1}&&this.fire("click")});b.on("focus",function(){this.fire("mouseover")});b.on("blur",function(){this.fire("mouseout")})}function X(a){function b(){a.layout()}var c=CKEDITOR.document.getWindow();
540c.on("resize",b);a.on("hide",function(){c.removeListener("resize",b)})}function M(a,b){this._={dialog:a};CKEDITOR.tools.extend(this,b)}function Y(a){function b(b){var c=a.getSize(),k=CKEDITOR.document.getWindow().getViewPaneSize(),q=b.data.$.screenX,n=b.data.$.screenY,r=q-d.x,l=n-d.y;d={x:q,y:n};e.x+=r;e.y+=l;a.move(e.x+h[3]<g?-h[3]:e.x-h[1]>k.width-c.width-g?k.width-c.width+("rtl"==f.lang.dir?0:h[1]):e.x,e.y+h[0]<g?-h[0]:e.y-h[2]>k.height-c.height-g?k.height-c.height+h[2]:e.y,1);b.data.preventDefault()} 571c.on("resize",b);a.on("hide",function(){c.removeListener("resize",b)})}function M(a,b){this._={dialog:a};CKEDITOR.tools.extend(this,b)}function Y(a){function b(b){var c=a.getSize(),k=CKEDITOR.document.getWindow().getViewPaneSize(),q=b.data.$.screenX,n=b.data.$.screenY,r=q-e.x,l=n-e.y;e={x:q,y:n};d.x+=r;d.y+=l;a.move(d.x+h[3]<g?-h[3]:d.x-h[1]>k.width-c.width-g?k.width-c.width+("rtl"==f.lang.dir?0:h[1]):d.x,d.y+h[0]<g?-h[0]:d.y-h[2]>k.height-c.height-g?k.height-c.height+h[2]:d.y,1);b.data.preventDefault()}
541function c(){CKEDITOR.document.removeListener("mousemove",b);CKEDITOR.document.removeListener("mouseup",c);if(CKEDITOR.env.ie6Compat){var a=u.getChild(0).getFrameDocument();a.removeListener("mousemove",b);a.removeListener("mouseup",c)}}var d=null,e=null,f=a.getParentEditor(),g=f.config.dialog_magnetDistance,h=CKEDITOR.skin.margins||[0,0,0,0];"undefined"==typeof g&&(g=20);a.parts.title.on("mousedown",function(g){d={x:g.data.$.screenX,y:g.data.$.screenY};CKEDITOR.document.on("mousemove",b);CKEDITOR.document.on("mouseup", 572function c(){CKEDITOR.document.removeListener("mousemove",b);CKEDITOR.document.removeListener("mouseup",c);if(CKEDITOR.env.ie6Compat){var a=u.getChild(0).getFrameDocument();a.removeListener("mousemove",b);a.removeListener("mouseup",c)}}var e=null,d=null,f=a.getParentEditor(),g=f.config.dialog_magnetDistance,h=CKEDITOR.skin.margins||[0,0,0,0];"undefined"==typeof g&&(g=20);a.parts.title.on("mousedown",function(g){e={x:g.data.$.screenX,y:g.data.$.screenY};CKEDITOR.document.on("mousemove",b);CKEDITOR.document.on("mouseup",
542c);e=a.getPosition();if(CKEDITOR.env.ie6Compat){var f=u.getChild(0).getFrameDocument();f.on("mousemove",b);f.on("mouseup",c)}g.data.preventDefault()},a)}function Z(a){function b(b){var c="rtl"==f.lang.dir,n=k.width,q=k.height,G=n+(b.data.$.screenX-m.x)*(c?-1:1)*(a._.moved?1:2),H=q+(b.data.$.screenY-m.y)*(a._.moved?1:2),B=a._.element.getFirst(),B=c&&B.getComputedStyle("right"),C=a.getPosition();C.y+H>p.height&&(H=p.height-C.y);(c?B:C.x)+G>p.width&&(G=p.width-(c?B:C.x));if(e==CKEDITOR.DIALOG_RESIZE_WIDTH|| 573c);d=a.getPosition();if(CKEDITOR.env.ie6Compat){var f=u.getChild(0).getFrameDocument();f.on("mousemove",b);f.on("mouseup",c)}g.data.preventDefault()},a)}function Z(a){function b(b){var c="rtl"==f.lang.dir,n=k.width,q=k.height,G=n+(b.data.$.screenX-m.x)*(c?-1:1)*(a._.moved?1:2),H=q+(b.data.$.screenY-m.y)*(a._.moved?1:2),B=a._.element.getFirst(),B=c&&B.getComputedStyle("right"),C=a.getPosition();C.y+H>p.height&&(H=p.height-C.y);(c?B:C.x)+G>p.width&&(G=p.width-(c?B:C.x));if(d==CKEDITOR.DIALOG_RESIZE_WIDTH||
543e==CKEDITOR.DIALOG_RESIZE_BOTH)n=Math.max(d.minWidth||0,G-g);if(e==CKEDITOR.DIALOG_RESIZE_HEIGHT||e==CKEDITOR.DIALOG_RESIZE_BOTH)q=Math.max(d.minHeight||0,H-h);a.resize(n,q);a._.moved||a.layout();b.data.preventDefault()}function c(){CKEDITOR.document.removeListener("mouseup",c);CKEDITOR.document.removeListener("mousemove",b);q&&(q.remove(),q=null);if(CKEDITOR.env.ie6Compat){var a=u.getChild(0).getFrameDocument();a.removeListener("mouseup",c);a.removeListener("mousemove",b)}}var d=a.definition,e=d.resizable; 574d==CKEDITOR.DIALOG_RESIZE_BOTH)n=Math.max(e.minWidth||0,G-g);if(d==CKEDITOR.DIALOG_RESIZE_HEIGHT||d==CKEDITOR.DIALOG_RESIZE_BOTH)q=Math.max(e.minHeight||0,H-h);a.resize(n,q);a._.moved||a.layout();b.data.preventDefault()}function c(){CKEDITOR.document.removeListener("mouseup",c);CKEDITOR.document.removeListener("mousemove",b);q&&(q.remove(),q=null);if(CKEDITOR.env.ie6Compat){var a=u.getChild(0).getFrameDocument();a.removeListener("mouseup",c);a.removeListener("mousemove",b)}}var e=a.definition,d=e.resizable;
544if(e!=CKEDITOR.DIALOG_RESIZE_NONE){var f=a.getParentEditor(),g,h,p,m,k,q,n=CKEDITOR.tools.addFunction(function(e){k=a.getSize();var d=a.parts.contents;d.$.getElementsByTagName("iframe").length&&(q=CKEDITOR.dom.element.createFromHtml('\x3cdiv class\x3d"cke_dialog_resize_cover" style\x3d"height: 100%; position: absolute; width: 100%;"\x3e\x3c/div\x3e'),d.append(q));h=k.height-a.parts.contents.getSize("height",!(CKEDITOR.env.gecko||CKEDITOR.env.ie&&CKEDITOR.env.quirks));g=k.width-a.parts.contents.getSize("width", 575if(d!=CKEDITOR.DIALOG_RESIZE_NONE){var f=a.getParentEditor(),g,h,p,m,k,q,n=CKEDITOR.tools.addFunction(function(d){k=a.getSize();var e=a.parts.contents;e.$.getElementsByTagName("iframe").length&&(q=CKEDITOR.dom.element.createFromHtml('\x3cdiv class\x3d"cke_dialog_resize_cover" style\x3d"height: 100%; position: absolute; width: 100%;"\x3e\x3c/div\x3e'),e.append(q));h=k.height-a.parts.contents.getSize("height",!(CKEDITOR.env.gecko||CKEDITOR.env.ie&&CKEDITOR.env.quirks));g=k.width-a.parts.contents.getSize("width",
5451);m={x:e.screenX,y:e.screenY};p=CKEDITOR.document.getWindow().getViewPaneSize();CKEDITOR.document.on("mousemove",b);CKEDITOR.document.on("mouseup",c);CKEDITOR.env.ie6Compat&&(d=u.getChild(0).getFrameDocument(),d.on("mousemove",b),d.on("mouseup",c));e.preventDefault&&e.preventDefault()});a.on("load",function(){var b="";e==CKEDITOR.DIALOG_RESIZE_WIDTH?b=" cke_resizer_horizontal":e==CKEDITOR.DIALOG_RESIZE_HEIGHT&&(b=" cke_resizer_vertical");b=CKEDITOR.dom.element.createFromHtml('\x3cdiv class\x3d"cke_resizer'+ 5761);m={x:d.screenX,y:d.screenY};p=CKEDITOR.document.getWindow().getViewPaneSize();CKEDITOR.document.on("mousemove",b);CKEDITOR.document.on("mouseup",c);CKEDITOR.env.ie6Compat&&(e=u.getChild(0).getFrameDocument(),e.on("mousemove",b),e.on("mouseup",c));d.preventDefault&&d.preventDefault()});a.on("load",function(){var b="";d==CKEDITOR.DIALOG_RESIZE_WIDTH?b=" cke_resizer_horizontal":d==CKEDITOR.DIALOG_RESIZE_HEIGHT&&(b=" cke_resizer_vertical");b=CKEDITOR.dom.element.createFromHtml('\x3cdiv class\x3d"cke_resizer'+
546b+" cke_resizer_"+f.lang.dir+'" title\x3d"'+CKEDITOR.tools.htmlEncode(f.lang.common.resize)+'" onmousedown\x3d"CKEDITOR.tools.callFunction('+n+', event )"\x3e'+("ltr"==f.lang.dir?"◢":"◣")+"\x3c/div\x3e");a.parts.footer.append(b,1)});f.on("destroy",function(){CKEDITOR.tools.removeFunction(n)})}}function I(a){a.data.preventDefault(1)}function N(a){var b=CKEDITOR.document.getWindow(),c=a.config,d=c.dialog_backgroundCoverColor||"white",e=c.dialog_backgroundCoverOpacity,f=c.baseFloatZIndex,c=CKEDITOR.tools.genKey(d, 577b+" cke_resizer_"+f.lang.dir+'" title\x3d"'+CKEDITOR.tools.htmlEncode(f.lang.common.resize)+'" onmousedown\x3d"CKEDITOR.tools.callFunction('+n+', event )"\x3e'+("ltr"==f.lang.dir?"◢":"◣")+"\x3c/div\x3e");a.parts.footer.append(b,1)});f.on("destroy",function(){CKEDITOR.tools.removeFunction(n)})}}function I(a){a.data.preventDefault(1)}function N(a){var b=CKEDITOR.document.getWindow(),c=a.config,e=CKEDITOR.skinName||a.config.skin,d=c.dialog_backgroundCoverColor||("moono-lisa"==e?"black":"white"),e=c.dialog_backgroundCoverOpacity,
547e,f),g=z[c];g?g.show():(f=['\x3cdiv tabIndex\x3d"-1" style\x3d"position: ',CKEDITOR.env.ie6Compat?"absolute":"fixed","; z-index: ",f,"; top: 0px; left: 0px; ",CKEDITOR.env.ie6Compat?"":"background-color: "+d,'" class\x3d"cke_dialog_background_cover"\x3e'],CKEDITOR.env.ie6Compat&&(d="\x3chtml\x3e\x3cbody style\x3d\\'background-color:"+d+";\\'\x3e\x3c/body\x3e\x3c/html\x3e",f.push('\x3ciframe hidefocus\x3d"true" frameborder\x3d"0" id\x3d"cke_dialog_background_iframe" src\x3d"javascript:'),f.push("void((function(){"+ 578f=c.baseFloatZIndex,c=CKEDITOR.tools.genKey(d,e,f),g=z[c];g?g.show():(f=['\x3cdiv tabIndex\x3d"-1" style\x3d"position: ',CKEDITOR.env.ie6Compat?"absolute":"fixed","; z-index: ",f,"; top: 0px; left: 0px; ",CKEDITOR.env.ie6Compat?"":"background-color: "+d,'" class\x3d"cke_dialog_background_cover"\x3e'],CKEDITOR.env.ie6Compat&&(d="\x3chtml\x3e\x3cbody style\x3d\\'background-color:"+d+";\\'\x3e\x3c/body\x3e\x3c/html\x3e",f.push('\x3ciframe hidefocus\x3d"true" frameborder\x3d"0" id\x3d"cke_dialog_background_iframe" src\x3d"javascript:'),
548encodeURIComponent("document.open();("+CKEDITOR.tools.fixDomain+")();document.write( '"+d+"' );document.close();")+"})())"),f.push('" style\x3d"position:absolute;left:0;top:0;width:100%;height: 100%;filter: progid:DXImageTransform.Microsoft.Alpha(opacity\x3d0)"\x3e\x3c/iframe\x3e')),f.push("\x3c/div\x3e"),g=CKEDITOR.dom.element.createFromHtml(f.join("")),g.setOpacity(void 0!==e?e:.5),g.on("keydown",I),g.on("keypress",I),g.on("keyup",I),g.appendTo(CKEDITOR.document.getBody()),z[c]=g);a.focusManager.add(g); 579f.push("void((function(){"+encodeURIComponent("document.open();("+CKEDITOR.tools.fixDomain+")();document.write( '"+d+"' );document.close();")+"})())"),f.push('" style\x3d"position:absolute;left:0;top:0;width:100%;height: 100%;filter: progid:DXImageTransform.Microsoft.Alpha(opacity\x3d0)"\x3e\x3c/iframe\x3e')),f.push("\x3c/div\x3e"),g=CKEDITOR.dom.element.createFromHtml(f.join("")),g.setOpacity(void 0!==e?e:.5),g.on("keydown",I),g.on("keypress",I),g.on("keyup",I),g.appendTo(CKEDITOR.document.getBody()),
549u=g;a=function(){var a=b.getViewPaneSize();g.setStyles({width:a.width+"px",height:a.height+"px"})};var h=function(){var a=b.getScrollPosition(),c=CKEDITOR.dialog._.currentTop;g.setStyles({left:a.x+"px",top:a.y+"px"});if(c){do a=c.getPosition(),c.move(a.x,a.y);while(c=c._.parentDialog)}};J=a;b.on("resize",a);a();CKEDITOR.env.mac&&CKEDITOR.env.webkit||g.focus();if(CKEDITOR.env.ie6Compat){var p=function(){h();arguments.callee.prevScrollHandler.apply(this,arguments)};b.$.setTimeout(function(){p.prevScrollHandler= 580z[c]=g);a.focusManager.add(g);u=g;a=function(){var a=b.getViewPaneSize();g.setStyles({width:a.width+"px",height:a.height+"px"})};var h=function(){var a=b.getScrollPosition(),c=CKEDITOR.dialog._.currentTop;g.setStyles({left:a.x+"px",top:a.y+"px"});if(c){do a=c.getPosition(),c.move(a.x,a.y);while(c=c._.parentDialog)}};J=a;b.on("resize",a);a();CKEDITOR.env.mac&&CKEDITOR.env.webkit||g.focus();if(CKEDITOR.env.ie6Compat){var p=function(){h();arguments.callee.prevScrollHandler.apply(this,arguments)};b.$.setTimeout(function(){p.prevScrollHandler=
550window.onscroll||function(){};window.onscroll=p},0);h()}}function O(a){u&&(a.focusManager.remove(u),a=CKEDITOR.document.getWindow(),u.hide(),a.removeListener("resize",J),CKEDITOR.env.ie6Compat&&a.$.setTimeout(function(){window.onscroll=window.onscroll&&window.onscroll.prevScrollHandler||null},0),J=null)}var v=CKEDITOR.tools.cssLength,W='\x3cdiv class\x3d"cke_reset_all {editorId} {editorDialogClass} {hidpi}" dir\x3d"{langDir}" lang\x3d"{langCode}" role\x3d"dialog" aria-labelledby\x3d"cke_dialog_title_{id}"\x3e\x3ctable class\x3d"cke_dialog '+ 581window.onscroll||function(){};window.onscroll=p},0);h()}}function O(a){u&&(a.focusManager.remove(u),a=CKEDITOR.document.getWindow(),u.hide(),a.removeListener("resize",J),CKEDITOR.env.ie6Compat&&a.$.setTimeout(function(){window.onscroll=window.onscroll&&window.onscroll.prevScrollHandler||null},0),J=null)}var v=CKEDITOR.tools.cssLength,W='\x3cdiv class\x3d"cke_reset_all {editorId} {editorDialogClass} {hidpi}" dir\x3d"{langDir}" lang\x3d"{langCode}" role\x3d"dialog" aria-labelledby\x3d"cke_dialog_title_{id}"\x3e\x3ctable class\x3d"cke_dialog '+
551CKEDITOR.env.cssClass+' cke_{langDir}" style\x3d"position:absolute" role\x3d"presentation"\x3e\x3ctr\x3e\x3ctd role\x3d"presentation"\x3e\x3cdiv class\x3d"cke_dialog_body" role\x3d"presentation"\x3e\x3cdiv id\x3d"cke_dialog_title_{id}" class\x3d"cke_dialog_title" role\x3d"presentation"\x3e\x3c/div\x3e\x3ca id\x3d"cke_dialog_close_button_{id}" class\x3d"cke_dialog_close_button" href\x3d"javascript:void(0)" title\x3d"{closeTitle}" role\x3d"button"\x3e\x3cspan class\x3d"cke_label"\x3eX\x3c/span\x3e\x3c/a\x3e\x3cdiv id\x3d"cke_dialog_tabs_{id}" class\x3d"cke_dialog_tabs" role\x3d"tablist"\x3e\x3c/div\x3e\x3ctable class\x3d"cke_dialog_contents" role\x3d"presentation"\x3e\x3ctr\x3e\x3ctd id\x3d"cke_dialog_contents_{id}" class\x3d"cke_dialog_contents_body" role\x3d"presentation"\x3e\x3c/td\x3e\x3c/tr\x3e\x3ctr\x3e\x3ctd id\x3d"cke_dialog_footer_{id}" class\x3d"cke_dialog_footer" role\x3d"presentation"\x3e\x3c/td\x3e\x3c/tr\x3e\x3c/table\x3e\x3c/div\x3e\x3c/td\x3e\x3c/tr\x3e\x3c/table\x3e\x3c/div\x3e'; 582CKEDITOR.env.cssClass+' cke_{langDir}" style\x3d"position:absolute" role\x3d"presentation"\x3e\x3ctr\x3e\x3ctd role\x3d"presentation"\x3e\x3cdiv class\x3d"cke_dialog_body" role\x3d"presentation"\x3e\x3cdiv id\x3d"cke_dialog_title_{id}" class\x3d"cke_dialog_title" role\x3d"presentation"\x3e\x3c/div\x3e\x3ca id\x3d"cke_dialog_close_button_{id}" class\x3d"cke_dialog_close_button" href\x3d"javascript:void(0)" title\x3d"{closeTitle}" role\x3d"button"\x3e\x3cspan class\x3d"cke_label"\x3eX\x3c/span\x3e\x3c/a\x3e\x3cdiv id\x3d"cke_dialog_tabs_{id}" class\x3d"cke_dialog_tabs" role\x3d"tablist"\x3e\x3c/div\x3e\x3ctable class\x3d"cke_dialog_contents" role\x3d"presentation"\x3e\x3ctr\x3e\x3ctd id\x3d"cke_dialog_contents_{id}" class\x3d"cke_dialog_contents_body" role\x3d"presentation"\x3e\x3c/td\x3e\x3c/tr\x3e\x3ctr\x3e\x3ctd id\x3d"cke_dialog_footer_{id}" class\x3d"cke_dialog_footer" role\x3d"presentation"\x3e\x3c/td\x3e\x3c/tr\x3e\x3c/table\x3e\x3c/div\x3e\x3c/td\x3e\x3c/tr\x3e\x3c/table\x3e\x3c/div\x3e';
552CKEDITOR.dialog=function(a,b){function c(){var a=l._.focusList;a.sort(function(a,b){return a.tabIndex!=b.tabIndex?b.tabIndex-a.tabIndex:a.focusIndex-b.focusIndex});for(var b=a.length,c=0;c<b;c++)a[c].focusIndex=c}function d(a){var b=l._.focusList;a=a||0;if(!(1>b.length)){var c=l._.currentFocusIndex;l._.tabBarMode&&0>a&&(c=0);try{b[c].getInputElement().$.blur()}catch(e){}var d=c,g=1<l._.pageCount;do{d+=a;if(g&&!l._.tabBarMode&&(d==b.length||-1==d)){l._.tabBarMode=!0;l._.tabs[l._.currentTabId][0].focus(); 583CKEDITOR.dialog=function(a,b){function c(){var a=l._.focusList;a.sort(function(a,b){return a.tabIndex!=b.tabIndex?b.tabIndex-a.tabIndex:a.focusIndex-b.focusIndex});for(var b=a.length,c=0;c<b;c++)a[c].focusIndex=c}function e(a){var b=l._.focusList;a=a||0;if(!(1>b.length)){var c=l._.currentFocusIndex;l._.tabBarMode&&0>a&&(c=0);try{b[c].getInputElement().$.blur()}catch(d){}var e=c,g=1<l._.pageCount;do{e+=a;if(g&&!l._.tabBarMode&&(e==b.length||-1==e)){l._.tabBarMode=!0;l._.tabs[l._.currentTabId][0].focus();
553l._.currentFocusIndex=-1;return}d=(d+b.length)%b.length;if(d==c)break}while(a&&!b[d].isFocusable());b[d].focus();"text"==b[d].type&&b[d].select()}}function e(b){if(l==CKEDITOR.dialog._.currentTop){var c=b.data.getKeystroke(),e="rtl"==a.lang.dir,g=[37,38,39,40];q=n=0;if(9==c||c==CKEDITOR.SHIFT+9)d(c==CKEDITOR.SHIFT+9?-1:1),q=1;else if(c==CKEDITOR.ALT+121&&!l._.tabBarMode&&1<l.getPageCount())l._.tabBarMode=!0,l._.tabs[l._.currentTabId][0].focus(),l._.currentFocusIndex=-1,q=1;else if(-1!=CKEDITOR.tools.indexOf(g, 584l._.currentFocusIndex=-1;return}e=(e+b.length)%b.length;if(e==c)break}while(a&&!b[e].isFocusable());b[e].focus();"text"==b[e].type&&b[e].select()}}function d(b){if(l==CKEDITOR.dialog._.currentTop){var c=b.data.getKeystroke(),d="rtl"==a.lang.dir,g=[37,38,39,40];q=n=0;if(9==c||c==CKEDITOR.SHIFT+9)e(c==CKEDITOR.SHIFT+9?-1:1),q=1;else if(c==CKEDITOR.ALT+121&&!l._.tabBarMode&&1<l.getPageCount())l._.tabBarMode=!0,l._.tabs[l._.currentTabId][0].focus(),l._.currentFocusIndex=-1,q=1;else if(-1!=CKEDITOR.tools.indexOf(g,
554c)&&l._.tabBarMode)c=-1!=CKEDITOR.tools.indexOf([e?39:37,38],c)?x.call(l):A.call(l),l.selectPage(c),l._.tabs[c][0].focus(),q=1;else if(13!=c&&32!=c||!l._.tabBarMode)if(13==c)c=b.data.getTarget(),c.is("a","button","select","textarea")||c.is("input")&&"button"==c.$.type||((c=this.getButton("ok"))&&CKEDITOR.tools.setTimeout(c.click,0,c),q=1),n=1;else if(27==c)(c=this.getButton("cancel"))?CKEDITOR.tools.setTimeout(c.click,0,c):!1!==this.fire("cancel",{hide:!0}).hide&&this.hide(),n=1;else return;else this.selectPage(this._.currentTabId), 585c)&&l._.tabBarMode)c=-1!=CKEDITOR.tools.indexOf([d?39:37,38],c)?x.call(l):A.call(l),l.selectPage(c),l._.tabs[c][0].focus(),q=1;else if(13!=c&&32!=c||!l._.tabBarMode)if(13==c)c=b.data.getTarget(),c.is("a","button","select","textarea")||c.is("input")&&"button"==c.$.type||((c=this.getButton("ok"))&&CKEDITOR.tools.setTimeout(c.click,0,c),q=1),n=1;else if(27==c)(c=this.getButton("cancel"))?CKEDITOR.tools.setTimeout(c.click,0,c):!1!==this.fire("cancel",{hide:!0}).hide&&this.hide(),n=1;else return;else this.selectPage(this._.currentTabId),
555this._.tabBarMode=!1,this._.currentFocusIndex=-1,d(1),q=1;f(b)}}function f(a){q?a.data.preventDefault(1):n&&a.data.stopPropagation()}var g=CKEDITOR.dialog._.dialogDefinitions[b],h=CKEDITOR.tools.clone(aa),p=a.config.dialog_buttonsOrder||"OS",m=a.lang.dir,k={},q,n;("OS"==p&&CKEDITOR.env.mac||"rtl"==p&&"ltr"==m||"ltr"==p&&"rtl"==m)&&h.buttons.reverse();g=CKEDITOR.tools.extend(g(a),h);g=CKEDITOR.tools.clone(g);g=new P(this,g);h=V(a);this._={editor:a,element:h.element,name:b,contentSize:{width:0,height:0}, 586this._.tabBarMode=!1,this._.currentFocusIndex=-1,e(1),q=1;f(b)}}function f(a){q?a.data.preventDefault(1):n&&a.data.stopPropagation()}var g=CKEDITOR.dialog._.dialogDefinitions[b],h=CKEDITOR.tools.clone(aa),p=a.config.dialog_buttonsOrder||"OS",m=a.lang.dir,k={},q,n;("OS"==p&&CKEDITOR.env.mac||"rtl"==p&&"ltr"==m||"ltr"==p&&"rtl"==m)&&h.buttons.reverse();g=CKEDITOR.tools.extend(g(a),h);g=CKEDITOR.tools.clone(g);g=new P(this,g);h=V(a);this._={editor:a,element:h.element,name:b,contentSize:{width:0,height:0},
556size:{width:0,height:0},contents:{},buttons:{},accessKeyMap:{},tabs:{},tabIdList:[],currentTabId:null,currentTabIndex:null,pageCount:0,lastTab:null,tabBarMode:!1,focusList:[],currentFocusIndex:0,hasFocus:!1};this.parts=h.parts;CKEDITOR.tools.setTimeout(function(){a.fire("ariaWidget",this.parts.contents)},0,this);h={position:CKEDITOR.env.ie6Compat?"absolute":"fixed",top:0,visibility:"hidden"};h["rtl"==m?"right":"left"]=0;this.parts.dialog.setStyles(h);CKEDITOR.event.call(this);this.definition=g=CKEDITOR.fire("dialogDefinition", 587size:{width:0,height:0},contents:{},buttons:{},accessKeyMap:{},tabs:{},tabIdList:[],currentTabId:null,currentTabIndex:null,pageCount:0,lastTab:null,tabBarMode:!1,focusList:[],currentFocusIndex:0,hasFocus:!1};this.parts=h.parts;CKEDITOR.tools.setTimeout(function(){a.fire("ariaWidget",this.parts.contents)},0,this);h={position:CKEDITOR.env.ie6Compat?"absolute":"fixed",top:0,visibility:"hidden"};h["rtl"==m?"right":"left"]=0;this.parts.dialog.setStyles(h);CKEDITOR.event.call(this);this.definition=g=CKEDITOR.fire("dialogDefinition",
557{name:b,definition:g},a).definition;if(!("removeDialogTabs"in a._)&&a.config.removeDialogTabs){h=a.config.removeDialogTabs.split(";");for(m=0;m<h.length;m++)if(p=h[m].split(":"),2==p.length){var r=p[0];k[r]||(k[r]=[]);k[r].push(p[1])}a._.removeDialogTabs=k}if(a._.removeDialogTabs&&(k=a._.removeDialogTabs[b]))for(m=0;m<k.length;m++)g.removeContents(k[m]);if(g.onLoad)this.on("load",g.onLoad);if(g.onShow)this.on("show",g.onShow);if(g.onHide)this.on("hide",g.onHide);if(g.onOk)this.on("ok",function(b){a.fire("saveSnapshot"); 588{name:b,definition:g},a).definition;if(!("removeDialogTabs"in a._)&&a.config.removeDialogTabs){h=a.config.removeDialogTabs.split(";");for(m=0;m<h.length;m++)if(p=h[m].split(":"),2==p.length){var r=p[0];k[r]||(k[r]=[]);k[r].push(p[1])}a._.removeDialogTabs=k}if(a._.removeDialogTabs&&(k=a._.removeDialogTabs[b]))for(m=0;m<k.length;m++)g.removeContents(k[m]);if(g.onLoad)this.on("load",g.onLoad);if(g.onShow)this.on("show",g.onShow);if(g.onHide)this.on("hide",g.onHide);if(g.onOk)this.on("ok",function(b){a.fire("saveSnapshot");
558setTimeout(function(){a.fire("saveSnapshot")},0);!1===g.onOk.call(this,b)&&(b.data.hide=!1)});this.state=CKEDITOR.DIALOG_STATE_IDLE;if(g.onCancel)this.on("cancel",function(a){!1===g.onCancel.call(this,a)&&(a.data.hide=!1)});var l=this,t=function(a){var b=l._.contents,c=!1,d;for(d in b)for(var e in b[d])if(c=a.call(this,b[d][e]))return};this.on("ok",function(a){t(function(b){if(b.validate){var c=b.validate(this),d="string"==typeof c||!1===c;d&&(a.data.hide=!1,a.stop());T.call(b,!d,"string"==typeof c? 589setTimeout(function(){a.fire("saveSnapshot")},0);!1===g.onOk.call(this,b)&&(b.data.hide=!1)});this.state=CKEDITOR.DIALOG_STATE_IDLE;if(g.onCancel)this.on("cancel",function(a){!1===g.onCancel.call(this,a)&&(a.data.hide=!1)});var l=this,t=function(a){var b=l._.contents,c=!1,d;for(d in b)for(var e in b[d])if(c=a.call(this,b[d][e]))return};this.on("ok",function(a){t(function(b){if(b.validate){var c=b.validate(this),d="string"==typeof c||!1===c;d&&(a.data.hide=!1,a.stop());T.call(b,!d,"string"==typeof c?
559c:void 0);return d}})},this,null,0);this.on("cancel",function(b){t(function(c){if(c.isChanged())return a.config.dialog_noConfirmCancel||confirm(a.lang.common.confirmCancel)||(b.data.hide=!1),!0})},this,null,0);this.parts.close.on("click",function(a){!1!==this.fire("cancel",{hide:!0}).hide&&this.hide();a.data.preventDefault()},this);this.changeFocus=d;var y=this._.element;a.focusManager.add(y,1);this.on("show",function(){y.on("keydown",e,this);if(CKEDITOR.env.gecko)y.on("keypress",f,this)});this.on("hide", 590c:void 0);return d}})},this,null,0);this.on("cancel",function(b){t(function(c){if(c.isChanged())return a.config.dialog_noConfirmCancel||confirm(a.lang.common.confirmCancel)||(b.data.hide=!1),!0})},this,null,0);this.parts.close.on("click",function(a){!1!==this.fire("cancel",{hide:!0}).hide&&this.hide();a.data.preventDefault()},this);this.changeFocus=e;var y=this._.element;a.focusManager.add(y,1);this.on("show",function(){y.on("keydown",d,this);if(CKEDITOR.env.gecko)y.on("keypress",f,this)});this.on("hide",
560function(){y.removeListener("keydown",e);CKEDITOR.env.gecko&&y.removeListener("keypress",f);t(function(a){U.apply(a)})});this.on("iframeAdded",function(a){(new CKEDITOR.dom.document(a.data.iframe.$.contentWindow.document)).on("keydown",e,this,null,0)});this.on("show",function(){c();var b=1<l._.pageCount;a.config.dialog_startupFocusTab&&b?(l._.tabBarMode=!0,l._.tabs[l._.currentTabId][0].focus(),l._.currentFocusIndex=-1):this._.hasFocus||(this._.currentFocusIndex=b?-1:this._.focusList.length-1,g.onFocus? 591function(){y.removeListener("keydown",d);CKEDITOR.env.gecko&&y.removeListener("keypress",f);t(function(a){U.apply(a)})});this.on("iframeAdded",function(a){(new CKEDITOR.dom.document(a.data.iframe.$.contentWindow.document)).on("keydown",d,this,null,0)});this.on("show",function(){c();var b=1<l._.pageCount;a.config.dialog_startupFocusTab&&b?(l._.tabBarMode=!0,l._.tabs[l._.currentTabId][0].focus(),l._.currentFocusIndex=-1):this._.hasFocus||(this._.currentFocusIndex=b?-1:this._.focusList.length-1,g.onFocus?
561(b=g.onFocus.call(this))&&b.focus():d(1))},this,null,4294967295);if(CKEDITOR.env.ie6Compat)this.on("load",function(){var a=this.getElement(),b=a.getFirst();b.remove();b.appendTo(a)},this);Y(this);Z(this);(new CKEDITOR.dom.text(g.title,CKEDITOR.document)).appendTo(this.parts.title);for(m=0;m<g.contents.length;m++)(k=g.contents[m])&&this.addPage(k);this.parts.tabs.on("click",function(a){var b=a.data.getTarget();b.hasClass("cke_dialog_tab")&&(b=b.$.id,this.selectPage(b.substring(4,b.lastIndexOf("_"))), 592(b=g.onFocus.call(this))&&b.focus():e(1))},this,null,4294967295);if(CKEDITOR.env.ie6Compat)this.on("load",function(){var a=this.getElement(),b=a.getFirst();b.remove();b.appendTo(a)},this);Y(this);Z(this);(new CKEDITOR.dom.text(g.title,CKEDITOR.document)).appendTo(this.parts.title);for(m=0;m<g.contents.length;m++)(k=g.contents[m])&&this.addPage(k);this.parts.tabs.on("click",function(a){var b=a.data.getTarget();b.hasClass("cke_dialog_tab")&&(b=b.$.id,this.selectPage(b.substring(4,b.lastIndexOf("_"))),
562this._.tabBarMode&&(this._.tabBarMode=!1,this._.currentFocusIndex=-1,d(1)),a.data.preventDefault())},this);m=[];k=CKEDITOR.dialog._.uiElementBuilders.hbox.build(this,{type:"hbox",className:"cke_dialog_footer_buttons",widths:[],children:g.buttons},m).getChild();this.parts.footer.setHtml(m.join(""));for(m=0;m<k.length;m++)this._.buttons[k[m].id]=k[m]};CKEDITOR.dialog.prototype={destroy:function(){this.hide();this._.element.remove()},resize:function(){return function(a,b){this._.contentSize&&this._.contentSize.width== 593this._.tabBarMode&&(this._.tabBarMode=!1,this._.currentFocusIndex=-1,e(1)),a.data.preventDefault())},this);m=[];k=CKEDITOR.dialog._.uiElementBuilders.hbox.build(this,{type:"hbox",className:"cke_dialog_footer_buttons",widths:[],children:g.buttons},m).getChild();this.parts.footer.setHtml(m.join(""));for(m=0;m<k.length;m++)this._.buttons[k[m].id]=k[m]};CKEDITOR.dialog.prototype={destroy:function(){this.hide();this._.element.remove()},resize:function(){return function(a,b){this._.contentSize&&this._.contentSize.width==
563a&&this._.contentSize.height==b||(CKEDITOR.dialog.fire("resize",{dialog:this,width:a,height:b},this._.editor),this.fire("resize",{width:a,height:b},this._.editor),this.parts.contents.setStyles({width:a+"px",height:b+"px"}),"rtl"==this._.editor.lang.dir&&this._.position&&(this._.position.x=CKEDITOR.document.getWindow().getViewPaneSize().width-this._.contentSize.width-parseInt(this._.element.getFirst().getStyle("right"),10)),this._.contentSize={width:a,height:b})}}(),getSize:function(){var a=this._.element.getFirst(); 594a&&this._.contentSize.height==b||(CKEDITOR.dialog.fire("resize",{dialog:this,width:a,height:b},this._.editor),this.fire("resize",{width:a,height:b},this._.editor),this.parts.contents.setStyles({width:a+"px",height:b+"px"}),"rtl"==this._.editor.lang.dir&&this._.position&&(this._.position.x=CKEDITOR.document.getWindow().getViewPaneSize().width-this._.contentSize.width-parseInt(this._.element.getFirst().getStyle("right"),10)),this._.contentSize={width:a,height:b})}}(),getSize:function(){var a=this._.element.getFirst();
564return{width:a.$.offsetWidth||0,height:a.$.offsetHeight||0}},move:function(a,b,c){var d=this._.element.getFirst(),e="rtl"==this._.editor.lang.dir,f="fixed"==d.getComputedStyle("position");CKEDITOR.env.ie&&d.setStyle("zoom","100%");f&&this._.position&&this._.position.x==a&&this._.position.y==b||(this._.position={x:a,y:b},f||(f=CKEDITOR.document.getWindow().getScrollPosition(),a+=f.x,b+=f.y),e&&(f=this.getSize(),a=CKEDITOR.document.getWindow().getViewPaneSize().width-f.width-a),b={top:(0<b?b:0)+"px"}, 595return{width:a.$.offsetWidth||0,height:a.$.offsetHeight||0}},move:function(a,b,c){var e=this._.element.getFirst(),d="rtl"==this._.editor.lang.dir,f="fixed"==e.getComputedStyle("position");CKEDITOR.env.ie&&e.setStyle("zoom","100%");f&&this._.position&&this._.position.x==a&&this._.position.y==b||(this._.position={x:a,y:b},f||(f=CKEDITOR.document.getWindow().getScrollPosition(),a+=f.x,b+=f.y),d&&(f=this.getSize(),a=CKEDITOR.document.getWindow().getViewPaneSize().width-f.width-a),b={top:(0<b?b:0)+"px"},
565b[e?"right":"left"]=(0<a?a:0)+"px",d.setStyles(b),c&&(this._.moved=1))},getPosition:function(){return CKEDITOR.tools.extend({},this._.position)},show:function(){var a=this._.element,b=this.definition;a.getParent()&&a.getParent().equals(CKEDITOR.document.getBody())?a.setStyle("display","block"):a.appendTo(CKEDITOR.document.getBody());this.resize(this._.contentSize&&this._.contentSize.width||b.width||b.minWidth,this._.contentSize&&this._.contentSize.height||b.height||b.minHeight);this.reset();this.selectPage(this.definition.contents[0].id); 596b[d?"right":"left"]=(0<a?a:0)+"px",e.setStyles(b),c&&(this._.moved=1))},getPosition:function(){return CKEDITOR.tools.extend({},this._.position)},show:function(){var a=this._.element,b=this.definition;a.getParent()&&a.getParent().equals(CKEDITOR.document.getBody())?a.setStyle("display","block"):a.appendTo(CKEDITOR.document.getBody());this.resize(this._.contentSize&&this._.contentSize.width||b.width||b.minWidth,this._.contentSize&&this._.contentSize.height||b.height||b.minHeight);this.reset();null===
566null===CKEDITOR.dialog._.currentZIndex&&(CKEDITOR.dialog._.currentZIndex=this._.editor.config.baseFloatZIndex);this._.element.getFirst().setStyle("z-index",CKEDITOR.dialog._.currentZIndex+=10);null===CKEDITOR.dialog._.currentTop?(CKEDITOR.dialog._.currentTop=this,this._.parentDialog=null,N(this._.editor)):(this._.parentDialog=CKEDITOR.dialog._.currentTop,this._.parentDialog.getElement().getFirst().$.style.zIndex-=Math.floor(this._.editor.config.baseFloatZIndex/2),CKEDITOR.dialog._.currentTop=this); 597this._.currentTabId&&this.selectPage(this.definition.contents[0].id);null===CKEDITOR.dialog._.currentZIndex&&(CKEDITOR.dialog._.currentZIndex=this._.editor.config.baseFloatZIndex);this._.element.getFirst().setStyle("z-index",CKEDITOR.dialog._.currentZIndex+=10);null===CKEDITOR.dialog._.currentTop?(CKEDITOR.dialog._.currentTop=this,this._.parentDialog=null,N(this._.editor)):(this._.parentDialog=CKEDITOR.dialog._.currentTop,this._.parentDialog.getElement().getFirst().$.style.zIndex-=Math.floor(this._.editor.config.baseFloatZIndex/
567a.on("keydown",Q);a.on("keyup",R);this._.hasFocus=!1;for(var c in b.contents)if(b.contents[c]){var a=b.contents[c],d=this._.tabs[a.id],e=a.requiredContent,f=0;if(d){for(var g in this._.contents[a.id]){var h=this._.contents[a.id][g];"hbox"!=h.type&&"vbox"!=h.type&&h.getInputElement()&&(h.requiredContent&&!this._.editor.activeFilter.check(h.requiredContent)?h.disable():(h.enable(),f++))}!f||e&&!this._.editor.activeFilter.check(e)?d[0].addClass("cke_dialog_tab_disabled"):d[0].removeClass("cke_dialog_tab_disabled")}}CKEDITOR.tools.setTimeout(function(){this.layout(); 5982),CKEDITOR.dialog._.currentTop=this);a.on("keydown",Q);a.on("keyup",R);this._.hasFocus=!1;for(var c in b.contents)if(b.contents[c]){var a=b.contents[c],e=this._.tabs[a.id],d=a.requiredContent,f=0;if(e){for(var g in this._.contents[a.id]){var h=this._.contents[a.id][g];"hbox"!=h.type&&"vbox"!=h.type&&h.getInputElement()&&(h.requiredContent&&!this._.editor.activeFilter.check(h.requiredContent)?h.disable():(h.enable(),f++))}!f||d&&!this._.editor.activeFilter.check(d)?e[0].addClass("cke_dialog_tab_disabled"):
568X(this);this.parts.dialog.setStyle("visibility","");this.fireOnce("load",{});CKEDITOR.ui.fire("ready",this);this.fire("show",{});this._.editor.fire("dialogShow",this);this._.parentDialog||this._.editor.focusManager.lock();this.foreach(function(a){a.setInitValue&&a.setInitValue()})},100,this)},layout:function(){var a=this.parts.dialog,b=this.getSize(),c=CKEDITOR.document.getWindow().getViewPaneSize(),d=(c.width-b.width)/2,e=(c.height-b.height)/2;CKEDITOR.env.ie6Compat||(b.height+(0<e?e:0)>c.height|| 599e[0].removeClass("cke_dialog_tab_disabled")}}CKEDITOR.tools.setTimeout(function(){this.layout();X(this);this.parts.dialog.setStyle("visibility","");this.fireOnce("load",{});CKEDITOR.ui.fire("ready",this);this.fire("show",{});this._.editor.fire("dialogShow",this);this._.parentDialog||this._.editor.focusManager.lock();this.foreach(function(a){a.setInitValue&&a.setInitValue()})},100,this)},layout:function(){var a=this.parts.dialog,b=this.getSize(),c=CKEDITOR.document.getWindow().getViewPaneSize(),e=
569b.width+(0<d?d:0)>c.width?a.setStyle("position","absolute"):a.setStyle("position","fixed"));this.move(this._.moved?this._.position.x:d,this._.moved?this._.position.y:e)},foreach:function(a){for(var b in this._.contents)for(var c in this._.contents[b])a.call(this,this._.contents[b][c]);return this},reset:function(){var a=function(a){a.reset&&a.reset(1)};return function(){this.foreach(a);return this}}(),setupContent:function(){var a=arguments;this.foreach(function(b){b.setup&&b.setup.apply(b,a)})}, 600(c.width-b.width)/2,d=(c.height-b.height)/2;CKEDITOR.env.ie6Compat||(b.height+(0<d?d:0)>c.height||b.width+(0<e?e:0)>c.width?a.setStyle("position","absolute"):a.setStyle("position","fixed"));this.move(this._.moved?this._.position.x:e,this._.moved?this._.position.y:d)},foreach:function(a){for(var b in this._.contents)for(var c in this._.contents[b])a.call(this,this._.contents[b][c]);return this},reset:function(){var a=function(a){a.reset&&a.reset(1)};return function(){this.foreach(a);return this}}(),
570commitContent:function(){var a=arguments;this.foreach(function(b){CKEDITOR.env.ie&&this._.currentFocusIndex==b.focusIndex&&b.getInputElement().$.blur();b.commit&&b.commit.apply(b,a)})},hide:function(){if(this.parts.dialog.isVisible()){this.fire("hide",{});this._.editor.fire("dialogHide",this);this.selectPage(this._.tabIdList[0]);var a=this._.element;a.setStyle("display","none");this.parts.dialog.setStyle("visibility","hidden");for(ba(this);CKEDITOR.dialog._.currentTop!=this;)CKEDITOR.dialog._.currentTop.hide(); 601setupContent:function(){var a=arguments;this.foreach(function(b){b.setup&&b.setup.apply(b,a)})},commitContent:function(){var a=arguments;this.foreach(function(b){CKEDITOR.env.ie&&this._.currentFocusIndex==b.focusIndex&&b.getInputElement().$.blur();b.commit&&b.commit.apply(b,a)})},hide:function(){if(this.parts.dialog.isVisible()){this.fire("hide",{});this._.editor.fire("dialogHide",this);this.selectPage(this._.tabIdList[0]);var a=this._.element;a.setStyle("display","none");this.parts.dialog.setStyle("visibility",
571if(this._.parentDialog){var b=this._.parentDialog.getElement().getFirst();b.setStyle("z-index",parseInt(b.$.style.zIndex,10)+Math.floor(this._.editor.config.baseFloatZIndex/2))}else O(this._.editor);if(CKEDITOR.dialog._.currentTop=this._.parentDialog)CKEDITOR.dialog._.currentZIndex-=10;else{CKEDITOR.dialog._.currentZIndex=null;a.removeListener("keydown",Q);a.removeListener("keyup",R);var c=this._.editor;c.focus();setTimeout(function(){c.focusManager.unlock();CKEDITOR.env.iOS&&c.window.focus()},0)}delete this._.parentDialog; 602"hidden");for(ba(this);CKEDITOR.dialog._.currentTop!=this;)CKEDITOR.dialog._.currentTop.hide();if(this._.parentDialog){var b=this._.parentDialog.getElement().getFirst();b.setStyle("z-index",parseInt(b.$.style.zIndex,10)+Math.floor(this._.editor.config.baseFloatZIndex/2))}else O(this._.editor);if(CKEDITOR.dialog._.currentTop=this._.parentDialog)CKEDITOR.dialog._.currentZIndex-=10;else{CKEDITOR.dialog._.currentZIndex=null;a.removeListener("keydown",Q);a.removeListener("keyup",R);var c=this._.editor;
572this.foreach(function(a){a.resetInitValue&&a.resetInitValue()});this.setState(CKEDITOR.DIALOG_STATE_IDLE)}},addPage:function(a){if(!a.requiredContent||this._.editor.filter.check(a.requiredContent)){for(var b=[],c=a.label?' title\x3d"'+CKEDITOR.tools.htmlEncode(a.label)+'"':"",d=CKEDITOR.dialog._.uiElementBuilders.vbox.build(this,{type:"vbox",className:"cke_dialog_page_contents",children:a.elements,expand:!!a.expand,padding:a.padding,style:a.style||"width: 100%;"},b),e=this._.contents[a.id]={},f=d.getChild(), 603c.focus();setTimeout(function(){c.focusManager.unlock();CKEDITOR.env.iOS&&c.window.focus()},0)}delete this._.parentDialog;this.foreach(function(a){a.resetInitValue&&a.resetInitValue()});this.setState(CKEDITOR.DIALOG_STATE_IDLE)}},addPage:function(a){if(!a.requiredContent||this._.editor.filter.check(a.requiredContent)){for(var b=[],c=a.label?' title\x3d"'+CKEDITOR.tools.htmlEncode(a.label)+'"':"",e=CKEDITOR.dialog._.uiElementBuilders.vbox.build(this,{type:"vbox",className:"cke_dialog_page_contents",
573g=0;d=f.shift();)d.notAllowed||"hbox"==d.type||"vbox"==d.type||g++,e[d.id]=d,"function"==typeof d.getChild&&f.push.apply(f,d.getChild());g||(a.hidden=!0);b=CKEDITOR.dom.element.createFromHtml(b.join(""));b.setAttribute("role","tabpanel");d=CKEDITOR.env;e="cke_"+a.id+"_"+CKEDITOR.tools.getNextNumber();c=CKEDITOR.dom.element.createFromHtml(['\x3ca class\x3d"cke_dialog_tab"',0<this._.pageCount?" cke_last":"cke_first",c,a.hidden?' style\x3d"display:none"':"",' id\x3d"',e,'"',d.gecko&&!d.hc?"":' href\x3d"javascript:void(0)"', 604children:a.elements,expand:!!a.expand,padding:a.padding,style:a.style||"width: 100%;"},b),d=this._.contents[a.id]={},f=e.getChild(),g=0;e=f.shift();)e.notAllowed||"hbox"==e.type||"vbox"==e.type||g++,d[e.id]=e,"function"==typeof e.getChild&&f.push.apply(f,e.getChild());g||(a.hidden=!0);b=CKEDITOR.dom.element.createFromHtml(b.join(""));b.setAttribute("role","tabpanel");e=CKEDITOR.env;d="cke_"+a.id+"_"+CKEDITOR.tools.getNextNumber();c=CKEDITOR.dom.element.createFromHtml(['\x3ca class\x3d"cke_dialog_tab"',
574' tabIndex\x3d"-1" hidefocus\x3d"true" role\x3d"tab"\x3e',a.label,"\x3c/a\x3e"].join(""));b.setAttribute("aria-labelledby",e);this._.tabs[a.id]=[c,b];this._.tabIdList.push(a.id);!a.hidden&&this._.pageCount++;this._.lastTab=c;this.updateStyle();b.setAttribute("name",a.id);b.appendTo(this.parts.contents);c.unselectable();this.parts.tabs.append(c);a.accessKey&&(S(this,this,"CTRL+"+a.accessKey,ca,da),this._.accessKeyMap["CTRL+"+a.accessKey]=a.id)}},selectPage:function(a){if(this._.currentTabId!=a&&!this._.tabs[a][0].hasClass("cke_dialog_tab_disabled")&& 6050<this._.pageCount?" cke_last":"cke_first",c,a.hidden?' style\x3d"display:none"':"",' id\x3d"',d,'"',e.gecko&&!e.hc?"":' href\x3d"javascript:void(0)"',' tabIndex\x3d"-1" hidefocus\x3d"true" role\x3d"tab"\x3e',a.label,"\x3c/a\x3e"].join(""));b.setAttribute("aria-labelledby",d);this._.tabs[a.id]=[c,b];this._.tabIdList.push(a.id);!a.hidden&&this._.pageCount++;this._.lastTab=c;this.updateStyle();b.setAttribute("name",a.id);b.appendTo(this.parts.contents);c.unselectable();this.parts.tabs.append(c);a.accessKey&&
575!1!==this.fire("selectPage",{page:a,currentPage:this._.currentTabId})){for(var b in this._.tabs){var c=this._.tabs[b][0],d=this._.tabs[b][1];b!=a&&(c.removeClass("cke_dialog_tab_selected"),d.hide());d.setAttribute("aria-hidden",b!=a)}var e=this._.tabs[a];e[0].addClass("cke_dialog_tab_selected");CKEDITOR.env.ie6Compat||CKEDITOR.env.ie7Compat?(K(e[1]),e[1].show(),setTimeout(function(){K(e[1],1)},0)):e[1].show();this._.currentTabId=a;this._.currentTabIndex=CKEDITOR.tools.indexOf(this._.tabIdList,a)}}, 606(S(this,this,"CTRL+"+a.accessKey,ca,da),this._.accessKeyMap["CTRL+"+a.accessKey]=a.id)}},selectPage:function(a){if(this._.currentTabId!=a&&!this._.tabs[a][0].hasClass("cke_dialog_tab_disabled")&&!1!==this.fire("selectPage",{page:a,currentPage:this._.currentTabId})){for(var b in this._.tabs){var c=this._.tabs[b][0],e=this._.tabs[b][1];b!=a&&(c.removeClass("cke_dialog_tab_selected"),e.hide());e.setAttribute("aria-hidden",b!=a)}var d=this._.tabs[a];d[0].addClass("cke_dialog_tab_selected");CKEDITOR.env.ie6Compat||
576updateStyle:function(){this.parts.dialog[(1===this._.pageCount?"add":"remove")+"Class"]("cke_single_page")},hidePage:function(a){var b=this._.tabs[a]&&this._.tabs[a][0];b&&1!=this._.pageCount&&b.isVisible()&&(a==this._.currentTabId&&this.selectPage(x.call(this)),b.hide(),this._.pageCount--,this.updateStyle())},showPage:function(a){if(a=this._.tabs[a]&&this._.tabs[a][0])a.show(),this._.pageCount++,this.updateStyle()},getElement:function(){return this._.element},getName:function(){return this._.name}, 607CKEDITOR.env.ie7Compat?(K(d[1]),d[1].show(),setTimeout(function(){K(d[1],1)},0)):d[1].show();this._.currentTabId=a;this._.currentTabIndex=CKEDITOR.tools.indexOf(this._.tabIdList,a)}},updateStyle:function(){this.parts.dialog[(1===this._.pageCount?"add":"remove")+"Class"]("cke_single_page")},hidePage:function(a){var b=this._.tabs[a]&&this._.tabs[a][0];b&&1!=this._.pageCount&&b.isVisible()&&(a==this._.currentTabId&&this.selectPage(x.call(this)),b.hide(),this._.pageCount--,this.updateStyle())},showPage:function(a){if(a=
577getContentElement:function(a,b){var c=this._.contents[a];return c&&c[b]},getValueOf:function(a,b){return this.getContentElement(a,b).getValue()},setValueOf:function(a,b,c){return this.getContentElement(a,b).setValue(c)},getButton:function(a){return this._.buttons[a]},click:function(a){return this._.buttons[a].click()},disableButton:function(a){return this._.buttons[a].disable()},enableButton:function(a){return this._.buttons[a].enable()},getPageCount:function(){return this._.pageCount},getParentEditor:function(){return this._.editor}, 608this._.tabs[a]&&this._.tabs[a][0])a.show(),this._.pageCount++,this.updateStyle()},getElement:function(){return this._.element},getName:function(){return this._.name},getContentElement:function(a,b){var c=this._.contents[a];return c&&c[b]},getValueOf:function(a,b){return this.getContentElement(a,b).getValue()},setValueOf:function(a,b,c){return this.getContentElement(a,b).setValue(c)},getButton:function(a){return this._.buttons[a]},click:function(a){return this._.buttons[a].click()},disableButton:function(a){return this._.buttons[a].disable()},
578getSelectedElement:function(){return this.getParentEditor().getSelection().getSelectedElement()},addFocusable:function(a,b){if("undefined"==typeof b)b=this._.focusList.length,this._.focusList.push(new L(this,a,b));else{this._.focusList.splice(b,0,new L(this,a,b));for(var c=b+1;c<this._.focusList.length;c++)this._.focusList[c].focusIndex++}},setState:function(a){if(this.state!=a){this.state=a;if(a==CKEDITOR.DIALOG_STATE_BUSY){if(!this.parts.spinner){var b=this.getParentEditor().lang.dir,c={attributes:{"class":"cke_dialog_spinner"}, 609enableButton:function(a){return this._.buttons[a].enable()},getPageCount:function(){return this._.pageCount},getParentEditor:function(){return this._.editor},getSelectedElement:function(){return this.getParentEditor().getSelection().getSelectedElement()},addFocusable:function(a,b){if("undefined"==typeof b)b=this._.focusList.length,this._.focusList.push(new L(this,a,b));else{this._.focusList.splice(b,0,new L(this,a,b));for(var c=b+1;c<this._.focusList.length;c++)this._.focusList[c].focusIndex++}},
579styles:{"float":"rtl"==b?"right":"left"}};c.styles["margin-"+("rtl"==b?"left":"right")]="8px";this.parts.spinner=CKEDITOR.document.createElement("div",c);this.parts.spinner.setHtml("\x26#8987;");this.parts.spinner.appendTo(this.parts.title,1)}this.parts.spinner.show();this.getButton("ok").disable()}else a==CKEDITOR.DIALOG_STATE_IDLE&&(this.parts.spinner&&this.parts.spinner.hide(),this.getButton("ok").enable());this.fire("state",a)}}};CKEDITOR.tools.extend(CKEDITOR.dialog,{add:function(a,b){this._.dialogDefinitions[a]&& 610setState:function(a){if(this.state!=a){this.state=a;if(a==CKEDITOR.DIALOG_STATE_BUSY){if(!this.parts.spinner){var b=this.getParentEditor().lang.dir,c={attributes:{"class":"cke_dialog_spinner"},styles:{"float":"rtl"==b?"right":"left"}};c.styles["margin-"+("rtl"==b?"left":"right")]="8px";this.parts.spinner=CKEDITOR.document.createElement("div",c);this.parts.spinner.setHtml("\x26#8987;");this.parts.spinner.appendTo(this.parts.title,1)}this.parts.spinner.show();this.getButton("ok").disable()}else a==
580"function"!=typeof b||(this._.dialogDefinitions[a]=b)},exists:function(a){return!!this._.dialogDefinitions[a]},getCurrent:function(){return CKEDITOR.dialog._.currentTop},isTabEnabled:function(a,b,c){a=a.config.removeDialogTabs;return!(a&&a.match(new RegExp("(?:^|;)"+b+":"+c+"(?:$|;)","i")))},okButton:function(){var a=function(a,c){c=c||{};return CKEDITOR.tools.extend({id:"ok",type:"button",label:a.lang.common.ok,"class":"cke_dialog_ui_button_ok",onClick:function(a){a=a.data.dialog;!1!==a.fire("ok", 611CKEDITOR.DIALOG_STATE_IDLE&&(this.parts.spinner&&this.parts.spinner.hide(),this.getButton("ok").enable());this.fire("state",a)}}};CKEDITOR.tools.extend(CKEDITOR.dialog,{add:function(a,b){this._.dialogDefinitions[a]&&"function"!=typeof b||(this._.dialogDefinitions[a]=b)},exists:function(a){return!!this._.dialogDefinitions[a]},getCurrent:function(){return CKEDITOR.dialog._.currentTop},isTabEnabled:function(a,b,c){a=a.config.removeDialogTabs;return!(a&&a.match(new RegExp("(?:^|;)"+b+":"+c+"(?:$|;)",
581{hide:!0}).hide&&a.hide()}},c,!0)};a.type="button";a.override=function(b){return CKEDITOR.tools.extend(function(c){return a(c,b)},{type:"button"},!0)};return a}(),cancelButton:function(){var a=function(a,c){c=c||{};return CKEDITOR.tools.extend({id:"cancel",type:"button",label:a.lang.common.cancel,"class":"cke_dialog_ui_button_cancel",onClick:function(a){a=a.data.dialog;!1!==a.fire("cancel",{hide:!0}).hide&&a.hide()}},c,!0)};a.type="button";a.override=function(b){return CKEDITOR.tools.extend(function(c){return a(c, 612"i")))},okButton:function(){var a=function(a,c){c=c||{};return CKEDITOR.tools.extend({id:"ok",type:"button",label:a.lang.common.ok,"class":"cke_dialog_ui_button_ok",onClick:function(a){a=a.data.dialog;!1!==a.fire("ok",{hide:!0}).hide&&a.hide()}},c,!0)};a.type="button";a.override=function(b){return CKEDITOR.tools.extend(function(c){return a(c,b)},{type:"button"},!0)};return a}(),cancelButton:function(){var a=function(a,c){c=c||{};return CKEDITOR.tools.extend({id:"cancel",type:"button",label:a.lang.common.cancel,
582b)},{type:"button"},!0)};return a}(),addUIElement:function(a,b){this._.uiElementBuilders[a]=b}});CKEDITOR.dialog._={uiElementBuilders:{},dialogDefinitions:{},currentTop:null,currentZIndex:null};CKEDITOR.event.implementOn(CKEDITOR.dialog);CKEDITOR.event.implementOn(CKEDITOR.dialog.prototype);var aa={resizable:CKEDITOR.DIALOG_RESIZE_BOTH,minWidth:600,minHeight:400,buttons:[CKEDITOR.dialog.okButton,CKEDITOR.dialog.cancelButton]},D=function(a,b,c){for(var d=0,e;e=a[d];d++)if(e.id==b||c&&e[c]&&(e=D(e[c], 613"class":"cke_dialog_ui_button_cancel",onClick:function(a){a=a.data.dialog;!1!==a.fire("cancel",{hide:!0}).hide&&a.hide()}},c,!0)};a.type="button";a.override=function(b){return CKEDITOR.tools.extend(function(c){return a(c,b)},{type:"button"},!0)};return a}(),addUIElement:function(a,b){this._.uiElementBuilders[a]=b}});CKEDITOR.dialog._={uiElementBuilders:{},dialogDefinitions:{},currentTop:null,currentZIndex:null};CKEDITOR.event.implementOn(CKEDITOR.dialog);CKEDITOR.event.implementOn(CKEDITOR.dialog.prototype);
583b,c)))return e;return null},E=function(a,b,c,d,e){if(c){for(var f=0,g;g=a[f];f++){if(g.id==c)return a.splice(f,0,b),b;if(d&&g[d]&&(g=E(g[d],b,c,d,!0)))return g}if(e)return null}a.push(b);return b},F=function(a,b,c){for(var d=0,e;e=a[d];d++){if(e.id==b)return a.splice(d,1);if(c&&e[c]&&(e=F(e[c],b,c)))return e}return null},P=function(a,b){this.dialog=a;for(var c=b.contents,d=0,e;e=c[d];d++)c[d]=e&&new M(a,e);CKEDITOR.tools.extend(this,b)};P.prototype={getContents:function(a){return D(this.contents, 614var aa={resizable:CKEDITOR.DIALOG_RESIZE_BOTH,minWidth:600,minHeight:400,buttons:[CKEDITOR.dialog.okButton,CKEDITOR.dialog.cancelButton]},D=function(a,b,c){for(var e=0,d;d=a[e];e++)if(d.id==b||c&&d[c]&&(d=D(d[c],b,c)))return d;return null},E=function(a,b,c,e,d){if(c){for(var f=0,g;g=a[f];f++){if(g.id==c)return a.splice(f,0,b),b;if(e&&g[e]&&(g=E(g[e],b,c,e,!0)))return g}if(d)return null}a.push(b);return b},F=function(a,b,c){for(var e=0,d;d=a[e];e++){if(d.id==b)return a.splice(e,1);if(c&&d[c]&&(d=F(d[c],
584a)},getButton:function(a){return D(this.buttons,a)},addContents:function(a,b){return E(this.contents,a,b)},addButton:function(a,b){return E(this.buttons,a,b)},removeContents:function(a){F(this.contents,a)},removeButton:function(a){F(this.buttons,a)}};M.prototype={get:function(a){return D(this.elements,a,"children")},add:function(a,b){return E(this.elements,a,b,"children")},remove:function(a){F(this.elements,a,"children")}};var J,z={},u,w={},Q=function(a){var b=a.data.$.ctrlKey||a.data.$.metaKey,c= 615b,c)))return d}return null},P=function(a,b){this.dialog=a;for(var c=b.contents,e=0,d;d=c[e];e++)c[e]=d&&new M(a,d);CKEDITOR.tools.extend(this,b)};P.prototype={getContents:function(a){return D(this.contents,a)},getButton:function(a){return D(this.buttons,a)},addContents:function(a,b){return E(this.contents,a,b)},addButton:function(a,b){return E(this.buttons,a,b)},removeContents:function(a){F(this.contents,a)},removeButton:function(a){F(this.buttons,a)}};M.prototype={get:function(a){return D(this.elements,
585a.data.$.altKey,d=a.data.$.shiftKey,e=String.fromCharCode(a.data.$.keyCode);(b=w[(b?"CTRL+":"")+(c?"ALT+":"")+(d?"SHIFT+":"")+e])&&b.length&&(b=b[b.length-1],b.keydown&&b.keydown.call(b.uiElement,b.dialog,b.key),a.data.preventDefault())},R=function(a){var b=a.data.$.ctrlKey||a.data.$.metaKey,c=a.data.$.altKey,d=a.data.$.shiftKey,e=String.fromCharCode(a.data.$.keyCode);(b=w[(b?"CTRL+":"")+(c?"ALT+":"")+(d?"SHIFT+":"")+e])&&b.length&&(b=b[b.length-1],b.keyup&&(b.keyup.call(b.uiElement,b.dialog,b.key), 616a,"children")},add:function(a,b){return E(this.elements,a,b,"children")},remove:function(a){F(this.elements,a,"children")}};var J,z={},u,w={},Q=function(a){var b=a.data.$.ctrlKey||a.data.$.metaKey,c=a.data.$.altKey,e=a.data.$.shiftKey,d=String.fromCharCode(a.data.$.keyCode);(b=w[(b?"CTRL+":"")+(c?"ALT+":"")+(e?"SHIFT+":"")+d])&&b.length&&(b=b[b.length-1],b.keydown&&b.keydown.call(b.uiElement,b.dialog,b.key),a.data.preventDefault())},R=function(a){var b=a.data.$.ctrlKey||a.data.$.metaKey,c=a.data.$.altKey,
586a.data.preventDefault()))},S=function(a,b,c,d,e){(w[c]||(w[c]=[])).push({uiElement:a,dialog:b,key:c,keyup:e||a.accessKeyUp,keydown:d||a.accessKeyDown})},ba=function(a){for(var b in w){for(var c=w[b],d=c.length-1;0<=d;d--)c[d].dialog!=a&&c[d].uiElement!=a||c.splice(d,1);0===c.length&&delete w[b]}},da=function(a,b){a._.accessKeyMap[b]&&a.selectPage(a._.accessKeyMap[b])},ca=function(){};(function(){CKEDITOR.ui.dialog={uiElement:function(a,b,c,d,e,f,g){if(!(4>arguments.length)){var h=(d.call?d(b):d)|| 617e=a.data.$.shiftKey,d=String.fromCharCode(a.data.$.keyCode);(b=w[(b?"CTRL+":"")+(c?"ALT+":"")+(e?"SHIFT+":"")+d])&&b.length&&(b=b[b.length-1],b.keyup&&(b.keyup.call(b.uiElement,b.dialog,b.key),a.data.preventDefault()))},S=function(a,b,c,e,d){(w[c]||(w[c]=[])).push({uiElement:a,dialog:b,key:c,keyup:d||a.accessKeyUp,keydown:e||a.accessKeyDown})},ba=function(a){for(var b in w){for(var c=w[b],e=c.length-1;0<=e;e--)c[e].dialog!=a&&c[e].uiElement!=a||c.splice(e,1);0===c.length&&delete w[b]}},da=function(a,
587"div",p=["\x3c",h," "],m=(e&&e.call?e(b):e)||{},k=(f&&f.call?f(b):f)||{},q=(g&&g.call?g.call(this,a,b):g)||"",n=this.domId=k.id||CKEDITOR.tools.getNextId()+"_uiElement";b.requiredContent&&!a.getParentEditor().filter.check(b.requiredContent)&&(m.display="none",this.notAllowed=!0);k.id=n;var r={};b.type&&(r["cke_dialog_ui_"+b.type]=1);b.className&&(r[b.className]=1);b.disabled&&(r.cke_disabled=1);for(var l=k["class"]&&k["class"].split?k["class"].split(" "):[],n=0;n<l.length;n++)l[n]&&(r[l[n]]=1);l= 618b){a._.accessKeyMap[b]&&a.selectPage(a._.accessKeyMap[b])},ca=function(){};(function(){CKEDITOR.ui.dialog={uiElement:function(a,b,c,e,d,f,g){if(!(4>arguments.length)){var h=(e.call?e(b):e)||"div",p=["\x3c",h," "],m=(d&&d.call?d(b):d)||{},k=(f&&f.call?f(b):f)||{},q=(g&&g.call?g.call(this,a,b):g)||"",n=this.domId=k.id||CKEDITOR.tools.getNextId()+"_uiElement";b.requiredContent&&!a.getParentEditor().filter.check(b.requiredContent)&&(m.display="none",this.notAllowed=!0);k.id=n;var r={};b.type&&(r["cke_dialog_ui_"+
588[];for(n in r)l.push(n);k["class"]=l.join(" ");b.title&&(k.title=b.title);r=(b.style||"").split(";");b.align&&(l=b.align,m["margin-left"]="left"==l?0:"auto",m["margin-right"]="right"==l?0:"auto");for(n in m)r.push(n+":"+m[n]);b.hidden&&r.push("display:none");for(n=r.length-1;0<=n;n--)""===r[n]&&r.splice(n,1);0<r.length&&(k.style=(k.style?k.style+"; ":"")+r.join("; "));for(n in k)p.push(n+'\x3d"'+CKEDITOR.tools.htmlEncode(k[n])+'" ');p.push("\x3e",q,"\x3c/",h,"\x3e");c.push(p.join(""));(this._||(this._= 619b.type]=1);b.className&&(r[b.className]=1);b.disabled&&(r.cke_disabled=1);for(var l=k["class"]&&k["class"].split?k["class"].split(" "):[],n=0;n<l.length;n++)l[n]&&(r[l[n]]=1);l=[];for(n in r)l.push(n);k["class"]=l.join(" ");b.title&&(k.title=b.title);r=(b.style||"").split(";");b.align&&(l=b.align,m["margin-left"]="left"==l?0:"auto",m["margin-right"]="right"==l?0:"auto");for(n in m)r.push(n+":"+m[n]);b.hidden&&r.push("display:none");for(n=r.length-1;0<=n;n--)""===r[n]&&r.splice(n,1);0<r.length&&(k.style=
589{})).dialog=a;"boolean"==typeof b.isChanged&&(this.isChanged=function(){return b.isChanged});"function"==typeof b.isChanged&&(this.isChanged=b.isChanged);"function"==typeof b.setValue&&(this.setValue=CKEDITOR.tools.override(this.setValue,function(a){return function(c){a.call(this,b.setValue.call(this,c))}}));"function"==typeof b.getValue&&(this.getValue=CKEDITOR.tools.override(this.getValue,function(a){return function(){return b.getValue.call(this,a.call(this))}}));CKEDITOR.event.implementOn(this); 620(k.style?k.style+"; ":"")+r.join("; "));for(n in k)p.push(n+'\x3d"'+CKEDITOR.tools.htmlEncode(k[n])+'" ');p.push("\x3e",q,"\x3c/",h,"\x3e");c.push(p.join(""));(this._||(this._={})).dialog=a;"boolean"==typeof b.isChanged&&(this.isChanged=function(){return b.isChanged});"function"==typeof b.isChanged&&(this.isChanged=b.isChanged);"function"==typeof b.setValue&&(this.setValue=CKEDITOR.tools.override(this.setValue,function(a){return function(c){a.call(this,b.setValue.call(this,c))}}));"function"==typeof b.getValue&&
590this.registerEvents(b);this.accessKeyUp&&this.accessKeyDown&&b.accessKey&&S(this,a,"CTRL+"+b.accessKey);var t=this;a.on("load",function(){var b=t.getInputElement();if(b){var c=t.type in{checkbox:1,ratio:1}&&CKEDITOR.env.ie&&8>CKEDITOR.env.version?"cke_dialog_ui_focused":"";b.on("focus",function(){a._.tabBarMode=!1;a._.hasFocus=!0;t.fire("focus");c&&this.addClass(c)});b.on("blur",function(){t.fire("blur");c&&this.removeClass(c)})}});CKEDITOR.tools.extend(this,b);this.keyboardFocusable&&(this.tabIndex= 621(this.getValue=CKEDITOR.tools.override(this.getValue,function(a){return function(){return b.getValue.call(this,a.call(this))}}));CKEDITOR.event.implementOn(this);this.registerEvents(b);this.accessKeyUp&&this.accessKeyDown&&b.accessKey&&S(this,a,"CTRL+"+b.accessKey);var t=this;a.on("load",function(){var b=t.getInputElement();if(b){var c=t.type in{checkbox:1,ratio:1}&&CKEDITOR.env.ie&&8>CKEDITOR.env.version?"cke_dialog_ui_focused":"";b.on("focus",function(){a._.tabBarMode=!1;a._.hasFocus=!0;t.fire("focus");
591b.tabIndex||0,this.focusIndex=a._.focusList.push(this)-1,this.on("focus",function(){a._.currentFocusIndex=t.focusIndex}))}},hbox:function(a,b,c,d,e){if(!(4>arguments.length)){this._||(this._={});var f=this._.children=b,g=e&&e.widths||null,h=e&&e.height||null,p,m={role:"presentation"};e&&e.align&&(m.align=e.align);CKEDITOR.ui.dialog.uiElement.call(this,a,e||{type:"hbox"},d,"table",{},m,function(){var a=['\x3ctbody\x3e\x3ctr class\x3d"cke_dialog_ui_hbox"\x3e'];for(p=0;p<c.length;p++){var b="cke_dialog_ui_hbox_child", 622c&&this.addClass(c)});b.on("blur",function(){t.fire("blur");c&&this.removeClass(c)})}});CKEDITOR.tools.extend(this,b);this.keyboardFocusable&&(this.tabIndex=b.tabIndex||0,this.focusIndex=a._.focusList.push(this)-1,this.on("focus",function(){a._.currentFocusIndex=t.focusIndex}))}},hbox:function(a,b,c,e,d){if(!(4>arguments.length)){this._||(this._={});var f=this._.children=b,g=d&&d.widths||null,h=d&&d.height||null,p,m={role:"presentation"};d&&d.align&&(m.align=d.align);CKEDITOR.ui.dialog.uiElement.call(this,
592d=[];0===p&&(b="cke_dialog_ui_hbox_first");p==c.length-1&&(b="cke_dialog_ui_hbox_last");a.push('\x3ctd class\x3d"',b,'" role\x3d"presentation" ');g?g[p]&&d.push("width:"+v(g[p])):d.push("width:"+Math.floor(100/c.length)+"%");h&&d.push("height:"+v(h));e&&void 0!==e.padding&&d.push("padding:"+v(e.padding));CKEDITOR.env.ie&&CKEDITOR.env.quirks&&f[p].align&&d.push("text-align:"+f[p].align);0<d.length&&a.push('style\x3d"'+d.join("; ")+'" ');a.push("\x3e",c[p],"\x3c/td\x3e")}a.push("\x3c/tr\x3e\x3c/tbody\x3e"); 623a,d||{type:"hbox"},e,"table",{},m,function(){var a=['\x3ctbody\x3e\x3ctr class\x3d"cke_dialog_ui_hbox"\x3e'];for(p=0;p<c.length;p++){var b="cke_dialog_ui_hbox_child",e=[];0===p&&(b="cke_dialog_ui_hbox_first");p==c.length-1&&(b="cke_dialog_ui_hbox_last");a.push('\x3ctd class\x3d"',b,'" role\x3d"presentation" ');g?g[p]&&e.push("width:"+v(g[p])):e.push("width:"+Math.floor(100/c.length)+"%");h&&e.push("height:"+v(h));d&&void 0!==d.padding&&e.push("padding:"+v(d.padding));CKEDITOR.env.ie&&CKEDITOR.env.quirks&&
593return a.join("")})}},vbox:function(a,b,c,d,e){if(!(3>arguments.length)){this._||(this._={});var f=this._.children=b,g=e&&e.width||null,h=e&&e.heights||null;CKEDITOR.ui.dialog.uiElement.call(this,a,e||{type:"vbox"},d,"div",null,{role:"presentation"},function(){var b=['\x3ctable role\x3d"presentation" cellspacing\x3d"0" border\x3d"0" '];b.push('style\x3d"');e&&e.expand&&b.push("height:100%;");b.push("width:"+v(g||"100%"),";");CKEDITOR.env.webkit&&b.push("float:none;");b.push('"');b.push('align\x3d"', 624f[p].align&&e.push("text-align:"+f[p].align);0<e.length&&a.push('style\x3d"'+e.join("; ")+'" ');a.push("\x3e",c[p],"\x3c/td\x3e")}a.push("\x3c/tr\x3e\x3c/tbody\x3e");return a.join("")})}},vbox:function(a,b,c,e,d){if(!(3>arguments.length)){this._||(this._={});var f=this._.children=b,g=d&&d.width||null,h=d&&d.heights||null;CKEDITOR.ui.dialog.uiElement.call(this,a,d||{type:"vbox"},e,"div",null,{role:"presentation"},function(){var b=['\x3ctable role\x3d"presentation" cellspacing\x3d"0" border\x3d"0" '];
594CKEDITOR.tools.htmlEncode(e&&e.align||("ltr"==a.getParentEditor().lang.dir?"left":"right")),'" ');b.push("\x3e\x3ctbody\x3e");for(var d=0;d<c.length;d++){var k=[];b.push('\x3ctr\x3e\x3ctd role\x3d"presentation" ');g&&k.push("width:"+v(g||"100%"));h?k.push("height:"+v(h[d])):e&&e.expand&&k.push("height:"+Math.floor(100/c.length)+"%");e&&void 0!==e.padding&&k.push("padding:"+v(e.padding));CKEDITOR.env.ie&&CKEDITOR.env.quirks&&f[d].align&&k.push("text-align:"+f[d].align);0<k.length&&b.push('style\x3d"', 625b.push('style\x3d"');d&&d.expand&&b.push("height:100%;");b.push("width:"+v(g||"100%"),";");CKEDITOR.env.webkit&&b.push("float:none;");b.push('"');b.push('align\x3d"',CKEDITOR.tools.htmlEncode(d&&d.align||("ltr"==a.getParentEditor().lang.dir?"left":"right")),'" ');b.push("\x3e\x3ctbody\x3e");for(var e=0;e<c.length;e++){var k=[];b.push('\x3ctr\x3e\x3ctd role\x3d"presentation" ');g&&k.push("width:"+v(g||"100%"));h?k.push("height:"+v(h[e])):d&&d.expand&&k.push("height:"+Math.floor(100/c.length)+"%");
595k.join("; "),'" ');b.push(' class\x3d"cke_dialog_ui_vbox_child"\x3e',c[d],"\x3c/td\x3e\x3c/tr\x3e")}b.push("\x3c/tbody\x3e\x3c/table\x3e");return b.join("")})}}}})();CKEDITOR.ui.dialog.uiElement.prototype={getElement:function(){return CKEDITOR.document.getById(this.domId)},getInputElement:function(){return this.getElement()},getDialog:function(){return this._.dialog},setValue:function(a,b){this.getInputElement().setValue(a);!b&&this.fire("change",{value:a});return this},getValue:function(){return this.getInputElement().getValue()}, 626d&&void 0!==d.padding&&k.push("padding:"+v(d.padding));CKEDITOR.env.ie&&CKEDITOR.env.quirks&&f[e].align&&k.push("text-align:"+f[e].align);0<k.length&&b.push('style\x3d"',k.join("; "),'" ');b.push(' class\x3d"cke_dialog_ui_vbox_child"\x3e',c[e],"\x3c/td\x3e\x3c/tr\x3e")}b.push("\x3c/tbody\x3e\x3c/table\x3e");return b.join("")})}}}})();CKEDITOR.ui.dialog.uiElement.prototype={getElement:function(){return CKEDITOR.document.getById(this.domId)},getInputElement:function(){return this.getElement()},getDialog:function(){return this._.dialog},
596isChanged:function(){return!1},selectParentTab:function(){for(var a=this.getInputElement();(a=a.getParent())&&-1==a.$.className.search("cke_dialog_page_contents"););if(!a)return this;a=a.getAttribute("name");this._.dialog._.currentTabId!=a&&this._.dialog.selectPage(a);return this},focus:function(){this.selectParentTab().getInputElement().focus();return this},registerEvents:function(a){var b=/^on([A-Z]\w+)/,c,d=function(a,b,c,d){b.on("load",function(){a.getInputElement().on(c,d,a)})},e;for(e in a)if(c= 627setValue:function(a,b){this.getInputElement().setValue(a);!b&&this.fire("change",{value:a});return this},getValue:function(){return this.getInputElement().getValue()},isChanged:function(){return!1},selectParentTab:function(){for(var a=this.getInputElement();(a=a.getParent())&&-1==a.$.className.search("cke_dialog_page_contents"););if(!a)return this;a=a.getAttribute("name");this._.dialog._.currentTabId!=a&&this._.dialog.selectPage(a);return this},focus:function(){this.selectParentTab().getInputElement().focus();
597e.match(b))this.eventProcessors[e]?this.eventProcessors[e].call(this,this._.dialog,a[e]):d(this,this._.dialog,c[1].toLowerCase(),a[e]);return this},eventProcessors:{onLoad:function(a,b){a.on("load",b,this)},onShow:function(a,b){a.on("show",b,this)},onHide:function(a,b){a.on("hide",b,this)}},accessKeyDown:function(){this.focus()},accessKeyUp:function(){},disable:function(){var a=this.getElement();this.getInputElement().setAttribute("disabled","true");a.addClass("cke_disabled")},enable:function(){var a= 628return this},registerEvents:function(a){var b=/^on([A-Z]\w+)/,c,e=function(a,b,c,d){b.on("load",function(){a.getInputElement().on(c,d,a)})},d;for(d in a)if(c=d.match(b))this.eventProcessors[d]?this.eventProcessors[d].call(this,this._.dialog,a[d]):e(this,this._.dialog,c[1].toLowerCase(),a[d]);return this},eventProcessors:{onLoad:function(a,b){a.on("load",b,this)},onShow:function(a,b){a.on("show",b,this)},onHide:function(a,b){a.on("hide",b,this)}},accessKeyDown:function(){this.focus()},accessKeyUp:function(){},
598this.getElement();this.getInputElement().removeAttribute("disabled");a.removeClass("cke_disabled")},isEnabled:function(){return!this.getElement().hasClass("cke_disabled")},isVisible:function(){return this.getInputElement().isVisible()},isFocusable:function(){return this.isEnabled()&&this.isVisible()?!0:!1}};CKEDITOR.ui.dialog.hbox.prototype=CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.uiElement,{getChild:function(a){if(1>arguments.length)return this._.children.concat();a.splice||(a=[a]);return 2> 629disable:function(){var a=this.getElement();this.getInputElement().setAttribute("disabled","true");a.addClass("cke_disabled")},enable:function(){var a=this.getElement();this.getInputElement().removeAttribute("disabled");a.removeClass("cke_disabled")},isEnabled:function(){return!this.getElement().hasClass("cke_disabled")},isVisible:function(){return this.getInputElement().isVisible()},isFocusable:function(){return this.isEnabled()&&this.isVisible()?!0:!1}};CKEDITOR.ui.dialog.hbox.prototype=CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.uiElement,
599a.length?this._.children[a[0]]:this._.children[a[0]]&&this._.children[a[0]].getChild?this._.children[a[0]].getChild(a.slice(1,a.length)):null}},!0);CKEDITOR.ui.dialog.vbox.prototype=new CKEDITOR.ui.dialog.hbox;(function(){var a={build:function(a,c,d){for(var e=c.children,f,g=[],h=[],p=0;p<e.length&&(f=e[p]);p++){var m=[];g.push(m);h.push(CKEDITOR.dialog._.uiElementBuilders[f.type].build(a,f,m))}return new CKEDITOR.ui.dialog[c.type](a,h,g,d,c)}};CKEDITOR.dialog.addUIElement("hbox",a);CKEDITOR.dialog.addUIElement("vbox", 630{getChild:function(a){if(1>arguments.length)return this._.children.concat();a.splice||(a=[a]);return 2>a.length?this._.children[a[0]]:this._.children[a[0]]&&this._.children[a[0]].getChild?this._.children[a[0]].getChild(a.slice(1,a.length)):null}},!0);CKEDITOR.ui.dialog.vbox.prototype=new CKEDITOR.ui.dialog.hbox;(function(){var a={build:function(a,c,e){for(var d=c.children,f,g=[],h=[],p=0;p<d.length&&(f=d[p]);p++){var m=[];g.push(m);h.push(CKEDITOR.dialog._.uiElementBuilders[f.type].build(a,f,m))}return new CKEDITOR.ui.dialog[c.type](a,
600a)})();CKEDITOR.dialogCommand=function(a,b){this.dialogName=a;CKEDITOR.tools.extend(this,b,!0)};CKEDITOR.dialogCommand.prototype={exec:function(a){a.openDialog(this.dialogName)},canUndo:!1,editorFocus:1};(function(){var a=/^([a]|[^a])+$/,b=/^\d*$/,c=/^\d*(?:\.\d+)?$/,d=/^(((\d*(\.\d+))|(\d*))(px|\%)?)?$/,e=/^(((\d*(\.\d+))|(\d*))(px|em|ex|in|cm|mm|pt|pc|\%)?)?$/i,f=/^(\s*[\w-]+\s*:\s*[^:;]+(?:;|$))*$/;CKEDITOR.VALIDATE_OR=1;CKEDITOR.VALIDATE_AND=2;CKEDITOR.dialog.validate={functions:function(){var a= 631h,g,e,c)}};CKEDITOR.dialog.addUIElement("hbox",a);CKEDITOR.dialog.addUIElement("vbox",a)})();CKEDITOR.dialogCommand=function(a,b){this.dialogName=a;CKEDITOR.tools.extend(this,b,!0)};CKEDITOR.dialogCommand.prototype={exec:function(a){var b=this.tabId;a.openDialog(this.dialogName,function(a){b&&a.selectPage(b)})},canUndo:!1,editorFocus:1};(function(){var a=/^([a]|[^a])+$/,b=/^\d*$/,c=/^\d*(?:\.\d+)?$/,e=/^(((\d*(\.\d+))|(\d*))(px|\%)?)?$/,d=/^(((\d*(\.\d+))|(\d*))(px|em|ex|in|cm|mm|pt|pc|\%)?)?$/i,
601arguments;return function(){var b=this&&this.getValue?this.getValue():a[0],c,d=CKEDITOR.VALIDATE_AND,e=[],f;for(f=0;f<a.length;f++)if("function"==typeof a[f])e.push(a[f]);else break;f<a.length&&"string"==typeof a[f]&&(c=a[f],f++);f<a.length&&"number"==typeof a[f]&&(d=a[f]);var n=d==CKEDITOR.VALIDATE_AND?!0:!1;for(f=0;f<e.length;f++)n=d==CKEDITOR.VALIDATE_AND?n&&e[f](b):n||e[f](b);return n?!0:c}},regex:function(a,b){return function(c){c=this&&this.getValue?this.getValue():c;return a.test(c)?!0:b}}, 632f=/^(\s*[\w-]+\s*:\s*[^:;]+(?:;|$))*$/;CKEDITOR.VALIDATE_OR=1;CKEDITOR.VALIDATE_AND=2;CKEDITOR.dialog.validate={functions:function(){var a=arguments;return function(){var b=this&&this.getValue?this.getValue():a[0],c,d=CKEDITOR.VALIDATE_AND,e=[],f;for(f=0;f<a.length;f++)if("function"==typeof a[f])e.push(a[f]);else break;f<a.length&&"string"==typeof a[f]&&(c=a[f],f++);f<a.length&&"number"==typeof a[f]&&(d=a[f]);var n=d==CKEDITOR.VALIDATE_AND?!0:!1;for(f=0;f<e.length;f++)n=d==CKEDITOR.VALIDATE_AND?n&&
602notEmpty:function(b){return this.regex(a,b)},integer:function(a){return this.regex(b,a)},number:function(a){return this.regex(c,a)},cssLength:function(a){return this.functions(function(a){return e.test(CKEDITOR.tools.trim(a))},a)},htmlLength:function(a){return this.functions(function(a){return d.test(CKEDITOR.tools.trim(a))},a)},inlineStyle:function(a){return this.functions(function(a){return f.test(CKEDITOR.tools.trim(a))},a)},equals:function(a,b){return this.functions(function(b){return b==a},b)}, 633e[f](b):n||e[f](b);return n?!0:c}},regex:function(a,b){return function(c){c=this&&this.getValue?this.getValue():c;return a.test(c)?!0:b}},notEmpty:function(b){return this.regex(a,b)},integer:function(a){return this.regex(b,a)},number:function(a){return this.regex(c,a)},cssLength:function(a){return this.functions(function(a){return d.test(CKEDITOR.tools.trim(a))},a)},htmlLength:function(a){return this.functions(function(a){return e.test(CKEDITOR.tools.trim(a))},a)},inlineStyle:function(a){return this.functions(function(a){return f.test(CKEDITOR.tools.trim(a))},
603notEqual:function(a,b){return this.functions(function(b){return b!=a},b)}};CKEDITOR.on("instanceDestroyed",function(a){if(CKEDITOR.tools.isEmpty(CKEDITOR.instances)){for(var b;b=CKEDITOR.dialog._.currentTop;)b.hide();for(var c in z)z[c].remove();z={}}a=a.editor._.storedDialogs;for(var d in a)a[d].destroy()})})();CKEDITOR.tools.extend(CKEDITOR.editor.prototype,{openDialog:function(a,b){var c=null,d=CKEDITOR.dialog._.dialogDefinitions[a];null===CKEDITOR.dialog._.currentTop&&N(this);if("function"==typeof d)c= 634a)},equals:function(a,b){return this.functions(function(b){return b==a},b)},notEqual:function(a,b){return this.functions(function(b){return b!=a},b)}};CKEDITOR.on("instanceDestroyed",function(a){if(CKEDITOR.tools.isEmpty(CKEDITOR.instances)){for(var b;b=CKEDITOR.dialog._.currentTop;)b.hide();for(var c in z)z[c].remove();z={}}a=a.editor._.storedDialogs;for(var d in a)a[d].destroy()})})();CKEDITOR.tools.extend(CKEDITOR.editor.prototype,{openDialog:function(a,b){var c=null,e=CKEDITOR.dialog._.dialogDefinitions[a];
604this._.storedDialogs||(this._.storedDialogs={}),c=c[a]||(c[a]=new CKEDITOR.dialog(this,a)),b&&b.call(c,c),c.show();else{if("failed"==d)throw O(this),Error('[CKEDITOR.dialog.openDialog] Dialog "'+a+'" failed when loading definition.');"string"==typeof d&&CKEDITOR.scriptLoader.load(CKEDITOR.getUrl(d),function(){"function"!=typeof CKEDITOR.dialog._.dialogDefinitions[a]&&(CKEDITOR.dialog._.dialogDefinitions[a]="failed");this.openDialog(a,b)},this,0,1)}CKEDITOR.skin.loadPart("dialog");return c}})})(); 635null===CKEDITOR.dialog._.currentTop&&N(this);if("function"==typeof e)c=this._.storedDialogs||(this._.storedDialogs={}),c=c[a]||(c[a]=new CKEDITOR.dialog(this,a)),b&&b.call(c,c),c.show();else{if("failed"==e)throw O(this),Error('[CKEDITOR.dialog.openDialog] Dialog "'+a+'" failed when loading definition.');"string"==typeof e&&CKEDITOR.scriptLoader.load(CKEDITOR.getUrl(e),function(){"function"!=typeof CKEDITOR.dialog._.dialogDefinitions[a]&&(CKEDITOR.dialog._.dialogDefinitions[a]="failed");this.openDialog(a,
605CKEDITOR.plugins.add("dialog",{requires:"dialogui",init:function(x){x.on("doubleclick",function(A){A.data.dialog&&x.openDialog(A.data.dialog)},null,null,999)}});(function(){CKEDITOR.plugins.add("a11yhelp",{requires:"dialog",availableLangs:{af:1,ar:1,bg:1,ca:1,cs:1,cy:1,da:1,de:1,"de-ch":1,el:1,en:1,"en-gb":1,eo:1,es:1,et:1,eu:1,fa:1,fi:1,fo:1,fr:1,"fr-ca":1,gl:1,gu:1,he:1,hi:1,hr:1,hu:1,id:1,it:1,ja:1,km:1,ko:1,ku:1,lt:1,lv:1,mk:1,mn:1,nb:1,nl:1,no:1,pl:1,pt:1,"pt-br":1,ro:1,ru:1,si:1,sk:1,sl:1,sq:1,sr:1,"sr-latn":1,sv:1,th:1,tr:1,tt:1,ug:1,uk:1,vi:1,zh:1,"zh-cn":1},init:function(b){var c=this;b.addCommand("a11yHelp",{exec:function(){var a=b.langCode,a=c.availableLangs[a]? 636b)},this,0,1)}CKEDITOR.skin.loadPart("dialog");return c}})})();CKEDITOR.plugins.add("dialog",{requires:"dialogui",init:function(x){x.on("doubleclick",function(A){A.data.dialog&&x.openDialog(A.data.dialog)},null,null,999)}});(function(){CKEDITOR.plugins.add("a11yhelp",{requires:"dialog",availableLangs:{af:1,ar:1,az:1,bg:1,ca:1,cs:1,cy:1,da:1,de:1,"de-ch":1,el:1,en:1,"en-gb":1,eo:1,es:1,"es-mx":1,et:1,eu:1,fa:1,fi:1,fo:1,fr:1,"fr-ca":1,gl:1,gu:1,he:1,hi:1,hr:1,hu:1,id:1,it:1,ja:1,km:1,ko:1,ku:1,lt:1,lv:1,mk:1,mn:1,nb:1,nl:1,no:1,oc:1,pl:1,pt:1,"pt-br":1,ro:1,ru:1,si:1,sk:1,sl:1,sq:1,sr:1,"sr-latn":1,sv:1,th:1,tr:1,tt:1,ug:1,uk:1,vi:1,zh:1,"zh-cn":1},init:function(b){var c=this;b.addCommand("a11yHelp",{exec:function(){var a=
606a:c.availableLangs[a.replace(/-.*/,"")]?a.replace(/-.*/,""):"en";CKEDITOR.scriptLoader.load(CKEDITOR.getUrl(c.path+"dialogs/lang/"+a+".js"),function(){b.lang.a11yhelp=c.langEntries[a];b.openDialog("a11yHelp")})},modes:{wysiwyg:1,source:1},readOnly:1,canUndo:!1});b.setKeystroke(CKEDITOR.ALT+48,"a11yHelp");CKEDITOR.dialog.add("a11yHelp",this.path+"dialogs/a11yhelp.js");b.on("ariaEditorHelpLabel",function(a){a.data.label=b.lang.common.editorHelp})}})})();CKEDITOR.plugins.add("basicstyles",{init:function(c){var e=0,d=function(g,d,b,a){if(a){a=new CKEDITOR.style(a);var f=h[b];f.unshift(a);c.attachStyleStateChange(a,function(a){!c.readOnly&&c.getCommand(b).setState(a)});c.addCommand(b,new CKEDITOR.styleCommand(a,{contentForms:f}));c.ui.addButton&&c.ui.addButton(g,{label:d,command:b,toolbar:"basicstyles,"+(e+=10)})}},h={bold:["strong","b",["span",function(a){a=a.styles["font-weight"];return"bold"==a||700<=+a}]],italic:["em","i",["span",function(a){return"italic"== 637b.langCode,a=c.availableLangs[a]?a:c.availableLangs[a.replace(/-.*/,"")]?a.replace(/-.*/,""):"en";CKEDITOR.scriptLoader.load(CKEDITOR.getUrl(c.path+"dialogs/lang/"+a+".js"),function(){b.lang.a11yhelp=c.langEntries[a];b.openDialog("a11yHelp")})},modes:{wysiwyg:1,source:1},readOnly:1,canUndo:!1});b.setKeystroke(CKEDITOR.ALT+48,"a11yHelp");CKEDITOR.dialog.add("a11yHelp",this.path+"dialogs/a11yhelp.js");b.on("ariaEditorHelpLabel",function(a){a.data.label=b.lang.common.editorHelp})}})})();(function(){function f(c){var a=this.att;c=c&&c.hasAttribute(a)&&c.getAttribute(a)||"";void 0!==c&&this.setValue(c)}function g(){for(var c,a=0;a<arguments.length;a++)if(arguments[a]instanceof CKEDITOR.dom.element){c=arguments[a];break}if(c){var a=this.att,b=this.getValue();b?c.setAttribute(a,b):c.removeAttribute(a,b)}}var k={id:1,dir:1,classes:1,styles:1};CKEDITOR.plugins.add("dialogadvtab",{requires:"dialog",allowedContent:function(c){c||(c=k);var a=[];c.id&&a.push("id");c.dir&&a.push("dir");var b=
638"";a.length&&(b+="["+a.join(",")+"]");c.classes&&(b+="(*)");c.styles&&(b+="{*}");return b},createAdvancedTab:function(c,a,b){a||(a=k);var d=c.lang.common,h={id:"advanced",label:d.advancedTab,title:d.advancedTab,elements:[{type:"vbox",padding:1,children:[]}]},e=[];if(a.id||a.dir)a.id&&e.push({id:"advId",att:"id",type:"text",requiredContent:b?b+"[id]":null,label:d.id,setup:f,commit:g}),a.dir&&e.push({id:"advLangDir",att:"dir",type:"select",requiredContent:b?b+"[dir]":null,label:d.langDir,"default":"",
639style:"width:100%",items:[[d.notSet,""],[d.langDirLTR,"ltr"],[d.langDirRTL,"rtl"]],setup:f,commit:g}),h.elements[0].children.push({type:"hbox",widths:["50%","50%"],children:[].concat(e)});if(a.styles||a.classes)e=[],a.styles&&e.push({id:"advStyles",att:"style",type:"text",requiredContent:b?b+"{cke-xyz}":null,label:d.styles,"default":"",validate:CKEDITOR.dialog.validate.inlineStyle(d.invalidInlineStyle),onChange:function(){},getStyle:function(a,c){var b=this.getValue().match(new RegExp("(?:^|;)\\s*"+
640a+"\\s*:\\s*([^;]*)","i"));return b?b[1]:c},updateStyle:function(a,b){var d=this.getValue(),e=c.document.createElement("span");e.setAttribute("style",d);e.setStyle(a,b);d=CKEDITOR.tools.normalizeCssText(e.getAttribute("style"));this.setValue(d,1)},setup:f,commit:g}),a.classes&&e.push({type:"hbox",widths:["45%","55%"],children:[{id:"advCSSClasses",att:"class",type:"text",requiredContent:b?b+"(cke-xyz)":null,label:d.cssClasses,"default":"",setup:f,commit:g}]}),h.elements[0].children.push({type:"hbox",
641widths:["50%","50%"],children:[].concat(e)});return h}})})();CKEDITOR.plugins.add("basicstyles",{init:function(c){var e=0,d=function(g,d,b,a){if(a){a=new CKEDITOR.style(a);var f=h[b];f.unshift(a);c.attachStyleStateChange(a,function(a){!c.readOnly&&c.getCommand(b).setState(a)});c.addCommand(b,new CKEDITOR.styleCommand(a,{contentForms:f}));c.ui.addButton&&c.ui.addButton(g,{label:d,command:b,toolbar:"basicstyles,"+(e+=10)})}},h={bold:["strong","b",["span",function(a){a=a.styles["font-weight"];return"bold"==a||700<=+a}]],italic:["em","i",["span",function(a){return"italic"==
607a.styles["font-style"]}]],underline:["u",["span",function(a){return"underline"==a.styles["text-decoration"]}]],strike:["s","strike",["span",function(a){return"line-through"==a.styles["text-decoration"]}]],subscript:["sub"],superscript:["sup"]},b=c.config,a=c.lang.basicstyles;d("Bold",a.bold,"bold",b.coreStyles_bold);d("Italic",a.italic,"italic",b.coreStyles_italic);d("Underline",a.underline,"underline",b.coreStyles_underline);d("Strike",a.strike,"strike",b.coreStyles_strike);d("Subscript",a.subscript, 642a.styles["font-style"]}]],underline:["u",["span",function(a){return"underline"==a.styles["text-decoration"]}]],strike:["s","strike",["span",function(a){return"line-through"==a.styles["text-decoration"]}]],subscript:["sub"],superscript:["sup"]},b=c.config,a=c.lang.basicstyles;d("Bold",a.bold,"bold",b.coreStyles_bold);d("Italic",a.italic,"italic",b.coreStyles_italic);d("Underline",a.underline,"underline",b.coreStyles_underline);d("Strike",a.strike,"strike",b.coreStyles_strike);d("Subscript",a.subscript,
608"subscript",b.coreStyles_subscript);d("Superscript",a.superscript,"superscript",b.coreStyles_superscript);c.setKeystroke([[CKEDITOR.CTRL+66,"bold"],[CKEDITOR.CTRL+73,"italic"],[CKEDITOR.CTRL+85,"underline"]])}});CKEDITOR.config.coreStyles_bold={element:"strong",overrides:"b"};CKEDITOR.config.coreStyles_italic={element:"em",overrides:"i"};CKEDITOR.config.coreStyles_underline={element:"u"};CKEDITOR.config.coreStyles_strike={element:"s",overrides:"strike"};CKEDITOR.config.coreStyles_subscript={element:"sub"}; 643"subscript",b.coreStyles_subscript);d("Superscript",a.superscript,"superscript",b.coreStyles_superscript);c.setKeystroke([[CKEDITOR.CTRL+66,"bold"],[CKEDITOR.CTRL+73,"italic"],[CKEDITOR.CTRL+85,"underline"]])}});CKEDITOR.config.coreStyles_bold={element:"strong",overrides:"b"};CKEDITOR.config.coreStyles_italic={element:"em",overrides:"i"};CKEDITOR.config.coreStyles_underline={element:"u"};CKEDITOR.config.coreStyles_strike={element:"s",overrides:"strike"};CKEDITOR.config.coreStyles_subscript={element:"sub"};
609CKEDITOR.config.coreStyles_superscript={element:"sup"};(function(){CKEDITOR.plugins.add("panel",{beforeInit:function(a){a.ui.addHandler(CKEDITOR.UI_PANEL,CKEDITOR.ui.panel.handler)}});CKEDITOR.UI_PANEL="panel";CKEDITOR.ui.panel=function(a,b){b&&CKEDITOR.tools.extend(this,b);CKEDITOR.tools.extend(this,{className:"",css:[]});this.id=CKEDITOR.tools.getNextId();this.document=a;this.isFramed=this.forceIFrame||this.css.length;this._={blocks:{}}};CKEDITOR.ui.panel.handler={create:function(a){return new CKEDITOR.ui.panel(a)}};var f=CKEDITOR.addTemplate("panel", 644CKEDITOR.config.coreStyles_superscript={element:"sup"};(function(){CKEDITOR.plugins.add("panel",{beforeInit:function(a){a.ui.addHandler(CKEDITOR.UI_PANEL,CKEDITOR.ui.panel.handler)}});CKEDITOR.UI_PANEL="panel";CKEDITOR.ui.panel=function(a,b){b&&CKEDITOR.tools.extend(this,b);CKEDITOR.tools.extend(this,{className:"",css:[]});this.id=CKEDITOR.tools.getNextId();this.document=a;this.isFramed=this.forceIFrame||this.css.length;this._={blocks:{}}};CKEDITOR.ui.panel.handler={create:function(a){return new CKEDITOR.ui.panel(a)}};var g=CKEDITOR.addTemplate("panel",
610'\x3cdiv lang\x3d"{langCode}" id\x3d"{id}" dir\x3d{dir} class\x3d"cke cke_reset_all {editorId} cke_panel cke_panel {cls} cke_{dir}" style\x3d"z-index:{z-index}" role\x3d"presentation"\x3e{frame}\x3c/div\x3e'),g=CKEDITOR.addTemplate("panel-frame",'\x3ciframe id\x3d"{id}" class\x3d"cke_panel_frame" role\x3d"presentation" frameborder\x3d"0" src\x3d"{src}"\x3e\x3c/iframe\x3e'),h=CKEDITOR.addTemplate("panel-frame-inner",'\x3c!DOCTYPE html\x3e\x3chtml class\x3d"cke_panel_container {env}" dir\x3d"{dir}" lang\x3d"{langCode}"\x3e\x3chead\x3e{css}\x3c/head\x3e\x3cbody class\x3d"cke_{dir}" style\x3d"margin:0;padding:0" onload\x3d"{onload}"\x3e\x3c/body\x3e\x3c/html\x3e'); 645'\x3cdiv lang\x3d"{langCode}" id\x3d"{id}" dir\x3d{dir} class\x3d"cke cke_reset_all {editorId} cke_panel cke_panel {cls} cke_{dir}" style\x3d"z-index:{z-index}" role\x3d"presentation"\x3e{frame}\x3c/div\x3e'),h=CKEDITOR.addTemplate("panel-frame",'\x3ciframe id\x3d"{id}" class\x3d"cke_panel_frame" role\x3d"presentation" frameborder\x3d"0" src\x3d"{src}"\x3e\x3c/iframe\x3e'),k=CKEDITOR.addTemplate("panel-frame-inner",'\x3c!DOCTYPE html\x3e\x3chtml class\x3d"cke_panel_container {env}" dir\x3d"{dir}" lang\x3d"{langCode}"\x3e\x3chead\x3e{css}\x3c/head\x3e\x3cbody class\x3d"cke_{dir}" style\x3d"margin:0;padding:0" onload\x3d"{onload}"\x3e\x3c/body\x3e\x3c/html\x3e');
611CKEDITOR.ui.panel.prototype={render:function(a,b){this.getHolderElement=function(){var a=this._.holder;if(!a){if(this.isFramed){var a=this.document.getById(this.id+"_frame"),b=a.getParent(),a=a.getFrameDocument();CKEDITOR.env.iOS&&b.setStyles({overflow:"scroll","-webkit-overflow-scrolling":"touch"});b=CKEDITOR.tools.addFunction(CKEDITOR.tools.bind(function(){this.isLoaded=!0;if(this.onLoad)this.onLoad()},this));a.write(h.output(CKEDITOR.tools.extend({css:CKEDITOR.tools.buildStyleHtml(this.css),onload:"window.parent.CKEDITOR.tools.callFunction("+ 646CKEDITOR.ui.panel.prototype={render:function(a,b){this.getHolderElement=function(){var a=this._.holder;if(!a){if(this.isFramed){var a=this.document.getById(this.id+"_frame"),b=a.getParent(),a=a.getFrameDocument();CKEDITOR.env.iOS&&b.setStyles({overflow:"scroll","-webkit-overflow-scrolling":"touch"});b=CKEDITOR.tools.addFunction(CKEDITOR.tools.bind(function(){this.isLoaded=!0;if(this.onLoad)this.onLoad()},this));a.write(k.output(CKEDITOR.tools.extend({css:CKEDITOR.tools.buildStyleHtml(this.css),onload:"window.parent.CKEDITOR.tools.callFunction("+
612b+");"},d)));a.getWindow().$.CKEDITOR=CKEDITOR;a.on("keydown",function(a){var b=a.data.getKeystroke(),c=this.document.getById(this.id).getAttribute("dir");this._.onKeyDown&&!1===this._.onKeyDown(b)?a.data.preventDefault():(27==b||b==("rtl"==c?39:37))&&this.onEscape&&!1===this.onEscape(b)&&a.data.preventDefault()},this);a=a.getBody();a.unselectable();CKEDITOR.env.air&&CKEDITOR.tools.callFunction(b)}else a=this.document.getById(this.id);this._.holder=a}return a};var d={editorId:a.id,id:this.id,langCode:a.langCode, 647b+");"},e)));a.getWindow().$.CKEDITOR=CKEDITOR;a.on("keydown",function(a){var b=a.data.getKeystroke(),c=this.document.getById(this.id).getAttribute("dir");this._.onKeyDown&&!1===this._.onKeyDown(b)?a.data.preventDefault():(27==b||b==("rtl"==c?39:37))&&this.onEscape&&!1===this.onEscape(b)&&a.data.preventDefault()},this);a=a.getBody();a.unselectable();CKEDITOR.env.air&&CKEDITOR.tools.callFunction(b)}else a=this.document.getById(this.id);this._.holder=a}return a};var e={editorId:a.id,id:this.id,langCode:a.langCode,
613dir:a.lang.dir,cls:this.className,frame:"",env:CKEDITOR.env.cssClass,"z-index":a.config.baseFloatZIndex+1};if(this.isFramed){var e=CKEDITOR.env.air?"javascript:void(0)":CKEDITOR.env.ie?"javascript:void(function(){"+encodeURIComponent("document.open();("+CKEDITOR.tools.fixDomain+")();document.close();")+"}())":"";d.frame=g.output({id:this.id+"_frame",src:e})}e=f.output(d);b&&b.push(e);return e},addBlock:function(a,b){b=this._.blocks[a]=b instanceof CKEDITOR.ui.panel.block?b:new CKEDITOR.ui.panel.block(this.getHolderElement(), 648dir:a.lang.dir,cls:this.className,frame:"",env:CKEDITOR.env.cssClass,"z-index":a.config.baseFloatZIndex+1};if(this.isFramed){var d=CKEDITOR.env.air?"javascript:void(0)":CKEDITOR.env.ie?"javascript:void(function(){"+encodeURIComponent("document.open();("+CKEDITOR.tools.fixDomain+")();document.close();")+"}())":"";e.frame=h.output({id:this.id+"_frame",src:d})}d=g.output(e);b&&b.push(d);return d},addBlock:function(a,b){b=this._.blocks[a]=b instanceof CKEDITOR.ui.panel.block?b:new CKEDITOR.ui.panel.block(this.getHolderElement(),
614b);this._.currentBlock||this.showBlock(a);return b},getBlock:function(a){return this._.blocks[a]},showBlock:function(a){a=this._.blocks[a];var b=this._.currentBlock,d=!this.forceIFrame||CKEDITOR.env.ie?this._.holder:this.document.getById(this.id+"_frame");b&&b.hide();this._.currentBlock=a;CKEDITOR.fire("ariaWidget",d);a._.focusIndex=-1;this._.onKeyDown=a.onKeyDown&&CKEDITOR.tools.bind(a.onKeyDown,a);a.show();return a},destroy:function(){this.element&&this.element.remove()}};CKEDITOR.ui.panel.block= 649b);this._.currentBlock||this.showBlock(a);return b},getBlock:function(a){return this._.blocks[a]},showBlock:function(a){a=this._.blocks[a];var b=this._.currentBlock,e=!this.forceIFrame||CKEDITOR.env.ie?this._.holder:this.document.getById(this.id+"_frame");b&&b.hide();this._.currentBlock=a;CKEDITOR.fire("ariaWidget",e);a._.focusIndex=-1;this._.onKeyDown=a.onKeyDown&&CKEDITOR.tools.bind(a.onKeyDown,a);a.show();return a},destroy:function(){this.element&&this.element.remove()}};CKEDITOR.ui.panel.block=
615CKEDITOR.tools.createClass({$:function(a,b){this.element=a.append(a.getDocument().createElement("div",{attributes:{tabindex:-1,"class":"cke_panel_block"},styles:{display:"none"}}));b&&CKEDITOR.tools.extend(this,b);this.element.setAttributes({role:this.attributes.role||"presentation","aria-label":this.attributes["aria-label"],title:this.attributes.title||this.attributes["aria-label"]});this.keys={};this._.focusIndex=-1;this.element.disableContextMenu()},_:{markItem:function(a){-1!=a&&(a=this.element.getElementsByTag("a").getItem(this._.focusIndex= 650CKEDITOR.tools.createClass({$:function(a,b){this.element=a.append(a.getDocument().createElement("div",{attributes:{tabindex:-1,"class":"cke_panel_block"},styles:{display:"none"}}));b&&CKEDITOR.tools.extend(this,b);this.element.setAttributes({role:this.attributes.role||"presentation","aria-label":this.attributes["aria-label"],title:this.attributes.title||this.attributes["aria-label"]});this.keys={};this._.focusIndex=-1;this.element.disableContextMenu()},_:{markItem:function(a){-1!=a&&(a=this.element.getElementsByTag("a").getItem(this._.focusIndex=
616a),CKEDITOR.env.webkit&&a.getDocument().getWindow().focus(),a.focus(),this.onMark&&this.onMark(a))}},proto:{show:function(){this.element.setStyle("display","")},hide:function(){this.onHide&&!0===this.onHide.call(this)||this.element.setStyle("display","none")},onKeyDown:function(a,b){var d=this.keys[a];switch(d){case "next":for(var e=this._.focusIndex,d=this.element.getElementsByTag("a"),c;c=d.getItem(++e);)if(c.getAttribute("_cke_focus")&&c.$.offsetWidth){this._.focusIndex=e;c.focus();break}return c|| 651a),CKEDITOR.env.webkit&&a.getDocument().getWindow().focus(),a.focus(),this.onMark&&this.onMark(a))},markFirstDisplayed:function(a){for(var b=function(a){return a.type==CKEDITOR.NODE_ELEMENT&&"none"==a.getStyle("display")},e=this._.getItems(),d,c,f=e.count()-1;0<=f;f--)if(d=e.getItem(f),d.getAscendant(b)||(c=d,this._.focusIndex=f),"true"==d.getAttribute("aria-selected")){c=d;this._.focusIndex=f;break}c&&(a&&a(),CKEDITOR.env.webkit&&c.getDocument().getWindow().focus(),c.focus(),this.onMark&&this.onMark(c))},
617b?!1:(this._.focusIndex=-1,this.onKeyDown(a,1));case "prev":e=this._.focusIndex;for(d=this.element.getElementsByTag("a");0<e&&(c=d.getItem(--e));){if(c.getAttribute("_cke_focus")&&c.$.offsetWidth){this._.focusIndex=e;c.focus();break}c=null}return c||b?!1:(this._.focusIndex=d.count(),this.onKeyDown(a,1));case "click":case "mouseup":return e=this._.focusIndex,(c=0<=e&&this.element.getElementsByTag("a").getItem(e))&&(c.$[d]?c.$[d]():c.$["on"+d]()),!1}return!0}}})})();CKEDITOR.plugins.add("floatpanel",{requires:"panel"}); 652getItems:function(){return this.element.getElementsByTag("a")}},proto:{show:function(){this.element.setStyle("display","")},hide:function(){this.onHide&&!0===this.onHide.call(this)||this.element.setStyle("display","none")},onKeyDown:function(a,b){var e=this.keys[a];switch(e){case "next":for(var d=this._.focusIndex,e=this.element.getElementsByTag("a"),c;c=e.getItem(++d);)if(c.getAttribute("_cke_focus")&&c.$.offsetWidth){this._.focusIndex=d;c.focus();break}return c||b?!1:(this._.focusIndex=-1,this.onKeyDown(a,
618(function(){function v(a,b,c,l,h){h=CKEDITOR.tools.genKey(b.getUniqueId(),c.getUniqueId(),a.lang.dir,a.uiColor||"",l.css||"",h||"");var g=f[h];g||(g=f[h]=new CKEDITOR.ui.panel(b,l),g.element=c.append(CKEDITOR.dom.element.createFromHtml(g.render(a),b)),g.element.setStyles({display:"none",position:"absolute"}));return g}var f={};CKEDITOR.ui.floatPanel=CKEDITOR.tools.createClass({$:function(a,b,c,l){function h(){e.hide()}c.forceIFrame=1;c.toolbarRelated&&a.elementMode==CKEDITOR.ELEMENT_MODE_INLINE&& 6531));case "prev":d=this._.focusIndex;for(e=this.element.getElementsByTag("a");0<d&&(c=e.getItem(--d));){if(c.getAttribute("_cke_focus")&&c.$.offsetWidth){this._.focusIndex=d;c.focus();break}c=null}return c||b?!1:(this._.focusIndex=e.count(),this.onKeyDown(a,1));case "click":case "mouseup":return d=this._.focusIndex,(c=0<=d&&this.element.getElementsByTag("a").getItem(d))&&(c.$[e]?c.$[e]():c.$["on"+e]()),!1}return!0}}})})();CKEDITOR.plugins.add("floatpanel",{requires:"panel"});
619(b=CKEDITOR.document.getById("cke_"+a.name));var g=b.getDocument();l=v(a,g,b,c,l||0);var m=l.element,p=m.getFirst(),e=this;m.disableContextMenu();this.element=m;this._={editor:a,panel:l,parentElement:b,definition:c,document:g,iframe:p,children:[],dir:a.lang.dir,showBlockParams:null};a.on("mode",h);a.on("resize",h);g.getWindow().on("resize",function(){this.reposition()},this)},proto:{addBlock:function(a,b){return this._.panel.addBlock(a,b)},addListBlock:function(a,b){return this._.panel.addListBlock(a, 654(function(){function v(a,b,c,m,h){h=CKEDITOR.tools.genKey(b.getUniqueId(),c.getUniqueId(),a.lang.dir,a.uiColor||"",m.css||"",h||"");var g=f[h];g||(g=f[h]=new CKEDITOR.ui.panel(b,m),g.element=c.append(CKEDITOR.dom.element.createFromHtml(g.render(a),b)),g.element.setStyles({display:"none",position:"absolute"}));return g}var f={};CKEDITOR.ui.floatPanel=CKEDITOR.tools.createClass({$:function(a,b,c,m){function h(){e.hide()}c.forceIFrame=1;c.toolbarRelated&&a.elementMode==CKEDITOR.ELEMENT_MODE_INLINE&&
620b)},getBlock:function(a){return this._.panel.getBlock(a)},showBlock:function(a,b,c,l,h,g){var m=this._.panel,p=m.showBlock(a);this._.showBlockParams=[].slice.call(arguments);this.allowBlur(!1);var e=this._.editor.editable();this._.returnFocus=e.hasFocus?e:new CKEDITOR.dom.element(CKEDITOR.document.$.activeElement);this._.hideTimeout=0;var k=this.element,e=this._.iframe,e=CKEDITOR.env.ie&&!CKEDITOR.env.edge?e:new CKEDITOR.dom.window(e.$.contentWindow),f=k.getDocument(),r=this._.parentElement.getPositionedAncestor(), 655(b=CKEDITOR.document.getById("cke_"+a.name));var g=b.getDocument();m=v(a,g,b,c,m||0);var n=m.element,k=n.getFirst(),e=this;n.disableContextMenu();this.element=n;this._={editor:a,panel:m,parentElement:b,definition:c,document:g,iframe:k,children:[],dir:a.lang.dir,showBlockParams:null};a.on("mode",h);a.on("resize",h);g.getWindow().on("resize",function(){this.reposition()},this)},proto:{addBlock:function(a,b){return this._.panel.addBlock(a,b)},addListBlock:function(a,b){return this._.panel.addListBlock(a,
621t=b.getDocumentPosition(f),f=r?r.getDocumentPosition(f):{x:0,y:0},q="rtl"==this._.dir,d=t.x+(l||0)-f.x,n=t.y+(h||0)-f.y;!q||1!=c&&4!=c?q||2!=c&&3!=c||(d+=b.$.offsetWidth-1):d+=b.$.offsetWidth;if(3==c||4==c)n+=b.$.offsetHeight-1;this._.panel._.offsetParentId=b.getId();k.setStyles({top:n+"px",left:0,display:""});k.setOpacity(0);k.getFirst().removeStyle("width");this._.editor.focusManager.add(e);this._.blurSet||(CKEDITOR.event.useCapture=!0,e.on("blur",function(a){function u(){delete this._.returnFocus; 656b)},getBlock:function(a){return this._.panel.getBlock(a)},showBlock:function(a,b,c,m,h,g){var n=this._.panel,k=n.showBlock(a);this._.showBlockParams=[].slice.call(arguments);this.allowBlur(!1);var e=this._.editor.editable();this._.returnFocus=e.hasFocus?e:new CKEDITOR.dom.element(CKEDITOR.document.$.activeElement);this._.hideTimeout=0;var l=this.element,e=this._.iframe,e=CKEDITOR.env.ie&&!CKEDITOR.env.edge?e:new CKEDITOR.dom.window(e.$.contentWindow),f=l.getDocument(),r=this._.parentElement.getPositionedAncestor(),
657t=b.getDocumentPosition(f),f=r?r.getDocumentPosition(f):{x:0,y:0},q="rtl"==this._.dir,d=t.x+(m||0)-f.x,p=t.y+(h||0)-f.y;!q||1!=c&&4!=c?q||2!=c&&3!=c||(d+=b.$.offsetWidth-1):d+=b.$.offsetWidth;if(3==c||4==c)p+=b.$.offsetHeight-1;this._.panel._.offsetParentId=b.getId();l.setStyles({top:p+"px",left:0,display:""});l.setOpacity(0);l.getFirst().removeStyle("width");this._.editor.focusManager.add(e);this._.blurSet||(CKEDITOR.event.useCapture=!0,e.on("blur",function(a){function u(){delete this._.returnFocus;
622this.hide()}this.allowBlur()&&a.data.getPhase()==CKEDITOR.EVENT_PHASE_AT_TARGET&&this.visible&&!this._.activeChild&&(CKEDITOR.env.iOS?this._.hideTimeout||(this._.hideTimeout=CKEDITOR.tools.setTimeout(u,0,this)):u.call(this))},this),e.on("focus",function(){this._.focused=!0;this.hideChild();this.allowBlur(!0)},this),CKEDITOR.env.iOS&&(e.on("touchstart",function(){clearTimeout(this._.hideTimeout)},this),e.on("touchend",function(){this._.hideTimeout=0;this.focus()},this)),CKEDITOR.event.useCapture=!1, 658this.hide()}this.allowBlur()&&a.data.getPhase()==CKEDITOR.EVENT_PHASE_AT_TARGET&&this.visible&&!this._.activeChild&&(CKEDITOR.env.iOS?this._.hideTimeout||(this._.hideTimeout=CKEDITOR.tools.setTimeout(u,0,this)):u.call(this))},this),e.on("focus",function(){this._.focused=!0;this.hideChild();this.allowBlur(!0)},this),CKEDITOR.env.iOS&&(e.on("touchstart",function(){clearTimeout(this._.hideTimeout)},this),e.on("touchend",function(){this._.hideTimeout=0;this.focus()},this)),CKEDITOR.event.useCapture=!1,
623this._.blurSet=1);m.onEscape=CKEDITOR.tools.bind(function(a){if(this.onEscape&&!1===this.onEscape(a))return!1},this);CKEDITOR.tools.setTimeout(function(){var a=CKEDITOR.tools.bind(function(){var a=k;a.removeStyle("width");if(p.autoSize){var b=p.element.getDocument(),b=(CKEDITOR.env.webkit||CKEDITOR.env.edge?p.element:b.getBody()).$.scrollWidth;CKEDITOR.env.ie&&CKEDITOR.env.quirks&&0<b&&(b+=(a.$.offsetWidth||0)-(a.$.clientWidth||0)+3);a.setStyle("width",b+10+"px");b=p.element.$.scrollHeight;CKEDITOR.env.ie&& 659this._.blurSet=1);n.onEscape=CKEDITOR.tools.bind(function(a){if(this.onEscape&&!1===this.onEscape(a))return!1},this);CKEDITOR.tools.setTimeout(function(){var a=CKEDITOR.tools.bind(function(){var a=l;a.removeStyle("width");if(k.autoSize){var b=k.element.getDocument(),b=(CKEDITOR.env.webkit||CKEDITOR.env.edge?k.element:b.getBody()).$.scrollWidth;CKEDITOR.env.ie&&CKEDITOR.env.quirks&&0<b&&(b+=(a.$.offsetWidth||0)-(a.$.clientWidth||0)+3);a.setStyle("width",b+10+"px");b=k.element.$.scrollHeight;CKEDITOR.env.ie&&
624CKEDITOR.env.quirks&&0<b&&(b+=(a.$.offsetHeight||0)-(a.$.clientHeight||0)+3);a.setStyle("height",b+"px");m._.currentBlock.element.setStyle("display","none").removeStyle("display")}else a.removeStyle("height");q&&(d-=k.$.offsetWidth);k.setStyle("left",d+"px");var b=m.element.getWindow(),a=k.$.getBoundingClientRect(),b=b.getViewPaneSize(),c=a.width||a.right-a.left,e=a.height||a.bottom-a.top,l=q?a.right:b.width-a.left,h=q?b.width-a.right:a.left;q?l<c&&(d=h>c?d+c:b.width>c?d-a.left:d-a.right+b.width): 660CKEDITOR.env.quirks&&0<b&&(b+=(a.$.offsetHeight||0)-(a.$.clientHeight||0)+3);a.setStyle("height",b+"px");n._.currentBlock.element.setStyle("display","none").removeStyle("display")}else a.removeStyle("height");q&&(d-=l.$.offsetWidth);l.setStyle("left",d+"px");var b=n.element.getWindow(),a=l.$.getBoundingClientRect(),b=b.getViewPaneSize(),c=a.width||a.right-a.left,e=a.height||a.bottom-a.top,m=q?a.right:b.width-a.left,h=q?b.width-a.right:a.left;q?m<c&&(d=h>c?d+c:b.width>c?d-a.left:d-a.right+b.width):
625l<c&&(d=h>c?d-c:b.width>c?d-a.right+b.width:d-a.left);c=a.top;b.height-a.top<e&&(n=c>e?n-e:b.height>e?n-a.bottom+b.height:n-a.top);CKEDITOR.env.ie&&(b=a=new CKEDITOR.dom.element(k.$.offsetParent),"html"==b.getName()&&(b=b.getDocument().getBody()),"rtl"==b.getComputedStyle("direction")&&(d=CKEDITOR.env.ie8Compat?d-2*k.getDocument().getDocumentElement().$.scrollLeft:d-(a.$.scrollWidth-a.$.clientWidth)));var a=k.getFirst(),f;(f=a.getCustomData("activePanel"))&&f.onHide&&f.onHide.call(this,1);a.setCustomData("activePanel", 661m<c&&(d=h>c?d-c:b.width>c?d-a.right+b.width:d-a.left);c=a.top;b.height-a.top<e&&(p=c>e?p-e:b.height>e?p-a.bottom+b.height:p-a.top);CKEDITOR.env.ie&&(b=a=new CKEDITOR.dom.element(l.$.offsetParent),"html"==b.getName()&&(b=b.getDocument().getBody()),"rtl"==b.getComputedStyle("direction")&&(d=CKEDITOR.env.ie8Compat?d-2*l.getDocument().getDocumentElement().$.scrollLeft:d-(a.$.scrollWidth-a.$.clientWidth)));var a=l.getFirst(),f;(f=a.getCustomData("activePanel"))&&f.onHide&&f.onHide.call(this,1);a.setCustomData("activePanel",
626this);k.setStyles({top:n+"px",left:d+"px"});k.setOpacity(1);g&&g()},this);m.isLoaded?a():m.onLoad=a;CKEDITOR.tools.setTimeout(function(){var a=CKEDITOR.env.webkit&&CKEDITOR.document.getWindow().getScrollPosition().y;this.focus();p.element.focus();CKEDITOR.env.webkit&&(CKEDITOR.document.getBody().$.scrollTop=a);this.allowBlur(!0);this._.editor.fire("panelShow",this)},0,this)},CKEDITOR.env.air?200:0,this);this.visible=1;this.onShow&&this.onShow.call(this)},reposition:function(){var a=this._.showBlockParams; 662this);l.setStyles({top:p+"px",left:d+"px"});l.setOpacity(1);g&&g()},this);n.isLoaded?a():n.onLoad=a;CKEDITOR.tools.setTimeout(function(){var a=CKEDITOR.env.webkit&&CKEDITOR.document.getWindow().getScrollPosition().y;this.focus();k.element.focus();CKEDITOR.env.webkit&&(CKEDITOR.document.getBody().$.scrollTop=a);this.allowBlur(!0);CKEDITOR.env.ie?CKEDITOR.tools.setTimeout(function(){k.markFirstDisplayed?k.markFirstDisplayed():k._.markFirstDisplayed()},0):k.markFirstDisplayed?k.markFirstDisplayed():
627this.visible&&this._.showBlockParams&&(this.hide(),this.showBlock.apply(this,a))},focus:function(){if(CKEDITOR.env.webkit){var a=CKEDITOR.document.getActive();a&&!a.equals(this._.iframe)&&a.$.blur()}(this._.lastFocused||this._.iframe.getFrameDocument().getWindow()).focus()},blur:function(){var a=this._.iframe.getFrameDocument().getActive();a&&a.is("a")&&(this._.lastFocused=a)},hide:function(a){if(this.visible&&(!this.onHide||!0!==this.onHide.call(this))){this.hideChild();CKEDITOR.env.gecko&&this._.iframe.getFrameDocument().$.activeElement.blur(); 663k._.markFirstDisplayed();this._.editor.fire("panelShow",this)},0,this)},CKEDITOR.env.air?200:0,this);this.visible=1;this.onShow&&this.onShow.call(this)},reposition:function(){var a=this._.showBlockParams;this.visible&&this._.showBlockParams&&(this.hide(),this.showBlock.apply(this,a))},focus:function(){if(CKEDITOR.env.webkit){var a=CKEDITOR.document.getActive();a&&!a.equals(this._.iframe)&&a.$.blur()}(this._.lastFocused||this._.iframe.getFrameDocument().getWindow()).focus()},blur:function(){var a=
628this.element.setStyle("display","none");this.visible=0;this.element.getFirst().removeCustomData("activePanel");if(a=a&&this._.returnFocus)CKEDITOR.env.webkit&&a.type&&a.getWindow().$.focus(),a.focus();delete this._.lastFocused;this._.showBlockParams=null;this._.editor.fire("panelHide",this)}},allowBlur:function(a){var b=this._.panel;void 0!==a&&(b.allowBlur=a);return b.allowBlur},showAsChild:function(a,b,c,f,h,g){if(this._.activeChild!=a||a._.panel._.offsetParentId!=c.getId())this.hideChild(),a.onHide= 664this._.iframe.getFrameDocument().getActive();a&&a.is("a")&&(this._.lastFocused=a)},hide:function(a){if(this.visible&&(!this.onHide||!0!==this.onHide.call(this))){this.hideChild();CKEDITOR.env.gecko&&this._.iframe.getFrameDocument().$.activeElement.blur();this.element.setStyle("display","none");this.visible=0;this.element.getFirst().removeCustomData("activePanel");if(a=a&&this._.returnFocus)CKEDITOR.env.webkit&&a.type&&a.getWindow().$.focus(),a.focus();delete this._.lastFocused;this._.showBlockParams=
629CKEDITOR.tools.bind(function(){CKEDITOR.tools.setTimeout(function(){this._.focused||this.hide()},0,this)},this),this._.activeChild=a,this._.focused=!1,a.showBlock(b,c,f,h,g),this.blur(),(CKEDITOR.env.ie7Compat||CKEDITOR.env.ie6Compat)&&setTimeout(function(){a.element.getChild(0).$.style.cssText+=""},100)},hideChild:function(a){var b=this._.activeChild;b&&(delete b.onHide,delete this._.activeChild,b.hide(),a&&this.focus())}}});CKEDITOR.on("instanceDestroyed",function(){var a=CKEDITOR.tools.isEmpty(CKEDITOR.instances), 665null;this._.editor.fire("panelHide",this)}},allowBlur:function(a){var b=this._.panel;void 0!==a&&(b.allowBlur=a);return b.allowBlur},showAsChild:function(a,b,c,f,h,g){if(this._.activeChild!=a||a._.panel._.offsetParentId!=c.getId())this.hideChild(),a.onHide=CKEDITOR.tools.bind(function(){CKEDITOR.tools.setTimeout(function(){this._.focused||this.hide()},0,this)},this),this._.activeChild=a,this._.focused=!1,a.showBlock(b,c,f,h,g),this.blur(),(CKEDITOR.env.ie7Compat||CKEDITOR.env.ie6Compat)&&setTimeout(function(){a.element.getChild(0).$.style.cssText+=
630b;for(b in f){var c=f[b];a?c.destroy():c.element.hide()}a&&(f={})})})();CKEDITOR.plugins.add("menu",{requires:"floatpanel",beforeInit:function(g){for(var h=g.config.menu_groups.split(","),p=g._.menuGroups={},n=g._.menuItems={},a=0;a<h.length;a++)p[h[a]]=a+1;g.addMenuGroup=function(b,a){p[b]=a||100};g.addMenuItem=function(a,c){p[c.group]&&(n[a]=new CKEDITOR.menuItem(this,a,c))};g.addMenuItems=function(a){for(var c in a)this.addMenuItem(c,a[c])};g.getMenuItem=function(a){return n[a]};g.removeMenuItem=function(a){delete n[a]}}}); 666""},100)},hideChild:function(a){var b=this._.activeChild;b&&(delete b.onHide,delete this._.activeChild,b.hide(),a&&this.focus())}}});CKEDITOR.on("instanceDestroyed",function(){var a=CKEDITOR.tools.isEmpty(CKEDITOR.instances),b;for(b in f){var c=f[b];a?c.destroy():c.element.hide()}a&&(f={})})})();CKEDITOR.plugins.add("menu",{requires:"floatpanel",beforeInit:function(l){for(var h=l.config.menu_groups.split(","),r=l._.menuGroups={},t=l._.menuItems={},n=0;n<h.length;n++)r[h[n]]=n+1;l.addMenuGroup=function(a,b){r[a]=b||100};l.addMenuItem=function(a,b){r[b.group]&&(t[a]=new CKEDITOR.menuItem(this,a,b))};l.addMenuItems=function(a){for(var b in a)this.addMenuItem(b,a[b])};l.getMenuItem=function(a){return t[a]};l.removeMenuItem=function(a){delete t[a]}}});
631(function(){function g(a){a.sort(function(a,c){return a.group<c.group?-1:a.group>c.group?1:a.order<c.order?-1:a.order>c.order?1:0})}var h='\x3cspan class\x3d"cke_menuitem"\x3e\x3ca id\x3d"{id}" class\x3d"cke_menubutton cke_menubutton__{name} cke_menubutton_{state} {cls}" href\x3d"{href}" title\x3d"{title}" tabindex\x3d"-1"_cke_focus\x3d1 hidefocus\x3d"true" role\x3d"{role}" aria-haspopup\x3d"{hasPopup}" aria-disabled\x3d"{disabled}" {ariaChecked}';CKEDITOR.env.gecko&&CKEDITOR.env.mac&&(h+=' onkeypress\x3d"return false;"'); 667(function(){function l(a){a.sort(function(a,d){return a.group<d.group?-1:a.group>d.group?1:a.order<d.order?-1:a.order>d.order?1:0})}var h='\x3cspan class\x3d"cke_menuitem"\x3e\x3ca id\x3d"{id}" class\x3d"cke_menubutton cke_menubutton__{name} cke_menubutton_{state} {cls}" href\x3d"{href}" title\x3d"{title}" tabindex\x3d"-1" _cke_focus\x3d1 hidefocus\x3d"true" role\x3d"{role}" aria-label\x3d"{label}" aria-describedby\x3d"{id}_description" aria-haspopup\x3d"{hasPopup}" aria-disabled\x3d"{disabled}" {ariaChecked} draggable\x3d"false"';
632CKEDITOR.env.gecko&&(h+=' onblur\x3d"this.style.cssText \x3d this.style.cssText;"');var h=h+(' onmouseover\x3d"CKEDITOR.tools.callFunction({hoverFn},{index});" onmouseout\x3d"CKEDITOR.tools.callFunction({moveOutFn},{index});" '+(CKEDITOR.env.ie?'onclick\x3d"return false;" onmouseup':"onclick")+'\x3d"CKEDITOR.tools.callFunction({clickFn},{index}); return false;"\x3e'),p=CKEDITOR.addTemplate("menuItem",h+'\x3cspan class\x3d"cke_menubutton_inner"\x3e\x3cspan class\x3d"cke_menubutton_icon"\x3e\x3cspan class\x3d"cke_button_icon cke_button__{iconName}_icon" style\x3d"{iconStyle}"\x3e\x3c/span\x3e\x3c/span\x3e\x3cspan class\x3d"cke_menubutton_label"\x3e{label}\x3c/span\x3e{arrowHtml}\x3c/span\x3e\x3c/a\x3e\x3c/span\x3e'), 668CKEDITOR.env.gecko&&CKEDITOR.env.mac&&(h+=' onkeypress\x3d"return false;"');CKEDITOR.env.gecko&&(h+=' onblur\x3d"this.style.cssText \x3d this.style.cssText;" ondragstart\x3d"return false;"');var h=h+(' onmouseover\x3d"CKEDITOR.tools.callFunction({hoverFn},{index});" onmouseout\x3d"CKEDITOR.tools.callFunction({moveOutFn},{index});" '+(CKEDITOR.env.ie?'onclick\x3d"return false;" onmouseup':"onclick")+'\x3d"CKEDITOR.tools.callFunction({clickFn},{index}); return false;"\x3e'),r=CKEDITOR.addTemplate("menuItem",
633n=CKEDITOR.addTemplate("menuArrow",'\x3cspan class\x3d"cke_menuarrow"\x3e\x3cspan\x3e{label}\x3c/span\x3e\x3c/span\x3e');CKEDITOR.menu=CKEDITOR.tools.createClass({$:function(a,b){b=this._.definition=b||{};this.id=CKEDITOR.tools.getNextId();this.editor=a;this.items=[];this._.listeners=[];this._.level=b.level||1;var c=CKEDITOR.tools.extend({},b.panel,{css:[CKEDITOR.skin.getPath("editor")],level:this._.level-1,block:{}}),m=c.block.attributes=c.attributes||{};!m.role&&(m.role="menu");this._.panelDefinition= 669h+'\x3cspan class\x3d"cke_menubutton_inner"\x3e\x3cspan class\x3d"cke_menubutton_icon"\x3e\x3cspan class\x3d"cke_button_icon cke_button__{iconName}_icon" style\x3d"{iconStyle}"\x3e\x3c/span\x3e\x3c/span\x3e\x3cspan class\x3d"cke_menubutton_label"\x3e{label}\x3c/span\x3e{shortcutHtml}{arrowHtml}\x3c/span\x3e\x3c/a\x3e\x3cspan id\x3d"{id}_description" class\x3d"cke_voice_label" aria-hidden\x3d"false"\x3e{ariaShortcut}\x3c/span\x3e\x3c/span\x3e'),t=CKEDITOR.addTemplate("menuArrow",'\x3cspan class\x3d"cke_menuarrow"\x3e\x3cspan\x3e{label}\x3c/span\x3e\x3c/span\x3e'),
634c},_:{onShow:function(){var a=this.editor.getSelection(),b=a&&a.getStartElement(),c=this.editor.elementPath(),m=this._.listeners;this.removeAll();for(var e=0;e<m.length;e++){var l=m[e](b,a,c);if(l)for(var k in l){var f=this.editor.getMenuItem(k);!f||f.command&&!this.editor.getCommand(f.command).state||(f.state=l[k],this.add(f))}}},onClick:function(a){this.hide();if(a.onClick)a.onClick();else a.command&&this.editor.execCommand(a.command)},onEscape:function(a){var b=this.parent;b?b._.panel.hideChild(1): 670n=CKEDITOR.addTemplate("menuShortcut",'\x3cspan class\x3d"cke_menubutton_label cke_menubutton_shortcut"\x3e{shortcut}\x3c/span\x3e');CKEDITOR.menu=CKEDITOR.tools.createClass({$:function(a,b){b=this._.definition=b||{};this.id=CKEDITOR.tools.getNextId();this.editor=a;this.items=[];this._.listeners=[];this._.level=b.level||1;var d=CKEDITOR.tools.extend({},b.panel,{css:[CKEDITOR.skin.getPath("editor")],level:this._.level-1,block:{}}),m=d.block.attributes=d.attributes||{};!m.role&&(m.role="menu");this._.panelDefinition=
63527==a&&this.hide(1);return!1},onHide:function(){this.onHide&&this.onHide()},showSubMenu:function(a){var b=this._.subMenu,c=this.items[a];if(c=c.getItems&&c.getItems()){b?b.removeAll():(b=this._.subMenu=new CKEDITOR.menu(this.editor,CKEDITOR.tools.extend({},this._.definition,{level:this._.level+1},!0)),b.parent=this,b._.onClick=CKEDITOR.tools.bind(this._.onClick,this));for(var m in c){var e=this.editor.getMenuItem(m);e&&(e.state=c[m],b.add(e))}var l=this._.panel.getBlock(this.id).element.getDocument().getById(this.id+ 671d},_:{onShow:function(){var a=this.editor.getSelection(),b=a&&a.getStartElement(),d=this.editor.elementPath(),m=this._.listeners;this.removeAll();for(var g=0;g<m.length;g++){var k=m[g](b,a,d);if(k)for(var e in k){var f=this.editor.getMenuItem(e);!f||f.command&&!this.editor.getCommand(f.command).state||(f.state=k[e],this.add(f))}}},onClick:function(a){this.hide();if(a.onClick)a.onClick();else a.command&&this.editor.execCommand(a.command)},onEscape:function(a){var b=this.parent;b?b._.panel.hideChild(1):
636String(a));setTimeout(function(){b.show(l,2)},0)}else this._.panel.hideChild(1)}},proto:{add:function(a){a.order||(a.order=this.items.length);this.items.push(a)},removeAll:function(){this.items=[]},show:function(a,b,c,m){if(!this.parent&&(this._.onShow(),!this.items.length))return;b=b||("rtl"==this.editor.lang.dir?2:1);var e=this.items,l=this.editor,k=this._.panel,f=this._.element;if(!k){k=this._.panel=new CKEDITOR.ui.floatPanel(this.editor,CKEDITOR.document.getBody(),this._.panelDefinition,this._.level); 67227==a&&this.hide(1);return!1},onHide:function(){this.onHide&&this.onHide()},showSubMenu:function(a){var b=this._.subMenu,d=this.items[a];if(d=d.getItems&&d.getItems()){b?b.removeAll():(b=this._.subMenu=new CKEDITOR.menu(this.editor,CKEDITOR.tools.extend({},this._.definition,{level:this._.level+1},!0)),b.parent=this,b._.onClick=CKEDITOR.tools.bind(this._.onClick,this));for(var m in d){var g=this.editor.getMenuItem(m);g&&(g.state=d[m],b.add(g))}var k=this._.panel.getBlock(this.id).element.getDocument().getById(this.id+
637k.onEscape=CKEDITOR.tools.bind(function(a){if(!1===this._.onEscape(a))return!1},this);k.onShow=function(){k._.panel.getHolderElement().getParent().addClass("cke").addClass("cke_reset_all")};k.onHide=CKEDITOR.tools.bind(function(){this._.onHide&&this._.onHide()},this);f=k.addBlock(this.id,this._.panelDefinition.block);f.autoSize=!0;var d=f.keys;d[40]="next";d[9]="next";d[38]="prev";d[CKEDITOR.SHIFT+9]="prev";d["rtl"==l.lang.dir?37:39]=CKEDITOR.env.ie?"mouseup":"click";d[32]=CKEDITOR.env.ie?"mouseup": 673String(a));setTimeout(function(){b.show(k,2)},0)}else this._.panel.hideChild(1)}},proto:{add:function(a){a.order||(a.order=this.items.length);this.items.push(a)},removeAll:function(){this.items=[]},show:function(a,b,d,m){if(!this.parent&&(this._.onShow(),!this.items.length))return;b=b||("rtl"==this.editor.lang.dir?2:1);var g=this.items,k=this.editor,e=this._.panel,f=this._.element;if(!e){e=this._.panel=new CKEDITOR.ui.floatPanel(this.editor,CKEDITOR.document.getBody(),this._.panelDefinition,this._.level);
638"click";CKEDITOR.env.ie&&(d[13]="mouseup");f=this._.element=f.element;d=f.getDocument();d.getBody().setStyle("overflow","hidden");d.getElementsByTag("html").getItem(0).setStyle("overflow","hidden");this._.itemOverFn=CKEDITOR.tools.addFunction(function(a){clearTimeout(this._.showSubTimeout);this._.showSubTimeout=CKEDITOR.tools.setTimeout(this._.showSubMenu,l.config.menu_subMenuDelay||400,this,[a])},this);this._.itemOutFn=CKEDITOR.tools.addFunction(function(){clearTimeout(this._.showSubTimeout)},this); 674e.onEscape=CKEDITOR.tools.bind(function(a){if(!1===this._.onEscape(a))return!1},this);e.onShow=function(){e._.panel.getHolderElement().getParent().addClass("cke").addClass("cke_reset_all")};e.onHide=CKEDITOR.tools.bind(function(){this._.onHide&&this._.onHide()},this);f=e.addBlock(this.id,this._.panelDefinition.block);f.autoSize=!0;var c=f.keys;c[40]="next";c[9]="next";c[38]="prev";c[CKEDITOR.SHIFT+9]="prev";c["rtl"==k.lang.dir?37:39]=CKEDITOR.env.ie?"mouseup":"click";c[32]=CKEDITOR.env.ie?"mouseup":
639this._.itemClickFn=CKEDITOR.tools.addFunction(function(a){var b=this.items[a];if(b.state==CKEDITOR.TRISTATE_DISABLED)this.hide(1);else if(b.getItems)this._.showSubMenu(a);else this._.onClick(b)},this)}g(e);for(var d=l.elementPath(),d=['\x3cdiv class\x3d"cke_menu'+(d&&d.direction()!=l.lang.dir?" cke_mixed_dir_content":"")+'" role\x3d"presentation"\x3e'],h=e.length,p=h&&e[0].group,n=0;n<h;n++){var q=e[n];p!=q.group&&(d.push('\x3cdiv class\x3d"cke_menuseparator" role\x3d"separator"\x3e\x3c/div\x3e'), 675"click";CKEDITOR.env.ie&&(c[13]="mouseup");f=this._.element=f.element;c=f.getDocument();c.getBody().setStyle("overflow","hidden");c.getElementsByTag("html").getItem(0).setStyle("overflow","hidden");this._.itemOverFn=CKEDITOR.tools.addFunction(function(a){clearTimeout(this._.showSubTimeout);this._.showSubTimeout=CKEDITOR.tools.setTimeout(this._.showSubMenu,k.config.menu_subMenuDelay||400,this,[a])},this);this._.itemOutFn=CKEDITOR.tools.addFunction(function(){clearTimeout(this._.showSubTimeout)},this);
640p=q.group);q.render(this,n,d)}d.push("\x3c/div\x3e");f.setHtml(d.join(""));CKEDITOR.ui.fire("ready",this);this.parent?this.parent._.panel.showAsChild(k,this.id,a,b,c,m):k.showBlock(this.id,a,b,c,m);l.fire("menuShow",[k])},addListener:function(a){this._.listeners.push(a)},hide:function(a){this._.onHide&&this._.onHide();this._.panel&&this._.panel.hide(a)}}});CKEDITOR.menuItem=CKEDITOR.tools.createClass({$:function(a,b,c){CKEDITOR.tools.extend(this,c,{order:0,className:"cke_menubutton__"+b});this.group= 676this._.itemClickFn=CKEDITOR.tools.addFunction(function(a){var b=this.items[a];if(b.state==CKEDITOR.TRISTATE_DISABLED)this.hide(1);else if(b.getItems)this._.showSubMenu(a);else this._.onClick(b)},this)}l(g);for(var c=k.elementPath(),c=['\x3cdiv class\x3d"cke_menu'+(c&&c.direction()!=k.lang.dir?" cke_mixed_dir_content":"")+'" role\x3d"presentation"\x3e'],h=g.length,n=h&&g[0].group,q=0;q<h;q++){var p=g[q];n!=p.group&&(c.push('\x3cdiv class\x3d"cke_menuseparator" role\x3d"separator"\x3e\x3c/div\x3e'),
641a._.menuGroups[this.group];this.editor=a;this.name=b},proto:{render:function(a,b,c){var h=a.id+String(b),e="undefined"==typeof this.state?CKEDITOR.TRISTATE_OFF:this.state,l="",k=e==CKEDITOR.TRISTATE_ON?"on":e==CKEDITOR.TRISTATE_DISABLED?"disabled":"off";this.role in{menuitemcheckbox:1,menuitemradio:1}&&(l=' aria-checked\x3d"'+(e==CKEDITOR.TRISTATE_ON?"true":"false")+'"');var f=this.getItems,d="\x26#"+("rtl"==this.editor.lang.dir?"9668":"9658")+";",g=this.name;this.icon&&!/\./.test(this.icon)&&(g= 677n=p.group);p.render(this,q,c)}c.push("\x3c/div\x3e");f.setHtml(c.join(""));CKEDITOR.ui.fire("ready",this);this.parent?this.parent._.panel.showAsChild(e,this.id,a,b,d,m):e.showBlock(this.id,a,b,d,m);k.fire("menuShow",[e])},addListener:function(a){this._.listeners.push(a)},hide:function(a){this._.onHide&&this._.onHide();this._.panel&&this._.panel.hide(a)}}});CKEDITOR.menuItem=CKEDITOR.tools.createClass({$:function(a,b,d){CKEDITOR.tools.extend(this,d,{order:0,className:"cke_menubutton__"+b});this.group=
642this.icon);a={id:h,name:this.name,iconName:g,label:this.label,cls:this.className||"",state:k,hasPopup:f?"true":"false",disabled:e==CKEDITOR.TRISTATE_DISABLED,title:this.label,href:"javascript:void('"+(this.label||"").replace("'")+"')",hoverFn:a._.itemOverFn,moveOutFn:a._.itemOutFn,clickFn:a._.itemClickFn,index:b,iconStyle:CKEDITOR.skin.getIconStyle(g,"rtl"==this.editor.lang.dir,g==this.icon?null:this.icon,this.iconOffset),arrowHtml:f?n.output({label:d}):"",role:this.role?this.role:"menuitem",ariaChecked:l}; 678a._.menuGroups[this.group];this.editor=a;this.name=b},proto:{render:function(a,b,d){var h=a.id+String(b),g="undefined"==typeof this.state?CKEDITOR.TRISTATE_OFF:this.state,k="",e=this.editor,f,c,l=g==CKEDITOR.TRISTATE_ON?"on":g==CKEDITOR.TRISTATE_DISABLED?"disabled":"off";this.role in{menuitemcheckbox:1,menuitemradio:1}&&(k=' aria-checked\x3d"'+(g==CKEDITOR.TRISTATE_ON?"true":"false")+'"');var u=this.getItems,q="\x26#"+("rtl"==this.editor.lang.dir?"9668":"9658")+";",p=this.name;this.icon&&!/\./.test(this.icon)&&
643p.output(a,c)}}})})();CKEDITOR.config.menu_groups="clipboard,form,tablecell,tablecellproperties,tablerow,tablecolumn,table,anchor,link,image,flash,checkbox,radio,textfield,hiddenfield,imagebutton,button,select,textarea,div";CKEDITOR.plugins.add("contextmenu",{requires:"menu",onLoad:function(){CKEDITOR.plugins.contextMenu=CKEDITOR.tools.createClass({base:CKEDITOR.menu,$:function(a){this.base.call(this,a,{panel:{className:"cke_menu_panel",attributes:{"aria-label":a.lang.contextmenu.options}}})},proto:{addTarget:function(a,e){a.on("contextmenu",function(a){a=a.data;var c=CKEDITOR.env.webkit?f:CKEDITOR.env.mac?a.$.metaKey:a.$.ctrlKey;if(!e||!c){a.preventDefault();if(CKEDITOR.env.mac&&CKEDITOR.env.webkit){var c=this.editor, 679(p=this.icon);this.command&&(f=e.getCommand(this.command),(f=e.getCommandKeystroke(f))&&(c=CKEDITOR.tools.keystrokeToString(e.lang.common.keyboard,f)));a={id:h,name:this.name,iconName:p,label:this.label,cls:this.className||"",state:l,hasPopup:u?"true":"false",disabled:g==CKEDITOR.TRISTATE_DISABLED,title:this.label+(c?" ("+c.display+")":""),ariaShortcut:c?e.lang.common.keyboardShortcut+" "+c.aria:"",href:"javascript:void('"+(this.label||"").replace("'")+"')",hoverFn:a._.itemOverFn,moveOutFn:a._.itemOutFn,
680clickFn:a._.itemClickFn,index:b,iconStyle:CKEDITOR.skin.getIconStyle(p,"rtl"==this.editor.lang.dir,p==this.icon?null:this.icon,this.iconOffset),shortcutHtml:c?n.output({shortcut:c.display}):"",arrowHtml:u?t.output({label:q}):"",role:this.role?this.role:"menuitem",ariaChecked:k};r.output(a,d)}}})})();CKEDITOR.config.menu_groups="clipboard,form,tablecell,tablecellproperties,tablerow,tablecolumn,table,anchor,link,image,flash,checkbox,radio,textfield,hiddenfield,imagebutton,button,select,textarea,div";CKEDITOR.plugins.add("contextmenu",{requires:"menu",onLoad:function(){CKEDITOR.plugins.contextMenu=CKEDITOR.tools.createClass({base:CKEDITOR.menu,$:function(a){this.base.call(this,a,{panel:{className:"cke_menu_panel",attributes:{"aria-label":a.lang.contextmenu.options}}})},proto:{addTarget:function(a,e){a.on("contextmenu",function(a){a=a.data;var c=CKEDITOR.env.webkit?f:CKEDITOR.env.mac?a.$.metaKey:a.$.ctrlKey;if(!e||!c){a.preventDefault();if(CKEDITOR.env.mac&&CKEDITOR.env.webkit){var c=this.editor,
644b=(new CKEDITOR.dom.elementPath(a.getTarget(),c.editable())).contains(function(a){return a.hasAttribute("contenteditable")},!0);b&&"false"==b.getAttribute("contenteditable")&&c.getSelection().fake(b)}var b=a.getTarget().getDocument(),d=a.getTarget().getDocument().getDocumentElement(),c=!b.equals(CKEDITOR.document),b=b.getWindow().getScrollPosition(),g=c?a.$.clientX:a.$.pageX||b.x+a.$.clientX,h=c?a.$.clientY:a.$.pageY||b.y+a.$.clientY;CKEDITOR.tools.setTimeout(function(){this.open(d,null,g,h)},CKEDITOR.env.ie? 681b=(new CKEDITOR.dom.elementPath(a.getTarget(),c.editable())).contains(function(a){return a.hasAttribute("contenteditable")},!0);b&&"false"==b.getAttribute("contenteditable")&&c.getSelection().fake(b)}var b=a.getTarget().getDocument(),d=a.getTarget().getDocument().getDocumentElement(),c=!b.equals(CKEDITOR.document),b=b.getWindow().getScrollPosition(),g=c?a.$.clientX:a.$.pageX||b.x+a.$.clientX,h=c?a.$.clientY:a.$.pageY||b.y+a.$.clientY;CKEDITOR.tools.setTimeout(function(){this.open(d,null,g,h)},CKEDITOR.env.ie?
645200:0,this)}},this);if(CKEDITOR.env.webkit){var f,d=function(){f=0};a.on("keydown",function(a){f=CKEDITOR.env.mac?a.data.$.metaKey:a.data.$.ctrlKey});a.on("keyup",d);a.on("contextmenu",d)}},open:function(a,e,f,d){this.editor.focus();a=a||CKEDITOR.document.getDocumentElement();this.editor.selectionChange(1);this.show(a,e,f,d)}}})},beforeInit:function(a){var e=a.contextMenu=new CKEDITOR.plugins.contextMenu(a);a.on("contentDom",function(){e.addTarget(a.editable(),!1!==a.config.browserContextMenuOnCtrl)}); 682200:0,this)}},this);if(CKEDITOR.env.webkit){var f,d=function(){f=0};a.on("keydown",function(a){f=CKEDITOR.env.mac?a.data.$.metaKey:a.data.$.ctrlKey});a.on("keyup",d);a.on("contextmenu",d)}},open:function(a,e,f,d){!1!==this.editor.config.enableContextMenu&&(this.editor.focus(),a=a||CKEDITOR.document.getDocumentElement(),this.editor.selectionChange(1),this.show(a,e,f,d))}}})},beforeInit:function(a){var e=a.contextMenu=new CKEDITOR.plugins.contextMenu(a);a.on("contentDom",function(){e.addTarget(a.editable(),
646a.addCommand("contextMenu",{exec:function(){a.contextMenu.open(a.document.getBody())}});a.setKeystroke(CKEDITOR.SHIFT+121,"contextMenu");a.setKeystroke(CKEDITOR.CTRL+CKEDITOR.SHIFT+121,"contextMenu")}});(function(){function f(c){var a=this.att;c=c&&c.hasAttribute(a)&&c.getAttribute(a)||"";void 0!==c&&this.setValue(c)}function g(){for(var c,a=0;a<arguments.length;a++)if(arguments[a]instanceof CKEDITOR.dom.element){c=arguments[a];break}if(c){var a=this.att,b=this.getValue();b?c.setAttribute(a,b):c.removeAttribute(a,b)}}var k={id:1,dir:1,classes:1,styles:1};CKEDITOR.plugins.add("dialogadvtab",{requires:"dialog",allowedContent:function(c){c||(c=k);var a=[];c.id&&a.push("id");c.dir&&a.push("dir");var b= 683!1!==a.config.browserContextMenuOnCtrl)});a.addCommand("contextMenu",{exec:function(){a.contextMenu.open(a.document.getBody())}});a.setKeystroke(CKEDITOR.SHIFT+121,"contextMenu");a.setKeystroke(CKEDITOR.CTRL+CKEDITOR.SHIFT+121,"contextMenu")}});CKEDITOR.plugins.add("resize",{init:function(b){function f(d){var e=c.width,m=c.height,f=e+(d.data.$.screenX-n.x)*("rtl"==g?-1:1);d=m+(d.data.$.screenY-n.y);h&&(e=Math.max(a.resize_minWidth,Math.min(f,a.resize_maxWidth)));p&&(m=Math.max(a.resize_minHeight,Math.min(d,a.resize_maxHeight)));b.resize(h?e:null,m)}function k(){CKEDITOR.document.removeListener("mousemove",f);CKEDITOR.document.removeListener("mouseup",k);b.document&&(b.document.removeListener("mousemove",f),b.document.removeListener("mouseup",
647"";a.length&&(b+="["+a.join(",")+"]");c.classes&&(b+="(*)");c.styles&&(b+="{*}");return b},createAdvancedTab:function(c,a,b){a||(a=k);var d=c.lang.common,h={id:"advanced",label:d.advancedTab,title:d.advancedTab,elements:[{type:"vbox",padding:1,children:[]}]},e=[];if(a.id||a.dir)a.id&&e.push({id:"advId",att:"id",type:"text",requiredContent:b?b+"[id]":null,label:d.id,setup:f,commit:g}),a.dir&&e.push({id:"advLangDir",att:"dir",type:"select",requiredContent:b?b+"[dir]":null,label:d.langDir,"default":"", 684k))}var a=b.config,r=b.ui.spaceId("resizer"),g=b.element?b.element.getDirection(1):"ltr";!a.resize_dir&&(a.resize_dir="vertical");void 0===a.resize_maxWidth&&(a.resize_maxWidth=3E3);void 0===a.resize_maxHeight&&(a.resize_maxHeight=3E3);void 0===a.resize_minWidth&&(a.resize_minWidth=750);void 0===a.resize_minHeight&&(a.resize_minHeight=250);if(!1!==a.resize_enabled){var l=null,n,c,h=("both"==a.resize_dir||"horizontal"==a.resize_dir)&&a.resize_minWidth!=a.resize_maxWidth,p=("both"==a.resize_dir||"vertical"==
648style:"width:100%",items:[[d.notSet,""],[d.langDirLTR,"ltr"],[d.langDirRTL,"rtl"]],setup:f,commit:g}),h.elements[0].children.push({type:"hbox",widths:["50%","50%"],children:[].concat(e)});if(a.styles||a.classes)e=[],a.styles&&e.push({id:"advStyles",att:"style",type:"text",requiredContent:b?b+"{cke-xyz}":null,label:d.styles,"default":"",validate:CKEDITOR.dialog.validate.inlineStyle(d.invalidInlineStyle),onChange:function(){},getStyle:function(a,c){var b=this.getValue().match(new RegExp("(?:^|;)\\s*"+ 685a.resize_dir)&&a.resize_minHeight!=a.resize_maxHeight,q=CKEDITOR.tools.addFunction(function(d){l||(l=b.getResizable());c={width:l.$.offsetWidth||0,height:l.$.offsetHeight||0};n={x:d.screenX,y:d.screenY};a.resize_minWidth>c.width&&(a.resize_minWidth=c.width);a.resize_minHeight>c.height&&(a.resize_minHeight=c.height);CKEDITOR.document.on("mousemove",f);CKEDITOR.document.on("mouseup",k);b.document&&(b.document.on("mousemove",f),b.document.on("mouseup",k));d.preventDefault&&d.preventDefault()});b.on("destroy",
649a+"\\s*:\\s*([^;]*)","i"));return b?b[1]:c},updateStyle:function(a,b){var d=this.getValue(),e=c.document.createElement("span");e.setAttribute("style",d);e.setStyle(a,b);d=CKEDITOR.tools.normalizeCssText(e.getAttribute("style"));this.setValue(d,1)},setup:f,commit:g}),a.classes&&e.push({type:"hbox",widths:["45%","55%"],children:[{id:"advCSSClasses",att:"class",type:"text",requiredContent:b?b+"(cke-xyz)":null,label:d.cssClasses,"default":"",setup:f,commit:g}]}),h.elements[0].children.push({type:"hbox", 686function(){CKEDITOR.tools.removeFunction(q)});b.on("uiSpace",function(a){if("bottom"==a.data.space){var e="";h&&!p&&(e=" cke_resizer_horizontal");!h&&p&&(e=" cke_resizer_vertical");var c='\x3cspan id\x3d"'+r+'" class\x3d"cke_resizer'+e+" cke_resizer_"+g+'" title\x3d"'+CKEDITOR.tools.htmlEncode(b.lang.common.resize)+'" onmousedown\x3d"CKEDITOR.tools.callFunction('+q+', event)"\x3e'+("ltr"==g?"◢":"◣")+"\x3c/span\x3e";"ltr"==g&&"ltr"==e?a.data.html+=c:a.data.html=c+a.data.html}},b,null,100);b.on("maximize",
650widths:["50%","50%"],children:[].concat(e)});return h}})})();(function(){function q(a,d){function l(c){c=k.list[c];if(c.equals(a.editable())||"true"==c.getAttribute("contenteditable")){var e=a.createRange();e.selectNodeContents(c);e.select()}else a.getSelection().selectElement(c);a.focus()}function m(){n&&n.setHtml('\x3cspan class\x3d"cke_path_empty"\x3e\x26nbsp;\x3c/span\x3e');delete k.list}var p=a.ui.spaceId("path"),n,k=a._.elementsPath,q=k.idBase;d.html+='\x3cspan id\x3d"'+p+'_label" class\x3d"cke_voice_label"\x3e'+a.lang.elementspath.eleLabel+'\x3c/span\x3e\x3cspan id\x3d"'+ 687function(a){b.ui.space("resizer")[a.data==CKEDITOR.TRISTATE_ON?"hide":"show"]()})}}});(function(){var c='\x3ca id\x3d"{id}" class\x3d"cke_button cke_button__{name} cke_button_{state} {cls}"'+(CKEDITOR.env.gecko&&!CKEDITOR.env.hc?"":" href\x3d\"javascript:void('{titleJs}')\"")+' title\x3d"{title}" tabindex\x3d"-1" hidefocus\x3d"true" role\x3d"button" aria-labelledby\x3d"{id}_label" aria-describedby\x3d"{id}_description" aria-haspopup\x3d"{hasArrow}" aria-disabled\x3d"{ariaDisabled}"';CKEDITOR.env.gecko&&CKEDITOR.env.mac&&(c+=' onkeypress\x3d"return false;"');CKEDITOR.env.gecko&&(c+=
651p+'" class\x3d"cke_path" role\x3d"group" aria-labelledby\x3d"'+p+'_label"\x3e\x3cspan class\x3d"cke_path_empty"\x3e\x26nbsp;\x3c/span\x3e\x3c/span\x3e';a.on("uiReady",function(){var c=a.ui.space("path");c&&a.focusManager.add(c,1)});k.onClick=l;var v=CKEDITOR.tools.addFunction(l),w=CKEDITOR.tools.addFunction(function(c,e){var g=k.idBase,b;e=new CKEDITOR.dom.event(e);b="rtl"==a.lang.dir;switch(e.getKeystroke()){case b?39:37:case 9:return(b=CKEDITOR.document.getById(g+(c+1)))||(b=CKEDITOR.document.getById(g+ 688' onblur\x3d"this.style.cssText \x3d this.style.cssText;"');var c=c+(' onkeydown\x3d"return CKEDITOR.tools.callFunction({keydownFn},event);" onfocus\x3d"return CKEDITOR.tools.callFunction({focusFn},event);" '+(CKEDITOR.env.ie?'onclick\x3d"return false;" onmouseup':"onclick")+'\x3d"CKEDITOR.tools.callFunction({clickFn},this);return false;"\x3e\x3cspan class\x3d"cke_button_icon cke_button__{iconName}_icon" style\x3d"{style}"'),c=c+'\x3e\x26nbsp;\x3c/span\x3e\x3cspan id\x3d"{id}_label" class\x3d"cke_button_label cke_button__{name}_label" aria-hidden\x3d"false"\x3e{label}\x3c/span\x3e\x3cspan id\x3d"{id}_description" class\x3d"cke_button_label" aria-hidden\x3d"false"\x3e{ariaShortcut}\x3c/span\x3e{arrowHtml}\x3c/a\x3e',
652"0")),b.focus(),!1;case b?37:39:case CKEDITOR.SHIFT+9:return(b=CKEDITOR.document.getById(g+(c-1)))||(b=CKEDITOR.document.getById(g+(k.list.length-1))),b.focus(),!1;case 27:return a.focus(),!1;case 13:case 32:return l(c),!1}return!0});a.on("selectionChange",function(){for(var c=[],e=k.list=[],g=[],b=k.filters,d=!0,l=a.elementPath().elements,f,u=l.length;u--;){var h=l[u],r=0;f=h.data("cke-display-name")?h.data("cke-display-name"):h.data("cke-real-element-type")?h.data("cke-real-element-type"):h.getName(); 689t=CKEDITOR.addTemplate("buttonArrow",'\x3cspan class\x3d"cke_button_arrow"\x3e'+(CKEDITOR.env.hc?"\x26#9660;":"")+"\x3c/span\x3e"),u=CKEDITOR.addTemplate("button",c);CKEDITOR.plugins.add("button",{beforeInit:function(a){a.ui.addHandler(CKEDITOR.UI_BUTTON,CKEDITOR.ui.button.handler)}});CKEDITOR.UI_BUTTON="button";CKEDITOR.ui.button=function(a){CKEDITOR.tools.extend(this,a,{title:a.label,click:a.click||function(b){b.execCommand(a.command)}});this._={}};CKEDITOR.ui.button.handler={create:function(a){return new CKEDITOR.ui.button(a)}};
653(d=h.hasAttribute("contenteditable")?"true"==h.getAttribute("contenteditable"):d)||h.hasAttribute("contenteditable")||(r=1);for(var t=0;t<b.length;t++){var m=b[t](h,f);if(!1===m){r=1;break}f=m||f}r||(e.unshift(h),g.unshift(f))}e=e.length;for(b=0;b<e;b++)f=g[b],d=a.lang.elementspath.eleTitle.replace(/%1/,f),f=x.output({id:q+b,label:d,text:f,jsTitle:"javascript:void('"+f+"')",index:b,keyDownFn:w,clickFn:v}),c.unshift(f);n||(n=CKEDITOR.document.getById(p));g=n;g.setHtml(c.join("")+'\x3cspan class\x3d"cke_path_empty"\x3e\x26nbsp;\x3c/span\x3e'); 690CKEDITOR.ui.button.prototype={render:function(a,b){function c(){var f=a.mode;f&&(f=this.modes[f]?void 0!==m[f]?m[f]:CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED,f=a.readOnly&&!this.readOnly?CKEDITOR.TRISTATE_DISABLED:f,this.setState(f),this.refresh&&this.refresh())}var n=CKEDITOR.env,p=this._.id=CKEDITOR.tools.getNextId(),g="",d=this.command,q,k,h;this._.editor=a;var e={id:p,button:this,editor:a,focus:function(){CKEDITOR.document.getById(p).focus()},execute:function(){this.button.click(a)},attach:function(a){this.button.attach(a)}},
654a.fire("elementsPathUpdate",{space:g})});a.on("readOnly",m);a.on("contentDomUnload",m);a.addCommand("elementsPathFocus",y.toolbarFocus);a.setKeystroke(CKEDITOR.ALT+122,"elementsPathFocus")}var y={toolbarFocus:{editorFocus:!1,readOnly:1,exec:function(a){(a=CKEDITOR.document.getById(a._.elementsPath.idBase+"0"))&&a.focus(CKEDITOR.env.ie||CKEDITOR.env.air)}}},d="";CKEDITOR.env.gecko&&CKEDITOR.env.mac&&(d+=' onkeypress\x3d"return false;"');CKEDITOR.env.gecko&&(d+=' onblur\x3d"this.style.cssText \x3d this.style.cssText;"'); 691v=CKEDITOR.tools.addFunction(function(a){if(e.onkey)return a=new CKEDITOR.dom.event(a),!1!==e.onkey(e,a.getKeystroke())}),w=CKEDITOR.tools.addFunction(function(a){var b;e.onfocus&&(b=!1!==e.onfocus(e,new CKEDITOR.dom.event(a)));return b}),r=0;e.clickFn=q=CKEDITOR.tools.addFunction(function(){r&&(a.unlockSelection(1),r=0);e.execute();n.iOS&&a.focus()});if(this.modes){var m={};a.on("beforeModeUnload",function(){a.mode&&this._.state!=CKEDITOR.TRISTATE_DISABLED&&(m[a.mode]=this._.state)},this);a.on("activeFilterChange",
655var x=CKEDITOR.addTemplate("pathItem",'\x3ca id\x3d"{id}" href\x3d"{jsTitle}" tabindex\x3d"-1" class\x3d"cke_path_item" title\x3d"{label}"'+d+' hidefocus\x3d"true" onkeydown\x3d"return CKEDITOR.tools.callFunction({keyDownFn},{index}, event );" onclick\x3d"CKEDITOR.tools.callFunction({clickFn},{index}); return false;" role\x3d"button" aria-label\x3d"{label}"\x3e{text}\x3c/a\x3e');CKEDITOR.plugins.add("elementspath",{init:function(a){a._.elementsPath={idBase:"cke_elementspath_"+CKEDITOR.tools.getNextNumber()+ 692c,this);a.on("mode",c,this);!this.readOnly&&a.on("readOnly",c,this)}else d&&(d=a.getCommand(d))&&(d.on("state",function(){this.setState(d.state)},this),g+=d.state==CKEDITOR.TRISTATE_ON?"on":d.state==CKEDITOR.TRISTATE_DISABLED?"disabled":"off");if(this.directional)a.on("contentDirChanged",function(b){var c=CKEDITOR.document.getById(this._.id),d=c.getFirst();b=b.data;b!=a.lang.dir?c.addClass("cke_"+b):c.removeClass("cke_ltr").removeClass("cke_rtl");d.setAttribute("style",CKEDITOR.skin.getIconStyle(l,
656"_",filters:[]};a.on("uiSpace",function(d){"bottom"==d.data.space&&q(a,d.data)})}})})();(function(){function q(b,d,a){a=b.config.forceEnterMode||a;"wysiwyg"==b.mode&&(d||(d=b.activeEnterMode),b.elementPath().isContextFor("p")||(d=CKEDITOR.ENTER_BR,a=1),b.fire("saveSnapshot"),d==CKEDITOR.ENTER_BR?t(b,d,null,a):u(b,d,null,a),b.fire("saveSnapshot"))}function v(b){b=b.getSelection().getRanges(!0);for(var d=b.length-1;0<d;d--)b[d].deleteContents();return b[0]}function y(b){var d=b.startContainer.getAscendant(function(a){return a.type==CKEDITOR.NODE_ELEMENT&&"true"==a.getAttribute("contenteditable")}, 693"rtl"==b,this.icon,this.iconOffset))},this);d?(k=a.getCommandKeystroke(d))&&(h=CKEDITOR.tools.keystrokeToString(a.lang.common.keyboard,k)):g+="off";var l=k=this.name||this.command;this.icon&&!/\./.test(this.icon)&&(l=this.icon,this.icon=null);g={id:p,name:k,iconName:l,label:this.label,cls:this.className||"",state:g,ariaDisabled:"disabled"==g?"true":"false",title:this.title+(h?" ("+h.display+")":""),ariaShortcut:h?a.lang.common.keyboardShortcut+" "+h.aria:"",titleJs:n.gecko&&!n.hc?"":(this.title||
694"").replace("'",""),hasArrow:this.hasArrow?"true":"false",keydownFn:v,focusFn:w,clickFn:q,style:CKEDITOR.skin.getIconStyle(l,"rtl"==a.lang.dir,this.icon,this.iconOffset),arrowHtml:this.hasArrow?t.output():""};u.output(g,b);if(this.onRender)this.onRender();return e},setState:function(a){if(this._.state==a)return!1;this._.state=a;var b=CKEDITOR.document.getById(this._.id);return b?(b.setState(a,"cke_button"),a==CKEDITOR.TRISTATE_DISABLED?b.setAttribute("aria-disabled",!0):b.removeAttribute("aria-disabled"),
695this.hasArrow?(a=a==CKEDITOR.TRISTATE_ON?this._.editor.lang.button.selectedLabel.replace(/%1/g,this.label):this.label,CKEDITOR.document.getById(this._.id+"_label").setText(a)):a==CKEDITOR.TRISTATE_ON?b.setAttribute("aria-pressed",!0):b.removeAttribute("aria-pressed"),!0):!1},getState:function(){return this._.state},toFeature:function(a){if(this._.feature)return this._.feature;var b=this;this.allowedContent||this.requiredContent||!this.command||(b=a.getCommand(this.command)||b);return this._.feature=
696b}};CKEDITOR.ui.prototype.addButton=function(a,b){this.add(a,CKEDITOR.UI_BUTTON,b)}})();(function(){function D(a){function d(){for(var b=f(),e=CKEDITOR.tools.clone(a.config.toolbarGroups)||v(a),n=0;n<e.length;n++){var g=e[n];if("/"!=g){"string"==typeof g&&(g=e[n]={name:g});var l,d=g.groups;if(d)for(var h=0;h<d.length;h++)l=d[h],(l=b[l])&&c(g,l);(l=b[g.name])&&c(g,l)}}return e}function f(){var b={},c,e,g;for(c in a.ui.items)e=a.ui.items[c],g=e.toolbar||"others",g=g.split(","),e=g[0],g=parseInt(g[1]||-1,10),b[e]||(b[e]=[]),b[e].push({name:c,order:g});for(e in b)b[e]=b[e].sort(function(b,
697a){return b.order==a.order?0:0>a.order?-1:0>b.order?1:b.order<a.order?-1:1});return b}function c(c,e){if(e.length){c.items?c.items.push(a.ui.create("-")):c.items=[];for(var d;d=e.shift();)d="string"==typeof d?d:d.name,b&&-1!=CKEDITOR.tools.indexOf(b,d)||(d=a.ui.create(d))&&a.addFeature(d)&&c.items.push(d)}}function h(b){var a=[],e,d,h;for(e=0;e<b.length;++e)d=b[e],h={},"/"==d?a.push(d):CKEDITOR.tools.isArray(d)?(c(h,CKEDITOR.tools.clone(d)),a.push(h)):d.items&&(c(h,CKEDITOR.tools.clone(d.items)),
698h.name=d.name,a.push(h));return a}var b=a.config.removeButtons,b=b&&b.split(","),e=a.config.toolbar;"string"==typeof e&&(e=a.config["toolbar_"+e]);return a.toolbar=e?h(e):d()}function v(a){return a._.toolbarGroups||(a._.toolbarGroups=[{name:"document",groups:["mode","document","doctools"]},{name:"clipboard",groups:["clipboard","undo"]},{name:"editing",groups:["find","selection","spellchecker"]},{name:"forms"},"/",{name:"basicstyles",groups:["basicstyles","cleanup"]},{name:"paragraph",groups:["list",
699"indent","blocks","align","bidi"]},{name:"links"},{name:"insert"},"/",{name:"styles"},{name:"colors"},{name:"tools"},{name:"others"},{name:"about"}])}var z=function(){this.toolbars=[];this.focusCommandExecuted=!1};z.prototype.focus=function(){for(var a=0,d;d=this.toolbars[a++];)for(var f=0,c;c=d.items[f++];)if(c.focus){c.focus();return}};var E={modes:{wysiwyg:1,source:1},readOnly:1,exec:function(a){a.toolbox&&(a.toolbox.focusCommandExecuted=!0,CKEDITOR.env.ie||CKEDITOR.env.air?setTimeout(function(){a.toolbox.focus()},
700100):a.toolbox.focus())}};CKEDITOR.plugins.add("toolbar",{requires:"button",init:function(a){var d,f=function(c,h){var b,e="rtl"==a.lang.dir,k=a.config.toolbarGroupCycling,q=e?37:39,e=e?39:37,k=void 0===k||k;switch(h){case 9:case CKEDITOR.SHIFT+9:for(;!b||!b.items.length;)if(b=9==h?(b?b.next:c.toolbar.next)||a.toolbox.toolbars[0]:(b?b.previous:c.toolbar.previous)||a.toolbox.toolbars[a.toolbox.toolbars.length-1],b.items.length)for(c=b.items[d?b.items.length-1:0];c&&!c.focus;)(c=d?c.previous:c.next)||
701(b=0);c&&c.focus();return!1;case q:b=c;do b=b.next,!b&&k&&(b=c.toolbar.items[0]);while(b&&!b.focus);b?b.focus():f(c,9);return!1;case 40:return c.button&&c.button.hasArrow?c.execute():f(c,40==h?q:e),!1;case e:case 38:b=c;do b=b.previous,!b&&k&&(b=c.toolbar.items[c.toolbar.items.length-1]);while(b&&!b.focus);b?b.focus():(d=1,f(c,CKEDITOR.SHIFT+9),d=0);return!1;case 27:return a.focus(),!1;case 13:case 32:return c.execute(),!1}return!0};a.on("uiSpace",function(c){if(c.data.space==a.config.toolbarLocation){c.removeListener();
702a.toolbox=new z;var d=CKEDITOR.tools.getNextId(),b=['\x3cspan id\x3d"',d,'" class\x3d"cke_voice_label"\x3e',a.lang.toolbar.toolbars,"\x3c/span\x3e",'\x3cspan id\x3d"'+a.ui.spaceId("toolbox")+'" class\x3d"cke_toolbox" role\x3d"group" aria-labelledby\x3d"',d,'" onmousedown\x3d"return false;"\x3e'],d=!1!==a.config.toolbarStartupExpanded,e,k;a.config.toolbarCanCollapse&&a.elementMode!=CKEDITOR.ELEMENT_MODE_INLINE&&b.push('\x3cspan class\x3d"cke_toolbox_main"'+(d?"\x3e":' style\x3d"display:none"\x3e'));
703for(var q=a.toolbox.toolbars,n=D(a),g=n.length,l=0;l<g;l++){var r,m=0,w,p=n[l],v="/"!==p&&("/"===n[l+1]||l==g-1),x;if(p)if(e&&(b.push("\x3c/span\x3e"),k=e=0),"/"===p)b.push('\x3cspan class\x3d"cke_toolbar_break"\x3e\x3c/span\x3e');else{x=p.items||p;for(var y=0;y<x.length;y++){var t=x[y],A;if(t){var B=function(c){c=c.render(a,b);u=m.items.push(c)-1;0<u&&(c.previous=m.items[u-1],c.previous.next=c);c.toolbar=m;c.onkey=f;c.onfocus=function(){a.toolbox.focusCommandExecuted||a.focus()}};if(t.type==CKEDITOR.UI_SEPARATOR)k=
704e&&t;else{A=!1!==t.canGroup;if(!m){r=CKEDITOR.tools.getNextId();m={id:r,items:[]};w=p.name&&(a.lang.toolbar.toolbarGroups[p.name]||p.name);b.push('\x3cspan id\x3d"',r,'" class\x3d"cke_toolbar'+(v?' cke_toolbar_last"':'"'),w?' aria-labelledby\x3d"'+r+'_label"':"",' role\x3d"toolbar"\x3e');w&&b.push('\x3cspan id\x3d"',r,'_label" class\x3d"cke_voice_label"\x3e',w,"\x3c/span\x3e");b.push('\x3cspan class\x3d"cke_toolbar_start"\x3e\x3c/span\x3e');var u=q.push(m)-1;0<u&&(m.previous=q[u-1],m.previous.next=
705m)}A?e||(b.push('\x3cspan class\x3d"cke_toolgroup" role\x3d"presentation"\x3e'),e=1):e&&(b.push("\x3c/span\x3e"),e=0);k&&(B(k),k=0);B(t)}}}e&&(b.push("\x3c/span\x3e"),k=e=0);m&&b.push('\x3cspan class\x3d"cke_toolbar_end"\x3e\x3c/span\x3e\x3c/span\x3e')}}a.config.toolbarCanCollapse&&b.push("\x3c/span\x3e");if(a.config.toolbarCanCollapse&&a.elementMode!=CKEDITOR.ELEMENT_MODE_INLINE){var C=CKEDITOR.tools.addFunction(function(){a.execCommand("toolbarCollapse")});a.on("destroy",function(){CKEDITOR.tools.removeFunction(C)});
706a.addCommand("toolbarCollapse",{readOnly:1,exec:function(b){var a=b.ui.space("toolbar_collapser"),c=a.getPrevious(),d=b.ui.space("contents"),e=c.getParent(),h=parseInt(d.$.style.height,10),g=e.$.offsetHeight,f=a.hasClass("cke_toolbox_collapser_min");f?(c.show(),a.removeClass("cke_toolbox_collapser_min"),a.setAttribute("title",b.lang.toolbar.toolbarCollapse)):(c.hide(),a.addClass("cke_toolbox_collapser_min"),a.setAttribute("title",b.lang.toolbar.toolbarExpand));a.getFirst().setText(f?"▲":"◀");d.setStyle("height",
707h-(e.$.offsetHeight-g)+"px");b.fire("resize",{outerHeight:b.container.$.offsetHeight,contentsHeight:d.$.offsetHeight,outerWidth:b.container.$.offsetWidth})},modes:{wysiwyg:1,source:1}});a.setKeystroke(CKEDITOR.ALT+(CKEDITOR.env.ie||CKEDITOR.env.webkit?189:109),"toolbarCollapse");b.push('\x3ca title\x3d"'+(d?a.lang.toolbar.toolbarCollapse:a.lang.toolbar.toolbarExpand)+'" id\x3d"'+a.ui.spaceId("toolbar_collapser")+'" tabIndex\x3d"-1" class\x3d"cke_toolbox_collapser');d||b.push(" cke_toolbox_collapser_min");
708b.push('" onclick\x3d"CKEDITOR.tools.callFunction('+C+')"\x3e','\x3cspan class\x3d"cke_arrow"\x3e\x26#9650;\x3c/span\x3e',"\x3c/a\x3e")}b.push("\x3c/span\x3e");c.data.html+=b.join("")}});a.on("destroy",function(){if(this.toolbox){var a,d=0,b,e,f;for(a=this.toolbox.toolbars;d<a.length;d++)for(e=a[d].items,b=0;b<e.length;b++)f=e[b],f.clickFn&&CKEDITOR.tools.removeFunction(f.clickFn),f.keyDownFn&&CKEDITOR.tools.removeFunction(f.keyDownFn)}});a.on("uiReady",function(){var c=a.ui.space("toolbox");c&&a.focusManager.add(c,
7091)});a.addCommand("toolbarFocus",E);a.setKeystroke(CKEDITOR.ALT+121,"toolbarFocus");a.ui.add("-",CKEDITOR.UI_SEPARATOR,{});a.ui.addHandler(CKEDITOR.UI_SEPARATOR,{create:function(){return{render:function(a,d){d.push('\x3cspan class\x3d"cke_toolbar_separator" role\x3d"separator"\x3e\x3c/span\x3e');return{}}}}})}});CKEDITOR.ui.prototype.addToolbarGroup=function(a,d,f){var c=v(this.editor),h=0===d,b={name:a};if(f){if(f=CKEDITOR.tools.search(c,function(a){return a.name==f})){!f.groups&&(f.groups=[]);if(d&&
710(d=CKEDITOR.tools.indexOf(f.groups,d),0<=d)){f.groups.splice(d+1,0,a);return}h?f.groups.splice(0,0,a):f.groups.push(a);return}d=null}d&&(d=CKEDITOR.tools.indexOf(c,function(a){return a.name==d}));h?c.splice(0,0,a):"number"==typeof d?c.splice(d+1,0,b):c.push(a)}})();CKEDITOR.UI_SEPARATOR="separator";CKEDITOR.config.toolbarLocation="top";(function(){function q(a,e){function l(c){c=k.list[c];var d;c.equals(a.editable())||"true"==c.getAttribute("contenteditable")?(d=a.createRange(),d.selectNodeContents(c),d=d.select()):(d=a.getSelection(),d.selectElement(c));CKEDITOR.env.ie&&a.fire("selectionChange",{selection:d,path:new CKEDITOR.dom.elementPath(c)});a.focus()}function m(){n&&n.setHtml('\x3cspan class\x3d"cke_path_empty"\x3e\x26nbsp;\x3c/span\x3e');delete k.list}var p=a.ui.spaceId("path"),n,k=a._.elementsPath,q=k.idBase;e.html+='\x3cspan id\x3d"'+
711p+'_label" class\x3d"cke_voice_label"\x3e'+a.lang.elementspath.eleLabel+'\x3c/span\x3e\x3cspan id\x3d"'+p+'" class\x3d"cke_path" role\x3d"group" aria-labelledby\x3d"'+p+'_label"\x3e\x3cspan class\x3d"cke_path_empty"\x3e\x26nbsp;\x3c/span\x3e\x3c/span\x3e';a.on("uiReady",function(){var c=a.ui.space("path");c&&a.focusManager.add(c,1)});k.onClick=l;var v=CKEDITOR.tools.addFunction(l),w=CKEDITOR.tools.addFunction(function(c,d){var g=k.idBase,b;d=new CKEDITOR.dom.event(d);b="rtl"==a.lang.dir;switch(d.getKeystroke()){case b?
71239:37:case 9:return(b=CKEDITOR.document.getById(g+(c+1)))||(b=CKEDITOR.document.getById(g+"0")),b.focus(),!1;case b?37:39:case CKEDITOR.SHIFT+9:return(b=CKEDITOR.document.getById(g+(c-1)))||(b=CKEDITOR.document.getById(g+(k.list.length-1))),b.focus(),!1;case 27:return a.focus(),!1;case 13:case 32:return l(c),!1}return!0});a.on("selectionChange",function(){for(var c=[],d=k.list=[],g=[],b=k.filters,e=!0,l=a.elementPath().elements,f,u=l.length;u--;){var h=l[u],r=0;f=h.data("cke-display-name")?h.data("cke-display-name"):
713h.data("cke-real-element-type")?h.data("cke-real-element-type"):h.getName();(e=h.hasAttribute("contenteditable")?"true"==h.getAttribute("contenteditable"):e)||h.hasAttribute("contenteditable")||(r=1);for(var t=0;t<b.length;t++){var m=b[t](h,f);if(!1===m){r=1;break}f=m||f}r||(d.unshift(h),g.unshift(f))}d=d.length;for(b=0;b<d;b++)f=g[b],e=a.lang.elementspath.eleTitle.replace(/%1/,f),f=x.output({id:q+b,label:e,text:f,jsTitle:"javascript:void('"+f+"')",index:b,keyDownFn:w,clickFn:v}),c.unshift(f);n||
714(n=CKEDITOR.document.getById(p));g=n;g.setHtml(c.join("")+'\x3cspan class\x3d"cke_path_empty"\x3e\x26nbsp;\x3c/span\x3e');a.fire("elementsPathUpdate",{space:g})});a.on("readOnly",m);a.on("contentDomUnload",m);a.addCommand("elementsPathFocus",y.toolbarFocus);a.setKeystroke(CKEDITOR.ALT+122,"elementsPathFocus")}var y={toolbarFocus:{editorFocus:!1,readOnly:1,exec:function(a){(a=CKEDITOR.document.getById(a._.elementsPath.idBase+"0"))&&a.focus(CKEDITOR.env.ie||CKEDITOR.env.air)}}},e="";CKEDITOR.env.gecko&&
715CKEDITOR.env.mac&&(e+=' onkeypress\x3d"return false;"');CKEDITOR.env.gecko&&(e+=' onblur\x3d"this.style.cssText \x3d this.style.cssText;"');var x=CKEDITOR.addTemplate("pathItem",'\x3ca id\x3d"{id}" href\x3d"{jsTitle}" tabindex\x3d"-1" class\x3d"cke_path_item" title\x3d"{label}"'+e+' hidefocus\x3d"true" onkeydown\x3d"return CKEDITOR.tools.callFunction({keyDownFn},{index}, event );" onclick\x3d"CKEDITOR.tools.callFunction({clickFn},{index}); return false;" role\x3d"button" aria-label\x3d"{label}"\x3e{text}\x3c/a\x3e');
716CKEDITOR.plugins.add("elementspath",{init:function(a){a._.elementsPath={idBase:"cke_elementspath_"+CKEDITOR.tools.getNextNumber()+"_",filters:[]};a.on("uiSpace",function(e){"bottom"==e.data.space&&q(a,e.data)})}})})();(function(){function q(b,d,a){a=b.config.forceEnterMode||a;if("wysiwyg"==b.mode){d||(d=b.activeEnterMode);var h=b.elementPath();h&&!h.isContextFor("p")&&(d=CKEDITOR.ENTER_BR,a=1);b.fire("saveSnapshot");d==CKEDITOR.ENTER_BR?t(b,d,null,a):u(b,d,null,a);b.fire("saveSnapshot")}}function v(b){b=b.getSelection().getRanges(!0);for(var d=b.length-1;0<d;d--)b[d].deleteContents();return b[0]}function y(b){var d=b.startContainer.getAscendant(function(a){return a.type==CKEDITOR.NODE_ELEMENT&&"true"==a.getAttribute("contenteditable")},
657!0);if(b.root.equals(d))return b;d=new CKEDITOR.dom.range(d);d.moveToRange(b);return d}CKEDITOR.plugins.add("enterkey",{init:function(b){b.addCommand("enter",{modes:{wysiwyg:1},editorFocus:!1,exec:function(b){q(b)}});b.addCommand("shiftEnter",{modes:{wysiwyg:1},editorFocus:!1,exec:function(b){q(b,b.activeShiftEnterMode,1)}});b.setKeystroke([[13,"enter"],[CKEDITOR.SHIFT+13,"shiftEnter"]])}});var z=CKEDITOR.dom.walker.whitespaces(),A=CKEDITOR.dom.walker.bookmark();CKEDITOR.plugins.enterkey={enterBlock:function(b, 717!0);if(b.root.equals(d))return b;d=new CKEDITOR.dom.range(d);d.moveToRange(b);return d}CKEDITOR.plugins.add("enterkey",{init:function(b){b.addCommand("enter",{modes:{wysiwyg:1},editorFocus:!1,exec:function(b){q(b)}});b.addCommand("shiftEnter",{modes:{wysiwyg:1},editorFocus:!1,exec:function(b){q(b,b.activeShiftEnterMode,1)}});b.setKeystroke([[13,"enter"],[CKEDITOR.SHIFT+13,"shiftEnter"]])}});var z=CKEDITOR.dom.walker.whitespaces(),A=CKEDITOR.dom.walker.bookmark();CKEDITOR.plugins.enterkey={enterBlock:function(b,
658d,a,h){if(a=a||v(b)){a=y(a);var f=a.document,k=a.checkStartOfBlock(),m=a.checkEndOfBlock(),l=b.elementPath(a.startContainer),c=l.block,n=d==CKEDITOR.ENTER_DIV?"div":"p",e;if(k&&m){if(c&&(c.is("li")||c.getParent().is("li"))){c.is("li")||(c=c.getParent());a=c.getParent();e=a.getParent();h=!c.hasPrevious();var p=!c.hasNext(),n=b.getSelection(),g=n.createBookmarks(),k=c.getDirection(1),m=c.getAttribute("class"),r=c.getAttribute("style"),q=e.getDirection(1)!=k;b=b.enterMode!=CKEDITOR.ENTER_BR||q||r||m; 718d,a,h){if(a=a||v(b)){a=y(a);var f=a.document,k=a.checkStartOfBlock(),m=a.checkEndOfBlock(),l=b.elementPath(a.startContainer),c=l.block,n=d==CKEDITOR.ENTER_DIV?"div":"p",e;if(k&&m){if(c&&(c.is("li")||c.getParent().is("li"))){c.is("li")||(c=c.getParent());a=c.getParent();e=a.getParent();h=!c.hasPrevious();var p=!c.hasNext(),n=b.getSelection(),g=n.createBookmarks(),k=c.getDirection(1),m=c.getAttribute("class"),r=c.getAttribute("style"),q=e.getDirection(1)!=k;b=b.enterMode!=CKEDITOR.ENTER_BR||q||r||m;
659if(e.is("li"))h||p?(h&&p&&a.remove(),c[p?"insertAfter":"insertBefore"](e)):c.breakParent(e);else{if(b)if(l.block.is("li")?(e=f.createElement(d==CKEDITOR.ENTER_P?"p":"div"),q&&e.setAttribute("dir",k),r&&e.setAttribute("style",r),m&&e.setAttribute("class",m),c.moveChildren(e)):e=l.block,h||p)e[h?"insertBefore":"insertAfter"](a);else c.breakParent(a),e.insertAfter(a);else if(c.appendBogus(!0),h||p)for(;f=c[h?"getFirst":"getLast"]();)f[h?"insertBefore":"insertAfter"](a);else for(c.breakParent(a);f=c.getLast();)f.insertAfter(a); 719if(e.is("li"))h||p?(h&&p&&a.remove(),c[p?"insertAfter":"insertBefore"](e)):c.breakParent(e);else{if(b)if(l.block.is("li")?(e=f.createElement(d==CKEDITOR.ENTER_P?"p":"div"),q&&e.setAttribute("dir",k),r&&e.setAttribute("style",r),m&&e.setAttribute("class",m),c.moveChildren(e)):e=l.block,h||p)e[h?"insertBefore":"insertAfter"](a);else c.breakParent(a),e.insertAfter(a);else if(c.appendBogus(!0),h||p)for(;f=c[h?"getFirst":"getLast"]();)f[h?"insertBefore":"insertAfter"](a);else for(c.breakParent(a);f=c.getLast();)f.insertAfter(a);
@@ -685,27 +745,20 @@ h=CKEDITOR.addTemplate("panel-list-group",'\x3ch1 id\x3d"{id}" class\x3d"cke_pan
685(this._.click=CKEDITOR.tools.addFunction(function(a){var b=this.toggle(a);if(this.onClick)this.onClick(a,b)},this));return this._.click}},proto:{add:function(a,b,c){var d=CKEDITOR.tools.getNextId();this._.started||(this._.started=1,this._.size=this._.size||0);this._.items[a]=d;var e;e=CKEDITOR.tools.htmlEncodeAttr(a).replace(k,"\\'");a={id:d,val:e,onclick:CKEDITOR.env.ie?'onclick\x3d"return false;" onmouseup':"onclick",clickFn:this._.getClick(),title:CKEDITOR.tools.htmlEncodeAttr(c||a),text:b||a}; 745(this._.click=CKEDITOR.tools.addFunction(function(a){var b=this.toggle(a);if(this.onClick)this.onClick(a,b)},this));return this._.click}},proto:{add:function(a,b,c){var d=CKEDITOR.tools.getNextId();this._.started||(this._.started=1,this._.size=this._.size||0);this._.items[a]=d;var e;e=CKEDITOR.tools.htmlEncodeAttr(a).replace(k,"\\'");a={id:d,val:e,onclick:CKEDITOR.env.ie?'onclick\x3d"return false;" onmouseup':"onclick",clickFn:this._.getClick(),title:CKEDITOR.tools.htmlEncodeAttr(c||a),text:b||a};
686this._.pendingList.push(g.output(a))},startGroup:function(a){this._.close();var b=CKEDITOR.tools.getNextId();this._.groups[a]=b;this._.pendingHtml.push(h.output({id:b,label:a}))},commit:function(){this._.close();this.element.appendHtml(this._.pendingHtml.join(""));delete this._.size;this._.pendingHtml=[]},toggle:function(a){var b=this.isMarked(a);b?this.unmark(a):this.mark(a);return!b},hideGroup:function(a){var b=(a=this.element.getDocument().getById(this._.groups[a]))&&a.getNext();a&&(a.setStyle("display", 746this._.pendingList.push(g.output(a))},startGroup:function(a){this._.close();var b=CKEDITOR.tools.getNextId();this._.groups[a]=b;this._.pendingHtml.push(h.output({id:b,label:a}))},commit:function(){this._.close();this.element.appendHtml(this._.pendingHtml.join(""));delete this._.size;this._.pendingHtml=[]},toggle:function(a){var b=this.isMarked(a);b?this.unmark(a):this.mark(a);return!b},hideGroup:function(a){var b=(a=this.element.getDocument().getById(this._.groups[a]))&&a.getNext();a&&(a.setStyle("display",
687"none"),b&&"ul"==b.getName()&&b.setStyle("display","none"))},hideItem:function(a){this.element.getDocument().getById(this._.items[a]).setStyle("display","none")},showAll:function(){var a=this._.items,b=this._.groups,c=this.element.getDocument(),d;for(d in a)c.getById(a[d]).setStyle("display","");for(var e in b)a=c.getById(b[e]),d=a.getNext(),a.setStyle("display",""),d&&"ul"==d.getName()&&d.setStyle("display","")},mark:function(a){this.multiSelect||this.unmarkAll();a=this._.items[a];var b=this.element.getDocument().getById(a); 747"none"),b&&"ul"==b.getName()&&b.setStyle("display","none"))},hideItem:function(a){this.element.getDocument().getById(this._.items[a]).setStyle("display","none")},showAll:function(){var a=this._.items,b=this._.groups,c=this.element.getDocument(),d;for(d in a)c.getById(a[d]).setStyle("display","");for(var e in b)a=c.getById(b[e]),d=a.getNext(),a.setStyle("display",""),d&&"ul"==d.getName()&&d.setStyle("display","")},mark:function(a){this.multiSelect||this.unmarkAll();a=this._.items[a];var b=this.element.getDocument().getById(a);
688b.addClass("cke_selected");this.element.getDocument().getById(a+"_option").setAttribute("aria-selected",!0);this.onMark&&this.onMark(b)},unmark:function(a){var b=this.element.getDocument();a=this._.items[a];var c=b.getById(a);c.removeClass("cke_selected");b.getById(a+"_option").removeAttribute("aria-selected");this.onUnmark&&this.onUnmark(c)},unmarkAll:function(){var a=this._.items,b=this.element.getDocument(),c;for(c in a){var d=a[c];b.getById(d).removeClass("cke_selected");b.getById(d+"_option").removeAttribute("aria-selected")}this.onUnmark&& 748b.addClass("cke_selected");this.element.getDocument().getById(a+"_option").setAttribute("aria-selected",!0);this.onMark&&this.onMark(b)},markFirstDisplayed:function(){var a=this;this._.markFirstDisplayed(function(){a.multiSelect||a.unmarkAll()})},unmark:function(a){var b=this.element.getDocument();a=this._.items[a];var c=b.getById(a);c.removeClass("cke_selected");b.getById(a+"_option").removeAttribute("aria-selected");this.onUnmark&&this.onUnmark(c)},unmarkAll:function(){var a=this._.items,b=this.element.getDocument(),
689this.onUnmark()},isMarked:function(a){return this.element.getDocument().getById(this._.items[a]).hasClass("cke_selected")},focus:function(a){this._.focusIndex=-1;var b=this.element.getElementsByTag("a"),c,d=-1;if(a)for(c=this.element.getDocument().getById(this._.items[a]).getFirst();a=b.getItem(++d);){if(a.equals(c)){this._.focusIndex=d;break}}else this.element.focus();c&&setTimeout(function(){c.focus()},0)}}})}});(function(){var c='\x3ca id\x3d"{id}" class\x3d"cke_button cke_button__{name} cke_button_{state} {cls}"'+(CKEDITOR.env.gecko&&!CKEDITOR.env.hc?"":" href\x3d\"javascript:void('{titleJs}')\"")+' title\x3d"{title}" tabindex\x3d"-1" hidefocus\x3d"true" role\x3d"button" aria-labelledby\x3d"{id}_label" aria-haspopup\x3d"{hasArrow}" aria-disabled\x3d"{ariaDisabled}"';CKEDITOR.env.gecko&&CKEDITOR.env.mac&&(c+=' onkeypress\x3d"return false;"');CKEDITOR.env.gecko&&(c+=' onblur\x3d"this.style.cssText \x3d this.style.cssText;"'); 749c;for(c in a){var d=a[c];b.getById(d).removeClass("cke_selected");b.getById(d+"_option").removeAttribute("aria-selected")}this.onUnmark&&this.onUnmark()},isMarked:function(a){return this.element.getDocument().getById(this._.items[a]).hasClass("cke_selected")},focus:function(a){this._.focusIndex=-1;var b=this.element.getElementsByTag("a"),c,d=-1;if(a)for(c=this.element.getDocument().getById(this._.items[a]).getFirst();a=b.getItem(++d);){if(a.equals(c)){this._.focusIndex=d;break}}else this.element.focus();
690var c=c+(' onkeydown\x3d"return CKEDITOR.tools.callFunction({keydownFn},event);" onfocus\x3d"return CKEDITOR.tools.callFunction({focusFn},event);" '+(CKEDITOR.env.ie?'onclick\x3d"return false;" onmouseup':"onclick")+'\x3d"CKEDITOR.tools.callFunction({clickFn},this);return false;"\x3e\x3cspan class\x3d"cke_button_icon cke_button__{iconName}_icon" style\x3d"{style}"'),c=c+'\x3e\x26nbsp;\x3c/span\x3e\x3cspan id\x3d"{id}_label" class\x3d"cke_button_label cke_button__{name}_label" aria-hidden\x3d"false"\x3e{label}\x3c/span\x3e{arrowHtml}\x3c/a\x3e', 750c&&setTimeout(function(){c.focus()},0)}}})}});CKEDITOR.plugins.add("richcombo",{requires:"floatpanel,listblock,button",beforeInit:function(c){c.ui.addHandler(CKEDITOR.UI_RICHCOMBO,CKEDITOR.ui.richCombo.handler)}});
691r=CKEDITOR.addTemplate("buttonArrow",'\x3cspan class\x3d"cke_button_arrow"\x3e'+(CKEDITOR.env.hc?"\x26#9660;":"")+"\x3c/span\x3e"),t=CKEDITOR.addTemplate("button",c);CKEDITOR.plugins.add("button",{beforeInit:function(a){a.ui.addHandler(CKEDITOR.UI_BUTTON,CKEDITOR.ui.button.handler)}});CKEDITOR.UI_BUTTON="button";CKEDITOR.ui.button=function(a){CKEDITOR.tools.extend(this,a,{title:a.label,click:a.click||function(b){b.execCommand(a.command)}});this._={}};CKEDITOR.ui.button.handler={create:function(a){return new CKEDITOR.ui.button(a)}}; 751(function(){var c='\x3cspan id\x3d"{id}" class\x3d"cke_combo cke_combo__{name} {cls}" role\x3d"presentation"\x3e\x3cspan id\x3d"{id}_label" class\x3d"cke_combo_label"\x3e{label}\x3c/span\x3e\x3ca class\x3d"cke_combo_button" title\x3d"{title}" tabindex\x3d"-1"'+(CKEDITOR.env.gecko&&!CKEDITOR.env.hc?"":" href\x3d\"javascript:void('{titleJs}')\"")+' hidefocus\x3d"true" role\x3d"button" aria-labelledby\x3d"{id}_label" aria-haspopup\x3d"true"';CKEDITOR.env.gecko&&CKEDITOR.env.mac&&(c+=' onkeypress\x3d"return false;"');
692CKEDITOR.ui.button.prototype={render:function(a,b){function c(){var e=a.mode;e&&(e=this.modes[e]?void 0!==k[e]?k[e]:CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED,e=a.readOnly&&!this.readOnly?CKEDITOR.TRISTATE_DISABLED:e,this.setState(e),this.refresh&&this.refresh())}var l=CKEDITOR.env,m=this._.id=CKEDITOR.tools.getNextId(),f="",g=this.command,n;this._.editor=a;var d={id:m,button:this,editor:a,focus:function(){CKEDITOR.document.getById(m).focus()},execute:function(){this.button.click(a)},attach:function(a){this.button.attach(a)}}, 752CKEDITOR.env.gecko&&(c+=' onblur\x3d"this.style.cssText \x3d this.style.cssText;"');var c=c+(' onkeydown\x3d"return CKEDITOR.tools.callFunction({keydownFn},event,this);" onfocus\x3d"return CKEDITOR.tools.callFunction({focusFn},event);" '+(CKEDITOR.env.ie?'onclick\x3d"return false;" onmouseup':"onclick")+'\x3d"CKEDITOR.tools.callFunction({clickFn},this);return false;"\x3e\x3cspan id\x3d"{id}_text" class\x3d"cke_combo_text cke_combo_inlinelabel"\x3e{label}\x3c/span\x3e\x3cspan class\x3d"cke_combo_open"\x3e\x3cspan class\x3d"cke_combo_arrow"\x3e'+
693u=CKEDITOR.tools.addFunction(function(a){if(d.onkey)return a=new CKEDITOR.dom.event(a),!1!==d.onkey(d,a.getKeystroke())}),v=CKEDITOR.tools.addFunction(function(a){var b;d.onfocus&&(b=!1!==d.onfocus(d,new CKEDITOR.dom.event(a)));return b}),p=0;d.clickFn=n=CKEDITOR.tools.addFunction(function(){p&&(a.unlockSelection(1),p=0);d.execute();l.iOS&&a.focus()});if(this.modes){var k={};a.on("beforeModeUnload",function(){a.mode&&this._.state!=CKEDITOR.TRISTATE_DISABLED&&(k[a.mode]=this._.state)},this);a.on("activeFilterChange", 753(CKEDITOR.env.hc?"\x26#9660;":CKEDITOR.env.air?"\x26nbsp;":"")+"\x3c/span\x3e\x3c/span\x3e\x3c/a\x3e\x3c/span\x3e"),k=CKEDITOR.addTemplate("combo",c);CKEDITOR.UI_RICHCOMBO="richcombo";CKEDITOR.ui.richCombo=CKEDITOR.tools.createClass({$:function(a){CKEDITOR.tools.extend(this,a,{canGroup:!1,title:a.label,modes:{wysiwyg:1},editorFocus:1});a=this.panel||{};delete this.panel;this.id=CKEDITOR.tools.getNextNumber();this.document=a.parent&&a.parent.getDocument()||CKEDITOR.document;a.className="cke_combopanel";
694c,this);a.on("mode",c,this);!this.readOnly&&a.on("readOnly",c,this)}else g&&(g=a.getCommand(g))&&(g.on("state",function(){this.setState(g.state)},this),f+=g.state==CKEDITOR.TRISTATE_ON?"on":g.state==CKEDITOR.TRISTATE_DISABLED?"disabled":"off");if(this.directional)a.on("contentDirChanged",function(b){var c=CKEDITOR.document.getById(this._.id),d=c.getFirst();b=b.data;b!=a.lang.dir?c.addClass("cke_"+b):c.removeClass("cke_ltr").removeClass("cke_rtl");d.setAttribute("style",CKEDITOR.skin.getIconStyle(h, 754a.block={multiSelect:a.multiSelect,attributes:a.attributes};a.toolbarRelated=!0;this._={panelDefinition:a,items:{}}},proto:{renderHtml:function(a){var b=[];this.render(a,b);return b.join("")},render:function(a,b){function f(){if(this.getState()!=CKEDITOR.TRISTATE_ON){var b=this.modes[a.mode]?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED;a.readOnly&&!this.readOnly&&(b=CKEDITOR.TRISTATE_DISABLED);this.setState(b);this.setValue("");b!=CKEDITOR.TRISTATE_DISABLED&&this.refresh&&this.refresh()}}var c=
695"rtl"==b,this.icon,this.iconOffset))},this);g||(f+="off");var q=this.name||this.command,h=q;this.icon&&!/\./.test(this.icon)&&(h=this.icon,this.icon=null);f={id:m,name:q,iconName:h,label:this.label,cls:this.className||"",state:f,ariaDisabled:"disabled"==f?"true":"false",title:this.title,titleJs:l.gecko&&!l.hc?"":(this.title||"").replace("'",""),hasArrow:this.hasArrow?"true":"false",keydownFn:u,focusFn:v,clickFn:n,style:CKEDITOR.skin.getIconStyle(h,"rtl"==a.lang.dir,this.icon,this.iconOffset),arrowHtml:this.hasArrow? 755CKEDITOR.env,h="cke_"+this.id,e=CKEDITOR.tools.addFunction(function(b){l&&(a.unlockSelection(1),l=0);g.execute(b)},this),d=this,g={id:h,combo:this,focus:function(){CKEDITOR.document.getById(h).getChild(1).focus()},execute:function(b){var c=d._;if(c.state!=CKEDITOR.TRISTATE_DISABLED)if(d.createPanel(a),c.on)c.panel.hide();else{d.commit();var f=d.getValue();f?c.list.mark(f):c.list.unmarkAll();c.panel.showBlock(d.id,new CKEDITOR.dom.element(b),4)}},clickFn:e};a.on("activeFilterChange",f,this);a.on("mode",
696r.output():""};t.output(f,b);if(this.onRender)this.onRender();return d},setState:function(a){if(this._.state==a)return!1;this._.state=a;var b=CKEDITOR.document.getById(this._.id);return b?(b.setState(a,"cke_button"),a==CKEDITOR.TRISTATE_DISABLED?b.setAttribute("aria-disabled",!0):b.removeAttribute("aria-disabled"),this.hasArrow?(a=a==CKEDITOR.TRISTATE_ON?this._.editor.lang.button.selectedLabel.replace(/%1/g,this.label):this.label,CKEDITOR.document.getById(this._.id+"_label").setText(a)):a==CKEDITOR.TRISTATE_ON? 756f,this);a.on("selectionChange",f,this);!this.readOnly&&a.on("readOnly",f,this);var m=CKEDITOR.tools.addFunction(function(a,b){a=new CKEDITOR.dom.event(a);var d=a.getKeystroke();switch(d){case 13:case 32:case 40:CKEDITOR.tools.callFunction(e,b);break;default:g.onkey(g,d)}a.preventDefault()}),n=CKEDITOR.tools.addFunction(function(){g.onfocus&&g.onfocus()}),l=0;g.keyDownFn=m;c={id:h,name:this.name||this.command,label:this.label,title:this.title,cls:this.className||"",titleJs:c.gecko&&!c.hc?"":(this.title||
697b.setAttribute("aria-pressed",!0):b.removeAttribute("aria-pressed"),!0):!1},getState:function(){return this._.state},toFeature:function(a){if(this._.feature)return this._.feature;var b=this;this.allowedContent||this.requiredContent||!this.command||(b=a.getCommand(this.command)||b);return this._.feature=b}};CKEDITOR.ui.prototype.addButton=function(a,b){this.add(a,CKEDITOR.UI_BUTTON,b)}})();CKEDITOR.plugins.add("richcombo",{requires:"floatpanel,listblock,button",beforeInit:function(d){d.ui.addHandler(CKEDITOR.UI_RICHCOMBO,CKEDITOR.ui.richCombo.handler)}}); 757"").replace("'",""),keydownFn:m,focusFn:n,clickFn:e};k.output(c,b);if(this.onRender)this.onRender();return g},createPanel:function(a){if(!this._.panel){var b=this._.panelDefinition,c=this._.panelDefinition.block,k=b.parent||CKEDITOR.document.getBody(),h="cke_combopanel__"+this.name,e=new CKEDITOR.ui.floatPanel(a,k,b),b=e.addListBlock(this.id,c),d=this;e.onShow=function(){this.element.addClass(h);d.setState(CKEDITOR.TRISTATE_ON);d._.on=1;d.editorFocus&&!a.focusManager.hasFocus&&a.focus();if(d.onOpen)d.onOpen()};
698(function(){var d='\x3cspan id\x3d"{id}" class\x3d"cke_combo cke_combo__{name} {cls}" role\x3d"presentation"\x3e\x3cspan id\x3d"{id}_label" class\x3d"cke_combo_label"\x3e{label}\x3c/span\x3e\x3ca class\x3d"cke_combo_button" title\x3d"{title}" tabindex\x3d"-1"'+(CKEDITOR.env.gecko&&!CKEDITOR.env.hc?"":" href\x3d\"javascript:void('{titleJs}')\"")+' hidefocus\x3d"true" role\x3d"button" aria-labelledby\x3d"{id}_label" aria-haspopup\x3d"true"';CKEDITOR.env.gecko&&CKEDITOR.env.mac&&(d+=' onkeypress\x3d"return false;"'); 758e.onHide=function(b){this.element.removeClass(h);d.setState(d.modes&&d.modes[a.mode]?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED);d._.on=0;if(!b&&d.onClose)d.onClose()};e.onEscape=function(){e.hide(1)};b.onClick=function(a,b){d.onClick&&d.onClick.call(d,a,b);e.hide()};this._.panel=e;this._.list=b;e.getBlock(this.id).onHide=function(){d._.on=0;d.setState(CKEDITOR.TRISTATE_OFF)};this.init&&this.init()}},setValue:function(a,b){this._.value=a;var c=this.document.getById("cke_"+this.id+"_text");c&&
699CKEDITOR.env.gecko&&(d+=' onblur\x3d"this.style.cssText \x3d this.style.cssText;"');var d=d+(' onkeydown\x3d"return CKEDITOR.tools.callFunction({keydownFn},event,this);" onfocus\x3d"return CKEDITOR.tools.callFunction({focusFn},event);" '+(CKEDITOR.env.ie?'onclick\x3d"return false;" onmouseup':"onclick")+'\x3d"CKEDITOR.tools.callFunction({clickFn},this);return false;"\x3e\x3cspan id\x3d"{id}_text" class\x3d"cke_combo_text cke_combo_inlinelabel"\x3e{label}\x3c/span\x3e\x3cspan class\x3d"cke_combo_open"\x3e\x3cspan class\x3d"cke_combo_arrow"\x3e'+ 759(a||b?c.removeClass("cke_combo_inlinelabel"):(b=this.label,c.addClass("cke_combo_inlinelabel")),c.setText("undefined"!=typeof b?b:a))},getValue:function(){return this._.value||""},unmarkAll:function(){this._.list.unmarkAll()},mark:function(a){this._.list.mark(a)},hideItem:function(a){this._.list.hideItem(a)},hideGroup:function(a){this._.list.hideGroup(a)},showAll:function(){this._.list.showAll()},add:function(a,b,c){this._.items[a]=c||a;this._.list.add(a,b,c)},startGroup:function(a){this._.list.startGroup(a)},
700(CKEDITOR.env.hc?"\x26#9660;":CKEDITOR.env.air?"\x26nbsp;":"")+"\x3c/span\x3e\x3c/span\x3e\x3c/a\x3e\x3c/span\x3e"),k=CKEDITOR.addTemplate("combo",d);CKEDITOR.UI_RICHCOMBO="richcombo";CKEDITOR.ui.richCombo=CKEDITOR.tools.createClass({$:function(a){CKEDITOR.tools.extend(this,a,{canGroup:!1,title:a.label,modes:{wysiwyg:1},editorFocus:1});a=this.panel||{};delete this.panel;this.id=CKEDITOR.tools.getNextNumber();this.document=a.parent&&a.parent.getDocument()||CKEDITOR.document;a.className="cke_combopanel"; 760commit:function(){this._.committed||(this._.list.commit(),this._.committed=1,CKEDITOR.ui.fire("ready",this));this._.committed=1},setState:function(a){if(this._.state!=a){var b=this.document.getById("cke_"+this.id);b.setState(a,"cke_combo");a==CKEDITOR.TRISTATE_DISABLED?b.setAttribute("aria-disabled",!0):b.removeAttribute("aria-disabled");this._.state=a}},getState:function(){return this._.state},enable:function(){this._.state==CKEDITOR.TRISTATE_DISABLED&&this.setState(this._.lastState)},disable:function(){this._.state!=
701a.block={multiSelect:a.multiSelect,attributes:a.attributes};a.toolbarRelated=!0;this._={panelDefinition:a,items:{}}},proto:{renderHtml:function(a){var b=[];this.render(a,b);return b.join("")},render:function(a,b){function g(){if(this.getState()!=CKEDITOR.TRISTATE_ON){var c=this.modes[a.mode]?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED;a.readOnly&&!this.readOnly&&(c=CKEDITOR.TRISTATE_DISABLED);this.setState(c);this.setValue("");c!=CKEDITOR.TRISTATE_DISABLED&&this.refresh&&this.refresh()}}var d= 761CKEDITOR.TRISTATE_DISABLED&&(this._.lastState=this._.state,this.setState(CKEDITOR.TRISTATE_DISABLED))}},statics:{handler:{create:function(a){return new CKEDITOR.ui.richCombo(a)}}}});CKEDITOR.ui.prototype.addRichCombo=function(a,b){this.add(a,CKEDITOR.UI_RICHCOMBO,b)}})();CKEDITOR.plugins.add("format",{requires:"richcombo",init:function(a){if(!a.blockless){for(var f=a.config,c=a.lang.format,l=f.format_tags.split(";"),d={},m=0,n=[],g=0;g<l.length;g++){var h=l[g],k=new CKEDITOR.style(f["format_"+h]);if(!a.filter.customConfig||a.filter.check(k))m++,d[h]=k,d[h]._.enterMode=a.config.enterMode,n.push(k)}0!==m&&a.ui.addRichCombo("Format",{label:c.label,title:c.panelTitle,toolbar:"styles,20",allowedContent:n,panel:{css:[CKEDITOR.skin.getPath("editor")].concat(f.contentsCss),
702CKEDITOR.env,h="cke_"+this.id,e=CKEDITOR.tools.addFunction(function(b){l&&(a.unlockSelection(1),l=0);c.execute(b)},this),f=this,c={id:h,combo:this,focus:function(){CKEDITOR.document.getById(h).getChild(1).focus()},execute:function(c){var b=f._;if(b.state!=CKEDITOR.TRISTATE_DISABLED)if(f.createPanel(a),b.on)b.panel.hide();else{f.commit();var d=f.getValue();d?b.list.mark(d):b.list.unmarkAll();b.panel.showBlock(f.id,new CKEDITOR.dom.element(c),4)}},clickFn:e};a.on("activeFilterChange",g,this);a.on("mode",
703g,this);a.on("selectionChange",g,this);!this.readOnly&&a.on("readOnly",g,this);var m=CKEDITOR.tools.addFunction(function(b,d){b=new CKEDITOR.dom.event(b);var g=b.getKeystroke();if(40==g)a.once("panelShow",function(a){a.data._.panel._.currentBlock.onKeyDown(40)});switch(g){case 13:case 32:case 40:CKEDITOR.tools.callFunction(e,d);break;default:c.onkey(c,g)}b.preventDefault()}),n=CKEDITOR.tools.addFunction(function(){c.onfocus&&c.onfocus()}),l=0;c.keyDownFn=m;d={id:h,name:this.name||this.command,label:this.label,
704title:this.title,cls:this.className||"",titleJs:d.gecko&&!d.hc?"":(this.title||"").replace("'",""),keydownFn:m,focusFn:n,clickFn:e};k.output(d,b);if(this.onRender)this.onRender();return c},createPanel:function(a){if(!this._.panel){var b=this._.panelDefinition,d=this._.panelDefinition.block,k=b.parent||CKEDITOR.document.getBody(),h="cke_combopanel__"+this.name,e=new CKEDITOR.ui.floatPanel(a,k,b),f=e.addListBlock(this.id,d),c=this;e.onShow=function(){this.element.addClass(h);c.setState(CKEDITOR.TRISTATE_ON);
705c._.on=1;c.editorFocus&&!a.focusManager.hasFocus&&a.focus();if(c.onOpen)c.onOpen();a.once("panelShow",function(){f.focus(!f.multiSelect&&c.getValue())})};e.onHide=function(b){this.element.removeClass(h);c.setState(c.modes&&c.modes[a.mode]?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED);c._.on=0;if(!b&&c.onClose)c.onClose()};e.onEscape=function(){e.hide(1)};f.onClick=function(a,b){c.onClick&&c.onClick.call(c,a,b);e.hide()};this._.panel=e;this._.list=f;e.getBlock(this.id).onHide=function(){c._.on=
7060;c.setState(CKEDITOR.TRISTATE_OFF)};this.init&&this.init()}},setValue:function(a,b){this._.value=a;var d=this.document.getById("cke_"+this.id+"_text");d&&(a||b?d.removeClass("cke_combo_inlinelabel"):(b=this.label,d.addClass("cke_combo_inlinelabel")),d.setText("undefined"!=typeof b?b:a))},getValue:function(){return this._.value||""},unmarkAll:function(){this._.list.unmarkAll()},mark:function(a){this._.list.mark(a)},hideItem:function(a){this._.list.hideItem(a)},hideGroup:function(a){this._.list.hideGroup(a)},
707showAll:function(){this._.list.showAll()},add:function(a,b,d){this._.items[a]=d||a;this._.list.add(a,b,d)},startGroup:function(a){this._.list.startGroup(a)},commit:function(){this._.committed||(this._.list.commit(),this._.committed=1,CKEDITOR.ui.fire("ready",this));this._.committed=1},setState:function(a){if(this._.state!=a){var b=this.document.getById("cke_"+this.id);b.setState(a,"cke_combo");a==CKEDITOR.TRISTATE_DISABLED?b.setAttribute("aria-disabled",!0):b.removeAttribute("aria-disabled");this._.state=
708a}},getState:function(){return this._.state},enable:function(){this._.state==CKEDITOR.TRISTATE_DISABLED&&this.setState(this._.lastState)},disable:function(){this._.state!=CKEDITOR.TRISTATE_DISABLED&&(this._.lastState=this._.state,this.setState(CKEDITOR.TRISTATE_DISABLED))}},statics:{handler:{create:function(a){return new CKEDITOR.ui.richCombo(a)}}}});CKEDITOR.ui.prototype.addRichCombo=function(a,b){this.add(a,CKEDITOR.UI_RICHCOMBO,b)}})();CKEDITOR.plugins.add("format",{requires:"richcombo",init:function(a){if(!a.blockless){for(var f=a.config,c=a.lang.format,l=f.format_tags.split(";"),d={},m=0,n=[],g=0;g<l.length;g++){var h=l[g],k=new CKEDITOR.style(f["format_"+h]);if(!a.filter.customConfig||a.filter.check(k))m++,d[h]=k,d[h]._.enterMode=a.config.enterMode,n.push(k)}0!==m&&a.ui.addRichCombo("Format",{label:c.label,title:c.panelTitle,toolbar:"styles,20",allowedContent:n,panel:{css:[CKEDITOR.skin.getPath("editor")].concat(f.contentsCss),
709multiSelect:!1,attributes:{"aria-label":c.panelTitle}},init:function(){this.startGroup(c.panelTitle);for(var a in d){var e=c["tag_"+a];this.add(a,d[a].buildPreview(e),e)}},onClick:function(b){a.focus();a.fire("saveSnapshot");b=d[b];var e=a.elementPath();a[b.checkActive(e,a)?"removeStyle":"applyStyle"](b);setTimeout(function(){a.fire("saveSnapshot")},0)},onRender:function(){a.on("selectionChange",function(b){var e=this.getValue();b=b.data.path;this.refresh();for(var c in d)if(d[c].checkActive(b,a)){c!= 762multiSelect:!1,attributes:{"aria-label":c.panelTitle}},init:function(){this.startGroup(c.panelTitle);for(var a in d){var e=c["tag_"+a];this.add(a,d[a].buildPreview(e),e)}},onClick:function(b){a.focus();a.fire("saveSnapshot");b=d[b];var e=a.elementPath();a[b.checkActive(e,a)?"removeStyle":"applyStyle"](b);setTimeout(function(){a.fire("saveSnapshot")},0)},onRender:function(){a.on("selectionChange",function(b){var e=this.getValue();b=b.data.path;this.refresh();for(var c in d)if(d[c].checkActive(b,a)){c!=
710e&&this.setValue(c,a.lang.format["tag_"+c]);return}this.setValue("")},this)},onOpen:function(){this.showAll();for(var b in d)a.activeFilter.check(d[b])||this.hideItem(b)},refresh:function(){var b=a.elementPath();if(b){if(b.isContextFor("p"))for(var c in d)if(a.activeFilter.check(d[c]))return;this.setState(CKEDITOR.TRISTATE_DISABLED)}}})}}});CKEDITOR.config.format_tags="p;h1;h2;h3;h4;h5;h6;pre;address;div";CKEDITOR.config.format_p={element:"p"};CKEDITOR.config.format_div={element:"div"}; 763e&&this.setValue(c,a.lang.format["tag_"+c]);return}this.setValue("")},this)},onOpen:function(){this.showAll();for(var b in d)a.activeFilter.check(d[b])||this.hideItem(b)},refresh:function(){var b=a.elementPath();if(b){if(b.isContextFor("p"))for(var c in d)if(a.activeFilter.check(d[c]))return;this.setState(CKEDITOR.TRISTATE_DISABLED)}}})}}});CKEDITOR.config.format_tags="p;h1;h2;h3;h4;h5;h6;pre;address;div";CKEDITOR.config.format_p={element:"p"};CKEDITOR.config.format_div={element:"div"};
711CKEDITOR.config.format_pre={element:"pre"};CKEDITOR.config.format_address={element:"address"};CKEDITOR.config.format_h1={element:"h1"};CKEDITOR.config.format_h2={element:"h2"};CKEDITOR.config.format_h3={element:"h3"};CKEDITOR.config.format_h4={element:"h4"};CKEDITOR.config.format_h5={element:"h5"};CKEDITOR.config.format_h6={element:"h6"};(function(){var b={canUndo:!1,exec:function(a){var b=a.document.createElement("hr");a.insertElement(b)},allowedContent:"hr",requiredContent:"hr"};CKEDITOR.plugins.add("horizontalrule",{init:function(a){a.blockless||(a.addCommand("horizontalrule",b),a.ui.addButton&&a.ui.addButton("HorizontalRule",{label:a.lang.horizontalrule.toolbar,command:"horizontalrule",toolbar:"insert,40"}))}})})();CKEDITOR.plugins.add("htmlwriter",{init:function(b){var a=new CKEDITOR.htmlWriter;a.forceSimpleAmpersand=b.config.forceSimpleAmpersand;a.indentationChars=b.config.dataIndentationChars||"\t";b.dataProcessor.writer=a}}); 764CKEDITOR.config.format_pre={element:"pre"};CKEDITOR.config.format_address={element:"address"};CKEDITOR.config.format_h1={element:"h1"};CKEDITOR.config.format_h2={element:"h2"};CKEDITOR.config.format_h3={element:"h3"};CKEDITOR.config.format_h4={element:"h4"};CKEDITOR.config.format_h5={element:"h5"};CKEDITOR.config.format_h6={element:"h6"};(function(){var b={canUndo:!1,exec:function(a){var b=a.document.createElement("hr");a.insertElement(b)},allowedContent:"hr",requiredContent:"hr"};CKEDITOR.plugins.add("horizontalrule",{init:function(a){a.blockless||(a.addCommand("horizontalrule",b),a.ui.addButton&&a.ui.addButton("HorizontalRule",{label:a.lang.horizontalrule.toolbar,command:"horizontalrule",toolbar:"insert,40"}))}})})();CKEDITOR.plugins.add("htmlwriter",{init:function(b){var a=new CKEDITOR.htmlWriter;a.forceSimpleAmpersand=b.config.forceSimpleAmpersand;a.indentationChars=b.config.dataIndentationChars||"\t";b.dataProcessor.writer=a}});
@@ -713,13 +766,30 @@ CKEDITOR.htmlWriter=CKEDITOR.tools.createClass({base:CKEDITOR.htmlParser.basicWr
713b.$block&&!(a in{li:1,dt:1,dd:1})});this.setRules("br",{breakAfterOpen:1});this.setRules("title",{indent:0,breakAfterOpen:0});this.setRules("style",{indent:0,breakBeforeClose:1});this.setRules("pre",{breakAfterOpen:1,indent:0})},proto:{openTag:function(b){var a=this._.rules[b];this._.afterCloser&&a&&a.needsSpace&&this._.needsSpace&&this._.output.push("\n");this._.indent?this.indentation():a&&a.breakBeforeOpen&&(this.lineBreak(),this.indentation());this._.output.push("\x3c",b);this._.afterCloser=0}, 766b.$block&&!(a in{li:1,dt:1,dd:1})});this.setRules("br",{breakAfterOpen:1});this.setRules("title",{indent:0,breakAfterOpen:0});this.setRules("style",{indent:0,breakBeforeClose:1});this.setRules("pre",{breakAfterOpen:1,indent:0})},proto:{openTag:function(b){var a=this._.rules[b];this._.afterCloser&&a&&a.needsSpace&&this._.needsSpace&&this._.output.push("\n");this._.indent?this.indentation():a&&a.breakBeforeOpen&&(this.lineBreak(),this.indentation());this._.output.push("\x3c",b);this._.afterCloser=0},
714openTagClose:function(b,a){var c=this._.rules[b];a?(this._.output.push(this.selfClosingEnd),c&&c.breakAfterClose&&(this._.needsSpace=c.needsSpace)):(this._.output.push("\x3e"),c&&c.indent&&(this._.indentation+=this.indentationChars));c&&c.breakAfterOpen&&this.lineBreak();"pre"==b&&(this._.inPre=1)},attribute:function(b,a){"string"==typeof a&&(this.forceSimpleAmpersand&&(a=a.replace(/&amp;/g,"\x26")),a=CKEDITOR.tools.htmlEncodeAttr(a));this._.output.push(" ",b,'\x3d"',a,'"')},closeTag:function(b){var a= 767openTagClose:function(b,a){var c=this._.rules[b];a?(this._.output.push(this.selfClosingEnd),c&&c.breakAfterClose&&(this._.needsSpace=c.needsSpace)):(this._.output.push("\x3e"),c&&c.indent&&(this._.indentation+=this.indentationChars));c&&c.breakAfterOpen&&this.lineBreak();"pre"==b&&(this._.inPre=1)},attribute:function(b,a){"string"==typeof a&&(this.forceSimpleAmpersand&&(a=a.replace(/&amp;/g,"\x26")),a=CKEDITOR.tools.htmlEncodeAttr(a));this._.output.push(" ",b,'\x3d"',a,'"')},closeTag:function(b){var a=
715this._.rules[b];a&&a.indent&&(this._.indentation=this._.indentation.substr(this.indentationChars.length));this._.indent?this.indentation():a&&a.breakBeforeClose&&(this.lineBreak(),this.indentation());this._.output.push("\x3c/",b,"\x3e");"pre"==b&&(this._.inPre=0);a&&a.breakAfterClose&&(this.lineBreak(),this._.needsSpace=a.needsSpace);this._.afterCloser=1},text:function(b){this._.indent&&(this.indentation(),!this._.inPre&&(b=CKEDITOR.tools.ltrim(b)));this._.output.push(b)},comment:function(b){this._.indent&& 768this._.rules[b];a&&a.indent&&(this._.indentation=this._.indentation.substr(this.indentationChars.length));this._.indent?this.indentation():a&&a.breakBeforeClose&&(this.lineBreak(),this.indentation());this._.output.push("\x3c/",b,"\x3e");"pre"==b&&(this._.inPre=0);a&&a.breakAfterClose&&(this.lineBreak(),this._.needsSpace=a.needsSpace);this._.afterCloser=1},text:function(b){this._.indent&&(this.indentation(),!this._.inPre&&(b=CKEDITOR.tools.ltrim(b)));this._.output.push(b)},comment:function(b){this._.indent&&
716this.indentation();this._.output.push("\x3c!--",b,"--\x3e")},lineBreak:function(){!this._.inPre&&0<this._.output.length&&this._.output.push(this.lineBreakChars);this._.indent=1},indentation:function(){!this._.inPre&&this._.indentation&&this._.output.push(this._.indentation);this._.indent=0},reset:function(){this._.output=[];this._.indent=0;this._.indentation="";this._.afterCloser=0;this._.inPre=0},setRules:function(b,a){var c=this._.rules[b];c?CKEDITOR.tools.extend(c,a,!0):this._.rules[b]=a}}});(function(){function g(a,b){var c=l.exec(a),d=l.exec(b);if(c){if(!c[2]&&"px"==d[2])return d[1];if("px"==c[2]&&!d[2])return d[1]+"px"}return b}var k=CKEDITOR.htmlParser.cssStyle,h=CKEDITOR.tools.cssLength,l=/^((?:\d*(?:\.\d+))|(?:\d+))(.*)?$/i,m={elements:{$:function(a){var b=a.attributes;if((b=(b=(b=b&&b["data-cke-realelement"])&&new CKEDITOR.htmlParser.fragment.fromHtml(decodeURIComponent(b)))&&b.children[0])&&a.attributes["data-cke-resizable"]){var c=(new k(a)).rules;a=b.attributes;var d=c.width, 769this.indentation();this._.output.push("\x3c!--",b,"--\x3e")},lineBreak:function(){!this._.inPre&&0<this._.output.length&&this._.output.push(this.lineBreakChars);this._.indent=1},indentation:function(){!this._.inPre&&this._.indentation&&this._.output.push(this._.indentation);this._.indent=0},reset:function(){this._.output=[];this._.indent=0;this._.indentation="";this._.afterCloser=0;this._.inPre=0;this._.needsSpace=0},setRules:function(b,a){var c=this._.rules[b];c?CKEDITOR.tools.extend(c,a,!0):this._.rules[b]=
770a}}});(function(){function g(a,b){var c=l.exec(a),d=l.exec(b);if(c){if(!c[2]&&"px"==d[2])return d[1];if("px"==c[2]&&!d[2])return d[1]+"px"}return b}var k=CKEDITOR.htmlParser.cssStyle,h=CKEDITOR.tools.cssLength,l=/^((?:\d*(?:\.\d+))|(?:\d+))(.*)?$/i,m={elements:{$:function(a){var b=a.attributes;if((b=(b=(b=b&&b["data-cke-realelement"])&&new CKEDITOR.htmlParser.fragment.fromHtml(decodeURIComponent(b)))&&b.children[0])&&a.attributes["data-cke-resizable"]){var c=(new k(a)).rules;a=b.attributes;var d=c.width,
717c=c.height;d&&(a.width=g(a.width,d));c&&(a.height=g(a.height,c))}return b}}};CKEDITOR.plugins.add("fakeobjects",{init:function(a){a.filter.allow("img[!data-cke-realelement,src,alt,title](*){*}","fakeobjects")},afterInit:function(a){(a=(a=a.dataProcessor)&&a.htmlFilter)&&a.addRules(m,{applyToAll:!0})}});CKEDITOR.editor.prototype.createFakeElement=function(a,b,c,d){var e=this.lang.fakeobjects,e=e[c]||e.unknown;b={"class":b,"data-cke-realelement":encodeURIComponent(a.getOuterHtml()),"data-cke-real-node-type":a.type, 771c=c.height;d&&(a.width=g(a.width,d));c&&(a.height=g(a.height,c))}return b}}};CKEDITOR.plugins.add("fakeobjects",{init:function(a){a.filter.allow("img[!data-cke-realelement,src,alt,title](*){*}","fakeobjects")},afterInit:function(a){(a=(a=a.dataProcessor)&&a.htmlFilter)&&a.addRules(m,{applyToAll:!0})}});CKEDITOR.editor.prototype.createFakeElement=function(a,b,c,d){var e=this.lang.fakeobjects,e=e[c]||e.unknown;b={"class":b,"data-cke-realelement":encodeURIComponent(a.getOuterHtml()),"data-cke-real-node-type":a.type,
718alt:e,title:e,align:a.getAttribute("align")||""};CKEDITOR.env.hc||(b.src=CKEDITOR.tools.transparentImageData);c&&(b["data-cke-real-element-type"]=c);d&&(b["data-cke-resizable"]=d,c=new k,d=a.getAttribute("width"),a=a.getAttribute("height"),d&&(c.rules.width=h(d)),a&&(c.rules.height=h(a)),c.populate(b));return this.document.createElement("img",{attributes:b})};CKEDITOR.editor.prototype.createFakeParserElement=function(a,b,c,d){var e=this.lang.fakeobjects,e=e[c]||e.unknown,f;f=new CKEDITOR.htmlParser.basicWriter; 772alt:e,title:e,align:a.getAttribute("align")||""};CKEDITOR.env.hc||(b.src=CKEDITOR.tools.transparentImageData);c&&(b["data-cke-real-element-type"]=c);d&&(b["data-cke-resizable"]=d,c=new k,d=a.getAttribute("width"),a=a.getAttribute("height"),d&&(c.rules.width=h(d)),a&&(c.rules.height=h(a)),c.populate(b));return this.document.createElement("img",{attributes:b})};CKEDITOR.editor.prototype.createFakeParserElement=function(a,b,c,d){var e=this.lang.fakeobjects,e=e[c]||e.unknown,f;f=new CKEDITOR.htmlParser.basicWriter;
719a.writeHtml(f);f=f.getHtml();b={"class":b,"data-cke-realelement":encodeURIComponent(f),"data-cke-real-node-type":a.type,alt:e,title:e,align:a.attributes.align||""};CKEDITOR.env.hc||(b.src=CKEDITOR.tools.transparentImageData);c&&(b["data-cke-real-element-type"]=c);d&&(b["data-cke-resizable"]=d,d=a.attributes,a=new k,c=d.width,d=d.height,void 0!==c&&(a.rules.width=h(c)),void 0!==d&&(a.rules.height=h(d)),a.populate(b));return new CKEDITOR.htmlParser.element("img",b)};CKEDITOR.editor.prototype.restoreRealElement= 773a.writeHtml(f);f=f.getHtml();b={"class":b,"data-cke-realelement":encodeURIComponent(f),"data-cke-real-node-type":a.type,alt:e,title:e,align:a.attributes.align||""};CKEDITOR.env.hc||(b.src=CKEDITOR.tools.transparentImageData);c&&(b["data-cke-real-element-type"]=c);d&&(b["data-cke-resizable"]=d,d=a.attributes,a=new k,c=d.width,d=d.height,void 0!==c&&(a.rules.width=h(c)),void 0!==d&&(a.rules.height=h(d)),a.populate(b));return new CKEDITOR.htmlParser.element("img",b)};CKEDITOR.editor.prototype.restoreRealElement=
720function(a){if(a.data("cke-real-node-type")!=CKEDITOR.NODE_ELEMENT)return null;var b=CKEDITOR.dom.element.createFromHtml(decodeURIComponent(a.data("cke-realelement")),this.document);if(a.data("cke-resizable")){var c=a.getStyle("width");a=a.getStyle("height");c&&b.setAttribute("width",g(b.getAttribute("width"),c));a&&b.setAttribute("height",g(b.getAttribute("height"),a))}return b}})();(function(){CKEDITOR.plugins.add("iframe",{requires:"dialog,fakeobjects",onLoad:function(){CKEDITOR.addCss("img.cke_iframe{background-image: url("+CKEDITOR.getUrl(this.path+"images/placeholder.png")+");background-position: center center;background-repeat: no-repeat;border: 1px solid #a9a9a9;width: 80px;height: 80px;}")},init:function(a){var b=a.lang.iframe,c="iframe[align,longdesc,frameborder,height,name,scrolling,src,title,width]";a.plugins.dialogadvtab&&(c+=";iframe"+a.plugins.dialogadvtab.allowedContent({id:1, 774function(a){if(a.data("cke-real-node-type")!=CKEDITOR.NODE_ELEMENT)return null;var b=CKEDITOR.dom.element.createFromHtml(decodeURIComponent(a.data("cke-realelement")),this.document);if(a.data("cke-resizable")){var c=a.getStyle("width");a=a.getStyle("height");c&&b.setAttribute("width",g(b.getAttribute("width"),c));a&&b.setAttribute("height",g(b.getAttribute("height"),a))}return b}})();(function(){CKEDITOR.plugins.add("iframe",{requires:"dialog,fakeobjects",onLoad:function(){CKEDITOR.addCss("img.cke_iframe{background-image: url("+CKEDITOR.getUrl(this.path+"images/placeholder.png")+");background-position: center center;background-repeat: no-repeat;border: 1px solid #a9a9a9;width: 80px;height: 80px;}")},init:function(a){var b=a.lang.iframe,c="iframe[align,longdesc,frameborder,height,name,scrolling,src,title,width]";a.plugins.dialogadvtab&&(c+=";iframe"+a.plugins.dialogadvtab.allowedContent({id:1,
721classes:1,styles:1}));CKEDITOR.dialog.add("iframe",this.path+"dialogs/iframe.js");a.addCommand("iframe",new CKEDITOR.dialogCommand("iframe",{allowedContent:c,requiredContent:"iframe"}));a.ui.addButton&&a.ui.addButton("Iframe",{label:b.toolbar,command:"iframe",toolbar:"insert,80"});a.on("doubleclick",function(a){var b=a.data.element;b.is("img")&&"iframe"==b.data("cke-real-element-type")&&(a.data.dialog="iframe")});a.addMenuItems&&a.addMenuItems({iframe:{label:b.title,command:"iframe",group:"image"}}); 775classes:1,styles:1}));CKEDITOR.dialog.add("iframe",this.path+"dialogs/iframe.js");a.addCommand("iframe",new CKEDITOR.dialogCommand("iframe",{allowedContent:c,requiredContent:"iframe"}));a.ui.addButton&&a.ui.addButton("Iframe",{label:b.toolbar,command:"iframe",toolbar:"insert,80"});a.on("doubleclick",function(a){var b=a.data.element;b.is("img")&&"iframe"==b.data("cke-real-element-type")&&(a.data.dialog="iframe")});a.addMenuItems&&a.addMenuItems({iframe:{label:b.title,command:"iframe",group:"image"}});
722a.contextMenu&&a.contextMenu.addListener(function(a){if(a&&a.is("img")&&"iframe"==a.data("cke-real-element-type"))return{iframe:CKEDITOR.TRISTATE_OFF}})},afterInit:function(a){var b=a.dataProcessor;(b=b&&b.dataFilter)&&b.addRules({elements:{iframe:function(b){return a.createFakeParserElement(b,"cke_iframe","iframe",!0)}}})}})})();(function(){function e(b,a){a||(a=b.getSelection().getSelectedElement());if(a&&a.is("img")&&!a.data("cke-realelement")&&!a.isReadOnly())return a}function f(b){var a=b.getStyle("float");if("inherit"==a||"none"==a)a=0;a||(a=b.getAttribute("align"));return a}CKEDITOR.plugins.add("image",{requires:"dialog",init:function(b){if(!b.plugins.image2){CKEDITOR.dialog.add("image",this.path+"dialogs/image.js");var a="img[alt,!src]{border-style,border-width,float,height,margin,margin-bottom,margin-left,margin-right,margin-top,width}"; 776a.contextMenu&&a.contextMenu.addListener(function(a){if(a&&a.is("img")&&"iframe"==a.data("cke-real-element-type"))return{iframe:CKEDITOR.TRISTATE_OFF}})},afterInit:function(a){var b=a.dataProcessor;(b=b&&b.dataFilter)&&b.addRules({elements:{iframe:function(b){return a.createFakeParserElement(b,"cke_iframe","iframe",!0)}}})}})})();(function(){function m(a){function f(a){var b=!1;g.attachListener(g,"keydown",function(){var d=c.getBody().getElementsByTag(a);if(!b){for(var e=0;e<d.count();e++)d.getItem(e).setCustomData("retain",!0);b=!0}},null,null,1);g.attachListener(g,"keyup",function(){var d=c.getElementsByTag(a);b&&(1!=d.count()||d.getItem(0).getCustomData("retain")||d.getItem(0).hasAttribute("data-cke-temp")||d.getItem(0).remove(1),b=!1)})}var b=this.editor,c=a.document,d=c.body,e=c.getElementById("cke_actscrpt");e&&e.parentNode.removeChild(e);
777(e=c.getElementById("cke_shimscrpt"))&&e.parentNode.removeChild(e);(e=c.getElementById("cke_basetagscrpt"))&&e.parentNode.removeChild(e);d.contentEditable=!0;CKEDITOR.env.ie&&(d.hideFocus=!0,d.disabled=!0,d.removeAttribute("disabled"));delete this._.isLoadingData;this.$=d;c=new CKEDITOR.dom.document(c);this.setup();this.fixInitialSelection();var g=this;CKEDITOR.env.ie&&!CKEDITOR.env.edge&&c.getDocumentElement().addClass(c.$.compatMode);CKEDITOR.env.ie&&!CKEDITOR.env.edge&&b.enterMode!=CKEDITOR.ENTER_P?
778f("p"):CKEDITOR.env.edge&&b.enterMode!=CKEDITOR.ENTER_DIV&&f("div");if(CKEDITOR.env.webkit||CKEDITOR.env.ie&&10<CKEDITOR.env.version)c.getDocumentElement().on("mousedown",function(a){a.data.getTarget().is("html")&&setTimeout(function(){b.editable().focus()})});n(b);try{b.document.$.execCommand("2D-position",!1,!0)}catch(h){}(CKEDITOR.env.gecko||CKEDITOR.env.ie&&"CSS1Compat"==b.document.$.compatMode)&&this.attachListener(this,"keydown",function(a){var c=a.data.getKeystroke();if(33==c||34==c)if(CKEDITOR.env.ie)setTimeout(function(){b.getSelection().scrollIntoView()},
7790);else if(b.window.$.innerHeight>this.$.offsetHeight){var d=b.createRange();d[33==c?"moveToElementEditStart":"moveToElementEditEnd"](this);d.select();a.data.preventDefault()}});CKEDITOR.env.ie&&this.attachListener(c,"blur",function(){try{c.$.selection.empty()}catch(a){}});CKEDITOR.env.iOS&&this.attachListener(c,"touchend",function(){a.focus()});d=b.document.getElementsByTag("title").getItem(0);d.data("cke-title",d.getText());CKEDITOR.env.ie&&(b.document.$.title=this._.docTitle);CKEDITOR.tools.setTimeout(function(){"unloaded"==
780this.status&&(this.status="ready");b.fire("contentDom");this._.isPendingFocus&&(b.focus(),this._.isPendingFocus=!1);setTimeout(function(){b.fire("dataReady")},0)},0,this)}function n(a){function f(){var c;a.editable().attachListener(a,"selectionChange",function(){var d=a.getSelection().getSelectedElement();d&&(c&&(c.detachEvent("onresizestart",b),c=null),d.$.attachEvent("onresizestart",b),c=d.$)})}function b(a){a.returnValue=!1}if(CKEDITOR.env.gecko)try{var c=a.document.$;c.execCommand("enableObjectResizing",
781!1,!a.config.disableObjectResizing);c.execCommand("enableInlineTableEditing",!1,!a.config.disableNativeTableHandles)}catch(d){}else CKEDITOR.env.ie&&11>CKEDITOR.env.version&&a.config.disableObjectResizing&&f(a)}function p(){var a=[];if(8<=CKEDITOR.document.$.documentMode){a.push("html.CSS1Compat [contenteditable\x3dfalse]{min-height:0 !important}");var f=[],b;for(b in CKEDITOR.dtd.$removeEmpty)f.push("html.CSS1Compat "+b+"[contenteditable\x3dfalse]");a.push(f.join(",")+"{display:inline-block}")}else CKEDITOR.env.gecko&&
782(a.push("html{height:100% !important}"),a.push("img:-moz-broken{-moz-force-broken-image-icon:1;min-width:24px;min-height:24px}"));a.push("html{cursor:text;*cursor:auto}");a.push("img,input,textarea{cursor:default}");return a.join("\n")}var l;CKEDITOR.plugins.add("wysiwygarea",{init:function(a){a.config.fullPage&&a.addFeature({allowedContent:"html head title; style [media,type]; body (*)[id]; meta link [*]",requiredContent:"body"});a.addMode("wysiwyg",function(f){function b(b){b&&b.removeListener();
783a.editable(new l(a,d.$.contentWindow.document.body));a.setData(a.getData(1),f)}var c="document.open();"+(CKEDITOR.env.ie?"("+CKEDITOR.tools.fixDomain+")();":"")+"document.close();",c=CKEDITOR.env.air?"javascript:void(0)":CKEDITOR.env.ie&&!CKEDITOR.env.edge?"javascript:void(function(){"+encodeURIComponent(c)+"}())":"",d=CKEDITOR.dom.element.createFromHtml('\x3ciframe src\x3d"'+c+'" frameBorder\x3d"0"\x3e\x3c/iframe\x3e');d.setStyles({width:"100%",height:"100%"});d.addClass("cke_wysiwyg_frame").addClass("cke_reset");
784c=a.ui.space("contents");c.append(d);var e=CKEDITOR.env.ie&&!CKEDITOR.env.edge||CKEDITOR.env.gecko;if(e)d.on("load",b);var g=a.title,h=a.fire("ariaEditorHelpLabel",{}).label;g&&(CKEDITOR.env.ie&&h&&(g+=", "+h),d.setAttribute("title",g));if(h){var g=CKEDITOR.tools.getNextId(),k=CKEDITOR.dom.element.createFromHtml('\x3cspan id\x3d"'+g+'" class\x3d"cke_voice_label"\x3e'+h+"\x3c/span\x3e");c.append(k,1);d.setAttribute("aria-describedby",g)}a.on("beforeModeUnload",function(a){a.removeListener();k&&k.remove()});
785d.setAttributes({tabIndex:a.tabIndex,allowTransparency:"true"});!e&&b();a.fire("ariaWidget",d)})}});CKEDITOR.editor.prototype.addContentsCss=function(a){var f=this.config,b=f.contentsCss;CKEDITOR.tools.isArray(b)||(f.contentsCss=b?[b]:[]);f.contentsCss.push(a)};l=CKEDITOR.tools.createClass({$:function(){this.base.apply(this,arguments);this._.frameLoadedHandler=CKEDITOR.tools.addFunction(function(a){CKEDITOR.tools.setTimeout(m,0,this,a)},this);this._.docTitle=this.getWindow().getFrame().getAttribute("title")},
786base:CKEDITOR.editable,proto:{setData:function(a,f){var b=this.editor;if(f)this.setHtml(a),this.fixInitialSelection(),b.fire("dataReady");else{this._.isLoadingData=!0;b._.dataStore={id:1};var c=b.config,d=c.fullPage,e=c.docType,g=CKEDITOR.tools.buildStyleHtml(p()).replace(/<style>/,'\x3cstyle data-cke-temp\x3d"1"\x3e');d||(g+=CKEDITOR.tools.buildStyleHtml(b.config.contentsCss));var h=c.baseHref?'\x3cbase href\x3d"'+c.baseHref+'" data-cke-temp\x3d"1" /\x3e':"";d&&(a=a.replace(/<!DOCTYPE[^>]*>/i,function(a){b.docType=
787e=a;return""}).replace(/<\?xml\s[^\?]*\?>/i,function(a){b.xmlDeclaration=a;return""}));a=b.dataProcessor.toHtml(a);d?(/<body[\s|>]/.test(a)||(a="\x3cbody\x3e"+a),/<html[\s|>]/.test(a)||(a="\x3chtml\x3e"+a+"\x3c/html\x3e"),/<head[\s|>]/.test(a)?/<title[\s|>]/.test(a)||(a=a.replace(/<head[^>]*>/,"$\x26\x3ctitle\x3e\x3c/title\x3e")):a=a.replace(/<html[^>]*>/,"$\x26\x3chead\x3e\x3ctitle\x3e\x3c/title\x3e\x3c/head\x3e"),h&&(a=a.replace(/<head[^>]*?>/,"$\x26"+h)),a=a.replace(/<\/head\s*>/,g+"$\x26"),a=
788e+a):a=c.docType+'\x3chtml dir\x3d"'+c.contentsLangDirection+'" lang\x3d"'+(c.contentsLanguage||b.langCode)+'"\x3e\x3chead\x3e\x3ctitle\x3e'+this._.docTitle+"\x3c/title\x3e"+h+g+"\x3c/head\x3e\x3cbody"+(c.bodyId?' id\x3d"'+c.bodyId+'"':"")+(c.bodyClass?' class\x3d"'+c.bodyClass+'"':"")+"\x3e"+a+"\x3c/body\x3e\x3c/html\x3e";CKEDITOR.env.gecko&&(a=a.replace(/<body/,'\x3cbody contenteditable\x3d"true" '),2E4>CKEDITOR.env.version&&(a=a.replace(/<body[^>]*>/,"$\x26\x3c!-- cke-content-start --\x3e")));
789c='\x3cscript id\x3d"cke_actscrpt" type\x3d"text/javascript"'+(CKEDITOR.env.ie?' defer\x3d"defer" ':"")+"\x3evar wasLoaded\x3d0;function onload(){if(!wasLoaded)window.parent.CKEDITOR.tools.callFunction("+this._.frameLoadedHandler+",window);wasLoaded\x3d1;}"+(CKEDITOR.env.ie?"onload();":'document.addEventListener("DOMContentLoaded", onload, false );')+"\x3c/script\x3e";CKEDITOR.env.ie&&9>CKEDITOR.env.version&&(c+='\x3cscript id\x3d"cke_shimscrpt"\x3ewindow.parent.CKEDITOR.tools.enableHtml5Elements(document)\x3c/script\x3e');
790h&&CKEDITOR.env.ie&&10>CKEDITOR.env.version&&(c+='\x3cscript id\x3d"cke_basetagscrpt"\x3evar baseTag \x3d document.querySelector( "base" );baseTag.href \x3d baseTag.href;\x3c/script\x3e');a=a.replace(/(?=\s*<\/(:?head)>)/,c);this.clearCustomData();this.clearListeners();b.fire("contentDomUnload");var k=this.getDocument();try{k.write(a)}catch(l){setTimeout(function(){k.write(a)},0)}}},getData:function(a){if(a)return this.getHtml();a=this.editor;var f=a.config,b=f.fullPage,c=b&&a.docType,d=b&&a.xmlDeclaration,
791e=this.getDocument(),b=b?e.getDocumentElement().getOuterHtml():e.getBody().getHtml();CKEDITOR.env.gecko&&f.enterMode!=CKEDITOR.ENTER_BR&&(b=b.replace(/<br>(?=\s*(:?$|<\/body>))/,""));b=a.dataProcessor.toDataFormat(b);d&&(b=d+"\n"+b);c&&(b=c+"\n"+b);return b},focus:function(){this._.isLoadingData?this._.isPendingFocus=!0:l.baseProto.focus.call(this)},detach:function(){var a=this.editor,f=a.document,b;try{b=a.window.getFrame()}catch(c){}l.baseProto.detach.call(this);this.clearCustomData();f.getDocumentElement().clearCustomData();
792CKEDITOR.tools.removeFunction(this._.frameLoadedHandler);b&&b.getParent()?(b.clearCustomData(),(a=b.removeCustomData("onResize"))&&a.removeListener(),b.remove()):CKEDITOR.warn("editor-destroy-iframe")}}})})();CKEDITOR.config.disableObjectResizing=!1;CKEDITOR.config.disableNativeTableHandles=!0;CKEDITOR.config.disableNativeSpellChecker=!0;(function(){function e(b,a){a||(a=b.getSelection().getSelectedElement());if(a&&a.is("img")&&!a.data("cke-realelement")&&!a.isReadOnly())return a}function f(b){var a=b.getStyle("float");if("inherit"==a||"none"==a)a=0;a||(a=b.getAttribute("align"));return a}CKEDITOR.plugins.add("image",{requires:"dialog",init:function(b){if(!b.plugins.image2){CKEDITOR.dialog.add("image",this.path+"dialogs/image.js");var a="img[alt,!src]{border-style,border-width,float,height,margin,margin-bottom,margin-left,margin-right,margin-top,width}";
723CKEDITOR.dialog.isTabEnabled(b,"image","advanced")&&(a="img[alt,dir,id,lang,longdesc,!src,title]{*}(*)");b.addCommand("image",new CKEDITOR.dialogCommand("image",{allowedContent:a,requiredContent:"img[alt,src]",contentTransformations:[["img{width}: sizeToStyle","img[width]: sizeToAttribute"],["img{float}: alignmentToStyle","img[align]: alignmentToAttribute"]]}));b.ui.addButton&&b.ui.addButton("Image",{label:b.lang.common.image,command:"image",toolbar:"insert,10"});b.on("doubleclick",function(b){var a= 793CKEDITOR.dialog.isTabEnabled(b,"image","advanced")&&(a="img[alt,dir,id,lang,longdesc,!src,title]{*}(*)");b.addCommand("image",new CKEDITOR.dialogCommand("image",{allowedContent:a,requiredContent:"img[alt,src]",contentTransformations:[["img{width}: sizeToStyle","img[width]: sizeToAttribute"],["img{float}: alignmentToStyle","img[align]: alignmentToAttribute"]]}));b.ui.addButton&&b.ui.addButton("Image",{label:b.lang.common.image,command:"image",toolbar:"insert,10"});b.on("doubleclick",function(b){var a=
724b.data.element;!a.is("img")||a.data("cke-realelement")||a.isReadOnly()||(b.data.dialog="image")});b.addMenuItems&&b.addMenuItems({image:{label:b.lang.image.menu,command:"image",group:"image"}});b.contextMenu&&b.contextMenu.addListener(function(a){if(e(b,a))return{image:CKEDITOR.TRISTATE_OFF}})}},afterInit:function(b){function a(a){var d=b.getCommand("justify"+a);if(d){if("left"==a||"right"==a)d.on("exec",function(d){var c=e(b),g;c&&(g=f(c),g==a?(c.removeStyle("float"),a==f(c)&&c.removeAttribute("align")): 794b.data.element;!a.is("img")||a.data("cke-realelement")||a.isReadOnly()||(b.data.dialog="image")});b.addMenuItems&&b.addMenuItems({image:{label:b.lang.image.menu,command:"image",group:"image"}});b.contextMenu&&b.contextMenu.addListener(function(a){if(e(b,a))return{image:CKEDITOR.TRISTATE_OFF}})}},afterInit:function(b){function a(a){var d=b.getCommand("justify"+a);if(d){if("left"==a||"right"==a)d.on("exec",function(d){var c=e(b),g;c&&(g=f(c),g==a?(c.removeStyle("float"),a==f(c)&&c.removeAttribute("align")):
725c.setStyle("float",a),d.cancel())});d.on("refresh",function(d){var c=e(b);c&&(c=f(c),this.setState(c==a?CKEDITOR.TRISTATE_ON:"right"==a||"left"==a?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED),d.cancel())})}}b.plugins.image2||(a("left"),a("right"),a("center"),a("block"))}})})();CKEDITOR.config.image_removeLinkByEmptyURL=!0;(function(){function m(a,b){var e,f;b.on("refresh",function(a){var b=[k],c;for(c in a.data.states)b.push(a.data.states[c]);this.setState(CKEDITOR.tools.search(b,p)?p:k)},b,null,100);b.on("exec",function(b){e=a.getSelection();f=e.createBookmarks(1);b.data||(b.data={});b.data.done=!1},b,null,0);b.on("exec",function(){a.forceNextSelectionCheck();e.selectBookmarks(f)},b,null,100)}var k=CKEDITOR.TRISTATE_DISABLED,p=CKEDITOR.TRISTATE_OFF;CKEDITOR.plugins.add("indent",{init:function(a){var b=CKEDITOR.plugins.indent.genericDefinition; 795c.setStyle("float",a),d.cancel())});d.on("refresh",function(d){var c=e(b);c&&(c=f(c),this.setState(c==a?CKEDITOR.TRISTATE_ON:"right"==a||"left"==a?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED),d.cancel())})}}b.plugins.image2||(a("left"),a("right"),a("center"),a("block"))}})})();CKEDITOR.config.image_removeLinkByEmptyURL=!0;(function(){function m(a,b){var e,f;b.on("refresh",function(a){var b=[k],c;for(c in a.data.states)b.push(a.data.states[c]);this.setState(CKEDITOR.tools.search(b,p)?p:k)},b,null,100);b.on("exec",function(b){e=a.getSelection();f=e.createBookmarks(1);b.data||(b.data={});b.data.done=!1},b,null,0);b.on("exec",function(){a.forceNextSelectionCheck();e.selectBookmarks(f)},b,null,100)}var k=CKEDITOR.TRISTATE_DISABLED,p=CKEDITOR.TRISTATE_OFF;CKEDITOR.plugins.add("indent",{init:function(a){var b=CKEDITOR.plugins.indent.genericDefinition;
@@ -729,39 +799,43 @@ this.startDisabled=!this.isIndent},specificDefinition:function(a,b,e){this.name=
729!0),a.fire("unlockSnapshot"),CKEDITOR.dom.element.clearAllMarkers(b.database))},this,null,c),e.on("refresh",function(d){d.data.states||(d.data.states={});d.data.states[b.name+"@"+c]=b.refreshJob(a,c,d.data.path)},this,null,c);a.addFeature(b)})(this,b[a])})}};CKEDITOR.plugins.indent.genericDefinition.prototype={context:"p",exec:function(){}};CKEDITOR.plugins.indent.specificDefinition.prototype={execJob:function(a,b){var e=this.jobs[b];if(e.state!=k)return e.exec.call(this,a)},refreshJob:function(a, 799!0),a.fire("unlockSnapshot"),CKEDITOR.dom.element.clearAllMarkers(b.database))},this,null,c),e.on("refresh",function(d){d.data.states||(d.data.states={});d.data.states[b.name+"@"+c]=b.refreshJob(a,c,d.data.path)},this,null,c);a.addFeature(b)})(this,b[a])})}};CKEDITOR.plugins.indent.genericDefinition.prototype={context:"p",exec:function(){}};CKEDITOR.plugins.indent.specificDefinition.prototype={execJob:function(a,b){var e=this.jobs[b];if(e.state!=k)return e.exec.call(this,a)},refreshJob:function(a,
730b,e){b=this.jobs[b];a.activeFilter.checkFeature(this)?b.state=b.refresh.call(this,a,e):b.state=k;return b.state},getContext:function(a){return a.contains(this.context)}}})();(function(){function f(b,c,a){if(!b.getCustomData("indent_processed")){var d=this.editor,l=this.isIndent;if(c){d=b.$.className.match(this.classNameRegex);a=0;d&&(d=d[1],a=CKEDITOR.tools.indexOf(c,d)+1);if(0>(a+=l?1:-1))return;a=Math.min(a,c.length);a=Math.max(a,0);b.$.className=CKEDITOR.tools.ltrim(b.$.className.replace(this.classNameRegex,""));0<a&&b.addClass(c[a-1])}else{c=m(b,a);a=parseInt(b.getStyle(c),10);var g=d.config.indentOffset||40;isNaN(a)&&(a=0);a+=(l?1:-1)*g;if(0>a)return;a=Math.max(a, 800b,e){b=this.jobs[b];a.activeFilter.checkFeature(this)?b.state=b.refresh.call(this,a,e):b.state=k;return b.state},getContext:function(a){return a.contains(this.context)}}})();(function(){function f(b,c,a){if(!b.getCustomData("indent_processed")){var d=this.editor,l=this.isIndent;if(c){d=b.$.className.match(this.classNameRegex);a=0;d&&(d=d[1],a=CKEDITOR.tools.indexOf(c,d)+1);if(0>(a+=l?1:-1))return;a=Math.min(a,c.length);a=Math.max(a,0);b.$.className=CKEDITOR.tools.ltrim(b.$.className.replace(this.classNameRegex,""));0<a&&b.addClass(c[a-1])}else{c=m(b,a);a=parseInt(b.getStyle(c),10);var g=d.config.indentOffset||40;isNaN(a)&&(a=0);a+=(l?1:-1)*g;if(0>a)return;a=Math.max(a,
7310);a=Math.ceil(a/g)*g;b.setStyle(c,a?a+(d.config.indentUnit||"px"):"");""===b.getAttribute("style")&&b.removeAttribute("style")}CKEDITOR.dom.element.setMarker(this.database,b,"indent_processed",1)}}function m(b,c){return"ltr"==(c||b.getComputedStyle("direction"))?"margin-left":"margin-right"}var h=CKEDITOR.dtd.$listItem,p=CKEDITOR.dtd.$list,k=CKEDITOR.TRISTATE_DISABLED,n=CKEDITOR.TRISTATE_OFF;CKEDITOR.plugins.add("indentblock",{requires:"indent",init:function(b){function c(){a.specificDefinition.apply(this, 8010);a=Math.ceil(a/g)*g;b.setStyle(c,a?a+(d.config.indentUnit||"px"):"");""===b.getAttribute("style")&&b.removeAttribute("style")}CKEDITOR.dom.element.setMarker(this.database,b,"indent_processed",1)}}function m(b,c){return"ltr"==(c||b.getComputedStyle("direction"))?"margin-left":"margin-right"}var h=CKEDITOR.dtd.$listItem,p=CKEDITOR.dtd.$list,k=CKEDITOR.TRISTATE_DISABLED,n=CKEDITOR.TRISTATE_OFF;CKEDITOR.plugins.add("indentblock",{requires:"indent",init:function(b){function c(){a.specificDefinition.apply(this,
732arguments);this.allowedContent={"div h1 h2 h3 h4 h5 h6 ol p pre ul":{propertiesOnly:!0,styles:d?null:"margin-left,margin-right",classes:d||null}};this.enterBr&&(this.allowedContent.div=!0);this.requiredContent=(this.enterBr?"div":"p")+(d?"("+d.join(",")+")":"{margin-left}");this.jobs={20:{refresh:function(a,b){var e=b.block||b.blockLimit;if(!e.is(h))var c=e.getAscendant(h),e=c&&b.contains(c)||e;e.is(h)&&(e=e.getParent());if(this.enterBr||this.getContext(b)){if(d){var c=d,e=e.$.className.match(this.classNameRegex), 802arguments);this.allowedContent={"div h1 h2 h3 h4 h5 h6 ol p pre ul":{propertiesOnly:!0,styles:d?null:"margin-left,margin-right",classes:d||null}};this.contentTransformations=[["div: splitMarginShorthand"],["h1: splitMarginShorthand"],["h2: splitMarginShorthand"],["h3: splitMarginShorthand"],["h4: splitMarginShorthand"],["h5: splitMarginShorthand"],["h6: splitMarginShorthand"],["ol: splitMarginShorthand"],["p: splitMarginShorthand"],["pre: splitMarginShorthand"],["ul: splitMarginShorthand"]];this.enterBr&&
733f=this.isIndent,c=e?f?e[1]!=c.slice(-1):!0:f;return c?n:k}return this.isIndent?n:e?CKEDITOR[0>=(parseInt(e.getStyle(m(e)),10)||0)?"TRISTATE_DISABLED":"TRISTATE_OFF"]:k}return k},exec:function(a){var b=a.getSelection(),b=b&&b.getRanges()[0],c;if(c=a.elementPath().contains(p))f.call(this,c,d);else for(b=b.createIterator(),a=a.config.enterMode,b.enforceRealBlocks=!0,b.enlargeBr=a!=CKEDITOR.ENTER_BR;c=b.getNextParagraph(a==CKEDITOR.ENTER_P?"p":"div");)c.isReadOnly()||f.call(this,c,d);return!0}}}}var a= 803(this.allowedContent.div=!0);this.requiredContent=(this.enterBr?"div":"p")+(d?"("+d.join(",")+")":"{margin-left}");this.jobs={20:{refresh:function(a,b){var e=b.block||b.blockLimit;if(!e.is(h))var c=e.getAscendant(h),e=c&&b.contains(c)||e;e.is(h)&&(e=e.getParent());if(this.enterBr||this.getContext(b)){if(d){var c=d,e=e.$.className.match(this.classNameRegex),f=this.isIndent,c=e?f?e[1]!=c.slice(-1):!0:f;return c?n:k}return this.isIndent?n:e?CKEDITOR[0>=(parseInt(e.getStyle(m(e)),10)||0)?"TRISTATE_DISABLED":
734CKEDITOR.plugins.indent,d=b.config.indentClasses;a.registerCommands(b,{indentblock:new c(b,"indentblock",!0),outdentblock:new c(b,"outdentblock")});CKEDITOR.tools.extend(c.prototype,a.specificDefinition.prototype,{context:{div:1,dl:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,ul:1,ol:1,p:1,pre:1,table:1},classNameRegex:d?new RegExp("(?:^|\\s+)("+d.join("|")+")(?\x3d$|\\s)"):null})}})})();(function(){function w(c){function f(b){for(var e=d.startContainer,a=d.endContainer;e&&!e.getParent().equals(b);)e=e.getParent();for(;a&&!a.getParent().equals(b);)a=a.getParent();if(!e||!a)return!1;for(var g=e,e=[],k=!1;!k;)g.equals(a)&&(k=!0),e.push(g),g=g.getNext();if(1>e.length)return!1;g=b.getParents(!0);for(a=0;a<g.length;a++)if(g[a].getName&&p[g[a].getName()]){b=g[a];break}for(var g=l.isIndent?1:-1,a=e[0],e=e[e.length-1],k=CKEDITOR.plugins.list.listToArray(b,q),n=k[e.getCustomData("listarray_index")].indent, 804"TRISTATE_OFF"]:k}return k},exec:function(a){var b=a.getSelection(),b=b&&b.getRanges()[0],c;if(c=a.elementPath().contains(p))f.call(this,c,d);else for(b=b.createIterator(),a=a.config.enterMode,b.enforceRealBlocks=!0,b.enlargeBr=a!=CKEDITOR.ENTER_BR;c=b.getNextParagraph(a==CKEDITOR.ENTER_P?"p":"div");)c.isReadOnly()||f.call(this,c,d);return!0}}}}var a=CKEDITOR.plugins.indent,d=b.config.indentClasses;a.registerCommands(b,{indentblock:new c(b,"indentblock",!0),outdentblock:new c(b,"outdentblock")});
735a=a.getCustomData("listarray_index");a<=e.getCustomData("listarray_index");a++)if(k[a].indent+=g,0<g){var h=k[a].parent;k[a].parent=new CKEDITOR.dom.element(h.getName(),h.getDocument())}for(a=e.getCustomData("listarray_index")+1;a<k.length&&k[a].indent>n;a++)k[a].indent+=g;e=CKEDITOR.plugins.list.arrayToList(k,q,null,c.config.enterMode,b.getDirection());if(!l.isIndent){var f;if((f=b.getParent())&&f.is("li"))for(var g=e.listNode.getChildren(),r=[],m,a=g.count()-1;0<=a;a--)(m=g.getItem(a))&&m.is&&m.is("li")&& 805CKEDITOR.tools.extend(c.prototype,a.specificDefinition.prototype,{context:{div:1,dl:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,ul:1,ol:1,p:1,pre:1,table:1},classNameRegex:d?new RegExp("(?:^|\\s+)("+d.join("|")+")(?\x3d$|\\s)"):null})}})})();(function(){function w(d){function f(b){for(var e=c.startContainer,a=c.endContainer;e&&!e.getParent().equals(b);)e=e.getParent();for(;a&&!a.getParent().equals(b);)a=a.getParent();if(!e||!a)return!1;for(var g=e,e=[],k=!1;!k;)g.equals(a)&&(k=!0),e.push(g),g=g.getNext();if(1>e.length)return!1;g=b.getParents(!0);for(a=0;a<g.length;a++)if(g[a].getName&&p[g[a].getName()]){b=g[a];break}for(var g=l.isIndent?1:-1,a=e[0],e=e[e.length-1],k=CKEDITOR.plugins.list.listToArray(b,q),h=k[e.getCustomData("listarray_index")].indent,
736r.push(m)}e&&e.listNode.replace(b);if(r&&r.length)for(a=0;a<r.length;a++){for(m=b=r[a];(m=m.getNext())&&m.is&&m.getName()in p;)CKEDITOR.env.needsNbspFiller&&!b.getFirst(x)&&b.append(d.document.createText(" ")),b.append(m);b.insertAfter(f)}e&&c.fire("contentDomInvalidated");return!0}for(var l=this,q=this.database,p=this.context,n=c.getSelection(),n=(n&&n.getRanges()).createIterator(),d;d=n.getNextRange();){for(var b=d.getCommonAncestor();b&&(b.type!=CKEDITOR.NODE_ELEMENT||!p[b.getName()]);){if(c.editable().equals(b)){b= 806a=a.getCustomData("listarray_index");a<=e.getCustomData("listarray_index");a++)if(k[a].indent+=g,0<g){var n=k[a].parent;k[a].parent=new CKEDITOR.dom.element(n.getName(),n.getDocument())}for(a=e.getCustomData("listarray_index")+1;a<k.length&&k[a].indent>h;a++)k[a].indent+=g;e=CKEDITOR.plugins.list.arrayToList(k,q,null,d.config.enterMode,b.getDirection());if(!l.isIndent){var f;if((f=b.getParent())&&f.is("li"))for(var g=e.listNode.getChildren(),r=[],m,a=g.count()-1;0<=a;a--)(m=g.getItem(a))&&m.is&&m.is("li")&&
737!1;break}b=b.getParent()}b||(b=d.startPath().contains(p))&&d.setEndAt(b,CKEDITOR.POSITION_BEFORE_END);if(!b){var h=d.getEnclosedNode();h&&h.type==CKEDITOR.NODE_ELEMENT&&h.getName()in p&&(d.setStartAt(h,CKEDITOR.POSITION_AFTER_START),d.setEndAt(h,CKEDITOR.POSITION_BEFORE_END),b=h)}b&&d.startContainer.type==CKEDITOR.NODE_ELEMENT&&d.startContainer.getName()in p&&(h=new CKEDITOR.dom.walker(d),h.evaluator=t,d.startContainer=h.next());b&&d.endContainer.type==CKEDITOR.NODE_ELEMENT&&d.endContainer.getName()in 807r.push(m)}e&&e.listNode.replace(b);if(r&&r.length)for(a=0;a<r.length;a++){for(m=b=r[a];(m=m.getNext())&&m.is&&m.getName()in p;)CKEDITOR.env.needsNbspFiller&&!b.getFirst(x)&&b.append(c.document.createText(" ")),b.append(m);b.insertAfter(f)}e&&d.fire("contentDomInvalidated");return!0}for(var l=this,q=this.database,p=this.context,c,n=d.getSelection(),n=(n&&n.getRanges()).createIterator();c=n.getNextRange();){for(var b=c.getCommonAncestor();b&&(b.type!=CKEDITOR.NODE_ELEMENT||!p[b.getName()]);){if(d.editable().equals(b)){b=
738p&&(h=new CKEDITOR.dom.walker(d),h.evaluator=t,d.endContainer=h.previous());if(b)return f(b)}return 0}function t(c){return c.type==CKEDITOR.NODE_ELEMENT&&c.is("li")}function x(c){return y(c)&&z(c)}var y=CKEDITOR.dom.walker.whitespaces(!0),z=CKEDITOR.dom.walker.bookmark(!1,!0),u=CKEDITOR.TRISTATE_DISABLED,v=CKEDITOR.TRISTATE_OFF;CKEDITOR.plugins.add("indentlist",{requires:"indent",init:function(c){function f(c){l.specificDefinition.apply(this,arguments);this.requiredContent=["ul","ol"];c.on("key", 808!1;break}b=b.getParent()}b||(b=c.startPath().contains(p))&&c.setEndAt(b,CKEDITOR.POSITION_BEFORE_END);if(!b){var h=c.getEnclosedNode();h&&h.type==CKEDITOR.NODE_ELEMENT&&h.getName()in p&&(c.setStartAt(h,CKEDITOR.POSITION_AFTER_START),c.setEndAt(h,CKEDITOR.POSITION_BEFORE_END),b=h)}b&&c.startContainer.type==CKEDITOR.NODE_ELEMENT&&c.startContainer.getName()in p&&(h=new CKEDITOR.dom.walker(c),h.evaluator=t,c.startContainer=h.next());b&&c.endContainer.type==CKEDITOR.NODE_ELEMENT&&c.endContainer.getName()in
739function(f){if("wysiwyg"==c.mode&&f.data.keyCode==this.indentKey){var n=this.getContext(c.elementPath());!n||this.isIndent&&CKEDITOR.plugins.indentList.firstItemInPath(this.context,c.elementPath(),n)||(c.execCommand(this.relatedGlobal),f.cancel())}},this);this.jobs[this.isIndent?10:30]={refresh:this.isIndent?function(c,f){var d=this.getContext(f),b=CKEDITOR.plugins.indentList.firstItemInPath(this.context,f,d);return d&&this.isIndent&&!b?v:u}:function(c,f){return!this.getContext(f)||this.isIndent? 809p&&(h=new CKEDITOR.dom.walker(c),h.evaluator=t,c.endContainer=h.previous());if(b)return f(b)}return 0}function t(d){return d.type==CKEDITOR.NODE_ELEMENT&&d.is("li")}function x(d){return y(d)&&z(d)}var y=CKEDITOR.dom.walker.whitespaces(!0),z=CKEDITOR.dom.walker.bookmark(!1,!0),u=CKEDITOR.TRISTATE_DISABLED,v=CKEDITOR.TRISTATE_OFF;CKEDITOR.plugins.add("indentlist",{requires:"indent",init:function(d){function f(d){l.specificDefinition.apply(this,arguments);this.requiredContent=["ul","ol"];d.on("key",
740u:v},exec:CKEDITOR.tools.bind(w,this)}}var l=CKEDITOR.plugins.indent;l.registerCommands(c,{indentlist:new f(c,"indentlist",!0),outdentlist:new f(c,"outdentlist")});CKEDITOR.tools.extend(f.prototype,l.specificDefinition.prototype,{context:{ol:1,ul:1}})}});CKEDITOR.plugins.indentList={};CKEDITOR.plugins.indentList.firstItemInPath=function(c,f,l){var q=f.contains(t);l||(l=f.contains(c));return l&&q&&q.equals(l.getFirst(t))}})();(function(){function n(a,c){c=void 0===c||c;var b;if(c)b=a.getComputedStyle("text-align");else{for(;!a.hasAttribute||!a.hasAttribute("align")&&!a.getStyle("text-align");){b=a.getParent();if(!b)break;a=b}b=a.getStyle("text-align")||a.getAttribute("align")||""}b&&(b=b.replace(/(?:-(?:moz|webkit)-)?(?:start|auto)/i,""));!b&&c&&(b="rtl"==a.getComputedStyle("direction")?"right":"left");return b}function g(a,c,b){this.editor=a;this.name=c;this.value=b;this.context="p";c=a.config.justifyClasses;var h=a.config.enterMode== 810function(f){var c=d.elementPath();if("wysiwyg"==d.mode&&f.data.keyCode==this.indentKey&&c){var n=this.getContext(c);!n||this.isIndent&&CKEDITOR.plugins.indentList.firstItemInPath(this.context,c,n)||(d.execCommand(this.relatedGlobal),f.cancel())}},this);this.jobs[this.isIndent?10:30]={refresh:this.isIndent?function(d,c){var f=this.getContext(c),b=CKEDITOR.plugins.indentList.firstItemInPath(this.context,c,f);return f&&this.isIndent&&!b?v:u}:function(d,c){return!this.getContext(c)||this.isIndent?u:v},
741CKEDITOR.ENTER_P?"p":"div";if(c){switch(b){case "left":this.cssClassName=c[0];break;case "center":this.cssClassName=c[1];break;case "right":this.cssClassName=c[2];break;case "justify":this.cssClassName=c[3]}this.cssClassRegex=new RegExp("(?:^|\\s+)(?:"+c.join("|")+")(?\x3d$|\\s)");this.requiredContent=h+"("+this.cssClassName+")"}else this.requiredContent=h+"{text-align}";this.allowedContent={"caption div h1 h2 h3 h4 h5 h6 p pre td th li":{propertiesOnly:!0,styles:this.cssClassName?null:"text-align", 811exec:CKEDITOR.tools.bind(w,this)}}var l=CKEDITOR.plugins.indent;l.registerCommands(d,{indentlist:new f(d,"indentlist",!0),outdentlist:new f(d,"outdentlist")});CKEDITOR.tools.extend(f.prototype,l.specificDefinition.prototype,{context:{ol:1,ul:1}})}});CKEDITOR.plugins.indentList={};CKEDITOR.plugins.indentList.firstItemInPath=function(d,f,l){var q=f.contains(t);l||(l=f.contains(d));return l&&q&&q.equals(l.getFirst(t))}})();(function(){function q(a,c){c=void 0===c||c;var b;if(c)b=a.getComputedStyle("text-align");else{for(;!a.hasAttribute||!a.hasAttribute("align")&&!a.getStyle("text-align");){b=a.getParent();if(!b)break;a=b}b=a.getStyle("text-align")||a.getAttribute("align")||""}b&&(b=b.replace(/(?:-(?:moz|webkit)-)?(?:start|auto)/i,""));!b&&c&&(b="rtl"==a.getComputedStyle("direction")?"right":"left");return b}function h(a,c,b){this.editor=a;this.name=c;this.value=b;this.context="p";c=a.config.justifyClasses;var f=a.config.enterMode==
742classes:this.cssClassName||null}};a.config.enterMode==CKEDITOR.ENTER_BR&&(this.allowedContent.div=!0)}function l(a){var c=a.editor,b=c.createRange();b.setStartBefore(a.data.node);b.setEndAfter(a.data.node);for(var h=new CKEDITOR.dom.walker(b),d;d=h.next();)if(d.type==CKEDITOR.NODE_ELEMENT)if(!d.equals(a.data.node)&&d.getDirection())b.setStartAfter(d),h=new CKEDITOR.dom.walker(b);else{var e=c.config.justifyClasses;e&&(d.hasClass(e[0])?(d.removeClass(e[0]),d.addClass(e[2])):d.hasClass(e[2])&&(d.removeClass(e[2]), 812CKEDITOR.ENTER_P?"p":"div";if(c){switch(b){case "left":this.cssClassName=c[0];break;case "center":this.cssClassName=c[1];break;case "right":this.cssClassName=c[2];break;case "justify":this.cssClassName=c[3]}this.cssClassRegex=new RegExp("(?:^|\\s+)(?:"+c.join("|")+")(?\x3d$|\\s)");this.requiredContent=f+"("+this.cssClassName+")"}else this.requiredContent=f+"{text-align}";this.allowedContent={"caption div h1 h2 h3 h4 h5 h6 p pre td th li":{propertiesOnly:!0,styles:this.cssClassName?null:"text-align",
743d.addClass(e[0])));e=d.getStyle("text-align");"left"==e?d.setStyle("text-align","right"):"right"==e&&d.setStyle("text-align","left")}}g.prototype={exec:function(a){var c=a.getSelection(),b=a.config.enterMode;if(c){for(var h=c.createBookmarks(),d=c.getRanges(),e=this.cssClassName,g,f,k=a.config.useComputedState,k=void 0===k||k,m=d.length-1;0<=m;m--)for(g=d[m].createIterator(),g.enlargeBr=b!=CKEDITOR.ENTER_BR;f=g.getNextParagraph(b==CKEDITOR.ENTER_P?"p":"div");)if(!f.isReadOnly()){f.removeAttribute("align"); 813classes:this.cssClassName||null}};a.config.enterMode==CKEDITOR.ENTER_BR&&(this.allowedContent.div=!0)}function m(a){var c=a.editor,b=c.createRange();b.setStartBefore(a.data.node);b.setEndAfter(a.data.node);for(var f=new CKEDITOR.dom.walker(b),d;d=f.next();)if(d.type==CKEDITOR.NODE_ELEMENT)if(!d.equals(a.data.node)&&d.getDirection())b.setStartAfter(d),f=new CKEDITOR.dom.walker(b);else{var e=c.config.justifyClasses;e&&(d.hasClass(e[0])?(d.removeClass(e[0]),d.addClass(e[2])):d.hasClass(e[2])&&(d.removeClass(e[2]),
744f.removeStyle("text-align");var l=e&&(f.$.className=CKEDITOR.tools.ltrim(f.$.className.replace(this.cssClassRegex,""))),p=this.state==CKEDITOR.TRISTATE_OFF&&(!k||n(f,!0)!=this.value);e?p?f.addClass(e):l||f.removeAttribute("class"):p&&f.setStyle("text-align",this.value)}a.focus();a.forceNextSelectionCheck();c.selectBookmarks(h)}},refresh:function(a,c){var b=c.block||c.blockLimit;this.setState("body"!=b.getName()&&n(b,this.editor.config.useComputedState)==this.value?CKEDITOR.TRISTATE_ON:CKEDITOR.TRISTATE_OFF)}}; 814d.addClass(e[0])));e=d.getStyle("text-align");"left"==e?d.setStyle("text-align","right"):"right"==e&&d.setStyle("text-align","left")}}h.prototype={exec:function(a){var c=a.getSelection(),b=a.config.enterMode;if(c){for(var f=c.createBookmarks(),d=c.getRanges(),e=this.cssClassName,h,g,k=a.config.useComputedState,k=void 0===k||k,n=d.length-1;0<=n;n--)for(h=d[n].createIterator(),h.enlargeBr=b!=CKEDITOR.ENTER_BR;g=h.getNextParagraph(b==CKEDITOR.ENTER_P?"p":"div");)if(!g.isReadOnly()){var l=g.getName(),
745CKEDITOR.plugins.add("justify",{init:function(a){if(!a.blockless){var c=new g(a,"justifyleft","left"),b=new g(a,"justifycenter","center"),h=new g(a,"justifyright","right"),d=new g(a,"justifyblock","justify");a.addCommand("justifyleft",c);a.addCommand("justifycenter",b);a.addCommand("justifyright",h);a.addCommand("justifyblock",d);a.ui.addButton&&(a.ui.addButton("JustifyLeft",{label:a.lang.justify.left,command:"justifyleft",toolbar:"align,10"}),a.ui.addButton("JustifyCenter",{label:a.lang.justify.center, 815p;p=a.activeFilter.check(l+"{text-align}");if((l=a.activeFilter.check(l+"("+e+")"))||p){g.removeAttribute("align");g.removeStyle("text-align");var m=e&&(g.$.className=CKEDITOR.tools.ltrim(g.$.className.replace(this.cssClassRegex,""))),r=this.state==CKEDITOR.TRISTATE_OFF&&(!k||q(g,!0)!=this.value);e&&l?r?g.addClass(e):m||g.removeAttribute("class"):r&&p&&g.setStyle("text-align",this.value)}}a.focus();a.forceNextSelectionCheck();c.selectBookmarks(f)}},refresh:function(a,c){var b=c.block||c.blockLimit,
746command:"justifycenter",toolbar:"align,20"}),a.ui.addButton("JustifyRight",{label:a.lang.justify.right,command:"justifyright",toolbar:"align,30"}),a.ui.addButton("JustifyBlock",{label:a.lang.justify.block,command:"justifyblock",toolbar:"align,40"}));a.on("dirChanged",l)}}})})();(function(){function p(c){return c.replace(/'/g,"\\$\x26")}function q(c){for(var b,a=c.length,f=[],e=0;e<a;e++)b=c.charCodeAt(e),f.push(b);return"String.fromCharCode("+f.join(",")+")"}function r(c,b){var a=c.plugins.link,f=a.compiledProtectionFunction.params,e,d;d=[a.compiledProtectionFunction.name,"("];for(var g=0;g<f.length;g++)a=f[g].toLowerCase(),e=b[a],0<g&&d.push(","),d.push("'",e?p(encodeURIComponent(b[a])):"","'");d.push(")");return d.join("")}function n(c){c=c.config.emailProtection||""; 816f=b.getName(),d=b.equals(a.editable()),f=this.cssClassName?a.activeFilter.check(f+"("+this.cssClassName+")"):a.activeFilter.check(f+"{text-align}");d&&1===c.elements.length?this.setState(CKEDITOR.TRISTATE_OFF):!d&&f?this.setState(q(b,this.editor.config.useComputedState)==this.value?CKEDITOR.TRISTATE_ON:CKEDITOR.TRISTATE_OFF):this.setState(CKEDITOR.TRISTATE_DISABLED)}};CKEDITOR.plugins.add("justify",{init:function(a){if(!a.blockless){var c=new h(a,"justifyleft","left"),b=new h(a,"justifycenter","center"),
747var b;c&&"encode"!=c&&(b={},c.replace(/^([^(]+)\(([^)]+)\)$/,function(a,c,e){b.name=c;b.params=[];e.replace(/[^,\s]+/g,function(a){b.params.push(a)})}));return b}CKEDITOR.plugins.add("link",{requires:"dialog,fakeobjects",onLoad:function(){function c(b){return a.replace(/%1/g,"rtl"==b?"right":"left").replace(/%2/g,"cke_contents_"+b)}var b="background:url("+CKEDITOR.getUrl(this.path+"images"+(CKEDITOR.env.hidpi?"/hidpi":"")+"/anchor.png")+") no-repeat %1 center;border:1px dotted #00f;background-size:16px;", 817f=new h(a,"justifyright","right"),d=new h(a,"justifyblock","justify");a.addCommand("justifyleft",c);a.addCommand("justifycenter",b);a.addCommand("justifyright",f);a.addCommand("justifyblock",d);a.ui.addButton&&(a.ui.addButton("JustifyLeft",{label:a.lang.justify.left,command:"justifyleft",toolbar:"align,10"}),a.ui.addButton("JustifyCenter",{label:a.lang.justify.center,command:"justifycenter",toolbar:"align,20"}),a.ui.addButton("JustifyRight",{label:a.lang.justify.right,command:"justifyright",toolbar:"align,30"}),
748a=".%2 a.cke_anchor,.%2 a.cke_anchor_empty,.cke_editable.%2 a[name],.cke_editable.%2 a[data-cke-saved-name]{"+b+"padding-%1:18px;cursor:auto;}.%2 img.cke_anchor{"+b+"width:16px;min-height:15px;height:1.15em;vertical-align:text-bottom;}";CKEDITOR.addCss(c("ltr")+c("rtl"))},init:function(c){var b="a[!href]";CKEDITOR.dialog.isTabEnabled(c,"link","advanced")&&(b=b.replace("]",",accesskey,charset,dir,id,lang,name,rel,tabindex,title,type]{*}(*)"));CKEDITOR.dialog.isTabEnabled(c,"link","target")&&(b=b.replace("]", 818a.ui.addButton("JustifyBlock",{label:a.lang.justify.block,command:"justifyblock",toolbar:"align,40"}));a.on("dirChanged",m)}}})})();(function(){function p(c){return c.replace(/'/g,"\\$\x26")}function q(c){for(var b,a=c.length,d=[],f=0;f<a;f++)b=c.charCodeAt(f),d.push(b);return"String.fromCharCode("+d.join(",")+")"}function r(c,b){var a=c.plugins.link,d=a.compiledProtectionFunction.params,f,e;e=[a.compiledProtectionFunction.name,"("];for(var g=0;g<d.length;g++)a=d[g].toLowerCase(),f=b[a],0<g&&e.push(","),e.push("'",f?p(encodeURIComponent(b[a])):"","'");e.push(")");return e.join("")}function n(c){c=c.config.emailProtection||"";
749",target,onclick]"));c.addCommand("link",new CKEDITOR.dialogCommand("link",{allowedContent:b,requiredContent:"a[href]"}));c.addCommand("anchor",new CKEDITOR.dialogCommand("anchor",{allowedContent:"a[!name,id]",requiredContent:"a[name]"}));c.addCommand("unlink",new CKEDITOR.unlinkCommand);c.addCommand("removeAnchor",new CKEDITOR.removeAnchorCommand);c.setKeystroke(CKEDITOR.CTRL+76,"link");c.ui.addButton&&(c.ui.addButton("Link",{label:c.lang.link.toolbar,command:"link",toolbar:"links,10"}),c.ui.addButton("Unlink", 819var b;c&&"encode"!=c&&(b={},c.replace(/^([^(]+)\(([^)]+)\)$/,function(a,c,f){b.name=c;b.params=[];f.replace(/[^,\s]+/g,function(a){b.params.push(a)})}));return b}CKEDITOR.plugins.add("link",{requires:"dialog,fakeobjects",onLoad:function(){function c(b){return a.replace(/%1/g,"rtl"==b?"right":"left").replace(/%2/g,"cke_contents_"+b)}var b="background:url("+CKEDITOR.getUrl(this.path+"images"+(CKEDITOR.env.hidpi?"/hidpi":"")+"/anchor.png")+") no-repeat %1 center;border:1px dotted #00f;background-size:16px;",
750{label:c.lang.link.unlink,command:"unlink",toolbar:"links,20"}),c.ui.addButton("Anchor",{label:c.lang.link.anchor.toolbar,command:"anchor",toolbar:"links,30"}));CKEDITOR.dialog.add("link",this.path+"dialogs/link.js");CKEDITOR.dialog.add("anchor",this.path+"dialogs/anchor.js");c.on("doubleclick",function(a){var b=CKEDITOR.plugins.link.getSelectedLink(c)||a.data.element;b.isReadOnly()||(b.is("a")?(a.data.dialog=!b.getAttribute("name")||b.getAttribute("href")&&b.getChildCount()?"link":"anchor",a.data.link= 820a=".%2 a.cke_anchor,.%2 a.cke_anchor_empty,.cke_editable.%2 a[name],.cke_editable.%2 a[data-cke-saved-name]{"+b+"padding-%1:18px;cursor:auto;}.%2 img.cke_anchor{"+b+"width:16px;min-height:15px;height:1.15em;vertical-align:text-bottom;}";CKEDITOR.addCss(c("ltr")+c("rtl"))},init:function(c){var b="a[!href]";CKEDITOR.dialog.isTabEnabled(c,"link","advanced")&&(b=b.replace("]",",accesskey,charset,dir,id,lang,name,rel,tabindex,title,type,download]{*}(*)"));CKEDITOR.dialog.isTabEnabled(c,"link","target")&&
751b):CKEDITOR.plugins.link.tryRestoreFakeAnchor(c,b)&&(a.data.dialog="anchor"))},null,null,0);c.on("doubleclick",function(a){a.data.dialog in{link:1,anchor:1}&&a.data.link&&c.getSelection().selectElement(a.data.link)},null,null,20);c.addMenuItems&&c.addMenuItems({anchor:{label:c.lang.link.anchor.menu,command:"anchor",group:"anchor",order:1},removeAnchor:{label:c.lang.link.anchor.remove,command:"removeAnchor",group:"anchor",order:5},link:{label:c.lang.link.menu,command:"link",group:"link",order:1},unlink:{label:c.lang.link.unlink, 821(b=b.replace("]",",target,onclick]"));c.addCommand("link",new CKEDITOR.dialogCommand("link",{allowedContent:b,requiredContent:"a[href]"}));c.addCommand("anchor",new CKEDITOR.dialogCommand("anchor",{allowedContent:"a[!name,id]",requiredContent:"a[name]"}));c.addCommand("unlink",new CKEDITOR.unlinkCommand);c.addCommand("removeAnchor",new CKEDITOR.removeAnchorCommand);c.setKeystroke(CKEDITOR.CTRL+76,"link");c.ui.addButton&&(c.ui.addButton("Link",{label:c.lang.link.toolbar,command:"link",toolbar:"links,10"}),
752command:"unlink",group:"link",order:5}});c.contextMenu&&c.contextMenu.addListener(function(a){if(!a||a.isReadOnly())return null;a=CKEDITOR.plugins.link.tryRestoreFakeAnchor(c,a);if(!a&&!(a=CKEDITOR.plugins.link.getSelectedLink(c)))return null;var b={};a.getAttribute("href")&&a.getChildCount()&&(b={link:CKEDITOR.TRISTATE_OFF,unlink:CKEDITOR.TRISTATE_OFF});a&&a.hasAttribute("name")&&(b.anchor=b.removeAnchor=CKEDITOR.TRISTATE_OFF);return b});this.compiledProtectionFunction=n(c)},afterInit:function(c){c.dataProcessor.dataFilter.addRules({elements:{a:function(a){return a.attributes.name? 822c.ui.addButton("Unlink",{label:c.lang.link.unlink,command:"unlink",toolbar:"links,20"}),c.ui.addButton("Anchor",{label:c.lang.link.anchor.toolbar,command:"anchor",toolbar:"links,30"}));CKEDITOR.dialog.add("link",this.path+"dialogs/link.js");CKEDITOR.dialog.add("anchor",this.path+"dialogs/anchor.js");c.on("doubleclick",function(a){var b=a.data.element.getAscendant({a:1,img:1},!0);b&&!b.isReadOnly()&&(b.is("a")?(a.data.dialog=!b.getAttribute("name")||b.getAttribute("href")&&b.getChildCount()?"link":
753a.children.length?null:c.createFakeParserElement(a,"cke_anchor","anchor"):null}}});var b=c._.elementsPath&&c._.elementsPath.filters;b&&b.push(function(a,b){if("a"==b&&(CKEDITOR.plugins.link.tryRestoreFakeAnchor(c,a)||a.getAttribute("name")&&(!a.getAttribute("href")||!a.getChildCount())))return"anchor"})}});var t=/^javascript:/,u=/^mailto:([^?]+)(?:\?(.+))?$/,v=/subject=([^;?:@&=$,\/]*)/i,w=/body=([^;?:@&=$,\/]*)/i,x=/^#(.*)$/,y=/^((?:http|https|ftp|news):\/\/)?(.*)$/,z=/^(_(?:self|top|parent|blank))$/, 823"anchor",a.data.link=b):CKEDITOR.plugins.link.tryRestoreFakeAnchor(c,b)&&(a.data.dialog="anchor"))},null,null,0);c.on("doubleclick",function(a){a.data.dialog in{link:1,anchor:1}&&a.data.link&&c.getSelection().selectElement(a.data.link)},null,null,20);c.addMenuItems&&c.addMenuItems({anchor:{label:c.lang.link.anchor.menu,command:"anchor",group:"anchor",order:1},removeAnchor:{label:c.lang.link.anchor.remove,command:"removeAnchor",group:"anchor",order:5},link:{label:c.lang.link.menu,command:"link",group:"link",
754A=/^javascript:void\(location\.href='mailto:'\+String\.fromCharCode\(([^)]+)\)(?:\+'(.*)')?\)$/,B=/^javascript:([^(]+)\(([^)]+)\)$/,C=/\s*window.open\(\s*this\.href\s*,\s*(?:'([^']*)'|null)\s*,\s*'([^']*)'\s*\)\s*;\s*return\s*false;*\s*/,D=/(?:^|,)([^=]+)=(\d+|yes|no)/gi,m={id:"advId",dir:"advLangDir",accessKey:"advAccessKey",name:"advName",lang:"advLangCode",tabindex:"advTabIndex",title:"advTitle",type:"advContentType","class":"advCSSClasses",charset:"advCharset",style:"advStyles",rel:"advRel"}; 824order:1},unlink:{label:c.lang.link.unlink,command:"unlink",group:"link",order:5}});c.contextMenu&&c.contextMenu.addListener(function(a){if(!a||a.isReadOnly())return null;a=CKEDITOR.plugins.link.tryRestoreFakeAnchor(c,a);if(!a&&!(a=CKEDITOR.plugins.link.getSelectedLink(c)))return null;var b={};a.getAttribute("href")&&a.getChildCount()&&(b={link:CKEDITOR.TRISTATE_OFF,unlink:CKEDITOR.TRISTATE_OFF});a&&a.hasAttribute("name")&&(b.anchor=b.removeAnchor=CKEDITOR.TRISTATE_OFF);return b});this.compiledProtectionFunction=
755CKEDITOR.plugins.link={getSelectedLink:function(c){var b=c.getSelection(),a=b.getSelectedElement();return a&&a.is("a")?a:(b=b.getRanges()[0])?(b.shrink(CKEDITOR.SHRINK_TEXT),c.elementPath(b.getCommonAncestor()).contains("a",1)):null},getEditorAnchors:function(c){for(var b=c.editable(),a=b.isInline()&&!c.plugins.divarea?c.document:b,b=a.getElementsByTag("a"),a=a.getElementsByTag("img"),f=[],e=0,d;d=b.getItem(e++);)(d.data("cke-saved-name")||d.hasAttribute("name"))&&f.push({name:d.data("cke-saved-name")|| 825n(c)},afterInit:function(c){c.dataProcessor.dataFilter.addRules({elements:{a:function(a){return a.attributes.name?a.children.length?null:c.createFakeParserElement(a,"cke_anchor","anchor"):null}}});var b=c._.elementsPath&&c._.elementsPath.filters;b&&b.push(function(a,b){if("a"==b&&(CKEDITOR.plugins.link.tryRestoreFakeAnchor(c,a)||a.getAttribute("name")&&(!a.getAttribute("href")||!a.getChildCount())))return"anchor"})}});var t=/^javascript:/,u=/^mailto:([^?]+)(?:\?(.+))?$/,v=/subject=([^;?:@&=$,\/]*)/i,
756d.getAttribute("name"),id:d.getAttribute("id")});for(e=0;d=a.getItem(e++);)(d=this.tryRestoreFakeAnchor(c,d))&&f.push({name:d.getAttribute("name"),id:d.getAttribute("id")});return f},fakeAnchor:!0,tryRestoreFakeAnchor:function(c,b){if(b&&b.data("cke-real-element-type")&&"anchor"==b.data("cke-real-element-type")){var a=c.restoreRealElement(b);if(a.data("cke-saved-name"))return a}},parseLinkAttributes:function(c,b){var a=b&&(b.data("cke-saved-href")||b.getAttribute("href"))||"",f=c.plugins.link.compiledProtectionFunction, 826w=/body=([^;?:@&=$,\/]*)/i,x=/^#(.*)$/,y=/^((?:http|https|ftp|news):\/\/)?(.*)$/,z=/^(_(?:self|top|parent|blank))$/,A=/^javascript:void\(location\.href='mailto:'\+String\.fromCharCode\(([^)]+)\)(?:\+'(.*)')?\)$/,B=/^javascript:([^(]+)\(([^)]+)\)$/,C=/\s*window.open\(\s*this\.href\s*,\s*(?:'([^']*)'|null)\s*,\s*'([^']*)'\s*\)\s*;\s*return\s*false;*\s*/,D=/(?:^|,)([^=]+)=(\d+|yes|no)/gi,m={id:"advId",dir:"advLangDir",accessKey:"advAccessKey",name:"advName",lang:"advLangCode",tabindex:"advTabIndex",
757e=c.config.emailProtection,d,g={};a.match(t)&&("encode"==e?a=a.replace(A,function(a,b,c){c=c||"";return"mailto:"+String.fromCharCode.apply(String,b.split(","))+c.replace(/\\'/g,"'")}):e&&a.replace(B,function(a,b,c){if(b==f.name){g.type="email";a=g.email={};b=/(^')|('$)/g;c=c.match(/[^,\s]+/g);for(var d=c.length,e,h,k=0;k<d;k++)e=decodeURIComponent,h=c[k].replace(b,"").replace(/\\'/g,"'"),h=e(h),e=f.params[k].toLowerCase(),a[e]=h;a.address=[a.name,a.domain].join("@")}}));if(!g.type)if(e=a.match(x))g.type= 827title:"advTitle",type:"advContentType","class":"advCSSClasses",charset:"advCharset",style:"advStyles",rel:"advRel"};CKEDITOR.plugins.link={getSelectedLink:function(c,b){var a=c.getSelection(),d=a.getSelectedElement(),f=a.getRanges(),e=[],g;if(!b&&d&&d.is("a"))return d;for(d=0;d<f.length;d++)if(g=a.getRanges()[d],g.shrink(CKEDITOR.SHRINK_TEXT,!1,{skipBogus:!0}),(g=c.elementPath(g.getCommonAncestor()).contains("a",1))&&b)e.push(g);else if(g)return g;return b?e:null},getEditorAnchors:function(c){for(var b=
758"anchor",g.anchor={},g.anchor.name=g.anchor.id=e[1];else if(e=a.match(u)){d=a.match(v);a=a.match(w);g.type="email";var k=g.email={};k.address=e[1];d&&(k.subject=decodeURIComponent(d[1]));a&&(k.body=decodeURIComponent(a[1]))}else a&&(d=a.match(y))&&(g.type="url",g.url={},g.url.protocol=d[1],g.url.url=d[2]);if(b){if(a=b.getAttribute("target"))g.target={type:a.match(z)?a:"frame",name:a};else if(a=(a=b.data("cke-pa-onclick")||b.getAttribute("onclick"))&&a.match(C))for(g.target={type:"popup",name:a[1]};e= 828c.editable(),a=b.isInline()&&!c.plugins.divarea?c.document:b,b=a.getElementsByTag("a"),a=a.getElementsByTag("img"),d=[],f=0,e;e=b.getItem(f++);)(e.data("cke-saved-name")||e.hasAttribute("name"))&&d.push({name:e.data("cke-saved-name")||e.getAttribute("name"),id:e.getAttribute("id")});for(f=0;e=a.getItem(f++);)(e=this.tryRestoreFakeAnchor(c,e))&&d.push({name:e.getAttribute("name"),id:e.getAttribute("id")});return d},fakeAnchor:!0,tryRestoreFakeAnchor:function(c,b){if(b&&b.data("cke-real-element-type")&&
759D.exec(a[2]);)"yes"!=e[2]&&"1"!=e[2]||e[1]in{height:1,width:1,top:1,left:1}?isFinite(e[2])&&(g.target[e[1]]=e[2]):g.target[e[1]]=!0;var a={},h;for(h in m)(e=b.getAttribute(h))&&(a[m[h]]=e);if(h=b.data("cke-saved-name")||a.advName)a.advName=h;CKEDITOR.tools.isEmpty(a)||(g.advanced=a)}return g},getLinkAttributes:function(c,b){var a=c.config.emailProtection||"",f={};switch(b.type){case "url":var a=b.url&&void 0!==b.url.protocol?b.url.protocol:"http://",e=b.url&&CKEDITOR.tools.trim(b.url.url)||"";f["data-cke-saved-href"]= 829"anchor"==b.data("cke-real-element-type")){var a=c.restoreRealElement(b);if(a.data("cke-saved-name"))return a}},parseLinkAttributes:function(c,b){var a=b&&(b.data("cke-saved-href")||b.getAttribute("href"))||"",d=c.plugins.link.compiledProtectionFunction,f=c.config.emailProtection,e,g={};a.match(t)&&("encode"==f?a=a.replace(A,function(a,b,c){c=c||"";return"mailto:"+String.fromCharCode.apply(String,b.split(","))+c.replace(/\\'/g,"'")}):f&&a.replace(B,function(a,b,c){if(b==d.name){g.type="email";a=g.email=
7600===e.indexOf("/")?e:a+e;break;case "anchor":a=b.anchor&&b.anchor.id;f["data-cke-saved-href"]="#"+(b.anchor&&b.anchor.name||a||"");break;case "email":var d=b.email,e=d.address;switch(a){case "":case "encode":var g=encodeURIComponent(d.subject||""),k=encodeURIComponent(d.body||""),d=[];g&&d.push("subject\x3d"+g);k&&d.push("body\x3d"+k);d=d.length?"?"+d.join("\x26"):"";"encode"==a?(a=["javascript:void(location.href\x3d'mailto:'+",q(e)],d&&a.push("+'",p(d),"'"),a.push(")")):a=["mailto:",e,d];break;default:a= 830{};b=/(^')|('$)/g;c=c.match(/[^,\s]+/g);for(var e=c.length,f,h,k=0;k<e;k++)f=decodeURIComponent,h=c[k].replace(b,"").replace(/\\'/g,"'"),h=f(h),f=d.params[k].toLowerCase(),a[f]=h;a.address=[a.name,a.domain].join("@")}}));if(!g.type)if(f=a.match(x))g.type="anchor",g.anchor={},g.anchor.name=g.anchor.id=f[1];else if(f=a.match(u)){e=a.match(v);a=a.match(w);g.type="email";var k=g.email={};k.address=f[1];e&&(k.subject=decodeURIComponent(e[1]));a&&(k.body=decodeURIComponent(a[1]))}else a&&(e=a.match(y))&&
761e.split("@",2),d.name=a[0],d.domain=a[1],a=["javascript:",r(c,d)]}f["data-cke-saved-href"]=a.join("")}if(b.target)if("popup"==b.target.type){for(var a=["window.open(this.href, '",b.target.name||"","', '"],h="resizable status location toolbar menubar fullscreen scrollbars dependent".split(" "),e=h.length,g=function(a){b.target[a]&&h.push(a+"\x3d"+b.target[a])},d=0;d<e;d++)h[d]+=b.target[h[d]]?"\x3dyes":"\x3dno";g("width");g("left");g("height");g("top");a.push(h.join(","),"'); return false;");f["data-cke-pa-onclick"]= 831(g.type="url",g.url={},g.url.protocol=e[1],g.url.url=e[2]);if(b){if(a=b.getAttribute("target"))g.target={type:a.match(z)?a:"frame",name:a};else if(a=(a=b.data("cke-pa-onclick")||b.getAttribute("onclick"))&&a.match(C))for(g.target={type:"popup",name:a[1]};f=D.exec(a[2]);)"yes"!=f[2]&&"1"!=f[2]||f[1]in{height:1,width:1,top:1,left:1}?isFinite(f[2])&&(g.target[f[1]]=f[2]):g.target[f[1]]=!0;null!==b.getAttribute("download")&&(g.download=!0);var a={},h;for(h in m)(f=b.getAttribute(h))&&(a[m[h]]=f);if(h=
762a.join("")}else"notSet"!=b.target.type&&b.target.name&&(f.target=b.target.name);if(b.advanced){for(var l in m)(a=b.advanced[m[l]])&&(f[l]=a);f.name&&(f["data-cke-saved-name"]=f.name)}f["data-cke-saved-href"]&&(f.href=f["data-cke-saved-href"]);l={target:1,onclick:1,"data-cke-pa-onclick":1,"data-cke-saved-name":1};b.advanced&&CKEDITOR.tools.extend(l,m);for(var n in f)delete l[n];return{set:f,removed:CKEDITOR.tools.objectKeys(l)}}};CKEDITOR.unlinkCommand=function(){};CKEDITOR.unlinkCommand.prototype= 832b.data("cke-saved-name")||a.advName)a.advName=h;CKEDITOR.tools.isEmpty(a)||(g.advanced=a)}return g},getLinkAttributes:function(c,b){var a=c.config.emailProtection||"",d={};switch(b.type){case "url":var a=b.url&&void 0!==b.url.protocol?b.url.protocol:"http://",f=b.url&&CKEDITOR.tools.trim(b.url.url)||"";d["data-cke-saved-href"]=0===f.indexOf("/")?f:a+f;break;case "anchor":a=b.anchor&&b.anchor.id;d["data-cke-saved-href"]="#"+(b.anchor&&b.anchor.name||a||"");break;case "email":var e=b.email,f=e.address;
763{exec:function(c){var b=new CKEDITOR.style({element:"a",type:CKEDITOR.STYLE_INLINE,alwaysRemoveElement:1});c.removeStyle(b)},refresh:function(c,b){var a=b.lastElement&&b.lastElement.getAscendant("a",!0);a&&"a"==a.getName()&&a.getAttribute("href")&&a.getChildCount()?this.setState(CKEDITOR.TRISTATE_OFF):this.setState(CKEDITOR.TRISTATE_DISABLED)},contextSensitive:1,startDisabled:1,requiredContent:"a[href]"};CKEDITOR.removeAnchorCommand=function(){};CKEDITOR.removeAnchorCommand.prototype={exec:function(c){var b= 833switch(a){case "":case "encode":var g=encodeURIComponent(e.subject||""),k=encodeURIComponent(e.body||""),e=[];g&&e.push("subject\x3d"+g);k&&e.push("body\x3d"+k);e=e.length?"?"+e.join("\x26"):"";"encode"==a?(a=["javascript:void(location.href\x3d'mailto:'+",q(f)],e&&a.push("+'",p(e),"'"),a.push(")")):a=["mailto:",f,e];break;default:a=f.split("@",2),e.name=a[0],e.domain=a[1],a=["javascript:",r(c,e)]}d["data-cke-saved-href"]=a.join("")}if(b.target)if("popup"==b.target.type){for(var a=["window.open(this.href, '",
764c.getSelection(),a=b.createBookmarks(),f;if(b&&(f=b.getSelectedElement())&&(f.getChildCount()?f.is("a"):CKEDITOR.plugins.link.tryRestoreFakeAnchor(c,f)))f.remove(1);else if(f=CKEDITOR.plugins.link.getSelectedLink(c))f.hasAttribute("href")?(f.removeAttributes({name:1,"data-cke-saved-name":1}),f.removeClass("cke_anchor")):f.remove(1);b.selectBookmarks(a)},requiredContent:"a[name]"};CKEDITOR.tools.extend(CKEDITOR.config,{linkShowAdvancedTab:!0,linkShowTargetTab:!0})})();(function(){function I(b,m,e){function c(c){if(!(!(a=d[c?"getFirst":"getLast"]())||a.is&&a.isBlockBoundary()||!(p=m.root[c?"getPrevious":"getNext"](CKEDITOR.dom.walker.invisible(!0)))||p.is&&p.isBlockBoundary({br:1})))b.document.createElement("br")[c?"insertBefore":"insertAfter"](a)}for(var f=CKEDITOR.plugins.list.listToArray(m.root,e),g=[],k=0;k<m.contents.length;k++){var h=m.contents[k];(h=h.getAscendant("li",!0))&&!h.getCustomData("list_item_processed")&&(g.push(h),CKEDITOR.dom.element.setMarker(e, 834b.target.name||"","', '"],h="resizable status location toolbar menubar fullscreen scrollbars dependent".split(" "),f=h.length,g=function(a){b.target[a]&&h.push(a+"\x3d"+b.target[a])},e=0;e<f;e++)h[e]+=b.target[h[e]]?"\x3dyes":"\x3dno";g("width");g("left");g("height");g("top");a.push(h.join(","),"'); return false;");d["data-cke-pa-onclick"]=a.join("")}else"notSet"!=b.target.type&&b.target.name&&(d.target=b.target.name);b.download&&(d.download="");if(b.advanced){for(var l in m)(a=b.advanced[m[l]])&&
835(d[l]=a);d.name&&(d["data-cke-saved-name"]=d.name)}d["data-cke-saved-href"]&&(d.href=d["data-cke-saved-href"]);l={target:1,onclick:1,"data-cke-pa-onclick":1,"data-cke-saved-name":1,download:1};b.advanced&&CKEDITOR.tools.extend(l,m);for(var n in d)delete l[n];return{set:d,removed:CKEDITOR.tools.objectKeys(l)}},showDisplayTextForElement:function(c,b){var a={img:1,table:1,tbody:1,thead:1,tfoot:1,input:1,select:1,textarea:1},d=b.getSelection();return b.widgets&&b.widgets.focused||d&&1<d.getRanges().length?
836!1:!c||!c.getName||!c.is(a)}};CKEDITOR.unlinkCommand=function(){};CKEDITOR.unlinkCommand.prototype={exec:function(c){if(CKEDITOR.env.ie){var b=c.getSelection().getRanges()[0],a=b.getPreviousEditableNode()&&b.getPreviousEditableNode().getAscendant("a",!0)||b.getNextEditableNode()&&b.getNextEditableNode().getAscendant("a",!0),d;b.collapsed&&a&&(d=b.createBookmark(),b.selectNodeContents(a),b.select())}a=new CKEDITOR.style({element:"a",type:CKEDITOR.STYLE_INLINE,alwaysRemoveElement:1});c.removeStyle(a);
837d&&(b.moveToBookmark(d),b.select())},refresh:function(c,b){var a=b.lastElement&&b.lastElement.getAscendant("a",!0);a&&"a"==a.getName()&&a.getAttribute("href")&&a.getChildCount()?this.setState(CKEDITOR.TRISTATE_OFF):this.setState(CKEDITOR.TRISTATE_DISABLED)},contextSensitive:1,startDisabled:1,requiredContent:"a[href]",editorFocus:1};CKEDITOR.removeAnchorCommand=function(){};CKEDITOR.removeAnchorCommand.prototype={exec:function(c){var b=c.getSelection(),a=b.createBookmarks(),d;if(b&&(d=b.getSelectedElement())&&
838(d.getChildCount()?d.is("a"):CKEDITOR.plugins.link.tryRestoreFakeAnchor(c,d)))d.remove(1);else if(d=CKEDITOR.plugins.link.getSelectedLink(c))d.hasAttribute("href")?(d.removeAttributes({name:1,"data-cke-saved-name":1}),d.removeClass("cke_anchor")):d.remove(1);b.selectBookmarks(a)},requiredContent:"a[name]"};CKEDITOR.tools.extend(CKEDITOR.config,{linkShowAdvancedTab:!0,linkShowTargetTab:!0})})();(function(){function I(b,m,e){function c(c){if(!(!(a=d[c?"getFirst":"getLast"]())||a.is&&a.isBlockBoundary()||!(p=m.root[c?"getPrevious":"getNext"](CKEDITOR.dom.walker.invisible(!0)))||p.is&&p.isBlockBoundary({br:1})))b.document.createElement("br")[c?"insertBefore":"insertAfter"](a)}for(var f=CKEDITOR.plugins.list.listToArray(m.root,e),g=[],k=0;k<m.contents.length;k++){var h=m.contents[k];(h=h.getAscendant("li",!0))&&!h.getCustomData("list_item_processed")&&(g.push(h),CKEDITOR.dom.element.setMarker(e,
765h,"list_item_processed",!0))}h=null;for(k=0;k<g.length;k++)h=g[k].getCustomData("listarray_index"),f[h].indent=-1;for(k=h+1;k<f.length;k++)if(f[k].indent>f[k-1].indent+1){g=f[k-1].indent+1-f[k].indent;for(h=f[k].indent;f[k]&&f[k].indent>=h;)f[k].indent+=g,k++;k--}var d=CKEDITOR.plugins.list.arrayToList(f,e,null,b.config.enterMode,m.root.getAttribute("dir")).listNode,a,p;c(!0);c();d.replace(m.root);b.fire("contentDomInvalidated")}function B(b,m){this.name=b;this.context=this.type=m;this.allowedContent= 839h,"list_item_processed",!0))}h=null;for(k=0;k<g.length;k++)h=g[k].getCustomData("listarray_index"),f[h].indent=-1;for(k=h+1;k<f.length;k++)if(f[k].indent>f[k-1].indent+1){g=f[k-1].indent+1-f[k].indent;for(h=f[k].indent;f[k]&&f[k].indent>=h;)f[k].indent+=g,k++;k--}var d=CKEDITOR.plugins.list.arrayToList(f,e,null,b.config.enterMode,m.root.getAttribute("dir")).listNode,a,p;c(!0);c();d.replace(m.root);b.fire("contentDomInvalidated")}function B(b,m){this.name=b;this.context=this.type=m;this.allowedContent=
766m+" li";this.requiredContent=m}function E(b,m,e,c){for(var f,g;f=b[c?"getLast":"getFirst"](J);)(g=f.getDirection(1))!==m.getDirection(1)&&f.setAttribute("dir",g),f.remove(),e?f[c?"insertBefore":"insertAfter"](e):m.append(f,c)}function F(b){function m(e){var c=b[e?"getPrevious":"getNext"](u);c&&c.type==CKEDITOR.NODE_ELEMENT&&c.is(b.getName())&&(E(b,c,null,!e),b.remove(),b=c)}m();m(1)}function G(b){return b.type==CKEDITOR.NODE_ELEMENT&&(b.getName()in CKEDITOR.dtd.$block||b.getName()in CKEDITOR.dtd.$listItem)&& 840m+" li";this.requiredContent=m}function E(b,m,e,c){for(var f,g;f=b[c?"getLast":"getFirst"](J);)(g=f.getDirection(1))!==m.getDirection(1)&&f.setAttribute("dir",g),f.remove(),e?f[c?"insertBefore":"insertAfter"](e):m.append(f,c)}function F(b){function m(e){var c=b[e?"getPrevious":"getNext"](u);c&&c.type==CKEDITOR.NODE_ELEMENT&&c.is(b.getName())&&(E(b,c,null,!e),b.remove(),b=c)}m();m(1)}function G(b){return b.type==CKEDITOR.NODE_ELEMENT&&(b.getName()in CKEDITOR.dtd.$block||b.getName()in CKEDITOR.dtd.$listItem)&&
767CKEDITOR.dtd[b.getName()]["#"]}function C(b,m,e){b.fire("saveSnapshot");e.enlarge(CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS);var c=e.extractContents();m.trim(!1,!0);var f=m.createBookmark(),g=new CKEDITOR.dom.elementPath(m.startContainer),k=g.block,g=g.lastElement.getAscendant("li",1)||k,h=new CKEDITOR.dom.elementPath(e.startContainer),d=h.contains(CKEDITOR.dtd.$listItem),h=h.contains(CKEDITOR.dtd.$list);k?(k=k.getBogus())&&k.remove():h&&(k=h.getPrevious(u))&&z(k)&&k.remove();(k=c.getLast())&&k.type==CKEDITOR.NODE_ELEMENT&& 841CKEDITOR.dtd[b.getName()]["#"]}function C(b,m,e){b.fire("saveSnapshot");e.enlarge(CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS);var c=e.extractContents();m.trim(!1,!0);var f=m.createBookmark(),g=new CKEDITOR.dom.elementPath(m.startContainer),k=g.block,g=g.lastElement.getAscendant("li",1)||k,h=new CKEDITOR.dom.elementPath(e.startContainer),d=h.contains(CKEDITOR.dtd.$listItem),h=h.contains(CKEDITOR.dtd.$list);k?(k=k.getBogus())&&k.remove():h&&(k=h.getPrevious(u))&&z(k)&&k.remove();(k=c.getLast())&&k.type==CKEDITOR.NODE_ELEMENT&&
@@ -785,9 +859,9 @@ for(n=0;n<q.length;n++)F(q[n]);CKEDITOR.dom.element.clearAllMarkers(k);e.selectB
785!z(a)};d.guard=function(a,b){return!(b&&a.type==CKEDITOR.NODE_ELEMENT&&a.is("table"))};e=f.clone();if(k){var a;(a=g.contains(v))&&f.checkBoundaryOfElement(a,CKEDITOR.START)&&(a=a.getParent())&&a.is("li")&&(a=A(a))?(c=a,a=a.getPrevious(u),e.moveToPosition(a&&z(a)?a:c,CKEDITOR.POSITION_BEFORE_START)):(d.range.setStartAt(h,CKEDITOR.POSITION_AFTER_START),d.range.setEnd(f.startContainer,f.startOffset),(a=d.previous())&&a.type==CKEDITOR.NODE_ELEMENT&&(a.getName()in v||a.is("li"))&&(a.is("li")||(d.range.selectNodeContents(a), 859!z(a)};d.guard=function(a,b){return!(b&&a.type==CKEDITOR.NODE_ELEMENT&&a.is("table"))};e=f.clone();if(k){var a;(a=g.contains(v))&&f.checkBoundaryOfElement(a,CKEDITOR.START)&&(a=a.getParent())&&a.is("li")&&(a=A(a))?(c=a,a=a.getPrevious(u),e.moveToPosition(a&&z(a)?a:c,CKEDITOR.POSITION_BEFORE_START)):(d.range.setStartAt(h,CKEDITOR.POSITION_AFTER_START),d.range.setEnd(f.startContainer,f.startOffset),(a=d.previous())&&a.type==CKEDITOR.NODE_ELEMENT&&(a.getName()in v||a.is("li"))&&(a.is("li")||(d.range.selectNodeContents(a),
786d.reset(),d.evaluator=G,a=d.previous()),c=a,e.moveToElementEditEnd(c),e.moveToPosition(e.endPath().block,CKEDITOR.POSITION_BEFORE_END)));if(c)C(b,e,f),m.cancel();else{var p=g.contains(v);p&&f.checkBoundaryOfElement(p,CKEDITOR.START)&&(c=p.getFirst(u),f.checkBoundaryOfElement(c,CKEDITOR.START)&&(a=p.getPrevious(u),A(c)?a&&(f.moveToElementEditEnd(a),f.select()):b.execCommand("outdent"),m.cancel()))}}else if(c=g.contains("li")){if(d.range.setEndAt(h,CKEDITOR.POSITION_BEFORE_END),k=(h=c.getLast(u))&& 860d.reset(),d.evaluator=G,a=d.previous()),c=a,e.moveToElementEditEnd(c),e.moveToPosition(e.endPath().block,CKEDITOR.POSITION_BEFORE_END)));if(c)C(b,e,f),m.cancel();else{var p=g.contains(v);p&&f.checkBoundaryOfElement(p,CKEDITOR.START)&&(c=p.getFirst(u),f.checkBoundaryOfElement(c,CKEDITOR.START)&&(a=p.getPrevious(u),A(c)?a&&(f.moveToElementEditEnd(a),f.select()):b.execCommand("outdent"),m.cancel()))}}else if(c=g.contains("li")){if(d.range.setEndAt(h,CKEDITOR.POSITION_BEFORE_END),k=(h=c.getLast(u))&&
787G(h)?h:c,g=0,(a=d.next())&&a.type==CKEDITOR.NODE_ELEMENT&&a.getName()in v&&a.equals(h)?(g=1,a=d.next()):f.checkBoundaryOfElement(k,CKEDITOR.END)&&(g=2),g&&a){f=f.clone();f.moveToElementEditStart(a);if(1==g&&(e.optimize(),!e.startContainer.equals(c))){for(c=e.startContainer;c.is(CKEDITOR.dtd.$inline);)p=c,c=c.getParent();p&&e.moveToPosition(p,CKEDITOR.POSITION_AFTER_END)}2==g&&(e.moveToPosition(e.endPath().block,CKEDITOR.POSITION_BEFORE_END),f.endPath().block&&f.moveToPosition(f.endPath().block,CKEDITOR.POSITION_AFTER_START)); 861G(h)?h:c,g=0,(a=d.next())&&a.type==CKEDITOR.NODE_ELEMENT&&a.getName()in v&&a.equals(h)?(g=1,a=d.next()):f.checkBoundaryOfElement(k,CKEDITOR.END)&&(g=2),g&&a){f=f.clone();f.moveToElementEditStart(a);if(1==g&&(e.optimize(),!e.startContainer.equals(c))){for(c=e.startContainer;c.is(CKEDITOR.dtd.$inline);)p=c,c=c.getParent();p&&e.moveToPosition(p,CKEDITOR.POSITION_AFTER_END)}2==g&&(e.moveToPosition(e.endPath().block,CKEDITOR.POSITION_BEFORE_END),f.endPath().block&&f.moveToPosition(f.endPath().block,CKEDITOR.POSITION_AFTER_START));
788C(b,e,f);m.cancel()}}else d.range.setEndAt(h,CKEDITOR.POSITION_BEFORE_END),(a=d.next())&&a.type==CKEDITOR.NODE_ELEMENT&&a.is(v)&&(a=a.getFirst(u),g.block&&f.checkStartOfBlock()&&f.checkEndOfBlock()?(g.block.remove(),f.moveToElementEditStart(a),f.select()):A(a)?(f.moveToElementEditStart(a),f.select()):(f=f.clone(),f.moveToElementEditStart(a),C(b,e,f)),m.cancel());setTimeout(function(){b.selectionChange(1)})}}}))}})})();(function(){CKEDITOR.plugins.liststyle={requires:"dialog,contextmenu",init:function(a){if(!a.blockless){var b;b=new CKEDITOR.dialogCommand("numberedListStyle",{requiredContent:"ol",allowedContent:"ol{list-style-type}[start]"});b=a.addCommand("numberedListStyle",b);a.addFeature(b);CKEDITOR.dialog.add("numberedListStyle",this.path+"dialogs/liststyle.js");b=new CKEDITOR.dialogCommand("bulletedListStyle",{requiredContent:"ul",allowedContent:"ul{list-style-type}"});b=a.addCommand("bulletedListStyle",b); 862C(b,e,f);m.cancel()}}else d.range.setEndAt(h,CKEDITOR.POSITION_BEFORE_END),(a=d.next())&&a.type==CKEDITOR.NODE_ELEMENT&&a.is(v)&&(a=a.getFirst(u),g.block&&f.checkStartOfBlock()&&f.checkEndOfBlock()?(g.block.remove(),f.moveToElementEditStart(a),f.select()):A(a)?(f.moveToElementEditStart(a),f.select()):(f=f.clone(),f.moveToElementEditStart(a),C(b,e,f)),m.cancel());setTimeout(function(){b.selectionChange(1)})}}}))}})})();(function(){CKEDITOR.plugins.liststyle={requires:"dialog,contextmenu",init:function(a){if(!a.blockless){var b;b=new CKEDITOR.dialogCommand("numberedListStyle",{requiredContent:"ol",allowedContent:"ol{list-style-type}[start]; li{list-style-type}[value]",contentTransformations:[["ol: listTypeToStyle"]]});b=a.addCommand("numberedListStyle",b);a.addFeature(b);CKEDITOR.dialog.add("numberedListStyle",this.path+"dialogs/liststyle.js");b=new CKEDITOR.dialogCommand("bulletedListStyle",{requiredContent:"ul",
789a.addFeature(b);CKEDITOR.dialog.add("bulletedListStyle",this.path+"dialogs/liststyle.js");a.addMenuGroup("list",108);a.addMenuItems({numberedlist:{label:a.lang.liststyle.numberedTitle,group:"list",command:"numberedListStyle"},bulletedlist:{label:a.lang.liststyle.bulletedTitle,group:"list",command:"bulletedListStyle"}});a.contextMenu.addListener(function(a){if(!a||a.isReadOnly())return null;for(;a;){var b=a.getName();if("ol"==b)return{numberedlist:CKEDITOR.TRISTATE_OFF};if("ul"==b)return{bulletedlist:CKEDITOR.TRISTATE_OFF}; 863allowedContent:"ul{list-style-type}",contentTransformations:[["ul: listTypeToStyle"]]});b=a.addCommand("bulletedListStyle",b);a.addFeature(b);CKEDITOR.dialog.add("bulletedListStyle",this.path+"dialogs/liststyle.js");a.addMenuGroup("list",108);a.addMenuItems({numberedlist:{label:a.lang.liststyle.numberedTitle,group:"list",command:"numberedListStyle"},bulletedlist:{label:a.lang.liststyle.bulletedTitle,group:"list",command:"bulletedListStyle"}});a.contextMenu.addListener(function(a){if(!a||a.isReadOnly())return null;
790a=a.getParent()}return null})}}};CKEDITOR.plugins.add("liststyle",CKEDITOR.plugins.liststyle)})();(function(){function V(a,c,d){return n(c)&&n(d)&&d.equals(c.getNext(function(a){return!(E(a)||F(a)||u(a))}))}function z(a){this.upper=a[0];this.lower=a[1];this.set.apply(this,a.slice(2))}function O(a){var c=a.element;if(c&&n(c)&&(c=c.getAscendant(a.triggers,!0))&&a.editable.contains(c)){var d=P(c);if("true"==d.getAttribute("contenteditable"))return c;if(d.is(a.triggers))return d}return null}function ka(a,c,d){r(a,c);r(a,d);a=c.size.bottom;d=d.size.top;return a&&d?0|(a+d)/2:a||d}function w(a,c,d){return c= 864for(;a;){var b=a.getName();if("ol"==b)return{numberedlist:CKEDITOR.TRISTATE_OFF};if("ul"==b)return{bulletedlist:CKEDITOR.TRISTATE_OFF};a=a.getParent()}return null})}}};CKEDITOR.plugins.add("liststyle",CKEDITOR.plugins.liststyle)})();(function(){function V(a,c,d){return n(c)&&n(d)&&d.equals(c.getNext(function(a){return!(E(a)||F(a)||u(a))}))}function z(a){this.upper=a[0];this.lower=a[1];this.set.apply(this,a.slice(2))}function O(a){var c=a.element;if(c&&n(c)&&(c=c.getAscendant(a.triggers,!0))&&a.editable.contains(c)){var d=P(c);if("true"==d.getAttribute("contenteditable"))return c;if(d.is(a.triggers))return d}return null}function ka(a,c,d){r(a,c);r(a,d);a=c.size.bottom;d=d.size.top;return a&&d?0|(a+d)/2:a||d}function w(a,c,d){return c=
791c[d?"getPrevious":"getNext"](function(b){return b&&b.type==CKEDITOR.NODE_TEXT&&!E(b)||n(b)&&!u(b)&&!A(a,b)})}function q(a,c,d){return a>c&&a<d}function P(a,c){if(a.data("cke-editable"))return null;for(c||(a=a.getParent());a&&!a.data("cke-editable");){if(a.hasAttribute("contenteditable"))return a;a=a.getParent()}return null}function la(a){var c=a.doc,d=G('\x3cspan contenteditable\x3d"false" style\x3d"'+Q+"position:absolute;border-top:1px dashed "+a.boxColor+'"\x3e\x3c/span\x3e',c),b=CKEDITOR.getUrl(this.path+ 865c[d?"getPrevious":"getNext"](function(b){return b&&b.type==CKEDITOR.NODE_TEXT&&!E(b)||n(b)&&!u(b)&&!A(a,b)})}function q(a,c,d){return a>c&&a<d}function P(a,c){if(a.data("cke-editable"))return null;for(c||(a=a.getParent());a&&!a.data("cke-editable");){if(a.hasAttribute("contenteditable"))return a;a=a.getParent()}return null}function la(a){var c=a.doc,d=G('\x3cspan contenteditable\x3d"false" style\x3d"'+Q+"position:absolute;border-top:1px dashed "+a.boxColor+'"\x3e\x3c/span\x3e',c),b=CKEDITOR.getUrl(this.path+
792"images/"+(t.hidpi?"hidpi/":"")+"icon"+(a.rtl?"-rtl":"")+".png");v(d,{attach:function(){this.wrap.getParent()||this.wrap.appendTo(a.editable,!0);return this},lineChildren:[v(G('\x3cspan title\x3d"'+a.editor.lang.magicline.title+'" contenteditable\x3d"false"\x3e\x26#8629;\x3c/span\x3e',c),{base:Q+"height:17px;width:17px;"+(a.rtl?"left":"right")+":17px;background:url("+b+") center no-repeat "+a.boxColor+";cursor:pointer;"+(t.hc?"font-size: 15px;line-height:14px;border:1px solid #fff;text-align:center;": 866"images/"+(t.hidpi?"hidpi/":"")+"icon"+(a.rtl?"-rtl":"")+".png");v(d,{attach:function(){this.wrap.getParent()||this.wrap.appendTo(a.editable,!0);return this},lineChildren:[v(G('\x3cspan title\x3d"'+a.editor.lang.magicline.title+'" contenteditable\x3d"false"\x3e\x26#8629;\x3c/span\x3e',c),{base:Q+"height:17px;width:17px;"+(a.rtl?"left":"right")+":17px;background:url("+b+") center no-repeat "+a.boxColor+";cursor:pointer;"+(t.hc?"font-size: 15px;line-height:14px;border:1px solid #fff;text-align:center;":
793"")+(t.hidpi?"background-size: 9px 10px;":""),looks:["top:-8px; border-radius: 2px;","top:-17px; border-radius: 2px 2px 0px 0px;","top:-1px; border-radius: 0px 0px 2px 2px;"]}),v(G(W,c),{base:X+"left:0px;border-left-color:"+a.boxColor+";",looks:["border-width:8px 0 8px 8px;top:-8px","border-width:8px 0 0 8px;top:-8px","border-width:0 0 8px 8px;top:0px"]}),v(G(W,c),{base:X+"right:0px;border-right-color:"+a.boxColor+";",looks:["border-width:8px 8px 8px 0;top:-8px","border-width:8px 8px 0 0;top:-8px", 867"")+(t.hidpi?"background-size: 9px 10px;":""),looks:["top:-8px; border-radius: 2px;","top:-17px; border-radius: 2px 2px 0px 0px;","top:-1px; border-radius: 0px 0px 2px 2px;"]}),v(G(W,c),{base:X+"left:0px;border-left-color:"+a.boxColor+";",looks:["border-width:8px 0 8px 8px;top:-8px","border-width:8px 0 0 8px;top:-8px","border-width:0 0 8px 8px;top:0px"]}),v(G(W,c),{base:X+"right:0px;border-right-color:"+a.boxColor+";",looks:["border-width:8px 8px 8px 0;top:-8px","border-width:8px 8px 0 0;top:-8px",
@@ -828,11 +902,7 @@ CKEDITOR.TRISTATE_DISABLED?CKEDITOR.TRISTATE_DISABLED:n)},null,null,100)}}})})()
828CKEDITOR.plugins.removeformat={commands:{removeformat:{exec:function(a){for(var h=a._.removeFormatRegex||(a._.removeFormatRegex=new RegExp("^(?:"+a.config.removeFormatTags.replace(/,/g,"|")+")$","i")),e=a._.removeAttributes||(a._.removeAttributes=a.config.removeFormatAttributes.split(",")),f=CKEDITOR.plugins.removeformat.filter,m=a.getSelection().getRanges(),n=m.createIterator(),p=function(a){return a.type==CKEDITOR.NODE_ELEMENT},c;c=n.getNextRange();){c.collapsed||c.enlarge(CKEDITOR.ENLARGE_ELEMENT); 902CKEDITOR.plugins.removeformat={commands:{removeformat:{exec:function(a){for(var h=a._.removeFormatRegex||(a._.removeFormatRegex=new RegExp("^(?:"+a.config.removeFormatTags.replace(/,/g,"|")+")$","i")),e=a._.removeAttributes||(a._.removeAttributes=a.config.removeFormatAttributes.split(",")),f=CKEDITOR.plugins.removeformat.filter,m=a.getSelection().getRanges(),n=m.createIterator(),p=function(a){return a.type==CKEDITOR.NODE_ELEMENT},c;c=n.getNextRange();){c.collapsed||c.enlarge(CKEDITOR.ENLARGE_ELEMENT);
829var l=c.createBookmark(),b=l.startNode,d=l.endNode,k=function(b){for(var c=a.elementPath(b),e=c.elements,d=1,g;(g=e[d])&&!g.equals(c.block)&&!g.equals(c.blockLimit);d++)h.test(g.getName())&&f(a,g)&&b.breakParent(g)};k(b);if(d)for(k(d),b=b.getNextSourceNode(!0,CKEDITOR.NODE_ELEMENT);b&&!b.equals(d);)if(b.isReadOnly()){if(b.getPosition(d)&CKEDITOR.POSITION_CONTAINS)break;b=b.getNext(p)}else k=b.getNextSourceNode(!1,CKEDITOR.NODE_ELEMENT),"img"==b.getName()&&b.data("cke-realelement")||!f(a,b)||(h.test(b.getName())? 903var l=c.createBookmark(),b=l.startNode,d=l.endNode,k=function(b){for(var c=a.elementPath(b),e=c.elements,d=1,g;(g=e[d])&&!g.equals(c.block)&&!g.equals(c.blockLimit);d++)h.test(g.getName())&&f(a,g)&&b.breakParent(g)};k(b);if(d)for(k(d),b=b.getNextSourceNode(!0,CKEDITOR.NODE_ELEMENT);b&&!b.equals(d);)if(b.isReadOnly()){if(b.getPosition(d)&CKEDITOR.POSITION_CONTAINS)break;b=b.getNext(p)}else k=b.getNextSourceNode(!1,CKEDITOR.NODE_ELEMENT),"img"==b.getName()&&b.data("cke-realelement")||!f(a,b)||(h.test(b.getName())?
830b.remove(1):(b.removeAttributes(e),a.fire("removeFormatCleanup",b))),b=k;c.moveToBookmark(l)}a.forceNextSelectionCheck();a.getSelection().selectRanges(m)}}},filter:function(a,h){for(var e=a._.removeFormatFilters||[],f=0;f<e.length;f++)if(!1===e[f](h))return!1;return!0}};CKEDITOR.editor.prototype.addRemoveFormatFilter=function(a){this._.removeFormatFilters||(this._.removeFormatFilters=[]);this._.removeFormatFilters.push(a)};CKEDITOR.config.removeFormatTags="b,big,cite,code,del,dfn,em,font,i,ins,kbd,q,s,samp,small,span,strike,strong,sub,sup,tt,u,var"; 904b.remove(1):(b.removeAttributes(e),a.fire("removeFormatCleanup",b))),b=k;c.moveToBookmark(l)}a.forceNextSelectionCheck();a.getSelection().selectRanges(m)}}},filter:function(a,h){for(var e=a._.removeFormatFilters||[],f=0;f<e.length;f++)if(!1===e[f](h))return!1;return!0}};CKEDITOR.editor.prototype.addRemoveFormatFilter=function(a){this._.removeFormatFilters||(this._.removeFormatFilters=[]);this._.removeFormatFilters.push(a)};CKEDITOR.config.removeFormatTags="b,big,cite,code,del,dfn,em,font,i,ins,kbd,q,s,samp,small,span,strike,strong,sub,sup,tt,u,var";
831CKEDITOR.config.removeFormatAttributes="class,style,lang,width,height,align,hspace,valign";CKEDITOR.plugins.add("resize",{init:function(b){function f(d){var e=c.width,m=c.height,f=e+(d.data.$.screenX-n.x)*("rtl"==g?-1:1);d=m+(d.data.$.screenY-n.y);h&&(e=Math.max(a.resize_minWidth,Math.min(f,a.resize_maxWidth)));p&&(m=Math.max(a.resize_minHeight,Math.min(d,a.resize_maxHeight)));b.resize(h?e:null,m)}function k(){CKEDITOR.document.removeListener("mousemove",f);CKEDITOR.document.removeListener("mouseup",k);b.document&&(b.document.removeListener("mousemove",f),b.document.removeListener("mouseup", 905CKEDITOR.config.removeFormatAttributes="class,style,lang,width,height,align,hspace,valign";(function(){var f={preserveState:!0,editorFocus:!1,readOnly:1,exec:function(a){this.toggleState();this.refresh(a)},refresh:function(a){if(a.document){var b=this.state==CKEDITOR.TRISTATE_ON?"attachClass":"removeClass";a.editable()[b]("cke_show_borders")}}};CKEDITOR.plugins.add("showborders",{modes:{wysiwyg:1},onLoad:function(){var a;a=(CKEDITOR.env.ie6Compat?[".%1 table.%2,",".%1 table.%2 td, .%1 table.%2 th","{","border : #d3d3d3 1px dotted","}"]:".%1 table.%2,;.%1 table.%2 \x3e tr \x3e td, .%1 table.%2 \x3e tr \x3e th,;.%1 table.%2 \x3e tbody \x3e tr \x3e td, .%1 table.%2 \x3e tbody \x3e tr \x3e th,;.%1 table.%2 \x3e thead \x3e tr \x3e td, .%1 table.%2 \x3e thead \x3e tr \x3e th,;.%1 table.%2 \x3e tfoot \x3e tr \x3e td, .%1 table.%2 \x3e tfoot \x3e tr \x3e th;{;border : #d3d3d3 1px dotted;}".split(";")).join("").replace(/%2/g,
832k))}var a=b.config,r=b.ui.spaceId("resizer"),g=b.element?b.element.getDirection(1):"ltr";!a.resize_dir&&(a.resize_dir="vertical");void 0===a.resize_maxWidth&&(a.resize_maxWidth=3E3);void 0===a.resize_maxHeight&&(a.resize_maxHeight=3E3);void 0===a.resize_minWidth&&(a.resize_minWidth=750);void 0===a.resize_minHeight&&(a.resize_minHeight=250);if(!1!==a.resize_enabled){var l=null,n,c,h=("both"==a.resize_dir||"horizontal"==a.resize_dir)&&a.resize_minWidth!=a.resize_maxWidth,p=("both"==a.resize_dir||"vertical"==
833a.resize_dir)&&a.resize_minHeight!=a.resize_maxHeight,q=CKEDITOR.tools.addFunction(function(d){l||(l=b.getResizable());c={width:l.$.offsetWidth||0,height:l.$.offsetHeight||0};n={x:d.screenX,y:d.screenY};a.resize_minWidth>c.width&&(a.resize_minWidth=c.width);a.resize_minHeight>c.height&&(a.resize_minHeight=c.height);CKEDITOR.document.on("mousemove",f);CKEDITOR.document.on("mouseup",k);b.document&&(b.document.on("mousemove",f),b.document.on("mouseup",k));d.preventDefault&&d.preventDefault()});b.on("destroy",
834function(){CKEDITOR.tools.removeFunction(q)});b.on("uiSpace",function(a){if("bottom"==a.data.space){var e="";h&&!p&&(e=" cke_resizer_horizontal");!h&&p&&(e=" cke_resizer_vertical");var c='\x3cspan id\x3d"'+r+'" class\x3d"cke_resizer'+e+" cke_resizer_"+g+'" title\x3d"'+CKEDITOR.tools.htmlEncode(b.lang.common.resize)+'" onmousedown\x3d"CKEDITOR.tools.callFunction('+q+', event)"\x3e'+("ltr"==g?"◢":"◣")+"\x3c/span\x3e";"ltr"==g&&"ltr"==e?a.data.html+=c:a.data.html=c+a.data.html}},b,null,100);b.on("maximize",
835function(a){b.ui.space("resizer")[a.data==CKEDITOR.TRISTATE_ON?"hide":"show"]()})}}});(function(){var f={preserveState:!0,editorFocus:!1,readOnly:1,exec:function(a){this.toggleState();this.refresh(a)},refresh:function(a){if(a.document){var b=this.state==CKEDITOR.TRISTATE_ON?"attachClass":"removeClass";a.editable()[b]("cke_show_borders")}}};CKEDITOR.plugins.add("showborders",{modes:{wysiwyg:1},onLoad:function(){var a;a=(CKEDITOR.env.ie6Compat?[".%1 table.%2,",".%1 table.%2 td, .%1 table.%2 th","{","border : #d3d3d3 1px dotted","}"]:".%1 table.%2,;.%1 table.%2 \x3e tr \x3e td, .%1 table.%2 \x3e tr \x3e th,;.%1 table.%2 \x3e tbody \x3e tr \x3e td, .%1 table.%2 \x3e tbody \x3e tr \x3e th,;.%1 table.%2 \x3e thead \x3e tr \x3e td, .%1 table.%2 \x3e thead \x3e tr \x3e th,;.%1 table.%2 \x3e tfoot \x3e tr \x3e td, .%1 table.%2 \x3e tfoot \x3e tr \x3e th;{;border : #d3d3d3 1px dotted;}".split(";")).join("").replace(/%2/g,
836"cke_show_border").replace(/%1/g,"cke_show_borders ");CKEDITOR.addCss(a)},init:function(a){var b=a.addCommand("showborders",f);b.canUndo=!1;!1!==a.config.startupShowBorders&&b.setState(CKEDITOR.TRISTATE_ON);a.on("mode",function(){b.state!=CKEDITOR.TRISTATE_DISABLED&&b.refresh(a)},null,null,100);a.on("contentDom",function(){b.state!=CKEDITOR.TRISTATE_DISABLED&&b.refresh(a)});a.on("removeFormatCleanup",function(d){d=d.data;a.getCommand("showborders").state==CKEDITOR.TRISTATE_ON&&d.is("table")&&(!d.hasAttribute("border")|| 906"cke_show_border").replace(/%1/g,"cke_show_borders ");CKEDITOR.addCss(a)},init:function(a){var b=a.addCommand("showborders",f);b.canUndo=!1;!1!==a.config.startupShowBorders&&b.setState(CKEDITOR.TRISTATE_ON);a.on("mode",function(){b.state!=CKEDITOR.TRISTATE_DISABLED&&b.refresh(a)},null,null,100);a.on("contentDom",function(){b.state!=CKEDITOR.TRISTATE_DISABLED&&b.refresh(a)});a.on("removeFormatCleanup",function(d){d=d.data;a.getCommand("showborders").state==CKEDITOR.TRISTATE_ON&&d.is("table")&&(!d.hasAttribute("border")||
8370>=parseInt(d.getAttribute("border"),10))&&d.addClass("cke_show_border")})},afterInit:function(a){var b=a.dataProcessor;a=b&&b.dataFilter;b=b&&b.htmlFilter;a&&a.addRules({elements:{table:function(a){a=a.attributes;var b=a["class"],c=parseInt(a.border,10);c&&!(0>=c)||b&&-1!=b.indexOf("cke_show_border")||(a["class"]=(b||"")+" cke_show_border")}}});b&&b.addRules({elements:{table:function(a){a=a.attributes;var b=a["class"];b&&(a["class"]=b.replace("cke_show_border","").replace(/\s{2}/," ").replace(/^\s+|\s+$/, 9070>=parseInt(d.getAttribute("border"),10))&&d.addClass("cke_show_border")})},afterInit:function(a){var b=a.dataProcessor;a=b&&b.dataFilter;b=b&&b.htmlFilter;a&&a.addRules({elements:{table:function(a){a=a.attributes;var b=a["class"],c=parseInt(a.border,10);c&&!(0>=c)||b&&-1!=b.indexOf("cke_show_border")||(a["class"]=(b||"")+" cke_show_border")}}});b&&b.addRules({elements:{table:function(a){a=a.attributes;var b=a["class"];b&&(a["class"]=b.replace("cke_show_border","").replace(/\s{2}/," ").replace(/^\s+|\s+$/,
838""))}}})}});CKEDITOR.on("dialogDefinition",function(a){var b=a.data.name;if("table"==b||"tableProperties"==b)if(a=a.data.definition,b=a.getContents("info").get("txtBorder"),b.commit=CKEDITOR.tools.override(b.commit,function(a){return function(b,c){a.apply(this,arguments);var e=parseInt(this.getValue(),10);c[!e||0>=e?"addClass":"removeClass"]("cke_show_border")}}),a=(a=a.getContents("advanced"))&&a.get("advCSSClasses"))a.setup=CKEDITOR.tools.override(a.setup,function(a){return function(){a.apply(this, 908""))}}})}});CKEDITOR.on("dialogDefinition",function(a){var b=a.data.name;if("table"==b||"tableProperties"==b)if(a=a.data.definition,b=a.getContents("info").get("txtBorder"),b.commit=CKEDITOR.tools.override(b.commit,function(a){return function(b,c){a.apply(this,arguments);var e=parseInt(this.getValue(),10);c[!e||0>=e?"addClass":"removeClass"]("cke_show_border")}}),a=(a=a.getContents("advanced"))&&a.get("advCSSClasses"))a.setup=CKEDITOR.tools.override(a.setup,function(a){return function(){a.apply(this,
@@ -846,34 +916,165 @@ c.tabIndex)}},f={exec:function(c){c.container.focusPrevious(!0,c.tabIndex)}};CKE
846CKEDITOR.tools.extend(f,h));c.addCommand("selectNextCell",k());c.addCommand("selectPreviousCell",k(!0))}})})(); 916CKEDITOR.tools.extend(f,h));c.addCommand("selectNextCell",k());c.addCommand("selectPreviousCell",k(!0))}})})();
847CKEDITOR.dom.element.prototype.focusNext=function(k,h){var g=void 0===h?this.getTabIndex():h,f,c,d,e,b,a;if(0>=g)for(b=this.getNextSourceNode(k,CKEDITOR.NODE_ELEMENT);b;){if(b.isVisible()&&0===b.getTabIndex()){d=b;break}b=b.getNextSourceNode(!1,CKEDITOR.NODE_ELEMENT)}else for(b=this.getDocument().getBody().getFirst();b=b.getNextSourceNode(!1,CKEDITOR.NODE_ELEMENT);){if(!f)if(!c&&b.equals(this)){if(c=!0,k){if(!(b=b.getNextSourceNode(!0,CKEDITOR.NODE_ELEMENT)))break;f=1}}else c&&!this.contains(b)&& 917CKEDITOR.dom.element.prototype.focusNext=function(k,h){var g=void 0===h?this.getTabIndex():h,f,c,d,e,b,a;if(0>=g)for(b=this.getNextSourceNode(k,CKEDITOR.NODE_ELEMENT);b;){if(b.isVisible()&&0===b.getTabIndex()){d=b;break}b=b.getNextSourceNode(!1,CKEDITOR.NODE_ELEMENT)}else for(b=this.getDocument().getBody().getFirst();b=b.getNextSourceNode(!1,CKEDITOR.NODE_ELEMENT);){if(!f)if(!c&&b.equals(this)){if(c=!0,k){if(!(b=b.getNextSourceNode(!0,CKEDITOR.NODE_ELEMENT)))break;f=1}}else c&&!this.contains(b)&&
848(f=1);if(b.isVisible()&&!(0>(a=b.getTabIndex()))){if(f&&a==g){d=b;break}a>g&&(!d||!e||a<e)?(d=b,e=a):d||0!==a||(d=b,e=a)}}d&&d.focus()}; 918(f=1);if(b.isVisible()&&!(0>(a=b.getTabIndex()))){if(f&&a==g){d=b;break}a>g&&(!d||!e||a<e)?(d=b,e=a):d||0!==a||(d=b,e=a)}}d&&d.focus()};
849CKEDITOR.dom.element.prototype.focusPrevious=function(k,h){for(var g=void 0===h?this.getTabIndex():h,f,c,d,e=0,b,a=this.getDocument().getBody().getLast();a=a.getPreviousSourceNode(!1,CKEDITOR.NODE_ELEMENT);){if(!f)if(!c&&a.equals(this)){if(c=!0,k){if(!(a=a.getPreviousSourceNode(!0,CKEDITOR.NODE_ELEMENT)))break;f=1}}else c&&!this.contains(a)&&(f=1);if(a.isVisible()&&!(0>(b=a.getTabIndex())))if(0>=g){if(f&&0===b){d=a;break}b>e&&(d=a,e=b)}else{if(f&&b==g){d=a;break}b<g&&(!d||b>e)&&(d=a,e=b)}}d&&d.focus()};(function(){function B(a){function d(){for(var b=g(),e=CKEDITOR.tools.clone(a.config.toolbarGroups)||q(a),f=0;f<e.length;f++){var l=e[f];if("/"!=l){"string"==typeof l&&(l=e[f]={name:l});var m,d=l.groups;if(d)for(var h=0;h<d.length;h++)m=d[h],(m=b[m])&&c(l,m);(m=b[l.name])&&c(l,m)}}return e}function g(){var b={},c,f,e;for(c in a.ui.items)f=a.ui.items[c],e=f.toolbar||"others",e=e.split(","),f=e[0],e=parseInt(e[1]||-1,10),b[f]||(b[f]=[]),b[f].push({name:c,order:e});for(f in b)b[f]=b[f].sort(function(b, 919CKEDITOR.dom.element.prototype.focusPrevious=function(k,h){for(var g=void 0===h?this.getTabIndex():h,f,c,d,e=0,b,a=this.getDocument().getBody().getLast();a=a.getPreviousSourceNode(!1,CKEDITOR.NODE_ELEMENT);){if(!f)if(!c&&a.equals(this)){if(c=!0,k){if(!(a=a.getPreviousSourceNode(!0,CKEDITOR.NODE_ELEMENT)))break;f=1}}else c&&!this.contains(a)&&(f=1);if(a.isVisible()&&!(0>(b=a.getTabIndex())))if(0>=g){if(f&&0===b){d=a;break}b>e&&(d=a,e=b)}else{if(f&&b==g){d=a;break}b<g&&(!d||b>e)&&(d=a,e=b)}}d&&d.focus()};(function(){function m(a,d){CKEDITOR.tools.extend(this,{editor:a,editable:a.editable(),doc:a.document,win:a.window},d,!0);this.inline=this.editable.isInline();this.inline||(this.frame=this.win.getFrame());this.target=this[this.inline?"editable":"doc"]}function n(a,d){CKEDITOR.tools.extend(this,d,{editor:a},!0)}function p(a,d){var b=a.editable();CKEDITOR.tools.extend(this,{editor:a,editable:b,inline:b.isInline(),doc:a.document,win:a.window,container:CKEDITOR.document.getBody(),winTop:CKEDITOR.document.getWindow()},
850a){return b.order==a.order?0:0>a.order?-1:0>b.order?1:b.order<a.order?-1:1});return b}function c(c,e){if(e.length){c.items?c.items.push(a.ui.create("-")):c.items=[];for(var f;f=e.shift();)f="string"==typeof f?f:f.name,b&&-1!=CKEDITOR.tools.indexOf(b,f)||(f=a.ui.create(f))&&a.addFeature(f)&&c.items.push(f)}}function h(b){var a=[],e,d,h;for(e=0;e<b.length;++e)d=b[e],h={},"/"==d?a.push(d):CKEDITOR.tools.isArray(d)?(c(h,CKEDITOR.tools.clone(d)),a.push(h)):d.items&&(c(h,CKEDITOR.tools.clone(d.items)), 920d,!0);this.hidden={};this.visible={};this.inline||(this.frame=this.win.getFrame());this.queryViewport();var c=CKEDITOR.tools.bind(this.queryViewport,this),e=CKEDITOR.tools.bind(this.hideVisible,this),g=CKEDITOR.tools.bind(this.removeAll,this);b.attachListener(this.winTop,"resize",c);b.attachListener(this.winTop,"scroll",c);b.attachListener(this.winTop,"resize",e);b.attachListener(this.win,"scroll",e);b.attachListener(this.inline?b:this.frame,"mouseout",function(a){var b=a.data.$.clientX;a=a.data.$.clientY;
851h.name=d.name,a.push(h));return a}var b=a.config.removeButtons,b=b&&b.split(","),e=a.config.toolbar;"string"==typeof e&&(e=a.config["toolbar_"+e]);return a.toolbar=e?h(e):d()}function q(a){return a._.toolbarGroups||(a._.toolbarGroups=[{name:"document",groups:["mode","document","doctools"]},{name:"clipboard",groups:["clipboard","undo"]},{name:"editing",groups:["find","selection","spellchecker"]},{name:"forms"},"/",{name:"basicstyles",groups:["basicstyles","cleanup"]},{name:"paragraph",groups:["list", 921this.queryViewport();(b<=this.rect.left||b>=this.rect.right||a<=this.rect.top||a>=this.rect.bottom)&&this.hideVisible();(0>=b||b>=this.winTopPane.width||0>=a||a>=this.winTopPane.height)&&this.hideVisible()},this);b.attachListener(a,"resize",c);b.attachListener(a,"mode",g);a.on("destroy",g);this.lineTpl=(new CKEDITOR.template('\x3cdiv data-cke-lineutils-line\x3d"1" class\x3d"cke_reset_all" style\x3d"{lineStyle}"\x3e\x3cspan style\x3d"{tipLeftStyle}"\x3e\x26nbsp;\x3c/span\x3e\x3cspan style\x3d"{tipRightStyle}"\x3e\x26nbsp;\x3c/span\x3e\x3c/div\x3e')).output({lineStyle:CKEDITOR.tools.writeCssText(CKEDITOR.tools.extend({},
852"indent","blocks","align","bidi"]},{name:"links"},{name:"insert"},"/",{name:"styles"},{name:"colors"},{name:"tools"},{name:"others"},{name:"about"}])}var y=function(){this.toolbars=[];this.focusCommandExecuted=!1};y.prototype.focus=function(){for(var a=0,d;d=this.toolbars[a++];)for(var g=0,c;c=d.items[g++];)if(c.focus){c.focus();return}};var C={modes:{wysiwyg:1,source:1},readOnly:1,exec:function(a){a.toolbox&&(a.toolbox.focusCommandExecuted=!0,CKEDITOR.env.ie||CKEDITOR.env.air?setTimeout(function(){a.toolbox.focus()}, 922t,this.lineStyle,!0)),tipLeftStyle:CKEDITOR.tools.writeCssText(CKEDITOR.tools.extend({},q,{left:"0px","border-left-color":"red","border-width":"6px 0 6px 6px"},this.tipCss,this.tipLeftStyle,!0)),tipRightStyle:CKEDITOR.tools.writeCssText(CKEDITOR.tools.extend({},q,{right:"0px","border-right-color":"red","border-width":"6px 6px 6px 0"},this.tipCss,this.tipRightStyle,!0))})}function l(a){var d;if(d=a&&a.type==CKEDITOR.NODE_ELEMENT)d=!(r[a.getComputedStyle("float")]||r[a.getAttribute("align")]);return d&&
853100):a.toolbox.focus())}};CKEDITOR.plugins.add("toolbar",{requires:"button",init:function(a){var d,g=function(c,h){var b,e="rtl"==a.lang.dir,k=a.config.toolbarGroupCycling,r=e?37:39,e=e?39:37,k=void 0===k||k;switch(h){case 9:case CKEDITOR.SHIFT+9:for(;!b||!b.items.length;)if(b=9==h?(b?b.next:c.toolbar.next)||a.toolbox.toolbars[0]:(b?b.previous:c.toolbar.previous)||a.toolbox.toolbars[a.toolbox.toolbars.length-1],b.items.length)for(c=b.items[d?b.items.length-1:0];c&&!c.focus;)(c=d?c.previous:c.next)|| 923!u[a.getComputedStyle("position")]}CKEDITOR.plugins.add("lineutils");CKEDITOR.LINEUTILS_BEFORE=1;CKEDITOR.LINEUTILS_AFTER=2;CKEDITOR.LINEUTILS_INSIDE=4;m.prototype={start:function(a){var d=this,b=this.editor,c=this.doc,e,g,f,h,k=CKEDITOR.tools.eventsBuffer(50,function(){b.readOnly||"wysiwyg"!=b.mode||(d.relations={},(g=c.$.elementFromPoint(f,h))&&g.nodeType&&(e=new CKEDITOR.dom.element(g),d.traverseSearch(e),isNaN(f+h)||d.pixelSearch(e,f,h),a&&a(d.relations,f,h)))});this.listener=this.editable.attachListener(this.target,
854(b=0);c&&c.focus();return!1;case r:b=c;do b=b.next,!b&&k&&(b=c.toolbar.items[0]);while(b&&!b.focus);b?b.focus():g(c,9);return!1;case 40:return c.button&&c.button.hasArrow?(a.once("panelShow",function(b){b.data._.panel._.currentBlock.onKeyDown(40)}),c.execute()):g(c,40==h?r:e),!1;case e:case 38:b=c;do b=b.previous,!b&&k&&(b=c.toolbar.items[c.toolbar.items.length-1]);while(b&&!b.focus);b?b.focus():(d=1,g(c,CKEDITOR.SHIFT+9),d=0);return!1;case 27:return a.focus(),!1;case 13:case 32:return c.execute(), 924"mousemove",function(a){f=a.data.$.clientX;h=a.data.$.clientY;k.input()});this.editable.attachListener(this.inline?this.editable:this.frame,"mouseout",function(){k.reset()})},stop:function(){this.listener&&this.listener.removeListener()},getRange:function(){var a={};a[CKEDITOR.LINEUTILS_BEFORE]=CKEDITOR.POSITION_BEFORE_START;a[CKEDITOR.LINEUTILS_AFTER]=CKEDITOR.POSITION_AFTER_END;a[CKEDITOR.LINEUTILS_INSIDE]=CKEDITOR.POSITION_AFTER_START;return function(d){var b=this.editor.createRange();b.moveToPosition(this.relations[d.uid].element,
855!1}return!0};a.on("uiSpace",function(c){if(c.data.space==a.config.toolbarLocation){c.removeListener();a.toolbox=new y;var d=CKEDITOR.tools.getNextId(),b=['\x3cspan id\x3d"',d,'" class\x3d"cke_voice_label"\x3e',a.lang.toolbar.toolbars,"\x3c/span\x3e",'\x3cspan id\x3d"'+a.ui.spaceId("toolbox")+'" class\x3d"cke_toolbox" role\x3d"group" aria-labelledby\x3d"',d,'" onmousedown\x3d"return false;"\x3e'],d=!1!==a.config.toolbarStartupExpanded,e,k;a.config.toolbarCanCollapse&&a.elementMode!=CKEDITOR.ELEMENT_MODE_INLINE&& 925a[d.type]);return b}}(),store:function(){function a(a,b,c){var e=a.getUniqueId();e in c?c[e].type|=b:c[e]={element:a,type:b}}return function(d,b){var c;b&CKEDITOR.LINEUTILS_AFTER&&l(c=d.getNext())&&c.isVisible()&&(a(c,CKEDITOR.LINEUTILS_BEFORE,this.relations),b^=CKEDITOR.LINEUTILS_AFTER);b&CKEDITOR.LINEUTILS_INSIDE&&l(c=d.getFirst())&&c.isVisible()&&(a(c,CKEDITOR.LINEUTILS_BEFORE,this.relations),b^=CKEDITOR.LINEUTILS_INSIDE);a(d,b,this.relations)}}(),traverseSearch:function(a){var d,b,c;do if(c=a.$["data-cke-expando"],
856b.push('\x3cspan class\x3d"cke_toolbox_main"'+(d?"\x3e":' style\x3d"display:none"\x3e'));for(var r=a.toolbox.toolbars,f=B(a),l=0;l<f.length;l++){var m,n=0,v,p=f[l],w;if(p)if(e&&(b.push("\x3c/span\x3e"),k=e=0),"/"===p)b.push('\x3cspan class\x3d"cke_toolbar_break"\x3e\x3c/span\x3e');else{w=p.items||p;for(var x=0;x<w.length;x++){var t=w[x],q;if(t){var z=function(c){c=c.render(a,b);u=n.items.push(c)-1;0<u&&(c.previous=n.items[u-1],c.previous.next=c);c.toolbar=n;c.onkey=g;c.onfocus=function(){a.toolbox.focusCommandExecuted|| 926!(c&&c in this.relations)){if(a.equals(this.editable))break;if(l(a))for(d in this.lookups)(b=this.lookups[d](a))&&this.store(a,b)}while((!a||a.type!=CKEDITOR.NODE_ELEMENT||"true"!=a.getAttribute("contenteditable"))&&(a=a.getParent()))},pixelSearch:function(){function a(a,c,e,g,f){for(var h=0,k;f(e);){e+=g;if(25==++h)break;if(k=this.doc.$.elementFromPoint(c,e))if(k==a)h=0;else if(d(a,k)&&(h=0,l(k=new CKEDITOR.dom.element(k))))return k}}var d=CKEDITOR.env.ie||CKEDITOR.env.webkit?function(a,c){return a.contains(c)}:
857a.focus()}};if(t.type==CKEDITOR.UI_SEPARATOR)k=e&&t;else{q=!1!==t.canGroup;if(!n){m=CKEDITOR.tools.getNextId();n={id:m,items:[]};v=p.name&&(a.lang.toolbar.toolbarGroups[p.name]||p.name);b.push('\x3cspan id\x3d"',m,'" class\x3d"cke_toolbar"',v?' aria-labelledby\x3d"'+m+'_label"':"",' role\x3d"toolbar"\x3e');v&&b.push('\x3cspan id\x3d"',m,'_label" class\x3d"cke_voice_label"\x3e',v,"\x3c/span\x3e");b.push('\x3cspan class\x3d"cke_toolbar_start"\x3e\x3c/span\x3e');var u=r.push(n)-1;0<u&&(n.previous=r[u- 927function(a,c){return!!(a.compareDocumentPosition(c)&16)};return function(b,c,d){var g=this.win.getViewPaneSize().height,f=a.call(this,b.$,c,d,-1,function(a){return 0<a});c=a.call(this,b.$,c,d,1,function(a){return a<g});if(f)for(this.traverseSearch(f);!f.getParent().equals(b);)f=f.getParent();if(c)for(this.traverseSearch(c);!c.getParent().equals(b);)c=c.getParent();for(;f||c;){f&&(f=f.getNext(l));if(!f||f.equals(c))break;this.traverseSearch(f);c&&(c=c.getPrevious(l));if(!c||c.equals(f))break;this.traverseSearch(c)}}}(),
8581],n.previous.next=n)}q?e||(b.push('\x3cspan class\x3d"cke_toolgroup" role\x3d"presentation"\x3e'),e=1):e&&(b.push("\x3c/span\x3e"),e=0);k&&(z(k),k=0);z(t)}}}e&&(b.push("\x3c/span\x3e"),k=e=0);n&&b.push('\x3cspan class\x3d"cke_toolbar_end"\x3e\x3c/span\x3e\x3c/span\x3e')}}a.config.toolbarCanCollapse&&b.push("\x3c/span\x3e");if(a.config.toolbarCanCollapse&&a.elementMode!=CKEDITOR.ELEMENT_MODE_INLINE){var A=CKEDITOR.tools.addFunction(function(){a.execCommand("toolbarCollapse")});a.on("destroy",function(){CKEDITOR.tools.removeFunction(A)}); 928greedySearch:function(){this.relations={};for(var a=this.editable.getElementsByTag("*"),d=0,b,c,e;b=a.getItem(d++);)if(!b.equals(this.editable)&&b.type==CKEDITOR.NODE_ELEMENT&&(b.hasAttribute("contenteditable")||!b.isReadOnly())&&l(b)&&b.isVisible())for(e in this.lookups)(c=this.lookups[e](b))&&this.store(b,c);return this.relations}};n.prototype={locate:function(){function a(a,b){var c=a.element[b===CKEDITOR.LINEUTILS_BEFORE?"getPrevious":"getNext"]();return c&&l(c)?(a.siblingRect=c.getClientRect(),
859a.addCommand("toolbarCollapse",{readOnly:1,exec:function(b){var a=b.ui.space("toolbar_collapser"),c=a.getPrevious(),e=b.ui.space("contents"),d=c.getParent(),f=parseInt(e.$.style.height,10),h=d.$.offsetHeight,g=a.hasClass("cke_toolbox_collapser_min");g?(c.show(),a.removeClass("cke_toolbox_collapser_min"),a.setAttribute("title",b.lang.toolbar.toolbarCollapse)):(c.hide(),a.addClass("cke_toolbox_collapser_min"),a.setAttribute("title",b.lang.toolbar.toolbarExpand));a.getFirst().setText(g?"▲":"◀");e.setStyle("height", 929b==CKEDITOR.LINEUTILS_BEFORE?(a.siblingRect.bottom+a.elementRect.top)/2:(a.elementRect.bottom+a.siblingRect.top)/2):b==CKEDITOR.LINEUTILS_BEFORE?a.elementRect.top:a.elementRect.bottom}return function(d){var b;this.locations={};for(var c in d)b=d[c],b.elementRect=b.element.getClientRect(),b.type&CKEDITOR.LINEUTILS_BEFORE&&this.store(c,CKEDITOR.LINEUTILS_BEFORE,a(b,CKEDITOR.LINEUTILS_BEFORE)),b.type&CKEDITOR.LINEUTILS_AFTER&&this.store(c,CKEDITOR.LINEUTILS_AFTER,a(b,CKEDITOR.LINEUTILS_AFTER)),b.type&
860f-(d.$.offsetHeight-h)+"px");b.fire("resize",{outerHeight:b.container.$.offsetHeight,contentsHeight:e.$.offsetHeight,outerWidth:b.container.$.offsetWidth})},modes:{wysiwyg:1,source:1}});a.setKeystroke(CKEDITOR.ALT+(CKEDITOR.env.ie||CKEDITOR.env.webkit?189:109),"toolbarCollapse");b.push('\x3ca title\x3d"'+(d?a.lang.toolbar.toolbarCollapse:a.lang.toolbar.toolbarExpand)+'" id\x3d"'+a.ui.spaceId("toolbar_collapser")+'" tabIndex\x3d"-1" class\x3d"cke_toolbox_collapser');d||b.push(" cke_toolbox_collapser_min"); 930CKEDITOR.LINEUTILS_INSIDE&&this.store(c,CKEDITOR.LINEUTILS_INSIDE,(b.elementRect.top+b.elementRect.bottom)/2);return this.locations}}(),sort:function(){var a,d,b,c;return function(e,g){a=this.locations;d=[];for(var f in a)for(var h in a[f])if(b=Math.abs(e-a[f][h]),d.length){for(c=0;c<d.length;c++)if(b<d[c].dist){d.splice(c,0,{uid:+f,type:h,dist:b});break}c==d.length&&d.push({uid:+f,type:h,dist:b})}else d.push({uid:+f,type:h,dist:b});return"undefined"!=typeof g?d.slice(0,g):d}}(),store:function(a,
861b.push('" onclick\x3d"CKEDITOR.tools.callFunction('+A+')"\x3e','\x3cspan class\x3d"cke_arrow"\x3e\x26#9650;\x3c/span\x3e',"\x3c/a\x3e")}b.push("\x3c/span\x3e");c.data.html+=b.join("")}});a.on("destroy",function(){if(this.toolbox){var a,d=0,b,e,g;for(a=this.toolbox.toolbars;d<a.length;d++)for(e=a[d].items,b=0;b<e.length;b++)g=e[b],g.clickFn&&CKEDITOR.tools.removeFunction(g.clickFn),g.keyDownFn&&CKEDITOR.tools.removeFunction(g.keyDownFn)}});a.on("uiReady",function(){var c=a.ui.space("toolbox");c&&a.focusManager.add(c, 931d,b){this.locations[a]||(this.locations[a]={});this.locations[a][d]=b}};var q={display:"block",width:"0px",height:"0px","border-color":"transparent","border-style":"solid",position:"absolute",top:"-6px"},t={height:"0px","border-top":"1px dashed red",position:"absolute","z-index":9999};p.prototype={removeAll:function(){for(var a in this.hidden)this.hidden[a].remove(),delete this.hidden[a];for(a in this.visible)this.visible[a].remove(),delete this.visible[a]},hideLine:function(a){var d=a.getUniqueId();
8621)});a.addCommand("toolbarFocus",C);a.setKeystroke(CKEDITOR.ALT+121,"toolbarFocus");a.ui.add("-",CKEDITOR.UI_SEPARATOR,{});a.ui.addHandler(CKEDITOR.UI_SEPARATOR,{create:function(){return{render:function(a,d){d.push('\x3cspan class\x3d"cke_toolbar_separator" role\x3d"separator"\x3e\x3c/span\x3e');return{}}}}})}});CKEDITOR.ui.prototype.addToolbarGroup=function(a,d,g){var c=q(this.editor),h=0===d,b={name:a};if(g){if(g=CKEDITOR.tools.search(c,function(a){return a.name==g})){!g.groups&&(g.groups=[]);if(d&& 932a.hide();this.hidden[d]=a;delete this.visible[d]},showLine:function(a){var d=a.getUniqueId();a.show();this.visible[d]=a;delete this.hidden[d]},hideVisible:function(){for(var a in this.visible)this.hideLine(this.visible[a])},placeLine:function(a,d){var b,c,e;if(b=this.getStyle(a.uid,a.type)){for(e in this.visible)if(this.visible[e].getCustomData("hash")!==this.hash){c=this.visible[e];break}if(!c)for(e in this.hidden)if(this.hidden[e].getCustomData("hash")!==this.hash){this.showLine(c=this.hidden[e]);
863(d=CKEDITOR.tools.indexOf(g.groups,d),0<=d)){g.groups.splice(d+1,0,a);return}h?g.groups.splice(0,0,a):g.groups.push(a);return}d=null}d&&(d=CKEDITOR.tools.indexOf(c,function(a){return a.name==d}));h?c.splice(0,0,a):"number"==typeof d?c.splice(d+1,0,b):c.push(a)}})();CKEDITOR.UI_SEPARATOR="separator";CKEDITOR.config.toolbarLocation="top";(function(){function m(a){function f(a){var b=!1;g.attachListener(g,"keydown",function(){var d=c.getBody().getElementsByTag(a);if(!b){for(var e=0;e<d.count();e++)d.getItem(e).setCustomData("retain",!0);b=!0}},null,null,1);g.attachListener(g,"keyup",function(){var d=c.getElementsByTag(a);b&&(1!=d.count()||d.getItem(0).getCustomData("retain")||d.getItem(0).remove(1),b=!1)})}var b=this.editor,c=a.document,d=c.body,e=c.getElementById("cke_actscrpt");e&&e.parentNode.removeChild(e);(e=c.getElementById("cke_shimscrpt"))&& 933break}c||this.showLine(c=this.addLine());c.setCustomData("hash",this.hash);this.visible[c.getUniqueId()]=c;c.setStyles(b);d&&d(c)}},getStyle:function(a,d){var b=this.relations[a],c=this.locations[a][d],e={};e.width=b.siblingRect?Math.max(b.siblingRect.width,b.elementRect.width):b.elementRect.width;e.top=this.inline?c+this.winTopScroll.y-this.rect.relativeY:this.rect.top+this.winTopScroll.y+c;if(e.top-this.winTopScroll.y<this.rect.top||e.top-this.winTopScroll.y>this.rect.bottom)return!1;this.inline?
864e.parentNode.removeChild(e);(e=c.getElementById("cke_basetagscrpt"))&&e.parentNode.removeChild(e);d.contentEditable=!0;CKEDITOR.env.ie&&(d.hideFocus=!0,d.disabled=!0,d.removeAttribute("disabled"));delete this._.isLoadingData;this.$=d;c=new CKEDITOR.dom.document(c);this.setup();this.fixInitialSelection();var g=this;CKEDITOR.env.ie&&!CKEDITOR.env.edge&&c.getDocumentElement().addClass(c.$.compatMode);CKEDITOR.env.ie&&!CKEDITOR.env.edge&&b.enterMode!=CKEDITOR.ENTER_P?f("p"):CKEDITOR.env.edge&&b.enterMode!= 934e.left=b.elementRect.left-this.rect.relativeX:(0<b.elementRect.left?e.left=this.rect.left+b.elementRect.left:(e.width+=b.elementRect.left,e.left=this.rect.left),0<(b=e.left+e.width-(this.rect.left+this.winPane.width))&&(e.width-=b));e.left+=this.winTopScroll.x;for(var g in e)e[g]=CKEDITOR.tools.cssLength(e[g]);return e},addLine:function(){var a=CKEDITOR.dom.element.createFromHtml(this.lineTpl);a.appendTo(this.container);return a},prepare:function(a,d){this.relations=a;this.locations=d;this.hash=Math.random()},
865CKEDITOR.ENTER_DIV&&f("div");if(CKEDITOR.env.webkit||CKEDITOR.env.ie&&10<CKEDITOR.env.version)c.getDocumentElement().on("mousedown",function(a){a.data.getTarget().is("html")&&setTimeout(function(){b.editable().focus()})});n(b);try{b.document.$.execCommand("2D-position",!1,!0)}catch(h){}(CKEDITOR.env.gecko||CKEDITOR.env.ie&&"CSS1Compat"==b.document.$.compatMode)&&this.attachListener(this,"keydown",function(a){var c=a.data.getKeystroke();if(33==c||34==c)if(CKEDITOR.env.ie)setTimeout(function(){b.getSelection().scrollIntoView()}, 935cleanup:function(){var a,d;for(d in this.visible)a=this.visible[d],a.getCustomData("hash")!==this.hash&&this.hideLine(a)},queryViewport:function(){this.winPane=this.win.getViewPaneSize();this.winTopScroll=this.winTop.getScrollPosition();this.winTopPane=this.winTop.getViewPaneSize();this.rect=this.getClientRect(this.inline?this.editable:this.frame)},getClientRect:function(a){a=a.getClientRect();var d=this.container.getDocumentPosition(),b=this.container.getComputedStyle("position");a.relativeX=a.relativeY=
8660);else if(b.window.$.innerHeight>this.$.offsetHeight){var d=b.createRange();d[33==c?"moveToElementEditStart":"moveToElementEditEnd"](this);d.select();a.data.preventDefault()}});CKEDITOR.env.ie&&this.attachListener(c,"blur",function(){try{c.$.selection.empty()}catch(a){}});CKEDITOR.env.iOS&&this.attachListener(c,"touchend",function(){a.focus()});d=b.document.getElementsByTag("title").getItem(0);d.data("cke-title",d.getText());CKEDITOR.env.ie&&(b.document.$.title=this._.docTitle);CKEDITOR.tools.setTimeout(function(){"unloaded"== 9360;"static"!=b&&(a.relativeY=d.y,a.relativeX=d.x,a.top-=a.relativeY,a.bottom-=a.relativeY,a.left-=a.relativeX,a.right-=a.relativeX);return a}};var r={left:1,right:1,center:1},u={absolute:1,fixed:1};CKEDITOR.plugins.lineutils={finder:m,locator:n,liner:p}})();CKEDITOR.plugins.add("notification",{init:function(b){function a(b){var a=new CKEDITOR.dom.element("div");a.setStyles({position:"fixed","margin-left":"-9999px"});a.setAttributes({"aria-live":"assertive","aria-atomic":"true"});a.setText(b);CKEDITOR.document.getBody().append(a);setTimeout(function(){a.remove()},100)}b._.notificationArea=new Area(b);b.showNotification=function(a,d,e){var f,l;"progress"==d?f=e:l=e;a=new CKEDITOR.plugins.notification(b,{message:a,type:d,progress:f,duration:l});a.show();
867this.status&&(this.status="ready");b.fire("contentDom");this._.isPendingFocus&&(b.focus(),this._.isPendingFocus=!1);setTimeout(function(){b.fire("dataReady")},0)},0,this)}function n(a){function f(){var c;a.editable().attachListener(a,"selectionChange",function(){var d=a.getSelection().getSelectedElement();d&&(c&&(c.detachEvent("onresizestart",b),c=null),d.$.attachEvent("onresizestart",b),c=d.$)})}function b(a){a.returnValue=!1}if(CKEDITOR.env.gecko)try{var c=a.document.$;c.execCommand("enableObjectResizing", 937return a};b.on("key",function(c){if(27==c.data.keyCode){var d=b._.notificationArea.notifications;d.length&&(a(b.lang.notification.closed),d[d.length-1].hide(),c.cancel())}})}});function Notification(b,a){CKEDITOR.tools.extend(this,a,{editor:b,id:"cke-"+CKEDITOR.tools.getUniqueId(),area:b._.notificationArea});a.type||(this.type="info");this.element=this._createElement();b.plugins.clipboard&&CKEDITOR.plugins.clipboard.preventDefaultDropOnElement(this.element)}
868!1,!a.config.disableObjectResizing);c.execCommand("enableInlineTableEditing",!1,!a.config.disableNativeTableHandles)}catch(d){}else CKEDITOR.env.ie&&11>CKEDITOR.env.version&&a.config.disableObjectResizing&&f(a)}function p(){var a=[];if(8<=CKEDITOR.document.$.documentMode){a.push("html.CSS1Compat [contenteditable\x3dfalse]{min-height:0 !important}");var f=[],b;for(b in CKEDITOR.dtd.$removeEmpty)f.push("html.CSS1Compat "+b+"[contenteditable\x3dfalse]");a.push(f.join(",")+"{display:inline-block}")}else CKEDITOR.env.gecko&& 938Notification.prototype={show:function(){!1!==this.editor.fire("notificationShow",{notification:this})&&(this.area.add(this),this._hideAfterTimeout())},update:function(b){var a=!0;!1===this.editor.fire("notificationUpdate",{notification:this,options:b})&&(a=!1);var c=this.element,d=c.findOne(".cke_notification_message"),e=c.findOne(".cke_notification_progress"),f=b.type;c.removeAttribute("role");b.progress&&"progress"!=this.type&&(f="progress");f&&(c.removeClass(this._getClass()),c.removeAttribute("aria-label"),
869(a.push("html{height:100% !important}"),a.push("img:-moz-broken{-moz-force-broken-image-icon:1;min-width:24px;min-height:24px}"));a.push("html{cursor:text;*cursor:auto}");a.push("img,input,textarea{cursor:default}");return a.join("\n")}CKEDITOR.plugins.add("wysiwygarea",{init:function(a){a.config.fullPage&&a.addFeature({allowedContent:"html head title; style [media,type]; body (*)[id]; meta link [*]",requiredContent:"body"});a.addMode("wysiwyg",function(f){function b(b){b&&b.removeListener();a.editable(new l(a, 939this.type=f,c.addClass(this._getClass()),c.setAttribute("aria-label",this.type),"progress"!=this.type||e?"progress"!=this.type&&e&&e.remove():(e=this._createProgressElement(),e.insertBefore(d)));void 0!==b.message&&(this.message=b.message,d.setHtml(this.message));void 0!==b.progress&&(this.progress=b.progress,e&&e.setStyle("width",this._getPercentageProgress()));a&&b.important&&(c.setAttribute("role","alert"),this.isVisible()||this.area.add(this));this.duration=b.duration;this._hideAfterTimeout()},
870d.$.contentWindow.document.body));a.setData(a.getData(1),f)}var c="document.open();"+(CKEDITOR.env.ie?"("+CKEDITOR.tools.fixDomain+")();":"")+"document.close();",c=CKEDITOR.env.air?"javascript:void(0)":CKEDITOR.env.ie&&!CKEDITOR.env.edge?"javascript:void(function(){"+encodeURIComponent(c)+"}())":"",d=CKEDITOR.dom.element.createFromHtml('\x3ciframe src\x3d"'+c+'" frameBorder\x3d"0"\x3e\x3c/iframe\x3e');d.setStyles({width:"100%",height:"100%"});d.addClass("cke_wysiwyg_frame").addClass("cke_reset"); 940hide:function(){!1!==this.editor.fire("notificationHide",{notification:this})&&this.area.remove(this)},isVisible:function(){return 0<=CKEDITOR.tools.indexOf(this.area.notifications,this)},_createElement:function(){var b=this,a,c,d=this.editor.lang.common.close;a=new CKEDITOR.dom.element("div");a.addClass("cke_notification");a.addClass(this._getClass());a.setAttributes({id:this.id,role:"alert","aria-label":this.type});"progress"==this.type&&a.append(this._createProgressElement());c=new CKEDITOR.dom.element("p");
871c=a.ui.space("contents");c.append(d);var e=CKEDITOR.env.ie&&!CKEDITOR.env.edge||CKEDITOR.env.gecko;if(e)d.on("load",b);var g=a.title,h=a.fire("ariaEditorHelpLabel",{}).label;g&&(CKEDITOR.env.ie&&h&&(g+=", "+h),d.setAttribute("title",g));if(h){var g=CKEDITOR.tools.getNextId(),k=CKEDITOR.dom.element.createFromHtml('\x3cspan id\x3d"'+g+'" class\x3d"cke_voice_label"\x3e'+h+"\x3c/span\x3e");c.append(k,1);d.setAttribute("aria-describedby",g)}a.on("beforeModeUnload",function(a){a.removeListener();k&&k.remove()}); 941c.addClass("cke_notification_message");c.setHtml(this.message);a.append(c);c=CKEDITOR.dom.element.createFromHtml('\x3ca class\x3d"cke_notification_close" href\x3d"javascript:void(0)" title\x3d"'+d+'" role\x3d"button" tabindex\x3d"-1"\x3e\x3cspan class\x3d"cke_label"\x3eX\x3c/span\x3e\x3c/a\x3e');a.append(c);c.on("click",function(){b.editor.focus();b.hide()});return a},_getClass:function(){return"progress"==this.type?"cke_notification_info":"cke_notification_"+this.type},_createProgressElement:function(){var b=
872d.setAttributes({tabIndex:a.tabIndex,allowTransparency:"true"});!e&&b();a.fire("ariaWidget",d)})}});CKEDITOR.editor.prototype.addContentsCss=function(a){var f=this.config,b=f.contentsCss;CKEDITOR.tools.isArray(b)||(f.contentsCss=b?[b]:[]);f.contentsCss.push(a)};var l=CKEDITOR.tools.createClass({$:function(){this.base.apply(this,arguments);this._.frameLoadedHandler=CKEDITOR.tools.addFunction(function(a){CKEDITOR.tools.setTimeout(m,0,this,a)},this);this._.docTitle=this.getWindow().getFrame().getAttribute("title")}, 942new CKEDITOR.dom.element("span");b.addClass("cke_notification_progress");b.setStyle("width",this._getPercentageProgress());return b},_getPercentageProgress:function(){return Math.round(100*(this.progress||0))+"%"},_hideAfterTimeout:function(){var b=this,a;this._hideTimeoutId&&clearTimeout(this._hideTimeoutId);if("number"==typeof this.duration)a=this.duration;else if("info"==this.type||"success"==this.type)a="number"==typeof this.editor.config.notification_duration?this.editor.config.notification_duration:
873base:CKEDITOR.editable,proto:{setData:function(a,f){var b=this.editor;if(f)this.setHtml(a),this.fixInitialSelection(),b.fire("dataReady");else{this._.isLoadingData=!0;b._.dataStore={id:1};var c=b.config,d=c.fullPage,e=c.docType,g=CKEDITOR.tools.buildStyleHtml(p()).replace(/<style>/,'\x3cstyle data-cke-temp\x3d"1"\x3e');d||(g+=CKEDITOR.tools.buildStyleHtml(b.config.contentsCss));var h=c.baseHref?'\x3cbase href\x3d"'+c.baseHref+'" data-cke-temp\x3d"1" /\x3e':"";d&&(a=a.replace(/<!DOCTYPE[^>]*>/i,function(a){b.docType= 9435E3;a&&(b._hideTimeoutId=setTimeout(function(){b.hide()},a))}};function Area(b){var a=this;this.editor=b;this.notifications=[];this.element=this._createElement();this._uiBuffer=CKEDITOR.tools.eventsBuffer(10,this._layout,this);this._changeBuffer=CKEDITOR.tools.eventsBuffer(500,this._layout,this);b.on("destroy",function(){a._removeListeners();a.element.remove()})}
874e=a;return""}).replace(/<\?xml\s[^\?]*\?>/i,function(a){b.xmlDeclaration=a;return""}));a=b.dataProcessor.toHtml(a);d?(/<body[\s|>]/.test(a)||(a="\x3cbody\x3e"+a),/<html[\s|>]/.test(a)||(a="\x3chtml\x3e"+a+"\x3c/html\x3e"),/<head[\s|>]/.test(a)?/<title[\s|>]/.test(a)||(a=a.replace(/<head[^>]*>/,"$\x26\x3ctitle\x3e\x3c/title\x3e")):a=a.replace(/<html[^>]*>/,"$\x26\x3chead\x3e\x3ctitle\x3e\x3c/title\x3e\x3c/head\x3e"),h&&(a=a.replace(/<head[^>]*?>/,"$\x26"+h)),a=a.replace(/<\/head\s*>/,g+"$\x26"),a= 944Area.prototype={add:function(b){this.notifications.push(b);this.element.append(b.element);1==this.element.getChildCount()&&(CKEDITOR.document.getBody().append(this.element),this._attachListeners());this._layout()},remove:function(b){var a=CKEDITOR.tools.indexOf(this.notifications,b);0>a||(this.notifications.splice(a,1),b.element.remove(),this.element.getChildCount()||(this._removeListeners(),this.element.remove()))},_createElement:function(){var b=this.editor,a=b.config,c=new CKEDITOR.dom.element("div");
875e+a):a=c.docType+'\x3chtml dir\x3d"'+c.contentsLangDirection+'" lang\x3d"'+(c.contentsLanguage||b.langCode)+'"\x3e\x3chead\x3e\x3ctitle\x3e'+this._.docTitle+"\x3c/title\x3e"+h+g+"\x3c/head\x3e\x3cbody"+(c.bodyId?' id\x3d"'+c.bodyId+'"':"")+(c.bodyClass?' class\x3d"'+c.bodyClass+'"':"")+"\x3e"+a+"\x3c/body\x3e\x3c/html\x3e";CKEDITOR.env.gecko&&(a=a.replace(/<body/,'\x3cbody contenteditable\x3d"true" '),2E4>CKEDITOR.env.version&&(a=a.replace(/<body[^>]*>/,"$\x26\x3c!-- cke-content-start --\x3e"))); 945c.addClass("cke_notifications_area");c.setAttribute("id","cke_notifications_area_"+b.name);c.setStyle("z-index",a.baseFloatZIndex-2);return c},_attachListeners:function(){var b=CKEDITOR.document.getWindow(),a=this.editor;b.on("scroll",this._uiBuffer.input);b.on("resize",this._uiBuffer.input);a.on("change",this._changeBuffer.input);a.on("floatingSpaceLayout",this._layout,this,null,20);a.on("blur",this._layout,this,null,20)},_removeListeners:function(){var b=CKEDITOR.document.getWindow(),a=this.editor;
876c='\x3cscript id\x3d"cke_actscrpt" type\x3d"text/javascript"'+(CKEDITOR.env.ie?' defer\x3d"defer" ':"")+"\x3evar wasLoaded\x3d0;function onload(){if(!wasLoaded)window.parent.CKEDITOR.tools.callFunction("+this._.frameLoadedHandler+",window);wasLoaded\x3d1;}"+(CKEDITOR.env.ie?"onload();":'document.addEventListener("DOMContentLoaded", onload, false );')+"\x3c/script\x3e";CKEDITOR.env.ie&&9>CKEDITOR.env.version&&(c+='\x3cscript id\x3d"cke_shimscrpt"\x3ewindow.parent.CKEDITOR.tools.enableHtml5Elements(document)\x3c/script\x3e'); 946b.removeListener("scroll",this._uiBuffer.input);b.removeListener("resize",this._uiBuffer.input);a.removeListener("change",this._changeBuffer.input);a.removeListener("floatingSpaceLayout",this._layout);a.removeListener("blur",this._layout)},_layout:function(){function b(){a.setStyle("left",k(n+d.width-g-h))}var a=this.element,c=this.editor,d=c.ui.contentsElement.getClientRect(),e=c.ui.contentsElement.getDocumentPosition(),f,l,r=a.getClientRect(),m,g=this._notificationWidth,h=this._notificationMargin;
877h&&CKEDITOR.env.ie&&10>CKEDITOR.env.version&&(c+='\x3cscript id\x3d"cke_basetagscrpt"\x3evar baseTag \x3d document.querySelector( "base" );baseTag.href \x3d baseTag.href;\x3c/script\x3e');a=a.replace(/(?=\s*<\/(:?head)>)/,c);this.clearCustomData();this.clearListeners();b.fire("contentDomUnload");var k=this.getDocument();try{k.write(a)}catch(l){setTimeout(function(){k.write(a)},0)}}},getData:function(a){if(a)return this.getHtml();a=this.editor;var f=a.config,b=f.fullPage,c=b&&a.docType,d=b&&a.xmlDeclaration, 947m=CKEDITOR.document.getWindow();var p=m.getScrollPosition(),q=m.getViewPaneSize(),t=CKEDITOR.document.getBody(),u=t.getDocumentPosition(),k=CKEDITOR.tools.cssLength;g&&h||(m=this.element.getChild(0),g=this._notificationWidth=m.getClientRect().width,h=this._notificationMargin=parseInt(m.getComputedStyle("margin-left"),10)+parseInt(m.getComputedStyle("margin-right"),10));c.toolbar&&(f=c.ui.space("top"),l=f.getClientRect());f&&f.isVisible()&&l.bottom>d.top&&l.bottom<d.bottom-r.height?a.setStyles({position:"fixed",
878e=this.getDocument(),b=b?e.getDocumentElement().getOuterHtml():e.getBody().getHtml();CKEDITOR.env.gecko&&f.enterMode!=CKEDITOR.ENTER_BR&&(b=b.replace(/<br>(?=\s*(:?$|<\/body>))/,""));b=a.dataProcessor.toDataFormat(b);d&&(b=d+"\n"+b);c&&(b=c+"\n"+b);return b},focus:function(){this._.isLoadingData?this._.isPendingFocus=!0:l.baseProto.focus.call(this)},detach:function(){var a=this.editor,f=a.document,b;try{b=a.window.getFrame()}catch(c){}l.baseProto.detach.call(this);this.clearCustomData();f.getDocumentElement().clearCustomData(); 948top:k(l.bottom)}):0<d.top?a.setStyles({position:"absolute",top:k(e.y)}):e.y+d.height-r.height>p.y?a.setStyles({position:"fixed",top:0}):a.setStyles({position:"absolute",top:k(e.y+d.height-r.height)});var n="fixed"==a.getStyle("position")?d.left:"static"!=t.getComputedStyle("position")?e.x-u.x:e.x;d.width<g+h?e.x+g+h>p.x+q.width?b():a.setStyle("left",k(n)):e.x+g+h>p.x+q.width?a.setStyle("left",k(n)):e.x+d.width/2+g/2+h>p.x+q.width?a.setStyle("left",k(n-e.x+p.x+q.width-g-h)):0>d.left+d.width-g-h?b():
879CKEDITOR.tools.removeFunction(this._.frameLoadedHandler);b&&b.getParent()?(b.clearCustomData(),(a=b.removeCustomData("onResize"))&&a.removeListener(),b.remove()):CKEDITOR.warn("editor-destroy-iframe")}}})})();CKEDITOR.config.disableObjectResizing=!1;CKEDITOR.config.disableNativeTableHandles=!0;CKEDITOR.config.disableNativeSpellChecker=!0;CKEDITOR.config.plugins='dialogui,dialog,a11yhelp,basicstyles,panel,floatpanel,menu,contextmenu,dialogadvtab,elementspath,enterkey,entities,popup,filebrowser,floatingspace,listblock,button,richcombo,format,horizontalrule,htmlwriter,fakeobjects,iframe,image,indent,indentblock,indentlist,justify,link,list,liststyle,magicline,maximize,removeformat,resize,showborders,sourcearea,tab,toolbar,wysiwygarea';CKEDITOR.config.skin='moono';(function() {var setIcons = function(icons, strip) {var path = CKEDITOR.getUrl( 'plugins/' + strip );icons = icons.split( ',' );for ( var i = 0; i < icons.length; i++ )CKEDITOR.skin.icons[ icons[ i ] ] = { path: path, offset: -icons[ ++i ], bgsize : icons[ ++i ] };};if (CKEDITOR.env.hidpi) setIcons('bold,0,,italic,24,,strike,48,,subscript,72,,superscript,96,,underline,120,,horizontalrule,144,,iframe,168,,image,192,,indent-rtl,216,,indent,240,,outdent-rtl,264,,outdent,288,,justifyblock,312,,justifycenter,336,,justifyleft,360,,justifyright,384,,anchor-rtl,408,,anchor,432,,link,456,,unlink,480,,bulletedlist-rtl,504,,bulletedlist,528,,numberedlist-rtl,552,,numberedlist,576,,maximize,600,,removeformat,624,,source-rtl,648,,source,672,','icons_hidpi.png');else setIcons('bold,0,auto,italic,24,auto,strike,48,auto,subscript,72,auto,superscript,96,auto,underline,120,auto,horizontalrule,144,auto,iframe,168,auto,image,192,auto,indent-rtl,216,auto,indent,240,auto,outdent-rtl,264,auto,outdent,288,auto,justifyblock,312,auto,justifycenter,336,auto,justifyleft,360,auto,justifyright,384,auto,anchor-rtl,408,auto,anchor,432,auto,link,456,auto,unlink,480,auto,bulletedlist-rtl,504,auto,bulletedlist,528,auto,numberedlist-rtl,552,auto,numberedlist,576,auto,maximize,600,auto,removeformat,624,auto,source-rtl,648,auto,source,672,auto','icons.png');})();CKEDITOR.lang.languages={"en":1,"fr":1};}()); \ No newline at end of file 9490>d.left+d.width/2-g/2?a.setStyle("left",k(n-e.x+p.x)):a.setStyle("left",k(n+d.width/2-g/2-h/2))}};CKEDITOR.plugins.notification=Notification;(function(){function q(b,a,c){a.type||(a.type="auto");if(c&&!1===b.fire("beforePaste",a)||!a.dataValue&&a.dataTransfer.isEmpty())return!1;a.dataValue||(a.dataValue="");if(CKEDITOR.env.gecko&&"drop"==a.method&&b.toolbox)b.once("afterPaste",function(){b.toolbox.focus()});return b.fire("paste",a)}function y(b){function a(){var a=b.editable();if(CKEDITOR.plugins.clipboard.isCustomCopyCutSupported){var c=function(a){b.readOnly&&"cut"==a.name||m.initPasteDataTransfer(a,b);a.data.preventDefault()};a.on("copy",
950c);a.on("cut",c);a.on("cut",function(){b.readOnly||b.extractSelectedHtml()},null,null,999)}a.on(m.mainPasteEvent,function(b){"beforepaste"==m.mainPasteEvent&&n||t(b)});"beforepaste"==m.mainPasteEvent&&(a.on("paste",function(b){u||(f(),b.data.preventDefault(),t(b),e("paste"))}),a.on("contextmenu",g,null,null,0),a.on("beforepaste",function(b){!b.data||b.data.$.ctrlKey||b.data.$.shiftKey||g()},null,null,0));a.on("beforecut",function(){!n&&h(b)});var d;a.attachListener(CKEDITOR.env.ie?a:b.document.getDocumentElement(),
951"mouseup",function(){d=setTimeout(function(){r()},0)});b.on("destroy",function(){clearTimeout(d)});a.on("keyup",r)}function c(a){return{type:a,canUndo:"cut"==a,startDisabled:!0,fakeKeystroke:"cut"==a?CKEDITOR.CTRL+88:CKEDITOR.CTRL+67,exec:function(){"cut"==this.type&&h();var a;var c=this.type;if(CKEDITOR.env.ie)a=e(c);else try{a=b.document.$.execCommand(c,!1,null)}catch(d){a=!1}a||b.showNotification(b.lang.clipboard[this.type+"Error"]);return a}}}function d(){return{canUndo:!1,async:!0,fakeKeystroke:CKEDITOR.CTRL+
95286,exec:function(b,a){function c(a,g){g="undefined"!==typeof g?g:!0;a?(a.method="paste",a.dataTransfer||(a.dataTransfer=m.initPasteDataTransfer()),q(b,a,g)):d&&b.showNotification(l,"info",b.config.clipboard_notificationDuration);b.fire("afterCommandExec",{name:"paste",command:e,returnValue:!!a})}a="undefined"!==typeof a&&null!==a?a:{};var e=this,d="undefined"!==typeof a.notification?a.notification:!0,g=a.type,h=CKEDITOR.tools.keystrokeToString(b.lang.common.keyboard,b.getCommandKeystroke(this)),l=
953"string"===typeof d?d:b.lang.clipboard.pasteNotification.replace(/%1/,'\x3ckbd aria-label\x3d"'+h.aria+'"\x3e'+h.display+"\x3c/kbd\x3e"),h="string"===typeof a?a:a.dataValue;g?b._.nextPasteType=g:delete b._.nextPasteType;"string"===typeof h?c({dataValue:h}):b.getClipboardData(c)}}}function f(){u=1;setTimeout(function(){u=0},100)}function g(){n=1;setTimeout(function(){n=0},10)}function e(a){var c=b.document,d=c.getBody(),e=!1,g=function(){e=!0};d.on(a,g);7<CKEDITOR.env.version?c.$.execCommand(a):c.$.selection.createRange().execCommand(a);
954d.removeListener(a,g);return e}function h(){if(CKEDITOR.env.ie&&!CKEDITOR.env.quirks){var a=b.getSelection(),c,d,e;a.getType()==CKEDITOR.SELECTION_ELEMENT&&(c=a.getSelectedElement())&&(d=a.getRanges()[0],e=b.document.createText(""),e.insertBefore(c),d.setStartBefore(e),d.setEndAfter(c),a.selectRanges([d]),setTimeout(function(){c.getParent()&&(e.remove(),a.selectElement(c))},0))}}function k(a,c){var d=b.document,e=b.editable(),g=function(b){b.cancel()},h;if(!d.getById("cke_pastebin")){var l=b.getSelection(),
955t=l.createBookmarks();CKEDITOR.env.ie&&l.root.fire("selectionchange");var f=new CKEDITOR.dom.element(!CKEDITOR.env.webkit&&!e.is("body")||CKEDITOR.env.ie?"div":"body",d);f.setAttributes({id:"cke_pastebin","data-cke-temp":"1"});var k=0,d=d.getWindow();CKEDITOR.env.webkit?(e.append(f),f.addClass("cke_editable"),e.is("body")||(k="static"!=e.getComputedStyle("position")?e:CKEDITOR.dom.element.get(e.$.offsetParent),k=k.getDocumentPosition().y)):e.getAscendant(CKEDITOR.env.ie?"body":"html",1).append(f);
956f.setStyles({position:"absolute",top:d.getScrollPosition().y-k+10+"px",width:"1px",height:Math.max(1,d.getViewPaneSize().height-20)+"px",overflow:"hidden",margin:0,padding:0});CKEDITOR.env.safari&&f.setStyles(CKEDITOR.tools.cssVendorPrefix("user-select","text"));(k=f.getParent().isReadOnly())?(f.setOpacity(0),f.setAttribute("contenteditable",!0)):f.setStyle("ltr"==b.config.contentsLangDirection?"left":"right","-10000px");b.on("selectionChange",g,null,null,0);if(CKEDITOR.env.webkit||CKEDITOR.env.gecko)h=
957e.once("blur",g,null,null,-100);k&&f.focus();k=new CKEDITOR.dom.range(f);k.selectNodeContents(f);var r=k.select();CKEDITOR.env.ie&&(h=e.once("blur",function(){b.lockSelection(r)}));var p=CKEDITOR.document.getWindow().getScrollPosition().y;setTimeout(function(){CKEDITOR.env.webkit&&(CKEDITOR.document.getBody().$.scrollTop=p);h&&h.removeListener();CKEDITOR.env.ie&&e.focus();l.selectBookmarks(t);f.remove();var a;CKEDITOR.env.webkit&&(a=f.getFirst())&&a.is&&a.hasClass("Apple-style-span")&&(f=a);b.removeListener("selectionChange",
958g);c(f.getHtml())},0)}}function v(){if("paste"==m.mainPasteEvent)return b.fire("beforePaste",{type:"auto",method:"paste"}),!1;b.focus();f();var a=b.focusManager;a.lock();if(b.editable().fire(m.mainPasteEvent)&&!e("paste"))return a.unlock(),!1;a.unlock();return!0}function l(a){if("wysiwyg"==b.mode)switch(a.data.keyCode){case CKEDITOR.CTRL+86:case CKEDITOR.SHIFT+45:a=b.editable();f();"paste"==m.mainPasteEvent&&a.fire("beforepaste");break;case CKEDITOR.CTRL+88:case CKEDITOR.SHIFT+46:b.fire("saveSnapshot"),
959setTimeout(function(){b.fire("saveSnapshot")},50)}}function t(a){var c={type:"auto",method:"paste",dataTransfer:m.initPasteDataTransfer(a)};c.dataTransfer.cacheData();var e=!1!==b.fire("beforePaste",c);e&&m.canClipboardApiBeTrusted(c.dataTransfer,b)?(a.data.preventDefault(),setTimeout(function(){q(b,c)},0)):k(a,function(a){c.dataValue=a.replace(/<span[^>]+data-cke-bookmark[^<]*?<\/span>/ig,"");e&&q(b,c)})}function r(){if("wysiwyg"==b.mode){var a=p("paste");b.getCommand("cut").setState(p("cut"));b.getCommand("copy").setState(p("copy"));
960b.getCommand("paste").setState(a);b.fire("pasteState",a)}}function p(a){if(w&&a in{paste:1,cut:1})return CKEDITOR.TRISTATE_DISABLED;if("paste"==a)return CKEDITOR.TRISTATE_OFF;a=b.getSelection();var c=a.getRanges();return a.getType()==CKEDITOR.SELECTION_NONE||1==c.length&&c[0].collapsed?CKEDITOR.TRISTATE_DISABLED:CKEDITOR.TRISTATE_OFF}var m=CKEDITOR.plugins.clipboard,n=0,u=0,w=0;(function(){b.on("key",l);b.on("contentDom",a);b.on("selectionChange",function(b){w=b.data.selection.getRanges()[0].checkReadOnly();
961r()});b.contextMenu&&b.contextMenu.addListener(function(b,a){w=a.getRanges()[0].checkReadOnly();return{cut:p("cut"),copy:p("copy"),paste:p("paste")}})})();(function(){function a(c,e,d,g,h){var l=b.lang.clipboard[e];b.addCommand(e,d);b.ui.addButton&&b.ui.addButton(c,{label:l,command:e,toolbar:"clipboard,"+g});b.addMenuItems&&b.addMenuItem(e,{label:l,command:e,group:"clipboard",order:h})}a("Cut","cut",c("cut"),10,1);a("Copy","copy",c("copy"),20,4);a("Paste","paste",d(),30,8)})();b.getClipboardData=
962function(a,c){function e(b){b.removeListener();b.cancel();c(b.data)}c||(c=a,a=null);b.on("paste",e,null,null,0);!1===v()&&(b.removeListener("paste",e),c(null))}}function z(b){if(CKEDITOR.env.webkit){if(!b.match(/^[^<]*$/g)&&!b.match(/^(<div><br( ?\/)?><\/div>|<div>[^<]*<\/div>)*$/gi))return"html"}else if(CKEDITOR.env.ie){if(!b.match(/^([^<]|<br( ?\/)?>)*$/gi)&&!b.match(/^(<p>([^<]|<br( ?\/)?>)*<\/p>|(\r\n))*$/gi))return"html"}else if(CKEDITOR.env.gecko){if(!b.match(/^([^<]|<br( ?\/)?>)*$/gi))return"html"}else return"html";
963return"htmlifiedtext"}function A(b,a){function c(b){return CKEDITOR.tools.repeat("\x3c/p\x3e\x3cp\x3e",~~(b/2))+(1==b%2?"\x3cbr\x3e":"")}a=a.replace(/\s+/g," ").replace(/> +</g,"\x3e\x3c").replace(/<br ?\/>/gi,"\x3cbr\x3e");a=a.replace(/<\/?[A-Z]+>/g,function(b){return b.toLowerCase()});if(a.match(/^[^<]$/))return a;CKEDITOR.env.webkit&&-1<a.indexOf("\x3cdiv\x3e")&&(a=a.replace(/^(<div>(<br>|)<\/div>)(?!$|(<div>(<br>|)<\/div>))/g,"\x3cbr\x3e").replace(/^(<div>(<br>|)<\/div>){2}(?!$)/g,"\x3cdiv\x3e\x3c/div\x3e"),
964a.match(/<div>(<br>|)<\/div>/)&&(a="\x3cp\x3e"+a.replace(/(<div>(<br>|)<\/div>)+/g,function(b){return c(b.split("\x3c/div\x3e\x3cdiv\x3e").length+1)})+"\x3c/p\x3e"),a=a.replace(/<\/div><div>/g,"\x3cbr\x3e"),a=a.replace(/<\/?div>/g,""));CKEDITOR.env.gecko&&b.enterMode!=CKEDITOR.ENTER_BR&&(CKEDITOR.env.gecko&&(a=a.replace(/^<br><br>$/,"\x3cbr\x3e")),-1<a.indexOf("\x3cbr\x3e\x3cbr\x3e")&&(a="\x3cp\x3e"+a.replace(/(<br>){2,}/g,function(b){return c(b.length/4)})+"\x3c/p\x3e"));return B(b,a)}function C(){function b(){var b=
965{},a;for(a in CKEDITOR.dtd)"$"!=a.charAt(0)&&"div"!=a&&"span"!=a&&(b[a]=1);return b}var a={};return{get:function(c){return"plain-text"==c?a.plainText||(a.plainText=new CKEDITOR.filter("br")):"semantic-content"==c?((c=a.semanticContent)||(c=new CKEDITOR.filter,c.allow({$1:{elements:b(),attributes:!0,styles:!1,classes:!1}}),c=a.semanticContent=c),c):c?new CKEDITOR.filter(c):null}}}function x(b,a,c){a=CKEDITOR.htmlParser.fragment.fromHtml(a);var d=new CKEDITOR.htmlParser.basicWriter;c.applyTo(a,!0,!1,
966b.activeEnterMode);a.writeHtml(d);return d.getHtml()}function B(b,a){b.enterMode==CKEDITOR.ENTER_BR?a=a.replace(/(<\/p><p>)+/g,function(b){return CKEDITOR.tools.repeat("\x3cbr\x3e",b.length/7*2)}).replace(/<\/?p>/g,""):b.enterMode==CKEDITOR.ENTER_DIV&&(a=a.replace(/<(\/)?p>/g,"\x3c$1div\x3e"));return a}function D(b){b.data.preventDefault();b.data.$.dataTransfer.dropEffect="none"}function E(b){var a=CKEDITOR.plugins.clipboard;b.on("contentDom",function(){function c(a,c,e){c.select();q(b,{dataTransfer:e,
967method:"drop"},1);e.sourceEditor.fire("saveSnapshot");e.sourceEditor.editable().extractHtmlFromRange(a);e.sourceEditor.getSelection().selectRanges([a]);e.sourceEditor.fire("saveSnapshot")}function d(c,e){c.select();q(b,{dataTransfer:e,method:"drop"},1);a.resetDragDataTransfer()}function f(a,c,e){var g={$:a.data.$,target:a.data.getTarget()};c&&(g.dragRange=c);e&&(g.dropRange=e);!1===b.fire(a.name,g)&&a.data.preventDefault()}function g(b){b.type!=CKEDITOR.NODE_ELEMENT&&(b=b.getParent());return b.getChildCount()}
968var e=b.editable(),h=CKEDITOR.plugins.clipboard.getDropTarget(b),k=b.ui.space("top"),v=b.ui.space("bottom");a.preventDefaultDropOnElement(k);a.preventDefaultDropOnElement(v);e.attachListener(h,"dragstart",f);e.attachListener(b,"dragstart",a.resetDragDataTransfer,a,null,1);e.attachListener(b,"dragstart",function(c){a.initDragDataTransfer(c,b)},null,null,2);e.attachListener(b,"dragstart",function(){var c=a.dragRange=b.getSelection().getRanges()[0];CKEDITOR.env.ie&&10>CKEDITOR.env.version&&(a.dragStartContainerChildCount=
969c?g(c.startContainer):null,a.dragEndContainerChildCount=c?g(c.endContainer):null)},null,null,100);e.attachListener(h,"dragend",f);e.attachListener(b,"dragend",a.initDragDataTransfer,a,null,1);e.attachListener(b,"dragend",a.resetDragDataTransfer,a,null,100);e.attachListener(h,"dragover",function(b){if(CKEDITOR.env.edge)b.data.preventDefault();else{var a=b.data.getTarget();a&&a.is&&a.is("html")?b.data.preventDefault():CKEDITOR.env.ie&&CKEDITOR.plugins.clipboard.isFileApiSupported&&b.data.$.dataTransfer.types.contains("Files")&&
970b.data.preventDefault()}});e.attachListener(h,"drop",function(c){if(!c.data.$.defaultPrevented){c.data.preventDefault();var e=c.data.getTarget();if(!e.isReadOnly()||e.type==CKEDITOR.NODE_ELEMENT&&e.is("html")){var e=a.getRangeAtDropPosition(c,b),g=a.dragRange;e&&f(c,g,e)}}},null,null,9999);e.attachListener(b,"drop",a.initDragDataTransfer,a,null,1);e.attachListener(b,"drop",function(e){if(e=e.data){var g=e.dropRange,h=e.dragRange,f=e.dataTransfer;f.getTransferType(b)==CKEDITOR.DATA_TRANSFER_INTERNAL?
971setTimeout(function(){a.internalDrop(h,g,f,b)},0):f.getTransferType(b)==CKEDITOR.DATA_TRANSFER_CROSS_EDITORS?c(h,g,f):d(g,f)}},null,null,9999)})}CKEDITOR.plugins.add("clipboard",{requires:"notification,toolbar",init:function(b){var a,c=C();b.config.forcePasteAsPlainText?a="plain-text":b.config.pasteFilter?a=b.config.pasteFilter:!CKEDITOR.env.webkit||"pasteFilter"in b.config||(a="semantic-content");b.pasteFilter=c.get(a);y(b);E(b);if(CKEDITOR.env.gecko){var d=["image/png","image/jpeg","image/gif"],
972f;b.on("paste",function(a){var c=a.data,h=c.dataTransfer;if(!c.dataValue&&"paste"==c.method&&h&&1==h.getFilesCount()&&f!=h.id&&(h=h.getFile(0),-1!=CKEDITOR.tools.indexOf(d,h.type))){var k=new FileReader;k.addEventListener("load",function(){a.data.dataValue='\x3cimg src\x3d"'+k.result+'" /\x3e';b.fire("paste",a.data)},!1);k.addEventListener("abort",function(){b.fire("paste",a.data)},!1);k.addEventListener("error",function(){b.fire("paste",a.data)},!1);k.readAsDataURL(h);f=c.dataTransfer.id;a.stop()}},
973null,null,1)}b.on("paste",function(a){a.data.dataTransfer||(a.data.dataTransfer=new CKEDITOR.plugins.clipboard.dataTransfer);if(!a.data.dataValue){var c=a.data.dataTransfer,d=c.getData("text/html");if(d)a.data.dataValue=d,a.data.type="html";else if(d=c.getData("text/plain"))a.data.dataValue=b.editable().transformPlainTextToHtml(d),a.data.type="text"}},null,null,1);b.on("paste",function(b){var a=b.data.dataValue,c=CKEDITOR.dtd.$block;-1<a.indexOf("Apple-")&&(a=a.replace(/<span class="Apple-converted-space">&nbsp;<\/span>/gi,
974" "),"html"!=b.data.type&&(a=a.replace(/<span class="Apple-tab-span"[^>]*>([^<]*)<\/span>/gi,function(a,b){return b.replace(/\t/g,"\x26nbsp;\x26nbsp; \x26nbsp;")})),-1<a.indexOf('\x3cbr class\x3d"Apple-interchange-newline"\x3e')&&(b.data.startsWithEOL=1,b.data.preSniffing="html",a=a.replace(/<br class="Apple-interchange-newline">/,"")),a=a.replace(/(<[^>]+) class="Apple-[^"]*"/gi,"$1"));if(a.match(/^<[^<]+cke_(editable|contents)/i)){var d,f,l=new CKEDITOR.dom.element("div");for(l.setHtml(a);1==l.getChildCount()&&
975(d=l.getFirst())&&d.type==CKEDITOR.NODE_ELEMENT&&(d.hasClass("cke_editable")||d.hasClass("cke_contents"));)l=f=d;f&&(a=f.getHtml().replace(/<br>$/i,""))}CKEDITOR.env.ie?a=a.replace(/^&nbsp;(?: |\r\n)?<(\w+)/g,function(a,e){return e.toLowerCase()in c?(b.data.preSniffing="html","\x3c"+e):a}):CKEDITOR.env.webkit?a=a.replace(/<\/(\w+)><div><br><\/div>$/,function(a,e){return e in c?(b.data.endsWithEOL=1,"\x3c/"+e+"\x3e"):a}):CKEDITOR.env.gecko&&(a=a.replace(/(\s)<br>$/,"$1"));b.data.dataValue=a},null,
976null,3);b.on("paste",function(a){a=a.data;var e=b._.nextPasteType||a.type,d=a.dataValue,f,n=b.config.clipboard_defaultContentType||"html",l=a.dataTransfer.getTransferType(b);f="html"==e||"html"==a.preSniffing?"html":z(d);delete b._.nextPasteType;"htmlifiedtext"==f&&(d=A(b.config,d));"text"==e&&"html"==f?d=x(b,d,c.get("plain-text")):l==CKEDITOR.DATA_TRANSFER_EXTERNAL&&b.pasteFilter&&!a.dontFilter&&(d=x(b,d,b.pasteFilter));a.startsWithEOL&&(d='\x3cbr data-cke-eol\x3d"1"\x3e'+d);a.endsWithEOL&&(d+='\x3cbr data-cke-eol\x3d"1"\x3e');
977"auto"==e&&(e="html"==f||"html"==n?"html":"text");a.type=e;a.dataValue=d;delete a.preSniffing;delete a.startsWithEOL;delete a.endsWithEOL},null,null,6);b.on("paste",function(a){a=a.data;a.dataValue&&(b.insertHtml(a.dataValue,a.type,a.range),setTimeout(function(){b.fire("afterPaste")},0))},null,null,1E3)}});CKEDITOR.plugins.clipboard={isCustomCopyCutSupported:!CKEDITOR.env.ie&&!CKEDITOR.env.iOS,isCustomDataTypesSupported:!CKEDITOR.env.ie,isFileApiSupported:!CKEDITOR.env.ie||9<CKEDITOR.env.version,
978mainPasteEvent:CKEDITOR.env.ie&&!CKEDITOR.env.edge?"beforepaste":"paste",canClipboardApiBeTrusted:function(b,a){return b.getTransferType(a)!=CKEDITOR.DATA_TRANSFER_EXTERNAL||CKEDITOR.env.chrome&&!b.isEmpty()||CKEDITOR.env.gecko&&(b.getData("text/html")||b.getFilesCount())||CKEDITOR.env.safari&&603<=CKEDITOR.env.version&&!CKEDITOR.env.iOS?!0:!1},getDropTarget:function(b){var a=b.editable();return CKEDITOR.env.ie&&9>CKEDITOR.env.version||a.isInline()?a:b.document},fixSplitNodesAfterDrop:function(b,
979a,c,d){function f(b,c,d){var f=b;f.type==CKEDITOR.NODE_TEXT&&(f=b.getParent());if(f.equals(c)&&d!=c.getChildCount())return b=a.startContainer.getChild(a.startOffset-1),c=a.startContainer.getChild(a.startOffset),b&&b.type==CKEDITOR.NODE_TEXT&&c&&c.type==CKEDITOR.NODE_TEXT&&(d=b.getLength(),b.setText(b.getText()+c.getText()),c.remove(),a.setStart(b,d),a.collapse(!0)),!0}var g=a.startContainer;"number"==typeof d&&"number"==typeof c&&g.type==CKEDITOR.NODE_ELEMENT&&(f(b.startContainer,g,c)||f(b.endContainer,
980g,d))},isDropRangeAffectedByDragRange:function(b,a){var c=a.startContainer,d=a.endOffset;return b.endContainer.equals(c)&&b.endOffset<=d||b.startContainer.getParent().equals(c)&&b.startContainer.getIndex()<d||b.endContainer.getParent().equals(c)&&b.endContainer.getIndex()<d?!0:!1},internalDrop:function(b,a,c,d){var f=CKEDITOR.plugins.clipboard,g=d.editable(),e,h;d.fire("saveSnapshot");d.fire("lockSnapshot",{dontUpdate:1});CKEDITOR.env.ie&&10>CKEDITOR.env.version&&this.fixSplitNodesAfterDrop(b,a,f.dragStartContainerChildCount,
981f.dragEndContainerChildCount);(h=this.isDropRangeAffectedByDragRange(b,a))||(e=b.createBookmark(!1));f=a.clone().createBookmark(!1);h&&(e=b.createBookmark(!1));b=e.startNode;a=e.endNode;h=f.startNode;a&&b.getPosition(h)&CKEDITOR.POSITION_PRECEDING&&a.getPosition(h)&CKEDITOR.POSITION_FOLLOWING&&h.insertBefore(b);b=d.createRange();b.moveToBookmark(e);g.extractHtmlFromRange(b,1);a=d.createRange();a.moveToBookmark(f);q(d,{dataTransfer:c,method:"drop",range:a},1);d.fire("unlockSnapshot")},getRangeAtDropPosition:function(b,
982a){var c=b.data.$,d=c.clientX,f=c.clientY,g=a.getSelection(!0).getRanges()[0],e=a.createRange();if(b.data.testRange)return b.data.testRange;if(document.caretRangeFromPoint&&a.document.$.caretRangeFromPoint(d,f))c=a.document.$.caretRangeFromPoint(d,f),e.setStart(CKEDITOR.dom.node(c.startContainer),c.startOffset),e.collapse(!0);else if(c.rangeParent)e.setStart(CKEDITOR.dom.node(c.rangeParent),c.rangeOffset),e.collapse(!0);else{if(CKEDITOR.env.ie&&8<CKEDITOR.env.version&&g&&a.editable().hasFocus)return g;
983if(document.body.createTextRange){a.focus();c=a.document.getBody().$.createTextRange();try{for(var h=!1,k=0;20>k&&!h;k++){if(!h)try{c.moveToPoint(d,f-k),h=!0}catch(n){}if(!h)try{c.moveToPoint(d,f+k),h=!0}catch(l){}}if(h){var t="cke-temp-"+(new Date).getTime();c.pasteHTML('\x3cspan id\x3d"'+t+'"\x3e​\x3c/span\x3e');var r=a.document.getById(t);e.moveToPosition(r,CKEDITOR.POSITION_BEFORE_START);r.remove()}else{var p=a.document.$.elementFromPoint(d,f),m=new CKEDITOR.dom.element(p),q;if(m.equals(a.editable())||
984"html"==m.getName())return g&&g.startContainer&&!g.startContainer.equals(a.editable())?g:null;q=m.getClientRect();d<q.left?e.setStartAt(m,CKEDITOR.POSITION_AFTER_START):e.setStartAt(m,CKEDITOR.POSITION_BEFORE_END);e.collapse(!0)}}catch(u){return null}}else return null}return e},initDragDataTransfer:function(b,a){var c=b.data.$?b.data.$.dataTransfer:null,d=new this.dataTransfer(c,a);c?this.dragData&&d.id==this.dragData.id?d=this.dragData:this.dragData=d:this.dragData?d=this.dragData:this.dragData=
985d;b.data.dataTransfer=d},resetDragDataTransfer:function(){this.dragData=null},initPasteDataTransfer:function(b,a){if(this.isCustomCopyCutSupported){if(b&&b.data&&b.data.$){var c=new this.dataTransfer(b.data.$.clipboardData,a);this.copyCutData&&c.id==this.copyCutData.id?(c=this.copyCutData,c.$=b.data.$.clipboardData):this.copyCutData=c;return c}return new this.dataTransfer(null,a)}return new this.dataTransfer(CKEDITOR.env.edge&&b&&b.data.$&&b.data.$.clipboardData||null,a)},preventDefaultDropOnElement:function(b){b&&
986b.on("dragover",D)}};var n=CKEDITOR.plugins.clipboard.isCustomDataTypesSupported?"cke/id":"Text";CKEDITOR.plugins.clipboard.dataTransfer=function(b,a){b&&(this.$=b);this._={metaRegExp:/^<meta.*?>/i,bodyRegExp:/<body(?:[\s\S]*?)>([\s\S]*)<\/body>/i,fragmentRegExp:/\x3c!--(?:Start|End)Fragment--\x3e/g,data:{},files:[],normalizeType:function(a){a=a.toLowerCase();return"text"==a||"text/plain"==a?"Text":"url"==a?"URL":a}};this.id=this.getData(n);this.id||(this.id="Text"==n?"":"cke-"+CKEDITOR.tools.getUniqueId());
987if("Text"!=n)try{this.$.setData(n,this.id)}catch(c){}a&&(this.sourceEditor=a,this.setData("text/html",a.getSelectedHtml(1)),"Text"==n||this.getData("text/plain")||this.setData("text/plain",a.getSelection().getSelectedText()))};CKEDITOR.DATA_TRANSFER_INTERNAL=1;CKEDITOR.DATA_TRANSFER_CROSS_EDITORS=2;CKEDITOR.DATA_TRANSFER_EXTERNAL=3;CKEDITOR.plugins.clipboard.dataTransfer.prototype={getData:function(b,a){b=this._.normalizeType(b);var c=this._.data[b],d;if(void 0===c||null===c||""===c)try{c=this.$.getData(b)}catch(f){}if(void 0===
988c||null===c||""===c)c="";"text/html"!=b||a?"Text"==b&&CKEDITOR.env.gecko&&this.getFilesCount()&&"file://"==c.substring(0,7)&&(c=""):(c=c.replace(this._.metaRegExp,""),(d=this._.bodyRegExp.exec(c))&&d.length&&(c=d[1],c=c.replace(this._.fragmentRegExp,"")));"string"===typeof c&&(d=c.indexOf("\x3c/html\x3e"),c=-1!==d?c.substring(0,d+7):c);return c},setData:function(b,a){b=this._.normalizeType(b);this._.data[b]=a;if(CKEDITOR.plugins.clipboard.isCustomDataTypesSupported||"URL"==b||"Text"==b){"Text"==n&&
989"Text"==b&&(this.id=a);try{this.$.setData(b,a)}catch(c){}}},getTransferType:function(b){return this.sourceEditor?this.sourceEditor==b?CKEDITOR.DATA_TRANSFER_INTERNAL:CKEDITOR.DATA_TRANSFER_CROSS_EDITORS:CKEDITOR.DATA_TRANSFER_EXTERNAL},cacheData:function(){function b(b){b=a._.normalizeType(b);var c=a.getData(b,!0);c&&(a._.data[b]=c)}if(this.$){var a=this,c,d;if(CKEDITOR.plugins.clipboard.isCustomDataTypesSupported){if(this.$.types)for(c=0;c<this.$.types.length;c++)b(this.$.types[c])}else b("Text"),
990b("URL");d=this._getImageFromClipboard();if(this.$&&this.$.files||d){this._.files=[];if(this.$.files&&this.$.files.length)for(c=0;c<this.$.files.length;c++)this._.files.push(this.$.files[c]);0===this._.files.length&&d&&this._.files.push(d)}}},getFilesCount:function(){return this._.files.length?this._.files.length:this.$&&this.$.files&&this.$.files.length?this.$.files.length:this._getImageFromClipboard()?1:0},getFile:function(b){return this._.files.length?this._.files[b]:this.$&&this.$.files&&this.$.files.length?
991this.$.files[b]:0===b?this._getImageFromClipboard():void 0},isEmpty:function(){var b={},a;if(this.getFilesCount())return!1;for(a in this._.data)b[a]=1;if(this.$)if(CKEDITOR.plugins.clipboard.isCustomDataTypesSupported){if(this.$.types)for(var c=0;c<this.$.types.length;c++)b[this.$.types[c]]=1}else b.Text=1,b.URL=1;"Text"!=n&&(b[n]=0);for(a in b)if(b[a]&&""!==this.getData(a))return!1;return!0},_getImageFromClipboard:function(){var b;if(this.$&&this.$.items&&this.$.items[0])try{if((b=this.$.items[0].getAsFile())&&
992b.type)return b}catch(a){}}}})();CKEDITOR.config.clipboard_notificationDuration=1E4;(function(){function f(a){return a.getName&&!a.hasAttribute("data-cke-temp")}CKEDITOR.plugins.add("widgetselection",{init:function(a){if(CKEDITOR.env.webkit){var b=CKEDITOR.plugins.widgetselection;a.on("contentDom",function(a){a=a.editor;var d=a.document,e=a.editable();e.attachListener(d,"keydown",function(a){var c=a.data.$;65==a.data.getKey()&&(CKEDITOR.env.mac&&c.metaKey||!CKEDITOR.env.mac&&c.ctrlKey)&&CKEDITOR.tools.setTimeout(function(){b.addFillers(e)||b.removeFillers(e)},0)},null,null,-1);a.on("selectionCheck",
993function(a){b.removeFillers(a.editor.editable())});a.on("paste",function(a){a.data.dataValue=b.cleanPasteData(a.data.dataValue)});"selectall"in a.plugins&&b.addSelectAllIntegration(a)})}}});CKEDITOR.plugins.widgetselection={startFiller:null,endFiller:null,fillerAttribute:"data-cke-filler-webkit",fillerContent:"\x26nbsp;",fillerTagName:"div",addFillers:function(a){var b=a.editor;if(!this.isWholeContentSelected(a)&&0<a.getChildCount()){var c=a.getFirst(f),d=a.getLast(f);c&&c.type==CKEDITOR.NODE_ELEMENT&&
994!c.isEditable()&&(this.startFiller=this.createFiller(),a.append(this.startFiller,1));d&&d.type==CKEDITOR.NODE_ELEMENT&&!d.isEditable()&&(this.endFiller=this.createFiller(!0),a.append(this.endFiller,0));if(this.hasFiller(a))return b=b.createRange(),b.selectNodeContents(a),b.select(),!0}return!1},removeFillers:function(a){if(this.hasFiller(a)&&!this.isWholeContentSelected(a)){var b=a.findOne(this.fillerTagName+"["+this.fillerAttribute+"\x3dstart]"),c=a.findOne(this.fillerTagName+"["+this.fillerAttribute+
995"\x3dend]");this.startFiller&&b&&this.startFiller.equals(b)?this.removeFiller(this.startFiller,a):this.startFiller=b;this.endFiller&&c&&this.endFiller.equals(c)?this.removeFiller(this.endFiller,a):this.endFiller=c}},cleanPasteData:function(a){a&&a.length&&(a=a.replace(this.createFillerRegex(),"").replace(this.createFillerRegex(!0),""));return a},isWholeContentSelected:function(a){var b=a.editor.getSelection().getRanges()[0];return!b||b&&b.collapsed?!1:(b=b.clone(),b.enlarge(CKEDITOR.ENLARGE_ELEMENT),
996!!(b&&a&&b.startContainer&&b.endContainer&&0===b.startOffset&&b.endOffset===a.getChildCount()&&b.startContainer.equals(a)&&b.endContainer.equals(a)))},hasFiller:function(a){return 0<a.find(this.fillerTagName+"["+this.fillerAttribute+"]").count()},createFiller:function(a){var b=new CKEDITOR.dom.element(this.fillerTagName);b.setHtml(this.fillerContent);b.setAttribute(this.fillerAttribute,a?"end":"start");b.setAttribute("data-cke-temp",1);b.setStyles({display:"block",width:0,height:0,padding:0,border:0,
997margin:0,position:"absolute",top:0,left:"-9999px",opacity:0,overflow:"hidden"});return b},removeFiller:function(a,b){if(a){var c=b.editor,d=b.editor.getSelection().getRanges()[0].startPath(),e=c.createRange(),g,f;d.contains(a)&&(g=a.getHtml(),f=!0);d="start"==a.getAttribute(this.fillerAttribute);a.remove();g&&0<g.length&&g!=this.fillerContent?(b.insertHtmlIntoRange(g,c.getSelection().getRanges()[0]),e.setStartAt(b.getChild(b.getChildCount()-1),CKEDITOR.POSITION_BEFORE_END),c.getSelection().selectRanges([e])):
998f&&(d?e.setStartAt(b.getFirst().getNext(),CKEDITOR.POSITION_AFTER_START):e.setEndAt(b.getLast().getPrevious(),CKEDITOR.POSITION_BEFORE_END),b.editor.getSelection().selectRanges([e]))}},createFillerRegex:function(a){var b=this.createFiller(a).getOuterHtml().replace(/style="[^"]*"/gi,'style\x3d"[^"]*"').replace(/>[^<]*</gi,"\x3e[^\x3c]*\x3c");return new RegExp((a?"":"^")+b+(a?"$":""))},addSelectAllIntegration:function(a){var b=this;a.editable().attachListener(a,"beforeCommandExec",function(c){var d=
999a.editable();"selectAll"==c.data.name&&d&&b.addFillers(d)},null,null,9999)}}})();(function(){function p(a){this.editor=a;this.registered={};this.instances={};this.selected=[];this.widgetHoldingFocusedEditable=this.focused=null;this._={nextId:0,upcasts:[],upcastCallbacks:[],filters:{}};F(this);G(this);this.on("checkWidgets",H);this.editor.on("contentDomInvalidated",this.checkWidgets,this);I(this);J(this);K(this);L(this);M(this)}function g(a,b,c,d,e){var f=a.editor;CKEDITOR.tools.extend(this,d,{editor:f,id:b,inline:"span"==c.getParent().getName(),element:c,data:CKEDITOR.tools.extend({},
1000"function"==typeof d.defaults?d.defaults():d.defaults),dataReady:!1,inited:!1,ready:!1,edit:g.prototype.edit,focusedEditable:null,definition:d,repository:a,draggable:!1!==d.draggable,_:{downcastFn:d.downcast&&"string"==typeof d.downcast?d.downcasts[d.downcast]:d.downcast}},!0);a.fire("instanceCreated",this);N(this,d);this.init&&this.init();this.inited=!0;(a=this.element.data("cke-widget-data"))&&this.setData(JSON.parse(decodeURIComponent(a)));e&&this.setData(e);this.data.classes||this.setData("classes",
1001this.getClasses());this.dataReady=!0;r(this);this.fire("data",this.data);this.isInited()&&f.editable().contains(this.wrapper)&&(this.ready=!0,this.fire("ready"))}function q(a,b,c){CKEDITOR.dom.element.call(this,b.$);this.editor=a;this._={};b=this.filter=c.filter;CKEDITOR.dtd[this.getName()].p?(this.enterMode=b?b.getAllowedEnterMode(a.enterMode):a.enterMode,this.shiftEnterMode=b?b.getAllowedEnterMode(a.shiftEnterMode,!0):a.shiftEnterMode):this.enterMode=this.shiftEnterMode=CKEDITOR.ENTER_BR}function O(a,
1002b){a.addCommand(b.name,{exec:function(a,d){function e(){a.widgets.finalizeCreation(k)}var f=a.widgets.focused;if(f&&f.name==b.name)f.edit();else if(b.insert)b.insert();else if(b.template){var f="function"==typeof b.defaults?b.defaults():b.defaults,f=CKEDITOR.dom.element.createFromHtml(b.template.output(f)),h,l=a.widgets.wrapElement(f,b.name),k=new CKEDITOR.dom.documentFragment(l.getDocument());k.append(l);(h=a.widgets.initOn(f,b,d&&d.startupData))?(f=h.once("edit",function(b){if(b.data.dialog)h.once("dialog",
1003function(b){b=b.data;var d,f;d=b.once("ok",e,null,null,20);f=b.once("cancel",function(b){b.data&&!1===b.data.hide||a.widgets.destroy(h,!0)});b.once("hide",function(){d.removeListener();f.removeListener()})});else e()},null,null,999),h.edit(),f.removeListener()):e()}},allowedContent:b.allowedContent,requiredContent:b.requiredContent,contentForms:b.contentForms,contentTransformations:b.contentTransformations})}function P(a,b){function c(b,d,c){var e=CKEDITOR.tools.getIndex(a._.upcasts,function(a){return a[2]>
1004c});0>e&&(e=a._.upcasts.length);a._.upcasts.splice(e,0,[b,d,c])}var d=b.upcast,e=b.upcastPriority||10;if(d)if("string"==typeof d)for(d=d.split(",");d.length;)c(b.upcasts[d.pop()],b.name,e);else c(d,b.name,e)}function t(a,b){a.focused=null;if(b.isInited()){var c=b.editor.checkDirty();a.fire("widgetBlurred",{widget:b});b.setFocused(!1);!c&&b.editor.resetDirty()}}function H(a){a=a.data;if("wysiwyg"==this.editor.mode){var b=this.editor.editable(),c=this.instances,d,e,f,h;if(b){for(d in c)c[d].isReady()&&
1005!b.contains(c[d].wrapper)&&this.destroy(c[d],!0);if(a&&a.initOnlyNew)c=this.initOnAll();else{var l=b.find(".cke_widget_wrapper"),c=[];d=0;for(e=l.count();d<e;d++){f=l.getItem(d);if(h=!this.getByElement(f,!0)){a:{h=Q;for(var k=f;k=k.getParent();)if(h(k)){h=!0;break a}h=!1}h=!h}h&&b.contains(f)&&(f.addClass("cke_widget_new"),c.push(this.initOn(f.getFirst(g.isDomWidgetElement))))}}a&&a.focusInited&&1==c.length&&c[0].focus()}}}function u(a,b,c){if(!c.allowedContent&&!c.disallowedContent)return null;var d=
1006this._.filters[a];d||(this._.filters[a]=d={});a=d[b];a||(a=c.allowedContent?new CKEDITOR.filter(c.allowedContent):this.editor.filter.clone(),d[b]=a,c.disallowedContent&&a.disallow(c.disallowedContent));return a}function R(a){var b=[],c=a._.upcasts,d=a._.upcastCallbacks;return{toBeWrapped:b,iterator:function(a){var f,h,l,k,m;if("data-cke-widget-wrapper"in a.attributes)return(a=a.getFirst(g.isParserWidgetElement))&&b.push([a]),!1;if("data-widget"in a.attributes)return b.push([a]),!1;if(m=c.length){if(a.attributes["data-cke-widget-upcasted"])return!1;
1007k=0;for(f=d.length;k<f;++k)if(!1===d[k](a))return;for(k=0;k<m;++k)if(f=c[k],l={},h=f[0](a,l))return h instanceof CKEDITOR.htmlParser.element&&(a=h),a.attributes["data-cke-widget-data"]=encodeURIComponent(JSON.stringify(l)),a.attributes["data-cke-widget-upcasted"]=1,b.push([a,f[1]]),!1}}}}function v(a,b){return{tabindex:-1,contenteditable:"false","data-cke-widget-wrapper":1,"data-cke-filter":"off","class":"cke_widget_wrapper cke_widget_new cke_widget_"+(a?"inline":"block")+(b?" cke_widget_"+b:"")}}
1008function w(a,b,c){if(a.type==CKEDITOR.NODE_ELEMENT){var d=CKEDITOR.dtd[a.name];if(d&&!d[c.name]){var d=a.split(b),e=a.parent;b=d.getIndex();a.children.length||(--b,a.remove());d.children.length||d.remove();return w(e,b,c)}}a.add(c,b)}function x(a,b){return"boolean"==typeof a.inline?a.inline:!!CKEDITOR.dtd.$inline[b]}function Q(a){return a.hasAttribute("data-cke-temp")}function n(a,b,c,d){var e=a.editor;e.fire("lockSnapshot");c?(d=c.data("cke-widget-editable"),d=b.editables[d],a.widgetHoldingFocusedEditable=
1009b,b.focusedEditable=d,c.addClass("cke_widget_editable_focused"),d.filter&&e.setActiveFilter(d.filter),e.setActiveEnterMode(d.enterMode,d.shiftEnterMode)):(d||b.focusedEditable.removeClass("cke_widget_editable_focused"),b.focusedEditable=null,a.widgetHoldingFocusedEditable=null,e.setActiveFilter(null),e.setActiveEnterMode(null,null));e.fire("unlockSnapshot")}function S(a){a.contextMenu&&a.contextMenu.addListener(function(b){if(b=a.widgets.getByElement(b,!0))return b.fire("contextMenu",{})})}function T(a,
1010b){return CKEDITOR.tools.trim(b)}function L(a){var b=a.editor,c=CKEDITOR.plugins.lineutils;b.on("dragstart",function(d){var c=d.data.target;g.isDomDragHandler(c)&&(c=a.getByElement(c),d.data.dataTransfer.setData("cke/widget-id",c.id),b.focus(),c.focus())});b.on("drop",function(c){var e=c.data.dataTransfer,f=e.getData("cke/widget-id"),h=e.getTransferType(b),e=b.createRange();""!==f&&h===CKEDITOR.DATA_TRANSFER_CROSS_EDITORS?c.cancel():""!==f&&h==CKEDITOR.DATA_TRANSFER_INTERNAL&&(f=a.instances[f])&&
1011(e.setStartBefore(f.wrapper),e.setEndAfter(f.wrapper),c.data.dragRange=e,delete CKEDITOR.plugins.clipboard.dragStartContainerChildCount,delete CKEDITOR.plugins.clipboard.dragEndContainerChildCount,c.data.dataTransfer.setData("text/html",b.editable().getHtmlFromRange(e).getHtml()),b.widgets.destroy(f,!0))});b.on("contentDom",function(){var d=b.editable();CKEDITOR.tools.extend(a,{finder:new c.finder(b,{lookups:{"default":function(b){if(!b.is(CKEDITOR.dtd.$listItem)&&b.is(CKEDITOR.dtd.$block)&&!g.isDomNestedEditable(b)&&
1012!a._.draggedWidget.wrapper.contains(b)){var c=g.getNestedEditable(d,b);if(c){b=a._.draggedWidget;if(a.getByElement(c)==b)return;c=CKEDITOR.filter.instances[c.data("cke-filter")];b=b.requiredContent;if(c&&b&&!c.check(b))return}return CKEDITOR.LINEUTILS_BEFORE|CKEDITOR.LINEUTILS_AFTER}}}}),locator:new c.locator(b),liner:new c.liner(b,{lineStyle:{cursor:"move !important","border-top-color":"#666"},tipLeftStyle:{"border-left-color":"#666"},tipRightStyle:{"border-right-color":"#666"}})},!0)})}function J(a){var b=
1013a.editor;b.on("contentDom",function(){var c=b.editable(),d=c.isInline()?c:b.document,e,f;c.attachListener(d,"mousedown",function(c){var d=c.data.getTarget();e=d instanceof CKEDITOR.dom.element?a.getByElement(d):null;f=0;e&&(e.inline&&d.type==CKEDITOR.NODE_ELEMENT&&d.hasAttribute("data-cke-widget-drag-handler")?(f=1,a.focused!=e&&b.getSelection().removeAllRanges()):g.getNestedEditable(e.wrapper,d)?e=null:(c.data.preventDefault(),CKEDITOR.env.ie||e.focus()))});c.attachListener(d,"mouseup",function(){f&&
1014e&&e.wrapper&&(f=0,e.focus())});CKEDITOR.env.ie&&c.attachListener(d,"mouseup",function(){setTimeout(function(){e&&e.wrapper&&c.contains(e.wrapper)&&(e.focus(),e=null)})})});b.on("doubleclick",function(b){var d=a.getByElement(b.data.element);if(d&&!g.getNestedEditable(d.wrapper,b.data.element))return d.fire("doubleclick",{element:b.data.element})},null,null,1)}function K(a){a.editor.on("key",function(b){var c=a.focused,d=a.widgetHoldingFocusedEditable,e;c?e=c.fire("key",{keyCode:b.data.keyCode}):d&&
1015(c=b.data.keyCode,b=d.focusedEditable,c==CKEDITOR.CTRL+65?(c=b.getBogus(),d=d.editor.createRange(),d.selectNodeContents(b),c&&d.setEndAt(c,CKEDITOR.POSITION_BEFORE_START),d.select(),e=!1):8==c||46==c?(e=d.editor.getSelection().getRanges(),d=e[0],e=!(1==e.length&&d.collapsed&&d.checkBoundaryOfElement(b,CKEDITOR[8==c?"START":"END"]))):e=void 0);return e},null,null,1)}function M(a){function b(b){a.focused&&y(a.focused,"cut"==b.name)}var c=a.editor;c.on("contentDom",function(){var a=c.editable();a.attachListener(a,
1016"copy",b);a.attachListener(a,"cut",b)})}function I(a){var b=a.editor;b.on("selectionCheck",function(){a.fire("checkSelection")});a.on("checkSelection",a.checkSelection,a);b.on("selectionChange",function(c){var d=(c=g.getNestedEditable(b.editable(),c.data.selection.getStartElement()))&&a.getByElement(c),e=a.widgetHoldingFocusedEditable;e?e===d&&e.focusedEditable.equals(c)||(n(a,e,null),d&&c&&n(a,d,c)):d&&c&&n(a,d,c)});b.on("dataReady",function(){z(a).commit()});b.on("blur",function(){var b;(b=a.focused)&&
1017t(a,b);(b=a.widgetHoldingFocusedEditable)&&n(a,b,null)})}function G(a){var b=a.editor,c={};b.on("toDataFormat",function(b){var e=CKEDITOR.tools.getNextNumber(),f=[];b.data.downcastingSessionId=e;c[e]=f;b.data.dataValue.forEach(function(b){var c=b.attributes,d;if("data-cke-widget-id"in c){if(c=a.instances[c["data-cke-widget-id"]])d=b.getFirst(g.isParserWidgetElement),f.push({wrapper:b,element:d,widget:c,editables:{}}),"1"!=d.attributes["data-cke-widget-keep-attr"]&&delete d.attributes["data-widget"]}else if("data-cke-widget-editable"in
1018c)return f[f.length-1].editables[c["data-cke-widget-editable"]]=b,!1},CKEDITOR.NODE_ELEMENT,!0)},null,null,8);b.on("toDataFormat",function(a){if(a.data.downcastingSessionId){a=c[a.data.downcastingSessionId];for(var b,f,h,l,g,m;b=a.shift();){f=b.widget;h=b.element;l=f._.downcastFn&&f._.downcastFn.call(f,h);for(m in b.editables)g=b.editables[m],delete g.attributes.contenteditable,g.setHtml(f.editables[m].getData());l||(l=h);b.wrapper.replaceWith(l)}}},null,null,13);b.on("contentDomUnload",function(){a.destroyAll(!0)})}
1019function F(a){var b=a.editor,c,d;b.on("toHtml",function(b){var d=R(a),h;for(b.data.dataValue.forEach(d.iterator,CKEDITOR.NODE_ELEMENT,!0);h=d.toBeWrapped.pop();){var l=h[0],k=l.parent;k.type==CKEDITOR.NODE_ELEMENT&&k.attributes["data-cke-widget-wrapper"]&&k.replaceWith(l);a.wrapElement(h[0],h[1])}c=b.data.protectedWhitespaces?3==b.data.dataValue.children.length&&g.isParserWidgetWrapper(b.data.dataValue.children[1]):1==b.data.dataValue.children.length&&g.isParserWidgetWrapper(b.data.dataValue.children[0])},
1020null,null,8);b.on("dataReady",function(){if(d)for(var c=b.editable().find(".cke_widget_wrapper"),f,h,l=0,k=c.count();l<k;++l)f=c.getItem(l),h=f.getFirst(g.isDomWidgetElement),h.type==CKEDITOR.NODE_ELEMENT&&h.data("widget")?(h.replace(f),a.wrapElement(h)):f.remove();d=0;a.destroyAll(!0);a.initOnAll()});b.on("loadSnapshot",function(b){/data-cke-widget/.test(b.data)&&(d=1);a.destroyAll(!0)},null,null,9);b.on("paste",function(a){a=a.data;a.dataValue=a.dataValue.replace(U,T);a.range&&(a=g.getNestedEditable(b.editable(),
1021a.range.startContainer))&&(a=CKEDITOR.filter.instances[a.data("cke-filter")])&&b.setActiveFilter(a)});b.on("afterInsertHtml",function(d){d.data.intoRange?a.checkWidgets({initOnlyNew:!0}):(b.fire("lockSnapshot"),a.checkWidgets({initOnlyNew:!0,focusInited:c}),b.fire("unlockSnapshot"))})}function z(a){var b=a.selected,c=[],d=b.slice(0),e=null;return{select:function(a){0>CKEDITOR.tools.indexOf(b,a)&&c.push(a);a=CKEDITOR.tools.indexOf(d,a);0<=a&&d.splice(a,1);return this},focus:function(a){e=a;return this},
1022commit:function(){var f=a.focused!==e,h,g;a.editor.fire("lockSnapshot");for(f&&(h=a.focused)&&t(a,h);h=d.pop();)b.splice(CKEDITOR.tools.indexOf(b,h),1),h.isInited()&&(g=h.editor.checkDirty(),h.setSelected(!1),!g&&h.editor.resetDirty());f&&e&&(g=a.editor.checkDirty(),a.focused=e,a.fire("widgetFocused",{widget:e}),e.setFocused(!0),!g&&a.editor.resetDirty());for(;h=c.pop();)b.push(h),h.setSelected(!0);a.editor.fire("unlockSnapshot")}}}function A(a,b,c){var d=0;b=B(b);var e=a.data.classes||{},f;if(b){for(e=
1023CKEDITOR.tools.clone(e);f=b.pop();)c?e[f]||(d=e[f]=1):e[f]&&(delete e[f],d=1);d&&a.setData("classes",e)}}function C(a){a.cancel()}function y(a,b){var c=a.editor,d=c.document;if(!d.getById("cke_copybin")){var e=c.blockless||CKEDITOR.env.ie?"span":"div",f=d.createElement(e),h=d.createElement(e),e=CKEDITOR.env.ie&&9>CKEDITOR.env.version;h.setAttributes({id:"cke_copybin","data-cke-temp":"1"});f.setStyles({position:"absolute",width:"1px",height:"1px",overflow:"hidden"});f.setStyle("ltr"==c.config.contentsLangDirection?
1024"left":"right","-5000px");var g=c.createRange();g.setStartBefore(a.wrapper);g.setEndAfter(a.wrapper);f.setHtml('\x3cspan data-cke-copybin-start\x3d"1"\x3e​\x3c/span\x3e'+c.editable().getHtmlFromRange(g).getHtml()+'\x3cspan data-cke-copybin-end\x3d"1"\x3e​\x3c/span\x3e');c.fire("saveSnapshot");c.fire("lockSnapshot");h.append(f);c.editable().append(h);var k=c.on("selectionChange",C,null,null,0),m=a.repository.on("checkSelection",C,null,null,0);if(e)var n=d.getDocumentElement().$,p=n.scrollTop;g=c.createRange();
1025g.selectNodeContents(f);g.select();e&&(n.scrollTop=p);setTimeout(function(){b||a.focus();h.remove();k.removeListener();m.removeListener();c.fire("unlockSnapshot");b&&(a.repository.del(a),c.fire("saveSnapshot"))},100)}}function B(a){return(a=(a=a.getDefinition().attributes)&&a["class"])?a.split(/\s+/):null}function D(){var a=CKEDITOR.document.getActive(),b=this.editor,c=b.editable();(c.isInline()?c:b.document.getWindow().getFrame()).equals(a)&&b.focusManager.focus(c)}function E(){CKEDITOR.env.gecko&&
1026this.editor.unlockSelection();CKEDITOR.env.webkit||(this.editor.forceNextSelectionCheck(),this.editor.selectionChange(1))}function V(a){var b=null;a.on("data",function(){var a=this.data.classes,d;if(b!=a){for(d in b)a&&a[d]||this.removeClass(d);for(d in a)this.addClass(d);b=a}})}function W(a){a.on("data",function(){if(a.wrapper){var b=this.getLabel?this.getLabel():this.editor.lang.widget.label.replace(/%1/,this.pathName||this.element.getName());a.wrapper.setAttribute("role","region");a.wrapper.setAttribute("aria-label",
1027b)}},null,null,9999)}function X(a){if(a.draggable){var b=a.editor,c=a.wrapper.getLast(g.isDomDragHandlerContainer),d;c?d=c.findOne("img"):(c=new CKEDITOR.dom.element("span",b.document),c.setAttributes({"class":"cke_reset cke_widget_drag_handler_container",style:"background:rgba(220,220,220,0.5);background-image:url("+b.plugins.widget.path+"images/handle.png)"}),d=new CKEDITOR.dom.element("img",b.document),d.setAttributes({"class":"cke_reset cke_widget_drag_handler","data-cke-widget-drag-handler":"1",
1028src:CKEDITOR.tools.transparentImageData,width:15,title:b.lang.widget.move,height:15,role:"presentation"}),a.inline&&d.setAttribute("draggable","true"),c.append(d),a.wrapper.append(c));a.wrapper.on("dragover",function(a){a.data.preventDefault()});a.wrapper.on("mouseenter",a.updateDragHandlerPosition,a);setTimeout(function(){a.on("data",a.updateDragHandlerPosition,a)},50);if(!a.inline&&(d.on("mousedown",Y,a),CKEDITOR.env.ie&&9>CKEDITOR.env.version))d.on("dragstart",function(a){a.data.preventDefault(!0)});
1029a.dragHandlerContainer=c}}function Y(a){function b(){var b;for(q.reset();b=g.pop();)b.removeListener();var c=k;b=a.sender;var d=this.repository.finder,e=this.repository.liner,f=this.editor,h=this.editor.editable();CKEDITOR.tools.isEmpty(e.visible)||(c=d.getRange(c[0]),this.focus(),f.fire("drop",{dropRange:c,target:c.startContainer}));h.removeClass("cke_widget_dragging");e.hideVisible();f.fire("dragend",{target:b})}var c=this.repository.finder,d=this.repository.locator,e=this.repository.liner,f=this.editor,
1030h=f.editable(),g=[],k=[],m,n;this.repository._.draggedWidget=this;var p=c.greedySearch(),q=CKEDITOR.tools.eventsBuffer(50,function(){m=d.locate(p);k=d.sort(n,1);k.length&&(e.prepare(p,m),e.placeLine(k[0]),e.cleanup())});h.addClass("cke_widget_dragging");g.push(h.on("mousemove",function(a){n=a.data.$.clientY;q.input()}));f.fire("dragstart",{target:a.sender});g.push(f.document.once("mouseup",b,this));h.isInline()||g.push(CKEDITOR.document.once("mouseup",b,this))}function Z(a){var b,c,d=a.editables;
1031a.editables={};if(a.editables)for(b in d)c=d[b],a.initEditable(b,"string"==typeof c?{selector:c}:c)}function aa(a){if(a.mask){var b=a.wrapper.findOne(".cke_widget_mask");b||(b=new CKEDITOR.dom.element("img",a.editor.document),b.setAttributes({src:CKEDITOR.tools.transparentImageData,"class":"cke_reset cke_widget_mask"}),a.wrapper.append(b));a.mask=b}}function ba(a){if(a.parts){var b={},c,d;for(d in a.parts)c=a.wrapper.findOne(a.parts[d]),b[d]=c;a.parts=b}}function N(a,b){ca(a);ba(a);Z(a);aa(a);X(a);
1032V(a);W(a);if(CKEDITOR.env.ie&&9>CKEDITOR.env.version)a.wrapper.on("dragstart",function(b){var d=b.data.getTarget();g.getNestedEditable(a,d)||a.inline&&g.isDomDragHandler(d)||b.data.preventDefault()});a.wrapper.removeClass("cke_widget_new");a.element.addClass("cke_widget_element");a.on("key",function(b){b=b.data.keyCode;if(13==b)a.edit();else{if(b==CKEDITOR.CTRL+67||b==CKEDITOR.CTRL+88){y(a,b==CKEDITOR.CTRL+88);return}if(b in da||CKEDITOR.CTRL&b||CKEDITOR.ALT&b)return}return!1},null,null,999);a.on("doubleclick",
1033function(b){a.edit()&&b.cancel()});if(b.data)a.on("data",b.data);if(b.edit)a.on("edit",b.edit)}function ca(a){(a.wrapper=a.element.getParent()).setAttribute("data-cke-widget-id",a.id)}function r(a){a.element.data("cke-widget-data",encodeURIComponent(JSON.stringify(a.data)))}CKEDITOR.plugins.add("widget",{requires:"lineutils,clipboard,widgetselection",onLoad:function(){CKEDITOR.addCss(".cke_widget_wrapper{position:relative;outline:none}.cke_widget_inline{display:inline-block}.cke_widget_wrapper:hover\x3e.cke_widget_element{outline:2px solid yellow;cursor:default}.cke_widget_wrapper:hover .cke_widget_editable{outline:2px solid yellow}.cke_widget_wrapper.cke_widget_focused\x3e.cke_widget_element,.cke_widget_wrapper .cke_widget_editable.cke_widget_editable_focused{outline:2px solid #ace}.cke_widget_editable{cursor:text}.cke_widget_drag_handler_container{position:absolute;width:15px;height:0;display:none;opacity:0.75;transition:height 0s 0.2s;line-height:0}.cke_widget_wrapper:hover\x3e.cke_widget_drag_handler_container{height:15px;transition:none}.cke_widget_drag_handler_container:hover{opacity:1}img.cke_widget_drag_handler{cursor:move;width:15px;height:15px;display:inline-block}.cke_widget_mask{position:absolute;top:0;left:0;width:100%;height:100%;display:block}.cke_editable.cke_widget_dragging, .cke_editable.cke_widget_dragging *{cursor:move !important}")},
1034beforeInit:function(a){a.widgets=new p(a)},afterInit:function(a){var b=a.widgets.registered,c,d,e;for(d in b)c=b[d],(e=c.button)&&a.ui.addButton&&a.ui.addButton(CKEDITOR.tools.capitalize(c.name,!0),{label:e,command:c.name,toolbar:"insert,10"});S(a)}});p.prototype={MIN_SELECTION_CHECK_INTERVAL:500,add:function(a,b){b=CKEDITOR.tools.prototypedCopy(b);b.name=a;b._=b._||{};this.editor.fire("widgetDefinition",b);b.template&&(b.template=new CKEDITOR.template(b.template));O(this.editor,b);P(this,b);return this.registered[a]=
1035b},addUpcastCallback:function(a){this._.upcastCallbacks.push(a)},checkSelection:function(){var a=this.editor.getSelection(),b=a.getSelectedElement(),c=z(this),d;if(b&&(d=this.getByElement(b,!0)))return c.focus(d).select(d).commit();a=a.getRanges()[0];if(!a||a.collapsed)return c.commit();a=new CKEDITOR.dom.walker(a);for(a.evaluator=g.isDomWidgetWrapper;b=a.next();)c.select(this.getByElement(b));c.commit()},checkWidgets:function(a){this.fire("checkWidgets",CKEDITOR.tools.copy(a||{}))},del:function(a){if(this.focused===
1036a){var b=a.editor,c=b.createRange(),d;(d=c.moveToClosestEditablePosition(a.wrapper,!0))||(d=c.moveToClosestEditablePosition(a.wrapper,!1));d&&b.getSelection().selectRanges([c])}a.wrapper.remove();this.destroy(a,!0)},destroy:function(a,b){this.widgetHoldingFocusedEditable===a&&n(this,a,null,b);a.destroy(b);delete this.instances[a.id];this.fire("instanceDestroyed",a)},destroyAll:function(a,b){var c,d,e=this.instances;if(b&&!a){d=b.find(".cke_widget_wrapper");for(var e=d.count(),f=0;f<e;++f)(c=this.getByElement(d.getItem(f),
1037!0))&&this.destroy(c)}else for(d in e)c=e[d],this.destroy(c,a)},finalizeCreation:function(a){(a=a.getFirst())&&g.isDomWidgetWrapper(a)&&(this.editor.insertElement(a),a=this.getByElement(a),a.ready=!0,a.fire("ready"),a.focus())},getByElement:function(){function a(a){return a.is(b)&&a.data("cke-widget-id")}var b={div:1,span:1};return function(b,d){if(!b)return null;var e=a(b);if(!d&&!e){var f=this.editor.editable();do b=b.getParent();while(b&&!b.equals(f)&&!(e=a(b)))}return this.instances[e]||null}}(),
1038initOn:function(a,b,c){b?"string"==typeof b&&(b=this.registered[b]):b=this.registered[a.data("widget")];if(!b)return null;var d=this.wrapElement(a,b.name);return d?d.hasClass("cke_widget_new")?(a=new g(this,this._.nextId++,a,b,c),a.isInited()?this.instances[a.id]=a:null):this.getByElement(a):null},initOnAll:function(a){a=(a||this.editor.editable()).find(".cke_widget_new");for(var b=[],c,d=a.count();d--;)(c=this.initOn(a.getItem(d).getFirst(g.isDomWidgetElement)))&&b.push(c);return b},onWidget:function(a){var b=
1039Array.prototype.slice.call(arguments);b.shift();for(var c in this.instances){var d=this.instances[c];d.name==a&&d.on.apply(d,b)}this.on("instanceCreated",function(d){d=d.data;d.name==a&&d.on.apply(d,b)})},parseElementClasses:function(a){if(!a)return null;a=CKEDITOR.tools.trim(a).split(/\s+/);for(var b,c={},d=0;b=a.pop();)-1==b.indexOf("cke_")&&(c[b]=d=1);return d?c:null},wrapElement:function(a,b){var c=null,d,e;if(a instanceof CKEDITOR.dom.element){b=b||a.data("widget");d=this.registered[b];if(!d)return null;
1040if((c=a.getParent())&&c.type==CKEDITOR.NODE_ELEMENT&&c.data("cke-widget-wrapper"))return c;a.hasAttribute("data-cke-widget-keep-attr")||a.data("cke-widget-keep-attr",a.data("widget")?1:0);a.data("widget",b);e=x(d,a.getName());c=new CKEDITOR.dom.element(e?"span":"div");c.setAttributes(v(e,b));c.data("cke-display-name",d.pathName?d.pathName:a.getName());a.getParent(!0)&&c.replace(a);a.appendTo(c)}else if(a instanceof CKEDITOR.htmlParser.element){b=b||a.attributes["data-widget"];d=this.registered[b];
1041if(!d)return null;if((c=a.parent)&&c.type==CKEDITOR.NODE_ELEMENT&&c.attributes["data-cke-widget-wrapper"])return c;"data-cke-widget-keep-attr"in a.attributes||(a.attributes["data-cke-widget-keep-attr"]=a.attributes["data-widget"]?1:0);b&&(a.attributes["data-widget"]=b);e=x(d,a.name);c=new CKEDITOR.htmlParser.element(e?"span":"div",v(e,b));c.attributes["data-cke-display-name"]=d.pathName?d.pathName:a.name;d=a.parent;var f;d&&(f=a.getIndex(),a.remove());c.add(a);d&&w(d,f,c)}return c},_tests_createEditableFilter:u};
1042CKEDITOR.event.implementOn(p.prototype);g.prototype={addClass:function(a){this.element.addClass(a);this.wrapper.addClass(g.WRAPPER_CLASS_PREFIX+a)},applyStyle:function(a){A(this,a,1)},checkStyleActive:function(a){a=B(a);var b;if(!a)return!1;for(;b=a.pop();)if(!this.hasClass(b))return!1;return!0},destroy:function(a){this.fire("destroy");if(this.editables)for(var b in this.editables)this.destroyEditable(b,a);a||("0"==this.element.data("cke-widget-keep-attr")&&this.element.removeAttribute("data-widget"),
1043this.element.removeAttributes(["data-cke-widget-data","data-cke-widget-keep-attr"]),this.element.removeClass("cke_widget_element"),this.element.replace(this.wrapper));this.wrapper=null},destroyEditable:function(a,b){var c=this.editables[a];c.removeListener("focus",E);c.removeListener("blur",D);this.editor.focusManager.remove(c);b||(this.repository.destroyAll(!1,c),c.removeClass("cke_widget_editable"),c.removeClass("cke_widget_editable_focused"),c.removeAttributes(["contenteditable","data-cke-widget-editable",
1044"data-cke-enter-mode"]));delete this.editables[a]},edit:function(){var a={dialog:this.dialog},b=this;if(!1===this.fire("edit",a)||!a.dialog)return!1;this.editor.openDialog(a.dialog,function(a){var d,e;!1!==b.fire("dialog",a)&&(d=a.on("show",function(){a.setupContent(b)}),e=a.on("ok",function(){var d,e=b.on("data",function(a){d=1;a.cancel()},null,null,0);b.editor.fire("saveSnapshot");a.commitContent(b);e.removeListener();d&&(b.fire("data",b.data),b.editor.fire("saveSnapshot"))}),a.once("hide",function(){d.removeListener();
1045e.removeListener()}))});return!0},getClasses:function(){return this.repository.parseElementClasses(this.element.getAttribute("class"))},hasClass:function(a){return this.element.hasClass(a)},initEditable:function(a,b){var c=this._findOneNotNested(b.selector);return c&&c.is(CKEDITOR.dtd.$editable)?(c=new q(this.editor,c,{filter:u.call(this.repository,this.name,a,b)}),this.editables[a]=c,c.setAttributes({contenteditable:"true","data-cke-widget-editable":a,"data-cke-enter-mode":c.enterMode}),c.filter&&
1046c.data("cke-filter",c.filter.id),c.addClass("cke_widget_editable"),c.removeClass("cke_widget_editable_focused"),b.pathName&&c.data("cke-display-name",b.pathName),this.editor.focusManager.add(c),c.on("focus",E,this),CKEDITOR.env.ie&&c.on("blur",D,this),c._.initialSetData=!0,c.setData(c.getHtml()),!0):!1},_findOneNotNested:function(a){a=this.wrapper.find(a);for(var b,c,d=0;d<a.count();d++)if(b=a.getItem(d),c=b.getAscendant(g.isDomWidgetWrapper),this.wrapper.equals(c))return b;return null},isInited:function(){return!(!this.wrapper||
1047!this.inited)},isReady:function(){return this.isInited()&&this.ready},focus:function(){var a=this.editor.getSelection();if(a){var b=this.editor.checkDirty();a.fake(this.wrapper);!b&&this.editor.resetDirty()}this.editor.focus()},removeClass:function(a){this.element.removeClass(a);this.wrapper.removeClass(g.WRAPPER_CLASS_PREFIX+a)},removeStyle:function(a){A(this,a,0)},setData:function(a,b){var c=this.data,d=0;if("string"==typeof a)c[a]!==b&&(c[a]=b,d=1);else{var e=a;for(a in e)c[a]!==e[a]&&(d=1,c[a]=
1048e[a])}d&&this.dataReady&&(r(this),this.fire("data",c));return this},setFocused:function(a){this.wrapper[a?"addClass":"removeClass"]("cke_widget_focused");this.fire(a?"focus":"blur");return this},setSelected:function(a){this.wrapper[a?"addClass":"removeClass"]("cke_widget_selected");this.fire(a?"select":"deselect");return this},updateDragHandlerPosition:function(){var a=this.editor,b=this.element.$,c=this._.dragHandlerOffset,b={x:b.offsetLeft,y:b.offsetTop-15};c&&b.x==c.x&&b.y==c.y||(c=a.checkDirty(),
1049a.fire("lockSnapshot"),this.dragHandlerContainer.setStyles({top:b.y+"px",left:b.x+"px",display:"block"}),a.fire("unlockSnapshot"),!c&&a.resetDirty(),this._.dragHandlerOffset=b)}};CKEDITOR.event.implementOn(g.prototype);g.getNestedEditable=function(a,b){return!b||b.equals(a)?null:g.isDomNestedEditable(b)?b:g.getNestedEditable(a,b.getParent())};g.isDomDragHandler=function(a){return a.type==CKEDITOR.NODE_ELEMENT&&a.hasAttribute("data-cke-widget-drag-handler")};g.isDomDragHandlerContainer=function(a){return a.type==
1050CKEDITOR.NODE_ELEMENT&&a.hasClass("cke_widget_drag_handler_container")};g.isDomNestedEditable=function(a){return a.type==CKEDITOR.NODE_ELEMENT&&a.hasAttribute("data-cke-widget-editable")};g.isDomWidgetElement=function(a){return a.type==CKEDITOR.NODE_ELEMENT&&a.hasAttribute("data-widget")};g.isDomWidgetWrapper=function(a){return a.type==CKEDITOR.NODE_ELEMENT&&a.hasAttribute("data-cke-widget-wrapper")};g.isParserWidgetElement=function(a){return a.type==CKEDITOR.NODE_ELEMENT&&!!a.attributes["data-widget"]};
1051g.isParserWidgetWrapper=function(a){return a.type==CKEDITOR.NODE_ELEMENT&&!!a.attributes["data-cke-widget-wrapper"]};g.WRAPPER_CLASS_PREFIX="cke_widget_wrapper_";q.prototype=CKEDITOR.tools.extend(CKEDITOR.tools.prototypedCopy(CKEDITOR.dom.element.prototype),{setData:function(a){this._.initialSetData||this.editor.widgets.destroyAll(!1,this);this._.initialSetData=!1;a=this.editor.dataProcessor.toHtml(a,{context:this.getName(),filter:this.filter,enterMode:this.enterMode});this.setHtml(a);this.editor.widgets.initOnAll(this)},
1052getData:function(){return this.editor.dataProcessor.toDataFormat(this.getHtml(),{context:this.getName(),filter:this.filter,enterMode:this.enterMode})}});var U=/^(?:<(?:div|span)(?: data-cke-temp="1")?(?: id="cke_copybin")?(?: data-cke-temp="1")?>)?(?:<(?:div|span)(?: style="[^"]+")?>)?<span [^>]*data-cke-copybin-start="1"[^>]*>.?<\/span>([\s\S]+)<span [^>]*data-cke-copybin-end="1"[^>]*>.?<\/span>(?:<\/(?:div|span)>)?(?:<\/(?:div|span)>)?$/i,da={37:1,38:1,39:1,40:1,8:1,46:1};(function(){function a(){}
1053function b(a,b,c){return c&&this.checkElement(a)?(a=c.widgets.getByElement(a,!0))&&a.checkStyleActive(this):!1}var c={};CKEDITOR.style.addCustomHandler({type:"widget",setup:function(a){this.widget=a.widget;if(this.group="string"==typeof a.group?[a.group]:a.group){a=this.widget;var b;c[a]||(c[a]={});for(var f=0,h=this.group.length;f<h;f++)b=this.group[f],c[a][b]||(c[a][b]=[]),c[a][b].push(this)}},apply:function(a){var b;a instanceof CKEDITOR.editor&&this.checkApplicable(a.elementPath(),a)&&(b=a.widgets.focused,
1054this.group&&this.removeStylesFromSameGroup(a),b.applyStyle(this))},remove:function(a){a instanceof CKEDITOR.editor&&this.checkApplicable(a.elementPath(),a)&&a.widgets.focused.removeStyle(this)},removeStylesFromSameGroup:function(a){var b,f,h=!1;if(!(a instanceof CKEDITOR.editor))return!1;f=a.elementPath();if(this.checkApplicable(f,a))for(var g=0,k=this.group.length;g<k;g++){b=c[this.widget][this.group[g]];for(var m=0;m<b.length;m++)b[m]!==this&&b[m].checkActive(f,a)&&(a.widgets.focused.removeStyle(b[m]),
1055h=!0)}return h},checkActive:function(a,b){return this.checkElementMatch(a.lastElement,0,b)},checkApplicable:function(a,b){return b instanceof CKEDITOR.editor?this.checkElement(a.lastElement):!1},checkElementMatch:b,checkElementRemovable:b,checkElement:function(a){return g.isDomWidgetWrapper(a)?(a=a.getFirst(g.isDomWidgetElement))&&a.data("widget")==this.widget:!1},buildPreview:function(a){return a||this._.definition.name},toAllowedContentRules:function(a){if(!a)return null;a=a.widgets.registered[this.widget];
1056var b,c={};if(!a)return null;if(a.styleableElements){b=this.getClassesArray();if(!b)return null;c[a.styleableElements]={classes:b,propertiesOnly:!0};return c}return a.styleToAllowedContentRules?a.styleToAllowedContentRules(this):null},getClassesArray:function(){var a=this._.definition.attributes&&this._.definition.attributes["class"];return a?CKEDITOR.tools.trim(a).split(/\s+/):null},applyToRange:a,removeFromRange:a,applyToObject:a})})();CKEDITOR.plugins.widget=g;g.repository=p;g.nestedEditable=q})();(function(){CKEDITOR.plugins.add("oembed",{icons:"oembed",hidpi:!0,requires:"widget,dialog",version:1.17,init:function(e){function l(a,d,c,f,g,j,h,b){jQuery("body").oembed(a,{onEmbed:function(d){var g=jQuery.fn.oembed.getOEmbedProvider(a);b.element.data("resizeType",j);if("responsive"==j||"custom"==j)b.element.data("maxWidth",c),b.element.data("maxHeight",f);b.element.data("align",h);"center"==h?(b.inline||b.element.setStyle("text-align","center"),b.element.removeStyle("float")):(b.inline||b.element.removeStyle("text-align"),
1057"none"==h?b.element.removeStyle("float"):b.element.setStyle("float",h));"string"===typeof d.code?(b.element.$.firstChild&&b.element.$.removeChild(b.element.$.firstChild),b.element.appendHtml(d.code),b.element.data("oembed",a),b.element.data("oembed_provider",g.name),b.element.addClass("oembed-provider-"+g.name)):"string"===typeof d.code[0].outerHTML?(b.element.$.firstChild&&b.element.$.removeChild(b.element.$.firstChild),b.element.appendHtml(d.code[0].outerHTML),b.element.data("oembed",a),b.element.data("oembed_provider",
1058g.name),b.element.addClass("oembed-provider-"+g.name)):alert(e.lang.oembed.noEmbedCode)},onError:function(a){0<a.indexOf("vimeo.com")?alert(e.lang.oembed.noVimeo):alert(e.lang.oembed.Error)},maxHeight:f,maxWidth:c,useResponsiveResize:g,embedMethod:"editor"})}(function(){"undefined"===typeof jQuery?CKEDITOR.scriptLoader.load("//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js",function(){jQuery.noConflict();"undefined"===typeof jQuery.fn.oembed&&CKEDITOR.scriptLoader.load(CKEDITOR.getUrl(CKEDITOR.plugins.getPath("oembed")+
1059"libs/jquery.oembed.min.js"))}):"undefined"===typeof jQuery.fn.oembed&&CKEDITOR.scriptLoader.load(CKEDITOR.getUrl(CKEDITOR.plugins.getPath("oembed")+"libs/jquery.oembed.min.js"))})();CKEDITOR.tools.extend(CKEDITOR.editor.prototype,{oEmbed:function(a,d,c,f){function g(){if(null==d||"undefined"==d)d=null;if(null==c||"undefined"==c)c=null;if(null==f||"undefined"==f)f=!1;l(a,e,!1,d,c,f)}if(1>a.length||0>a.indexOf("http"))return alert(e.lang.oembed.invalidUrl),!1;"undefined"===typeof jQuery.fn.oembed?
1060CKEDITOR.scriptLoader.load(CKEDITOR.getUrl(CKEDITOR.plugins.getPath("oembed")+"libs/jquery.oembed.min.js"),function(){g()}):g();return!0}});e.widgets.add("oembed",{draggable:!1,mask:!0,dialog:"oembed",allowedContent:{div:{styles:"text-align,float",attributes:"*",classes:null!=e.config.oembed_WrapperClass?e.config.oembed_WrapperClass:"embeddedContent"},"div(embeddedContent,oembed-provider-*) iframe":{attributes:"*"},"div(embeddedContent,oembed-provider-*) blockquote":{attributes:"*"},"div(embeddedContent,oembed-provider-*) script":{attributes:"*"}},
1061template:'<div class="'+(null!=e.config.oembed_WrapperClass?e.config.oembed_WrapperClass:"embeddedContent")+'"></div>',upcast:function(a){return"div"==a.name&&a.hasClass(null!=e.config.oembed_WrapperClass?e.config.oembed_WrapperClass:"embeddedContent")},init:function(){var a={oembed:this.element.data("oembed")||"",resizeType:this.element.data("resizeType")||"noresize",maxWidth:this.element.data("maxWidth")||560,maxHeight:this.element.data("maxHeight")||315,align:this.element.data("align")||"none",
1062oembed_provider:this.element.data("oembed_provider")||""};this.setData(a);this.element.addClass("oembed-provider-"+a.oembed_provider);this.on("dialog",function(a){a.data.widget=this},this)}});e.ui.addButton("oembed",{label:e.lang.oembed.button,command:"oembed",toolbar:"insert,10",icon:this.path+"icons/"+(CKEDITOR.env.hidpi?"hidpi/":"")+"oembed.png"});var k=function(){var a=this.getDialog(),d=this.getValue(),c=a.getContentElement("general","maxSizeBox").getElement(),a=a.getContentElement("general",
1063"sizeBox").getElement();"noresize"==d?(c.hide(),a.hide()):"custom"==d?(c.hide(),a.show()):(c.show(),a.hide())};String.prototype.beginsWith=function(a){return 0===this.indexOf(a)};CKEDITOR.dialog.add("oembed",function(a){return{title:a.lang.oembed.title,minWidth:CKEDITOR.env.ie&&CKEDITOR.env.quirks?568:550,minHeight:155,onShow:function(){var a={oembed:this.widget.element.data("oembed")||"",resizeType:this.widget.element.data("resizeType")||"noresize",maxWidth:this.widget.element.data("maxWidth"),maxHeight:this.widget.element.data("maxHeight"),
1064align:this.widget.element.data("align")||"none"};this.widget.setData(a);this.getContentElement("general","resizeType").setValue(a.resizeType);this.getContentElement("general","align").setValue(a.align);var a=this.getContentElement("general","resizeType").getValue(),c=this.getContentElement("general","maxSizeBox").getElement(),f=this.getContentElement("general","sizeBox").getElement();"noresize"==a?(c.hide(),f.hide()):"custom"==a?(c.hide(),f.show()):(c.show(),f.hide())},onOk:function(){},contents:[{label:a.lang.common.generalTab,
1065id:"general",elements:[{type:"html",id:"oembedHeader",html:'<div style="white-space:normal;width:500px;padding-bottom:10px">'+a.lang.oembed.pasteUrl+"</div>"},{type:"text",id:"embedCode",focus:function(){this.getElement().focus()},label:a.lang.oembed.url,title:a.lang.oembed.pasteUrl,setup:function(a){a.data.oembed&&this.setValue(a.data.oembed)},commit:function(d){var c=CKEDITOR.dialog.getCurrent(),f=c.getValueOf("general","embedCode").replace(/\s/g,""),g=c.getContentElement("general","resizeType").getValue(),
1066e=c.getContentElement("general","align").getValue(),h=null,b=null,i=!1,k=c.getParentEditor();if(1>f.length||0>f.indexOf("http"))return alert(a.lang.oembed.invalidUrl),!1;"noresize"==g?(i=!1,b=h=null):"responsive"==g?(h=c.getContentElement("general","maxWidth").getInputElement().getValue(),b=c.getContentElement("general","maxHeight").getInputElement().getValue(),i=!0):"custom"==g&&(h=c.getContentElement("general","width").getInputElement().getValue(),b=c.getContentElement("general","height").getInputElement().getValue(),
1067i=!1);l(f,k,h,b,i,g,e,d);d.setData("oembed",f);d.setData("resizeType",g);d.setData("align",e);d.setData("maxWidth",h);d.setData("maxHeight",b)}},{type:"hbox",widths:["50%","50%"],children:[{id:"resizeType",type:"select",label:a.lang.oembed.resizeType,"default":"noresize",setup:function(a){a.data.resizeType&&this.setValue(a.data.resizeType)},items:[[a.lang.oembed.noresize,"noresize"],[a.lang.oembed.responsive,"responsive"],[a.lang.oembed.custom,"custom"]],onChange:k},{type:"hbox",id:"maxSizeBox",widths:["120px",
1068"120px"],style:"float:left;position:absolute;left:58%;width:200px",children:[{type:"text",width:"100px",id:"maxWidth","default":null!=a.config.oembed_maxWidth?a.config.oembed_maxWidth:"560",label:a.lang.oembed.maxWidth,title:a.lang.oembed.maxWidthTitle,setup:function(a){a.data.maxWidth&&this.setValue(a.data.maxWidth)}},{type:"text",id:"maxHeight",width:"120px","default":null!=a.config.oembed_maxHeight?a.config.oembed_maxHeight:"315",label:a.lang.oembed.maxHeight,title:a.lang.oembed.maxHeightTitle,
1069setup:function(a){a.data.maxHeight&&this.setValue(a.data.maxHeight)}}]},{type:"hbox",id:"sizeBox",widths:["120px","120px"],style:"float:left;position:absolute;left:58%;width:200px",children:[{type:"text",id:"width",width:"100px","default":null!=a.config.oembed_maxWidth?a.config.oembed_maxWidth:"560",label:a.lang.oembed.width,title:a.lang.oembed.widthTitle,setup:function(a){a.data.maxWidth&&this.setValue(a.data.maxWidth)}},{type:"text",id:"height",width:"120px","default":null!=a.config.oembed_maxHeight?
1070a.config.oembed_maxHeight:"315",label:a.lang.oembed.height,title:a.lang.oembed.heightTitle,setup:function(a){a.data.maxHeight&&this.setValue(a.data.maxHeight)}}]}]},{type:"hbox",id:"alignment",children:[{id:"align",type:"radio",items:[[a.lang.oembed.none,"none"],[a.lang.common.alignLeft,"left"],[a.lang.common.alignCenter,"center"],[a.lang.common.alignRight,"right"]],label:a.lang.common.align,setup:function(a){this.setValue(a.data.align)}}]}]}]}})}})})();(function(){CKEDITOR.plugins.add("Audio",{lang:["en","es"],getPlaceholderCss:function(){return"img.cke_audio{background-image: url("+CKEDITOR.getUrl(this.path+"images/placeholder.png")+");background-position: center center;background-repeat: no-repeat;background-color:gray;border: 1px solid #a9a9a9;width: 80px;height: 80px;}"},onLoad:function(){CKEDITOR.addCss&&CKEDITOR.addCss(this.getPlaceholderCss())},init:function(b){var c=b.lang.audio;"undefined"==typeof b.element.data?alert('The "audio" plugin requires CKEditor 3.5 or newer'):
1071(CKEDITOR.dialog.add("audio",this.path+"dialogs/audio.js"),b.addCommand("Audio",new CKEDITOR.dialogCommand("audio")),b.ui.addButton("Audio",{label:c.toolbar,command:"Audio",icon:this.path+"images/icon.png"}),b.addCss&&b.addCss(this.getPlaceholderCss()),b.addMenuItems&&b.addMenuItems({audio:{label:c.properties,command:"Audio",group:"flash"}}),b.on("doubleclick",function(a){var b=a.data.element;b.is("img")&&"audio"==b.data("cke-real-element-type")&&(a.data.dialog="audio")}),b.contextMenu&&b.contextMenu.addListener(function(a){if(a&&
1072a.is("img")&&!a.isReadOnly()&&"audio"==a.data("cke-real-element-type"))return{audio:CKEDITOR.TRISTATE_OFF}}),CKEDITOR.dtd.$empty["cke:source"]=1,CKEDITOR.dtd.$empty.source=1,b.lang.fakeobjects.audio=c.fakeObject)},afterInit:function(b){var c=b.dataProcessor;(c&&c.dataFilter).addRules({elements:{$:function(a){if("audio"==a.name){a.name="cke:audio";for(var d=0;d<a.children.length;d++)"source"==a.children[d].name&&(a.children[d].name="cke:source");var d=b.createFakeParserElement(a,"cke_audio","audio",
1073!1),c=d.attributes.style||"",e=a.attributes.width,f=a.attributes.height,a=a.attributes.poster;"undefined"!=typeof e&&(c=d.attributes.style=c+"width:"+CKEDITOR.tools.cssLength(e)+";");"undefined"!=typeof f&&(c=d.attributes.style=c+"height:"+CKEDITOR.tools.cssLength(f)+";");a&&(d.attributes.style=c+"background-image:url("+a+");");return d}}}})}});var e={toolbar:"Audio",dialogTitle:"Audio properties",fakeObject:"Audio",properties:"Edit audio",widthRequired:"Width field cannot be empty",heightRequired:"Height field cannot be empty",
1074poster:"Poster image",sourceaudio:"Source audio",sourceType:"Audio type",linkTemplate:'<a href="%src%">%type%</a> ',fallbackTemplate:"Your browser doesn't support audio.<br>Please download the file: %links%"},f={toolbar:"Audio",dialogTitle:"Propiedades de audio",fakeObject:"Audio",properties:"Editar el audio",widthRequired:"La anchura no se puede dejar en blanco",heightRequired:"La altura no se puede dejar en blanco",poster:"Imagen de presentación",sourceaudio:"Archivo de audio",sourceType:"Tipo",
1075linkTemplate:'<a href="%src%">%type%</a> ',fallbackTemplate:"Su navegador no soporta audio.<br>Por favor, descargue el fichero: %links%"};CKEDITOR.skins&&(e={audio:e},f={audio:f});CKEDITOR.plugins.setLang("audio","en",e);CKEDITOR.plugins.setLang("audio","es",f)})();CKEDITOR.plugins.add("html5video",{requires:"widget",lang:"de,en,eu,es,ru,uk,fr",icons:"html5video",init:function(b){b.widgets.add("html5video",{button:b.lang.html5video.button,template:'\x3cdiv class\x3d"ckeditor-html5-video"\x3e\x3c/div\x3e',allowedContent:"div[data-responsive](!ckeditor-html5-video){text-align,float,margin-left,margin-right}; video[src,controls,autoplay,width, height]{max-width,height};",requiredContent:"div(ckeditor-html5-video); video[src,controls];",upcast:function(a){return"div"===
1076a.name&&a.hasClass("ckeditor-html5-video")},dialog:"html5video",init:function(){var a="",b="",e=this.element.getStyle("text-align"),c="",d="";this.element.getChild(0)&&(a=this.element.getChild(0).getAttribute("src"),c=this.element.getChild(0).getAttribute("width"),d=this.element.getChild(0).getAttribute("height"),b=this.element.getChild(0).getAttribute("autoplay"),responsive=this.element.getAttribute("data-responsive"));a&&(this.setData("src",a),e?this.setData("align",e):this.setData("align","none"),
1077c&&this.setData("width",c),d&&this.setData("height",d),b&&this.setData("autoplay","yes"),responsive&&this.setData("responsive",responsive))},data:function(){if(this.data.src){if(!this.element.getChild(0)){var a=new CKEDITOR.dom.element("video");a.setAttribute("controls","controls");this.element.append(a)}this.element.getChild(0).setAttribute("src",this.data.src);this.data.width&&this.element.getChild(0).setAttribute("width",this.data.width);this.data.height&&this.element.getChild(0).setAttribute("height",
1078this.data.height);this.data.responsive?(this.element.setAttribute("data-responsive",this.data.responsive),this.element.getChild(0).setStyle("max-width","100%"),this.element.getChild(0).setStyle("height","auto")):(this.element.getChild(0).removeStyle("max-width"),this.element.getChild(0).removeStyle("height"))}this.element.removeStyle("float");this.element.removeStyle("margin-left");this.element.removeStyle("margin-right");"none"===this.data.align?this.element.removeStyle("text-align"):this.element.setStyle("text-align",
1079this.data.align);"left"===this.data.align?(this.element.setStyle("float",this.data.align),this.element.setStyle("margin-right","10px")):"right"===this.data.align&&(this.element.setStyle("float",this.data.align),this.element.setStyle("margin-left","10px"));this.element.getChild(0)&&("yes"===this.data.autoplay?this.element.getChild(0).setAttribute("autoplay","autoplay"):this.element.getChild(0).removeAttribute("autoplay"))}});b.contextMenu&&(b.addMenuGroup("html5videoGroup"),b.addMenuItem("html5videoPropertiesItem",
1080{label:b.lang.html5video.videoProperties,icon:"html5video",command:"html5video",group:"html5videoGroup"}),b.contextMenu.addListener(function(a){if(a&&a.getChild(0)&&a.getChild(0).hasClass&&a.getChild(0).hasClass("ckeditor-html5-video"))return{html5videoPropertiesItem:CKEDITOR.TRISTATE_OFF}}));CKEDITOR.dialog.add("html5video",this.path+"dialogs/html5video.js")}});CKEDITOR.config.plugins='dialogui,dialog,a11yhelp,dialogadvtab,basicstyles,panel,floatpanel,menu,contextmenu,resize,button,toolbar,elementspath,enterkey,entities,popup,filebrowser,floatingspace,listblock,richcombo,format,horizontalrule,htmlwriter,fakeobjects,iframe,wysiwygarea,image,indent,indentblock,indentlist,justify,link,list,liststyle,magicline,maximize,removeformat,showborders,sourcearea,tab,lineutils,notification,clipboard,widgetselection,widget,oembed,Audio,html5video';CKEDITOR.config.skin='moono';(function() {var setIcons = function(icons, strip) {var path = CKEDITOR.getUrl( 'plugins/' + strip );icons = icons.split( ',' );for ( var i = 0; i < icons.length; i++ )CKEDITOR.skin.icons[ icons[ i ] ] = { path: path, offset: -icons[ ++i ], bgsize : icons[ ++i ] };};if (CKEDITOR.env.hidpi) setIcons('bold,0,,italic,24,,strike,48,,subscript,72,,superscript,96,,underline,120,,horizontalrule,144,,iframe,168,,image,192,,indent-rtl,216,,indent,240,,outdent-rtl,264,,outdent,288,,justifyblock,312,,justifycenter,336,,justifyleft,360,,justifyright,384,,anchor-rtl,408,,anchor,432,,link,456,,unlink,480,,bulletedlist-rtl,504,,bulletedlist,528,,numberedlist-rtl,552,,numberedlist,576,,maximize,600,,removeformat,624,,source-rtl,648,,source,672,,copy-rtl,696,,copy,720,,cut-rtl,744,,cut,768,,paste-rtl,792,,paste,816,,oembed,840,,html5video,1728,auto','icons_hidpi.png');else setIcons('bold,0,auto,italic,24,auto,strike,48,auto,subscript,72,auto,superscript,96,auto,underline,120,auto,horizontalrule,144,auto,iframe,168,auto,image,192,auto,indent-rtl,216,auto,indent,240,auto,outdent-rtl,264,auto,outdent,288,auto,justifyblock,312,auto,justifycenter,336,auto,justifyleft,360,auto,justifyright,384,auto,anchor-rtl,408,auto,anchor,432,auto,link,456,auto,unlink,480,auto,bulletedlist-rtl,504,auto,bulletedlist,528,auto,numberedlist-rtl,552,auto,numberedlist,576,auto,maximize,600,auto,removeformat,624,auto,source-rtl,648,auto,source,672,auto,copy-rtl,696,auto,copy,720,auto,cut-rtl,744,auto,cut,768,auto,paste-rtl,792,auto,paste,816,auto,oembed,840,auto,html5video,864,auto','icons.png');})();CKEDITOR.lang.languages={"en":1,"fr":1};}()); \ No newline at end of file
diff --git a/release/config.js b/release/config.js
index 06159c0..01a391a 100644
--- a/release/config.js
+++ b/release/config.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/release/contents.css b/release/contents.css
index c6936fe..920f2ca 100644
--- a/release/contents.css
+++ b/release/contents.css
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5 5
@@ -133,3 +133,76 @@ a > img {
133 border: none; 133 border: none;
134 outline: 1px solid #0782C1; 134 outline: 1px solid #0782C1;
135} 135}
136
137/* Widget Styles */
138.code-featured
139{
140 border: 5px solid red;
141}
142
143.math-featured
144{
145 padding: 20px;
146 box-shadow: 0 0 2px rgba(200, 0, 0, 1);
147 background-color: rgba(255, 0, 0, 0.05);
148 margin: 10px;
149}
150
151.image-clean
152{
153 border: 0;
154 background: none;
155 padding: 0;
156}
157
158.image-clean > figcaption
159{
160 font-size: .9em;
161 text-align: right;
162}
163
164.image-grayscale
165{
166 background-color: white;
167 color: #666;
168}
169
170.image-grayscale img, img.image-grayscale
171{
172 filter: grayscale(100%);
173}
174
175.embed-240p
176{
177 max-width: 426px;
178 max-height: 240px;
179 margin:0 auto;
180}
181
182.embed-360p
183{
184 max-width: 640px;
185 max-height: 360px;
186 margin:0 auto;
187}
188
189.embed-480p
190{
191 max-width: 854px;
192 max-height: 480px;
193 margin:0 auto;
194}
195
196.embed-720p
197{
198 max-width: 1280px;
199 max-height: 720px;
200 margin:0 auto;
201}
202
203.embed-1080p
204{
205 max-width: 1920px;
206 max-height: 1080px;
207 margin:0 auto;
208}
diff --git a/release/lang/en.js b/release/lang/en.js
index 9c9aff5..c9da85c 100644
--- a/release/lang/en.js
+++ b/release/lang/en.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.lang['en']={"editor":"Rich Text Editor","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"Press ALT 0 for help","browseServer":"Browse Server","url":"URL","protocol":"Protocol","upload":"Upload","uploadSubmit":"Send it to the Server","image":"Image","flash":"Flash","form":"Form","checkbox":"Checkbox","radio":"Radio Button","textField":"Text Field","textarea":"Textarea","hiddenField":"Hidden Field","button":"Button","select":"Selection Field","imageButton":"Image Button","notSet":"<not set>","id":"Id","name":"Name","langDir":"Language Direction","langDirLtr":"Left to Right (LTR)","langDirRtl":"Right to Left (RTL)","langCode":"Language Code","longDescr":"Long Description URL","cssClass":"Stylesheet Classes","advisoryTitle":"Advisory Title","cssStyle":"Style","ok":"OK","cancel":"Cancel","close":"Close","preview":"Preview","resize":"Resize","generalTab":"General","advancedTab":"Advanced","validateNumberFailed":"This value is not a number.","confirmNewPage":"Any unsaved changes to this content will be lost. Are you sure you want to load new page?","confirmCancel":"You have changed some options. Are you sure you want to close the dialog window?","options":"Options","target":"Target","targetNew":"New Window (_blank)","targetTop":"Topmost Window (_top)","targetSelf":"Same Window (_self)","targetParent":"Parent Window (_parent)","langDirLTR":"Left to Right (LTR)","langDirRTL":"Right to Left (RTL)","styles":"Style","cssClasses":"Stylesheet Classes","width":"Width","height":"Height","align":"Alignment","alignLeft":"Left","alignRight":"Right","alignCenter":"Center","alignJustify":"Justify","alignTop":"Top","alignMiddle":"Middle","alignBottom":"Bottom","alignNone":"None","invalidValue":"Invalid value.","invalidHeight":"Height must be a number.","invalidWidth":"Width must be a number.","invalidCssLength":"Value specified for the \"%1\" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).","invalidHtmlLength":"Value specified for the \"%1\" field must be a positive number with or without a valid HTML measurement unit (px or %).","invalidInlineStyle":"Value specified for the inline style must consist of one or more tuples with the format of \"name : value\", separated by semi-colons.","cssLengthTooltip":"Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1<span class=\"cke_accessibility\">, unavailable</span>"},"basicstyles":{"bold":"Bold","italic":"Italic","strike":"Strikethrough","subscript":"Subscript","superscript":"Superscript","underline":"Underline"},"contextmenu":{"options":"Context Menu Options"},"elementspath":{"eleLabel":"Elements path","eleTitle":"%1 element"},"button":{"selectedLabel":"%1 (Selected)"},"format":{"label":"Format","panelTitle":"Paragraph Format","tag_address":"Address","tag_div":"Normal (DIV)","tag_h1":"Heading 1","tag_h2":"Heading 2","tag_h3":"Heading 3","tag_h4":"Heading 4","tag_h5":"Heading 5","tag_h6":"Heading 6","tag_p":"Normal","tag_pre":"Formatted"},"horizontalrule":{"toolbar":"Insert Horizontal Line"},"fakeobjects":{"anchor":"Anchor","flash":"Flash Animation","hiddenfield":"Hidden Field","iframe":"IFrame","unknown":"Unknown Object"},"iframe":{"border":"Show frame border","noUrl":"Please type the iframe URL","scrolling":"Enable scrollbars","title":"IFrame Properties","toolbar":"IFrame"},"image":{"alt":"Alternative Text","border":"Border","btnUpload":"Send it to the Server","button2Img":"Do you want to transform the selected image button on a simple image?","hSpace":"HSpace","img2Button":"Do you want to transform the selected image on a image button?","infoTab":"Image Info","linkTab":"Link","lockRatio":"Lock Ratio","menu":"Image Properties","resetSize":"Reset Size","title":"Image Properties","titleButton":"Image Button Properties","upload":"Upload","urlMissing":"Image source URL is missing.","vSpace":"VSpace","validateBorder":"Border must be a whole number.","validateHSpace":"HSpace must be a whole number.","validateVSpace":"VSpace must be a whole number."},"indent":{"indent":"Increase Indent","outdent":"Decrease Indent"},"justify":{"block":"Justify","center":"Center","left":"Align Left","right":"Align Right"},"link":{"acccessKey":"Access Key","advanced":"Advanced","advisoryContentType":"Advisory Content Type","advisoryTitle":"Advisory Title","anchor":{"toolbar":"Anchor","menu":"Edit Anchor","title":"Anchor Properties","name":"Anchor Name","errorName":"Please type the anchor name","remove":"Remove Anchor"},"anchorId":"By Element Id","anchorName":"By Anchor Name","charset":"Linked Resource Charset","cssClasses":"Stylesheet Classes","emailAddress":"E-Mail Address","emailBody":"Message Body","emailSubject":"Message Subject","id":"Id","info":"Link Info","langCode":"Language Code","langDir":"Language Direction","langDirLTR":"Left to Right (LTR)","langDirRTL":"Right to Left (RTL)","menu":"Edit Link","name":"Name","noAnchors":"(No anchors available in the document)","noEmail":"Please type the e-mail address","noUrl":"Please type the link URL","other":"<other>","popupDependent":"Dependent (Netscape)","popupFeatures":"Popup Window Features","popupFullScreen":"Full Screen (IE)","popupLeft":"Left Position","popupLocationBar":"Location Bar","popupMenuBar":"Menu Bar","popupResizable":"Resizable","popupScrollBars":"Scroll Bars","popupStatusBar":"Status Bar","popupToolbar":"Toolbar","popupTop":"Top Position","rel":"Relationship","selectAnchor":"Select an Anchor","styles":"Style","tabIndex":"Tab Index","target":"Target","targetFrame":"<frame>","targetFrameName":"Target Frame Name","targetPopup":"<popup window>","targetPopupName":"Popup Window Name","title":"Link","toAnchor":"Link to anchor in the text","toEmail":"E-mail","toUrl":"URL","toolbar":"Link","type":"Link Type","unlink":"Unlink","upload":"Upload"},"list":{"bulletedlist":"Insert/Remove Bulleted List","numberedlist":"Insert/Remove Numbered List"},"liststyle":{"armenian":"Armenian numbering","bulletedTitle":"Bulleted List Properties","circle":"Circle","decimal":"Decimal (1, 2, 3, etc.)","decimalLeadingZero":"Decimal leading zero (01, 02, 03, etc.)","disc":"Disc","georgian":"Georgian numbering (an, ban, gan, etc.)","lowerAlpha":"Lower Alpha (a, b, c, d, e, etc.)","lowerGreek":"Lower Greek (alpha, beta, gamma, etc.)","lowerRoman":"Lower Roman (i, ii, iii, iv, v, etc.)","none":"None","notset":"<not set>","numberedTitle":"Numbered List Properties","square":"Square","start":"Start","type":"Type","upperAlpha":"Upper Alpha (A, B, C, D, E, etc.)","upperRoman":"Upper Roman (I, II, III, IV, V, etc.)","validateStartNumber":"List start number must be a whole number."},"magicline":{"title":"Insert paragraph here"},"maximize":{"maximize":"Maximize","minimize":"Minimize"},"removeformat":{"toolbar":"Remove Format"},"sourcearea":{"toolbar":"Source"},"toolbar":{"toolbarCollapse":"Collapse Toolbar","toolbarExpand":"Expand Toolbar","toolbarGroups":{"document":"Document","clipboard":"Clipboard/Undo","editing":"Editing","forms":"Forms","basicstyles":"Basic Styles","paragraph":"Paragraph","links":"Links","insert":"Insert","styles":"Styles","colors":"Colors","tools":"Tools"},"toolbars":"Editor toolbars"}}; \ No newline at end of file 5CKEDITOR.lang['en']={"editor":"Rich Text Editor","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"Press ALT 0 for help","browseServer":"Browse Server","url":"URL","protocol":"Protocol","upload":"Upload","uploadSubmit":"Send it to the Server","image":"Image","flash":"Flash","form":"Form","checkbox":"Checkbox","radio":"Radio Button","textField":"Text Field","textarea":"Textarea","hiddenField":"Hidden Field","button":"Button","select":"Selection Field","imageButton":"Image Button","notSet":"<not set>","id":"Id","name":"Name","langDir":"Language Direction","langDirLtr":"Left to Right (LTR)","langDirRtl":"Right to Left (RTL)","langCode":"Language Code","longDescr":"Long Description URL","cssClass":"Stylesheet Classes","advisoryTitle":"Advisory Title","cssStyle":"Style","ok":"OK","cancel":"Cancel","close":"Close","preview":"Preview","resize":"Resize","generalTab":"General","advancedTab":"Advanced","validateNumberFailed":"This value is not a number.","confirmNewPage":"Any unsaved changes to this content will be lost. Are you sure you want to load new page?","confirmCancel":"You have changed some options. Are you sure you want to close the dialog window?","options":"Options","target":"Target","targetNew":"New Window (_blank)","targetTop":"Topmost Window (_top)","targetSelf":"Same Window (_self)","targetParent":"Parent Window (_parent)","langDirLTR":"Left to Right (LTR)","langDirRTL":"Right to Left (RTL)","styles":"Style","cssClasses":"Stylesheet Classes","width":"Width","height":"Height","align":"Alignment","alignLeft":"Left","alignRight":"Right","alignCenter":"Center","alignJustify":"Justify","alignTop":"Top","alignMiddle":"Middle","alignBottom":"Bottom","alignNone":"None","invalidValue":"Invalid value.","invalidHeight":"Height must be a number.","invalidWidth":"Width must be a number.","invalidCssLength":"Value specified for the \"%1\" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).","invalidHtmlLength":"Value specified for the \"%1\" field must be a positive number with or without a valid HTML measurement unit (px or %).","invalidInlineStyle":"Value specified for the inline style must consist of one or more tuples with the format of \"name : value\", separated by semi-colons.","cssLengthTooltip":"Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1<span class=\"cke_accessibility\">, unavailable</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Delete","224":"Command"},"keyboardShortcut":"Keyboard shortcut"},"basicstyles":{"bold":"Bold","italic":"Italic","strike":"Strikethrough","subscript":"Subscript","superscript":"Superscript","underline":"Underline"},"contextmenu":{"options":"Context Menu Options"},"button":{"selectedLabel":"%1 (Selected)"},"toolbar":{"toolbarCollapse":"Collapse Toolbar","toolbarExpand":"Expand Toolbar","toolbarGroups":{"document":"Document","clipboard":"Clipboard/Undo","editing":"Editing","forms":"Forms","basicstyles":"Basic Styles","paragraph":"Paragraph","links":"Links","insert":"Insert","styles":"Styles","colors":"Colors","tools":"Tools"},"toolbars":"Editor toolbars"},"elementspath":{"eleLabel":"Elements path","eleTitle":"%1 element"},"format":{"label":"Format","panelTitle":"Paragraph Format","tag_address":"Address","tag_div":"Normal (DIV)","tag_h1":"Heading 1","tag_h2":"Heading 2","tag_h3":"Heading 3","tag_h4":"Heading 4","tag_h5":"Heading 5","tag_h6":"Heading 6","tag_p":"Normal","tag_pre":"Formatted"},"horizontalrule":{"toolbar":"Insert Horizontal Line"},"fakeobjects":{"anchor":"Anchor","flash":"Flash Animation","hiddenfield":"Hidden Field","iframe":"IFrame","unknown":"Unknown Object"},"iframe":{"border":"Show frame border","noUrl":"Please type the iframe URL","scrolling":"Enable scrollbars","title":"IFrame Properties","toolbar":"IFrame"},"image":{"alt":"Alternative Text","border":"Border","btnUpload":"Send it to the Server","button2Img":"Do you want to transform the selected image button on a simple image?","hSpace":"HSpace","img2Button":"Do you want to transform the selected image on a image button?","infoTab":"Image Info","linkTab":"Link","lockRatio":"Lock Ratio","menu":"Image Properties","resetSize":"Reset Size","title":"Image Properties","titleButton":"Image Button Properties","upload":"Upload","urlMissing":"Image source URL is missing.","vSpace":"VSpace","validateBorder":"Border must be a whole number.","validateHSpace":"HSpace must be a whole number.","validateVSpace":"VSpace must be a whole number."},"indent":{"indent":"Increase Indent","outdent":"Decrease Indent"},"justify":{"block":"Justify","center":"Center","left":"Align Left","right":"Align Right"},"link":{"acccessKey":"Access Key","advanced":"Advanced","advisoryContentType":"Advisory Content Type","advisoryTitle":"Advisory Title","anchor":{"toolbar":"Anchor","menu":"Edit Anchor","title":"Anchor Properties","name":"Anchor Name","errorName":"Please type the anchor name","remove":"Remove Anchor"},"anchorId":"By Element Id","anchorName":"By Anchor Name","charset":"Linked Resource Charset","cssClasses":"Stylesheet Classes","download":"Force Download","displayText":"Display Text","emailAddress":"E-Mail Address","emailBody":"Message Body","emailSubject":"Message Subject","id":"Id","info":"Link Info","langCode":"Language Code","langDir":"Language Direction","langDirLTR":"Left to Right (LTR)","langDirRTL":"Right to Left (RTL)","menu":"Edit Link","name":"Name","noAnchors":"(No anchors available in the document)","noEmail":"Please type the e-mail address","noUrl":"Please type the link URL","other":"<other>","popupDependent":"Dependent (Netscape)","popupFeatures":"Popup Window Features","popupFullScreen":"Full Screen (IE)","popupLeft":"Left Position","popupLocationBar":"Location Bar","popupMenuBar":"Menu Bar","popupResizable":"Resizable","popupScrollBars":"Scroll Bars","popupStatusBar":"Status Bar","popupToolbar":"Toolbar","popupTop":"Top Position","rel":"Relationship","selectAnchor":"Select an Anchor","styles":"Style","tabIndex":"Tab Index","target":"Target","targetFrame":"<frame>","targetFrameName":"Target Frame Name","targetPopup":"<popup window>","targetPopupName":"Popup Window Name","title":"Link","toAnchor":"Link to anchor in the text","toEmail":"E-mail","toUrl":"URL","toolbar":"Link","type":"Link Type","unlink":"Unlink","upload":"Upload"},"list":{"bulletedlist":"Insert/Remove Bulleted List","numberedlist":"Insert/Remove Numbered List"},"liststyle":{"armenian":"Armenian numbering","bulletedTitle":"Bulleted List Properties","circle":"Circle","decimal":"Decimal (1, 2, 3, etc.)","decimalLeadingZero":"Decimal leading zero (01, 02, 03, etc.)","disc":"Disc","georgian":"Georgian numbering (an, ban, gan, etc.)","lowerAlpha":"Lower Alpha (a, b, c, d, e, etc.)","lowerGreek":"Lower Greek (alpha, beta, gamma, etc.)","lowerRoman":"Lower Roman (i, ii, iii, iv, v, etc.)","none":"None","notset":"<not set>","numberedTitle":"Numbered List Properties","square":"Square","start":"Start","type":"Type","upperAlpha":"Upper Alpha (A, B, C, D, E, etc.)","upperRoman":"Upper Roman (I, II, III, IV, V, etc.)","validateStartNumber":"List start number must be a whole number."},"magicline":{"title":"Insert paragraph here"},"maximize":{"maximize":"Maximize","minimize":"Minimize"},"removeformat":{"toolbar":"Remove Format"},"sourcearea":{"toolbar":"Source"},"notification":{"closed":"Notification closed."},"clipboard":{"copy":"Copy","copyError":"Your browser security settings don't permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl/Cmd+C).","cut":"Cut","cutError":"Your browser security settings don't permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl/Cmd+X).","paste":"Paste","pasteNotification":"Your browser doesn't allow you to paste this way. Press %1 to paste."},"widget":{"move":"Click and drag to move","label":"%1 widget"},"oembed":{"title":"Embed Media Content (Photo, Video, Audio or Rich Content)","button":"Embed Media from External Sites","pasteUrl":"Paste a URL (shorted URLs are also supported) from one of the supported sites (e.g. YouTube, Flickr, Qik, Vimeo, Hulu, Viddler, MyOpera, etc.).","invalidUrl":"Please provide a valid URL.","noEmbedCode":"No embed code found, or site is not supported.","url":"URL:","width":"Width:","height":"Height:","widthTitle":"Width for the embeded content","heightTitle":"Height for the embeded content","maxWidth":"Max. Width:","maxHeight":"Max. Height:","maxWidthTitle":"Maximum Width for the embeded Content","maxHeightTitle":"Maximum Height for the embeded Content","none":"None","resizeType":"Resize Type (videos only):","noresize":"No Resize (use default)","responsive":"Responsive Resize","custom":"Specific Resize","noVimeo":"The owner of this video has set domain restrictions and you will not be able to embed it on your website.","Error":"Media Content could not been retrieved, please try a different URL."},"html5video":{"button":"Insert HTML5 video","title":"HTML5 video","infoLabel":"Video info","allowed":"Allowed file extensions: MP4, WebM, Ogv","urlMissing":"Video source URL is missing.","videoProperties":"Video properties","upload":"Upload","btnUpload":"Send it to the server","advanced":"Advanced","autoplay":"Autoplay?","yes":"Yes","no":"No","responsive":"Responsive width"}}; \ No newline at end of file
diff --git a/release/lang/fr.js b/release/lang/fr.js
index f97090c..773fa12 100644
--- a/release/lang/fr.js
+++ b/release/lang/fr.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.lang['fr']={"editor":"Éditeur de Texte Enrichi","editorPanel":"Tableau de bord de l'éditeur de texte enrichi","common":{"editorHelp":"Appuyez sur ALT-0 pour l'aide","browseServer":"Explorer le serveur","url":"URL","protocol":"Protocole","upload":"Télécharger","uploadSubmit":"Envoyer sur le serveur","image":"Image","flash":"Flash","form":"Formulaire","checkbox":"Case à cocher","radio":"Bouton Radio","textField":"Champ texte","textarea":"Zone de texte","hiddenField":"Champ caché","button":"Bouton","select":"Liste déroulante","imageButton":"Bouton image","notSet":"<non défini>","id":"Id","name":"Nom","langDir":"Sens d'écriture","langDirLtr":"Gauche à droite (LTR)","langDirRtl":"Droite à gauche (RTL)","langCode":"Code de langue","longDescr":"URL de description longue (longdesc => malvoyant)","cssClass":"Classe CSS","advisoryTitle":"Description (title)","cssStyle":"Style","ok":"OK","cancel":"Annuler","close":"Fermer","preview":"Aperçu","resize":"Déplacer pour modifier la taille","generalTab":"Général","advancedTab":"Avancé","validateNumberFailed":"Cette valeur n'est pas un nombre.","confirmNewPage":"Les changements non sauvegardés seront perdus. Êtes-vous sûr de vouloir charger une nouvelle page?","confirmCancel":"Certaines options ont été modifiées. Êtes-vous sûr de vouloir fermer?","options":"Options","target":"Cible (Target)","targetNew":"Nouvelle fenêtre (_blank)","targetTop":"Fenêtre supérieure (_top)","targetSelf":"Même fenêtre (_self)","targetParent":"Fenêtre parent (_parent)","langDirLTR":"Gauche à Droite (LTR)","langDirRTL":"Droite à Gauche (RTL)","styles":"Style","cssClasses":"Classes de style","width":"Largeur","height":"Hauteur","align":"Alignement","alignLeft":"Gauche","alignRight":"Droite","alignCenter":"Centré","alignJustify":"Justifier","alignTop":"Haut","alignMiddle":"Milieu","alignBottom":"Bas","alignNone":"Aucun","invalidValue":"Valeur incorrecte.","invalidHeight":"La hauteur doit être un nombre.","invalidWidth":"La largeur doit être un nombre.","invalidCssLength":"La valeur spécifiée pour le champ \"%1\" doit être un nombre positif avec ou sans unité de mesure CSS valide (px, %, in, cm, mm, em, ex, pt, ou pc).","invalidHtmlLength":"La valeur spécifiée pour le champ \"%1\" doit être un nombre positif avec ou sans unité de mesure HTML valide (px ou %).","invalidInlineStyle":"La valeur spécifiée pour le style inline doit être composée d'un ou plusieurs couples de valeur au format \"nom : valeur\", separés par des points-virgules.","cssLengthTooltip":"Entrer un nombre pour une valeur en pixels ou un nombre avec une unité de mesure CSS valide (px, %, in, cm, mm, em, ex, pt, ou pc).","unavailable":"%1<span class=\"cke_accessibility\">, Indisponible</span>"},"basicstyles":{"bold":"Gras","italic":"Italique","strike":"Barré","subscript":"Indice","superscript":"Exposant","underline":"Souligné"},"contextmenu":{"options":"Options du menu contextuel"},"elementspath":{"eleLabel":"Elements path","eleTitle":"%1 éléments"},"button":{"selectedLabel":"%1 (Sélectionné)"},"format":{"label":"Format","panelTitle":"Format de paragraphe","tag_address":"Adresse","tag_div":"Normal (DIV)","tag_h1":"Titre 1","tag_h2":"Titre 2","tag_h3":"Titre 3","tag_h4":"Titre 4","tag_h5":"Titre 5","tag_h6":"Titre 6","tag_p":"Normal","tag_pre":"Formaté"},"horizontalrule":{"toolbar":"Ligne horizontale"},"fakeobjects":{"anchor":"Ancre","flash":"Animation Flash","hiddenfield":"Champ caché","iframe":"IFrame","unknown":"Objet inconnu"},"iframe":{"border":"Afficher une bordure de la IFrame","noUrl":"Veuillez entrer l'adresse du lien de la IFrame","scrolling":"Permettre à la barre de défilement","title":"Propriétés de la IFrame","toolbar":"IFrame"},"image":{"alt":"Texte de remplacement","border":"Bordure","btnUpload":"Envoyer sur le serveur","button2Img":"Voulez-vous transformer le bouton image sélectionné en simple image?","hSpace":"Espacement horizontal","img2Button":"Voulez-vous transformer l'image en bouton image?","infoTab":"Informations sur l'image","linkTab":"Lien","lockRatio":"Conserver les proportions","menu":"Propriétés de l'image","resetSize":"Taille d'origine","title":"Propriétés de l'image","titleButton":"Propriétés du bouton image","upload":"Envoyer","urlMissing":"L'adresse source de l'image est manquante.","vSpace":"Espacement vertical","validateBorder":"Bordure doit être un entier.","validateHSpace":"HSpace doit être un entier.","validateVSpace":"VSpace doit être un entier."},"indent":{"indent":"Augmenter le retrait (tabulation)","outdent":"Diminuer le retrait (tabulation)"},"justify":{"block":"Justifier","center":"Centrer","left":"Aligner à gauche","right":"Aligner à droite"},"link":{"acccessKey":"Touche d'accessibilité","advanced":"Avancé","advisoryContentType":"Type de contenu (ex: text/html)","advisoryTitle":"Description (title)","anchor":{"toolbar":"Ancre","menu":"Editer l'ancre","title":"Propriétés de l'ancre","name":"Nom de l'ancre","errorName":"Veuillez entrer le nom de l'ancre.","remove":"Supprimer l'ancre"},"anchorId":"Par ID d'élément","anchorName":"Par nom d'ancre","charset":"Charset de la cible","cssClasses":"Classe CSS","emailAddress":"Adresse E-Mail","emailBody":"Corps du message","emailSubject":"Sujet du message","id":"Id","info":"Infos sur le lien","langCode":"Code de langue","langDir":"Sens d'écriture","langDirLTR":"Gauche à droite","langDirRTL":"Droite à gauche","menu":"Editer le lien","name":"Nom","noAnchors":"(Aucune ancre disponible dans ce document)","noEmail":"Veuillez entrer l'adresse e-mail","noUrl":"Veuillez entrer l'adresse du lien","other":"<autre>","popupDependent":"Dépendante (Netscape)","popupFeatures":"Options de la fenêtre popup","popupFullScreen":"Plein écran (IE)","popupLeft":"Position gauche","popupLocationBar":"Barre d'adresse","popupMenuBar":"Barre de menu","popupResizable":"Redimensionnable","popupScrollBars":"Barres de défilement","popupStatusBar":"Barre de status","popupToolbar":"Barre d'outils","popupTop":"Position haute","rel":"Relation","selectAnchor":"Sélectionner l'ancre","styles":"Style","tabIndex":"Index de tabulation","target":"Cible","targetFrame":"<cadre>","targetFrameName":"Nom du Cadre destination","targetPopup":"<fenêtre popup>","targetPopupName":"Nom de la fenêtre popup","title":"Lien","toAnchor":"Ancre","toEmail":"E-mail","toUrl":"URL","toolbar":"Lien","type":"Type de lien","unlink":"Supprimer le lien","upload":"Envoyer"},"list":{"bulletedlist":"Insérer/Supprimer la liste à puces","numberedlist":"Insérer/Supprimer la liste numérotée"},"liststyle":{"armenian":"Numération arménienne","bulletedTitle":"Propriétés de la liste à puces","circle":"Cercle","decimal":"Décimal (1, 2, 3, etc.)","decimalLeadingZero":"Décimal précédé par un 0 (01, 02, 03, etc.)","disc":"Disque","georgian":"Numération géorgienne (an, ban, gan, etc.)","lowerAlpha":"Alphabétique minuscules (a, b, c, d, e, etc.)","lowerGreek":"Grec minuscule (alpha, beta, gamma, etc.)","lowerRoman":"Nombres romains minuscules (i, ii, iii, iv, v, etc.)","none":"Aucun","notset":"<Non défini>","numberedTitle":"Propriétés de la liste numérotée","square":"Carré","start":"Début","type":"Type","upperAlpha":"Alphabétique majuscules (A, B, C, D, E, etc.)","upperRoman":"Nombres romains majuscules (I, II, III, IV, V, etc.)","validateStartNumber":"Le premier élément de la liste doit être un nombre entier."},"magicline":{"title":"Insérez un paragraphe ici"},"maximize":{"maximize":"Agrandir","minimize":"Minimiser"},"removeformat":{"toolbar":"Supprimer la mise en forme"},"sourcearea":{"toolbar":"Source"},"toolbar":{"toolbarCollapse":"Enrouler la barre d'outils","toolbarExpand":"Dérouler la barre d'outils","toolbarGroups":{"document":"Document","clipboard":"Presse-papier/Défaire","editing":"Editer","forms":"Formulaires","basicstyles":"Styles de base","paragraph":"Paragraphe","links":"Liens","insert":"Insérer","styles":"Styles","colors":"Couleurs","tools":"Outils"},"toolbars":"Barre d'outils de l'éditeur"}}; \ No newline at end of file 5CKEDITOR.lang['fr']={"editor":"Éditeur de texte enrichi","editorPanel":"Tableau de bord de l'éditeur de texte enrichi","common":{"editorHelp":"Utilisez le raccourci Alt-0 pour obtenir de l'aide","browseServer":"Parcourir le serveur","url":"URL","protocol":"Protocole","upload":"Télécharger","uploadSubmit":"Envoyer sur le serveur","image":"Image","flash":"Flash","form":"Formulaire","checkbox":"Case à cocher","radio":"Bouton radio","textField":"Champ texte","textarea":"Zone de texte","hiddenField":"Champ invisible","button":"Bouton","select":"Liste déroulante","imageButton":"Bouton avec image","notSet":"<indéfini>","id":"ID","name":"Nom","langDir":"Sens d'écriture","langDirLtr":"Gauche à droite (LTR)","langDirRtl":"Droite à gauche (RTL)","langCode":"Code de langue","longDescr":"URL de description longue","cssClass":"Classes de style","advisoryTitle":"Infobulle","cssStyle":"Style","ok":"OK","cancel":"Annuler","close":"Fermer","preview":"Aperçu","resize":"Redimensionner","generalTab":"Général","advancedTab":"Avancé","validateNumberFailed":"Cette valeur n'est pas un nombre.","confirmNewPage":"Les changements non sauvegardés seront perdus. Êtes-vous sûr de vouloir charger une nouvelle page ?","confirmCancel":"Certaines options ont été modifiées. Êtes-vous sûr de vouloir fermer ?","options":"Options","target":"Cible","targetNew":"Nouvelle fenêtre (_blank)","targetTop":"Fenêtre supérieure (_top)","targetSelf":"Même fenêtre (_self)","targetParent":"Fenêtre parent (_parent)","langDirLTR":"Gauche à droite (LTR)","langDirRTL":"Droite à gauche (RTL)","styles":"Style","cssClasses":"Classes de style","width":"Largeur","height":"Hauteur","align":"Alignement","alignLeft":"Gauche","alignRight":"Droite","alignCenter":"Centrer","alignJustify":"Justifier","alignTop":"Haut","alignMiddle":"Milieu","alignBottom":"Bas","alignNone":"Aucun","invalidValue":"Valeur invalide.","invalidHeight":"La hauteur doit être un nombre.","invalidWidth":"La largeur doit être un nombre.","invalidCssLength":"La valeur spécifiée pour le champ « %1 » doit être un nombre positif avec ou sans unité de mesure CSS valide (px, %, in, cm, mm, em, ex, pt, ou pc).","invalidHtmlLength":"La valeur spécifiée pour le champ « %1 » doit être un nombre positif avec ou sans unité de mesure HTML valide (px ou %).","invalidInlineStyle":"La valeur spécifiée pour le style en ligne doit être composée d'un ou plusieurs couples au format « nom : valeur », séparés par des points-virgules.","cssLengthTooltip":"Entrer un nombre pour une valeur en pixels ou un nombre avec une unité de mesure CSS valide (px, %, in, cm, mm, em, ex, pt, ou pc).","unavailable":"%1<span class=\"cke_accessibility\">, indisponible</span>","keyboard":{"8":"Retour arrière","13":"Entrée","16":"Majuscule","17":"Ctrl","18":"Alt","32":"Espace","35":"Fin","36":"Origine","46":"Supprimer","224":"Commande"},"keyboardShortcut":"Raccourci clavier"},"basicstyles":{"bold":"Gras","italic":"Italique","strike":"Barré","subscript":"Indice","superscript":"Exposant","underline":"Souligné"},"contextmenu":{"options":"Options du menu contextuel"},"button":{"selectedLabel":"%1 (Sélectionné)"},"toolbar":{"toolbarCollapse":"Enrouler la barre d'outils","toolbarExpand":"Dérouler la barre d'outils","toolbarGroups":{"document":"Document","clipboard":"Presse-papier/Défaire","editing":"Édition","forms":"Formulaires","basicstyles":"Styles de base","paragraph":"Paragraphe","links":"Liens","insert":"Insérer","styles":"Styles","colors":"Couleurs","tools":"Outils"},"toolbars":"Barres d'outils de l'éditeur"},"elementspath":{"eleLabel":"Chemin des éléments","eleTitle":"Élément %1"},"format":{"label":"Format","panelTitle":"Format de paragraphe","tag_address":"Adresse","tag_div":"Division","tag_h1":"Titre 1","tag_h2":"Titre 2","tag_h3":"Titre 3","tag_h4":"Titre 4","tag_h5":"Titre 5","tag_h6":"Titre 6","tag_p":"Normal","tag_pre":"Préformaté"},"horizontalrule":{"toolbar":"Ligne horizontale"},"fakeobjects":{"anchor":"Ancre","flash":"Animation Flash","hiddenfield":"Champ invisible","iframe":"Cadre de contenu incorporé","unknown":"Objet inconnu"},"iframe":{"border":"Afficher la bordure du cadre","noUrl":"Veuillez entrer l'URL du contenu du cadre","scrolling":"Activer les barres de défilement","title":"Propriétés du cadre de contenu incorporé","toolbar":"Cadre de contenu incorporé"},"image":{"alt":"Texte alternatif","border":"Bordure","btnUpload":"Envoyer sur le serveur","button2Img":"Voulez-vous transformer le bouton avec image sélectionné en simple image ?","hSpace":"Espacement horizontal","img2Button":"Voulez-vous transformer l'image sélectionnée en bouton avec image ?","infoTab":"Informations sur l'image","linkTab":"Lien","lockRatio":"Conserver les proportions","menu":"Propriétés de l'image","resetSize":"Réinitialiser la taille","title":"Propriétés de l'image","titleButton":"Propriétés du bouton avec image","upload":"Téléverser","urlMissing":"L'URL source de l'image est manquante.","vSpace":"Espacement vertical","validateBorder":"La bordure doit être un nombre entier.","validateHSpace":"L'espacement horizontal doit être un nombre entier.","validateVSpace":"L'espacement vertical doit être un nombre entier."},"indent":{"indent":"Augmenter le retrait","outdent":"Diminuer le retrait"},"justify":{"block":"Justifier","center":"Centrer","left":"Aligner à gauche","right":"Aligner à droite"},"link":{"acccessKey":"Touche d'accessibilité","advanced":"Avancé","advisoryContentType":"Type de contenu (indicatif)","advisoryTitle":"Infobulle","anchor":{"toolbar":"Ancre","menu":"Modifier l'ancre","title":"Propriétés de l'ancre","name":"Nom de l'ancre","errorName":"Veuillez entrer le nom de l'ancre.","remove":"Supprimer l'ancre"},"anchorId":"Par ID d'élément","anchorName":"Par nom d'ancre","charset":"Encodage de la ressource liée","cssClasses":"Classes de style","download":"Forcer le téléchargement","displayText":"Afficher le texte","emailAddress":"Adresse électronique","emailBody":"Corps du message","emailSubject":"Sujet du message","id":"ID","info":"Informations sur le lien","langCode":"Code de langue","langDir":"Sens d'écriture","langDirLTR":"Gauche à droite","langDirRTL":"Droite à gauche (RTL)","menu":"Modifier le lien","name":"Nom","noAnchors":"(Aucune ancre disponible dans ce document)","noEmail":"Veuillez entrer l'adresse électronique","noUrl":"Veuillez entrer l'URL du lien","other":"<autre>","popupDependent":"Dépendante (Netscape)","popupFeatures":"Caractéristiques de la fenêtre surgissante","popupFullScreen":"Plein écran (IE)","popupLeft":"À gauche","popupLocationBar":"Barre d'adresse","popupMenuBar":"Barre de menu","popupResizable":"Redimensionnable","popupScrollBars":"Barres de défilement","popupStatusBar":"Barre d'état","popupToolbar":"Barre d'outils","popupTop":"En haut","rel":"Relation","selectAnchor":"Sélectionner une ancre","styles":"Style","tabIndex":"Indice de tabulation","target":"Cible","targetFrame":"<cadre>","targetFrameName":"Nom du cadre affecté","targetPopup":"<fenêtre surgissante>","targetPopupName":"Nom de la fenêtre surgissante","title":"Lien","toAnchor":"Ancre","toEmail":"Courriel","toUrl":"URL","toolbar":"Lien","type":"Type de lien","unlink":"Supprimer le lien","upload":"Téléverser"},"list":{"bulletedlist":"Insérer/Supprimer une liste à puces","numberedlist":"Insérer/Supprimer une liste numérotée"},"liststyle":{"armenian":"Numération arménienne","bulletedTitle":"Propriétés de la liste à puces","circle":"Cercle","decimal":"Décimal (1, 2, 3, etc.)","decimalLeadingZero":"Décimal précédé par un 0 (01, 02, 03, etc.)","disc":"Disque","georgian":"Numération géorgienne (an, ban, gan, etc.)","lowerAlpha":"Lettres minuscules (a, b, c, d, e, etc.)","lowerGreek":"Grec minuscule (alpha, bêta, gamma, etc.)","lowerRoman":"Chiffres romains minuscules (i, ii, iii, iv, v, etc.)","none":"Aucun","notset":"<indéfini>","numberedTitle":"Propriétés de la liste numérotée","square":"Carré","start":"Début","type":"Type","upperAlpha":"Lettres majuscules (A, B, C, D, E, etc.)","upperRoman":"Chiffres romains majuscules (I, II, III, IV, V, etc.)","validateStartNumber":"Le premier élément de la liste doit être un nombre entier."},"magicline":{"title":"Insérer un paragraphe ici"},"maximize":{"maximize":"Agrandir","minimize":"Réduire"},"removeformat":{"toolbar":"Supprimer la mise en forme"},"sourcearea":{"toolbar":"Source"},"notification":{"closed":"Notification fermée."},"clipboard":{"copy":"Copier","copyError":"Les paramètres de sécurité de votre navigateur n'autorisent pas l'éditeur à exécuter automatiquement l'opération « Copier ». Veuillez utiliser le raccourci clavier à cet effet (Ctrl/Cmd+C).","cut":"Couper","cutError":"Les paramètres de sécurité de votre navigateur n'autorisent pas l'éditeur à exécuter automatiquement l'opération « Couper ». Veuillez utiliser le raccourci clavier à cet effet (Ctrl/Cmd+X).","paste":"Coller","pasteNotification":"Your browser doesn't allow you to paste this way. Press %1 to paste."},"widget":{"move":"Cliquer et glisser pour déplacer","label":"Élément %1"},"oembed":{"title":"Intégrer des contenus multimédia externes. (Photo, Video, Audio, ...)","button":"Insérer des contenus multimédia provenant de nombreux sites.","pasteUrl":"Coller l'URL de partage que vous voulez publier. De nombreux services sont pris en charge tels que : (YouTube, Flickr, Qik, Vimeo, Hulu, Viddler, MyOpera, etc.). Vous pouvez aussi utiliser les URLs courtes.","invalidUrl":"Merci de fournir une URL valide !","noEmbedCode":"Aucun code d'intégration trouvé ou le site n'est pas supporté !","url":"URL:","width":"Largeur:","height":"Hauteur:","widthTitle":"Largeur du conteneur.","heightTitle":"Hauteur du conteneur.","maxWidth":"Max. Largeur:","maxHeight":"Max. Hauteur:","maxWidthTitle":"Largeur maximale du conteneur.","maxHeightTitle":"Hauteur maximale du conteneur.","resizeType":"Resize Type (Only Video's):","none":"None","noresize":"No Resize (use default)","responsive":"Responsive Resize","custom":"Specific Resize","noVimeo":"The owner of this video has set domain restrictions and you will not be able to embed it on your website.","Error":"Media Content could not been retrieved, please try a different URL."},"html5video":{"button":"Insérer un lecteur video HTML5","title":"HTML5 video","infoLabel":"Informations video","allowed":"Extensions de fichiers autorisées: MP4, WebM, Ogv","urlMissing":"URL de la source video manquante. Veuillez la renseigner.","videoProperties":"Propriétés Video","upload":"Télécharger","btnUpload":"Envoyer vers le serveur","advanced":"Avancé","autoplay":"Jouer automatiquement ?","yes":"Oui","no":"Non","responsive":"Responsive width"}}; \ No newline at end of file
diff --git a/release/plugins/Audio/dialogs/audio.js b/release/plugins/Audio/dialogs/audio.js
new file mode 100644
index 0000000..da9495c
--- /dev/null
+++ b/release/plugins/Audio/dialogs/audio.js
@@ -0,0 +1,9 @@
1CKEDITOR.dialog.add("audio",function(d){function g(a,c){var b=this.getValue();!b&&"id"==this.id&&(b=m());a.setAttribute(this.id,b);if(b)switch(this.id){case "poster":c.backgroundImage="url("+b+")";break;case "width":c.width=b+"px";break;case "height":c.height=b+"px"}}function i(a,c,b){c=this.id.match(/(\w+)(\d)/);a=c[1];c=parseInt(c[2],10);(b[c]||(b[c]={}))[a]=this.getValue()}function j(a){a?this.setValue(a.getAttribute(this.id)):"id"==this.id&&this.setValue(m())}function h(a,c){var b=this.id.match(/(\w+)(\d)/),
2d=b[1],b=parseInt(b[2],10);(b=c[b])&&this.setValue(b[d])}function m(){var a=new Date;return"audio"+a.getFullYear()+a.getMonth()+a.getDate()+a.getHours()+a.getMinutes()+a.getSeconds()}var e=d.lang.audio,l=function(){var a=this.previewImage;a.removeListener("load",l);a.removeListener("error",f);a.removeListener("abort",f);this.setValueOf("info","width",a.$.width);this.setValueOf("info","height",a.$.height)},f=function(){var a=this.previewImage;a.removeListener("load",l);a.removeListener("error",f);
3a.removeListener("abort",f)};return{title:e.dialogTitle,minWidth:400,minHeight:200,onShow:function(){this.fakeImage=this.audioNode=null;this.previewImage=d.document.createElement("img");var a=this.getSelectedElement();if(a&&a.data("cke-real-element-type")&&"audio"==a.data("cke-real-element-type")){this.fakeImage=a;var a=d.restoreRealElement(a),c=[],b=a.getElementsByTag("source","");0==b.count()&&(b=a.getElementsByTag("source","cke"));for(var e=0,f=b.count();e<f;e++){var g=b.getItem(e);c.push({src:g.getAttribute("src"),
4type:g.getAttribute("type")})}this.audioNode=a;this.setupContent(a,c)}else this.setupContent(null,[])},onOk:function(){var a=null;this.fakeImage?a=this.audioNode:(a=CKEDITOR.dom.element.createFromHtml("<cke:audio></cke:audio>",d.document),a.setAttributes({controls:"controls"}));var c={},b=[];this.commitContent(a,c,b);for(var f="",g="",i=e.linkTemplate||"",j=e.fallbackTemplate||"",h=0;h<b.length;h++){var k=b[h];k&&k.src&&(f+='<cke:source src="'+k.src+'" type="'+k.type+'" />',g+=i.replace("%src%",k.src).replace("%type%",
5k.type))}a.setHtml(f+j.replace("%links%",g));a=d.createFakeElement(a,"cke_audio","audio",!1);a.setStyles(c);this.fakeImage?(a.replace(this.fakeImage),d.getSelection().selectElement(a)):(c=new CKEDITOR.dom.element("DIV",d.document),d.insertElement(c),c.append(a))},onHide:function(){this.previewImage&&(this.previewImage.removeListener("load",l),this.previewImage.removeListener("error",f),this.previewImage.removeListener("abort",f),this.previewImage.remove(),this.previewImage=null)},contents:[{id:"info",
6elements:[{type:"hbox",widths:["","100px"],children:[{type:"text",id:"poster",label:e.poster,commit:g,setup:j,onChange:function(){var a=this.getDialog(),c=this.getValue();if(0<c.length){var a=this.getDialog(),b=a.previewImage;b.on("load",l,a);b.on("error",f,a);b.on("abort",f,a);b.setAttribute("src",c)}}},{type:"button",id:"browse",hidden:"true",style:"display:inline-block;margin-top:10px;",filebrowser:{action:"Browse",target:"info:poster",url:d.config.filebrowserImageBrowseUrl||d.config.filebrowserBrowseUrl},
7label:d.lang.common.browseServer}]},{type:"hbox",widths:["33%","33%","33%"],children:[{type:"text",id:"width",label:d.lang.common.width,"default":400,validate:CKEDITOR.dialog.validate.notEmpty(e.widthRequired),commit:g,setup:j},{type:"text",id:"height",label:d.lang.common.height,"default":300,validate:CKEDITOR.dialog.validate.notEmpty(e.heightRequired),commit:g,setup:j},{type:"text",id:"id",label:"Id",commit:g,setup:j}]},{type:"hbox",widths:["","100px","75px"],children:[{type:"text",id:"src0",label:e.sourceaudio,
8commit:i,setup:h},{type:"button",id:"browse",hidden:"true",style:"display:inline-block;margin-top:10px;",filebrowser:{action:"Browse",target:"info:src0",url:d.config.filebrowserAudioBrowseUrl||d.config.filebrowserBrowseUrl},label:d.lang.common.browseServer},{id:"type0",label:e.sourceType,type:"select","default":"audio/mp3",items:[["MP3","audio/mp3"],["WAV","audio/wav"]],commit:i,setup:h}]},{type:"hbox",widths:["","100px","75px"],children:[{type:"text",id:"src1",label:e.sourceaudio,commit:i,setup:h},
9{type:"button",id:"browse",hidden:"true",style:"display:inline-block;margin-top:10px;",filebrowser:{action:"Browse",target:"info:src1",url:d.config.filebrowserAudioBrowseUrl||d.config.filebrowserBrowseUrl},label:d.lang.common.browseServer},{id:"type1",label:e.sourceType,type:"select","default":"audio/wav",items:[["MP3","audio/mp3"],["WAV","audio/wav"]],commit:i,setup:h}]}]}]}}); \ No newline at end of file
diff --git a/release/plugins/Audio/docs/install.html b/release/plugins/Audio/docs/install.html
new file mode 100644
index 0000000..3fbf30e
--- /dev/null
+++ b/release/plugins/Audio/docs/install.html
@@ -0,0 +1,69 @@
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
2 "http://www.w3.org/TR/html4/loose.dtd">
3<html lang="en">
4<head>
5<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
6<title>Audio plugin</title>
7<link href="styles.css" rel="stylesheet" type="text/css">
8</head>
9
10<body>
11<h1>Audio Plugin for CKEditor</h1>
12
13<h2>Introduction</h2>
14<p>This is a plugin to create HTML5 &lt;audio&gt; elements in <a href="http://www.ckeditor.com">CKEditor</a>.</p>
15<h3>Version history: </h3>
16<ol>
17 <li>1.0: 10-July-2015. First version.</li>
18</ol>
19
20<h2>Installation</h2>
21<h3>1. Copying the files</h3>
22<p>Extract the contents of the zip in you plugins directory, so it ends up like
23 this<br>
24 <!--<img src="installation.png" alt="Screenshot of installation" width="311" height="346" longdesc="#install">-->
25 </p>
26<pre id="--install">
27ckeditor\
28 ...
29 images\
30 lang\
31 plugins\
32 ...
33 audio\
34 plugin.js
35 dialogs\
36 audio.js
37 docs\
38 install.html
39 images\
40 icon.png
41 placeholder.png
42 ...
43 skins\
44 themes\
45</pre>
46<h3>2. Adding it to CKEditor</h3>
47<p>Now add the plugin in your <em>config.js</em> or custom js configuration
48file:
49<code>config.extraPlugins='audio'; </code>
50</p>
51
52<h3>3. Add it to your toolbar</h3>
53<p>In your toolbar configuration, add a new 'Audio' item in the place where you want the button to show up.</p>
54
55<h3>4. Configure server browser for audio</h3>
56<p>You can use the <code>config.filebrowserAudioBrowseUrl</code> entry to specify a url so the file browser shows just audio elements (as long as your configure properly your file browser).</p>
57
58<h3>5. Use it</h3>
59<p>Now empty the cache of your browser and reload the editor, the new button should show up and you can add &lt;audio&gt; elements into the content.</p>
60
61<h2>Final notes</h2>
62<p>Please, note that only newer browsers support the Audio element, in older ones a simple text linking to the source audios is provided, you might want to
63use some javascript or css to customize the final behavior of these elements.</p>
64
65
66<h2>Disclaimers</h2>
67<p>CKEditor is &copy; CKSource.com</p>
68</body>
69</html>
diff --git a/release/plugins/Audio/docs/styles.css b/release/plugins/Audio/docs/styles.css
new file mode 100644
index 0000000..5eba91e
--- /dev/null
+++ b/release/plugins/Audio/docs/styles.css
@@ -0,0 +1,67 @@
1body {
2 font-family: Arial, Helvetica, sans-serif;
3 font-size: 90%;
4}
5h1 {
6 text-align:center;
7 font-size:180%;
8}
9h2 {
10 border-bottom:2px solid #CCC;
11 margin:1em 0 0.4em 0;
12}
13h3 {
14 margin-bottom:0.4em;
15}
16p {
17 margin:0 0 1em 1em;
18 text-align:justify;
19}
20ol {
21 margin:0 0 1.2em 1em;
22 padding:0;
23 list-style-type:none;
24}
25ol li {
26 margin:0.2em 0;
27}
28pre {
29 font-size:100%;
30 font-family:"Courier New", Courier, mono;
31 background-color: #CCCCCC;
32 border:1px solid #999;
33 padding:0.2em 1em;
34 margin: 0.4em 0;
35 display:block;
36 white-space: pre;
37 overflow: auto;
38}
39code {
40 font-size:100%;
41 font-family:"Courier New", Courier, mono;
42 background-color: #CCCCCC;
43 border:1px solid #999;
44 padding:0.2em;
45 white-space: pre;
46}
47form {
48 margin:0 0 0 1em;
49}
50span.key {
51 color: #006600;
52}
53#install {
54 display:none
55}
56#languages ul {
57 display:inline;
58 list-style-type:none;
59 margin:0;
60 padding:0;
61}
62#languages li {
63 display:inline;
64 margin:0;
65 padding:0;
66 vertical-align:bottom;
67}
diff --git a/release/plugins/Audio/images/audio.png b/release/plugins/Audio/images/audio.png
new file mode 100644
index 0000000..b4a4ef7
--- /dev/null
+++ b/release/plugins/Audio/images/audio.png
Binary files differ
diff --git a/release/plugins/Audio/images/icon.png b/release/plugins/Audio/images/icon.png
new file mode 100644
index 0000000..1ec7ecc
--- /dev/null
+++ b/release/plugins/Audio/images/icon.png
Binary files differ
diff --git a/release/plugins/Audio/images/placeholder.png b/release/plugins/Audio/images/placeholder.png
new file mode 100644
index 0000000..1456cac
--- /dev/null
+++ b/release/plugins/Audio/images/placeholder.png
Binary files differ
diff --git a/release/plugins/a11yhelp/dialogs/a11yhelp.js b/release/plugins/a11yhelp/dialogs/a11yhelp.js
index 4585951..0b2c0f1 100644
--- a/release/plugins/a11yhelp/dialogs/a11yhelp.js
+++ b/release/plugins/a11yhelp/dialogs/a11yhelp.js
@@ -1,10 +1,10 @@
1/* 1/*
2 Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 For licensing, see LICENSE.md or http://ckeditor.com/license 3 For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.dialog.add("a11yHelp",function(l){var a=l.lang.a11yhelp,n=CKEDITOR.tools.getNextId(),e={8:a.backspace,9:a.tab,13:a.enter,16:a.shift,17:a.ctrl,18:a.alt,19:a.pause,20:a.capslock,27:a.escape,33:a.pageUp,34:a.pageDown,35:a.end,36:a.home,37:a.leftArrow,38:a.upArrow,39:a.rightArrow,40:a.downArrow,45:a.insert,46:a["delete"],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, 5CKEDITOR.dialog.add("a11yHelp",function(e){var a=e.lang.a11yhelp,b=e.lang.common.keyboard,q=CKEDITOR.tools.getNextId(),d={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,
6105: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]=a.alt;e[CKEDITOR.SHIFT]=a.shift;e[CKEDITOR.CTRL]=a.ctrl;var f=[CKEDITOR.ALT,CKEDITOR.SHIFT, 6105: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};d[CKEDITOR.ALT]=b[18];d[CKEDITOR.SHIFT]=b[16];d[CKEDITOR.CTRL]=CKEDITOR.env.mac?b[224]:b[17];var k=
7CKEDITOR.CTRL],p=/\$\{(.*?)\}/g,t=function(){var a=l.keystrokeHandler.keystrokes,g={},c;for(c in a)g[a[c]]=c;return function(a,c){var b;if(g[c]){b=g[c];for(var h,k,m=[],d=0;d<f.length;d++)k=f[d],h=b/f[d],1<h&&2>=h&&(b-=k,m.push(e[k]));m.push(e[b]||String.fromCharCode(b));b=m.join("+")}else b=a;return b}}();return{title:a.title,minWidth:600,minHeight:400,contents:[{id:"info",label:l.lang.common.generalTab,expand:!0,elements:[{type:"html",id:"legends",style:"white-space:normal;",focus:function(){this.getElement().focus()}, 7[CKEDITOR.ALT,CKEDITOR.SHIFT,CKEDITOR.CTRL],r=/\$\{(.*?)\}/g,t=function(a,b){var c=e.getCommandKeystroke(b);if(c){for(var l,f,h=[],g=0;g<k.length;g++)f=k[g],l=c/k[g],1<l&&2>=l&&(c-=f,h.push(d[f]));h.push(d[c]||String.fromCharCode(c));c=h.join("+")}else c=a;return c};return{title:a.title,minWidth:600,minHeight:400,contents:[{id:"info",label:e.lang.common.generalTab,expand:!0,elements:[{type:"html",id:"legends",style:"white-space:normal;",focus:function(){this.getElement().focus()},html:function(){for(var b=
8html:function(){for(var e='\x3cdiv class\x3d"cke_accessibility_legend" role\x3d"document" aria-labelledby\x3d"'+n+'_arialbl" tabIndex\x3d"-1"\x3e%1\x3c/div\x3e\x3cspan id\x3d"'+n+'_arialbl" class\x3d"cke_voice_label"\x3e'+a.contents+" \x3c/span\x3e",g=[],c=a.legend,l=c.length,f=0;f<l;f++){for(var b=c[f],h=[],k=b.items,m=k.length,d=0;d<m;d++){var q=k[d],r=q.legend.replace(p,t);r.match(p)||h.push("\x3cdt\x3e%1\x3c/dt\x3e\x3cdd\x3e%2\x3c/dd\x3e".replace("%1",q.name).replace("%2",r))}g.push("\x3ch1\x3e%1\x3c/h1\x3e\x3cdl\x3e%2\x3c/dl\x3e".replace("%1", 8'\x3cdiv class\x3d"cke_accessibility_legend" role\x3d"document" aria-labelledby\x3d"'+q+'_arialbl" tabIndex\x3d"-1"\x3e%1\x3c/div\x3e\x3cspan id\x3d"'+q+'_arialbl" class\x3d"cke_voice_label"\x3e'+a.contents+" \x3c/span\x3e",d=[],c=a.legend,l=c.length,f=0;f<l;f++){for(var h=c[f],g=[],e=h.items,k=e.length,p=0;p<k;p++){var m=e[p],n=CKEDITOR.env.edge&&m.legendEdge?m.legendEdge:m.legend,n=n.replace(r,t);n.match(r)||g.push("\x3cdt\x3e%1\x3c/dt\x3e\x3cdd\x3e%2\x3c/dd\x3e".replace("%1",m.name).replace("%2",
9b.name).replace("%2",h.join("")))}return e.replace("%1",g.join(""))}()+'\x3cstyle type\x3d"text/css"\x3e.cke_accessibility_legend{width:600px;height:400px;padding-right:5px;overflow-y:auto;overflow-x:hidden;}.cke_browser_quirks .cke_accessibility_legend,{height:390px}.cke_accessibility_legend *{white-space:normal;}.cke_accessibility_legend h1{font-size: 20px;border-bottom: 1px solid #AAA;margin: 5px 0px 15px;}.cke_accessibility_legend dl{margin-left: 5px;}.cke_accessibility_legend dt{font-size: 13px;font-weight: bold;}.cke_accessibility_legend dd{margin:10px}\x3c/style\x3e'}]}], 9n))}d.push("\x3ch1\x3e%1\x3c/h1\x3e\x3cdl\x3e%2\x3c/dl\x3e".replace("%1",h.name).replace("%2",g.join("")))}return b.replace("%1",d.join(""))}()+'\x3cstyle type\x3d"text/css"\x3e.cke_accessibility_legend{width:600px;height:400px;padding-right:5px;overflow-y:auto;overflow-x:hidden;}.cke_browser_quirks .cke_accessibility_legend,{height:390px}.cke_accessibility_legend *{white-space:normal;}.cke_accessibility_legend h1{font-size: 20px;border-bottom: 1px solid #AAA;margin: 5px 0px 15px;}.cke_accessibility_legend dl{margin-left: 5px;}.cke_accessibility_legend dt{font-size: 13px;font-weight: bold;}.cke_accessibility_legend dd{margin:10px}\x3c/style\x3e'}]}],
10buttons:[CKEDITOR.dialog.cancelButton]}}); \ No newline at end of file 10buttons:[CKEDITOR.dialog.cancelButton]}}); \ No newline at end of file
diff --git a/release/plugins/a11yhelp/dialogs/lang/_translationstatus.txt b/release/plugins/a11yhelp/dialogs/lang/_translationstatus.txt
index 4c59097..28e8dae 100644
--- a/release/plugins/a11yhelp/dialogs/lang/_translationstatus.txt
+++ b/release/plugins/a11yhelp/dialogs/lang/_translationstatus.txt
@@ -1,4 +1,4 @@
1Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 1Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
2For licensing, see LICENSE.md or http://ckeditor.com/license 2For licensing, see LICENSE.md or http://ckeditor.com/license
3 3
4cs.js Found: 30 Missing: 0 4cs.js Found: 30 Missing: 0
diff --git a/release/plugins/a11yhelp/dialogs/lang/af.js b/release/plugins/a11yhelp/dialogs/lang/af.js
index f33c0bb..a56a5cb 100644
--- a/release/plugins/a11yhelp/dialogs/lang/af.js
+++ b/release/plugins/a11yhelp/dialogs/lang/af.js
@@ -1,11 +1,11 @@
1/* 1/*
2 Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 For licensing, see LICENSE.md or http://ckeditor.com/license 3 For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang("a11yhelp","af",{title:"Toeganglikheid instruksies",contents:"Hulp inhoud. Druk ESC om toe te maak.",legend:[{name:"Algemeen",items:[{name:"Bewerker balk",legend:"Druk ${toolbarFocus} om op die werkbalk te land. Beweeg na die volgende en voorige wekrbalkgroep met TAB and SHIFT+TAB. Beweeg na die volgende en voorige werkbalkknop met die regter of linker pyl. Druk SPASIE of ENTER om die knop te bevestig."},{name:"Bewerker dialoog",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."}, 5CKEDITOR.plugins.setLang("a11yhelp","af",{title:"Toeganglikheid instruksies",contents:"Hulp inhoud. Druk ESC om toe te maak.",legend:[{name:"Algemeen",items:[{name:"Bewerker balk",legend:"Druk ${toolbarFocus} om op die werkbalk te land. Beweeg na die volgende en voorige wekrbalkgroep met TAB and SHIFT+TAB. Beweeg na die volgende en voorige werkbalkknop met die regter of linker pyl. Druk SPASIE of ENTER om die knop te bevestig."},{name:"Bewerker dialoog",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."},
6{name:"Bewerkerinhoudmenu",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."},{name:"Editor List Box",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."}, 6{name:"Bewerkerinhoudmenu",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."},{name:"Editor List Box",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."},
7{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]},{name:"Commands",items:[{name:" Undo command",legend:"Press ${undo}"},{name:" Redo command",legend:"Press ${redo}"},{name:" Bold command",legend:"Press ${bold}"},{name:" Italic command",legend:"Press ${italic}"},{name:" Underline command", 7{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]},{name:"Commands",items:[{name:" Undo command",legend:"Press ${undo}"},{name:" Redo command",legend:"Press ${redo}"},{name:" Bold command",legend:"Press ${bold}"},{name:" Italic command",legend:"Press ${italic}"},{name:" Underline command",
8legend:"Press ${underline}"},{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, 8legend:"Press ${underline}"},{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},
9{name:" Accessibility Help",legend:"Press ${a11yHelp}"}]}],backspace:"Backspace",tab:"Tab",enter:"Enter",shift:"Shift",ctrl:"Ctrl",alt:"Alt",pause:"Pouse",capslock:"Hoofletterslot",escape:"Ontsnap",pageUp:"Blaaiop",pageDown:"Blaaiaf",end:"Einde",home:"Tuis",leftArrow:"Linkspyl",upArrow:"Oppyl",rightArrow:"Regterpyl",downArrow:"Afpyl",insert:"Toevoeg","delete":"Verwyder",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Nommerblok 0",numpad1:"Nommerblok 1", 9{name:" Accessibility Help",legend:"Press ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Pouse",capslock:"Hoofletterslot",escape:"Ontsnap",pageUp:"Blaaiop",pageDown:"Blaaiaf",leftArrow:"Linkspyl",upArrow:"Oppyl",rightArrow:"Regterpyl",downArrow:"Afpyl",insert:"Toevoeg",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Nommerblok 0",numpad1:"Nommerblok 1",
10numpad2:"Nommerblok 2",numpad3:"Nommerblok 3",numpad4:"Nommerblok 4",numpad5:"Nommerblok 5",numpad6:"Nommerblok 6",numpad7:"Nommerblok 7",numpad8:"Nommerblok 8",numpad9:"Nommerblok 9",multiply:"Maal",add:"Plus",subtract:"Minus",decimalPoint:"Desimaalepunt",divide:"Gedeeldeur",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Nommervergrendel",scrollLock:"Rolvergrendel",semiColon:"Kommapunt",equalSign:"Isgelykaan",comma:"Komma",dash:"Koppelteken", 10numpad2:"Nommerblok 2",numpad3:"Nommerblok 3",numpad4:"Nommerblok 4",numpad5:"Nommerblok 5",numpad6:"Nommerblok 6",numpad7:"Nommerblok 7",numpad8:"Nommerblok 8",numpad9:"Nommerblok 9",multiply:"Maal",add:"Plus",subtract:"Minus",decimalPoint:"Desimaalepunt",divide:"Gedeeldeur",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Nommervergrendel",scrollLock:"Rolvergrendel",semiColon:"Kommapunt",equalSign:"Isgelykaan",comma:"Komma",dash:"Koppelteken",
11period:"Punt",forwardSlash:"Skuinsstreep",graveAccent:"Aksentteken",openBracket:"Oopblokhakkie",backSlash:"Trustreep",closeBracket:"Toeblokhakkie",singleQuote:"Enkelaanhaalingsteken"}); \ No newline at end of file 11period:"Punt",forwardSlash:"Skuinsstreep",graveAccent:"Aksentteken",openBracket:"Oopblokhakkie",backSlash:"Trustreep",closeBracket:"Toeblokhakkie",singleQuote:"Enkelaanhaalingsteken"}); \ No newline at end of file
diff --git a/release/plugins/a11yhelp/dialogs/lang/ar.js b/release/plugins/a11yhelp/dialogs/lang/ar.js
index 724decb..7326021 100644
--- a/release/plugins/a11yhelp/dialogs/lang/ar.js
+++ b/release/plugins/a11yhelp/dialogs/lang/ar.js
@@ -1,11 +1,11 @@
1/* 1/*
2 Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 For licensing, see LICENSE.md or http://ckeditor.com/license 3 For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang("a11yhelp","ar",{title:"Accessibility Instructions",contents:"Help Contents. To close this dialog press ESC.",legend:[{name:"عام",items:[{name:"Editor Toolbar",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"Editor Dialog",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."}, 5CKEDITOR.plugins.setLang("a11yhelp","ar",{title:"Accessibility Instructions",contents:"Help Contents. To close this dialog press ESC.",legend:[{name:"عام",items:[{name:"Editor Toolbar",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"Editor Dialog",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."},
6{name:"Editor Context Menu",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."},{name:"Editor List Box",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."}, 6{name:"Editor Context Menu",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."},{name:"Editor List Box",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."},
7{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]},{name:"Commands",items:[{name:" Undo command",legend:"Press ${undo}"},{name:" Redo command",legend:"Press ${redo}"},{name:" Bold command",legend:"Press ${bold}"},{name:" Italic command",legend:"Press ${italic}"},{name:" Underline command", 7{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]},{name:"Commands",items:[{name:" Undo command",legend:"Press ${undo}"},{name:" Redo command",legend:"Press ${redo}"},{name:" Bold command",legend:"Press ${bold}"},{name:" Italic command",legend:"Press ${italic}"},{name:" Underline command",
8legend:"Press ${underline}"},{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, 8legend:"Press ${underline}"},{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},
9{name:" Accessibility Help",legend:"Press ${a11yHelp}"}]}],backspace:"Backspace",tab:"Tab",enter:"Enter",shift:"Shift",ctrl:"Ctrl",alt:"Alt",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",end:"End",home:"Home",leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert","delete":"Delete",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1", 9{name:" Accessibility Help",legend:"Press ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1",
10numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"إضافة",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"تقسيم",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"فاصلة",dash:"Dash",period:"نقطة",forwardSlash:"Forward Slash", 10numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"إضافة",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"تقسيم",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"فاصلة",dash:"Dash",period:"نقطة",forwardSlash:"Forward Slash",
11graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"}); \ No newline at end of file 11graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"}); \ No newline at end of file
diff --git a/release/plugins/a11yhelp/dialogs/lang/az.js b/release/plugins/a11yhelp/dialogs/lang/az.js
new file mode 100644
index 0000000..3298732
--- /dev/null
+++ b/release/plugins/a11yhelp/dialogs/lang/az.js
@@ -0,0 +1,11 @@
1/*
2 Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang("a11yhelp","az",{title:"Əlillərə dəstək üzrə təlimat",contents:"Kömək. Pəncərəni bağlamaq üçün ESC basın.",legend:[{name:"Əsas",items:[{name:"Düzəliş edənin alətlər çubuğu",legend:"Panelə keçmək üçün ${toolbarFocus} basın. Növbəti panelə TAB, əvvəlki panelə isə SHIFT+TAB düyməsi vasitəsi ilə keçə bilərsiz. Paneldəki düymələr arasında sol və sağ ox düyməsi ilə keçid edə bilərsiz. Seçilmiş düyməsi SPACE və ya ENTER ilə işlədə bilərsiniz."},{name:"Redaktorun pəncərəsi",legend:"Pəncərə içində növbəti element seçmək üçün TAB düyməni basın, əvvəlki isə - SHIFT+TAB. Təsdiq edilməsi üçün ENTER, imtina edilməsi isə ESC diymələri istifadə edin. Pəncərədə bir neçə vərəq olanda olnarın siyahı ALT+F10 ilə aça bilərsiz. Vərəqlərin siyahı fokus altında olanda ox düymələr vasitəsi ilə onların arasında keçid edə bilərsiz."},
6{name:"Redaktorun seçimlərin menyusu",legend:"Seçimləri redaktə etmək üçün ${contextMenu} ya da APPLICATION KEY basın. Növbəti seçimə keçmək üçün TAB ya AŞAĞI OX düyməsini basın, əvvəlki isə - SHIFT+TAB ya YUXARI OX. Seçimi arımaq SPACE ya ENTER düymələri istifadə edin. Alt menyunu açmaq üçün SPACE, ENTER ya SAĞA OX basın. ESC ya SOLA OX ilə geriyə qayıda bilərsiz. Bütün menyunu ESC ilə bağlıyın."},{name:"Düzəliş edənin siyahı qutusu",legend:"Siyahı qutusu içində növbəti bənd seçmək üçün TAB ya AŞAĞI OX, əvvəlki isə SHIFT+TAB ya YUXARI OX basın. Seçimi arımaq SPACE ya ENTER düymələri istifadə edin. Siyahı qutusu ESC ilə bağlıyın."},
7{name:"Redaktor elementin cığır paneli",legend:"Elementin cığır paneli seçmək üçün ${elementsPathFocus} basın. Növbəti element seçmək üçün TAB ya SAĞA OX, əvvəlki isə SHIFT+TAB ya SOLA OX istifadə edin. Elementi arımaq SPACE ya ENTER düymələri mövcuddur."}]},{name:"Əmrlər",items:[{name:"Əmri geri qaytar",legend:"${undo} basın"},{name:"Geri əmri",legend:"${redo} basın"},{name:"Qalın əmri",legend:"${bold} basın"},{name:"Kursiv əmri",legend:"${italic} basın"},{name:"Altdan xətt əmri",legend:"${underline} basın"},
8{name:"Link əmri",legend:"${link} basın"},{name:"Paneli gizlət əmri",legend:"${toolbarCollapse} basın"},{name:"Əvvəlki fokus sahəsi seç əmrı",legend:"Kursordan əvvəl ən yaxın əlçatmaz yerə dəymək üçün ${accessPreviousSpace} basın, misal üçün: iki dal-badal HR teg. Uzaq yerlərə dəymək üçün bir neçə dəfə basın."},{name:"Növbəti fokus sahəsi seç əmrı",legend:"Kursordan sonra ən yaxın əlçatmaz yerə dəymək üçün ${accessNextSpace} basın, misal üçün: iki dal-badal HR teg. Uzaq yerlərə dəymək üçün bir neçə dəfə basın."},
9{name:"Hərtərəfli Kömək",legend:"${a11yHelp} basın"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",leftArrow:"Sola ox işarəsi",upArrow:"Yuxarı ox işarəsi",rightArrow:"Sağa ox işarəsi",downArrow:"Aşağı ox işarəsi",insert:"Insert",leftWindowKey:"Soldaki Windows düyməsi",rightWindowKey:"Sağdaki Windows düyməsi",selectKey:"Düyməni seçin",
10numpad0:"Numpad 0",numpad1:"Numpad 1",numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Vurma",add:"Əlavə et",subtract:"Çıxma",decimalPoint:"Onluq kəsri tam ədəddən ayıran nöqtə",divide:"Bölüşdürmə",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Nöqtəli verqül",equalSign:"Barəbərlik işarəsi",
11comma:"Vergül",dash:"Defis",period:"Nöqtə",forwardSlash:"Çəp xətt",graveAccent:"Vurğu işarəsi",openBracket:"Açılan mötərizə",backSlash:"Tərs çəpəki xətt",closeBracket:"Bağlanan mötərizə",singleQuote:"Tək dırnaq"}); \ No newline at end of file
diff --git a/release/plugins/a11yhelp/dialogs/lang/bg.js b/release/plugins/a11yhelp/dialogs/lang/bg.js
index d4a9f93..6f5d044 100644
--- a/release/plugins/a11yhelp/dialogs/lang/bg.js
+++ b/release/plugins/a11yhelp/dialogs/lang/bg.js
@@ -1,11 +1,11 @@
1/* 1/*
2 Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 For licensing, see LICENSE.md or http://ckeditor.com/license 3 For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang("a11yhelp","bg",{title:"Accessibility Instructions",contents:"Help Contents. To close this dialog press ESC.",legend:[{name:"Общо",items:[{name:"Editor Toolbar",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"Editor Dialog",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."}, 5CKEDITOR.plugins.setLang("a11yhelp","bg",{title:"Accessibility Instructions",contents:"Help Contents. To close this dialog press ESC.",legend:[{name:"Общо",items:[{name:"Editor Toolbar",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"Editor Dialog",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."},
6{name:"Editor Context Menu",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."},{name:"Editor List Box",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."}, 6{name:"Editor Context Menu",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."},{name:"Editor List Box",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."},
7{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]},{name:"Commands",items:[{name:" Undo command",legend:"Press ${undo}"},{name:" Redo command",legend:"Press ${redo}"},{name:" Bold command",legend:"Press ${bold}"},{name:" Italic command",legend:"Press ${italic}"},{name:" Underline command", 7{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]},{name:"Commands",items:[{name:" Undo command",legend:"Press ${undo}"},{name:" Redo command",legend:"Press ${redo}"},{name:" Bold command",legend:"Press ${bold}"},{name:" Italic command",legend:"Press ${italic}"},{name:" Underline command",
8legend:"Press ${underline}"},{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, 8legend:"Press ${underline}"},{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},
9{name:" Accessibility Help",legend:"Press ${a11yHelp}"}]}],backspace:"Backspace",tab:"Tab",enter:"Enter",shift:"Shift",ctrl:"Ctrl",alt:"Alt",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",end:"End",home:"Home",leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert","delete":"Delete",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1", 9{name:" Accessibility Help",legend:"Press ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1",
10numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash", 10numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash",
11graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"}); \ No newline at end of file 11graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"}); \ No newline at end of file
diff --git a/release/plugins/a11yhelp/dialogs/lang/ca.js b/release/plugins/a11yhelp/dialogs/lang/ca.js
index 11f77ba..d48552a 100644
--- a/release/plugins/a11yhelp/dialogs/lang/ca.js
+++ b/release/plugins/a11yhelp/dialogs/lang/ca.js
@@ -1,12 +1,13 @@
1/* 1/*
2 Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 For licensing, see LICENSE.md or http://ckeditor.com/license 3 For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang("a11yhelp","ca",{title:"Instruccions d'Accessibilitat",contents:"Continguts de l'Ajuda. Per tancar aquest quadre de diàleg premi ESC.",legend:[{name:"General",items:[{name:"Editor de barra d'eines",legend:"Premi ${toolbarFocus} per desplaçar-se per la barra d'eines. Vagi en el següent i anterior grup de barra d'eines amb TAB i SHIFT+TAB. Vagi en el següent i anterior botó de la barra d'eines amb RIGHT ARROW i LEFT ARROW. Premi SPACE o ENTER per activar el botó de la barra d'eines."}, 5CKEDITOR.plugins.setLang("a11yhelp","ca",{title:"Instruccions d'Accessibilitat",contents:"Continguts de l'Ajuda. Per tancar aquest quadre de diàleg premi ESC.",legend:[{name:"General",items:[{name:"Editor de barra d'eines",legend:"Premi ${toolbarFocus} per desplaçar-se per la barra d'eines. Vagi en el següent i anterior grup de barra d'eines amb TAB i SHIFT+TAB. Vagi en el següent i anterior botó de la barra d'eines amb RIGHT ARROW i LEFT ARROW. Premi SPACE o ENTER per activar el botó de la barra d'eines."},
6{name:"Editor de quadre de diàleg",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."},{name:"Editor de menú contextual",legend:"Premi ${contextMenu} o APPLICATION KEY per obrir el menú contextual. Després desplacis a la següent opció del menú amb TAB o DOWN ARROW. Desplacis a l'anterior opció amb SHIFT+TAB o UP ARROW. Premi SPACE o ENTER per seleccionar l'opció del menú. Obri el submenú de l'actual opció utilitzant SPACE o ENTER o RIGHT ARROW. Pot tornar a l'opció del menú pare amb ESC o LEFT ARROW. Tanqui el menú contextual amb ESC."}, 6{name:"Editor de quadre de diàleg",legend:"Dins d'un quadre de diàleg, premi la tecla TAB per desplaçar-se fins al següent element del quadre de diàleg, premi la tecla Shift + TAB per desplaçar-se a l'anterior element del quadre de diàleg, premi la tecla ENTER per confirmar el quadre de diàleg, premi la tecla ESC per cancel·lar el quadre de diàleg. Quan un quadre de diàleg té diverses pestanyes, la llista de pestanyes pot ser assolit ja sigui amb ALT + F10 o TAB, com a part de l'ordre de tabulació del quadre de diàleg. Amb la llista de pestanyes seleccionada, pot anar a la fitxa següent i anterior amb la tecla FLETXA DRETA i ESQUERRA, respectivament."},
7{name:"Editor de caixa de llista",legend:"Dins d'un quadre de llista, desplacis al següent element de la llista amb TAB o DOWN ARROW. Desplacis a l'anterior element de la llista amb SHIFT+TAB o UP ARROW. Premi SPACE o ENTER per seleccionar l'opció de la llista. Premi ESC per tancar el quadre de llista."},{name:"Editor de barra de ruta de l'element",legend:"Premi ${elementsPathFocus} per anar als elements de la barra de ruta. Desplacis al botó de l'element següent amb TAB o RIGHT ARROW. Desplacis a l'anterior botó amb SHIFT+TAB o LEFT ARROW. Premi SPACE o ENTER per seleccionar l'element a l'editor."}]}, 7{name:"Editor de menú contextual",legend:"Premi ${contextMenu} o APPLICATION KEY per obrir el menú contextual. Després desplacis a la següent opció del menú amb TAB o DOWN ARROW. Desplacis a l'anterior opció amb SHIFT+TAB o UP ARROW. Premi SPACE o ENTER per seleccionar l'opció del menú. Obri el submenú de l'actual opció utilitzant SPACE o ENTER o RIGHT ARROW. Pot tornar a l'opció del menú pare amb ESC o LEFT ARROW. Tanqui el menú contextual amb ESC."},{name:"Editor de caixa de llista",legend:"Dins d'un quadre de llista, desplacis al següent element de la llista amb TAB o DOWN ARROW. Desplacis a l'anterior element de la llista amb SHIFT+TAB o UP ARROW. Premi SPACE o ENTER per seleccionar l'opció de la llista. Premi ESC per tancar el quadre de llista."},
8{name:"Ordres",items:[{name:"Desfer ordre",legend:"Premi ${undo}"},{name:"Refer ordre",legend:"Premi ${redo}"},{name:"Ordre negreta",legend:"Premi ${bold}"},{name:"Ordre cursiva",legend:"Premi ${italic}"},{name:"Ordre subratllat",legend:"Premi ${underline}"},{name:"Ordre enllaç",legend:"Premi ${link}"},{name:"Ordre amagar barra d'eines",legend:"Premi ${toolbarCollapse}"},{name:"Ordre per accedir a l'anterior espai enfocat",legend:"Premi ${accessPreviousSpace} per accedir a l'enfocament d'espai més proper inabastable abans del símbol d'intercalació, per exemple: dos elements HR adjacents. Repetiu la combinació de tecles per arribar a enfocaments d'espais distants."}, 8{name:"Editor de barra de ruta de l'element",legend:"Premi ${elementsPathFocus} per anar als elements de la barra de ruta. Desplacis al botó de l'element següent amb TAB o RIGHT ARROW. Desplacis a l'anterior botó amb SHIFT+TAB o LEFT ARROW. Premi SPACE o ENTER per seleccionar l'element a l'editor."}]},{name:"Ordres",items:[{name:"Desfer ordre",legend:"Premi ${undo}"},{name:"Refer ordre",legend:"Premi ${redo}"},{name:"Ordre negreta",legend:"Premi ${bold}"},{name:"Ordre cursiva",legend:"Premi ${italic}"},
9{name:"Ordre per accedir al següent espai enfocat",legend:"Premi ${accessNextSpace} per accedir a l'enfocament d'espai més proper inabastable després del símbol d'intercalació, per exemple: dos elements HR adjacents. Repetiu la combinació de tecles per arribar a enfocaments d'espais distants."},{name:"Ajuda d'accessibilitat",legend:"Premi ${a11yHelp}"}]}],backspace:"Retrocés",tab:"Tabulació",enter:"Intro",shift:"Majúscules",ctrl:"Ctrl",alt:"Alt",pause:"Pausa",capslock:"Bloqueig de majúscules",escape:"Escape", 9{name:"Ordre subratllat",legend:"Premi ${underline}"},{name:"Ordre enllaç",legend:"Premi ${link}"},{name:"Ordre amagar barra d'eines",legend:"Premi ${toolbarCollapse}"},{name:"Ordre per accedir a l'anterior espai enfocat",legend:"Premi ${accessPreviousSpace} per accedir a l'enfocament d'espai més proper inabastable abans del símbol d'intercalació, per exemple: dos elements HR adjacents. Repetiu la combinació de tecles per arribar a enfocaments d'espais distants."},{name:"Ordre per accedir al següent espai enfocat",
10pageUp:"Pàgina Amunt",pageDown:"Pàgina Avall",end:"Fi",home:"Inici",leftArrow:"Fletxa Esquerra",upArrow:"Fletxa Amunt",rightArrow:"Fletxa Dreta",downArrow:"Fletxa Avall",insert:"Inserir","delete":"Eliminar",leftWindowKey:"Tecla Windows Esquerra",rightWindowKey:"Tecla Windows Dreta",selectKey:"Tecla Seleccionar",numpad0:"Teclat Numèric 0",numpad1:"Teclat Numèric 1",numpad2:"Teclat Numèric 2",numpad3:"Teclat Numèric 3",numpad4:"Teclat Numèric 4",numpad5:"Teclat Numèric 5",numpad6:"Teclat Numèric 6", 10legend:"Premi ${accessNextSpace} per accedir a l'enfocament d'espai més proper inabastable després del símbol d'intercalació, per exemple: dos elements HR adjacents. Repetiu la combinació de tecles per arribar a enfocaments d'espais distants."},{name:"Ajuda d'accessibilitat",legend:"Premi ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tabulació",pause:"Pausa",capslock:"Bloqueig de majúscules",escape:"Escape",pageUp:"Pàgina Amunt",
11numpad7:"Teclat Numèric 7",numpad8:"Teclat Numèric 8",numpad9:"Teclat Numèric 9",multiply:"Multiplicació",add:"Suma",subtract:"Resta",decimalPoint:"Punt Decimal",divide:"Divisió",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Bloqueig Teclat Numèric",scrollLock:"Bloqueig de Desplaçament",semiColon:"Punt i Coma",equalSign:"Símbol Igual",comma:"Coma",dash:"Guió",period:"Punt",forwardSlash:"Barra Diagonal",graveAccent:"Accent Obert",openBracket:"Claudàtor Obert", 11pageDown:"Pàgina Avall",leftArrow:"Fletxa Esquerra",upArrow:"Fletxa Amunt",rightArrow:"Fletxa Dreta",downArrow:"Fletxa Avall",insert:"Inserir",leftWindowKey:"Tecla Windows Esquerra",rightWindowKey:"Tecla Windows Dreta",selectKey:"Tecla Seleccionar",numpad0:"Teclat Numèric 0",numpad1:"Teclat Numèric 1",numpad2:"Teclat Numèric 2",numpad3:"Teclat Numèric 3",numpad4:"Teclat Numèric 4",numpad5:"Teclat Numèric 5",numpad6:"Teclat Numèric 6",numpad7:"Teclat Numèric 7",numpad8:"Teclat Numèric 8",numpad9:"Teclat Numèric 9",
12backSlash:"Barra Invertida",closeBracket:"Claudàtor Tancat",singleQuote:"Cometa Simple"}); \ No newline at end of file 12multiply:"Multiplicació",add:"Suma",subtract:"Resta",decimalPoint:"Punt Decimal",divide:"Divisió",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Bloqueig Teclat Numèric",scrollLock:"Bloqueig de Desplaçament",semiColon:"Punt i Coma",equalSign:"Símbol Igual",comma:"Coma",dash:"Guió",period:"Punt",forwardSlash:"Barra Diagonal",graveAccent:"Accent Obert",openBracket:"Claudàtor Obert",backSlash:"Barra Invertida",closeBracket:"Claudàtor Tancat",
13singleQuote:"Cometa Simple"}); \ No newline at end of file
diff --git a/release/plugins/a11yhelp/dialogs/lang/cs.js b/release/plugins/a11yhelp/dialogs/lang/cs.js
index 88a393c..3c4e595 100644
--- a/release/plugins/a11yhelp/dialogs/lang/cs.js
+++ b/release/plugins/a11yhelp/dialogs/lang/cs.js
@@ -1,12 +1,12 @@
1/* 1/*
2 Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 For licensing, see LICENSE.md or http://ckeditor.com/license 3 For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang("a11yhelp","cs",{title:"Instrukce pro přístupnost",contents:"Obsah nápovědy. Pro uzavření tohoto dialogu stiskněte klávesu ESC.",legend:[{name:"Obecné",items:[{name:"Panel nástrojů editoru",legend:"Stiskněte${toolbarFocus} k procházení panelu nástrojů. Přejděte na další a předchozí skupiny pomocí TAB a SHIFT+TAB. Přechod na další a předchozí tlačítko panelu nástrojů je pomocí ŠIPKA VPRAVO nebo ŠIPKA VLEVO. Stisknutím mezerníku nebo klávesy ENTER tlačítko aktivujete."},{name:"Dialogové okno editoru", 5CKEDITOR.plugins.setLang("a11yhelp","cs",{title:"Instrukce pro přístupnost",contents:"Obsah nápovědy. Pro uzavření tohoto dialogu stiskněte klávesu ESC.",legend:[{name:"Obecné",items:[{name:"Panel nástrojů editoru",legend:"Stiskněte${toolbarFocus} k procházení panelu nástrojů. Přejděte na další a předchozí skupiny pomocí TAB a SHIFT+TAB. Přechod na další a předchozí tlačítko panelu nástrojů je pomocí ŠIPKA VPRAVO nebo ŠIPKA VLEVO. Stisknutím mezerníku nebo klávesy ENTER tlačítko aktivujete."},{name:"Dialogové okno editoru",
6legend:"Uvnitř dialogového okna stiskněte TAB pro přesunutí na další prvek okna, stiskněte SHIFT+TAB pro přesun na předchozí prvek okna, stiskněte ENTER pro odeslání dialogu, stiskněte ESC pro jeho zrušení. Pro dialogová okna, která mají mnoho karet stiskněte ALT+F10 pro zaměření seznamu karet, nebo TAB, pro posun podle pořadí karet.Při zaměření seznamu karet se můžete jimi posouvat pomocí ŠIPKY VPRAVO a VLEVO."},{name:"Kontextové menu editoru",legend:"Stiskněte ${contextMenu} nebo klávesu APPLICATION k otevření kontextového menu. Pak se přesuňte na další možnost menu pomocí TAB nebo ŠIPKY DOLŮ. Přesuňte se na předchozí možnost pomocí SHIFT+TAB nebo ŠIPKY NAHORU. Stiskněte MEZERNÍK nebo ENTER pro zvolení možnosti menu. Podmenu současné možnosti otevřete pomocí MEZERNÍKU nebo ENTER či ŠIPKY DOLEVA. Kontextové menu uzavřete stiskem ESC."}, 6legend:"Uvnitř dialogového okna stiskněte TAB pro přesunutí na další prvek okna, stiskněte SHIFT+TAB pro přesun na předchozí prvek okna, stiskněte ENTER pro odeslání dialogu, stiskněte ESC pro jeho zrušení. Pro dialogová okna, která mají mnoho karet stiskněte ALT+F10 pro zaměření seznamu karet, nebo TAB, pro posun podle pořadí karet.Při zaměření seznamu karet se můžete jimi posouvat pomocí ŠIPKY VPRAVO a VLEVO."},{name:"Kontextové menu editoru",legend:"Stiskněte ${contextMenu} nebo klávesu APPLICATION k otevření kontextového menu. Pak se přesuňte na další možnost menu pomocí TAB nebo ŠIPKY DOLŮ. Přesuňte se na předchozí možnost pomocí SHIFT+TAB nebo ŠIPKY NAHORU. Stiskněte MEZERNÍK nebo ENTER pro zvolení možnosti menu. Podmenu současné možnosti otevřete pomocí MEZERNÍKU nebo ENTER či ŠIPKY DOLEVA. Kontextové menu uzavřete stiskem ESC."},
7{name:"Rámeček seznamu editoru",legend:"Uvnitř rámečku seznamu se přesunete na další položku menu pomocí TAB nebo ŠIPKA DOLŮ. Na předchozí položku se přesunete SHIFT+TAB nebo ŠIPKA NAHORU. Stiskněte MEZERNÍK nebo ENTER pro zvolení možnosti seznamu. Stiskněte ESC pro uzavření seznamu."},{name:"Lišta cesty prvku v editoru",legend:"Stiskněte ${elementsPathFocus} pro procházení lišty cesty prvku. Na další tlačítko prvku se přesunete pomocí TAB nebo ŠIPKA VPRAVO. Na předchozí tlačítko se přesunete pomocí SHIFT+TAB nebo ŠIPKA VLEVO. Stiskněte MEZERNÍK nebo ENTER pro vybrání prvku v editoru."}]}, 7{name:"Rámeček seznamu editoru",legend:"Uvnitř rámečku seznamu se přesunete na další položku menu pomocí TAB nebo ŠIPKA DOLŮ. Na předchozí položku se přesunete SHIFT+TAB nebo ŠIPKA NAHORU. Stiskněte MEZERNÍK nebo ENTER pro zvolení možnosti seznamu. Stiskněte ESC pro uzavření seznamu."},{name:"Lišta cesty prvku v editoru",legend:"Stiskněte ${elementsPathFocus} pro procházení lišty cesty prvku. Na další tlačítko prvku se přesunete pomocí TAB nebo ŠIPKA VPRAVO. Na předchozí tlačítko se přesunete pomocí SHIFT+TAB nebo ŠIPKA VLEVO. Stiskněte MEZERNÍK nebo ENTER pro vybrání prvku v editoru."}]},
8{name:"Příkazy",items:[{name:" Příkaz Zpět",legend:"Stiskněte ${undo}"},{name:" Příkaz Znovu",legend:"Stiskněte ${redo}"},{name:" Příkaz Tučné",legend:"Stiskněte ${bold}"},{name:" Příkaz Kurzíva",legend:"Stiskněte ${italic}"},{name:" Příkaz Podtržení",legend:"Stiskněte ${underline}"},{name:" Příkaz Odkaz",legend:"Stiskněte ${link}"},{name:" Příkaz Skrýt panel nástrojů",legend:"Stiskněte ${toolbarCollapse}"},{name:"Příkaz pro přístup k předchozímu prostoru zaměření",legend:"Stiskněte ${accessPreviousSpace} pro přístup k nejbližšímu nedosažitelnému prostoru zaměření před stříškou, například: dva přilehlé prvky HR. Pro dosažení vzdálených prostorů zaměření tuto kombinaci kláves opakujte."}, 8{name:"Příkazy",items:[{name:" Příkaz Zpět",legend:"Stiskněte ${undo}"},{name:" Příkaz Znovu",legend:"Stiskněte ${redo}"},{name:" Příkaz Tučné",legend:"Stiskněte ${bold}"},{name:" Příkaz Kurzíva",legend:"Stiskněte ${italic}"},{name:" Příkaz Podtržení",legend:"Stiskněte ${underline}"},{name:" Příkaz Odkaz",legend:"Stiskněte ${link}"},{name:" Příkaz Skrýt panel nástrojů",legend:"Stiskněte ${toolbarCollapse}"},{name:"Příkaz pro přístup k předchozímu prostoru zaměření",legend:"Stiskněte ${accessPreviousSpace} pro přístup k nejbližšímu nedosažitelnému prostoru zaměření před stříškou, například: dva přilehlé prvky HR. Pro dosažení vzdálených prostorů zaměření tuto kombinaci kláves opakujte."},
9{name:"Příkaz pro přístup k dalšímu prostoru zaměření",legend:"Stiskněte ${accessNextSpace} pro přístup k nejbližšímu nedosažitelnému prostoru zaměření po stříšce, například: dva přilehlé prvky HR. Pro dosažení vzdálených prostorů zaměření tuto kombinaci kláves opakujte."},{name:" Nápověda přístupnosti",legend:"Stiskněte ${a11yHelp}"}]}],backspace:"Backspace",tab:"Tabulátor",enter:"Enter",shift:"Shift",ctrl:"Ctrl",alt:"Alt",pause:"Pauza",capslock:"Caps lock",escape:"Escape",pageUp:"Stránka nahoru", 9{name:"Příkaz pro přístup k dalšímu prostoru zaměření",legend:"Stiskněte ${accessNextSpace} pro přístup k nejbližšímu nedosažitelnému prostoru zaměření po stříšce, například: dva přilehlé prvky HR. Pro dosažení vzdálených prostorů zaměření tuto kombinaci kláves opakujte."},{name:" Nápověda přístupnosti",legend:"Stiskněte ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tabulátor",pause:"Pauza",capslock:"Caps lock",
10pageDown:"Stránka dolů",end:"Konec",home:"Domů",leftArrow:"Šipka vlevo",upArrow:"Šipka nahoru",rightArrow:"Šipka vpravo",downArrow:"Šipka dolů",insert:"Vložit","delete":"Smazat",leftWindowKey:"Levá klávesa Windows",rightWindowKey:"Pravá klávesa Windows",selectKey:"Vyberte klávesu",numpad0:"Numerická klávesa 0",numpad1:"Numerická klávesa 1",numpad2:"Numerická klávesa 2",numpad3:"Numerická klávesa 3",numpad4:"Numerická klávesa 4",numpad5:"Numerická klávesa 5",numpad6:"Numerická klávesa 6",numpad7:"Numerická klávesa 7", 10escape:"Escape",pageUp:"Stránka nahoru",pageDown:"Stránka dolů",leftArrow:"Šipka vlevo",upArrow:"Šipka nahoru",rightArrow:"Šipka vpravo",downArrow:"Šipka dolů",insert:"Vložit",leftWindowKey:"Levá klávesa Windows",rightWindowKey:"Pravá klávesa Windows",selectKey:"Vyberte klávesu",numpad0:"Numerická klávesa 0",numpad1:"Numerická klávesa 1",numpad2:"Numerická klávesa 2",numpad3:"Numerická klávesa 3",numpad4:"Numerická klávesa 4",numpad5:"Numerická klávesa 5",numpad6:"Numerická klávesa 6",numpad7:"Numerická klávesa 7",
11numpad8:"Numerická klávesa 8",numpad9:"Numerická klávesa 9",multiply:"Numerická klávesa násobení",add:"Přidat",subtract:"Numerická klávesa odečítání",decimalPoint:"Desetinná tečka",divide:"Numerická klávesa dělení",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num lock",scrollLock:"Scroll lock",semiColon:"Středník",equalSign:"Rovnítko",comma:"Čárka",dash:"Pomlčka",period:"Tečka",forwardSlash:"Lomítko",graveAccent:"Přízvuk",openBracket:"Otevřená hranatá závorka", 11numpad8:"Numerická klávesa 8",numpad9:"Numerická klávesa 9",multiply:"Numerická klávesa násobení",add:"Přidat",subtract:"Numerická klávesa odečítání",decimalPoint:"Desetinná tečka",divide:"Numerická klávesa dělení",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num lock",scrollLock:"Scroll lock",semiColon:"Středník",equalSign:"Rovnítko",comma:"Čárka",dash:"Pomlčka",period:"Tečka",forwardSlash:"Lomítko",graveAccent:"Přízvuk",openBracket:"Otevřená hranatá závorka",
12backSlash:"Obrácené lomítko",closeBracket:"Uzavřená hranatá závorka",singleQuote:"Jednoduchá uvozovka"}); \ No newline at end of file 12backSlash:"Obrácené lomítko",closeBracket:"Uzavřená hranatá závorka",singleQuote:"Jednoduchá uvozovka"}); \ No newline at end of file
diff --git a/release/plugins/a11yhelp/dialogs/lang/cy.js b/release/plugins/a11yhelp/dialogs/lang/cy.js
index 97fc711..e89739a 100644
--- a/release/plugins/a11yhelp/dialogs/lang/cy.js
+++ b/release/plugins/a11yhelp/dialogs/lang/cy.js
@@ -1,11 +1,11 @@
1/* 1/*
2 Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 For licensing, see LICENSE.md or http://ckeditor.com/license 3 For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang("a11yhelp","cy",{title:"Canllawiau Hygyrchedd",contents:"Cynnwys Cymorth. I gau y deialog hwn, pwyswch ESC.",legend:[{name:"Cyffredinol",items:[{name:"Bar Offer y Golygydd",legend:"Pwyswch $ {toolbarFocus} i fynd at y bar offer. Symudwch i'r grŵp bar offer nesaf a blaenorol gyda TAB a SHIFT+TAB. Symudwch i'r botwm bar offer nesaf a blaenorol gyda SAETH DDE neu SAETH CHWITH. Pwyswch SPACE neu ENTER i wneud botwm y bar offer yn weithredol."},{name:"Deialog y Golygydd",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."}, 5CKEDITOR.plugins.setLang("a11yhelp","cy",{title:"Canllawiau Hygyrchedd",contents:"Cynnwys Cymorth. I gau y deialog hwn, pwyswch ESC.",legend:[{name:"Cyffredinol",items:[{name:"Bar Offer y Golygydd",legend:"Pwyswch $ {toolbarFocus} i fynd at y bar offer. Symudwch i'r grŵp bar offer nesaf a blaenorol gyda TAB a SHIFT+TAB. Symudwch i'r botwm bar offer nesaf a blaenorol gyda SAETH DDE neu SAETH CHWITH. Pwyswch SPACE neu ENTER i wneud botwm y bar offer yn weithredol."},{name:"Deialog y Golygydd",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."},
6{name:"Dewislen Cyd-destun y Golygydd",legend:"Pwyswch $ {contextMenu} neu'r ALLWEDD 'APPLICATION' i agor y ddewislen cyd-destun. Yna symudwch i'r opsiwn ddewislen nesaf gyda'r TAB neu'r SAETH I LAWR. Symudwch i'r opsiwn blaenorol gyda SHIFT+TAB neu'r SAETH I FYNY. Pwyswch SPACE neu ENTER i ddewis yr opsiwn ddewislen. Agorwch is-dewislen yr opsiwn cyfredol gyda SPACE neu ENTER neu SAETH DDE. Ewch yn ôl i'r eitem ar y ddewislen uwch gydag ESC neu SAETH CHWITH. Ceuwch y ddewislen cyd-destun gydag ESC."}, 6{name:"Dewislen Cyd-destun y Golygydd",legend:"Pwyswch $ {contextMenu} neu'r ALLWEDD 'APPLICATION' i agor y ddewislen cyd-destun. Yna symudwch i'r opsiwn ddewislen nesaf gyda'r TAB neu'r SAETH I LAWR. Symudwch i'r opsiwn blaenorol gyda SHIFT+TAB neu'r SAETH I FYNY. Pwyswch SPACE neu ENTER i ddewis yr opsiwn ddewislen. Agorwch is-dewislen yr opsiwn cyfredol gyda SPACE neu ENTER neu SAETH DDE. Ewch yn ôl i'r eitem ar y ddewislen uwch gydag ESC neu SAETH CHWITH. Ceuwch y ddewislen cyd-destun gydag ESC."},
7{name:"Blwch Rhestr y Golygydd",legend:"Tu mewn y blwch rhestr, ewch i'r eitem rhestr nesaf gyda TAB neu'r SAETH I LAWR. Symudwch i restr eitem flaenorol gyda SHIFT+TAB neu SAETH I FYNY. Pwyswch SPACE neu ENTER i ddewis yr opsiwn o'r rhestr. Pwyswch ESC i gau'r rhestr."},{name:"Bar Llwybr Elfen y Golygydd",legend:"Pwyswch ${elementsPathFocus} i fynd i'r bar llwybr elfennau. Symudwch i fotwm yr elfen nesaf gyda TAB neu SAETH DDE. Symudwch i fotwm blaenorol gyda SHIFT+TAB neu SAETH CHWITH. Pwyswch SPACE neu ENTER i ddewis yr elfen yn y golygydd."}]}, 7{name:"Blwch Rhestr y Golygydd",legend:"Tu mewn y blwch rhestr, ewch i'r eitem rhestr nesaf gyda TAB neu'r SAETH I LAWR. Symudwch i restr eitem flaenorol gyda SHIFT+TAB neu SAETH I FYNY. Pwyswch SPACE neu ENTER i ddewis yr opsiwn o'r rhestr. Pwyswch ESC i gau'r rhestr."},{name:"Bar Llwybr Elfen y Golygydd",legend:"Pwyswch ${elementsPathFocus} i fynd i'r bar llwybr elfennau. Symudwch i fotwm yr elfen nesaf gyda TAB neu SAETH DDE. Symudwch i fotwm blaenorol gyda SHIFT+TAB neu SAETH CHWITH. Pwyswch SPACE neu ENTER i ddewis yr elfen yn y golygydd."}]},
8{name:"Gorchmynion",items:[{name:"Gorchymyn dadwneud",legend:"Pwyswch ${undo}"},{name:"Gorchymyn ailadrodd",legend:"Pwyswch ${redo}"},{name:"Gorchymyn Bras",legend:"Pwyswch ${bold}"},{name:"Gorchymyn italig",legend:"Pwyswch ${italig}"},{name:"Gorchymyn tanlinellu",legend:"Pwyso ${underline}"},{name:"Gorchymyn dolen",legend:"Pwyswch ${link}"},{name:"Gorchymyn Cwympo'r Dewislen",legend:"Pwyswch ${toolbarCollapse}"},{name:"Myned i orchymyn bwlch ffocws blaenorol",legend:"Pwyswch ${accessPreviousSpace} i fyned i'r \"blwch ffocws sydd methu ei gyrraedd\" cyn y caret, er enghraifft: dwy elfen HR drws nesaf i'w gilydd. AIladroddwch y cyfuniad allwedd i gyrraedd bylchau ffocws pell."}, 8{name:"Gorchmynion",items:[{name:"Gorchymyn dadwneud",legend:"Pwyswch ${undo}"},{name:"Gorchymyn ailadrodd",legend:"Pwyswch ${redo}"},{name:"Gorchymyn Bras",legend:"Pwyswch ${bold}"},{name:"Gorchymyn italig",legend:"Pwyswch ${italig}"},{name:"Gorchymyn tanlinellu",legend:"Pwyso ${underline}"},{name:"Gorchymyn dolen",legend:"Pwyswch ${link}"},{name:"Gorchymyn Cwympo'r Dewislen",legend:"Pwyswch ${toolbarCollapse}"},{name:"Myned i orchymyn bwlch ffocws blaenorol",legend:"Pwyswch ${accessPreviousSpace} i fyned i'r \"blwch ffocws sydd methu ei gyrraedd\" cyn y caret, er enghraifft: dwy elfen HR drws nesaf i'w gilydd. AIladroddwch y cyfuniad allwedd i gyrraedd bylchau ffocws pell."},
9{name:"Ewch i'r gorchymyn blwch ffocws nesaf",legend:"Pwyswch ${accessNextSpace} i fyned i'r blwch ffocws agosaf nad oes modd ei gyrraedd ar ôl y caret, er enghraifft: dwy elfen HR drws nesaf i'w gilydd. Ailadroddwch y cyfuniad allwedd i gyrraedd blychau ffocws pell."},{name:"Cymorth Hygyrchedd",legend:"Pwyswch ${a11yHelp}"}]}],backspace:"Backspace",tab:"Tab",enter:"Enter",shift:"Shift",ctrl:"Ctrl",alt:"Alt",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down", 9{name:"Ewch i'r gorchymyn blwch ffocws nesaf",legend:"Pwyswch ${accessNextSpace} i fyned i'r blwch ffocws agosaf nad oes modd ei gyrraedd ar ôl y caret, er enghraifft: dwy elfen HR drws nesaf i'w gilydd. Ailadroddwch y cyfuniad allwedd i gyrraedd blychau ffocws pell."},{name:"Cymorth Hygyrchedd",legend:"Pwyswch ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Caps Lock",escape:"Escape",
10end:"End",home:"Home",leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert","delete":"Delete",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1",numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point", 10pageUp:"Page Up",pageDown:"Page Down",leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1",numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point",
11divide:"Divide",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash",graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"}); \ No newline at end of file 11divide:"Divide",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash",graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"}); \ No newline at end of file
diff --git a/release/plugins/a11yhelp/dialogs/lang/da.js b/release/plugins/a11yhelp/dialogs/lang/da.js
index 70bebb0..6b5107b 100644
--- a/release/plugins/a11yhelp/dialogs/lang/da.js
+++ b/release/plugins/a11yhelp/dialogs/lang/da.js
@@ -1,11 +1,11 @@
1/* 1/*
2 Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 For licensing, see LICENSE.md or http://ckeditor.com/license 3 For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang("a11yhelp","da",{title:"Tilgængelighedsinstrukser",contents:"Onlinehjælp. For at lukke dette vindue klik ESC",legend:[{name:"Generelt",items:[{name:"Editor værktøjslinje",legend:"Tryk ${toolbarFocus} for at navigere til værktøjslinjen. Flyt til næste eller forrige værktøjsline gruppe ved hjælp af TAB eller SHIFT+TAB. Flyt til næste eller forrige værktøjslinje knap med venstre- eller højre piltast. Tryk på SPACE eller ENTER for at aktivere værktøjslinje knappen."},{name:"Editor dialogboks", 5CKEDITOR.plugins.setLang("a11yhelp","da",{title:"Tilgængelighedsinstrukser",contents:"Onlinehjælp. For at lukke dette vindue klik ESC",legend:[{name:"Generelt",items:[{name:"Editor værktøjslinje",legend:"Tryk ${toolbarFocus} for at navigere til værktøjslinjen. Flyt til næste eller forrige værktøjsline gruppe ved hjælp af TAB eller SHIFT+TAB. Flyt til næste eller forrige værktøjslinje knap med venstre- eller højre piltast. Tryk på SPACE eller ENTER for at aktivere værktøjslinje knappen."},{name:"Editor dialogboks",
6legend:"Inde i en dialogboks kan du, trykke på TAB for at navigere til næste element, trykke på SHIFT+TAB for at navigere til forrige element, trykke på ENTER for at afsende eller trykke på ESC for at lukke dialogboksen.\r\nNår en dialogboks har flere faner, fanelisten kan tilgås med ALT+F10 eller med TAB. Hvis fanelisten er i fokus kan du skifte til næste eller forrige tab, med højre- og venstre piltast."},{name:"Editor Context Menu",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."}, 6legend:"Inde i en dialogboks kan du, trykke på TAB for at navigere til næste element, trykke på SHIFT+TAB for at navigere til forrige element, trykke på ENTER for at afsende eller trykke på ESC for at lukke dialogboksen.\r\nNår en dialogboks har flere faner, fanelisten kan tilgås med ALT+F10 eller med TAB. Hvis fanelisten er i fokus kan du skifte til næste eller forrige tab, med højre- og venstre piltast."},{name:"Redaktør kontekstmenu",legend:"Tryk ${contextMenu} eller APPLICATION KEY for at åbne kontekstmenuen. Flyt derefter til næste menuvalg med TAB eller PIL NED. Flyt til forrige valg med SHIFT+TAB eller PIL OP. Tryk MELLEMRUM eller RETUR for at vælge menu-muligheder. Åben under-menu af aktuelle valg med MELLEMRUM eller RETUR eller HØJRE PIL. Gå tilbage til overliggende menu-emne med ESC eller VENSTRE PIL. Luk kontekstmenu med ESC."},
7{name:"Editor List Box",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."},{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]}, 7{name:"Redaktør listeboks",legend:"Flyt til næste emne med TAB eller PIL NED inde i en listeboks. Flyt til forrige listeemne med SHIFT+TAB eller PIL OP. Tryk MELLEMRUM eller RETUR for at vælge liste-muligheder. Tryk ESC for at lukke liste-boksen."},{name:"Redaktør elementsti-bar",legend:"Tryk ${elementsPathFocus} for at navigere til elementernes sti-bar. Flyt til næste element-knap med TAB eller HØJRE PIL. Flyt til forrige knap med SHIFT+TAB eller VENSTRE PIL. Klik MELLEMRUM eller RETUR for at vælge element i editoren."}]},
8{name:"Kommandoer",items:[{name:"Fortryd kommando",legend:"Klik på ${undo}"},{name:"Gentag kommando",legend:"Klik ${redo}"},{name:"Fed kommando",legend:"Klik ${bold}"},{name:"Kursiv kommando",legend:"Klik ${italic}"},{name:"Understregnings kommando",legend:"Klik ${underline}"},{name:"Link kommando",legend:"Klik ${link}"},{name:" Toolbar Collapse command",legend:"Klik ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, 8{name:"Kommandoer",items:[{name:"Fortryd kommando",legend:"Klik på ${undo}"},{name:"Gentag kommando",legend:"Klik ${redo}"},{name:"Fed kommando",legend:"Klik ${bold}"},{name:"Kursiv kommando",legend:"Klik ${italic}"},{name:"Understregnings kommando",legend:"Klik ${underline}"},{name:"Link kommando",legend:"Klik ${link}"},{name:"Klap værktøjslinje sammen kommando ",legend:"Klik ${toolbarCollapse}"},{name:"Adgang til forrige fokusområde kommando",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},
9{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:"Tilgængelighedshjælp",legend:"Kilk ${a11yHelp}"}]}],backspace:"Backspace",tab:"Tab",enter:"Enter",shift:"Shift",ctrl:"Ctrl",alt:"Alt",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",end:"End",home:"Home",leftArrow:"Venstre pil", 9{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:"Tilgængelighedshjælp",legend:"Kilk ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",
10upArrow:"Pil op",rightArrow:"Højre pil",downArrow:"Pil ned",insert:"Insert","delete":"Delete",leftWindowKey:"Venstre Windows tast",rightWindowKey:"Højre Windows tast",selectKey:"Select-knap",numpad0:"Numpad 0",numpad1:"Numpad 1",numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Gange",add:"Plus",subtract:"Minus",decimalPoint:"Komma",divide:"Divider",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5", 10leftArrow:"Venstre pil",upArrow:"Pil op",rightArrow:"Højre pil",downArrow:"Pil ned",insert:"Insert",leftWindowKey:"Venstre Windows tast",rightWindowKey:"Højre Windows tast",selectKey:"Select-knap",numpad0:"Numpad 0",numpad1:"Numpad 1",numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Gange",add:"Plus",subtract:"Minus",decimalPoint:"Komma",divide:"Divider",f1:"F1",f2:"F2",f3:"F3",f4:"F4",
11f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semikolon",equalSign:"Lighedstegn",comma:"Komma",dash:"Bindestreg",period:"Punktum",forwardSlash:"Skråstreg",graveAccent:"Accent grave",openBracket:"Start klamme",backSlash:"Omvendt skråstreg",closeBracket:"Slut klamme",singleQuote:"Enkelt citationstegn"}); \ No newline at end of file 11f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semikolon",equalSign:"Lighedstegn",comma:"Komma",dash:"Bindestreg",period:"Punktum",forwardSlash:"Skråstreg",graveAccent:"Accent grave",openBracket:"Start klamme",backSlash:"Omvendt skråstreg",closeBracket:"Slut klamme",singleQuote:"Enkelt citationstegn"}); \ No newline at end of file
diff --git a/release/plugins/a11yhelp/dialogs/lang/de-ch.js b/release/plugins/a11yhelp/dialogs/lang/de-ch.js
index 6bdca78..d4f5e49 100644
--- a/release/plugins/a11yhelp/dialogs/lang/de-ch.js
+++ b/release/plugins/a11yhelp/dialogs/lang/de-ch.js
@@ -1,12 +1,12 @@
1/* 1/*
2 Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 For licensing, see LICENSE.md or http://ckeditor.com/license 3 For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang("a11yhelp","de-ch",{title:"Barrierefreiheitinformationen",contents:"Hilfeinhalt. Um den Dialog zu schliessen die Taste ESC drücken.",legend:[{name:"Allgemein",items:[{name:"Editorwerkzeugleiste",legend:"Drücken Sie ${toolbarFocus} auf der Symbolleiste. Gehen Sie zur nächsten oder vorherigen Symbolleistengruppe mit TAB und SHIFT+TAB. Gehen Sie zur nächsten oder vorherigen Symbolleiste auf die Schaltfläche mit dem RECHTS- oder LINKS-Pfeil. Drücken Sie die Leertaste oder Eingabetaste, um die Schaltfläche in der Symbolleiste aktivieren."}, 5CKEDITOR.plugins.setLang("a11yhelp","de-ch",{title:"Barrierefreiheitinformationen",contents:"Hilfeinhalt. Um den Dialog zu schliessen die Taste ESC drücken.",legend:[{name:"Allgemein",items:[{name:"Editorwerkzeugleiste",legend:"Drücken Sie ${toolbarFocus} auf der Symbolleiste. Gehen Sie zur nächsten oder vorherigen Symbolleistengruppe mit TAB und SHIFT+TAB. Gehen Sie zur nächsten oder vorherigen Symbolleiste auf die Schaltfläche mit dem RECHTS- oder LINKS-Pfeil. Drücken Sie die Leertaste oder Eingabetaste, um die Schaltfläche in der Symbolleiste aktivieren."},
6{name:"Editordialog",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."},{name:"Editor-Kontextmenü",legend:"Dürcken Sie ${contextMenu} oder die Anwendungstaste um das Kontextmenü zu öffnen. Man kann die Pfeiltasten zum Wechsel benutzen. Mit der Leertaste oder der Enter-Taste kann man den Menüpunkt aufrufen. Schliessen Sie das Kontextmenü mit der ESC-Taste."}, 6{name:"Editordialog",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."},{name:"Editor-Kontextmenü",legend:"Dürcken Sie ${contextMenu} oder die Anwendungstaste um das Kontextmenü zu öffnen. Man kann die Pfeiltasten zum Wechsel benutzen. Mit der Leertaste oder der Enter-Taste kann man den Menüpunkt aufrufen. Schliessen Sie das Kontextmenü mit der ESC-Taste."},
7{name:"Editor-Listenbox",legend:"Innerhalb einer Listenbox kann man mit der TAB-Taste oder den Pfeilrunter-Taste den nächsten Menüeintrag wählen. Mit der SHIFT+TAB Tastenkombination oder der Pfeilhoch-Taste gelangt man zum vorherigen Menüpunkt. Mit der Leertaste oder Enter kann man den Menüpunkt auswählen. Drücken Sie ESC zum Verlassen des Menüs."},{name:"Editor-Elementpfadleiste",legend:"Drücken Sie ${elementsPathFocus} um sich durch die Pfadleiste zu bewegen. Um zum nächsten Element zu gelangen drücken Sie TAB oder die Pfeilrechts-Taste. Zum vorherigen Element gelangen Sie mit der SHIFT+TAB oder der Pfeillinks-Taste. Drücken Sie die Leertaste oder Enter um das Element auszuwählen."}]}, 7{name:"Editor-Listenbox",legend:"Innerhalb einer Listenbox kann man mit der TAB-Taste oder den Pfeilrunter-Taste den nächsten Menüeintrag wählen. Mit der SHIFT+TAB Tastenkombination oder der Pfeilhoch-Taste gelangt man zum vorherigen Menüpunkt. Mit der Leertaste oder Enter kann man den Menüpunkt auswählen. Drücken Sie ESC zum Verlassen des Menüs."},{name:"Editor-Elementpfadleiste",legend:"Drücken Sie ${elementsPathFocus} um sich durch die Pfadleiste zu bewegen. Um zum nächsten Element zu gelangen drücken Sie TAB oder die Pfeilrechts-Taste. Zum vorherigen Element gelangen Sie mit der SHIFT+TAB oder der Pfeillinks-Taste. Drücken Sie die Leertaste oder Enter um das Element auszuwählen."}]},
8{name:"Befehle",items:[{name:"Rückgängig-Befehl",legend:"Drücken Sie ${undo}"},{name:"Wiederherstellen-Befehl",legend:"Drücken Sie ${redo}"},{name:"Fettschrift-Befehl",legend:"Drücken Sie ${bold}"},{name:"Kursiv-Befehl",legend:"Drücken Sie ${italic}"},{name:"Unterstreichen-Befehl",legend:"Drücken Sie ${underline}"},{name:"Link-Befehl",legend:"Drücken Sie ${link}"},{name:"Werkzeugleiste einklappen-Befehl",legend:"Drücken Sie ${toolbarCollapse}"},{name:"Zugang bisheriger Fokussierung Raumbefehl ",legend:"Drücken Sie ${accessPreviousSpace} auf den am nächsten nicht erreichbar Fokus-Abstand vor die Einfügemarke zugreifen: zwei benachbarte HR-Elemente. Wiederholen Sie die Tastenkombination um entfernte Fokusräume zu erreichen. "}, 8{name:"Befehle",items:[{name:"Rückgängig-Befehl",legend:"Drücken Sie ${undo}"},{name:"Wiederherstellen-Befehl",legend:"Drücken Sie ${redo}"},{name:"Fettschrift-Befehl",legend:"Drücken Sie ${bold}"},{name:"Kursiv-Befehl",legend:"Drücken Sie ${italic}"},{name:"Unterstreichen-Befehl",legend:"Drücken Sie ${underline}"},{name:"Link-Befehl",legend:"Drücken Sie ${link}"},{name:"Werkzeugleiste einklappen-Befehl",legend:"Drücken Sie ${toolbarCollapse}"},{name:"Zugang bisheriger Fokussierung Raumbefehl ",legend:"Drücken Sie ${accessPreviousSpace} auf den am nächsten nicht erreichbar Fokus-Abstand vor die Einfügemarke zugreifen: zwei benachbarte HR-Elemente. Wiederholen Sie die Tastenkombination um entfernte Fokusräume zu erreichen. "},
9{name:"Zugang nächster Schwerpunkt Raumbefehl ",legend:"Drücken Sie $ { accessNextSpace }, um den nächsten unerreichbar Fokus Leerzeichen nach dem Cursor zum Beispiel auf: zwei benachbarten HR Elemente. Wiederholen Sie die Tastenkombination zum fernen Fokus Bereiche zu erreichen. "},{name:"Eingabehilfen",legend:"Drücken Sie ${a11yHelp}"}]}],backspace:"Rücktaste",tab:"Tab",enter:"Eingabe",shift:"Umschalt",ctrl:"Strg",alt:"Alt",pause:"Pause",capslock:"Feststell",escape:"Escape",pageUp:"Bild auf",pageDown:"Bild ab", 9{name:"Zugang nächster Schwerpunkt Raumbefehl ",legend:"Drücken Sie $ { accessNextSpace }, um den nächsten unerreichbar Fokus Leerzeichen nach dem Cursor zum Beispiel auf: zwei benachbarten HR Elemente. Wiederholen Sie die Tastenkombination zum fernen Fokus Bereiche zu erreichen. "},{name:"Eingabehilfen",legend:"Drücken Sie ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Feststell",escape:"Escape",
10end:"Ende",home:"Pos1",leftArrow:"Linke Pfeiltaste",upArrow:"Obere Pfeiltaste",rightArrow:"Rechte Pfeiltaste",downArrow:"Untere Pfeiltaste",insert:"Einfügen","delete":"Entfernen",leftWindowKey:"Linke Windowstaste",rightWindowKey:"Rechte Windowstaste",selectKey:"Taste auswählen",numpad0:"Ziffernblock 0",numpad1:"Ziffernblock 1",numpad2:"Ziffernblock 2",numpad3:"Ziffernblock 3",numpad4:"Ziffernblock 4",numpad5:"Ziffernblock 5",numpad6:"Ziffernblock 6",numpad7:"Ziffernblock 7",numpad8:"Ziffernblock 8", 10pageUp:"Bild auf",pageDown:"Bild ab",leftArrow:"Linke Pfeiltaste",upArrow:"Obere Pfeiltaste",rightArrow:"Rechte Pfeiltaste",downArrow:"Untere Pfeiltaste",insert:"Einfügen",leftWindowKey:"Linke Windowstaste",rightWindowKey:"Rechte Windowstaste",selectKey:"Taste auswählen",numpad0:"Ziffernblock 0",numpad1:"Ziffernblock 1",numpad2:"Ziffernblock 2",numpad3:"Ziffernblock 3",numpad4:"Ziffernblock 4",numpad5:"Ziffernblock 5",numpad6:"Ziffernblock 6",numpad7:"Ziffernblock 7",numpad8:"Ziffernblock 8",numpad9:"Ziffernblock 9",
11numpad9:"Ziffernblock 9",multiply:"Multiplizieren",add:"Addieren",subtract:"Subtrahieren",decimalPoint:"Punkt",divide:"Dividieren",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Ziffernblock feststellen",scrollLock:"Rollen",semiColon:"Semikolon",equalSign:"Gleichheitszeichen",comma:"Komma",dash:"Bindestrich",period:"Punkt",forwardSlash:"Schrägstrich",graveAccent:"Gravis",openBracket:"Öffnende eckige Klammer",backSlash:"Rückwärtsgewandter Schrägstrich", 11multiply:"Multiplizieren",add:"Addieren",subtract:"Subtrahieren",decimalPoint:"Punkt",divide:"Dividieren",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Ziffernblock feststellen",scrollLock:"Rollen",semiColon:"Semikolon",equalSign:"Gleichheitszeichen",comma:"Komma",dash:"Bindestrich",period:"Punkt",forwardSlash:"Schrägstrich",graveAccent:"Gravis",openBracket:"Öffnende eckige Klammer",backSlash:"Rückwärtsgewandter Schrägstrich",closeBracket:"Schliessende eckige Klammer",
12closeBracket:"Schliessende eckige Klammer",singleQuote:"Einfaches Anführungszeichen"}); \ No newline at end of file 12singleQuote:"Einfaches Anführungszeichen"}); \ No newline at end of file
diff --git a/release/plugins/a11yhelp/dialogs/lang/de.js b/release/plugins/a11yhelp/dialogs/lang/de.js
index 24d782a..66891fc 100644
--- a/release/plugins/a11yhelp/dialogs/lang/de.js
+++ b/release/plugins/a11yhelp/dialogs/lang/de.js
@@ -1,12 +1,13 @@
1/* 1/*
2 Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 For licensing, see LICENSE.md or http://ckeditor.com/license 3 For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang("a11yhelp","de",{title:"Barrierefreiheitinformationen",contents:"Hilfeinhalt. Um den Dialog zu schliessen die Taste ESC drücken.",legend:[{name:"Allgemein",items:[{name:"Editorwerkzeugleiste",legend:"Drücken Sie ${toolbarFocus} auf der Symbolleiste. Gehen Sie zur nächsten oder vorherigen Symbolleistengruppe mit TAB und SHIFT+TAB. Gehen Sie zur nächsten oder vorherigen Symbolleiste auf die Schaltfläche mit dem RECHTS- oder LINKS-Pfeil. Drücken Sie die Leertaste oder Eingabetaste, um die Schaltfläche in der Symbolleiste aktivieren."}, 5CKEDITOR.plugins.setLang("a11yhelp","de",{title:"Barrierefreiheitinformationen",contents:"Hilfeinhalt. Um den Dialog zu schliessen die Taste ESC drücken.",legend:[{name:"Allgemein",items:[{name:"Editorwerkzeugleiste",legend:"Drücken Sie ${toolbarFocus} auf der Symbolleiste. Gehen Sie zur nächsten oder vorherigen Symbolleistengruppe mit TAB und SHIFT+TAB. Gehen Sie zur nächsten oder vorherigen Symbolleiste auf die Schaltfläche mit dem RECHTS- oder LINKS-Pfeil. Drücken Sie die Leertaste oder Eingabetaste, um die Schaltfläche in der Symbolleiste aktivieren."},
6{name:"Editordialog",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."},{name:"Editor-Kontextmenü",legend:"Dürcken Sie ${contextMenu} oder die Anwendungstaste um das Kontextmenü zu öffnen. Man kann die Pfeiltasten zum Wechsel benutzen. Mit der Leertaste oder der Enter-Taste kann man den Menüpunkt aufrufen. Schliessen Sie das Kontextmenü mit der ESC-Taste."}, 6{name:"Editordialog",legend:"Drücke innerhalb eines Dialogs TAB, um zum nächsten Element zu springen. Drücke SHIFT+TAB, um zum vorigen Element zu springen, drücke ENTER um das Formular im Dialog abzusenden, drücke ESC, um den Dialog zu schließen. Hat der Dialog mehrere Tabs, dann kannst du durch ALT+F10 die Tab-Liste aufrufen or mittels TAB als Teil der Dialog-Tab-Reihenfolge. Ist die Tab-Liste fokussiert, dann mithilfe der Pfeiltasten (LINKS und RECHTS) zwischen den Tabs gewechselt werden."},{name:"Editor-Kontextmenü",
7{name:"Editor-Listenbox",legend:"Innerhalb einer Listenbox kann man mit der TAB-Taste oder den Pfeilrunter-Taste den nächsten Menüeintrag wählen. Mit der SHIFT+TAB Tastenkombination oder der Pfeilhoch-Taste gelangt man zum vorherigen Menüpunkt. Mit der Leertaste oder Enter kann man den Menüpunkt auswählen. Drücken Sie ESC zum Verlassen des Menüs."},{name:"Editor-Elementpfadleiste",legend:"Drücken Sie ${elementsPathFocus} um sich durch die Pfadleiste zu bewegen. Um zum nächsten Element zu gelangen drücken Sie TAB oder die Pfeilrechts-Taste. Zum vorherigen Element gelangen Sie mit der SHIFT+TAB oder der Pfeillinks-Taste. Drücken Sie die Leertaste oder Enter um das Element auszuwählen."}]}, 7legend:"Dürcken Sie ${contextMenu} oder die Anwendungstaste um das Kontextmenü zu öffnen. Man kann die Pfeiltasten zum Wechsel benutzen. Mit der Leertaste oder der Enter-Taste kann man den Menüpunkt aufrufen. Schliessen Sie das Kontextmenü mit der ESC-Taste."},{name:"Editor-Listenbox",legend:"Innerhalb einer Listenbox kann man mit der TAB-Taste oder den Pfeilrunter-Taste den nächsten Menüeintrag wählen. Mit der SHIFT+TAB Tastenkombination oder der Pfeilhoch-Taste gelangt man zum vorherigen Menüpunkt. Mit der Leertaste oder Enter kann man den Menüpunkt auswählen. Drücken Sie ESC zum Verlassen des Menüs."},
8{name:"Befehle",items:[{name:"Rückgängig-Befehl",legend:"Drücken Sie ${undo}"},{name:"Wiederherstellen-Befehl",legend:"Drücken Sie ${redo}"},{name:"Fettschrift-Befehl",legend:"Drücken Sie ${bold}"},{name:"Kursiv-Befehl",legend:"Drücken Sie ${italic}"},{name:"Unterstreichen-Befehl",legend:"Drücken Sie ${underline}"},{name:"Link-Befehl",legend:"Drücken Sie ${link}"},{name:"Werkzeugleiste einklappen-Befehl",legend:"Drücken Sie ${toolbarCollapse}"},{name:"Zugang bisheriger Fokussierung Raumbefehl ",legend:"Drücken Sie ${accessPreviousSpace} auf den am nächsten nicht erreichbar Fokus-Abstand vor die Einfügemarke zugreifen: zwei benachbarte HR-Elemente. Wiederholen Sie die Tastenkombination um entfernte Fokusräume zu erreichen. "}, 8{name:"Editor-Elementpfadleiste",legend:"Drücken Sie ${elementsPathFocus} um sich durch die Pfadleiste zu bewegen. Um zum nächsten Element zu gelangen drücken Sie TAB oder die Pfeilrechts-Taste. Zum vorherigen Element gelangen Sie mit der SHIFT+TAB oder der Pfeillinks-Taste. Drücken Sie die Leertaste oder Enter um das Element auszuwählen."}]},{name:"Befehle",items:[{name:"Rückgängig-Befehl",legend:"Drücken Sie ${undo}"},{name:"Wiederherstellen-Befehl",legend:"Drücken Sie ${redo}"},{name:"Fettschrift-Befehl",
9{name:"Zugang nächster Schwerpunkt Raumbefehl ",legend:"Drücken Sie $ { accessNextSpace }, um den nächsten unerreichbar Fokus Leerzeichen nach dem Cursor zum Beispiel auf: zwei benachbarten HR Elemente. Wiederholen Sie die Tastenkombination zum fernen Fokus Bereiche zu erreichen. "},{name:"Eingabehilfen",legend:"Drücken Sie ${a11yHelp}"}]}],backspace:"Rücktaste",tab:"Tab",enter:"Eingabe",shift:"Umschalt",ctrl:"Strg",alt:"Alt",pause:"Pause",capslock:"Feststell",escape:"Escape",pageUp:"Bild auf",pageDown:"Bild ab", 9legend:"Drücken Sie ${bold}"},{name:"Kursiv-Befehl",legend:"Drücken Sie ${italic}"},{name:"Unterstreichen-Befehl",legend:"Drücken Sie ${underline}"},{name:"Link-Befehl",legend:"Drücken Sie ${link}"},{name:"Werkzeugleiste einklappen-Befehl",legend:"Drücken Sie ${toolbarCollapse}"},{name:"Zugang bisheriger Fokussierung Raumbefehl ",legend:"Drücken Sie ${accessPreviousSpace} auf den am nächsten nicht erreichbar Fokus-Abstand vor die Einfügemarke zugreifen: zwei benachbarte HR-Elemente. Wiederholen Sie die Tastenkombination um entfernte Fokusräume zu erreichen. "},
10end:"Ende",home:"Pos1",leftArrow:"Linke Pfeiltaste",upArrow:"Obere Pfeiltaste",rightArrow:"Rechte Pfeiltaste",downArrow:"Untere Pfeiltaste",insert:"Einfügen","delete":"Entfernen",leftWindowKey:"Linke Windowstaste",rightWindowKey:"Rechte Windowstaste",selectKey:"Taste auswählen",numpad0:"Ziffernblock 0",numpad1:"Ziffernblock 1",numpad2:"Ziffernblock 2",numpad3:"Ziffernblock 3",numpad4:"Ziffernblock 4",numpad5:"Ziffernblock 5",numpad6:"Ziffernblock 6",numpad7:"Ziffernblock 7",numpad8:"Ziffernblock 8", 10{name:"Zugang nächster Schwerpunkt Raumbefehl ",legend:"Drücken Sie $ { accessNextSpace }, um den nächsten unerreichbar Fokus Leerzeichen nach dem Cursor zum Beispiel auf: zwei benachbarten HR Elemente. Wiederholen Sie die Tastenkombination zum fernen Fokus Bereiche zu erreichen. "},{name:"Eingabehilfen",legend:"Drücken Sie ${a11yHelp}"},{name:"Einfügen als unformatierter Text. ",legend:"Drücke ${pastetext}",legendEdge:"Drücke ${pastetext} und anschließend ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Feststell",
11escape:"Escape",pageUp:"Bild auf",pageDown:"Bild ab",leftArrow:"Linke Pfeiltaste",upArrow:"Obere Pfeiltaste",rightArrow:"Rechte Pfeiltaste",downArrow:"Untere Pfeiltaste",insert:"Einfügen",leftWindowKey:"Linke Windowstaste",rightWindowKey:"Rechte Windowstaste",selectKey:"Taste auswählen",numpad0:"Ziffernblock 0",numpad1:"Ziffernblock 1",numpad2:"Ziffernblock 2",numpad3:"Ziffernblock 3",numpad4:"Ziffernblock 4",numpad5:"Ziffernblock 5",numpad6:"Ziffernblock 6",numpad7:"Ziffernblock 7",numpad8:"Ziffernblock 8",
11numpad9:"Ziffernblock 9",multiply:"Multiplizieren",add:"Addieren",subtract:"Subtrahieren",decimalPoint:"Punkt",divide:"Dividieren",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Ziffernblock feststellen",scrollLock:"Rollen",semiColon:"Semikolon",equalSign:"Gleichheitszeichen",comma:"Komma",dash:"Bindestrich",period:"Punkt",forwardSlash:"Schrägstrich",graveAccent:"Gravis",openBracket:"Öffnende eckige Klammer",backSlash:"Rückwärtsgewandter Schrägstrich", 12numpad9:"Ziffernblock 9",multiply:"Multiplizieren",add:"Addieren",subtract:"Subtrahieren",decimalPoint:"Punkt",divide:"Dividieren",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Ziffernblock feststellen",scrollLock:"Rollen",semiColon:"Semikolon",equalSign:"Gleichheitszeichen",comma:"Komma",dash:"Bindestrich",period:"Punkt",forwardSlash:"Schrägstrich",graveAccent:"Gravis",openBracket:"Öffnende eckige Klammer",backSlash:"Rückwärtsgewandter Schrägstrich",
12closeBracket:"Schließende eckige Klammer",singleQuote:"Einfaches Anführungszeichen"}); \ No newline at end of file 13closeBracket:"Schließende eckige Klammer",singleQuote:"Einfaches Anführungszeichen"}); \ No newline at end of file
diff --git a/release/plugins/a11yhelp/dialogs/lang/el.js b/release/plugins/a11yhelp/dialogs/lang/el.js
index ae73cab..9eeb0b6 100644
--- a/release/plugins/a11yhelp/dialogs/lang/el.js
+++ b/release/plugins/a11yhelp/dialogs/lang/el.js
@@ -1,12 +1,12 @@
1/* 1/*
2 Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 For licensing, see LICENSE.md or http://ckeditor.com/license 3 For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang("a11yhelp","el",{title:"Οδηγίες Προσβασιμότητας",contents:"Περιεχόμενα Βοήθειας. Πατήστε ESC για κλείσιμο.",legend:[{name:"Γενικά",items:[{name:"Εργαλειοθήκη Επεξεργαστή",legend:"Πατήστε ${toolbarFocus} για να περιηγηθείτε στην γραμμή εργαλείων. Μετακινηθείτε ανάμεσα στις ομάδες της γραμμής εργαλείων με TAB και SHIFT+TAB. Μετακινηθείτε ανάμεσα στα κουμπιά εργαλείων με το ΔΕΞΙ ή ΑΡΙΣΤΕΡΟ ΒΕΛΑΚΙ. Πατήστε ΔΙΑΣΤΗΜΑ ή ENTER για να ενεργοποιήσετε το ενεργό κουμπί εργαλείου."},{name:"Παράθυρο Διαλόγου Επεξεργαστή", 5CKEDITOR.plugins.setLang("a11yhelp","el",{title:"Οδηγίες Προσβασιμότητας",contents:"Περιεχόμενα Βοήθειας. Πατήστε ESC για κλείσιμο.",legend:[{name:"Γενικά",items:[{name:"Εργαλειοθήκη Επεξεργαστή",legend:"Πατήστε ${toolbarFocus} για να περιηγηθείτε στην γραμμή εργαλείων. Μετακινηθείτε ανάμεσα στις ομάδες της γραμμής εργαλείων με TAB και SHIFT+TAB. Μετακινηθείτε ανάμεσα στα κουμπιά εργαλείων με το ΔΕΞΙ ή ΑΡΙΣΤΕΡΟ ΒΕΛΑΚΙ. Πατήστε ΔΙΑΣΤΗΜΑ ή ENTER για να ενεργοποιήσετε το ενεργό κουμπί εργαλείου."},{name:"Παράθυρο Διαλόγου Επεξεργαστή",
6legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."},{name:"Αναδυόμενο Μενού Επεξεργαστή",legend:"Πατήστε ${contextMenu} ή APPLICATION KEY για να ανοίξετε το αναδυόμενο μενού. Μετά μετακινηθείτε στην επόμενη επιλογή του μενού με TAB ή ΚΑΤΩ ΒΕΛΑΚΙ. Μετακινηθείτε στην προηγούμενη επιλογή με SHIFT+TAB ή το ΠΑΝΩ ΒΕΛΑΚΙ. Πατήστε ΔΙΑΣΤΗΜΑ ή ENTER για να επιλέξτε το τρέχων στοιχείο. Ανοίξτε το αναδυόμενο μενού της τρέχουσας επιλογής με ΔΙΑΣΤΗΜΑ ή ENTER ή το ΔΕΞΙ ΒΕΛΑΚΙ. Μεταβείτε πίσω στο αρχικό στοιχείο μενού με το ESC ή το ΑΡΙΣΤΕΡΟ ΒΕΛΑΚΙ. Κλείστε το αναδυόμενο μενού με ESC."}, 6legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."},{name:"Αναδυόμενο Μενού Επεξεργαστή",legend:"Πατήστε ${contextMenu} ή APPLICATION KEY για να ανοίξετε το αναδυόμενο μενού. Μετά μετακινηθείτε στην επόμενη επιλογή του μενού με TAB ή ΚΑΤΩ ΒΕΛΑΚΙ. Μετακινηθείτε στην προηγούμενη επιλογή με SHIFT+TAB ή το ΠΑΝΩ ΒΕΛΑΚΙ. Πατήστε ΔΙΑΣΤΗΜΑ ή ENTER για να επιλέξτε το τρέχων στοιχείο. Ανοίξτε το αναδυόμενο μενού της τρέχουσας επιλογής με ΔΙΑΣΤΗΜΑ ή ENTER ή το ΔΕΞΙ ΒΕΛΑΚΙ. Μεταβείτε πίσω στο αρχικό στοιχείο μενού με το ESC ή το ΑΡΙΣΤΕΡΟ ΒΕΛΑΚΙ. Κλείστε το αναδυόμενο μενού με ESC."},
7{name:"Κουτί Λίστας Επεξεργαστών",legend:"Μέσα σε ένα κουτί λίστας, μετακινηθείτε στο επόμενο στοιχείο με TAB ή ΚΑΤΩ ΒΕΛΑΚΙ. Μετακινηθείτε στο προηγούμενο στοιχείο με SHIFT+TAB ή το ΠΑΝΩ ΒΕΛΑΚΙ. Πατήστε ΔΙΑΣΤΗΜΑ ή ENTER για να επιλέξετε ένα στοιχείο. Πατήστε ESC για να κλείσετε το κουτί της λίστας."},{name:"Μπάρα Διαδρομών Στοιχείων Επεξεργαστή",legend:"Πατήστε ${elementsPathFocus} για να περιηγηθείτε στην μπάρα διαδρομών στοιχείων του επεξεργαστή. Μετακινηθείτε στο κουμπί του επόμενου στοιχείου με το TAB ή το ΔΕΞΙ ΒΕΛΑΚΙ. Μετακινηθείτε στο κουμπί του προηγούμενου στοιχείου με το SHIFT+TAB ή το ΑΡΙΣΤΕΡΟ ΒΕΛΑΚΙ. Πατήστε ΔΙΑΣΤΗΜΑ ή ENTER για να επιλέξετε το στοιχείο στον επεξεργαστή."}]}, 7{name:"Κουτί Λίστας Επεξεργαστών",legend:"Μέσα σε ένα κουτί λίστας, μετακινηθείτε στο επόμενο στοιχείο με TAB ή ΚΑΤΩ ΒΕΛΑΚΙ. Μετακινηθείτε στο προηγούμενο στοιχείο με SHIFT+TAB ή το ΠΑΝΩ ΒΕΛΑΚΙ. Πατήστε ΔΙΑΣΤΗΜΑ ή ENTER για να επιλέξετε ένα στοιχείο. Πατήστε ESC για να κλείσετε το κουτί της λίστας."},{name:"Μπάρα Διαδρομών Στοιχείων Επεξεργαστή",legend:"Πατήστε ${elementsPathFocus} για να περιηγηθείτε στην μπάρα διαδρομών στοιχείων του επεξεργαστή. Μετακινηθείτε στο κουμπί του επόμενου στοιχείου με το TAB ή το ΔΕΞΙ ΒΕΛΑΚΙ. Μετακινηθείτε στο κουμπί του προηγούμενου στοιχείου με το SHIFT+TAB ή το ΑΡΙΣΤΕΡΟ ΒΕΛΑΚΙ. Πατήστε ΔΙΑΣΤΗΜΑ ή ENTER για να επιλέξετε το στοιχείο στον επεξεργαστή."}]},
8{name:"Εντολές",items:[{name:"Εντολή αναίρεσης",legend:"Πατήστε ${undo}"},{name:"Εντολή επανάληψης",legend:"Πατήστε ${redo}"},{name:"Εντολή έντονης γραφής",legend:"Πατήστε ${bold}"},{name:"Εντολή πλάγιας γραφής",legend:"Πατήστε ${italic}"},{name:"Εντολή υπογράμμισης",legend:"Πατήστε ${underline}"},{name:"Εντολή συνδέσμου",legend:"Πατήστε ${link}"},{name:"Εντολή Σύμπτηξης Εργαλειοθήκης",legend:"Πατήστε ${toolbarCollapse}"},{name:"Πρόσβαση στην προηγούμενη εντολή του χώρου εστίασης ",legend:"Πατήστε ${accessPreviousSpace} για να έχετε πρόσβαση στον πιο κοντινό χώρο εστίασης πριν το δρομέα, για παράδειγμα: δύο παρακείμενα στοιχεία ΥΕ. Επαναλάβετε το συνδυασμό πλήκτρων για να φθάσετε στους χώρους μακρινής εστίασης. "}, 8{name:"Εντολές",items:[{name:"Εντολή αναίρεσης",legend:"Πατήστε ${undo}"},{name:"Εντολή επανάληψης",legend:"Πατήστε ${redo}"},{name:"Εντολή έντονης γραφής",legend:"Πατήστε ${bold}"},{name:"Εντολή πλάγιας γραφής",legend:"Πατήστε ${italic}"},{name:"Εντολή υπογράμμισης",legend:"Πατήστε ${underline}"},{name:"Εντολή συνδέσμου",legend:"Πατήστε ${link}"},{name:"Εντολή Σύμπτηξης Εργαλειοθήκης",legend:"Πατήστε ${toolbarCollapse}"},{name:"Πρόσβαση στην προηγούμενη εντολή του χώρου εστίασης ",legend:"Πατήστε ${accessPreviousSpace} για να έχετε πρόσβαση στον πιο κοντινό χώρο εστίασης πριν το δρομέα, για παράδειγμα: δύο παρακείμενα στοιχεία ΥΕ. Επαναλάβετε το συνδυασμό πλήκτρων για να φθάσετε στους χώρους μακρινής εστίασης. "},
9{name:"Πρόσβαση στην επόμενη εντολή του χώρου εστίασης",legend:"Πατήστε ${accessNextSpace} για να έχετε πρόσβαση στον πιο κοντινό χώρο εστίασης μετά το δρομέα, για παράδειγμα: δύο παρακείμενα στοιχεία ΥΕ. Επαναλάβετε το συνδυασμό πλήκτρων για τους χώρους μακρινής εστίασης. "},{name:"Βοήθεια Προσβασιμότητας",legend:"Πατήστε ${a11yHelp}"}]}],backspace:"Backspace",tab:"Tab",enter:"Enter",shift:"Shift",ctrl:"Ctrl",alt:"Alt",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down", 9{name:"Πρόσβαση στην επόμενη εντολή του χώρου εστίασης",legend:"Πατήστε ${accessNextSpace} για να έχετε πρόσβαση στον πιο κοντινό χώρο εστίασης μετά το δρομέα, για παράδειγμα: δύο παρακείμενα στοιχεία ΥΕ. Επαναλάβετε το συνδυασμό πλήκτρων για τους χώρους μακρινής εστίασης. "},{name:"Βοήθεια Προσβασιμότητας",legend:"Πατήστε ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Caps Lock",escape:"Escape",
10end:"End",home:"Home",leftArrow:"Αριστερό Βέλος",upArrow:"Πάνω Βέλος",rightArrow:"Δεξί Βέλος",downArrow:"Κάτω Βέλος",insert:"Insert ","delete":"Delete",leftWindowKey:"Αριστερό Πλήκτρο Windows",rightWindowKey:"Δεξί Πλήκτρο Windows",selectKey:"Πλήκτρο Select",numpad0:"Αριθμητικό πληκτρολόγιο 0",numpad1:"Αριθμητικό Πληκτρολόγιο 1",numpad2:"Αριθμητικό πληκτρολόγιο 2",numpad3:"Αριθμητικό πληκτρολόγιο 3",numpad4:"Αριθμητικό πληκτρολόγιο 4",numpad5:"Αριθμητικό πληκτρολόγιο 5",numpad6:"Αριθμητικό πληκτρολόγιο 6", 10pageUp:"Page Up",pageDown:"Page Down",leftArrow:"Αριστερό Βέλος",upArrow:"Πάνω Βέλος",rightArrow:"Δεξί Βέλος",downArrow:"Κάτω Βέλος",insert:"Insert ",leftWindowKey:"Αριστερό Πλήκτρο Windows",rightWindowKey:"Δεξί Πλήκτρο Windows",selectKey:"Πλήκτρο Select",numpad0:"Αριθμητικό πληκτρολόγιο 0",numpad1:"Αριθμητικό Πληκτρολόγιο 1",numpad2:"Αριθμητικό πληκτρολόγιο 2",numpad3:"Αριθμητικό πληκτρολόγιο 3",numpad4:"Αριθμητικό πληκτρολόγιο 4",numpad5:"Αριθμητικό πληκτρολόγιο 5",numpad6:"Αριθμητικό πληκτρολόγιο 6",
11numpad7:"Αριθμητικό πληκτρολόγιο 7",numpad8:"Αριθμητικό πληκτρολόγιο 8",numpad9:"Αριθμητικό πληκτρολόγιο 9",multiply:"Πολλαπλασιασμός",add:"Πρόσθεση",subtract:"Αφαίρεση",decimalPoint:"Υποδιαστολή",divide:"Διαίρεση",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"6",f7:"7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Ερωτηματικό",equalSign:"Σύμβολο Ισότητας",comma:"Κόμμα",dash:"Παύλα",period:"Τελεία",forwardSlash:"Κάθετος",graveAccent:"Βαρεία",openBracket:"Άνοιγμα Παρένθεσης", 11numpad7:"Αριθμητικό πληκτρολόγιο 7",numpad8:"Αριθμητικό πληκτρολόγιο 8",numpad9:"Αριθμητικό πληκτρολόγιο 9",multiply:"Πολλαπλασιασμός",add:"Πρόσθεση",subtract:"Αφαίρεση",decimalPoint:"Υποδιαστολή",divide:"Διαίρεση",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"6",f7:"7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Ερωτηματικό",equalSign:"Σύμβολο Ισότητας",comma:"Κόμμα",dash:"Παύλα",period:"Τελεία",forwardSlash:"Κάθετος",graveAccent:"Βαρεία",openBracket:"Άνοιγμα Παρένθεσης",
12backSlash:"Ανάστροφη Κάθετος",closeBracket:"Κλείσιμο Παρένθεσης",singleQuote:"Απόστροφος"}); \ No newline at end of file 12backSlash:"Ανάστροφη Κάθετος",closeBracket:"Κλείσιμο Παρένθεσης",singleQuote:"Απόστροφος"}); \ No newline at end of file
diff --git a/release/plugins/a11yhelp/dialogs/lang/en-gb.js b/release/plugins/a11yhelp/dialogs/lang/en-gb.js
index a5da937..9b0b32d 100644
--- a/release/plugins/a11yhelp/dialogs/lang/en-gb.js
+++ b/release/plugins/a11yhelp/dialogs/lang/en-gb.js
@@ -1,11 +1,11 @@
1/* 1/*
2 Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 For licensing, see LICENSE.md or http://ckeditor.com/license 3 For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang("a11yhelp","en-gb",{title:"Accessibility Instructions",contents:"Help Contents. To close this dialog press ESC.",legend:[{name:"General",items:[{name:"Editor Toolbar",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"Editor Dialog",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."}, 5CKEDITOR.plugins.setLang("a11yhelp","en-gb",{title:"Accessibility Instructions",contents:"Help Contents. To close this dialog press ESC.",legend:[{name:"General",items:[{name:"Editor Toolbar",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"Editor Dialog",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."},
6{name:"Editor Context Menu",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."},{name:"Editor List Box",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."}, 6{name:"Editor Context Menu",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."},{name:"Editor List Box",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."},
7{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]},{name:"Commands",items:[{name:" Undo command",legend:"Press ${undo}"},{name:" Redo command",legend:"Press ${redo}"},{name:" Bold command",legend:"Press ${bold}"},{name:" Italic command",legend:"Press ${italic}"},{name:" Underline command", 7{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]},{name:"Commands",items:[{name:" Undo command",legend:"Press ${undo}"},{name:" Redo command",legend:"Press ${redo}"},{name:" Bold command",legend:"Press ${bold}"},{name:" Italic command",legend:"Press ${italic}"},{name:" Underline command",
8legend:"Press ${underline}"},{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, 8legend:"Press ${underline}"},{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},
9{name:" Accessibility Help",legend:"Press ${a11yHelp}"}]}],backspace:"Backspace",tab:"Tab",enter:"Enter",shift:"Shift",ctrl:"Ctrl",alt:"Alt",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",end:"End",home:"Home",leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert","delete":"Delete",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1", 9{name:" Accessibility Help",legend:"Press ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1",
10numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash", 10numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash",
11graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"}); \ No newline at end of file 11graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"}); \ No newline at end of file
diff --git a/release/plugins/a11yhelp/dialogs/lang/en.js b/release/plugins/a11yhelp/dialogs/lang/en.js
index 3a62e4a..7b10baf 100644
--- a/release/plugins/a11yhelp/dialogs/lang/en.js
+++ b/release/plugins/a11yhelp/dialogs/lang/en.js
@@ -1,11 +1,11 @@
1/* 1/*
2 Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 For licensing, see LICENSE.md or http://ckeditor.com/license 3 For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang("a11yhelp","en",{title:"Accessibility Instructions",contents:"Help Contents. To close this dialog press ESC.",legend:[{name:"General",items:[{name:"Editor Toolbar",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"Editor Dialog",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."}, 5CKEDITOR.plugins.setLang("a11yhelp","en",{title:"Accessibility Instructions",contents:"Help Contents. To close this dialog press ESC.",legend:[{name:"General",items:[{name:"Editor Toolbar",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"Editor Dialog",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."},
6{name:"Editor Context Menu",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."},{name:"Editor List Box",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."}, 6{name:"Editor Context Menu",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."},{name:"Editor List Box",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."},
7{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]},{name:"Commands",items:[{name:" Undo command",legend:"Press ${undo}"},{name:" Redo command",legend:"Press ${redo}"},{name:" Bold command",legend:"Press ${bold}"},{name:" Italic command",legend:"Press ${italic}"},{name:" Underline command", 7{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]},{name:"Commands",items:[{name:" Undo command",legend:"Press ${undo}"},{name:" Redo command",legend:"Press ${redo}"},{name:" Bold command",legend:"Press ${bold}"},{name:" Italic command",legend:"Press ${italic}"},{name:" Underline command",
8legend:"Press ${underline}"},{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, 8legend:"Press ${underline}"},{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},
9{name:" Accessibility Help",legend:"Press ${a11yHelp}"}]}],backspace:"Backspace",tab:"Tab",enter:"Enter",shift:"Shift",ctrl:"Ctrl",alt:"Alt",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",end:"End",home:"Home",leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert","delete":"Delete",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1", 9{name:" Accessibility Help",legend:"Press ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1",
10numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash", 10numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash",
11graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"}); \ No newline at end of file 11graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"}); \ No newline at end of file
diff --git a/release/plugins/a11yhelp/dialogs/lang/eo.js b/release/plugins/a11yhelp/dialogs/lang/eo.js
index 8c798a7..426be40 100644
--- a/release/plugins/a11yhelp/dialogs/lang/eo.js
+++ b/release/plugins/a11yhelp/dialogs/lang/eo.js
@@ -1,5 +1,5 @@
1/* 1/*
2 Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 For licensing, see LICENSE.md or http://ckeditor.com/license 3 For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang("a11yhelp","eo",{title:"Uzindikoj pri atingeblo",contents:"Helpilenhavo. Por fermi tiun dialogon, premu la ESKAPAN klavon.",legend:[{name:"Ĝeneralaĵoj",items:[{name:"Ilbreto de la redaktilo",legend:"Premu ${toolbarFocus} por atingi la ilbreton. Moviĝu al la sekva aŭ antaŭa grupoj de la ilbreto per la klavoj TABA kaj MAJUSKLIGA+TABA. Moviĝu al la sekva aŭ antaŭa butonoj de la ilbreto per la klavoj SAGO DEKSTREN kaj SAGO MALDEKSTREN. Premu la SPACETklavon aŭ la ENENklavon por aktivigi la ilbretbutonon."}, 5CKEDITOR.plugins.setLang("a11yhelp","eo",{title:"Uzindikoj pri atingeblo",contents:"Helpilenhavo. Por fermi tiun dialogon, premu la ESKAPAN klavon.",legend:[{name:"Ĝeneralaĵoj",items:[{name:"Ilbreto de la redaktilo",legend:"Premu ${toolbarFocus} por atingi la ilbreton. Moviĝu al la sekva aŭ antaŭa grupoj de la ilbreto per la klavoj TABA kaj MAJUSKLIGA+TABA. Moviĝu al la sekva aŭ antaŭa butonoj de la ilbreto per la klavoj SAGO DEKSTREN kaj SAGO MALDEKSTREN. Premu la SPACETklavon aŭ la ENENklavon por aktivigi la ilbretbutonon."},
@@ -7,7 +7,6 @@ CKEDITOR.plugins.setLang("a11yhelp","eo",{title:"Uzindikoj pri atingeblo",conten
7{name:"Kunteksta menuo de la redaktilo",legend:"Premu ${contextMenu} aŭ entajpu la KLAVKOMBINAĴON por malfermi la kuntekstan menuon. Poste moviĝu al la sekva opcio de la menuo per la klavoj TABA aŭ SAGO SUBEN. Moviĝu al la antaŭa opcio per la klavoj MAJUSKLGA + TABA aŭ SAGO SUPREN. Premu la SPACETklavon aŭ ENENklavon por selekti la menuopcion. Malfermu la submenuon de la kuranta opcio per la SPACETklavo aŭ la ENENklavo aŭ la SAGO DEKSTREN. Revenu al la elemento de la patra menuo per la klavoj ESKAPA aŭ SAGO MALDEKSTREN. Fermu la kuntekstan menuon per la ESKAPA klavo."}, 7{name:"Kunteksta menuo de la redaktilo",legend:"Premu ${contextMenu} aŭ entajpu la KLAVKOMBINAĴON por malfermi la kuntekstan menuon. Poste moviĝu al la sekva opcio de la menuo per la klavoj TABA aŭ SAGO SUBEN. Moviĝu al la antaŭa opcio per la klavoj MAJUSKLGA + TABA aŭ SAGO SUPREN. Premu la SPACETklavon aŭ ENENklavon por selekti la menuopcion. Malfermu la submenuon de la kuranta opcio per la SPACETklavo aŭ la ENENklavo aŭ la SAGO DEKSTREN. Revenu al la elemento de la patra menuo per la klavoj ESKAPA aŭ SAGO MALDEKSTREN. Fermu la kuntekstan menuon per la ESKAPA klavo."},
8{name:"Fallisto de la redaktilo",legend:"En fallisto, moviĝu al la sekva listelemento per la klavoj TABA aŭ SAGO SUBEN. Moviĝu al la antaŭa listelemento per la klavoj MAJUSKLIGA+TABA aŭ SAGO SUPREN. Premu la SPACETklavon aŭ ENENklavon por selekti la opcion en la listo. Premu la ESKAPAN klavon por fermi la falmenuon."},{name:"Breto indikanta la vojon al la redaktilelementoj",legend:"Premu ${elementsPathFocus} por navigi al la breto indikanta la vojon al la redaktilelementoj. Moviĝu al la butono de la sekva elemento per la klavoj TABA aŭ SAGO DEKSTREN. Moviĝu al la butono de la antaŭa elemento per la klavoj MAJUSKLIGA+TABA aŭ SAGO MALDEKSTREN. Premu la SPACETklavon aŭ ENENklavon por selekti la elementon en la redaktilo."}]}, 8{name:"Fallisto de la redaktilo",legend:"En fallisto, moviĝu al la sekva listelemento per la klavoj TABA aŭ SAGO SUBEN. Moviĝu al la antaŭa listelemento per la klavoj MAJUSKLIGA+TABA aŭ SAGO SUPREN. Premu la SPACETklavon aŭ ENENklavon por selekti la opcion en la listo. Premu la ESKAPAN klavon por fermi la falmenuon."},{name:"Breto indikanta la vojon al la redaktilelementoj",legend:"Premu ${elementsPathFocus} por navigi al la breto indikanta la vojon al la redaktilelementoj. Moviĝu al la butono de la sekva elemento per la klavoj TABA aŭ SAGO DEKSTREN. Moviĝu al la butono de la antaŭa elemento per la klavoj MAJUSKLIGA+TABA aŭ SAGO MALDEKSTREN. Premu la SPACETklavon aŭ ENENklavon por selekti la elementon en la redaktilo."}]},
9{name:"Komandoj",items:[{name:"Komando malfari",legend:"Premu ${undo}"},{name:"Komando refari",legend:"Premu ${redo}"},{name:"Komando grasa",legend:"Premu ${bold}"},{name:"Komando kursiva",legend:"Premu ${italic}"},{name:"Komando substreki",legend:"Premu ${underline}"},{name:"Komando ligilo",legend:"Premu ${link}"},{name:"Komando faldi la ilbreton",legend:"Premu ${toolbarCollapse}"},{name:"Komando por atingi la antaŭan fokusan spacon",legend:"Press ${accessPreviousSpace} por atingi la plej proksiman neatingeblan fokusan spacon antaŭ la kursoro, ekzemple : du kuntuŝiĝajn HR elementojn. Ripetu la klavkombinaĵon por atingi malproksimajn fokusajn spacojn."}, 9{name:"Komandoj",items:[{name:"Komando malfari",legend:"Premu ${undo}"},{name:"Komando refari",legend:"Premu ${redo}"},{name:"Komando grasa",legend:"Premu ${bold}"},{name:"Komando kursiva",legend:"Premu ${italic}"},{name:"Komando substreki",legend:"Premu ${underline}"},{name:"Komando ligilo",legend:"Premu ${link}"},{name:"Komando faldi la ilbreton",legend:"Premu ${toolbarCollapse}"},{name:"Komando por atingi la antaŭan fokusan spacon",legend:"Press ${accessPreviousSpace} por atingi la plej proksiman neatingeblan fokusan spacon antaŭ la kursoro, ekzemple : du kuntuŝiĝajn HR elementojn. Ripetu la klavkombinaĵon por atingi malproksimajn fokusajn spacojn."},
10{name:"Komando por atingi la sekvan fokusan spacon",legend:"Press ${accessNextSpace} por atingi la plej proksiman neatingeblan fokusan spacon post la kursoro, ekzemple : du kuntuŝiĝajn HR elementojn. Ripetu la klavkombinajôn por atingi malproksimajn fokusajn spacojn"},{name:"Helpilo pri atingeblo",legend:"Premu ${a11yHelp}"}]}],backspace:"Retropaŝo",tab:"Tabo",enter:"Enigi",shift:"Registrumo",ctrl:"Stirklavo",alt:"Alt-klavo",pause:"Paŭzo",capslock:"Majuskla baskulo",escape:"Eskapa klavo",pageUp:"Antaŭa Paĝo", 10{name:"Komando por atingi la sekvan fokusan spacon",legend:"Press ${accessNextSpace} por atingi la plej proksiman neatingeblan fokusan spacon post la kursoro, ekzemple : du kuntuŝiĝajn HR elementojn. Ripetu la klavkombinajôn por atingi malproksimajn fokusajn spacojn"},{name:"Helpilo pri atingeblo",legend:"Premu ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tabo",pause:"Paŭzo",capslock:"Majuskla baskulo",escape:"Eskapa klavo",
11pageDown:"Sekva Paĝo",end:"Fino",home:"Hejmo",leftArrow:"Sago Maldekstren",upArrow:"Sago Supren",rightArrow:"Sago Dekstren",downArrow:"Sago Suben",insert:"Enmeti","delete":"Forigi",leftWindowKey:"Maldekstra Windows-klavo",rightWindowKey:"Dekstra Windows-klavo",selectKey:"Selektklavo",numpad0:"Nombra Klavaro 0",numpad1:"Nombra Klavaro 1",numpad2:"Nombra Klavaro 2",numpad3:"Nombra Klavaro 3",numpad4:"Nombra Klavaro 4",numpad5:"Nombra Klavaro 5",numpad6:"Nombra Klavaro 6",numpad7:"Nombra Klavaro 7", 11pageUp:"Antaŭa Paĝo",pageDown:"Sekva Paĝo",leftArrow:"Sago Maldekstren",upArrow:"Sago Supren",rightArrow:"Sago Dekstren",downArrow:"Sago Suben",insert:"Enmeti",leftWindowKey:"Maldekstra Windows-klavo",rightWindowKey:"Dekstra Windows-klavo",selectKey:"Selektklavo",numpad0:"Nombra Klavaro 0",numpad1:"Nombra Klavaro 1",numpad2:"Nombra Klavaro 2",numpad3:"Nombra Klavaro 3",numpad4:"Nombra Klavaro 4",numpad5:"Nombra Klavaro 5",numpad6:"Nombra Klavaro 6",numpad7:"Nombra Klavaro 7",numpad8:"Nombra Klavaro 8",
12numpad8:"Nombra Klavaro 8",numpad9:"Nombra Klavaro 9",multiply:"Obligi",add:"Almeti",subtract:"Subtrahi",decimalPoint:"Dekuma Punkto",divide:"Dividi",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Nombra Baskulo",scrollLock:"Ruluma Baskulo",semiColon:"Punktokomo",equalSign:"Egalsigno",comma:"Komo",dash:"Haltostreko",period:"Punkto",forwardSlash:"Oblikvo",graveAccent:"Malakuto",openBracket:"Malferma Krampo",backSlash:"Retroklino",closeBracket:"Ferma Krampo", 12numpad9:"Nombra Klavaro 9",multiply:"Obligi",add:"Almeti",subtract:"Subtrahi",decimalPoint:"Dekuma Punkto",divide:"Dividi",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Nombra Baskulo",scrollLock:"Ruluma Baskulo",semiColon:"Punktokomo",equalSign:"Egalsigno",comma:"Komo",dash:"Haltostreko",period:"Punkto",forwardSlash:"Oblikvo",graveAccent:"Malakuto",openBracket:"Malferma Krampo",backSlash:"Retroklino",closeBracket:"Ferma Krampo",singleQuote:"Citilo"}); \ No newline at end of file
13singleQuote:"Citilo"}); \ No newline at end of file
diff --git a/release/plugins/a11yhelp/dialogs/lang/es-mx.js b/release/plugins/a11yhelp/dialogs/lang/es-mx.js
new file mode 100644
index 0000000..784f0e0
--- /dev/null
+++ b/release/plugins/a11yhelp/dialogs/lang/es-mx.js
@@ -0,0 +1,13 @@
1/*
2 Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang("a11yhelp","es-mx",{title:"Instrucciones de accesibilidad",contents:"Contenidos de ayuda. Para cerrar este cuadro de diálogo presione ESC.",legend:[{name:"General",items:[{name:"Barra de herramientas del editor",legend:"Presione ${toolbarFocus} para navegar a la barra de herramientas. Desplácese al grupo de barras de herramientas siguiente y anterior con SHIFT + TAB. Desplácese al botón siguiente y anterior de la barra de herramientas con FLECHA DERECHA o FLECHA IZQUIERDA. Presione SPACE o ENTER para activar el botón de la barra de herramientas."},
6{name:"Editor de diálogo",legend:"Dentro de un cuadro de diálogo, pulse TAB para desplazarse hasta el siguiente elemento de diálogo, pulse MAYÚS + TAB para desplazarse al elemento de diálogo anterior, pulse ENTER para enviar el diálogo, pulse ESC para cancelar el diálogo. Cuando un cuadro de diálogo tiene varias pestañas, se puede acceder a la lista de pestañas con ALT + F10 o con TAB como parte del orden de tabulación del diálogo. Con la lista de tabuladores enfocada, mueva a la pestaña siguiente y anterior con las flechas DERECHA y IZQUIERDA, respectivamente."},
7{name:"Menú contextual del editor",legend:"Presione ${contextMenu} o CLAVE DE APLICACIÓN para abrir el menú contextual. A continuación, vaya a la siguiente opción del menú con TAB o DOWN ARROW. Desplácese a la opción anterior con SHIFT + TAB o FLECHA ARRIBA. Presione SPACE o ENTER para seleccionar la opción del menú. Abra el submenú de la opción actual con ESPACIO o ENTER o FLECHA DERECHA. Vuelva al elemento de menú principal con ESC o FLECHA IZQUIERDA. Cerrar el menú contextual con ESC."},{name:"Editor de cuadro de lista",
8legend:"Dentro de un cuadro de lista, mueva al siguiente elemento de lista con TAB O FLECHA ABAJO. Mueva al elemento anterior de la lista con MAYÚS + TAB o FLECHA ARRIBA. Presione SPACE o ENTER para seleccionar la opción de lista. Presione ESC para cerrar el cuadro de lista."},{name:"Barra de ruta del elemento del editor",legend:"Presione ${elementsPathFocus} para navegar a la barra de ruta de elementos. Desplácese al siguiente botón de elemento con TAB o FLECHA DERECHA. Desplácese al botón anterior con SHIFT + TAB o FLECHA IZQUIERDA. Presione SPACE o ENTER para seleccionar el elemento en el editor."}]},
9{name:"Comandos",items:[{name:"Comando deshacer",legend:"Presiona ${undo}"},{name:"Comando rehacer",legend:"Presiona ${redo}"},{name:"Comando negrita",legend:"Presiona ${bold}"},{name:"Comando cursiva",legend:"Presiona {italic}"},{name:"Comando subrayado",legend:"Presiona ${underline}"},{name:"Comando enlace",legend:"Presiona ${link}"},{name:"Comando colapsar barra de herramientas",legend:"Presiona ${toolbarCollapse}"},{name:"Acceda al comando de espacio de enfoque anterior",legend:"Presione ${accessPreviousSpace} para acceder al espacio de enfoque inaccesible más cercano antes del cursor, por ejemplo: dos elementos HR adyacentes. Repita la combinación de teclas para alcanzar los espacios de enfoque distantes."},
10{name:"Acceder al siguiente comando de espacio de enfoque",legend:"Pulse ${accessNextSpace} para acceder al espacio de enfoque más cercano inaccesible después del cursor, por ejemplo: dos elementos HR adyacentes. Repita la combinación de teclas para alcanzar los espacios de enfoque distantes."},{name:"Ayuda de accesibilidad",legend:"Presiona ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tabulador",pause:"Pausa",
11capslock:"Mayúsculas",escape:"Escape",pageUp:"Página arriba",pageDown:"Página abajo",leftArrow:"Flecha izquierda",upArrow:"Flecha arriba",rightArrow:"Flecha derecha",downArrow:"Flecha abajo",insert:"Insertar",leftWindowKey:"Tecla izquierda de Windows",rightWindowKey:"Tecla derecha de Windows",selectKey:"Tecla de selección",numpad0:"Teclado numérico 0",numpad1:"Teclado numérico 1",numpad2:"Teclado numérico 2",numpad3:"Teclado numérico 3",numpad4:"Teclado numérico 4",numpad5:"Teclado numérico 5",numpad6:"Teclado numérico 6",
12numpad7:"Teclado numérico 7",numpad8:"Teclado numérico 8",numpad9:"Teclado numérico 9",multiply:"Multiplicar",add:"Sumar",subtract:"Restar",decimalPoint:"Punto decimal",divide:"Dividir",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Números",scrollLock:"Bloqueo de desplazamiento",semiColon:"punto y coma",equalSign:"Signo igual",comma:"Coma",dash:"Guión",period:"Espacio",forwardSlash:"Diagonal",graveAccent:"Acento grave",openBracket:"Abrir paréntesis",
13backSlash:"Diagonal invertida",closeBracket:"Cerrar paréntesis",singleQuote:"Comillas simple"}); \ No newline at end of file
diff --git a/release/plugins/a11yhelp/dialogs/lang/es.js b/release/plugins/a11yhelp/dialogs/lang/es.js
index e399793..b4708ba 100644
--- a/release/plugins/a11yhelp/dialogs/lang/es.js
+++ b/release/plugins/a11yhelp/dialogs/lang/es.js
@@ -1,12 +1,13 @@
1/* 1/*
2 Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 For licensing, see LICENSE.md or http://ckeditor.com/license 3 For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang("a11yhelp","es",{title:"Instrucciones de accesibilidad",contents:"Ayuda. Para cerrar presione ESC.",legend:[{name:"General",items:[{name:"Barra de herramientas del editor",legend:'Presiona ${toolbarFocus} para navegar por la barra de herramientas. Para moverse por los distintos grupos de herramientas usa las teclas TAB y MAY+TAB. Para moverse por las distintas herramientas usa FLECHA DERECHA o FECHA IZQUIERDA. Presiona "espacio" o "intro" para activar la herramienta.'},{name:"Editor de diálogo", 5CKEDITOR.plugins.setLang("a11yhelp","es",{title:"Instrucciones de accesibilidad",contents:"Ayuda. Para cerrar presione ESC.",legend:[{name:"General",items:[{name:"Barra de herramientas del editor",legend:'Presiona ${toolbarFocus} para navegar por la barra de herramientas. Para moverse por los distintos grupos de herramientas usa las teclas TAB y MAY+TAB. Para moverse por las distintas herramientas usa FLECHA DERECHA o FECHA IZQUIERDA. Presiona "espacio" o "intro" para activar la herramienta.'},{name:"Editor de diálogo",
6legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."},{name:"Editor del menú contextual",legend:"Presiona ${contextMenu} o TECLA MENÚ para abrir el menú contextual. Entonces muévete a la siguiente opción del menú con TAB o FLECHA ABAJO. Muévete a la opción previa con SHIFT + TAB o FLECHA ARRIBA. Presiona ESPACIO o ENTER para seleccionar la opción del menú. Abre el submenú de la opción actual con ESPACIO o ENTER o FLECHA DERECHA. Regresa al elemento padre del menú con ESC o FLECHA IZQUIERDA. Cierra el menú contextual con ESC."}, 6legend:"Dentro del diálogo, presione TAB para navegar a los siguientes elementos de diálogo, presione SHIFT+TAB para moverse a los anteriores elementos de diálogo, presione ENTER para enviar el diálogo, presiona ESC para cancelar el diálogo. Cuando el diálogo tiene multiples pestañas, la lista de pestañas puede ser abarcada con ALT + F10 or con TAB como parte del orden de pestañas del diálogo. ECon la pestaña enfocada, puede moverse a la siguiente o anterior pestaña con las FLECHAS IZQUIRDA y DERECHA respectivamente."},
7{name:"Lista del Editor",legend:"Dentro de una lista, te mueves al siguiente elemento de la lista con TAB o FLECHA ABAJO. Te mueves al elemento previo de la lista con SHIFT+TAB o FLECHA ARRIBA. Presiona ESPACIO o ENTER para elegir la opción de la lista. Presiona ESC para cerrar la lista."},{name:"Barra de Ruta del Elemento en el Editor",legend:"Presiona ${elementsPathFocus} para navegar a los elementos de la barra de ruta. Te mueves al siguiente elemento botón con TAB o FLECHA DERECHA. Te mueves al botón previo con SHIFT+TAB o FLECHA IZQUIERDA. Presiona ESPACIO o ENTER para seleccionar el elemento en el editor."}]}, 7{name:"Editor del menú contextual",legend:"Presiona ${contextMenu} o TECLA MENÚ para abrir el menú contextual. Entonces muévete a la siguiente opción del menú con TAB o FLECHA ABAJO. Muévete a la opción previa con SHIFT + TAB o FLECHA ARRIBA. Presiona ESPACIO o ENTER para seleccionar la opción del menú. Abre el submenú de la opción actual con ESPACIO o ENTER o FLECHA DERECHA. Regresa al elemento padre del menú con ESC o FLECHA IZQUIERDA. Cierra el menú contextual con ESC."},{name:"Lista del Editor",
8legend:"Dentro de una lista, te mueves al siguiente elemento de la lista con TAB o FLECHA ABAJO. Te mueves al elemento previo de la lista con SHIFT+TAB o FLECHA ARRIBA. Presiona ESPACIO o ENTER para elegir la opción de la lista. Presiona ESC para cerrar la lista."},{name:"Barra de Ruta del Elemento en el Editor",legend:"Presiona ${elementsPathFocus} para navegar a los elementos de la barra de ruta. Te mueves al siguiente elemento botón con TAB o FLECHA DERECHA. Te mueves al botón previo con SHIFT+TAB o FLECHA IZQUIERDA. Presiona ESPACIO o ENTER para seleccionar el elemento en el editor."}]},
8{name:"Comandos",items:[{name:"Comando deshacer",legend:"Presiona ${undo}"},{name:"Comando rehacer",legend:"Presiona ${redo}"},{name:"Comando negrita",legend:"Presiona ${bold}"},{name:"Comando itálica",legend:"Presiona ${italic}"},{name:"Comando subrayar",legend:"Presiona ${underline}"},{name:"Comando liga",legend:"Presiona ${liga}"},{name:"Comando colapsar barra de herramientas",legend:"Presiona ${toolbarCollapse}"},{name:"Comando accesar el anterior espacio de foco",legend:"Presiona ${accessPreviousSpace} para accesar el espacio de foco no disponible más cercano anterior al cursor, por ejemplo: dos elementos HR adyacentes. Repite la combinación de teclas para alcanzar espacios de foco distantes."}, 9{name:"Comandos",items:[{name:"Comando deshacer",legend:"Presiona ${undo}"},{name:"Comando rehacer",legend:"Presiona ${redo}"},{name:"Comando negrita",legend:"Presiona ${bold}"},{name:"Comando itálica",legend:"Presiona ${italic}"},{name:"Comando subrayar",legend:"Presiona ${underline}"},{name:"Comando liga",legend:"Presiona ${liga}"},{name:"Comando colapsar barra de herramientas",legend:"Presiona ${toolbarCollapse}"},{name:"Comando accesar el anterior espacio de foco",legend:"Presiona ${accessPreviousSpace} para accesar el espacio de foco no disponible más cercano anterior al cursor, por ejemplo: dos elementos HR adyacentes. Repite la combinación de teclas para alcanzar espacios de foco distantes."},
9{name:"Comando accesar el siguiente spacio de foco",legend:"Presiona ${accessNextSpace} para accesar el espacio de foco no disponible más cercano después del cursor, por ejemplo: dos elementos HR adyacentes. Repite la combinación de teclas para alcanzar espacios de foco distantes."},{name:"Ayuda de Accesibilidad",legend:"Presiona ${a11yHelp}"}]}],backspace:"Retroceso",tab:"Tabulador",enter:"Ingresar",shift:"Mayús.",ctrl:"Ctrl",alt:"Alt",pause:"Pausa",capslock:"Bloq. Mayús.",escape:"Escape",pageUp:"Regresar Página", 10{name:"Comando accesar el siguiente spacio de foco",legend:"Presiona ${accessNextSpace} para accesar el espacio de foco no disponible más cercano después del cursor, por ejemplo: dos elementos HR adyacentes. Repite la combinación de teclas para alcanzar espacios de foco distantes."},{name:"Ayuda de Accesibilidad",legend:"Presiona ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tabulador",pause:"Pausa",capslock:"Bloq. Mayús.",
10pageDown:"Avanzar Página",end:"Fin",home:"Inicio",leftArrow:"Flecha Izquierda",upArrow:"Flecha Arriba",rightArrow:"Flecha Derecha",downArrow:"Flecha Abajo",insert:"Insertar","delete":"Suprimir",leftWindowKey:"Tecla Windows Izquierda",rightWindowKey:"Tecla Windows Derecha",selectKey:"Tecla de Selección",numpad0:"Tecla 0 del teclado numérico",numpad1:"Tecla 1 del teclado numérico",numpad2:"Tecla 2 del teclado numérico",numpad3:"Tecla 3 del teclado numérico",numpad4:"Tecla 4 del teclado numérico",numpad5:"Tecla 5 del teclado numérico", 11escape:"Escape",pageUp:"Regresar Página",pageDown:"Avanzar Página",leftArrow:"Flecha Izquierda",upArrow:"Flecha Arriba",rightArrow:"Flecha Derecha",downArrow:"Flecha Abajo",insert:"Insertar",leftWindowKey:"Tecla Windows Izquierda",rightWindowKey:"Tecla Windows Derecha",selectKey:"Tecla de Selección",numpad0:"Tecla 0 del teclado numérico",numpad1:"Tecla 1 del teclado numérico",numpad2:"Tecla 2 del teclado numérico",numpad3:"Tecla 3 del teclado numérico",numpad4:"Tecla 4 del teclado numérico",numpad5:"Tecla 5 del teclado numérico",
11numpad6:"Tecla 6 del teclado numérico",numpad7:"Tecla 7 del teclado numérico",numpad8:"Tecla 8 del teclado numérico",numpad9:"Tecla 9 del teclado numérico",multiply:"Multiplicar",add:"Sumar",subtract:"Restar",decimalPoint:"Punto Decimal",divide:"Dividir",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Punto y coma",equalSign:"Signo de Igual",comma:"Coma",dash:"Guión",period:"Punto",forwardSlash:"Diagonal", 12numpad6:"Tecla 6 del teclado numérico",numpad7:"Tecla 7 del teclado numérico",numpad8:"Tecla 8 del teclado numérico",numpad9:"Tecla 9 del teclado numérico",multiply:"Multiplicar",add:"Sumar",subtract:"Restar",decimalPoint:"Punto Decimal",divide:"Dividir",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Punto y coma",equalSign:"Signo de Igual",comma:"Coma",dash:"Guión",period:"Punto",forwardSlash:"Diagonal",
12graveAccent:"Acento Grave",openBracket:"Abrir llave",backSlash:"Diagonal Invertida",closeBracket:"Cerrar llave",singleQuote:"Comillas simples"}); \ No newline at end of file 13graveAccent:"Acento Grave",openBracket:"Abrir llave",backSlash:"Diagonal Invertida",closeBracket:"Cerrar llave",singleQuote:"Comillas simples"}); \ No newline at end of file
diff --git a/release/plugins/a11yhelp/dialogs/lang/et.js b/release/plugins/a11yhelp/dialogs/lang/et.js
index 9fded4c..aa2c791 100644
--- a/release/plugins/a11yhelp/dialogs/lang/et.js
+++ b/release/plugins/a11yhelp/dialogs/lang/et.js
@@ -1,11 +1,11 @@
1/* 1/*
2 Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 For licensing, see LICENSE.md or http://ckeditor.com/license 3 For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang("a11yhelp","et",{title:"Accessibility Instructions",contents:"Abi sisu. Selle dialoogi sulgemiseks vajuta ESC klahvi.",legend:[{name:"Üldine",items:[{name:"Editor Toolbar",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"Editor Dialog",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."}, 5CKEDITOR.plugins.setLang("a11yhelp","et",{title:"Accessibility Instructions",contents:"Abi sisu. Selle dialoogi sulgemiseks vajuta ESC klahvi.",legend:[{name:"Üldine",items:[{name:"Editor Toolbar",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"Editor Dialog",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."},
6{name:"Editor Context Menu",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."},{name:"Editor List Box",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."}, 6{name:"Editor Context Menu",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."},{name:"Editor List Box",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."},
7{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]},{name:"Commands",items:[{name:" Undo command",legend:"Press ${undo}"},{name:" Redo command",legend:"Press ${redo}"},{name:" Bold command",legend:"Press ${bold}"},{name:" Italic command",legend:"Press ${italic}"},{name:" Underline command", 7{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]},{name:"Commands",items:[{name:" Undo command",legend:"Press ${undo}"},{name:" Redo command",legend:"Press ${redo}"},{name:" Bold command",legend:"Press ${bold}"},{name:" Italic command",legend:"Press ${italic}"},{name:" Underline command",
8legend:"Press ${underline}"},{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, 8legend:"Press ${underline}"},{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},
9{name:" Accessibility Help",legend:"Press ${a11yHelp}"}]}],backspace:"Backspace",tab:"Tab",enter:"Enter",shift:"Shift",ctrl:"Ctrl",alt:"Alt",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",end:"End",home:"Home",leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert","delete":"Delete",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1", 9{name:" Accessibility Help",legend:"Press ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1",
10numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash", 10numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash",
11graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"}); \ No newline at end of file 11graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"}); \ No newline at end of file
diff --git a/release/plugins/a11yhelp/dialogs/lang/eu.js b/release/plugins/a11yhelp/dialogs/lang/eu.js
index cfcd553..e80d8da 100644
--- a/release/plugins/a11yhelp/dialogs/lang/eu.js
+++ b/release/plugins/a11yhelp/dialogs/lang/eu.js
@@ -1,5 +1,5 @@
1/* 1/*
2 Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 For licensing, see LICENSE.md or http://ckeditor.com/license 3 For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang("a11yhelp","eu",{title:"Erabilerraztasunaren argibideak",contents:"Laguntzaren edukiak. Elkarrizketa-koadro hau ixteko sakatu ESC.",legend:[{name:"Orokorra",items:[{name:"Editorearen tresna-barra",legend:"Sakatu ${toolbarFocus} tresna-barrara nabigatzeko. Tresna-barrako aurreko eta hurrengo taldera joateko erabili TAB eta MAIUS+TAB. Tresna-barrako aurreko eta hurrengo botoira joateko erabili ESKUIN-GEZIA eta EZKER-GEZIA. Sakatu ZURIUNEA edo SARTU tresna-barrako botoia aktibatzeko."}, 5CKEDITOR.plugins.setLang("a11yhelp","eu",{title:"Erabilerraztasunaren argibideak",contents:"Laguntzaren edukiak. Elkarrizketa-koadro hau ixteko sakatu ESC.",legend:[{name:"Orokorra",items:[{name:"Editorearen tresna-barra",legend:"Sakatu ${toolbarFocus} tresna-barrara nabigatzeko. Tresna-barrako aurreko eta hurrengo taldera joateko erabili TAB eta MAIUS+TAB. Tresna-barrako aurreko eta hurrengo botoira joateko erabili ESKUIN-GEZIA eta EZKER-GEZIA. Sakatu ZURIUNEA edo SARTU tresna-barrako botoia aktibatzeko."},
@@ -7,6 +7,6 @@ CKEDITOR.plugins.setLang("a11yhelp","eu",{title:"Erabilerraztasunaren argibideak
7legend:"Sakatu ${contextMenu} edo APLIKAZIO TEKLA testuinguru-menua irekitzeko. Menuko hurrengo aukerara joateko erabili TAB edo BEHERA GEZIA. Aurreko aukerara nabigatzeko erabili MAIUS+TAB edo GORA GEZIA. Sakatu ZURIUNEA edo SARTU menuko aukera hautatzeko. Ireki uneko aukeraren azpi-menua ZURIUNEA edo SARTU edo ESKUIN-GEZIA erabiliz. Menuko aukera gurasora itzultzeko erabili ESC edo EZKER-GEZIA. Testuinguru-menua ixteko sakatu ESC."},{name:"Editorearen zerrenda-koadroa",legend:"Zerrenda-koadro baten barruan, zerrendako hurrengo elementura joateko erabili TAB edo BEHERA GEZIA. Zerrendako aurreko elementura nabigatzeko MAIUS+TAB edo GORA GEZIA. Sakatu ZURIUNEA edo SARTU zerrendako aukera hautatzeko. Sakatu ESC zerrenda-koadroa ixteko."}, 7legend:"Sakatu ${contextMenu} edo APLIKAZIO TEKLA testuinguru-menua irekitzeko. Menuko hurrengo aukerara joateko erabili TAB edo BEHERA GEZIA. Aurreko aukerara nabigatzeko erabili MAIUS+TAB edo GORA GEZIA. Sakatu ZURIUNEA edo SARTU menuko aukera hautatzeko. Ireki uneko aukeraren azpi-menua ZURIUNEA edo SARTU edo ESKUIN-GEZIA erabiliz. Menuko aukera gurasora itzultzeko erabili ESC edo EZKER-GEZIA. Testuinguru-menua ixteko sakatu ESC."},{name:"Editorearen zerrenda-koadroa",legend:"Zerrenda-koadro baten barruan, zerrendako hurrengo elementura joateko erabili TAB edo BEHERA GEZIA. Zerrendako aurreko elementura nabigatzeko MAIUS+TAB edo GORA GEZIA. Sakatu ZURIUNEA edo SARTU zerrendako aukera hautatzeko. Sakatu ESC zerrenda-koadroa ixteko."},
8{name:"Editorearen elementuaren bide-barra",legend:"Sakatu ${elementsPathFocus} elementuaren bide-barrara nabigatzeko. Hurrengo elementuaren botoira joateko erabili TAB edo ESKUIN-GEZIA. Aurreko botoira joateko aldiz erabili MAIUS+TAB edo EZKER-GEZIA. Elementua editorean hautatzeko sakatu ZURIUNEA edo SARTU."}]},{name:"Komandoak",items:[{name:"Desegin komandoa",legend:"Sakatu ${undo}"},{name:"Berregin komandoa",legend:"Sakatu ${redo}"},{name:"Lodia komandoa",legend:"Sakatu ${bold}"},{name:"Etzana komandoa", 8{name:"Editorearen elementuaren bide-barra",legend:"Sakatu ${elementsPathFocus} elementuaren bide-barrara nabigatzeko. Hurrengo elementuaren botoira joateko erabili TAB edo ESKUIN-GEZIA. Aurreko botoira joateko aldiz erabili MAIUS+TAB edo EZKER-GEZIA. Elementua editorean hautatzeko sakatu ZURIUNEA edo SARTU."}]},{name:"Komandoak",items:[{name:"Desegin komandoa",legend:"Sakatu ${undo}"},{name:"Berregin komandoa",legend:"Sakatu ${redo}"},{name:"Lodia komandoa",legend:"Sakatu ${bold}"},{name:"Etzana komandoa",
9legend:"Sakatu ${italic}"},{name:"Azpimarratu komandoa",legend:"Sakatu ${underline}"},{name:"Esteka komandoa",legend:"Sakatu ${link}"},{name:"Tolestu tresna-barra komandoa",legend:"Sakatu ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, 9legend:"Sakatu ${italic}"},{name:"Azpimarratu komandoa",legend:"Sakatu ${underline}"},{name:"Esteka komandoa",legend:"Sakatu ${link}"},{name:"Tolestu tresna-barra komandoa",legend:"Sakatu ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},
10{name:"Erabilerraztasunaren laguntza",legend:"Sakatu ${a11yHelp}"}]}],backspace:"Atzera tekla",tab:"Tabuladorea",enter:"Sartu",shift:"Maius",ctrl:"Ktrl",alt:"Alt",pause:"Pausatu",capslock:"Blok Maius",escape:"Ihes",pageUp:"Page Up",pageDown:"Page Down",end:"Buka",home:"Etxea",leftArrow:"Ezker-gezia",upArrow:"Gora gezia",rightArrow:"Eskuin-gezia",downArrow:"Behera gezia",insert:"Txertatu","delete":"Ezabatu",leftWindowKey:"Ezkerreko Windows tekla",rightWindowKey:"Eskuineko Windows tekla",selectKey:"Hautatu tekla", 10{name:"Erabilerraztasunaren laguntza",legend:"Sakatu ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tabuladorea",pause:"Pausatu",capslock:"Blok Maius",escape:"Ihes",pageUp:"Page Up",pageDown:"Page Down",leftArrow:"Ezker-gezia",upArrow:"Gora gezia",rightArrow:"Eskuin-gezia",downArrow:"Behera gezia",insert:"Txertatu",leftWindowKey:"Ezkerreko Windows tekla",rightWindowKey:"Eskuineko Windows tekla",selectKey:"Hautatu tekla",
11numpad0:"Zenbakizko teklatua 0",numpad1:"Zenbakizko teklatua 1",numpad2:"Zenbakizko teklatua 2",numpad3:"Zenbakizko teklatua 3",numpad4:"Zenbakizko teklatua 4",numpad5:"Zenbakizko teklatua 5",numpad6:"Zenbakizko teklatua 6",numpad7:"Zenbakizko teklatua 7",numpad8:"Zenbakizko teklatua 8",numpad9:"Zenbakizko teklatua 9",multiply:"Biderkatu",add:"Gehitu",subtract:"Kendu",decimalPoint:"Koma hamartarra",divide:"Zatitu",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11", 11numpad0:"Zenbakizko teklatua 0",numpad1:"Zenbakizko teklatua 1",numpad2:"Zenbakizko teklatua 2",numpad3:"Zenbakizko teklatua 3",numpad4:"Zenbakizko teklatua 4",numpad5:"Zenbakizko teklatua 5",numpad6:"Zenbakizko teklatua 6",numpad7:"Zenbakizko teklatua 7",numpad8:"Zenbakizko teklatua 8",numpad9:"Zenbakizko teklatua 9",multiply:"Biderkatu",add:"Gehitu",subtract:"Kendu",decimalPoint:"Koma hamartarra",divide:"Zatitu",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",
12f12:"F12",numLock:"Blok Zenb",scrollLock:"Blok Korr",semiColon:"Puntu eta koma",equalSign:"Berdin zeinua",comma:"Koma",dash:"Marratxoa",period:"Puntua",forwardSlash:"Barra",graveAccent:"Azentu kamutsa",openBracket:"Parentesia ireki",backSlash:"Alderantzizko barra",closeBracket:"Itxi parentesia",singleQuote:"Komatxo bakuna"}); \ No newline at end of file 12f12:"F12",numLock:"Blok Zenb",scrollLock:"Blok Korr",semiColon:"Puntu eta koma",equalSign:"Berdin zeinua",comma:"Koma",dash:"Marratxoa",period:"Puntua",forwardSlash:"Barra",graveAccent:"Azentu kamutsa",openBracket:"Parentesia ireki",backSlash:"Alderantzizko barra",closeBracket:"Itxi parentesia",singleQuote:"Komatxo bakuna"}); \ No newline at end of file
diff --git a/release/plugins/a11yhelp/dialogs/lang/fa.js b/release/plugins/a11yhelp/dialogs/lang/fa.js
index 12eb035..7280326 100644
--- a/release/plugins/a11yhelp/dialogs/lang/fa.js
+++ b/release/plugins/a11yhelp/dialogs/lang/fa.js
@@ -1,11 +1,11 @@
1/* 1/*
2 Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 For licensing, see LICENSE.md or http://ckeditor.com/license 3 For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang("a11yhelp","fa",{title:"دستورالعمل‌های دسترسی",contents:"راهنمای فهرست مطالب. برای بستن این کادر محاوره‌ای ESC را فشار دهید.",legend:[{name:"عمومی",items:[{name:"نوار ابزار ویرایشگر",legend:"${toolbarFocus} را برای باز کردن نوار ابزار بفشارید. با کلید Tab و Shift+Tab در مجموعه نوار ابزار بعدی و قبلی حرکت کنید. برای حرکت در کلید نوار ابزار قبلی و بعدی با کلید جهت‌نمای راست و چپ جابجا شوید. کلید Space یا Enter را برای فعال کردن کلید نوار ابزار بفشارید."},{name:"پنجره محاورهای ویرایشگر", 5CKEDITOR.plugins.setLang("a11yhelp","fa",{title:"دستورالعمل‌های دسترسی",contents:"راهنمای فهرست مطالب. برای بستن این کادر محاوره‌ای ESC را فشار دهید.",legend:[{name:"عمومی",items:[{name:"نوار ابزار ویرایشگر",legend:"${toolbarFocus} را برای باز کردن نوار ابزار بفشارید. با کلید Tab و Shift+Tab در مجموعه نوار ابزار بعدی و قبلی حرکت کنید. برای حرکت در کلید نوار ابزار قبلی و بعدی با کلید جهت‌نمای راست و چپ جابجا شوید. کلید Space یا Enter را برای فعال کردن کلید نوار ابزار بفشارید."},{name:"پنجره محاورهای ویرایشگر",
6legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."},{name:"منوی متنی ویرایشگر",legend:"${contextMenu} یا کلید برنامههای کاربردی را برای باز کردن منوی متن را بفشارید. سپس میتوانید برای حرکت به گزینه بعدی منو با کلید Tab و یا کلید جهتنمای پایین جابجا شوید. حرکت به گزینه قبلی با Shift+Tab یا کلید جهتنمای بالا. فشردن Space یا Enter برای انتخاب یک گزینه از منو. باز کردن زیر شاخه گزینه منو جاری با کلید Space یا Enter و یا کلید جهتنمای راست و چپ. بازگشت به منوی والد با کلید Esc یا کلید جهتنمای چپ. بستن منوی متن با Esc."}, 6legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."},{name:"منوی متنی ویرایشگر",legend:"${contextMenu} یا کلید برنامههای کاربردی را برای باز کردن منوی متن را بفشارید. سپس میتوانید برای حرکت به گزینه بعدی منو با کلید Tab و یا کلید جهتنمای پایین جابجا شوید. حرکت به گزینه قبلی با Shift+Tab یا کلید جهتنمای بالا. فشردن Space یا Enter برای انتخاب یک گزینه از منو. باز کردن زیر شاخه گزینه منو جاری با کلید Space یا Enter و یا کلید جهتنمای راست و چپ. بازگشت به منوی والد با کلید Esc یا کلید جهتنمای چپ. بستن منوی متن با Esc."},
7{name:"جعبه فهرست ویرایشگر",legend:"در داخل جعبه لیست، قلم دوم از اقلام لیست بعدی را با TAB و یا Arrow Down حرکت دهید. انتقال به قلم دوم از اقلام لیست قبلی را با SHIFT + TAB یا UP ARROW. کلید Space یا ENTER را برای انتخاب گزینه لیست بفشارید. کلید ESC را برای بستن جعبه لیست بفشارید."},{name:"ویرایشگر عنصر نوار راه",legend:"برای رفتن به مسیر عناصر ${elementsPathFocus} را بفشارید. حرکت به کلید عنصر بعدی با کلید Tab یا کلید جهت‌نمای راست. برگشت به کلید قبلی با Shift+Tab یا کلید جهت‌نمای چپ. فشردن Space یا Enter برای انتخاب یک عنصر در ویرایشگر."}]}, 7{name:"جعبه فهرست ویرایشگر",legend:"در داخل جعبه لیست، قلم دوم از اقلام لیست بعدی را با TAB و یا Arrow Down حرکت دهید. انتقال به قلم دوم از اقلام لیست قبلی را با SHIFT + TAB یا UP ARROW. کلید Space یا ENTER را برای انتخاب گزینه لیست بفشارید. کلید ESC را برای بستن جعبه لیست بفشارید."},{name:"ویرایشگر عنصر نوار راه",legend:"برای رفتن به مسیر عناصر ${elementsPathFocus} را بفشارید. حرکت به کلید عنصر بعدی با کلید Tab یا کلید جهت‌نمای راست. برگشت به کلید قبلی با Shift+Tab یا کلید جهت‌نمای چپ. فشردن Space یا Enter برای انتخاب یک عنصر در ویرایشگر."}]},
8{name:"فرمان‌ها",items:[{name:"بازگشت به آخرین فرمان",legend:"فشردن ${undo}"},{name:"انجام مجدد فرمان",legend:"فشردن ${redo}"},{name:"فرمان درشت کردن متن",legend:"فشردن ${bold}"},{name:"فرمان کج کردن متن",legend:"فشردن ${italic}"},{name:"فرمان زیرخطدار کردن متن",legend:"فشردن ${underline}"},{name:"فرمان پیوند دادن",legend:"فشردن ${link}"},{name:"بستن نوار ابزار فرمان",legend:"فشردن ${toolbarCollapse}"},{name:"دسترسی به فرمان محل تمرکز قبلی",legend:"فشردن ${accessPreviousSpace} برای دسترسی به نزدیک‌ترین فضای قابل دسترسی تمرکز قبل از هشتک، برای مثال: دو عنصر مجاور HR -خط افقی-. تکرار کلید ترکیبی برای رسیدن به فضاهای تمرکز از راه دور."}, 8{name:"فرمان‌ها",items:[{name:"بازگشت به آخرین فرمان",legend:"فشردن ${undo}"},{name:"انجام مجدد فرمان",legend:"فشردن ${redo}"},{name:"فرمان درشت کردن متن",legend:"فشردن ${bold}"},{name:"فرمان کج کردن متن",legend:"فشردن ${italic}"},{name:"فرمان زیرخطدار کردن متن",legend:"فشردن ${underline}"},{name:"فرمان پیوند دادن",legend:"فشردن ${link}"},{name:"بستن نوار ابزار فرمان",legend:"فشردن ${toolbarCollapse}"},{name:"دسترسی به فرمان محل تمرکز قبلی",legend:"فشردن ${accessPreviousSpace} برای دسترسی به نزدیک‌ترین فضای قابل دسترسی تمرکز قبل از هشتک، برای مثال: دو عنصر مجاور HR -خط افقی-. تکرار کلید ترکیبی برای رسیدن به فضاهای تمرکز از راه دور."},
9{name:"دسترسی به فضای دستور بعدی",legend:"برای دسترسی به نزدیک‌ترین فضای تمرکز غیر قابل دسترس، ${accessNextSpace} را پس از علامت هشتک بفشارید، برای مثال: دو عنصر مجاور HR -خط افقی-. کلید ترکیبی را برای رسیدن به فضای تمرکز تکرار کنید."},{name:"راهنمای دسترسی",legend:"فشردن ${a11yHelp}"}]}],backspace:"عقبگرد",tab:"برگه",enter:"ورود",shift:"تعویض",ctrl:"کنترل",alt:"دگرساز",pause:"توقف",capslock:"Caps Lock",escape:"گریز",pageUp:"صفحه به بالا",pageDown:"صفحه به پایین",end:"پایان",home:"خانه",leftArrow:"پیکان چپ", 9{name:"دسترسی به فضای دستور بعدی",legend:"برای دسترسی به نزدیک‌ترین فضای تمرکز غیر قابل دسترس، ${accessNextSpace} را پس از علامت هشتک بفشارید، برای مثال: دو عنصر مجاور HR -خط افقی-. کلید ترکیبی را برای رسیدن به فضای تمرکز تکرار کنید."},{name:"راهنمای دسترسی",legend:"فشردن ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"برگه",pause:"توقف",capslock:"Caps Lock",escape:"گریز",pageUp:"صفحه به بالا",pageDown:"صفحه به پایین",
10upArrow:"پیکان بالا",rightArrow:"پیکان راست",downArrow:"پیکان پایین",insert:"ورود","delete":"حذف",leftWindowKey:"کلید چپ ویندوز",rightWindowKey:"کلید راست ویندوز",selectKey:"انتخاب کلید",numpad0:"کلید شماره 0",numpad1:"کلید شماره 1",numpad2:"کلید شماره 2",numpad3:"کلید شماره 3",numpad4:"کلید شماره 4",numpad5:"کلید شماره 5",numpad6:"کلید شماره 6",numpad7:"کلید شماره 7",numpad8:"کلید شماره 8",numpad9:"کلید شماره 9",multiply:"ضرب",add:"افزودن",subtract:"تفریق",decimalPoint:"نقطه‌ی اعشار",divide:"جدا کردن", 10leftArrow:"پیکان چپ",upArrow:"پیکان بالا",rightArrow:"پیکان راست",downArrow:"پیکان پایین",insert:"ورود",leftWindowKey:"کلید چپ ویندوز",rightWindowKey:"کلید راست ویندوز",selectKey:"انتخاب کلید",numpad0:"کلید شماره 0",numpad1:"کلید شماره 1",numpad2:"کلید شماره 2",numpad3:"کلید شماره 3",numpad4:"کلید شماره 4",numpad5:"کلید شماره 5",numpad6:"کلید شماره 6",numpad7:"کلید شماره 7",numpad8:"کلید شماره 8",numpad9:"کلید شماره 9",multiply:"ضرب",add:"افزودن",subtract:"تفریق",decimalPoint:"نقطه‌ی اعشار",divide:"جدا کردن",
11f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"علامت تساوی",comma:"کاما",dash:"خط تیره",period:"دوره",forwardSlash:"Forward Slash",graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"}); \ No newline at end of file 11f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"علامت تساوی",comma:"کاما",dash:"خط تیره",period:"دوره",forwardSlash:"Forward Slash",graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"}); \ No newline at end of file
diff --git a/release/plugins/a11yhelp/dialogs/lang/fi.js b/release/plugins/a11yhelp/dialogs/lang/fi.js
index 98f8127..a307eb8 100644
--- a/release/plugins/a11yhelp/dialogs/lang/fi.js
+++ b/release/plugins/a11yhelp/dialogs/lang/fi.js
@@ -1,11 +1,11 @@
1/* 1/*
2 Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 For licensing, see LICENSE.md or http://ckeditor.com/license 3 For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang("a11yhelp","fi",{title:"Saavutettavuus ohjeet",contents:"Ohjeen sisällöt. Sulkeaksesi tämän dialogin paina ESC.",legend:[{name:"Yleinen",items:[{name:"Editorin työkalupalkki",legend:"Paina ${toolbarFocus} siirtyäksesi työkalupalkkiin. Siirry seuraavaan ja edelliseen työkalupalkin ryhmään TAB ja SHIFT+TAB näppäimillä. Siirry seuraavaan ja edelliseen työkalupainikkeeseen käyttämällä NUOLI OIKEALLE tai NUOLI VASEMMALLE näppäimillä. Paina VÄLILYÖNTI tai ENTER näppäintä aktivoidaksesi työkalupainikkeen."}, 5CKEDITOR.plugins.setLang("a11yhelp","fi",{title:"Saavutettavuus ohjeet",contents:"Ohjeen sisällöt. Sulkeaksesi tämän dialogin paina ESC.",legend:[{name:"Yleinen",items:[{name:"Editorin työkalupalkki",legend:"Paina ${toolbarFocus} siirtyäksesi työkalupalkkiin. Siirry seuraavaan ja edelliseen työkalupalkin ryhmään TAB ja SHIFT+TAB näppäimillä. Siirry seuraavaan ja edelliseen työkalupainikkeeseen käyttämällä NUOLI OIKEALLE tai NUOLI VASEMMALLE näppäimillä. Paina VÄLILYÖNTI tai ENTER näppäintä aktivoidaksesi työkalupainikkeen."},
6{name:"Editorin dialogi",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."},{name:"Editorin oheisvalikko",legend:"Paina ${contextMenu} tai SOVELLUSPAINIKETTA avataksesi oheisvalikon. Liiku seuraavaan valikon vaihtoehtoon TAB tai NUOLI ALAS näppäimillä. Siirry edelliseen vaihtoehtoon SHIFT+TAB tai NUOLI YLÖS näppäimillä. Paina VÄLILYÖNTI tai ENTER valitaksesi valikon kohdan. Avataksesi nykyisen kohdan alivalikon paina VÄLILYÖNTI tai ENTER tai NUOLI OIKEALLE painiketta. Siirtyäksesi takaisin valikon ylemmälle tasolle paina ESC tai NUOLI vasemmalle. Oheisvalikko suljetaan ESC painikkeella."}, 6{name:"Editorin dialogi",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."},{name:"Editorin oheisvalikko",legend:"Paina ${contextMenu} tai SOVELLUSPAINIKETTA avataksesi oheisvalikon. Liiku seuraavaan valikon vaihtoehtoon TAB tai NUOLI ALAS näppäimillä. Siirry edelliseen vaihtoehtoon SHIFT+TAB tai NUOLI YLÖS näppäimillä. Paina VÄLILYÖNTI tai ENTER valitaksesi valikon kohdan. Avataksesi nykyisen kohdan alivalikon paina VÄLILYÖNTI tai ENTER tai NUOLI OIKEALLE painiketta. Siirtyäksesi takaisin valikon ylemmälle tasolle paina ESC tai NUOLI vasemmalle. Oheisvalikko suljetaan ESC painikkeella."},
7{name:"Editorin listalaatikko",legend:"Listalaatikon sisällä siirry seuraavaan listan kohtaan TAB tai NUOLI ALAS painikkeilla. Siirry edelliseen listan kohtaan SHIFT+TAB tai NUOLI YLÖS painikkeilla. Paina VÄLILYÖNTI tai ENTER valitaksesi listan vaihtoehdon. Paina ESC sulkeaksesi listalaatikon."},{name:"Editorin elementtipolun palkki",legend:"Paina ${elementsPathFocus} siirtyäksesi elementtipolun palkkiin. Siirry seuraavaan elementtipainikkeeseen TAB tai NUOLI OIKEALLE painikkeilla. Siirry aiempaan painikkeeseen SHIFT+TAB tai NUOLI VASEMMALLE painikkeilla. Paina VÄLILYÖNTI tai ENTER valitaksesi elementin editorissa."}]}, 7{name:"Editorin listalaatikko",legend:"Listalaatikon sisällä siirry seuraavaan listan kohtaan TAB tai NUOLI ALAS painikkeilla. Siirry edelliseen listan kohtaan SHIFT+TAB tai NUOLI YLÖS painikkeilla. Paina VÄLILYÖNTI tai ENTER valitaksesi listan vaihtoehdon. Paina ESC sulkeaksesi listalaatikon."},{name:"Editorin elementtipolun palkki",legend:"Paina ${elementsPathFocus} siirtyäksesi elementtipolun palkkiin. Siirry seuraavaan elementtipainikkeeseen TAB tai NUOLI OIKEALLE painikkeilla. Siirry aiempaan painikkeeseen SHIFT+TAB tai NUOLI VASEMMALLE painikkeilla. Paina VÄLILYÖNTI tai ENTER valitaksesi elementin editorissa."}]},
8{name:"Komennot",items:[{name:"Peruuta komento",legend:"Paina ${undo}"},{name:"Tee uudelleen komento",legend:"Paina ${redo}"},{name:"Lihavoi komento",legend:"Paina ${bold}"},{name:"Kursivoi komento",legend:"Paina ${italic}"},{name:"Alleviivaa komento",legend:"Paina ${underline}"},{name:"Linkki komento",legend:"Paina ${link}"},{name:"Pienennä työkalupalkki komento",legend:"Paina ${toolbarCollapse}"},{name:"Siirry aiempaan fokustilaan komento",legend:"Paina ${accessPreviousSpace} siiryäksesi lähimpään kursorin edellä olevaan saavuttamattomaan fokustilaan, esimerkiksi: kaksi vierekkäistä HR elementtiä. Toista näppäinyhdistelmää päästäksesi kauempana oleviin fokustiloihin."}, 8{name:"Komennot",items:[{name:"Peruuta komento",legend:"Paina ${undo}"},{name:"Tee uudelleen komento",legend:"Paina ${redo}"},{name:"Lihavoi komento",legend:"Paina ${bold}"},{name:"Kursivoi komento",legend:"Paina ${italic}"},{name:"Alleviivaa komento",legend:"Paina ${underline}"},{name:"Linkki komento",legend:"Paina ${link}"},{name:"Pienennä työkalupalkki komento",legend:"Paina ${toolbarCollapse}"},{name:"Siirry aiempaan fokustilaan komento",legend:"Paina ${accessPreviousSpace} siiryäksesi lähimpään kursorin edellä olevaan saavuttamattomaan fokustilaan, esimerkiksi: kaksi vierekkäistä HR elementtiä. Toista näppäinyhdistelmää päästäksesi kauempana oleviin fokustiloihin."},
9{name:"Siirry seuraavaan fokustilaan komento",legend:"Paina ${accessPreviousSpace} siiryäksesi lähimpään kursorin jälkeen olevaan saavuttamattomaan fokustilaan, esimerkiksi: kaksi vierekkäistä HR elementtiä. Toista näppäinyhdistelmää päästäksesi kauempana oleviin fokustiloihin."},{name:"Saavutettavuus ohjeet",legend:"Paina ${a11yHelp}"}]}],backspace:"Backspace",tab:"Tab",enter:"Enter",shift:"Shift",ctrl:"Ctrl",alt:"Alt",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down", 9{name:"Siirry seuraavaan fokustilaan komento",legend:"Paina ${accessPreviousSpace} siiryäksesi lähimpään kursorin jälkeen olevaan saavuttamattomaan fokustilaan, esimerkiksi: kaksi vierekkäistä HR elementtiä. Toista näppäinyhdistelmää päästäksesi kauempana oleviin fokustiloihin."},{name:"Saavutettavuus ohjeet",legend:"Paina ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Caps Lock",escape:"Escape",
10end:"End",home:"Home",leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert","delete":"Delete",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numeronäppäimistö 0",numpad1:"Numeronäppäimistö 1",numpad2:"Numeronäppäimistö 2",numpad3:"Numeronäppäimistö 3",numpad4:"Numeronäppäimistö 4",numpad5:"Numeronäppäimistö 5",numpad6:"Numeronäppäimistö 6",numpad7:"Numeronäppäimistö 7",numpad8:"Numeronäppäimistö 8", 10pageUp:"Page Up",pageDown:"Page Down",leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numeronäppäimistö 0",numpad1:"Numeronäppäimistö 1",numpad2:"Numeronäppäimistö 2",numpad3:"Numeronäppäimistö 3",numpad4:"Numeronäppäimistö 4",numpad5:"Numeronäppäimistö 5",numpad6:"Numeronäppäimistö 6",numpad7:"Numeronäppäimistö 7",numpad8:"Numeronäppäimistö 8",
11numpad9:"Numeronäppäimistö 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Puolipiste",equalSign:"Equal Sign",comma:"Pilkku",dash:"Dash",period:"Piste",forwardSlash:"Forward Slash",graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"}); \ No newline at end of file 11numpad9:"Numeronäppäimistö 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Puolipiste",equalSign:"Equal Sign",comma:"Pilkku",dash:"Dash",period:"Piste",forwardSlash:"Forward Slash",graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"}); \ No newline at end of file
diff --git a/release/plugins/a11yhelp/dialogs/lang/fo.js b/release/plugins/a11yhelp/dialogs/lang/fo.js
index f1b05e8..564a8b2 100644
--- a/release/plugins/a11yhelp/dialogs/lang/fo.js
+++ b/release/plugins/a11yhelp/dialogs/lang/fo.js
@@ -1,11 +1,11 @@
1/* 1/*
2 Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 For licensing, see LICENSE.md or http://ckeditor.com/license 3 For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang("a11yhelp","fo",{title:"Accessibility Instructions",contents:"Help Contents. To close this dialog press ESC.",legend:[{name:"General",items:[{name:"Editor Toolbar",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"Editor Dialog",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."}, 5CKEDITOR.plugins.setLang("a11yhelp","fo",{title:"Accessibility Instructions",contents:"Help Contents. To close this dialog press ESC.",legend:[{name:"General",items:[{name:"Editor Toolbar",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"Editor Dialog",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."},
6{name:"Editor Context Menu",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."},{name:"Editor List Box",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."}, 6{name:"Editor Context Menu",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."},{name:"Editor List Box",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."},
7{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]},{name:"Commands",items:[{name:" Undo command",legend:"Press ${undo}"},{name:" Redo command",legend:"Press ${redo}"},{name:" Bold command",legend:"Press ${bold}"},{name:" Italic command",legend:"Press ${italic}"},{name:" Underline command", 7{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]},{name:"Commands",items:[{name:" Undo command",legend:"Press ${undo}"},{name:" Redo command",legend:"Press ${redo}"},{name:" Bold command",legend:"Press ${bold}"},{name:" Italic command",legend:"Press ${italic}"},{name:" Underline command",
8legend:"Press ${underline}"},{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, 8legend:"Press ${underline}"},{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},
9{name:" Accessibility Help",legend:"Press ${a11yHelp}"}]}],backspace:"Backspace",tab:"Tab",enter:"Enter",shift:"Shift",ctrl:"Ctrl",alt:"Alt",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",end:"End",home:"Home",leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert","delete":"Delete",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1", 9{name:" Accessibility Help",legend:"Press ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1",
10numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Falda",add:"Pluss",subtract:"Frádráttar",decimalPoint:"Decimal Point",divide:"Býta",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semikolon",equalSign:"Javnatekn",comma:"Komma",dash:"Dash",period:"Punktum",forwardSlash:"Forward Slash", 10numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Falda",add:"Pluss",subtract:"Frádráttar",decimalPoint:"Decimal Point",divide:"Býta",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semikolon",equalSign:"Javnatekn",comma:"Komma",dash:"Dash",period:"Punktum",forwardSlash:"Forward Slash",
11graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"}); \ No newline at end of file 11graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"}); \ No newline at end of file
diff --git a/release/plugins/a11yhelp/dialogs/lang/fr-ca.js b/release/plugins/a11yhelp/dialogs/lang/fr-ca.js
index 888804b..4f25ec3 100644
--- a/release/plugins/a11yhelp/dialogs/lang/fr-ca.js
+++ b/release/plugins/a11yhelp/dialogs/lang/fr-ca.js
@@ -1,11 +1,11 @@
1/* 1/*
2 Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 For licensing, see LICENSE.md or http://ckeditor.com/license 3 For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang("a11yhelp","fr-ca",{title:"Instructions d'accessibilité",contents:"Contenu de l'aide. Pour fermer cette fenêtre, appuyez sur ESC.",legend:[{name:"Général",items:[{name:"Barre d'outil de l'éditeur",legend:"Appuyer sur ${toolbarFocus} pour accéder à la barre d'outils. Se déplacer vers les groupes suivant ou précédent de la barre d'outil avec les touches TAB et SHIFT+TAB. Se déplacer vers les boutons suivant ou précédent de la barre d'outils avec les touches FLECHE DROITE et FLECHE GAUCHE. Appuyer sur la barre d'espace ou la touche ENTRER pour activer le bouton de barre d'outils."}, 5CKEDITOR.plugins.setLang("a11yhelp","fr-ca",{title:"Instructions d'accessibilité",contents:"Contenu de l'aide. Pour fermer cette fenêtre, appuyez sur ESC.",legend:[{name:"Général",items:[{name:"Barre d'outil de l'éditeur",legend:"Appuyer sur ${toolbarFocus} pour accéder à la barre d'outils. Se déplacer vers les groupes suivant ou précédent de la barre d'outil avec les touches TAB et SHIFT+TAB. Se déplacer vers les boutons suivant ou précédent de la barre d'outils avec les touches FLECHE DROITE et FLECHE GAUCHE. Appuyer sur la barre d'espace ou la touche ENTRER pour activer le bouton de barre d'outils."},
6{name:"Dialogue de l'éditeur",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."},{name:"Menu contextuel de l'éditeur",legend:"Appuyer sur ${contextMenu} ou entrer le RACCOURCI CLAVIER pour ouvrir le menu contextuel. Puis se déplacer vers l'option suivante du menu avec les touches TAB ou FLECHE BAS. Se déplacer vers l'option précédente avec les touches SHIFT+TAB ou FLECHE HAUT. appuyer sur la BARRE D'ESPACE ou la touche ENTREE pour sélectionner l'option du menu. Oovrir le sous-menu de l'option courante avec la BARRE D'ESPACE ou les touches ENTREE ou FLECHE DROITE. Revenir à l'élément de menu parent avec les touches ESC ou FLECHE GAUCHE. Fermer le menu contextuel avec ESC."}, 6{name:"Dialogue de l'éditeur",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."},{name:"Menu contextuel de l'éditeur",legend:"Appuyer sur ${contextMenu} ou entrer le RACCOURCI CLAVIER pour ouvrir le menu contextuel. Puis se déplacer vers l'option suivante du menu avec les touches TAB ou FLECHE BAS. Se déplacer vers l'option précédente avec les touches SHIFT+TAB ou FLECHE HAUT. appuyer sur la BARRE D'ESPACE ou la touche ENTREE pour sélectionner l'option du menu. Oovrir le sous-menu de l'option courante avec la BARRE D'ESPACE ou les touches ENTREE ou FLECHE DROITE. Revenir à l'élément de menu parent avec les touches ESC ou FLECHE GAUCHE. Fermer le menu contextuel avec ESC."},
7{name:"Menu déroulant de l'éditeur",legend:"A l'intérieur d'une liste en menu déroulant, se déplacer vers l'élément suivant de la liste avec les touches TAB ou FLECHE BAS. Se déplacer vers l'élément précédent de la liste avec les touches SHIFT+TAB ou FLECHE HAUT. Appuyer sur la BARRE D'ESPACE ou sur ENTREE pour sélectionner l'option dans la liste. Appuyer sur ESC pour fermer le menu déroulant."},{name:"Barre d'emplacement des éléments de l'éditeur",legend:"Appuyer sur ${elementsPathFocus} pour naviguer vers la barre d'emplacement des éléments de léditeur. Se déplacer vers le bouton d'élément suivant avec les touches TAB ou FLECHE DROITE. Se déplacer vers le bouton d'élément précédent avec les touches SHIFT+TAB ou FLECHE GAUCHE. Appuyer sur la BARRE D'ESPACE ou sur ENTREE pour sélectionner l'élément dans l'éditeur."}]}, 7{name:"Menu déroulant de l'éditeur",legend:"A l'intérieur d'une liste en menu déroulant, se déplacer vers l'élément suivant de la liste avec les touches TAB ou FLECHE BAS. Se déplacer vers l'élément précédent de la liste avec les touches SHIFT+TAB ou FLECHE HAUT. Appuyer sur la BARRE D'ESPACE ou sur ENTREE pour sélectionner l'option dans la liste. Appuyer sur ESC pour fermer le menu déroulant."},{name:"Barre d'emplacement des éléments de l'éditeur",legend:"Appuyer sur ${elementsPathFocus} pour naviguer vers la barre d'emplacement des éléments de léditeur. Se déplacer vers le bouton d'élément suivant avec les touches TAB ou FLECHE DROITE. Se déplacer vers le bouton d'élément précédent avec les touches SHIFT+TAB ou FLECHE GAUCHE. Appuyer sur la BARRE D'ESPACE ou sur ENTREE pour sélectionner l'élément dans l'éditeur."}]},
8{name:"Commandes",items:[{name:"Annuler",legend:"Appuyer sur ${undo}"},{name:"Refaire",legend:"Appuyer sur ${redo}"},{name:"Gras",legend:"Appuyer sur ${bold}"},{name:"Italique",legend:"Appuyer sur ${italic}"},{name:"Souligné",legend:"Appuyer sur ${underline}"},{name:"Lien",legend:"Appuyer sur ${link}"},{name:"Enrouler la barre d'outils",legend:"Appuyer sur ${toolbarCollapse}"},{name:"Accéder à l'objet de focus précédent",legend:"Appuyer ${accessPreviousSpace} pour accéder au prochain espace disponible avant le curseur, par exemple: deux éléments HR adjacents. Répéter la combinaison pour joindre les éléments d'espaces distantes."}, 8{name:"Commandes",items:[{name:"Annuler",legend:"Appuyer sur ${undo}"},{name:"Refaire",legend:"Appuyer sur ${redo}"},{name:"Gras",legend:"Appuyer sur ${bold}"},{name:"Italique",legend:"Appuyer sur ${italic}"},{name:"Souligné",legend:"Appuyer sur ${underline}"},{name:"Lien",legend:"Appuyer sur ${link}"},{name:"Enrouler la barre d'outils",legend:"Appuyer sur ${toolbarCollapse}"},{name:"Accéder à l'objet de focus précédent",legend:"Appuyer ${accessPreviousSpace} pour accéder au prochain espace disponible avant le curseur, par exemple: deux éléments HR adjacents. Répéter la combinaison pour joindre les éléments d'espaces distantes."},
9{name:"Accéder au prochain objet de focus",legend:"Appuyer ${accessNextSpace} pour accéder au prochain espace disponible après le curseur, par exemple: deux éléments HR adjacents. Répéter la combinaison pour joindre les éléments d'espaces distantes."},{name:"Aide d'accessibilité",legend:"Appuyer sur ${a11yHelp}"}]}],backspace:"Backspace",tab:"Tab",enter:"Enter",shift:"Shift",ctrl:"Ctrl",alt:"Alt",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",end:"End",home:"Home", 9{name:"Accéder au prochain objet de focus",legend:"Appuyer ${accessNextSpace} pour accéder au prochain espace disponible après le curseur, par exemple: deux éléments HR adjacents. Répéter la combinaison pour joindre les éléments d'espaces distantes."},{name:"Aide d'accessibilité",legend:"Appuyer sur ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",
10leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert","delete":"Delete",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1",numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1", 10pageDown:"Page Down",leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1",numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide",
11f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash",graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"}); \ No newline at end of file 11f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash",graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"}); \ No newline at end of file
diff --git a/release/plugins/a11yhelp/dialogs/lang/fr.js b/release/plugins/a11yhelp/dialogs/lang/fr.js
index 8a734d5..b56e5b1 100644
--- a/release/plugins/a11yhelp/dialogs/lang/fr.js
+++ b/release/plugins/a11yhelp/dialogs/lang/fr.js
@@ -1,12 +1,13 @@
1/* 1/*
2 Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 For licensing, see LICENSE.md or http://ckeditor.com/license 3 For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang("a11yhelp","fr",{title:"Instructions d'accessibilité",contents:"Contenu de l'aide. Pour fermer ce dialogue, appuyez sur la touche ÉCHAP (Echappement).",legend:[{name:"Général",items:[{name:"Barre d'outils de l'éditeur",legend:"Appuyer sur ${toolbarFocus} pour accéder à la barre d'outils. Se déplacer vers les groupes suivant ou précédent de la barre d'outil avec les touches MAJ et MAJ+TAB. Se déplacer vers les boutons suivant ou précédent de la barre d'outils avec les touches FLÈCHE DROITE et FLÈCHE GAUCHE. Appuyer sur la barre d'espace ou la touche ENTRÉE pour activer le bouton de barre d'outils."}, 5CKEDITOR.plugins.setLang("a11yhelp","fr",{title:"Instructions d'accessibilité",contents:"Contenu de l'aide. Pour fermer cette fenêtre, appuyez sur la touche Échap.",legend:[{name:"Général",items:[{name:"Barre d'outils de l'éditeur",legend:"Appuyer sur ${toolbarFocus} pour accéder à la barre d'outils. Se déplacer vers le groupe suivant ou précédent de la barre d'outils avec les touches Tab et Maj+Tab. Se déplacer vers le bouton suivant ou précédent de la barre d'outils avec les touches Flèche droite et Flèche gauche. Appuyer sur la barre d'espace ou la touche Entrée pour activer le bouton de barre d'outils."},
6{name:"Dialogue de l'éditeur",legend:"Dans un dialogue, appuyer sur TAB pour aller à l'élément suivant du dialogue, appuyer sur MAJ+TAB pour aller à l'élément précédent du dialogue, appuyer sur ECHAP pour annuler le dialogue. Quand un dialogue a de multiples onglets, on peut accéder à la liste des onglets avec ALT+F10 ou avec TAB. Dans la liste des onglets, se déplacer vers le suivant ou le précédent avec les FLECHES DROITE et GAUCHE respectivement."},{name:"Menu contextuel de l'éditeur",legend:"Appuyer sur ${contextMenu} ou entrer le RACCOURCI CLAVIER pour ouvrir le menu contextuel. Puis se déplacer vers l'option suivante du menu avec les touches TAB ou FLÈCHE BAS. Se déplacer vers l'option précédente avec les touches MAJ+TAB ou FLÈCHE HAUT. appuyer sur la BARRE D'ESPACE ou la touche ENTRÉE pour sélectionner l'option du menu. Oovrir le sous-menu de l'option courante avec la BARRE D'ESPACE ou les touches ENTRÉE ou FLÈCHE DROITE. Revenir à l'élément de menu parent avec les touches ÉCHAP ou FLÈCHE GAUCHE. Fermer le menu contextuel avec ÉCHAP."}, 6{name:"Fenêtre de l'éditeur",legend:"Dans une boîte de dialogue, appuyer sur Tab pour passer à l'élément suivant, appuyer sur Maj+Tab pour passer à l'élément précédent, appuyer sur Entrée pour valider, appuyer sur Échap pour annuler. Quand une boîte de dialogue possède des onglets, la liste peut être atteinte avec Alt+F10 ou avec Tab. Dans la liste des onglets, se déplacer vers le suivant et le précédent avec les touches Flèche droite et Flèche gauche respectivement."},{name:"Menu contextuel de l'éditeur",
7{name:"Zone de liste de l'éditeur",legend:"Dans la liste en menu déroulant, se déplacer vers l'élément suivant de la liste avec les touches TAB ou FLÈCHE BAS. Se déplacer vers l'élément précédent de la liste avec les touches MAJ+TAB ou FLÈCHE HAUT. Appuyer sur la BARRE D'ESPACE ou sur ENTRÉE pour sélectionner l'option dans la liste. Appuyer sur ÉCHAP pour fermer le menu déroulant."},{name:"Barre d'emplacement des éléments de l'éditeur",legend:"Appuyer sur ${elementsPathFocus} pour naviguer vers la barre d'emplacement des éléments de l'éditeur. Se déplacer vers le bouton d'élément suivant avec les touches TAB ou FLÈCHE DROITE. Se déplacer vers le bouton d'élément précédent avec les touches MAJ+TAB ou FLÈCHE GAUCHE. Appuyer sur la BARRE D'ESPACE ou sur ENTRÉE pour sélectionner l'élément dans l'éditeur."}]}, 7legend:"Appuyer sur ${contextMenu} ou sur la touche Menu pour ouvrir le menu contextuel. Se déplacer ensuite vers l'option suivante du menu avec les touches Tab ou Flèche bas. Se déplacer vers l'option précédente avec les touches Maj+Tab ou Flèche haut. Appuyer sur la barre d'espace ou la touche Entrée pour sélectionner l'option du menu. Appuyer sur la barre d'espace, la touche Entrée ou Flèche droite pour ouvrir le sous-menu de l'option sélectionnée. Revenir à l'élément de menu parent avec la touche Échap ou Flèche gauche. Fermer le menu contextuel avec Échap."},
8{name:"Commandes",items:[{name:" Annuler la commande",legend:"Appuyer sur ${undo}"},{name:"Refaire la commande",legend:"Appuyer sur ${redo}"},{name:" Commande gras",legend:"Appuyer sur ${bold}"},{name:" Commande italique",legend:"Appuyer sur ${italic}"},{name:" Commande souligné",legend:"Appuyer sur ${underline}"},{name:" Commande lien",legend:"Appuyer sur ${link}"},{name:" Commande enrouler la barre d'outils",legend:"Appuyer sur ${toolbarCollapse}"},{name:"Accéder à la précédente commande d'espace de mise au point", 8{name:"Zone de liste de l'éditeur",legend:"Dans une liste en menu déroulant, se déplacer vers l'élément suivant de la liste avec les touches Tab ou Flèche bas. Se déplacer vers l'élément précédent de la liste avec les touches Maj+Tab ou Flèche haut. Appuyer sur la barre d'espace ou sur Entrée pour sélectionner l'option dans la liste. Appuyer sur Échap pour fermer le menu déroulant."},{name:"Barre du chemin d'éléments de l'éditeur",legend:"Appuyer sur ${elementsPathFocus} pour naviguer vers la barre du fil d'Ariane des éléments. Se déplacer vers le bouton de l'élément suivant avec les touches Tab ou Flèche droite. Se déplacer vers le bouton précédent avec les touches Maj+Tab ou Flèche gauche. Appuyer sur la barre d'espace ou sur Entrée pour sélectionner l'élément dans l'éditeur."}]},
9legend:"Appuyez sur ${accessPreviousSpace} pour accéder à l'espace hors d'atteinte le plus proche avant le caret, par exemple: deux éléments HR adjacents. Répétez la combinaison de touches pour atteindre les espaces de mise au point distants."},{name:"Accès à la prochaine commande de l'espace de mise au point",legend:"Appuyez sur ${accessNextSpace} pour accéder au plus proche espace de mise au point hors d'atteinte après le caret, par exemple: deux éléments HR adjacents. répétez la combinaison de touches pour atteindre les espace de mise au point distants."}, 9{name:"Commandes",items:[{name:" Annuler la commande",legend:"Appuyer sur ${undo}"},{name:"Commande restaurer",legend:"Appuyer sur ${redo}"},{name:" Commande gras",legend:"Appuyer sur ${bold}"},{name:" Commande italique",legend:"Appuyer sur ${italic}"},{name:" Commande souligné",legend:"Appuyer sur ${underline}"},{name:" Commande lien",legend:"Appuyer sur ${link}"},{name:" Commande enrouler la barre d'outils",legend:"Appuyer sur ${toolbarCollapse}"},{name:"Commande d'accès à l'élément sélectionnable précédent",
10{name:" Aide Accessibilité",legend:"Appuyer sur ${a11yHelp}"}]}],backspace:"Retour arrière",tab:"Tabulation",enter:"Entrée",shift:"Majuscule",ctrl:"Ctrl",alt:"Alt",pause:"Pause",capslock:"Verr. Maj.",escape:"Échap",pageUp:"Page supérieure",pageDown:"Page inférieure",end:"Fin",home:"Retour",leftArrow:"Flèche gauche",upArrow:"Flèche haute",rightArrow:"Flèche droite",downArrow:"Flèche basse",insert:"Insertion","delete":"Supprimer",leftWindowKey:"Touche Windows gauche",rightWindowKey:"Touche Windows droite", 10legend:"Appuyer sur ${accessNextSpace} pour accéder à l'élément sélectionnable inatteignable le plus proche avant le curseur, par exemple : deux lignes horizontales adjacentes. Répéter la combinaison de touches pour atteindre les éléments sélectionnables précédents."},{name:"Commande d'accès à l'élément sélectionnable suivant",legend:"Appuyer sur ${accessNextSpace} pour accéder à l'élément sélectionnable inatteignable le plus proche après le curseur, par exemple : deux lignes horizontales adjacentes. Répéter la combinaison de touches pour atteindre les éléments sélectionnables suivants."},
11selectKey:"Touche menu",numpad0:"Pavé numérique 0",numpad1:"Pavé numérique 1",numpad2:"Pavé numérique 2",numpad3:"Pavé numérique 3",numpad4:"Pavé numérique 4",numpad5:"Pavé numérique 5",numpad6:"Pavé numérique 6",numpad7:"Pavé numérique 7",numpad8:"Pavé numérique 8",numpad9:"Pavé numérique 9",multiply:"Multiplier",add:"Addition",subtract:"Soustraire",decimalPoint:"Point décimal",divide:"Diviser",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12", 11{name:" Aide sur l'accessibilité",legend:"Appuyer sur ${a11yHelp}"},{name:"Coller comme texte sans mise en forme",legend:"Appuyer sur ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tabulation",pause:"Pause",capslock:"Verr. Maj.",escape:"Échap",pageUp:"Page supérieure",pageDown:"Page suivante",leftArrow:"Flèche gauche",upArrow:"Flèche haut",rightArrow:"Flèche droite",downArrow:"Flèche basse",insert:"Inser",leftWindowKey:"Touche Windows gauche",rightWindowKey:"Touche Windows droite",
12numLock:"Verrouillage numérique",scrollLock:"Arrêt défilement",semiColon:"Point virgule",equalSign:"Signe égal",comma:"Virgule",dash:"Tiret",period:"Point",forwardSlash:"Barre oblique",graveAccent:"Accent grave",openBracket:"Parenthèse ouvrante",backSlash:"Barre oblique inverse",closeBracket:"Parenthèse fermante",singleQuote:"Apostrophe"}); \ No newline at end of file 12selectKey:"Touche Sélectionner",numpad0:"0 du pavé numérique",numpad1:"1 du pavé numérique",numpad2:"2 du pavé numérique",numpad3:"3 du pavé numérique",numpad4:"4 du pavé numérique",numpad5:"5 du pavé numérique",numpad6:"6 du pavé numérique",numpad7:"7 du pavé numérique",numpad8:"Pavé numérique 8",numpad9:"9 du pavé numérique",multiply:"Multiplier",add:"Plus",subtract:"Moins",decimalPoint:"Point décimal",divide:"Diviser",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",
13f11:"F11",f12:"F12",numLock:"Verr. Num.",scrollLock:"Arrêt défil.",semiColon:"Point-virgule",equalSign:"Signe égal",comma:"Virgule",dash:"Tiret",period:"Point",forwardSlash:"Barre oblique",graveAccent:"Accent grave",openBracket:"Parenthèse ouvrante",backSlash:"Barre oblique inverse",closeBracket:"Parenthèse fermante",singleQuote:"Apostrophe"}); \ No newline at end of file
diff --git a/release/plugins/a11yhelp/dialogs/lang/gl.js b/release/plugins/a11yhelp/dialogs/lang/gl.js
index 6a7c808..8d1084b 100644
--- a/release/plugins/a11yhelp/dialogs/lang/gl.js
+++ b/release/plugins/a11yhelp/dialogs/lang/gl.js
@@ -1,12 +1,12 @@
1/* 1/*
2 Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 For licensing, see LICENSE.md or http://ckeditor.com/license 3 For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang("a11yhelp","gl",{title:"Instrucións de accesibilidade",contents:"Axuda. Para pechar este diálogo prema ESC.",legend:[{name:"Xeral",items:[{name:"Barra de ferramentas do editor",legend:"Prema ${toolbarFocus} para navegar pola barra de ferramentas. Para moverse polos distintos grupos de ferramentas use as teclas TAB e MAIÚS+TAB. Para moverse polas distintas ferramentas use FRECHA DEREITA ou FRECHA ESQUERDA. Prema ESPAZO ou INTRO para activar o botón da barra de ferramentas."}, 5CKEDITOR.plugins.setLang("a11yhelp","gl",{title:"Instrucións de accesibilidade",contents:"Axuda. Para pechar este diálogo prema ESC.",legend:[{name:"Xeral",items:[{name:"Barra de ferramentas do editor",legend:"Prema ${toolbarFocus} para navegar pola barra de ferramentas. Para moverse polos distintos grupos de ferramentas use as teclas TAB e MAIÚS+TAB. Para moverse polas distintas ferramentas use FRECHA DEREITA ou FRECHA ESQUERDA. Prema ESPAZO ou INTRO para activar o botón da barra de ferramentas."},
6{name:"Editor de diálogo",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."},{name:"Editor do menú contextual",legend:"Prema ${contextMenu} ou a TECLA MENÚ para abrir o menú contextual. A seguir móvase á seguinte opción do menú con TAB ou FRECHA ABAIXO. Móvase á opción anterior con MAIÚS + TAB ou FRECHA ARRIBA. Prema ESPAZO ou INTRO para seleccionar a opción do menú. Abra o submenú da opción actual con ESPAZO ou INTRO ou FRECHA DEREITA. Regrese ao elemento principal do menú con ESC ou FRECHA ESQUERDA. Peche o menú contextual con ESC."}, 6{name:"Editor de diálogo",legend:"Dentro do diálogo, prema TAB para navegar cara os seguintes elementos de diálogo, prema MAIÚS+TAB para moverse cara os anteriores elementos de diálogo, prema INTRO para enviar o diálogo, prema ESC para cancelar o diálogo. Cando o diálogo ten múltiples lapelas, a lista de lapelas pode cinguirse con ALT+F10 ou con TAB como parte da orde de lapelas do diálogo. Coa lapela en foco, pode moverse cara a seguinte ou a anterior lapela coas FRECHAS ESQUERDA e DEREICHA respectivamente."},
7{name:"Lista do editor",legend:"Dentro dunha lista, móvase ao seguinte elemento da lista con TAB ou FRECHA ABAIXO. Móvase ao elemento anterior da lista con MAIÚS+TAB ou FRECHA ARRIBA. Prema ESPAZO ou INTRO para escoller a opción da lista. Prema ESC para pechar a lista."},{name:"Barra da ruta ao elemento no editor",legend:"Prema ${elementsPathFocus} para navegar ata os elementos da barra de ruta. Móvase ao seguinte elemento botón con TAB ou FRECHA DEREITA. Móvase ao botón anterior con MAIÚS+TAB ou FRECHA ESQUERDA. Prema ESPAZO ou INTRO para seleccionar o elemento no editor."}]}, 7{name:"Editor do menú contextual",legend:"Prema ${contextMenu} ou a TECLA MENÚ para abrir o menú contextual. A seguir móvase á seguinte opción do menú con TAB ou FRECHA ABAIXO. Móvase á opción anterior con MAIÚS + TAB ou FRECHA ARRIBA. Prema ESPAZO ou INTRO para seleccionar a opción do menú. Abra o submenú da opción actual con ESPAZO ou INTRO ou FRECHA DEREITA. Regrese ao elemento principal do menú con ESC ou FRECHA ESQUERDA. Peche o menú contextual con ESC."},{name:"Lista do editor",legend:"Dentro dunha lista, móvase ao seguinte elemento da lista con TAB ou FRECHA ABAIXO. Móvase ao elemento anterior da lista con MAIÚS+TAB ou FRECHA ARRIBA. Prema ESPAZO ou INTRO para escoller a opción da lista. Prema ESC para pechar a lista."},
8{name:"Ordes",items:[{name:"Orde «desfacer»",legend:"Prema ${undo}"},{name:"Orde «refacer»",legend:"Prema ${redo}"},{name:"Orde «negra»",legend:"Prema ${bold}"},{name:"Orde «cursiva»",legend:"Prema ${italic}"},{name:"Orde «subliñar»",legend:"Prema ${underline}"},{name:"Orde «ligazón»",legend:"Prema ${link}"},{name:"Orde «contraer a barra de ferramentas»",legend:"Prema ${toolbarCollapse}"},{name:"Orde «acceder ao anterior espazo en foco»",legend:"Prema ${accessPreviousSpace} para acceder ao espazo máis próximo de foco inalcanzábel anterior ao cursor, por exemplo: dous elementos HR adxacentes. Repita a combinación de teclas para chegar a espazos de foco distantes."}, 8{name:"Barra da ruta ao elemento no editor",legend:"Prema ${elementsPathFocus} para navegar ata os elementos da barra de ruta. Móvase ao seguinte elemento botón con TAB ou FRECHA DEREITA. Móvase ao botón anterior con MAIÚS+TAB ou FRECHA ESQUERDA. Prema ESPAZO ou INTRO para seleccionar o elemento no editor."}]},{name:"Ordes",items:[{name:"Orde «desfacer»",legend:"Prema ${undo}"},{name:"Orde «refacer»",legend:"Prema ${redo}"},{name:"Orde «negra»",legend:"Prema ${bold}"},{name:"Orde «cursiva»",legend:"Prema ${italic}"},
9{name:"Orde «acceder ao seguinte espazo en foco»",legend:"Prema ${accessNextSpace} para acceder ao espazo máis próximo de foco inalcanzábel posterior ao cursor, por exemplo: dous elementos HR adxacentes. Repita a combinación de teclas para chegar a espazos de foco distantes."},{name:"Axuda da accesibilidade",legend:"Prema ${a11yHelp}"}]}],backspace:"Ir atrás",tab:"Tabulador",enter:"Intro",shift:"Maiús",ctrl:"Ctrl",alt:"Alt",pause:"Pausa",capslock:"Bloq. Maiús",escape:"Escape",pageUp:"Páxina arriba", 9{name:"Orde «subliñar»",legend:"Prema ${underline}"},{name:"Orde «ligazón»",legend:"Prema ${link}"},{name:"Orde «contraer a barra de ferramentas»",legend:"Prema ${toolbarCollapse}"},{name:"Orde «acceder ao anterior espazo en foco»",legend:"Prema ${accessPreviousSpace} para acceder ao espazo máis próximo de foco inalcanzábel anterior ao cursor, por exemplo: dous elementos HR adxacentes. Repita a combinación de teclas para chegar a espazos de foco distantes."},{name:"Orde «acceder ao seguinte espazo en foco»",
10pageDown:"Páxina abaixo",end:"Fin",home:"Inicio",leftArrow:"Frecha esquerda",upArrow:"Frecha arriba",rightArrow:"Frecha dereita",downArrow:"Frecha abaixo",insert:"Inserir","delete":"Supr",leftWindowKey:"Tecla Windows esquerda",rightWindowKey:"Tecla Windows dereita",selectKey:"Escolla a tecla",numpad0:"Tec. numérico 0",numpad1:"Tec. numérico 1",numpad2:"Tec. numérico 2",numpad3:"Tec. numérico 3",numpad4:"Tec. numérico 4",numpad5:"Tec. numérico 5",numpad6:"Tec. numérico 6",numpad7:"Tec. numérico 7", 10legend:"Prema ${accessNextSpace} para acceder ao espazo máis próximo de foco inalcanzábel posterior ao cursor, por exemplo: dous elementos HR adxacentes. Repita a combinación de teclas para chegar a espazos de foco distantes."},{name:"Axuda da accesibilidade",legend:"Prema ${a11yHelp}"},{name:"Pegar como texto simple",legend:"Prema ${pastetext}",legendEdge:"Prema ${pastetext}, seguido de ${paste}"}]}],tab:"Tabulador",pause:"Pausa",capslock:"Bloq. Maiús",escape:"Escape",pageUp:"Páxina arriba",pageDown:"Páxina abaixo",
11numpad8:"Tec. numérico 8",numpad9:"Tec. numérico 9",multiply:"Multiplicar",add:"Sumar",subtract:"Restar",decimalPoint:"Punto decimal",divide:"Dividir",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Bloq. num.",scrollLock:"Bloq. despraz.",semiColon:"Punto e coma",equalSign:"Signo igual",comma:"Coma",dash:"Guión",period:"Punto",forwardSlash:"Barra inclinada",graveAccent:"Acento grave",openBracket:"Abrir corchete",backSlash:"Barra invertida", 11leftArrow:"Frecha esquerda",upArrow:"Frecha arriba",rightArrow:"Frecha dereita",downArrow:"Frecha abaixo",insert:"Inserir",leftWindowKey:"Tecla Windows esquerda",rightWindowKey:"Tecla Windows dereita",selectKey:"Escolla a tecla",numpad0:"Tec. numérico 0",numpad1:"Tec. numérico 1",numpad2:"Tec. numérico 2",numpad3:"Tec. numérico 3",numpad4:"Tec. numérico 4",numpad5:"Tec. numérico 5",numpad6:"Tec. numérico 6",numpad7:"Tec. numérico 7",numpad8:"Tec. numérico 8",numpad9:"Tec. numérico 9",multiply:"Multiplicar",
12closeBracket:"Pechar corchete",singleQuote:"Comiña simple"}); \ No newline at end of file 12add:"Sumar",subtract:"Restar",decimalPoint:"Punto decimal",divide:"Dividir",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Bloq. num.",scrollLock:"Bloq. despraz.",semiColon:"Punto e coma",equalSign:"Signo igual",comma:"Coma",dash:"Guión",period:"Punto",forwardSlash:"Barra inclinada",graveAccent:"Acento grave",openBracket:"Abrir corchete",backSlash:"Barra invertida",closeBracket:"Pechar corchete",singleQuote:"Comiña simple"}); \ No newline at end of file
diff --git a/release/plugins/a11yhelp/dialogs/lang/gu.js b/release/plugins/a11yhelp/dialogs/lang/gu.js
index 54e2ec2..aa203e3 100644
--- a/release/plugins/a11yhelp/dialogs/lang/gu.js
+++ b/release/plugins/a11yhelp/dialogs/lang/gu.js
@@ -1,11 +1,11 @@
1/* 1/*
2 Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 For licensing, see LICENSE.md or http://ckeditor.com/license 3 For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang("a11yhelp","gu",{title:"એક્ક્ષેબિલિટી ની વિગતો",contents:"હેલ્પ. આ બંધ કરવા ESC દબાવો.",legend:[{name:"જનરલ",items:[{name:"એડિટર ટૂલબાર",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"એડિટર ડાયલોગ",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."}, 5CKEDITOR.plugins.setLang("a11yhelp","gu",{title:"એક્ક્ષેબિલિટી ની વિગતો",contents:"હેલ્પ. આ બંધ કરવા ESC દબાવો.",legend:[{name:"જનરલ",items:[{name:"એડિટર ટૂલબાર",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"એડિટર ડાયલોગ",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."},
6{name:"Editor Context Menu",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."},{name:"Editor List Box",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."}, 6{name:"Editor Context Menu",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."},{name:"Editor List Box",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."},
7{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]},{name:"કમાંડસ",items:[{name:"અન્ડું કમાંડ",legend:"$ દબાવો {undo}"},{name:"ફરી કરો કમાંડ",legend:"$ દબાવો {redo}"},{name:"બોલ્દનો કમાંડ",legend:"$ દબાવો {bold}"},{name:" Italic command",legend:"Press ${italic}"},{name:" Underline command", 7{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]},{name:"કમાંડસ",items:[{name:"અન્ડું કમાંડ",legend:"$ દબાવો {undo}"},{name:"ફરી કરો કમાંડ",legend:"$ દબાવો {redo}"},{name:"બોલ્દનો કમાંડ",legend:"$ દબાવો {bold}"},{name:" Italic command",legend:"Press ${italic}"},{name:" Underline command",
8legend:"Press ${underline}"},{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, 8legend:"Press ${underline}"},{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},
9{name:" Accessibility Help",legend:"Press ${a11yHelp}"}]}],backspace:"Backspace",tab:"Tab",enter:"Enter",shift:"Shift",ctrl:"Ctrl",alt:"Alt",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",end:"End",home:"Home",leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert","delete":"Delete",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1", 9{name:" Accessibility Help",legend:"Press ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1",
10numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash", 10numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash",
11graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"}); \ No newline at end of file 11graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"}); \ No newline at end of file
diff --git a/release/plugins/a11yhelp/dialogs/lang/he.js b/release/plugins/a11yhelp/dialogs/lang/he.js
index bd63abe..576584f 100644
--- a/release/plugins/a11yhelp/dialogs/lang/he.js
+++ b/release/plugins/a11yhelp/dialogs/lang/he.js
@@ -1,11 +1,11 @@
1/* 1/*
2 Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 For licensing, see LICENSE.md or http://ckeditor.com/license 3 For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang("a11yhelp","he",{title:"הוראות נגישות",contents:"הוראות נגישות. לסגירה לחץ אסקייפ (ESC).",legend:[{name:"כללי",items:[{name:"סרגל הכלים",legend:"לחץ על ${toolbarFocus} כדי לנווט לסרגל הכלים. עבור לכפתור הבא עם מקש הטאב (TAB) או חץ שמאלי. עבור לכפתור הקודם עם מקש השיפט (SHIFT) + טאב (TAB) או חץ ימני. לחץ רווח או אנטר (ENTER) כדי להפעיל את הכפתור הנבחר."},{name:"דיאלוגים (חלונות תשאול)",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."}, 5CKEDITOR.plugins.setLang("a11yhelp","he",{title:"הוראות נגישות",contents:"הוראות נגישות. לסגירה לחץ אסקייפ (ESC).",legend:[{name:"כללי",items:[{name:"סרגל הכלים",legend:"לחץ על ${toolbarFocus} כדי לנווט לסרגל הכלים. עבור לכפתור הבא עם מקש הטאב (TAB) או חץ שמאלי. עבור לכפתור הקודם עם מקש השיפט (SHIFT) + טאב (TAB) או חץ ימני. לחץ רווח או אנטר (ENTER) כדי להפעיל את הכפתור הנבחר."},{name:"דיאלוגים (חלונות תשאול)",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."},
6{name:"תפריט ההקשר (Context Menu)",legend:"לחץ ${contextMenu} או APPLICATION KEYכדי לפתוח את תפריט ההקשר. עבור לאפשרות הבאה עם טאב (TAB) או חץ למטה. עבור לאפשרות הקודמת עם שיפט (SHIFT) + טאב (TAB) או חץ למעלה. לחץ רווח או אנטר (ENTER) כדי לבחור את האפשרות. פתח את תת התפריט (Sub-menu) של האפשרות הנוכחית עם רווח או אנטר (ENTER) או חץ שמאלי. חזור לתפריט האב עם אסקייפ (ESC) או חץ שמאלי. סגור את תפריט ההקשר עם אסקייפ (ESC)."},{name:"תפריטים צפים (List boxes)",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."}, 6{name:"תפריט ההקשר (Context Menu)",legend:"לחץ ${contextMenu} או APPLICATION KEYכדי לפתוח את תפריט ההקשר. עבור לאפשרות הבאה עם טאב (TAB) או חץ למטה. עבור לאפשרות הקודמת עם שיפט (SHIFT) + טאב (TAB) או חץ למעלה. לחץ רווח או אנטר (ENTER) כדי לבחור את האפשרות. פתח את תת התפריט (Sub-menu) של האפשרות הנוכחית עם רווח או אנטר (ENTER) או חץ שמאלי. חזור לתפריט האב עם אסקייפ (ESC) או חץ שמאלי. סגור את תפריט ההקשר עם אסקייפ (ESC)."},{name:"תפריטים צפים (List boxes)",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."},
7{name:"עץ אלמנטים (Elements Path)",legend:"לחץ ${elementsPathFocus} כדי לנווט לעץ האלמנטים. עבור לפריט הבא עם טאב (TAB) או חץ ימני. עבור לפריט הקודם עם שיפט (SHIFT) + טאב (TAB) או חץ שמאלי. לחץ רווח או אנטר (ENTER) כדי לבחור את האלמנט בעורך."}]},{name:"פקודות",items:[{name:" ביטול צעד אחרון",legend:"לחץ ${undo}"},{name:" חזרה על צעד אחרון",legend:"לחץ ${redo}"},{name:" הדגשה",legend:"לחץ ${bold}"},{name:" הטייה",legend:"לחץ ${italic}"},{name:" הוספת קו תחתון",legend:"לחץ ${underline}"},{name:" הוספת לינק", 7{name:"עץ אלמנטים (Elements Path)",legend:"לחץ ${elementsPathFocus} כדי לנווט לעץ האלמנטים. עבור לפריט הבא עם טאב (TAB) או חץ ימני. עבור לפריט הקודם עם שיפט (SHIFT) + טאב (TAB) או חץ שמאלי. לחץ רווח או אנטר (ENTER) כדי לבחור את האלמנט בעורך."}]},{name:"פקודות",items:[{name:" ביטול צעד אחרון",legend:"לחץ ${undo}"},{name:" חזרה על צעד אחרון",legend:"לחץ ${redo}"},{name:" הדגשה",legend:"לחץ ${bold}"},{name:" הטייה",legend:"לחץ ${italic}"},{name:" הוספת קו תחתון",legend:"לחץ ${underline}"},{name:" הוספת לינק",
8legend:"לחץ ${link}"},{name:" כיווץ סרגל הכלים",legend:"לחץ ${toolbarCollapse}"},{name:"גישה למיקום המיקוד הקודם",legend:"לחץ ${accessPreviousSpace} כדי לגשת למיקום המיקוד הלא-נגיש הקרוב לפני הסמן, למשל בין שני אלמנטים סמוכים מסוג HR. חזור על צירוף מקשים זה כדי להגיע למקומות מיקוד רחוקים יותר."},{name:"גישה למיקום המיקוד הבא",legend:"לחץ ${accessNextSpace} כדי לגשת למיקום המיקוד הלא-נגיש הקרוב אחרי הסמן, למשל בין שני אלמנטים סמוכים מסוג HR. חזור על צירוף מקשים זה כדי להגיע למקומות מיקוד רחוקים יותר."}, 8legend:"לחץ ${link}"},{name:" כיווץ סרגל הכלים",legend:"לחץ ${toolbarCollapse}"},{name:"גישה למיקום המיקוד הקודם",legend:"לחץ ${accessPreviousSpace} כדי לגשת למיקום המיקוד הלא-נגיש הקרוב לפני הסמן, למשל בין שני אלמנטים סמוכים מסוג HR. חזור על צירוף מקשים זה כדי להגיע למקומות מיקוד רחוקים יותר."},{name:"גישה למיקום המיקוד הבא",legend:"לחץ ${accessNextSpace} כדי לגשת למיקום המיקוד הלא-נגיש הקרוב אחרי הסמן, למשל בין שני אלמנטים סמוכים מסוג HR. חזור על צירוף מקשים זה כדי להגיע למקומות מיקוד רחוקים יותר."},
9{name:" הוראות נגישות",legend:"לחץ ${a11yHelp}"}]}],backspace:"Backspace",tab:"Tab",enter:"Enter",shift:"Shift",ctrl:"Ctrl",alt:"Alt",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",end:"End",home:"Home",leftArrow:"חץ שמאלה",upArrow:"חץ למעלה",rightArrow:"חץ ימינה",downArrow:"חץ למטה",insert:"הכנס","delete":"מחק",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"בחר מקש",numpad0:"Numpad 0",numpad1:"Numpad 1",numpad2:"Numpad 2", 9{name:" הוראות נגישות",legend:"לחץ ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",leftArrow:"חץ שמאלה",upArrow:"חץ למעלה",rightArrow:"חץ ימינה",downArrow:"חץ למטה",insert:"הכנס",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"בחר מקש",numpad0:"Numpad 0",numpad1:"Numpad 1",numpad2:"Numpad 2",
10numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"הוסף",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"סלאש",graveAccent:"Grave Accent", 10numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"הוסף",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"סלאש",graveAccent:"Grave Accent",
11openBracket:"Open Bracket",backSlash:"סלאש הפוך",closeBracket:"Close Bracket",singleQuote:"ציטוט יחיד"}); \ No newline at end of file 11openBracket:"Open Bracket",backSlash:"סלאש הפוך",closeBracket:"Close Bracket",singleQuote:"ציטוט יחיד"}); \ No newline at end of file
diff --git a/release/plugins/a11yhelp/dialogs/lang/hi.js b/release/plugins/a11yhelp/dialogs/lang/hi.js
index 9f0d6be..a5aafeb 100644
--- a/release/plugins/a11yhelp/dialogs/lang/hi.js
+++ b/release/plugins/a11yhelp/dialogs/lang/hi.js
@@ -1,11 +1,11 @@
1/* 1/*
2 Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 For licensing, see LICENSE.md or http://ckeditor.com/license 3 For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang("a11yhelp","hi",{title:"Accessibility Instructions",contents:"Help Contents. To close this dialog press ESC.",legend:[{name:"सामान्य",items:[{name:"Editor Toolbar",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"Editor Dialog",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."}, 5CKEDITOR.plugins.setLang("a11yhelp","hi",{title:"Accessibility Instructions",contents:"Help Contents. To close this dialog press ESC.",legend:[{name:"सामान्य",items:[{name:"Editor Toolbar",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"Editor Dialog",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."},
6{name:"Editor Context Menu",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."},{name:"Editor List Box",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."}, 6{name:"Editor Context Menu",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."},{name:"Editor List Box",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."},
7{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]},{name:"Commands",items:[{name:" Undo command",legend:"Press ${undo}"},{name:" Redo command",legend:"Press ${redo}"},{name:" Bold command",legend:"Press ${bold}"},{name:" Italic command",legend:"Press ${italic}"},{name:" Underline command", 7{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]},{name:"Commands",items:[{name:" Undo command",legend:"Press ${undo}"},{name:" Redo command",legend:"Press ${redo}"},{name:" Bold command",legend:"Press ${bold}"},{name:" Italic command",legend:"Press ${italic}"},{name:" Underline command",
8legend:"Press ${underline}"},{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, 8legend:"Press ${underline}"},{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},
9{name:" Accessibility Help",legend:"Press ${a11yHelp}"}]}],backspace:"Backspace",tab:"Tab",enter:"Enter",shift:"Shift",ctrl:"Ctrl",alt:"Alt",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",end:"End",home:"Home",leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert","delete":"Delete",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1", 9{name:" Accessibility Help",legend:"Press ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1",
10numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash", 10numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash",
11graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"}); \ No newline at end of file 11graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"}); \ No newline at end of file
diff --git a/release/plugins/a11yhelp/dialogs/lang/hr.js b/release/plugins/a11yhelp/dialogs/lang/hr.js
index 92ba672..e71fbda 100644
--- a/release/plugins/a11yhelp/dialogs/lang/hr.js
+++ b/release/plugins/a11yhelp/dialogs/lang/hr.js
@@ -1,11 +1,11 @@
1/* 1/*
2 Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 For licensing, see LICENSE.md or http://ckeditor.com/license 3 For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang("a11yhelp","hr",{title:"Upute dostupnosti",contents:"Sadržaj pomoći. Za zatvaranje pritisnite ESC.",legend:[{name:"Općenito",items:[{name:"Alatna traka",legend:"Pritisni ${toolbarFocus} za navigaciju do alatne trake. Pomicanje do prethodne ili sljedeće alatne grupe vrši se pomoću SHIFT+TAB i TAB. Pomicanje do prethodnog ili sljedećeg gumba u alatnoj traci vrši se pomoću lijeve i desne strelice kursora. Pritisnite SPACE ili ENTER za aktivaciju alatne trake."},{name:"Dijalog", 5CKEDITOR.plugins.setLang("a11yhelp","hr",{title:"Upute dostupnosti",contents:"Sadržaj pomoći. Za zatvaranje pritisnite ESC.",legend:[{name:"Općenito",items:[{name:"Alatna traka",legend:"Pritisni ${toolbarFocus} za navigaciju do alatne trake. Pomicanje do prethodne ili sljedeće alatne grupe vrši se pomoću SHIFT+TAB i TAB. Pomicanje do prethodnog ili sljedećeg gumba u alatnoj traci vrši se pomoću lijeve i desne strelice kursora. Pritisnite SPACE ili ENTER za aktivaciju alatne trake."},{name:"Dijalog",
6legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."},{name:"Kontekstni izbornik",legend:"Pritisnite ${contextMenu} ili APPLICATION tipku za otvaranje kontekstnog izbornika. Pomicanje se vrši TAB ili strelicom kursora prema dolje ili SHIFT+TAB ili strelica kursora prema gore. SPACE ili ENTER odabiru opciju izbornika. Otvorite podizbornik trenutne opcije sa SPACE, ENTER ili desna strelica kursora. Povratak na prethodni izbornik vrši se sa ESC ili lijevom strelicom kursora. Zatvaranje se vrši pritiskom na tipku ESC."}, 6legend:"Unutar dijaloga, pritisnite TAB kako bi navigirali do sljedećeg elementa dijaloga, pritisnite SHIFT+TAB kako bi se pomaknuli do prethodnog elementa, pritisnite ENTER kako bi poslali dijalog, pritisnite ESC za gašenje dijaloga. Kada dijalog ima više kartica, listi kartica se može pristupiti pomoću ALT+F10 ili sa TAB. Kada je fokusirana lista kartica, pomaknite se naprijed ili nazad pomoću strelica LIJEVO ili DESNO."},{name:"Kontekstni izbornik",legend:"Pritisnite ${contextMenu} ili APPLICATION tipku za otvaranje kontekstnog izbornika. Pomicanje se vrši TAB ili strelicom kursora prema dolje ili SHIFT+TAB ili strelica kursora prema gore. SPACE ili ENTER odabiru opciju izbornika. Otvorite podizbornik trenutne opcije sa SPACE, ENTER ili desna strelica kursora. Povratak na prethodni izbornik vrši se sa ESC ili lijevom strelicom kursora. Zatvaranje se vrši pritiskom na tipku ESC."},
7{name:"Lista",legend:"Unutar list-boxa, pomicanje na sljedeću stavku vrši se sa TAB ili strelica kursora prema dolje. Na prethodnu sa SHIFT+TAB ili strelica prema gore. Pritiskom na SPACE ili ENTER odabire se stavka ili ESC za zatvaranje."},{name:"Traka putanje elemenata",legend:"Pritisnite ${elementsPathFocus} za navigaciju po putanji elemenata. Pritisnite TAB ili desnu strelicu kursora za pomicanje na sljedeći element ili SHIFT+TAB ili lijeva strelica kursora za pomicanje na prethodni element. Pritiskom na SPACE ili ENTER vrši se odabir elementa."}]}, 7{name:"Lista",legend:"Unutar list-boxa, pomicanje na sljedeću stavku vrši se sa TAB ili strelica kursora prema dolje. Na prethodnu sa SHIFT+TAB ili strelica prema gore. Pritiskom na SPACE ili ENTER odabire se stavka ili ESC za zatvaranje."},{name:"Traka putanje elemenata",legend:"Pritisnite ${elementsPathFocus} za navigaciju po putanji elemenata. Pritisnite TAB ili desnu strelicu kursora za pomicanje na sljedeći element ili SHIFT+TAB ili lijeva strelica kursora za pomicanje na prethodni element. Pritiskom na SPACE ili ENTER vrši se odabir elementa."}]},
8{name:"Naredbe",items:[{name:"Vrati naredbu",legend:"Pritisni ${undo}"},{name:"Ponovi naredbu",legend:"Pritisni ${redo}"},{name:"Bold naredba",legend:"Pritisni ${bold}"},{name:"Italic naredba",legend:"Pritisni ${italic}"},{name:"Underline naredba",legend:"Pritisni ${underline}"},{name:"Link naredba",legend:"Pritisni ${link}"},{name:"Smanji alatnu traku naredba",legend:"Pritisni ${toolbarCollapse}"},{name:"Access previous focus space naredba",legend:"Pritisni ${accessPreviousSpace} za pristup najbližem nedostupnom razmaku prije kursora, npr.: dva spojena HR elementa. Ponovnim pritiskom dohvatiti će se sljedeći nedostupni razmak."}, 8{name:"Naredbe",items:[{name:"Vrati naredbu",legend:"Pritisni ${undo}"},{name:"Ponovi naredbu",legend:"Pritisni ${redo}"},{name:"Bold naredba",legend:"Pritisni ${bold}"},{name:"Italic naredba",legend:"Pritisni ${italic}"},{name:"Underline naredba",legend:"Pritisni ${underline}"},{name:"Link naredba",legend:"Pritisni ${link}"},{name:"Smanji alatnu traku naredba",legend:"Pritisni ${toolbarCollapse}"},{name:"Naredba za pristupi prethodnom prostoru fokusa",legend:"Pritisni ${accessPreviousSpace} za pristup najbližem nedostupnom razmaku prije kursora, npr.: dva spojena HR elementa. Ponovnim pritiskom dohvatiti će se sljedeći nedostupni razmak."},
9{name:"Access next focus space naredba",legend:"Pritisni ${accessNextSpace} za pristup najbližem nedostupnom razmaku nakon kursora, npr.: dva spojena HR elementa. Ponovnim pritiskom dohvatiti će se sljedeći nedostupni razmak."},{name:"Pomoć za dostupnost",legend:"Pritisni ${a11yHelp}"}]}],backspace:"Backspace",tab:"Tab",enter:"Enter",shift:"Shift",ctrl:"Ctrl",alt:"Alt",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",end:"End",home:"Home",leftArrow:"Left Arrow", 9{name:"Naredba za pristup sljedećem prostoru fokusa",legend:"Pritisni ${accessNextSpace} za pristup najbližem nedostupnom razmaku nakon kursora, npr.: dva spojena HR elementa. Ponovnim pritiskom dohvatiti će se sljedeći nedostupni razmak."},{name:"Pomoć za dostupnost",legend:"Pritisni ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",
10upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert","delete":"Delete",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1",numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1",f2:"F2",f3:"F3", 10leftArrow:"Lijev strelica",upArrow:"Strelica gore",rightArrow:"Desna strelica",downArrow:"Strelica dolje",insert:"Insert",leftWindowKey:"Lijeva Windows tipka",rightWindowKey:"Desna Windows tipka",selectKey:"Tipka Select",numpad0:"Numpad 0",numpad1:"Numpad 1",numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"umpad 8",numpad9:"Numpad 9",multiply:"Množenje",add:"Zbrajanje",subtract:"Oduzimanje",decimalPoint:"Decimalna točka",divide:"Dijeljenje",
11f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash",graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"}); \ No newline at end of file 11f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Točka zarez",equalSign:"Jednako",comma:"Zarez",dash:"Crtica",period:"Točka",forwardSlash:"Kosa crta",graveAccent:"Akcent",openBracket:"Otvorena uglata zagrada",backSlash:"Obrnuta kosa crta",closeBracket:"Zatvorena uglata zagrada",singleQuote:"Jednostruki navodnik"}); \ No newline at end of file
diff --git a/release/plugins/a11yhelp/dialogs/lang/hu.js b/release/plugins/a11yhelp/dialogs/lang/hu.js
index 81c48da..fbbba98 100644
--- a/release/plugins/a11yhelp/dialogs/lang/hu.js
+++ b/release/plugins/a11yhelp/dialogs/lang/hu.js
@@ -1,12 +1,12 @@
1/* 1/*
2 Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 For licensing, see LICENSE.md or http://ckeditor.com/license 3 For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang("a11yhelp","hu",{title:"Kisegítő utasítások",contents:"Súgó tartalmak. A párbeszédablak bezárásához nyomjon ESC-et.",legend:[{name:"Általános",items:[{name:"Szerkesztő Eszköztár",legend:"Nyomjon ${toolbarFocus} hogy kijelölje az eszköztárat. A következő és előző eszköztár csoporthoz a TAB és SHIFT+TAB-al juthat el. A következő és előző eszköztár gombhoz a BAL NYÍL vagy JOBB NYÍL gombbal juthat el. Nyomjon SPACE-t vagy ENTER-t hogy aktiválja az eszköztár gombot."},{name:"Szerkesző párbeszéd ablak", 5CKEDITOR.plugins.setLang("a11yhelp","hu",{title:"Kisegítő utasítások",contents:"Súgó tartalmak. A párbeszédablak bezárásához nyomjon ESC-et.",legend:[{name:"Általános",items:[{name:"Szerkesztő Eszköztár",legend:"Nyomjon ${toolbarFocus} hogy kijelölje az eszköztárat. A következő és előző eszköztár csoporthoz a TAB és SHIFT+TAB-al juthat el. A következő és előző eszköztár gombhoz a BAL NYÍL vagy JOBB NYÍL gombbal juthat el. Nyomjon SPACE-t vagy ENTER-t hogy aktiválja az eszköztár gombot."},{name:"Szerkesző párbeszéd ablak",
6legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."},{name:"Szerkesztő helyi menü",legend:"Nyomjon ${contextMenu}-t vagy ALKALMAZÁS BILLENTYŰT a helyi menü megnyitásához. Ezután a következő menüpontra léphet a TAB vagy LEFELÉ NYÍLLAL. Az előző opciót a SHIFT+TAB vagy FELFELÉ NYÍLLAL érheti el. Nyomjon SPACE-t vagy ENTER-t a menüpont kiválasztásához. A jelenlegi menüpont almenüjének megnyitásához nyomjon SPACE-t vagy ENTER-t, vagy JOBB NYILAT. A főmenühöz való visszatéréshez nyomjon ESC-et vagy BAL NYILAT. A helyi menü bezárása az ESC billentyűvel lehetséges."}, 6legend:"Párbeszédablakban nyomjon TAB-ot a következő párbeszédmezőhöz ugráshoz, nyomjon SHIFT + TAB-ot az előző mezőhöz ugráshoz, nyomjon ENTER-t a párbeszédablak elfogadásához, nyomjon ESC-et a párbeszédablak elvetéséhez. Azokhoz a párbeszédablakokhoz, amik több fület tartalmaznak, nyomjon ALT + F10-et vagy TAB-ot hogy a fülekre ugorjon. Ezután a TAB-al vagy a JOBB NYÍLLAL a következő fülre ugorhat."},{name:"Szerkesztő helyi menü",legend:"Nyomjon ${contextMenu}-t vagy ALKALMAZÁS BILLENTYŰT a helyi menü megnyitásához. Ezután a következő menüpontra léphet a TAB vagy LEFELÉ NYÍLLAL. Az előző opciót a SHIFT+TAB vagy FELFELÉ NYÍLLAL érheti el. Nyomjon SPACE-t vagy ENTER-t a menüpont kiválasztásához. A jelenlegi menüpont almenüjének megnyitásához nyomjon SPACE-t vagy ENTER-t, vagy JOBB NYILAT. A főmenühöz való visszatéréshez nyomjon ESC-et vagy BAL NYILAT. A helyi menü bezárása az ESC billentyűvel lehetséges."},
7{name:"Szerkesztő lista",legend:"A listán belül a következő elemre a TAB vagy LEFELÉ NYÍLLAL mozoghat. Az előző elem kiválasztásához nyomjon SHIFT+TAB-ot vagy FELFELÉ NYILAT. Nyomjon SPACE-t vagy ENTER-t az elem kiválasztásához. Az ESC billentyű megnyomásával bezárhatja a listát."},{name:"Szerkesztő elem utak sáv",legend:"Nyomj ${elementsPathFocus} hogy kijelöld a elemek út sávját. A következő elem gombhoz a TAB-al vagy a JOBB NYÍLLAL juthatsz el. Az előző gombhoz a SHIFT+TAB vagy BAL NYÍLLAL mehetsz. A SPACE vagy ENTER billentyűvel kiválaszthatod az elemet a szerkesztőben."}]}, 7{name:"Szerkesztő lista",legend:"A listán belül a következő elemre a TAB vagy LEFELÉ NYÍLLAL mozoghat. Az előző elem kiválasztásához nyomjon SHIFT+TAB-ot vagy FELFELÉ NYILAT. Nyomjon SPACE-t vagy ENTER-t az elem kiválasztásához. Az ESC billentyű megnyomásával bezárhatja a listát."},{name:"Szerkesztő elem utak sáv",legend:"Nyomj ${elementsPathFocus} hogy kijelöld a elemek út sávját. A következő elem gombhoz a TAB-al vagy a JOBB NYÍLLAL juthatsz el. Az előző gombhoz a SHIFT+TAB vagy BAL NYÍLLAL mehetsz. A SPACE vagy ENTER billentyűvel kiválaszthatod az elemet a szerkesztőben."}]},
8{name:"Parancsok",items:[{name:"Parancs visszavonása",legend:"Nyomj ${undo}"},{name:"Parancs megismétlése",legend:"Nyomjon ${redo}"},{name:"Félkövér parancs",legend:"Nyomjon ${bold}"},{name:"Dőlt parancs",legend:"Nyomjon ${italic}"},{name:"Aláhúzott parancs",legend:"Nyomjon ${underline}"},{name:"Link parancs",legend:"Nyomjon ${link}"},{name:"Szerkesztősáv összecsukása parancs",legend:"Nyomjon ${toolbarCollapse}"},{name:"Hozzáférés az előző fókusz helyhez parancs",legend:"Nyomj ${accessNextSpace} hogy hozzáférj a legközelebbi elérhetetlen fókusz helyhez a hiányjel előtt, például: két szomszédos HR elemhez. Ismételd meg a billentyűkombinációt hogy megtaláld a távolabbi fókusz helyeket."}, 8{name:"Parancsok",items:[{name:"Parancs visszavonása",legend:"Nyomj ${undo}"},{name:"Parancs megismétlése",legend:"Nyomjon ${redo}"},{name:"Félkövér parancs",legend:"Nyomjon ${bold}"},{name:"Dőlt parancs",legend:"Nyomjon ${italic}"},{name:"Aláhúzott parancs",legend:"Nyomjon ${underline}"},{name:"Link parancs",legend:"Nyomjon ${link}"},{name:"Szerkesztősáv összecsukása parancs",legend:"Nyomjon ${toolbarCollapse}"},{name:"Hozzáférés az előző fókusz helyhez parancs",legend:"Nyomj ${accessNextSpace} hogy hozzáférj a legközelebbi elérhetetlen fókusz helyhez a hiányjel előtt, például: két szomszédos HR elemhez. Ismételd meg a billentyűkombinációt hogy megtaláld a távolabbi fókusz helyeket."},
9{name:"Hozzáférés a következő fókusz helyhez parancs",legend:"Nyomj ${accessNextSpace} hogy hozzáférj a legközelebbi elérhetetlen fókusz helyhez a hiányjel után, például: két szomszédos HR elemhez. Ismételd meg a billentyűkombinációt hogy megtaláld a távolabbi fókusz helyeket."},{name:"Kisegítő súgó",legend:"Nyomjon ${a11yHelp}"}]}],backspace:"Backspace",tab:"Tab",enter:"Enter",shift:"Shift",ctrl:"Ctrl",alt:"Alt",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down", 9{name:"Hozzáférés a következő fókusz helyhez parancs",legend:"Nyomj ${accessNextSpace} hogy hozzáférj a legközelebbi elérhetetlen fókusz helyhez a hiányjel után, például: két szomszédos HR elemhez. Ismételd meg a billentyűkombinációt hogy megtaláld a távolabbi fókusz helyeket."},{name:"Kisegítő súgó",legend:"Nyomjon ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Caps Lock",escape:"Escape",
10end:"End",home:"Home",leftArrow:"balra nyíl",upArrow:"felfelé nyíl",rightArrow:"jobbra nyíl",downArrow:"lefelé nyíl",insert:"Insert","delete":"Delete",leftWindowKey:"bal Windows-billentyű",rightWindowKey:"jobb Windows-billentyű",selectKey:"Billentyű választása",numpad0:"Számbillentyűk 0",numpad1:"Számbillentyűk 1",numpad2:"Számbillentyűk 2",numpad3:"Számbillentyűk 3",numpad4:"Számbillentyűk 4",numpad5:"Számbillentyűk 5",numpad6:"Számbillentyűk 6",numpad7:"Számbillentyűk 7",numpad8:"Számbillentyűk 8", 10pageUp:"Page Up",pageDown:"Page Down",leftArrow:"balra nyíl",upArrow:"felfelé nyíl",rightArrow:"jobbra nyíl",downArrow:"lefelé nyíl",insert:"Insert",leftWindowKey:"bal Windows-billentyű",rightWindowKey:"jobb Windows-billentyű",selectKey:"Billentyű választása",numpad0:"Számbillentyűk 0",numpad1:"Számbillentyűk 1",numpad2:"Számbillentyűk 2",numpad3:"Számbillentyűk 3",numpad4:"Számbillentyűk 4",numpad5:"Számbillentyűk 5",numpad6:"Számbillentyűk 6",numpad7:"Számbillentyűk 7",numpad8:"Számbillentyűk 8",
11numpad9:"Számbillentyűk 9",multiply:"Szorzás",add:"Hozzáadás",subtract:"Kivonás",decimalPoint:"Tizedespont",divide:"Osztás",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Pontosvessző",equalSign:"Egyenlőségjel",comma:"Vessző",dash:"Kötőjel",period:"Pont",forwardSlash:"Perjel",graveAccent:"Visszafelé dőlő ékezet",openBracket:"Nyitó szögletes zárójel",backSlash:"fordított perjel",closeBracket:"Záró szögletes zárójel", 11numpad9:"Számbillentyűk 9",multiply:"Szorzás",add:"Hozzáadás",subtract:"Kivonás",decimalPoint:"Tizedespont",divide:"Osztás",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Pontosvessző",equalSign:"Egyenlőségjel",comma:"Vessző",dash:"Kötőjel",period:"Pont",forwardSlash:"Perjel",graveAccent:"Visszafelé dőlő ékezet",openBracket:"Nyitó szögletes zárójel",backSlash:"fordított perjel",closeBracket:"Záró szögletes zárójel",
12singleQuote:"szimpla idézőjel"}); \ No newline at end of file 12singleQuote:"szimpla idézőjel"}); \ No newline at end of file
diff --git a/release/plugins/a11yhelp/dialogs/lang/id.js b/release/plugins/a11yhelp/dialogs/lang/id.js
index c8d5686..ca157b0 100644
--- a/release/plugins/a11yhelp/dialogs/lang/id.js
+++ b/release/plugins/a11yhelp/dialogs/lang/id.js
@@ -1,11 +1,11 @@
1/* 1/*
2 Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 For licensing, see LICENSE.md or http://ckeditor.com/license 3 For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang("a11yhelp","id",{title:"Accessibility Instructions",contents:"Bantuan. Tekan ESC untuk menutup dialog ini.",legend:[{name:"Umum",items:[{name:"Editor Toolbar",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"Editor Dialog",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."}, 5CKEDITOR.plugins.setLang("a11yhelp","id",{title:"Instruksi Accessibility",contents:"Bantuan. Tekan ESC untuk menutup dialog ini.",legend:[{name:"Umum",items:[{name:"Toolbar Editor",legend:"Tekan ${toolbarFocus} untuk berpindah ke toolbar. Untuk berpindah ke group toolbar selanjutnya dan sebelumnya gunakan TAB dan SHIFT+TAB. Untuk berpindah ke tombol toolbar selanjutnya dan sebelumnya gunakan RIGHT ARROW atau LEFT ARROW. Tekan SPASI atau ENTER untuk mengaktifkan tombol toolbar."},{name:"Dialog Editor",
6{name:"Editor Context Menu",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."},{name:"Editor List Box",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."}, 6legend:"Pada jendela dialog, tekan TAB untuk berpindah pada elemen dialog selanjutnya, tekan SHIFT+TAB untuk berpindah pada elemen dialog sebelumnya, tekan ENTER untuk submit dialog, tekan ESC untuk membatalkan dialog. Pada dialog dengan multi tab, daftar tab dapat diakses dengan ALT+F10 ataupun dengan tombol TAB sesuai urutan tab pada dialog. Jika daftar tab aktif terpilih, untuk berpindah tab dapat menggunakan RIGHT dan LEFT ARROW."},{name:"Context Menu Editor",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."},
7{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]},{name:"Commands",items:[{name:" Undo command",legend:"Press ${undo}"},{name:" Redo command",legend:"Press ${redo}"},{name:" Bold command",legend:"Press ${bold}"},{name:" Italic command",legend:"Press ${italic}"},{name:" Underline command", 7{name:"List Box Editor",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."},{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]},
8legend:"Press ${underline}"},{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, 8{name:"Commands",items:[{name:" Undo command",legend:"Press ${undo}"},{name:" Redo command",legend:"Press ${redo}"},{name:" Bold command",legend:"Press ${bold}"},{name:" Italic command",legend:"Press ${italic}"},{name:" Underline command",legend:"Press ${underline}"},{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},
9{name:" Accessibility Help",legend:"Press ${a11yHelp}"}]}],backspace:"Backspace",tab:"Tab",enter:"Enter",shift:"Shift",ctrl:"Ctrl",alt:"Alt",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",end:"End",home:"Home",leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert","delete":"Delete",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1", 9{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Accessibility Help",legend:"Press ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",
10numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash", 10leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1",numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1",f2:"F2",f3:"F3",
11graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"}); \ No newline at end of file 11f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash",graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"}); \ No newline at end of file
diff --git a/release/plugins/a11yhelp/dialogs/lang/it.js b/release/plugins/a11yhelp/dialogs/lang/it.js
index 5151f60..4887edb 100644
--- a/release/plugins/a11yhelp/dialogs/lang/it.js
+++ b/release/plugins/a11yhelp/dialogs/lang/it.js
@@ -1,5 +1,5 @@
1/* 1/*
2 Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 For licensing, see LICENSE.md or http://ckeditor.com/license 3 For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang("a11yhelp","it",{title:"Istruzioni di Accessibilità",contents:"Contenuti di Aiuto. Per chiudere questa finestra premi ESC.",legend:[{name:"Generale",items:[{name:"Barra degli strumenti Editor",legend:"Premere ${toolbarFocus} per passare alla barra degli strumenti. Usare TAB per spostarsi al gruppo successivo, MAIUSC+TAB per spostarsi a quello precedente. Usare FRECCIA DESTRA per spostarsi al pulsante successivo, FRECCIA SINISTRA per spostarsi a quello precedente. Premere SPAZIO o INVIO per attivare il pulsante della barra degli strumenti."}, 5CKEDITOR.plugins.setLang("a11yhelp","it",{title:"Istruzioni di Accessibilità",contents:"Contenuti di Aiuto. Per chiudere questa finestra premi ESC.",legend:[{name:"Generale",items:[{name:"Barra degli strumenti Editor",legend:"Premere ${toolbarFocus} per passare alla barra degli strumenti. Usare TAB per spostarsi al gruppo successivo, MAIUSC+TAB per spostarsi a quello precedente. Usare FRECCIA DESTRA per spostarsi al pulsante successivo, FRECCIA SINISTRA per spostarsi a quello precedente. Premere SPAZIO o INVIO per attivare il pulsante della barra degli strumenti."},
@@ -7,7 +7,7 @@ CKEDITOR.plugins.setLang("a11yhelp","it",{title:"Istruzioni di Accessibilità",c
7{name:"Menù contestuale Editor",legend:"Premi ${contextMenu} o TASTO APPLICAZIONE per aprire il menu contestuale. Dunque muoviti all'opzione successiva del menu con il tasto TAB o con la Freccia Sotto. Muoviti all'opzione precedente con MAIUSC+TAB o con Freccia Sopra. Premi SPAZIO o INVIO per scegliere l'opzione di menu. Apri il sottomenu dell'opzione corrente con SPAZIO o INVIO oppure con la Freccia Destra. Torna indietro al menu superiore con ESC oppure Freccia Sinistra. Chiudi il menu contestuale con ESC."}, 7{name:"Menù contestuale Editor",legend:"Premi ${contextMenu} o TASTO APPLICAZIONE per aprire il menu contestuale. Dunque muoviti all'opzione successiva del menu con il tasto TAB o con la Freccia Sotto. Muoviti all'opzione precedente con MAIUSC+TAB o con Freccia Sopra. Premi SPAZIO o INVIO per scegliere l'opzione di menu. Apri il sottomenu dell'opzione corrente con SPAZIO o INVIO oppure con la Freccia Destra. Torna indietro al menu superiore con ESC oppure Freccia Sinistra. Chiudi il menu contestuale con ESC."},
8{name:"Box Lista Editor",legend:"All'interno di un elenco di opzioni, per spostarsi all'elemento successivo premere TAB oppure FRECCIA GIÙ. Per spostarsi all'elemento precedente usare SHIFT+TAB oppure FRECCIA SU. Premere SPAZIO o INVIO per selezionare l'elemento della lista. Premere ESC per chiudere l'elenco di opzioni."},{name:"Barra percorso elementi editor",legend:"Premere ${elementsPathFocus} per passare agli elementi della barra del percorso. Usare TAB o FRECCIA DESTRA per passare al pulsante successivo. Per passare al pulsante precedente premere MAIUSC+TAB o FRECCIA SINISTRA. Premere SPAZIO o INVIO per selezionare l'elemento nell'editor."}]}, 8{name:"Box Lista Editor",legend:"All'interno di un elenco di opzioni, per spostarsi all'elemento successivo premere TAB oppure FRECCIA GIÙ. Per spostarsi all'elemento precedente usare SHIFT+TAB oppure FRECCIA SU. Premere SPAZIO o INVIO per selezionare l'elemento della lista. Premere ESC per chiudere l'elenco di opzioni."},{name:"Barra percorso elementi editor",legend:"Premere ${elementsPathFocus} per passare agli elementi della barra del percorso. Usare TAB o FRECCIA DESTRA per passare al pulsante successivo. Per passare al pulsante precedente premere MAIUSC+TAB o FRECCIA SINISTRA. Premere SPAZIO o INVIO per selezionare l'elemento nell'editor."}]},
9{name:"Comandi",items:[{name:" Annulla comando",legend:"Premi ${undo}"},{name:" Ripeti comando",legend:"Premi ${redo}"},{name:" Comando Grassetto",legend:"Premi ${bold}"},{name:" Comando Corsivo",legend:"Premi ${italic}"},{name:" Comando Sottolineato",legend:"Premi ${underline}"},{name:" Comando Link",legend:"Premi ${link}"},{name:" Comando riduci barra degli strumenti",legend:"Premi ${toolbarCollapse}"},{name:"Comando di accesso al precedente spazio di focus",legend:"Premi ${accessPreviousSpace} per accedere il più vicino spazio di focus non raggiungibile prima del simbolo caret, per esempio due elementi HR adiacenti. Ripeti la combinazione di tasti per raggiungere spazi di focus distanti."}, 9{name:"Comandi",items:[{name:" Annulla comando",legend:"Premi ${undo}"},{name:" Ripeti comando",legend:"Premi ${redo}"},{name:" Comando Grassetto",legend:"Premi ${bold}"},{name:" Comando Corsivo",legend:"Premi ${italic}"},{name:" Comando Sottolineato",legend:"Premi ${underline}"},{name:" Comando Link",legend:"Premi ${link}"},{name:" Comando riduci barra degli strumenti",legend:"Premi ${toolbarCollapse}"},{name:"Comando di accesso al precedente spazio di focus",legend:"Premi ${accessPreviousSpace} per accedere il più vicino spazio di focus non raggiungibile prima del simbolo caret, per esempio due elementi HR adiacenti. Ripeti la combinazione di tasti per raggiungere spazi di focus distanti."},
10{name:"Comando di accesso al prossimo spazio di focus",legend:"Premi ${accessNextSpace} per accedere il più vicino spazio di focus non raggiungibile dopo il simbolo caret, per esempio due elementi HR adiacenti. Ripeti la combinazione di tasti per raggiungere spazi di focus distanti."},{name:" Aiuto Accessibilità",legend:"Premi ${a11yHelp}"}]}],backspace:"Backspace",tab:"Tab",enter:"Invio",shift:"Maiusc",ctrl:"Ctrl",alt:"Alt",pause:"Pausa",capslock:"Bloc Maiusc",escape:"Esc",pageUp:"Pagina sù",pageDown:"Pagina giù", 10{name:"Comando di accesso al prossimo spazio di focus",legend:"Premi ${accessNextSpace} per accedere il più vicino spazio di focus non raggiungibile dopo il simbolo caret, per esempio due elementi HR adiacenti. Ripeti la combinazione di tasti per raggiungere spazi di focus distanti."},{name:" Aiuto Accessibilità",legend:"Premi ${a11yHelp}"},{name:"Incolla come testo semplice",legend:"Premi ${pastetext}",legendEdge:"Premi ${pastetext}, seguito da ${paste}"}]}],tab:"Tab",pause:"Pausa",capslock:"Bloc Maiusc",
11end:"Fine",home:"Inizio",leftArrow:"Freccia sinistra",upArrow:"Freccia su",rightArrow:"Freccia destra",downArrow:"Freccia giù",insert:"Ins","delete":"Canc",leftWindowKey:"Tasto di Windows sinistro",rightWindowKey:"Tasto di Windows destro",selectKey:"Tasto di selezione",numpad0:"0 sul tastierino numerico",numpad1:"1 sul tastierino numerico",numpad2:"2 sul tastierino numerico",numpad3:"3 sul tastierino numerico",numpad4:"4 sul tastierino numerico",numpad5:"5 sul tastierino numerico",numpad6:"6 sul tastierino numerico", 11escape:"Esc",pageUp:"Pagina sù",pageDown:"Pagina giù",leftArrow:"Freccia sinistra",upArrow:"Freccia su",rightArrow:"Freccia destra",downArrow:"Freccia giù",insert:"Ins",leftWindowKey:"Tasto di Windows sinistro",rightWindowKey:"Tasto di Windows destro",selectKey:"Tasto di selezione",numpad0:"0 sul tastierino numerico",numpad1:"1 sul tastierino numerico",numpad2:"2 sul tastierino numerico",numpad3:"3 sul tastierino numerico",numpad4:"4 sul tastierino numerico",numpad5:"5 sul tastierino numerico",numpad6:"6 sul tastierino numerico",
12numpad7:"7 sul tastierino numerico",numpad8:"8 sul tastierino numerico",numpad9:"9 sul tastierino numerico",multiply:"Moltiplicazione",add:"Più",subtract:"Sottrazione",decimalPoint:"Punto decimale",divide:"Divisione",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Bloc Num",scrollLock:"Bloc Scorr",semiColon:"Punto-e-virgola",equalSign:"Segno di uguale",comma:"Virgola",dash:"Trattino",period:"Punto",forwardSlash:"Barra",graveAccent:"Accento grave", 12numpad7:"7 sul tastierino numerico",numpad8:"8 sul tastierino numerico",numpad9:"9 sul tastierino numerico",multiply:"Moltiplicazione",add:"Più",subtract:"Sottrazione",decimalPoint:"Punto decimale",divide:"Divisione",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Bloc Num",scrollLock:"Bloc Scorr",semiColon:"Punto-e-virgola",equalSign:"Segno di uguale",comma:"Virgola",dash:"Trattino",period:"Punto",forwardSlash:"Barra",graveAccent:"Accento grave",
13openBracket:"Parentesi quadra aperta",backSlash:"Barra rovesciata",closeBracket:"Parentesi quadra chiusa",singleQuote:"Apostrofo"}); \ No newline at end of file 13openBracket:"Parentesi quadra aperta",backSlash:"Barra rovesciata",closeBracket:"Parentesi quadra chiusa",singleQuote:"Apostrofo"}); \ No newline at end of file
diff --git a/release/plugins/a11yhelp/dialogs/lang/ja.js b/release/plugins/a11yhelp/dialogs/lang/ja.js
index ec5ed67..892dca0 100644
--- a/release/plugins/a11yhelp/dialogs/lang/ja.js
+++ b/release/plugins/a11yhelp/dialogs/lang/ja.js
@@ -1,9 +1,9 @@
1/* 1/*
2 Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 For licensing, see LICENSE.md or http://ckeditor.com/license 3 For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang("a11yhelp","ja",{title:"ユーザー補助の説明",contents:"ヘルプ このダイアログを閉じるには ESCを押してください。",legend:[{name:"全般",items:[{name:"エディターツールバー",legend:"${toolbarFocus} を押すとツールバーのオン/オフ操作ができます。カーソルをツールバーのグループで移動させるにはTabかSHIFT+Tabを押します。グループ内でカーソルを移動させるには、右カーソルか左カーソルを押します。スペースキーやエンターを押すとボタンを有効/無効にすることができます。"},{name:"編集ダイアログ",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."}, 5CKEDITOR.plugins.setLang("a11yhelp","ja",{title:"ユーザー補助の説明",contents:"ヘルプ このダイアログを閉じるには ESCを押してください。",legend:[{name:"全般",items:[{name:"エディターツールバー",legend:"${toolbarFocus} を押すとツールバーのオン/オフ操作ができます。カーソルをツールバーのグループで移動させるにはTabかSHIFT+Tabを押します。グループ内でカーソルを移動させるには、右カーソルか左カーソルを押します。スペースキーやエンターを押すとボタンを有効/無効にすることができます。"},{name:"編集ダイアログ",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."},
6{name:"エディターのメニュー",legend:"${contextMenu} キーかAPPLICATION KEYを押すとコンテキストメニューが開きます。Tabか下カーソルでメニューのオプション選択が下に移動します。戻るには、SHIFT+Tabか上カーソルです。スペースもしくはENTERキーでメニューオプションを決定できます。現在選んでいるオプションのサブメニューを開くには、スペース、もしくは右カーソルを押します。サブメニューから親メニューに戻るには、ESCか左カーソルを押してください。ESCでコンテキストメニュー自体をキャンセルできます。"},{name:"エディターリストボックス",legend:"リストボックス内で移動するには、Tabか下カーソルで次のアイテムへ移動します。SHIFT+Tabで前のアイテムに戻ります。リストのオプションを選択するには、スペースもしくは、ENTERを押してください。リストボックスを閉じるには、ESCを押してください。"},{name:"エディター要素パスバー",legend:"${elementsPathFocus} を押すとエレメントパスバーを操作出来ます。Tabか右カーソルで次のエレメントを選択できます。前のエレメントを選択するには、SHIFT+Tabか左カーソルです。スペースもしくは、ENTERでエディタ内の対象エレメントを選択出来ます。"}]}, 6{name:"エディターのメニュー",legend:"${contextMenu} キーかAPPLICATION KEYを押すとコンテキストメニューが開きます。Tabか下カーソルでメニューのオプション選択が下に移動します。戻るには、SHIFT+Tabか上カーソルです。スペースもしくはENTERキーでメニューオプションを決定できます。現在選んでいるオプションのサブメニューを開くには、スペース、もしくは右カーソルを押します。サブメニューから親メニューに戻るには、ESCか左カーソルを押してください。ESCでコンテキストメニュー自体をキャンセルできます。"},{name:"エディターリストボックス",legend:"リストボックス内で移動するには、Tabか下カーソルで次のアイテムへ移動します。SHIFT+Tabで前のアイテムに戻ります。リストのオプションを選択するには、スペースもしくは、ENTERを押してください。リストボックスを閉じるには、ESCを押してください。"},{name:"エディター要素パスバー",legend:"${elementsPathFocus} を押すとエレメントパスバーを操作出来ます。Tabか右カーソルで次のエレメントを選択できます。前のエレメントを選択するには、SHIFT+Tabか左カーソルです。スペースもしくは、ENTERでエディタ内の対象エレメントを選択出来ます。"}]},
7{name:"コマンド",items:[{name:"元に戻す",legend:"${undo} をクリック"},{name:"やり直し",legend:"${redo} をクリック"},{name:"太字",legend:"${bold} をクリック"},{name:"斜体 ",legend:"${italic} をクリック"},{name:"下線",legend:"${underline} をクリック"},{name:"リンク",legend:"${link} をクリック"},{name:"ツールバーを縮める",legend:"${toolbarCollapse} をクリック"},{name:"前のカーソル移動のできないポイントへ",legend:"${accessPreviousSpace} を押すとカーソルより前にあるカーソルキーで入り込めないスペースへ移動できます。例えば、HRエレメントが2つ接している場合などです。離れた場所へは、複数回キーを押します。"},{name:"次のカーソル移動のできないポイントへ",legend:"${accessNextSpace} を押すとカーソルより後ろにあるカーソルキーで入り込めないスペースへ移動できます。例えば、HRエレメントが2つ接している場合などです。離れた場所へは、複数回キーを押します。"}, 7{name:"コマンド",items:[{name:"元に戻す",legend:"${undo} をクリック"},{name:"やり直し",legend:"${redo} をクリック"},{name:"太字",legend:"${bold} をクリック"},{name:"斜体 ",legend:"${italic} をクリック"},{name:"下線",legend:"${underline} をクリック"},{name:"リンク",legend:"${link} をクリック"},{name:"ツールバーをたたむ",legend:"${toolbarCollapse} をクリック"},{name:"前のカーソル移動のできないポイントへ",legend:"${accessPreviousSpace} を押すとカーソルより前にあるカーソルキーで入り込めないスペースへ移動できます。例えば、HRエレメントが2つ接している場合などです。離れた場所へは、複数回キーを押します。"},{name:"次のカーソルポイントへ移動する",legend:"${accessNextSpace} を押すとカーソルより後ろにあるカーソルキーで入り込めないスペースへ移動できます。例えば、HRエレメントが2つ接している場合などです。離れた場所へは、複数回キーを押します。"},
8{name:"ユーザー補助ヘルプ",legend:"${a11yHelp} をクリック"}]}],backspace:"Backspace",tab:"Tab",enter:"Enter",shift:"Shift",ctrl:"Ctrl",alt:"Alt",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",end:"End",home:"Home",leftArrow:"左矢印",upArrow:"上矢印",rightArrow:"右矢印",downArrow:"下矢印",insert:"Insert","delete":"Delete",leftWindowKey:"左Windowキー",rightWindowKey:"右のWindowキー",selectKey:"Select",numpad0:"Num 0",numpad1:"Num 1",numpad2:"Num 2",numpad3:"Num 3",numpad4:"Num 4",numpad5:"Num 5", 8{name:"ユーザー補助ヘルプ",legend:"${a11yHelp} をクリック"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",leftArrow:"左矢印",upArrow:"上矢印",rightArrow:"右矢印",downArrow:"下矢印",insert:"Insert",leftWindowKey:"左Windowキー",rightWindowKey:"右のWindowキー",selectKey:"Select",numpad0:"Num 0",numpad1:"Num 1",numpad2:"Num 2",numpad3:"Num 3",numpad4:"Num 4",numpad5:"Num 5",
9numpad6:"Num 6",numpad7:"Num 7",numpad8:"Num 8",numpad9:"Num 9",multiply:"掛ける",add:"足す",subtract:"引く",decimalPoint:"小数点",divide:"割る",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"セミコロン",equalSign:"イコール記号",comma:"カンマ",dash:"ダッシュ",period:"ピリオド",forwardSlash:"フォワードスラッシュ",graveAccent:"グレイヴアクセント",openBracket:"開きカッコ",backSlash:"バックスラッシュ",closeBracket:"閉じカッコ",singleQuote:"シングルクォート"}); \ No newline at end of file 9numpad6:"Num 6",numpad7:"Num 7",numpad8:"Num 8",numpad9:"Num 9",multiply:"掛ける",add:"足す",subtract:"引く",decimalPoint:"小数点",divide:"割る",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"セミコロン",equalSign:"イコール記号",comma:"カンマ",dash:"ダッシュ",period:"ピリオド",forwardSlash:"フォワードスラッシュ",graveAccent:"グレイヴアクセント",openBracket:"開きカッコ",backSlash:"バックスラッシュ",closeBracket:"閉じカッコ",singleQuote:"シングルクォート"}); \ No newline at end of file
diff --git a/release/plugins/a11yhelp/dialogs/lang/km.js b/release/plugins/a11yhelp/dialogs/lang/km.js
index 6b6e7a9..7d28f05 100644
--- a/release/plugins/a11yhelp/dialogs/lang/km.js
+++ b/release/plugins/a11yhelp/dialogs/lang/km.js
@@ -1,11 +1,11 @@
1/* 1/*
2 Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 For licensing, see LICENSE.md or http://ckeditor.com/license 3 For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang("a11yhelp","km",{title:"Accessibility Instructions",contents:"មាតិកា​ជំនួយ។ ដើម្បី​បិទ​ផ្ទាំង​នេះ សូម​ចុច ESC ។",legend:[{name:"ទូទៅ",items:[{name:"របារ​ឧបករណ៍​កម្មវិធី​និពន្ធ",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"ផ្ទាំង​កម្មវិធីនិពន្ធ",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."}, 5CKEDITOR.plugins.setLang("a11yhelp","km",{title:"Accessibility Instructions",contents:"មាតិកា​ជំនួយ។ ដើម្បី​បិទ​ផ្ទាំង​នេះ សូម​ចុច ESC ។",legend:[{name:"ទូទៅ",items:[{name:"របារ​ឧបករណ៍​កម្មវិធី​និពន្ធ",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"ផ្ទាំង​កម្មវិធីនិពន្ធ",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."},
6{name:"ម៉ីនុយបរិបទអ្នកកែសម្រួល",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."},{name:"ប្រអប់បញ្ជីអ្នកកែសម្រួល",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."}, 6{name:"ម៉ីនុយបរិបទអ្នកកែសម្រួល",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."},{name:"ប្រអប់បញ្ជីអ្នកកែសម្រួល",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."},
7{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]},{name:"ពាក្យបញ្ជា",items:[{name:"ការ​បញ្ជា​មិនធ្វើវិញ",legend:"ចុច ${undo}"},{name:"ការបញ្ជា​ធ្វើវិញ",legend:"ចុច ${redo}"},{name:"ការបញ្ជា​អក្សរ​ដិត",legend:"ចុច ${bold}"},{name:"ការបញ្ជា​អក្សរ​ទ្រេត",legend:"ចុច ${italic}"},{name:"ពាក្យបញ្ជា​បន្ទាត់​ពីក្រោម", 7{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]},{name:"ពាក្យបញ្ជា",items:[{name:"ការ​បញ្ជា​មិនធ្វើវិញ",legend:"ចុច ${undo}"},{name:"ការបញ្ជា​ធ្វើវិញ",legend:"ចុច ${redo}"},{name:"ការបញ្ជា​អក្សរ​ដិត",legend:"ចុច ${bold}"},{name:"ការបញ្ជា​អក្សរ​ទ្រេត",legend:"ចុច ${italic}"},{name:"ពាក្យបញ្ជា​បន្ទាត់​ពីក្រោម",
8legend:"ចុច ${underline}"},{name:"ពាក្យបញ្ជា​តំណ",legend:"ចុច ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, 8legend:"ចុច ${underline}"},{name:"ពាក្យបញ្ជា​តំណ",legend:"ចុច ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},
9{name:"ជំនួយ​ពី​ភាព​ងាយស្រួល",legend:"ជួយ ${a11yHelp}"}]}],backspace:"លុបថយក្រោយ",tab:"Tab",enter:"Enter",shift:"Shift",ctrl:"Ctrl",alt:"Alt",pause:"ផ្អាក",capslock:"Caps Lock",escape:"ចាកចេញ",pageUp:"ទំព័រ​លើ",pageDown:"ទំព័រ​ក្រោម",end:"ចុង",home:"ផ្ទះ",leftArrow:"ព្រួញ​ឆ្វេង",upArrow:"ព្រួញ​លើ",rightArrow:"ព្រួញ​ស្ដាំ",downArrow:"ព្រួញ​ក្រោម",insert:"បញ្ចូល","delete":"លុប",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"ជ្រើស​គ្រាប់​ចុច",numpad0:"Numpad 0",numpad1:"Numpad 1", 9{name:"ជំនួយ​ពី​ភាព​ងាយស្រួល",legend:"ជួយ ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"ផ្អាក",capslock:"Caps Lock",escape:"ចាកចេញ",pageUp:"ទំព័រ​លើ",pageDown:"ទំព័រ​ក្រោម",leftArrow:"ព្រួញ​ឆ្វេង",upArrow:"ព្រួញ​លើ",rightArrow:"ព្រួញ​ស្ដាំ",downArrow:"ព្រួញ​ក្រោម",insert:"បញ្ចូល",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"ជ្រើស​គ្រាប់​ចុច",numpad0:"Numpad 0",numpad1:"Numpad 1",
10numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"គុណ",add:"បន្ថែម",subtract:"ដក",decimalPoint:"ចំណុចទសភាគ",divide:"ចែក",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"បិទ​រំកិល",semiColon:"ចុច​ក្បៀស",equalSign:"សញ្ញា​អឺរ៉ូ",comma:"ក្បៀស",dash:"Dash",period:"ចុច",forwardSlash:"Forward Slash",graveAccent:"Grave Accent", 10numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"គុណ",add:"បន្ថែម",subtract:"ដក",decimalPoint:"ចំណុចទសភាគ",divide:"ចែក",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"បិទ​រំកិល",semiColon:"ចុច​ក្បៀស",equalSign:"សញ្ញា​អឺរ៉ូ",comma:"ក្បៀស",dash:"Dash",period:"ចុច",forwardSlash:"Forward Slash",graveAccent:"Grave Accent",
11openBracket:"តង្កៀប​បើក",backSlash:"Backslash",closeBracket:"តង្កៀប​បិទ",singleQuote:"បន្តក់​មួយ"}); \ No newline at end of file 11openBracket:"តង្កៀប​បើក",backSlash:"Backslash",closeBracket:"តង្កៀប​បិទ",singleQuote:"បន្តក់​មួយ"}); \ No newline at end of file
diff --git a/release/plugins/a11yhelp/dialogs/lang/ko.js b/release/plugins/a11yhelp/dialogs/lang/ko.js
index 9b2b070..e76eabf 100644
--- a/release/plugins/a11yhelp/dialogs/lang/ko.js
+++ b/release/plugins/a11yhelp/dialogs/lang/ko.js
@@ -1,10 +1,10 @@
1/* 1/*
2 Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 For licensing, see LICENSE.md or http://ckeditor.com/license 3 For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang("a11yhelp","ko",{title:"접근성 설명",contents:"도움말. 이 창을 닫으시려면 ESC 를 누르세요.",legend:[{name:"일반",items:[{name:"편집기 툴바",legend:"툴바를 탐색하시려면 ${toolbarFocus} 를 투르세요. 이전/다음 툴바 그룹으로 이동하시려면 TAB 키 또는 SHIFT+TAB 키를 누르세요. 이전/다음 툴바 버튼으로 이동하시려면 오른쪽 화살표 키 또는 왼쪽 화살표 키를 누르세요. 툴바 버튼을 활성화 하려면 SPACE 키 또는 ENTER 키를 누르세요."},{name:"편집기 다이얼로그",legend:"TAB 키를 누르면 다음 대화상자로 이동하고, SHIFT+TAB 키를 누르면 이전 대화상자로 이동합니다. 대화상자를 제출하려면 ENTER 키를 누르고, ESC 키를 누르면 대화상자를 취소합니다. 대화상자에 탭이 여러개 있을 때, ALT+F10 키 또는 TAB 키를 누르면 순서에 따라 탭 목록에 도달할 수 있습니다. 탭 목록에 초점이 맞을 때, 오른쪽과 왼쪽 화살표 키를 이용하면 각각 다음과 이전 탭으로 이동할 수 있습니다."}, 5CKEDITOR.plugins.setLang("a11yhelp","ko",{title:"접근성 설명",contents:"도움말. 이 창을 닫으시려면 ESC 를 누르세요.",legend:[{name:"일반",items:[{name:"편집기 툴바",legend:"툴바를 탐색하시려면 ${toolbarFocus} 를 투르세요. 이전/다음 툴바 그룹으로 이동하시려면 TAB 키 또는 SHIFT+TAB 키를 누르세요. 이전/다음 툴바 버튼으로 이동하시려면 오른쪽 화살표 키 또는 왼쪽 화살표 키를 누르세요. 툴바 버튼을 활성화 하려면 SPACE 키 또는 ENTER 키를 누르세요."},{name:"편집기 다이얼로그",legend:"TAB 키를 누르면 다음 대화상자로 이동하고, SHIFT+TAB 키를 누르면 이전 대화상자로 이동합니다. 대화상자를 제출하려면 ENTER 키를 누르고, ESC 키를 누르면 대화상자를 취소합니다. 대화상자에 탭이 여러개 있을 때, ALT+F10 키 또는 TAB 키를 누르면 순서에 따라 탭 목록에 도달할 수 있습니다. 탭 목록에 초점이 맞을 때, 오른쪽과 왼쪽 화살표 키를 이용하면 각각 다음과 이전 탭으로 이동할 수 있습니다."},
6{name:"편집기 환경 메뉴",legend:"${contextMenu} 또는 어플리케이션 키를 누르면 환경-메뉴를 열 수 있습니다. 환경-메뉴에서 TAB 키 또는 아래 화살표 키를 누르면 다음 메뉴 옵션으로 이동할 수 있습니다. 이전 옵션으로 이동은 SHIFT+TAB 키 또는 위 화살표 키를 눌러서 할 수 있습니다. 스페이스 키 또는 ENTER 키를 눌러서 메뉴 옵션을 선택할 수 있습니다. 스페이스 키 또는 ENTER 키 또는 오른쪽 화살표 키를 눌러서 하위 메뉴를 열 수 있습니다. 부모 메뉴 항목으로 돌아가려면 ESC 키 또는 왼쪽 화살표 키를 누릅니다. ESC 키를 눌러서 환경-메뉴를 닫습니다."},{name:"편집기 목록 박스",legend:"리스트-박스 내에서, 목록의 다음 항목으로 이동하려면 TAB 키 또는 아래쪽 화살표 키를 누릅니다. 목록의 이전 항목으로 이동하려면 SHIFT+TAB 키 또는 위쪽 화살표 키를 누릅니다. 스페이스 키 또는 ENTER 키를 누르면 목록의 해당 옵션을 선택합니다. ESC 키를 눌러서 리스트-박스를 닫을 수 있습니다."}, 6{name:"편집기 환경 메뉴",legend:"${contextMenu} 또는 어플리케이션 키를 누르면 환경-메뉴를 열 수 있습니다. 환경-메뉴에서 TAB 키 또는 아래 화살표 키를 누르면 다음 메뉴 옵션으로 이동할 수 있습니다. 이전 옵션으로 이동은 SHIFT+TAB 키 또는 위 화살표 키를 눌러서 할 수 있습니다. 스페이스 키 또는 ENTER 키를 눌러서 메뉴 옵션을 선택할 수 있습니다. 스페이스 키 또는 ENTER 키 또는 오른쪽 화살표 키를 눌러서 하위 메뉴를 열 수 있습니다. 부모 메뉴 항목으로 돌아가려면 ESC 키 또는 왼쪽 화살표 키를 누릅니다. ESC 키를 눌러서 환경-메뉴를 닫습니다."},{name:"편집기 목록 박스",legend:"리스트-박스 내에서, 목록의 다음 항목으로 이동하려면 TAB 키 또는 아래쪽 화살표 키를 누릅니다. 목록의 이전 항목으로 이동하려면 SHIFT+TAB 키 또는 위쪽 화살표 키를 누릅니다. 스페이스 키 또는 ENTER 키를 누르면 목록의 해당 옵션을 선택합니다. ESC 키를 눌러서 리스트-박스를 닫을 수 있습니다."},
7{name:"편집기 요소 경로 막대",legend:"${elementsPathFocus}를 눌러서 요소 경로 막대를 탐색할 수 있습니다. 다음 요소로 이동하려면 TAB 키 또는 오른쪽 화살표 키를 누릅니다. SHIFT+TAB 키 또는 왼쪽 화살표 키를 누르면 이전 버튼으로 이동할 수 있습니다. 스페이스 키나 ENTER 키를 누르면 편집기의 해당 항목을 선택합니다."}]},{name:"명령",items:[{name:" 명령 실행 취소",legend:"${undo} 누르시오"},{name:" 명령 다시 실행",legend:"${redo} 누르시오"},{name:" 굵게 명령",legend:"${bold} 누르시오"},{name:" 기울임 꼴 명령",legend:"${italic} 누르시오"},{name:" 밑줄 명령",legend:"${underline} 누르시오"},{name:" 링크 명령",legend:"${link} 누르시오"},{name:" 툴바 줄이기 명령",legend:"${toolbarCollapse} 누르시오"}, 7{name:"편집기 요소 경로 막대",legend:"${elementsPathFocus}를 눌러서 요소 경로 막대를 탐색할 수 있습니다. 다음 요소로 이동하려면 TAB 키 또는 오른쪽 화살표 키를 누릅니다. SHIFT+TAB 키 또는 왼쪽 화살표 키를 누르면 이전 버튼으로 이동할 수 있습니다. 스페이스 키나 ENTER 키를 누르면 편집기의 해당 항목을 선택합니다."}]},{name:"명령",items:[{name:" 명령 실행 취소",legend:"${undo} 누르시오"},{name:" 명령 다시 실행",legend:"${redo} 누르시오"},{name:" 굵게 명령",legend:"${bold} 누르시오"},{name:" 기울임 꼴 명령",legend:"${italic} 누르시오"},{name:" 밑줄 명령",legend:"${underline} 누르시오"},{name:" 링크 명령",legend:"${link} 누르시오"},{name:" 툴바 줄이기 명령",legend:"${toolbarCollapse} 누르시오"},
8{name:" 이전 포커스 공간 접근 명령",legend:"탈자 기호(^) 이전에 ${accessPreviousSpace} 를 누르면, 접근 불가능하면서 가장 가까운 포커스 영역에 접근합니다. 예를 들면, 두 인접한 HR 요소가 있습니다. 키 조합을 반복해서 멀리있는 포커스 영역들에 도달할 수 있습니다."},{name:"다음 포커스 공간 접근 명령",legend:"탈자 기호(^) 다음에 ${accessNextSpace} 를 누르면, 접근 불가능하면서 가장 가까운 포커스 영역에 접근합니다. 예를 들면, 두 인접한 HR 요소가 있습니다. 키 조합을 반복해서 멀리있는 포커스 영역들에 도달할 수 있습니다. "},{name:" 접근성 도움말",legend:"${a11yHelp} 누르시오"}]}],backspace:"Backspace 키",tab:"탭 키",enter:"엔터 키",shift:"시프트 키",ctrl:"컨트롤 키",alt:"알트 키",pause:"일시정지 키",capslock:"캡스 록 키", 8{name:" 이전 포커스 공간 접근 명령",legend:"탈자 기호(^) 이전에 ${accessPreviousSpace} 를 누르면, 접근 불가능하면서 가장 가까운 포커스 영역에 접근합니다. 예를 들면, 두 인접한 HR 요소가 있습니다. 키 조합을 반복해서 멀리있는 포커스 영역들에 도달할 수 있습니다."},{name:"다음 포커스 공간 접근 명령",legend:"탈자 기호(^) 다음에 ${accessNextSpace} 를 누르면, 접근 불가능하면서 가장 가까운 포커스 영역에 접근합니다. 예를 들면, 두 인접한 HR 요소가 있습니다. 키 조합을 반복해서 멀리있는 포커스 영역들에 도달할 수 있습니다. "},{name:" 접근성 도움말",legend:"${a11yHelp} 누르시오"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],
9escape:"이스케이프 키",pageUp:"페이지 업 키",pageDown:"페이지 다운 키",end:"엔드 키",home:"홈 키",leftArrow:"왼쪽 화살표 키",upArrow:"위쪽 화살표 키",rightArrow:"오른쪽 화살표 키",downArrow:"아래쪽 화살표 키",insert:"인서트 키","delete":"삭제 키",leftWindowKey:"왼쪽 윈도우 키",rightWindowKey:"오른쪽 윈도우 키",selectKey:"셀렉트 키",numpad0:"숫자 패드 0 키",numpad1:"숫자 패드 1 키",numpad2:"숫자 패드 2 키",numpad3:"숫자 패드 3 키",numpad4:"숫자 패드 4 키",numpad5:"숫자 패드 5 키",numpad6:"숫자 패드 6 키",numpad7:"숫자 패드 7 키",numpad8:"숫자 패드 8 키",numpad9:"숫자 패드 9 키",multiply:"곱셈(*) 키",add:"덧셈(+) 키",subtract:"뺄셈(-) 키", 9tab:"탭 키",pause:"일시정지 키",capslock:"캡스 록 키",escape:"이스케이프 키",pageUp:"페이지 업 키",pageDown:"페이지 다운 키",leftArrow:"왼쪽 화살표 키",upArrow:"위쪽 화살표 키",rightArrow:"오른쪽 화살표 키",downArrow:"아래쪽 화살표 키",insert:"인서트 키",leftWindowKey:"왼쪽 윈도우 키",rightWindowKey:"오른쪽 윈도우 키",selectKey:"셀렉트 키",numpad0:"숫자 패드 0 키",numpad1:"숫자 패드 1 키",numpad2:"숫자 패드 2 키",numpad3:"숫자 패드 3 키",numpad4:"숫자 패드 4 키",numpad5:"숫자 패드 5 키",numpad6:"숫자 패드 6 키",numpad7:"숫자 패드 7 키",numpad8:"숫자 패드 8 키",numpad9:"숫자 패드 9 키",multiply:"곱셈(*) 키",add:"덧셈(+) 키",subtract:"뺄셈(-) 키",
10decimalPoint:"온점(.) 키",divide:"나눗셈(/) 키",f1:"F1 키",f2:"F2 키",f3:"F3 키",f4:"F4 키",f5:"F5 키",f6:"F6 키",f7:"F7 키",f8:"F8 키",f9:"F9 키",f10:"F10 키",f11:"F11 키",f12:"F12 키",numLock:"Num Lock 키",scrollLock:"Scroll Lock 키",semiColon:"세미콜론(;) 키",equalSign:"등호(\x3d) 키",comma:"쉼표(,) 키",dash:"대시(-) 키",period:"온점(.) 키",forwardSlash:"슬래시(/) 키",graveAccent:"억음 악센트(`) 키",openBracket:"브라켓 열기([) 키",backSlash:"역슬래시(\\\\) 키",closeBracket:"브라켓 닫기(]) 키",singleQuote:"외 따옴표(') 키"}); \ No newline at end of file 10decimalPoint:"온점(.) 키",divide:"나눗셈(/) 키",f1:"F1 키",f2:"F2 키",f3:"F3 키",f4:"F4 키",f5:"F5 키",f6:"F6 키",f7:"F7 키",f8:"F8 키",f9:"F9 키",f10:"F10 키",f11:"F11 키",f12:"F12 키",numLock:"Num Lock 키",scrollLock:"Scroll Lock 키",semiColon:"세미콜론(;) 키",equalSign:"등호(\x3d) 키",comma:"쉼표(,) 키",dash:"대시(-) 키",period:"온점(.) 키",forwardSlash:"슬래시(/) 키",graveAccent:"억음 악센트(`) 키",openBracket:"브라켓 열기([) 키",backSlash:"역슬래시(\\\\) 키",closeBracket:"브라켓 닫기(]) 키",singleQuote:"외 따옴표(') 키"}); \ No newline at end of file
diff --git a/release/plugins/a11yhelp/dialogs/lang/ku.js b/release/plugins/a11yhelp/dialogs/lang/ku.js
index e73789b..d0689e1 100644
--- a/release/plugins/a11yhelp/dialogs/lang/ku.js
+++ b/release/plugins/a11yhelp/dialogs/lang/ku.js
@@ -1,11 +1,11 @@
1/* 1/*
2 Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 For licensing, see LICENSE.md or http://ckeditor.com/license 3 For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang("a11yhelp","ku",{title:"ڕێنمای لەبەردەستدابوون",contents:"پێکهاتەی یارمەتی. کلیك ESC بۆ داخستنی ئەم دیالۆگه.",legend:[{name:"گشتی",items:[{name:"تووڵامرازی دەستكاریكەر",legend:"کلیك ${toolbarFocus} بۆ ڕابەری تووڵامراز. بۆ گواستنەوەی پێشوو داهاتووی گرووپی تووڵامرازی داگرتنی کلیلی TAB لەگەڵ‌ SHIFT+TAB. بۆ گواستنەوەی پێشوو داهاتووی دووگمەی تووڵامرازی لەڕێی کلیلی تیری دەستی ڕاست یان کلیلی تیری دەستی چەپ. کلیکی کلیلی SPACE یان ENTER بۆ چالاککردنی دووگمەی تووڵامراز."},{name:"دیالۆگی دەستكاریكەر", 5CKEDITOR.plugins.setLang("a11yhelp","ku",{title:"ڕێنمای لەبەردەستدابوون",contents:"پێکهاتەی یارمەتی. کلیك ESC بۆ داخستنی ئەم دیالۆگه.",legend:[{name:"گشتی",items:[{name:"تووڵامرازی دەستكاریكەر",legend:"کلیك ${toolbarFocus} بۆ ڕابەری تووڵامراز. بۆ گواستنەوەی پێشوو داهاتووی گرووپی تووڵامرازی داگرتنی کلیلی TAB لەگەڵ‌ SHIFT+TAB. بۆ گواستنەوەی پێشوو داهاتووی دووگمەی تووڵامرازی لەڕێی کلیلی تیری دەستی ڕاست یان کلیلی تیری دەستی چەپ. کلیکی کلیلی SPACE یان ENTER بۆ چالاککردنی دووگمەی تووڵامراز."},{name:"دیالۆگی دەستكاریكەر",
6legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."},{name:"پێڕستی سەرنووسەر",legend:"کلیك ${contextMenu} یان دوگمەی لیسته‌(Menu) بۆ کردنەوەی لیستەی دەق. بۆ چوونە هەڵبژاردەیەکی تر له‌ لیسته‌ کلیکی کلیلی TAB یان کلیلی تیری ڕوو لەخوارەوه‌ بۆ چوون بۆ هەڵبژاردەی پێشوو کلیکی کلیلی SHIFT+TAB یان کلیلی تیری ڕوو له‌ سەرەوە. داگرتنی کلیلی SPACE یان ENTER بۆ هەڵبژاردنی هەڵبژاردەی لیسته‌. بۆ کردنەوەی لقی ژێر لیسته‌ لەهەڵبژاردەی لیستە کلیکی کلیلی SPACE یان ENTER یان کلیلی تیری دەستی ڕاست. بۆ گەڕانەوه بۆ سەرەوەی لیسته‌ کلیکی کلیلی ESC یان کلیلی تیری دەستی چەپ. بۆ داخستنی لیستە کلیكی کلیلی ESC بکە."}, 6legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."},{name:"پێڕستی سەرنووسەر",legend:"کلیك ${contextMenu} یان دوگمەی لیسته‌(Menu) بۆ کردنەوەی لیستەی دەق. بۆ چوونە هەڵبژاردەیەکی تر له‌ لیسته‌ کلیکی کلیلی TAB یان کلیلی تیری ڕوو لەخوارەوه‌ بۆ چوون بۆ هەڵبژاردەی پێشوو کلیکی کلیلی SHIFT+TAB یان کلیلی تیری ڕوو له‌ سەرەوە. داگرتنی کلیلی SPACE یان ENTER بۆ هەڵبژاردنی هەڵبژاردەی لیسته‌. بۆ کردنەوەی لقی ژێر لیسته‌ لەهەڵبژاردەی لیستە کلیکی کلیلی SPACE یان ENTER یان کلیلی تیری دەستی ڕاست. بۆ گەڕانەوه بۆ سەرەوەی لیسته‌ کلیکی کلیلی ESC یان کلیلی تیری دەستی چەپ. بۆ داخستنی لیستە کلیكی کلیلی ESC بکە."},
7{name:"لیستی سنووقی سەرنووسەر",legend:"لەناو سنوقی لیست, چۆن بۆ هەڵنبژاردەی لیستێکی تر کلیکی کلیلی TAB یان کلیلی تیری ڕوو لەخوار. چوون بۆ هەڵبژاردەی لیستی پێشوو کلیکی کلیلی SHIFT+TAB یان کلیلی تیری ڕوو لەسەرەوه‌. کلیکی کلیلی SPACE یان ENTER بۆ دیاریکردنی ‌هەڵبژاردەی لیست. کلیکی کلیلی ESC بۆ داخستنی سنوقی لیست."},{name:"تووڵامرازی توخم",legend:"کلیك ${elementsPathFocus} بۆ ڕابەری تووڵامرازی توخمەکان. چوون بۆ دوگمەی توخمێکی تر کلیکی کلیلی TAB یان کلیلی تیری دەستی ڕاست. چوون بۆ دوگمەی توخمی پێشوو کلیلی SHIFT+TAB یان کلیکی کلیلی تیری دەستی چەپ. داگرتنی کلیلی SPACE یان ENTER بۆ دیاریکردنی توخمەکه‌ لەسەرنووسه."}]}, 7{name:"لیستی سنووقی سەرنووسەر",legend:"لەناو سنوقی لیست, چۆن بۆ هەڵنبژاردەی لیستێکی تر کلیکی کلیلی TAB یان کلیلی تیری ڕوو لەخوار. چوون بۆ هەڵبژاردەی لیستی پێشوو کلیکی کلیلی SHIFT+TAB یان کلیلی تیری ڕوو لەسەرەوه‌. کلیکی کلیلی SPACE یان ENTER بۆ دیاریکردنی ‌هەڵبژاردەی لیست. کلیکی کلیلی ESC بۆ داخستنی سنوقی لیست."},{name:"تووڵامرازی توخم",legend:"کلیك ${elementsPathFocus} بۆ ڕابەری تووڵامرازی توخمەکان. چوون بۆ دوگمەی توخمێکی تر کلیکی کلیلی TAB یان کلیلی تیری دەستی ڕاست. چوون بۆ دوگمەی توخمی پێشوو کلیلی SHIFT+TAB یان کلیکی کلیلی تیری دەستی چەپ. داگرتنی کلیلی SPACE یان ENTER بۆ دیاریکردنی توخمەکه‌ لەسەرنووسه."}]},
8{name:"فەرمانەکان",items:[{name:"پووچکردنەوەی فەرمان",legend:"کلیك ${undo}"},{name:"هەڵگەڕانەوەی فەرمان",legend:"کلیك ${redo}"},{name:"فەرمانی دەقی قەڵەو",legend:"کلیك ${bold}"},{name:"فەرمانی دەقی لار",legend:"کلیك ${italic}"},{name:"فەرمانی ژێرهێڵ",legend:"کلیك ${underline}"},{name:"فەرمانی به‌ستەر",legend:"کلیك ${link}"},{name:"شاردەنەوەی تووڵامراز",legend:"کلیك ${toolbarCollapse}"},{name:"چوونەناو سەرنجدانی پێشوی فەرمانی بۆشایی",legend:"کلیک ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, 8{name:"فەرمانەکان",items:[{name:"پووچکردنەوەی فەرمان",legend:"کلیك ${undo}"},{name:"هەڵگەڕانەوەی فەرمان",legend:"کلیك ${redo}"},{name:"فەرمانی دەقی قەڵەو",legend:"کلیك ${bold}"},{name:"فەرمانی دەقی لار",legend:"کلیك ${italic}"},{name:"فەرمانی ژێرهێڵ",legend:"کلیك ${underline}"},{name:"فەرمانی به‌ستەر",legend:"کلیك ${link}"},{name:"شاردەنەوەی تووڵامراز",legend:"کلیك ${toolbarCollapse}"},{name:"چوونەناو سەرنجدانی پێشوی فەرمانی بۆشایی",legend:"کلیک ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},
9{name:"چوونەناو سەرنجدانی داهاتووی فەرمانی بۆشایی",legend:"کلیک ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:"دەستپێگەیشتنی یارمەتی",legend:"کلیك ${a11yHelp}"}]}],backspace:"Backspace",tab:"Tab",enter:"Enter",shift:"Shift",ctrl:"Ctrl",alt:"Alt",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",end:"End",home:"Home",leftArrow:"Left Arrow", 9{name:"چوونەناو سەرنجدانی داهاتووی فەرمانی بۆشایی",legend:"کلیک ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:"دەستپێگەیشتنی یارمەتی",legend:"کلیك ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",
10upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert","delete":"Delete",leftWindowKey:"پەنجەرەی چەپ",rightWindowKey:"پەنجەرەی ڕاست",selectKey:"Select",numpad0:"Numpad 0",numpad1:"1",numpad2:"2",numpad3:"3",numpad4:"4",numpad5:"5",numpad6:"6",numpad7:"7",numpad8:"8",numpad9:"9",multiply:"*",add:"+",subtract:"-",decimalPoint:".",divide:"/",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock", 10leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert",leftWindowKey:"پەنجەرەی چەپ",rightWindowKey:"پەنجەرەی ڕاست",selectKey:"Select",numpad0:"Numpad 0",numpad1:"1",numpad2:"2",numpad3:"3",numpad4:"4",numpad5:"5",numpad6:"6",numpad7:"7",numpad8:"8",numpad9:"9",multiply:"*",add:"+",subtract:"-",decimalPoint:".",divide:"/",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",
11semiColon:";",equalSign:"\x3d",comma:",",dash:"-",period:".",forwardSlash:"/",graveAccent:"`",openBracket:"[",backSlash:"\\\\",closeBracket:"}",singleQuote:"'"}); \ No newline at end of file 11semiColon:";",equalSign:"\x3d",comma:",",dash:"-",period:".",forwardSlash:"/",graveAccent:"`",openBracket:"[",backSlash:"\\\\",closeBracket:"}",singleQuote:"'"}); \ No newline at end of file
diff --git a/release/plugins/a11yhelp/dialogs/lang/lt.js b/release/plugins/a11yhelp/dialogs/lang/lt.js
index ffabb15..89c90bc 100644
--- a/release/plugins/a11yhelp/dialogs/lang/lt.js
+++ b/release/plugins/a11yhelp/dialogs/lang/lt.js
@@ -1,11 +1,11 @@
1/* 1/*
2 Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 For licensing, see LICENSE.md or http://ckeditor.com/license 3 For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang("a11yhelp","lt",{title:"Accessibility Instructions",contents:"Help Contents. To close this dialog press ESC.",legend:[{name:"Bendros savybės",items:[{name:"Editor Toolbar",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"Editor Dialog",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."}, 5CKEDITOR.plugins.setLang("a11yhelp","lt",{title:"Accessibility Instructions",contents:"Help Contents. To close this dialog press ESC.",legend:[{name:"Bendros savybės",items:[{name:"Editor Toolbar",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"Editor Dialog",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."},
6{name:"Editor Context Menu",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."},{name:"Editor List Box",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."}, 6{name:"Editor Context Menu",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."},{name:"Editor List Box",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."},
7{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]},{name:"Commands",items:[{name:" Undo command",legend:"Press ${undo}"},{name:" Redo command",legend:"Press ${redo}"},{name:" Bold command",legend:"Press ${bold}"},{name:" Italic command",legend:"Press ${italic}"},{name:" Underline command", 7{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]},{name:"Commands",items:[{name:" Undo command",legend:"Press ${undo}"},{name:" Redo command",legend:"Press ${redo}"},{name:" Bold command",legend:"Press ${bold}"},{name:" Italic command",legend:"Press ${italic}"},{name:" Underline command",
8legend:"Press ${underline}"},{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, 8legend:"Press ${underline}"},{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},
9{name:" Accessibility Help",legend:"Press ${a11yHelp}"}]}],backspace:"Backspace",tab:"Tab",enter:"Enter",shift:"Shift",ctrl:"Ctrl",alt:"Alt",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",end:"End",home:"Home",leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert","delete":"Delete",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1", 9{name:" Accessibility Help",legend:"Press ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1",
10numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash", 10numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash",
11graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"}); \ No newline at end of file 11graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"}); \ No newline at end of file
diff --git a/release/plugins/a11yhelp/dialogs/lang/lv.js b/release/plugins/a11yhelp/dialogs/lang/lv.js
index 873f6e4..24e6007 100644
--- a/release/plugins/a11yhelp/dialogs/lang/lv.js
+++ b/release/plugins/a11yhelp/dialogs/lang/lv.js
@@ -1,5 +1,5 @@
1/* 1/*
2 Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 For licensing, see LICENSE.md or http://ckeditor.com/license 3 For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang("a11yhelp","lv",{title:"Pieejamības instrukcija",contents:"Palīdzības saturs. Lai aizvērtu ciet šo dialogu nospiediet ESC.",legend:[{name:"Galvenais",items:[{name:"Redaktora rīkjosla",legend:"Nospiediet ${toolbarFocus} lai pārvietotos uz rīkjoslu. Lai pārvietotos uz nākošo vai iepriekšējo rīkjoslas grupu izmantojiet pogu TAB un SHIFT+TAB. Lai pārvietotos uz nākošo vai iepriekšējo rīkjoslas pogu izmantojiet Kreiso vai Labo bultiņu. Nospiediet Atstarpi vai ENTER lai aktivizētu rīkjosla pogu."}, 5CKEDITOR.plugins.setLang("a11yhelp","lv",{title:"Pieejamības instrukcija",contents:"Palīdzības saturs. Lai aizvērtu ciet šo dialogu nospiediet ESC.",legend:[{name:"Galvenais",items:[{name:"Redaktora rīkjosla",legend:"Nospiediet ${toolbarFocus} lai pārvietotos uz rīkjoslu. Lai pārvietotos uz nākošo vai iepriekšējo rīkjoslas grupu izmantojiet pogu TAB un SHIFT+TAB. Lai pārvietotos uz nākošo vai iepriekšējo rīkjoslas pogu izmantojiet Kreiso vai Labo bultiņu. Nospiediet Atstarpi vai ENTER lai aktivizētu rīkjosla pogu."},
@@ -7,6 +7,6 @@ CKEDITOR.plugins.setLang("a11yhelp","lv",{title:"Pieejamības instrukcija",conte
7{name:"Redaktora saraksta lauks",legend:"Saraksta laukā, lai pārvietotos uz nākošo saraksta elementu nospiediet TAB vai pogu Bultiņa uz leju. Lai pārvietotos uz iepriekšējo saraksta elementu nospiediet SHIFT+TAB vai pogu Bultiņa uz augšu. Nospiediet SPACE vai ENTER lai izvēlētos saraksta opcijas. Nospiediet ESC lai aizvērtu saraksta lauku."},{name:"Redaktora elementa ceļa josla",legend:"Nospiediet ${elementsPathFocus} lai pārvietotos uz elementa ceļa joslu. Lai pārvietotos uz nākošo elementa pogu izmantojiet TAB vai Labo bultiņu. Lai pārvietotos uz iepriekšējo elementa pogu izmantojiet SHIFT+TAB vai Kreiso bultiņu. Nospiediet SPACE vai ENTER lai izvēlētos elementu redaktorā."}]}, 7{name:"Redaktora saraksta lauks",legend:"Saraksta laukā, lai pārvietotos uz nākošo saraksta elementu nospiediet TAB vai pogu Bultiņa uz leju. Lai pārvietotos uz iepriekšējo saraksta elementu nospiediet SHIFT+TAB vai pogu Bultiņa uz augšu. Nospiediet SPACE vai ENTER lai izvēlētos saraksta opcijas. Nospiediet ESC lai aizvērtu saraksta lauku."},{name:"Redaktora elementa ceļa josla",legend:"Nospiediet ${elementsPathFocus} lai pārvietotos uz elementa ceļa joslu. Lai pārvietotos uz nākošo elementa pogu izmantojiet TAB vai Labo bultiņu. Lai pārvietotos uz iepriekšējo elementa pogu izmantojiet SHIFT+TAB vai Kreiso bultiņu. Nospiediet SPACE vai ENTER lai izvēlētos elementu redaktorā."}]},
8{name:"Komandas",items:[{name:"Komanda atcelt darbību",legend:"Nospiediet ${undo}"},{name:"Komanda atkārtot darbību",legend:"Nospiediet ${redo}"},{name:"Treknraksta komanda",legend:"Nospiediet ${bold}"},{name:"Kursīva komanda",legend:"Nospiediet ${italic}"},{name:"Apakšsvītras komanda ",legend:"Nospiediet ${underline}"},{name:"Hipersaites komanda",legend:"Nospiediet ${link}"},{name:"Rīkjoslas aizvēršanas komanda",legend:"Nospiediet ${toolbarCollapse}"},{name:"Piekļūt iepriekšējai fokusa vietas komandai", 8{name:"Komandas",items:[{name:"Komanda atcelt darbību",legend:"Nospiediet ${undo}"},{name:"Komanda atkārtot darbību",legend:"Nospiediet ${redo}"},{name:"Treknraksta komanda",legend:"Nospiediet ${bold}"},{name:"Kursīva komanda",legend:"Nospiediet ${italic}"},{name:"Apakšsvītras komanda ",legend:"Nospiediet ${underline}"},{name:"Hipersaites komanda",legend:"Nospiediet ${link}"},{name:"Rīkjoslas aizvēršanas komanda",legend:"Nospiediet ${toolbarCollapse}"},{name:"Piekļūt iepriekšējai fokusa vietas komandai",
9legend:"Nospiediet ${accessPreviousSpace} lai piekļūtu tuvākajai nepieejamajai fokusa vietai pirms kursora. Piemēram: diviem blakus esošiem līnijas HR elementiem. Atkārtojiet taustiņu kombināciju lai piekļūtu pie tālākām vietām."},{name:"Piekļūt nākošā fokusa apgabala komandai",legend:"Nospiediet ${accessNextSpace} lai piekļūtu tuvākajai nepieejamajai fokusa vietai pēc kursora. Piemēram: diviem blakus esošiem līnijas HR elementiem. Atkārtojiet taustiņu kombināciju lai piekļūtu pie tālākām vietām."}, 9legend:"Nospiediet ${accessPreviousSpace} lai piekļūtu tuvākajai nepieejamajai fokusa vietai pirms kursora. Piemēram: diviem blakus esošiem līnijas HR elementiem. Atkārtojiet taustiņu kombināciju lai piekļūtu pie tālākām vietām."},{name:"Piekļūt nākošā fokusa apgabala komandai",legend:"Nospiediet ${accessNextSpace} lai piekļūtu tuvākajai nepieejamajai fokusa vietai pēc kursora. Piemēram: diviem blakus esošiem līnijas HR elementiem. Atkārtojiet taustiņu kombināciju lai piekļūtu pie tālākām vietām."},
10{name:"Pieejamības palīdzība",legend:"Nospiediet ${a11yHelp}"}]}],backspace:"Backspace",tab:"Tab",enter:"Enter",shift:"Shift",ctrl:"Ctrl",alt:"Alt",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",end:"End",home:"Home",leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert","delete":"Delete",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1", 10{name:"Pieejamības palīdzība",legend:"Nospiediet ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1",
11numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash", 11numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash",
12graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"}); \ No newline at end of file 12graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"}); \ No newline at end of file
diff --git a/release/plugins/a11yhelp/dialogs/lang/mk.js b/release/plugins/a11yhelp/dialogs/lang/mk.js
index ad67570..ec2bdc6 100644
--- a/release/plugins/a11yhelp/dialogs/lang/mk.js
+++ b/release/plugins/a11yhelp/dialogs/lang/mk.js
@@ -1,11 +1,11 @@
1/* 1/*
2 Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 For licensing, see LICENSE.md or http://ckeditor.com/license 3 For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang("a11yhelp","mk",{title:"Инструкции за пристапност",contents:"Содржина на делот за помош. За да го затворите овој дијалог притиснете ESC.",legend:[{name:"Општо",items:[{name:"Мени за уредувачот",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"Дијалот за едиторот", 5CKEDITOR.plugins.setLang("a11yhelp","mk",{title:"Инструкции за пристапност",contents:"Содржина на делот за помош. За да го затворите овој дијалог притиснете ESC.",legend:[{name:"Општо",items:[{name:"Мени за уредувачот",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"Дијалот за едиторот",
6legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."},{name:"Контекст-мени на уредувачот",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."}, 6legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."},{name:"Контекст-мени на уредувачот",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."},
7{name:"Editor List Box",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."},{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]}, 7{name:"Editor List Box",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."},{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]},
8{name:"Наредби",items:[{name:" Undo command",legend:"Press ${undo}"},{name:" Redo command",legend:"Press ${redo}"},{name:" Bold command",legend:"Press ${bold}"},{name:" Italic command",legend:"Press ${italic}"},{name:" Underline command",legend:"Press ${underline}"},{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, 8{name:"Наредби",items:[{name:" Undo command",legend:"Press ${undo}"},{name:" Redo command",legend:"Press ${redo}"},{name:" Bold command",legend:"Press ${bold}"},{name:" Italic command",legend:"Press ${italic}"},{name:" Underline command",legend:"Press ${underline}"},{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},
9{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Accessibility Help",legend:"Press ${a11yHelp}"}]}],backspace:"Backspace",tab:"Tab",enter:"Enter",shift:"Shift",ctrl:"Ctrl",alt:"Alt",pause:"Пауза",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Up",end:"End",home:"Home",leftArrow:"Стрелка лево", 9{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Accessibility Help",legend:"Press ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Пауза",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Up",
10upArrow:"Стрелка горе",rightArrow:"Стрелка десно",downArrow:"Стрелка доле",insert:"Insert","delete":"Delete",leftWindowKey:"Лево Windows копче",rightWindowKey:"Десно Windows копче",selectKey:"Select копче",numpad0:"Нум. таст. 0",numpad1:"Нум. таст. 1",numpad2:"Нум. таст. 2",numpad3:"Нум. таст. 3",numpad4:"Нум. таст. 4",numpad5:"Нум. таст. 5",numpad6:"Нум. таст. 6",numpad7:"Нум. таст. 7",numpad8:"Нум. таст. 8",numpad9:"Нум. таст. 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point", 10leftArrow:"Стрелка лево",upArrow:"Стрелка горе",rightArrow:"Стрелка десно",downArrow:"Стрелка доле",insert:"Insert",leftWindowKey:"Лево Windows копче",rightWindowKey:"Десно Windows копче",selectKey:"Select копче",numpad0:"Нум. таст. 0",numpad1:"Нум. таст. 1",numpad2:"Нум. таст. 2",numpad3:"Нум. таст. 3",numpad4:"Нум. таст. 4",numpad5:"Нум. таст. 5",numpad6:"Нум. таст. 6",numpad7:"Нум. таст. 7",numpad8:"Нум. таст. 8",numpad9:"Нум. таст. 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point",
11divide:"Divide",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash",graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"}); \ No newline at end of file 11divide:"Divide",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash",graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"}); \ No newline at end of file
diff --git a/release/plugins/a11yhelp/dialogs/lang/mn.js b/release/plugins/a11yhelp/dialogs/lang/mn.js
index c889857..09c4bd2 100644
--- a/release/plugins/a11yhelp/dialogs/lang/mn.js
+++ b/release/plugins/a11yhelp/dialogs/lang/mn.js
@@ -1,11 +1,11 @@
1/* 1/*
2 Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 For licensing, see LICENSE.md or http://ckeditor.com/license 3 For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang("a11yhelp","mn",{title:"Accessibility Instructions",contents:"Help Contents. To close this dialog press ESC.",legend:[{name:"Ерөнхий",items:[{name:"Editor Toolbar",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"Editor Dialog",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."}, 5CKEDITOR.plugins.setLang("a11yhelp","mn",{title:"Accessibility Instructions",contents:"Help Contents. To close this dialog press ESC.",legend:[{name:"Ерөнхий",items:[{name:"Editor Toolbar",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"Editor Dialog",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."},
6{name:"Editor Context Menu",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."},{name:"Editor List Box",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."}, 6{name:"Editor Context Menu",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."},{name:"Editor List Box",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."},
7{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]},{name:"Commands",items:[{name:" Undo command",legend:"Press ${undo}"},{name:" Redo command",legend:"Press ${redo}"},{name:" Bold command",legend:"Press ${bold}"},{name:" Italic command",legend:"Press ${italic}"},{name:" Underline command", 7{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]},{name:"Commands",items:[{name:" Undo command",legend:"Press ${undo}"},{name:" Redo command",legend:"Press ${redo}"},{name:" Bold command",legend:"Press ${bold}"},{name:" Italic command",legend:"Press ${italic}"},{name:" Underline command",
8legend:"Press ${underline}"},{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, 8legend:"Press ${underline}"},{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},
9{name:" Accessibility Help",legend:"Press ${a11yHelp}"}]}],backspace:"Backspace",tab:"Tab",enter:"Enter",shift:"Shift",ctrl:"Ctrl",alt:"Alt",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",end:"End",home:"Home",leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert","delete":"Delete",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1", 9{name:" Accessibility Help",legend:"Press ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1",
10numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash", 10numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash",
11graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"}); \ No newline at end of file 11graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"}); \ No newline at end of file
diff --git a/release/plugins/a11yhelp/dialogs/lang/nb.js b/release/plugins/a11yhelp/dialogs/lang/nb.js
index 819372d..e8a2a80 100644
--- a/release/plugins/a11yhelp/dialogs/lang/nb.js
+++ b/release/plugins/a11yhelp/dialogs/lang/nb.js
@@ -1,12 +1,12 @@
1/* 1/*
2 Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 For licensing, see LICENSE.md or http://ckeditor.com/license 3 For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang("a11yhelp","nb",{title:"Instruksjoner for tilgjengelighet",contents:"Innhold for hjelp. Trykk ESC for å lukke denne dialogen.",legend:[{name:"Generelt",items:[{name:"Verktøylinje for editor",legend:"Trykk ${toolbarFocus} for å navigere til verktøylinjen. Flytt til neste og forrige verktøylinjegruppe med TAB og SHIFT+TAB. Flytt til neste og forrige verktøylinjeknapp med HØYRE PILTAST og VENSTRE PILTAST. Trykk MELLOMROM eller ENTER for å aktivere verktøylinjeknappen."},{name:"Dialog for editor", 5CKEDITOR.plugins.setLang("a11yhelp","nb",{title:"Instruksjoner for tilgjengelighet",contents:"Innhold for hjelp. Trykk ESC for å lukke denne dialogen.",legend:[{name:"Generelt",items:[{name:"Verktøylinje for editor",legend:"Trykk ${toolbarFocus} for å navigere til verktøylinjen. Flytt til neste og forrige verktøylinjegruppe med TAB og SHIFT+TAB. Flytt til neste og forrige verktøylinjeknapp med HØYRE PILTAST og VENSTRE PILTAST. Trykk MELLOMROM eller ENTER for å aktivere verktøylinjeknappen."},{name:"Dialog for editor",
6legend:"Mens du er i en dialog, trykk TAB for å navigere til neste dialogelement, trykk SHIFT+TAB for å flytte til forrige dialogelement, trykk ENTER for å akseptere dialogen, trykk ESC for å avbryte dialogen. Når en dialog har flere faner, kan fanelisten nås med enten ALT+F10 eller med TAB. Når fanelisten er fokusert, går man til neste og forrige fane med henholdsvis HØYRE og VENSTRE PILTAST."},{name:"Kontekstmeny for editor",legend:"Trykk ${contextMenu} eller MENYKNAPP for å åpne kontekstmeny. Gå til neste alternativ i menyen med TAB eller PILTAST NED. Gå til forrige alternativ med SHIFT+TAB eller PILTAST OPP. Trykk MELLOMROM eller ENTER for å velge menyalternativet. Åpne undermenyen på valgt alternativ med MELLOMROM eller ENTER eller HØYRE PILTAST. Gå tilbake til overordnet menyelement med ESC eller VENSTRE PILTAST. Lukk kontekstmenyen med ESC."}, 6legend:"Mens du er i en dialog, trykk TAB for å navigere til neste dialogelement, trykk SHIFT+TAB for å flytte til forrige dialogelement, trykk ENTER for å akseptere dialogen, trykk ESC for å avbryte dialogen. Når en dialog har flere faner, kan fanelisten nås med enten ALT+F10 eller med TAB. Når fanelisten er fokusert, går man til neste og forrige fane med henholdsvis HØYRE og VENSTRE PILTAST."},{name:"Kontekstmeny for editor",legend:"Trykk ${contextMenu} eller MENYKNAPP for å åpne kontekstmeny. Gå til neste alternativ i menyen med TAB eller PILTAST NED. Gå til forrige alternativ med SHIFT+TAB eller PILTAST OPP. Trykk MELLOMROM eller ENTER for å velge menyalternativet. Åpne undermenyen på valgt alternativ med MELLOMROM eller ENTER eller HØYRE PILTAST. Gå tilbake til overordnet menyelement med ESC eller VENSTRE PILTAST. Lukk kontekstmenyen med ESC."},
7{name:"Listeboks for editor",legend:"I en listeboks, gå til neste alternativ i listen med TAB eller PILTAST NED. Gå til forrige alternativ i listen med SHIFT+TAB eller PILTAST OPP. Trykk MELLOMROM eller ENTER for å velge alternativet i listen. Trykk ESC for å lukke listeboksen."},{name:"Verktøylinje for elementsti",legend:"Trykk ${elementsPathFocus} for å navigere til verktøylinjen som viser elementsti. Gå til neste elementknapp med TAB eller HØYRE PILTAST. Gå til forrige elementknapp med SHIFT+TAB eller VENSTRE PILTAST. Trykk MELLOMROM eller ENTER for å velge elementet i editoren."}]}, 7{name:"Listeboks for editor",legend:"I en listeboks, gå til neste alternativ i listen med TAB eller PILTAST NED. Gå til forrige alternativ i listen med SHIFT+TAB eller PILTAST OPP. Trykk MELLOMROM eller ENTER for å velge alternativet i listen. Trykk ESC for å lukke listeboksen."},{name:"Verktøylinje for elementsti",legend:"Trykk ${elementsPathFocus} for å navigere til verktøylinjen som viser elementsti. Gå til neste elementknapp med TAB eller HØYRE PILTAST. Gå til forrige elementknapp med SHIFT+TAB eller VENSTRE PILTAST. Trykk MELLOMROM eller ENTER for å velge elementet i editoren."}]},
8{name:"Hurtigtaster",items:[{name:"Angre",legend:"Trykk ${undo}"},{name:"Gjør om",legend:"Trykk ${redo}"},{name:"Fet tekst",legend:"Trykk ${bold}"},{name:"Kursiv tekst",legend:"Trykk ${italic}"},{name:"Understreking",legend:"Trykk ${underline}"},{name:"Lenke",legend:"Trykk ${link}"},{name:"Skjul verktøylinje",legend:"Trykk ${toolbarCollapse}"},{name:"Gå til forrige fokusområde",legend:"Trykk ${accessPreviousSpace} for å komme til nærmeste fokusområde før skrivemarkøren som ikke kan nås på vanlig måte, for eksempel to tilstøtende HR-elementer. Gjenta tastekombinasjonen for å komme til fokusområder lenger unna i dokumentet."}, 8{name:"Hurtigtaster",items:[{name:"Angre",legend:"Trykk ${undo}"},{name:"Gjør om",legend:"Trykk ${redo}"},{name:"Fet tekst",legend:"Trykk ${bold}"},{name:"Kursiv tekst",legend:"Trykk ${italic}"},{name:"Understreking",legend:"Trykk ${underline}"},{name:"Lenke",legend:"Trykk ${link}"},{name:"Skjul verktøylinje",legend:"Trykk ${toolbarCollapse}"},{name:"Gå til forrige fokusområde",legend:"Trykk ${accessPreviousSpace} for å komme til nærmeste fokusområde før skrivemarkøren som ikke kan nås på vanlig måte, for eksempel to tilstøtende HR-elementer. Gjenta tastekombinasjonen for å komme til fokusområder lenger unna i dokumentet."},
9{name:"Gå til neste fokusområde",legend:"Trykk ${accessNextSpace} for å komme til nærmeste fokusområde etter skrivemarkøren som ikke kan nås på vanlig måte, for eksempel to tilstøtende HR-elementer. Gjenta tastekombinasjonen for å komme til fokusområder lenger unna i dokumentet."},{name:"Hjelp for tilgjengelighet",legend:"Trykk ${a11yHelp}"}]}],backspace:"Backspace",tab:"Tabulator",enter:"Enter",shift:"Shift",ctrl:"Ctrl",alt:"Alt",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up", 9{name:"Gå til neste fokusområde",legend:"Trykk ${accessNextSpace} for å komme til nærmeste fokusområde etter skrivemarkøren som ikke kan nås på vanlig måte, for eksempel to tilstøtende HR-elementer. Gjenta tastekombinasjonen for å komme til fokusområder lenger unna i dokumentet."},{name:"Hjelp for tilgjengelighet",legend:"Trykk ${a11yHelp}"},{name:"Lim inn som ren tekst",legend:"Trykk ${pastetext}",legendEdge:"Trykk ${pastetext}, etterfulgt av ${past}"}]}],tab:"Tabulator",pause:"Pause",capslock:"Caps Lock",
10pageDown:"Page Down",end:"End",home:"Home",leftArrow:"Venstre piltast",upArrow:"Opp-piltast",rightArrow:"Høyre piltast",downArrow:"Ned-piltast",insert:"Insert","delete":"Delete",leftWindowKey:"Venstre Windows-tast",rightWindowKey:"Høyre Windows-tast",selectKey:"Velg nøkkel",numpad0:"Numerisk tastatur 0",numpad1:"Numerisk tastatur 1",numpad2:"Numerisk tastatur 2",numpad3:"Numerisk tastatur 3",numpad4:"Numerisk tastatur 4",numpad5:"Numerisk tastatur 5",numpad6:"Numerisk tastatur 6",numpad7:"Numerisk tastatur 7", 10escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",leftArrow:"Venstre piltast",upArrow:"Opp-piltast",rightArrow:"Høyre piltast",downArrow:"Ned-piltast",insert:"Insert",leftWindowKey:"Venstre Windows-tast",rightWindowKey:"Høyre Windows-tast",selectKey:"Velg nøkkel",numpad0:"Numerisk tastatur 0",numpad1:"Numerisk tastatur 1",numpad2:"Numerisk tastatur 2",numpad3:"Numerisk tastatur 3",numpad4:"Numerisk tastatur 4",numpad5:"Numerisk tastatur 5",numpad6:"Numerisk tastatur 6",numpad7:"Numerisk tastatur 7",
11numpad8:"Numerisk tastatur 8",numpad9:"Numerisk tastatur 9",multiply:"Multipliser",add:"Legg til",subtract:"Trekk fra",decimalPoint:"Desimaltegn",divide:"Divider",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semikolon",equalSign:"Likhetstegn",comma:"Komma",dash:"Bindestrek",period:"Punktum",forwardSlash:"Forover skråstrek",graveAccent:"Grav aksent",openBracket:"Åpne parentes",backSlash:"Bakover skråstrek", 11numpad8:"Numerisk tastatur 8",numpad9:"Numerisk tastatur 9",multiply:"Multipliser",add:"Legg til",subtract:"Trekk fra",decimalPoint:"Desimaltegn",divide:"Divider",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semikolon",equalSign:"Likhetstegn",comma:"Komma",dash:"Bindestrek",period:"Punktum",forwardSlash:"Forover skråstrek",graveAccent:"Grav aksent",openBracket:"Åpne parentes",backSlash:"Bakover skråstrek",
12closeBracket:"Lukk parentes",singleQuote:"Enkelt sitattegn"}); \ No newline at end of file 12closeBracket:"Lukk parentes",singleQuote:"Enkelt sitattegn"}); \ No newline at end of file
diff --git a/release/plugins/a11yhelp/dialogs/lang/nl.js b/release/plugins/a11yhelp/dialogs/lang/nl.js
index 98e4652..0f35b3e 100644
--- a/release/plugins/a11yhelp/dialogs/lang/nl.js
+++ b/release/plugins/a11yhelp/dialogs/lang/nl.js
@@ -1,11 +1,12 @@
1/* 1/*
2 Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 For licensing, see LICENSE.md or http://ckeditor.com/license 3 For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang("a11yhelp","nl",{title:"Toegankelijkheidsinstructies",contents:"Help-inhoud. Druk op ESC om dit dialoog te sluiten.",legend:[{name:"Algemeen",items:[{name:"Werkbalk tekstverwerker",legend:"Druk op ${toolbarFocus} om naar de werkbalk te navigeren. Om te schakelen naar de volgende en vorige werkbalkgroep, gebruik TAB en SHIFT+TAB. Om te schakelen naar de volgende en vorige werkbalkknop, gebruik de PIJL RECHTS en PIJL LINKS. Druk op SPATIE of ENTER om een werkbalkknop te activeren."}, 5CKEDITOR.plugins.setLang("a11yhelp","nl",{title:"Toegankelijkheidsinstructies",contents:"Help-inhoud. Druk op ESC om dit dialoog te sluiten.",legend:[{name:"Algemeen",items:[{name:"Werkbalk tekstverwerker",legend:"Druk op ${toolbarFocus} om naar de werkbalk te navigeren. Om te schakelen naar de volgende en vorige werkbalkgroep, gebruik TAB en SHIFT+TAB. Om te schakelen naar de volgende en vorige werkbalkknop, gebruik de PIJL RECHTS en PIJL LINKS. Druk op SPATIE of ENTER om een werkbalkknop te activeren."},
6{name:"Dialoog tekstverwerker",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."},{name:"Contextmenu tekstverwerker",legend:"Druk op ${contextMenu} of APPLICATION KEY om het contextmenu te openen. Schakel naar de volgende menuoptie met TAB of PIJL OMLAAG. Schakel naar de vorige menuoptie met SHIFT+TAB of PIJL OMHOOG. Druk op SPATIE of ENTER om een menuoptie te selecteren. Op een submenu van de huidige optie met SPATIE, ENTER of PIJL RECHTS. Ga terug naar de bovenliggende menuoptie met ESC of PIJL LINKS. Sluit het contextmenu met ESC."}, 6{name:"Dialoog tekstverwerker",legend:"In een dialoogvenster, druk op TAB om te navigeren naar het volgende veld. Druk op SHIFT+TAB om naar het vorige veld te navigeren. Druk op ENTER om het dialoogvenster te verzenden. Druk op ESC om het dialoogvenster te sluiten. Bij dialoogvensters met meerdere tabbladen kan de tabset bereikt worden met ALT+F10 of met TAB als onderdeel van de tabvolgorde in het dialoogvenster. Als de tabset focus heeft, kun je schakalen naar het volgende en vorige tabblad met respectievelijk PIJL RECHTS en PIJL LINKS."},
7{name:"Keuzelijst tekstverwerker",legend:"In een keuzelijst, schakel naar het volgende item met TAB of PIJL OMLAAG. Schakel naar het vorige item met SHIFT+TAB of PIJL OMHOOG. Druk op SPATIE of ENTER om het item te selecteren. Druk op ESC om de keuzelijst te sluiten."},{name:"Elementenpad werkbalk tekstverwerker",legend:"Druk op ${elementsPathFocus} om naar het elementenpad te navigeren. Om te schakelen naar het volgende element, gebruik TAB of PIJL RECHTS. Om te schakelen naar het vorige element, gebruik SHIFT+TAB or PIJL LINKS. Druk op SPATIE of ENTER om een element te selecteren in de tekstverwerker."}]}, 7{name:"Contextmenu tekstverwerker",legend:"Druk op ${contextMenu} of APPLICATION KEY om het contextmenu te openen. Schakel naar de volgende menuoptie met TAB of PIJL OMLAAG. Schakel naar de vorige menuoptie met SHIFT+TAB of PIJL OMHOOG. Druk op SPATIE of ENTER om een menuoptie te selecteren. Op een submenu van de huidige optie met SPATIE, ENTER of PIJL RECHTS. Ga terug naar de bovenliggende menuoptie met ESC of PIJL LINKS. Sluit het contextmenu met ESC."},{name:"Keuzelijst tekstverwerker",legend:"In een keuzelijst, schakel naar het volgende item met TAB of PIJL OMLAAG. Schakel naar het vorige item met SHIFT+TAB of PIJL OMHOOG. Druk op SPATIE of ENTER om het item te selecteren. Druk op ESC om de keuzelijst te sluiten."},
8{name:"Opdrachten",items:[{name:"Ongedaan maken opdracht",legend:"Druk op ${undo}"},{name:"Opnieuw uitvoeren opdracht",legend:"Druk op ${redo}"},{name:"Vetgedrukt opdracht",legend:"Druk op ${bold}"},{name:"Cursief opdracht",legend:"Druk op ${italic}"},{name:"Onderstrepen opdracht",legend:"Druk op ${underline}"},{name:"Link opdracht",legend:"Druk op ${link}"},{name:"Werkbalk inklappen opdracht",legend:"Druk op ${toolbarCollapse}"},{name:"Ga naar vorige focus spatie commando",legend:"Druk ${accessPreviousSpace} om toegang te verkrijgen tot de dichtstbijzijnde onbereikbare focus spatie voor de caret, bijvoorbeeld: twee aangrenzende HR elementen. Herhaal de toetscombinatie om de verste focus spatie te bereiken."}, 8{name:"Elementenpad werkbalk tekstverwerker",legend:"Druk op ${elementsPathFocus} om naar het elementenpad te navigeren. Om te schakelen naar het volgende element, gebruik TAB of PIJL RECHTS. Om te schakelen naar het vorige element, gebruik SHIFT+TAB or PIJL LINKS. Druk op SPATIE of ENTER om een element te selecteren in de tekstverwerker."}]},{name:"Opdrachten",items:[{name:"Ongedaan maken opdracht",legend:"Druk op ${undo}"},{name:"Opnieuw uitvoeren opdracht",legend:"Druk op ${redo}"},{name:"Vetgedrukt opdracht",
9{name:"Ga naar volgende focus spatie commando",legend:"Druk ${accessNextSpace} om toegang te verkrijgen tot de dichtstbijzijnde onbereikbare focus spatie na de caret, bijvoorbeeld: twee aangrenzende HR elementen. Herhaal de toetscombinatie om de verste focus spatie te bereiken."},{name:"Toegankelijkheidshulp",legend:"Druk op ${a11yHelp}"}]}],backspace:"Backspace",tab:"Tab",enter:"Enter",shift:"Shift",ctrl:"Ctrl",alt:"Alt",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down", 9legend:"Druk op ${bold}"},{name:"Cursief opdracht",legend:"Druk op ${italic}"},{name:"Onderstrepen opdracht",legend:"Druk op ${underline}"},{name:"Link opdracht",legend:"Druk op ${link}"},{name:"Werkbalk inklappen opdracht",legend:"Druk op ${toolbarCollapse}"},{name:"Ga naar vorige focus spatie commando",legend:"Druk ${accessPreviousSpace} om toegang te verkrijgen tot de dichtstbijzijnde onbereikbare focus spatie voor de caret, bijvoorbeeld: twee aangrenzende HR elementen. Herhaal de toetscombinatie om de verste focus spatie te bereiken."},
10end:"End",home:"Home",leftArrow:"Pijl naar links",upArrow:"Pijl omhoog",rightArrow:"Pijl naar rechts",downArrow:"Pijl naar beneden",insert:"Invoegen","delete":"Verwijderen",leftWindowKey:"Linker Windows-toets",rightWindowKey:"Rechter Windows-toets",selectKey:"Selecteer toets",numpad0:"Numpad 0",numpad1:"Numpad 1",numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Vermenigvuldigen",add:"Toevoegen", 10{name:"Ga naar volgende focus spatie commando",legend:"Druk ${accessNextSpace} om toegang te verkrijgen tot de dichtstbijzijnde onbereikbare focus spatie na de caret, bijvoorbeeld: twee aangrenzende HR elementen. Herhaal de toetscombinatie om de verste focus spatie te bereiken."},{name:"Toegankelijkheidshulp",legend:"Druk op ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Caps Lock",
11subtract:"Aftrekken",decimalPoint:"Decimaalteken",divide:"Delen",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Puntkomma",equalSign:"Is gelijk-teken",comma:"Komma",dash:"Koppelteken",period:"Punt",forwardSlash:"Slash",graveAccent:"Accent grave",openBracket:"Vierkant haakje openen",backSlash:"Backslash",closeBracket:"Vierkant haakje sluiten",singleQuote:"Apostrof"}); \ No newline at end of file 11escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",leftArrow:"Pijl naar links",upArrow:"Pijl omhoog",rightArrow:"Pijl naar rechts",downArrow:"Pijl naar beneden",insert:"Invoegen",leftWindowKey:"Linker Windows-toets",rightWindowKey:"Rechter Windows-toets",selectKey:"Selecteer toets",numpad0:"Numpad 0",numpad1:"Numpad 1",numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Vermenigvuldigen",
12add:"Toevoegen",subtract:"Aftrekken",decimalPoint:"Decimaalteken",divide:"Delen",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Puntkomma",equalSign:"Is gelijk-teken",comma:"Komma",dash:"Koppelteken",period:"Punt",forwardSlash:"Slash",graveAccent:"Accent grave",openBracket:"Vierkant haakje openen",backSlash:"Backslash",closeBracket:"Vierkant haakje sluiten",singleQuote:"Apostrof"}); \ No newline at end of file
diff --git a/release/plugins/a11yhelp/dialogs/lang/no.js b/release/plugins/a11yhelp/dialogs/lang/no.js
index 4fb70dd..b1e01d4 100644
--- a/release/plugins/a11yhelp/dialogs/lang/no.js
+++ b/release/plugins/a11yhelp/dialogs/lang/no.js
@@ -1,11 +1,11 @@
1/* 1/*
2 Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 For licensing, see LICENSE.md or http://ckeditor.com/license 3 For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang("a11yhelp","no",{title:"Instruksjoner for tilgjengelighet",contents:"Innhold for hjelp. Trykk ESC for å lukke denne dialogen.",legend:[{name:"Generelt",items:[{name:"Verktøylinje for editor",legend:"Trykk ${toolbarFocus} for å navigere til verktøylinjen. Flytt til neste og forrige verktøylinjegruppe med TAB og SHIFT+TAB. Flytt til neste og forrige verktøylinjeknapp med HØYRE PILTAST og VENSTRE PILTAST. Trykk MELLOMROM eller ENTER for å aktivere verktøylinjeknappen."},{name:"Dialog for editor", 5CKEDITOR.plugins.setLang("a11yhelp","no",{title:"Instruksjoner for tilgjengelighet",contents:"Innhold for hjelp. Trykk ESC for å lukke denne dialogen.",legend:[{name:"Generelt",items:[{name:"Verktøylinje for editor",legend:"Trykk ${toolbarFocus} for å navigere til verktøylinjen. Flytt til neste og forrige verktøylinjegruppe med TAB og SHIFT+TAB. Flytt til neste og forrige verktøylinjeknapp med HØYRE PILTAST og VENSTRE PILTAST. Trykk MELLOMROM eller ENTER for å aktivere verktøylinjeknappen."},{name:"Dialog for editor",
6legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."},{name:"Kontekstmeny for editor",legend:"Trykk ${contextMenu} eller MENYKNAPP for å åpne kontekstmeny. Gå til neste alternativ i menyen med TAB eller PILTAST NED. Gå til forrige alternativ med SHIFT+TAB eller PILTAST OPP. Trykk MELLOMROM eller ENTER for å velge menyalternativet. Åpne undermenyen på valgt alternativ med MELLOMROM eller ENTER eller HØYRE PILTAST. Gå tilbake til overordnet menyelement med ESC eller VENSTRE PILTAST. Lukk kontekstmenyen med ESC."}, 6legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."},{name:"Kontekstmeny for editor",legend:"Trykk ${contextMenu} eller MENYKNAPP for å åpne kontekstmeny. Gå til neste alternativ i menyen med TAB eller PILTAST NED. Gå til forrige alternativ med SHIFT+TAB eller PILTAST OPP. Trykk MELLOMROM eller ENTER for å velge menyalternativet. Åpne undermenyen på valgt alternativ med MELLOMROM eller ENTER eller HØYRE PILTAST. Gå tilbake til overordnet menyelement med ESC eller VENSTRE PILTAST. Lukk kontekstmenyen med ESC."},
7{name:"Listeboks for editor",legend:"I en listeboks, gå til neste alternativ i listen med TAB eller PILTAST NED. Gå til forrige alternativ i listen med SHIFT+TAB eller PILTAST OPP. Trykk MELLOMROM eller ENTER for å velge alternativet i listen. Trykk ESC for å lukke listeboksen."},{name:"Verktøylinje for elementsti",legend:"Trykk ${elementsPathFocus} for å navigere til verktøylinjen som viser elementsti. Gå til neste elementknapp med TAB eller HØYRE PILTAST. Gå til forrige elementknapp med SHIFT+TAB eller VENSTRE PILTAST. Trykk MELLOMROM eller ENTER for å velge elementet i editoren."}]}, 7{name:"Listeboks for editor",legend:"I en listeboks, gå til neste alternativ i listen med TAB eller PILTAST NED. Gå til forrige alternativ i listen med SHIFT+TAB eller PILTAST OPP. Trykk MELLOMROM eller ENTER for å velge alternativet i listen. Trykk ESC for å lukke listeboksen."},{name:"Verktøylinje for elementsti",legend:"Trykk ${elementsPathFocus} for å navigere til verktøylinjen som viser elementsti. Gå til neste elementknapp med TAB eller HØYRE PILTAST. Gå til forrige elementknapp med SHIFT+TAB eller VENSTRE PILTAST. Trykk MELLOMROM eller ENTER for å velge elementet i editoren."}]},
8{name:"Kommandoer",items:[{name:"Angre",legend:"Trykk ${undo}"},{name:"Gjør om",legend:"Trykk ${redo}"},{name:"Fet tekst",legend:"Trykk ${bold}"},{name:"Kursiv tekst",legend:"Trykk ${italic}"},{name:"Understreking",legend:"Trykk ${underline}"},{name:"Link",legend:"Trykk ${link}"},{name:"Skjul verktøylinje",legend:"Trykk ${toolbarCollapse}"},{name:"Gå til forrige fokusområde",legend:"Trykk ${accessPreviousSpace} for å komme til nærmeste fokusområde før skrivemarkøren som ikke kan nås på vanlig måte, for eksempel to tilstøtende HR-elementer. Gjenta tastekombinasjonen for å komme til fokusområder lenger unna i dokumentet."}, 8{name:"Kommandoer",items:[{name:"Angre",legend:"Trykk ${undo}"},{name:"Gjør om",legend:"Trykk ${redo}"},{name:"Fet tekst",legend:"Trykk ${bold}"},{name:"Kursiv tekst",legend:"Trykk ${italic}"},{name:"Understreking",legend:"Trykk ${underline}"},{name:"Link",legend:"Trykk ${link}"},{name:"Skjul verktøylinje",legend:"Trykk ${toolbarCollapse}"},{name:"Gå til forrige fokusområde",legend:"Trykk ${accessPreviousSpace} for å komme til nærmeste fokusområde før skrivemarkøren som ikke kan nås på vanlig måte, for eksempel to tilstøtende HR-elementer. Gjenta tastekombinasjonen for å komme til fokusområder lenger unna i dokumentet."},
9{name:"Gå til neste fokusområde",legend:"Trykk ${accessNextSpace} for å komme til nærmeste fokusområde etter skrivemarkøren som ikke kan nås på vanlig måte, for eksempel to tilstøtende HR-elementer. Gjenta tastekombinasjonen for å komme til fokusområder lenger unna i dokumentet."},{name:"Hjelp for tilgjengelighet",legend:"Trykk ${a11yHelp}"}]}],backspace:"Backspace",tab:"Tab",enter:"Enter",shift:"Shift",ctrl:"Ctrl",alt:"Alt",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down", 9{name:"Gå til neste fokusområde",legend:"Trykk ${accessNextSpace} for å komme til nærmeste fokusområde etter skrivemarkøren som ikke kan nås på vanlig måte, for eksempel to tilstøtende HR-elementer. Gjenta tastekombinasjonen for å komme til fokusområder lenger unna i dokumentet."},{name:"Hjelp for tilgjengelighet",legend:"Trykk ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Caps Lock",
10end:"End",home:"Home",leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert","delete":"Delete",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1",numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point", 10escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1",numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point",
11divide:"Divide",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash",graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"}); \ No newline at end of file 11divide:"Divide",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash",graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"}); \ No newline at end of file
diff --git a/release/plugins/a11yhelp/dialogs/lang/oc.js b/release/plugins/a11yhelp/dialogs/lang/oc.js
new file mode 100644
index 0000000..abab681
--- /dev/null
+++ b/release/plugins/a11yhelp/dialogs/lang/oc.js
@@ -0,0 +1,12 @@
1/*
2 Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang("a11yhelp","oc",{title:"Instruccions d'accessibilitat",contents:"Contengut de l'ajuda. Per tampar aquesta fenèstra, quichatz sus la tòca Escap.",legend:[{name:"General",items:[{name:"Barra d'aisinas de l'editor",legend:"Quichar sus ${toolbarFocus} per accedir a la barra d'aisinas. Se desplaçar cap al groupe seguent o precedent de la barra d'aisinas amb las tòcas Tab e Maj+Tab. Se desplaçar cap al boton seguent o precedent de la barra d'aisinas amb las tòcas Sageta dreita e Sageta esquèrra. Quichar sus la barra d'espaci o la tòca Entrada per activer lo boton de barra d'aisinas."},
6{name:"Fenèstra de l'editor",legend:"Dins una bóstia de dialòg, quichar sus Tab per passar a l'element seguent, quichar sus Maj+Tab per passar a l'element precedent, quichar sus Entrada per validar, quichar sus Escap per anullar. Quand una bóstia de dialòg possedís des onglets, la lista pòt èsser atenta amb Alt+F10 o amb Tab. Dins la lista dels onglets, se desplaçar cap al seguent e lo precedent amb las tòcas Sageta dreita e Sageta esquèrra respectivament."},{name:"Menú contextual de l'editor",legend:"Quichar sus ${contextMenu} o sus la tòca Menú per dobrir lo menú contextual. Se desplaçar ensuite cap a l'opcion seguenta del menú amb las tòcas Tab o Sageta bas. Se desplaçar cap a l'opcion precedenta amb las tòcas Maj+Tab o Sageta naut. Quichar sus la barra d'espaci o la tòca Entrada per seleccionar l'opcion del menu. Quichar sus la barra d'espaci, la tòca Entrada o Sageta dreita per dobrir lo sosmenú de l'opcion seleccionada. Tornar a l'element de menú parent amb la tòca Escap o Sageta esquèrra. Tampar lo menú contextual amb Escap."},
7{name:"Zòna de lista de l'editor",legend:"Dins una lista en menú desenrotlant, se desplaçar cap a l'element seguent de la lista amb las tòcas Tab o Sageta bas. Se desplaçar cap a l'element precedent de la lista amb las tòcas Maj+Tab o Sageta naut. Quichar sus la barra d'espaci o sus Entrada per seleccionar l'opcion dins la lista. Quichar sus Escap per tampar lo menú desenrotlant."},{name:"Barra del camin d'elements de l'editor",legend:"Quichar sus ${elementsPathFocus} per naviguer cap a la barra del fial d'Ariana dels elements. Se desplaçar cap al boton de l'element seguent amb las tòcas Tab o Sageta dreita. Se desplaçar cap al boton precedent amb las tòcas Maj+Tab o Sageta esquèrra. Quichar sus la barra d'espaci o sus Entrada per seleccionar l'element dins l'editor."}]},
8{name:"Comandas",items:[{name:"Anullar la comanda",legend:"Quichar sus ${undo}"},{name:"Comanda restablir",legend:"Quichar sus ${redo}"},{name:" Comanda gras",legend:"Quichar sus ${bold}"},{name:" Comanda italica",legend:"Quichar sus ${italic}"},{name:" Comanda solinhat",legend:"Quichar sus ${underline}"},{name:" Comanda ligam",legend:"Quichar sus ${link}"},{name:"Comanda enrotlar la barra d'aisinas",legend:"Quichar sus ${toolbarCollapse}"},{name:"Comanda d'accès a l'element seleccionable precedent",
9legend:"Quichar sus ${accessNextSpace} per accedir a l'element seleccionable inategnible lo mai pròche abans lo cursor, per exemple : doas linhas orizontalas adjacentas. Repetir la combinason de tòcas per aténher los elements seleccionables precedents."},{name:"Comanda d'accès a l'element seleccionable seguent",legend:"Quichar sus ${accessNextSpace} per accedir a l'element seleccionable inatenhible lo mai pròche aprèp lo cursor, per exemple : doas linhas orizontalas adjacentas. Repetir la combinason de tòcas per aténher los elements seleccionables seguents."},
10{name:" Ajuda sus l'accessibilitat",legend:"Quichar sus ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tabulacion",pause:"Pausa",capslock:"Verr. Maj.",escape:"Escap",pageUp:"Pagina superiora",pageDown:"Pagina seguenta",leftArrow:"Sageta esquèrra",upArrow:"Sageta naut",rightArrow:"Sageta dreita",downArrow:"Sageta bassa",insert:"Inser",leftWindowKey:"Tòca Windows esquèrra",rightWindowKey:"Tòca Windows dreita",selectKey:"Tòca Seleccionar",
11numpad0:"0 del pavat numeric",numpad1:"1 del pavat numeric",numpad2:"2 del pavat numeric",numpad3:"3 del pavat numeric",numpad4:"4 del pavat numeric",numpad5:"5 del pavat numeric",numpad6:"6 del pavat numeric",numpad7:"7 del pavat numeric",numpad8:"Pavat numeric 8",numpad9:"9 del pavat numeric",multiply:"Multiplicar",add:"Plus",subtract:"Mens",decimalPoint:"Punt decimal",divide:"Devesir",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Verr. Num.",
12scrollLock:"Arrèst desfil.",semiColon:"Punt-virgula",equalSign:"Signe egal",comma:"Virgula",dash:"Jonhent",period:"Punt",forwardSlash:"Barra oblica",graveAccent:"Accent grèu",openBracket:"Parentèsi dobèrta",backSlash:"Barra oblica invèrsa",closeBracket:"Parentèsi tampanta",singleQuote:"Apostròfa"}); \ No newline at end of file
diff --git a/release/plugins/a11yhelp/dialogs/lang/pl.js b/release/plugins/a11yhelp/dialogs/lang/pl.js
index 33580a2..0c59c91 100644
--- a/release/plugins/a11yhelp/dialogs/lang/pl.js
+++ b/release/plugins/a11yhelp/dialogs/lang/pl.js
@@ -1,13 +1,13 @@
1/* 1/*
2 Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 For licensing, see LICENSE.md or http://ckeditor.com/license 3 For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang("a11yhelp","pl",{title:"Instrukcje dotyczące dostępności",contents:"Zawartość pomocy. Wciśnij ESC, aby zamknąć to okno.",legend:[{name:"Informacje ogólne",items:[{name:"Pasek narzędzi edytora",legend:"Naciśnij ${toolbarFocus}, by przejść do paska narzędzi. Przejdź do następnej i poprzedniej grupy narzędzi używając TAB oraz SHIFT+TAB. Przejdź do następnego i poprzedniego przycisku paska narzędzi za pomocą STRZAŁKI W PRAWO lub STRZAŁKI W LEWO. Naciśnij SPACJĘ lub ENTER by aktywować przycisk paska narzędzi."}, 5CKEDITOR.plugins.setLang("a11yhelp","pl",{title:"Instrukcje dotyczące dostępności",contents:"Zawartość pomocy. Wciśnij ESC, aby zamknąć to okno.",legend:[{name:"Informacje ogólne",items:[{name:"Pasek narzędzi edytora",legend:"Naciśnij ${toolbarFocus}, by przejść do paska narzędzi. Przejdź do następnej i poprzedniej grupy narzędzi używając TAB oraz SHIFT+TAB. Przejdź do następnego i poprzedniego przycisku paska narzędzi za pomocą STRZAŁKI W PRAWO lub STRZAŁKI W LEWO. Naciśnij SPACJĘ lub ENTER by aktywować przycisk paska narzędzi."},
6{name:"Okno dialogowe edytora",legend:"Wewnątrz okna dialogowego naciśnij TAB, by przejść do kolejnego elementu tego okna lub SHIFT+TAB, by przejść do poprzedniego elementu okna. Naciśnij ENTER w celu zatwierdzenia opcji okna dialogowego lub ESC w celu anulowania zmian. Jeśli okno dialogowe ma kilka zakładek, do listy zakładek można przejść za pomocą ALT+F10 lub TAB. Gdy lista zakładek jest aktywna, możesz przejść do kolejnej i poprzedniej zakładki za pomocą STRZAŁKI W PRAWO i STRZAŁKI W LEWO."}, 6{name:"Okno dialogowe edytora",legend:"Wewnątrz okna dialogowego naciśnij TAB, by przejść do kolejnego elementu tego okna lub SHIFT+TAB, by przejść do poprzedniego elementu okna. Naciśnij ENTER w celu zatwierdzenia opcji okna dialogowego lub ESC w celu anulowania zmian. Jeśli okno dialogowe ma kilka zakładek, do listy zakładek można przejść za pomocą ALT+F10 lub TAB. Gdy lista zakładek jest aktywna, możesz przejść do kolejnej i poprzedniej zakładki za pomocą STRZAŁKI W PRAWO i STRZAŁKI W LEWO."},
7{name:"Menu kontekstowe edytora",legend:"Wciśnij ${contextMenu} lub PRZYCISK APLIKACJI aby otworzyć menu kontekstowe. Przejdź do następnej pozycji menu wciskając TAB lub STRZAŁKĘ W DÓŁ. Przejdź do poprzedniej pozycji menu wciskając SHIFT + TAB lub STRZAŁKĘ W GÓRĘ. Wciśnij SPACJĘ lub ENTER aby wygrać pozycję menu. Otwórz pod-menu obecnej pozycji wciskając SPACJĘ lub ENTER lub STRZAŁKĘ W PRAWO. Wróć do pozycji nadrzędnego menu wciskając ESC lub STRZAŁKĘ W LEWO. Zamknij menu wciskając ESC."},{name:"Lista w edytorze", 7{name:"Menu kontekstowe edytora",legend:"Wciśnij ${contextMenu} lub PRZYCISK APLIKACJI aby otworzyć menu kontekstowe. Przejdź do następnej pozycji menu wciskając TAB lub STRZAŁKĘ W DÓŁ. Przejdź do poprzedniej pozycji menu wciskając SHIFT + TAB lub STRZAŁKĘ W GÓRĘ. Wciśnij SPACJĘ lub ENTER aby wygrać pozycję menu. Otwórz pod-menu obecnej pozycji wciskając SPACJĘ lub ENTER lub STRZAŁKĘ W PRAWO. Wróć do pozycji nadrzędnego menu wciskając ESC lub STRZAŁKĘ W LEWO. Zamknij menu wciskając ESC."},{name:"Lista w edytorze",
8legend:"Wewnątrz listy przejdź do kolejnego elementu listy za pomocą przycisku TAB lub STRZAŁKI W DÓŁ. Przejdź do poprzedniego elementu listy za pomocą SHIFT+TAB lub STRZAŁKI W GÓRĘ. Naciśnij SPACJĘ lub ENTER w celu wybrania opcji z listy. Naciśnij ESC, by zamknąć listę."},{name:"Pasek ścieżki elementów edytora",legend:"Naciśnij ${elementsPathFocus} w celu przejścia do paska ścieżki elementów edytora. W celu przejścia do kolejnego elementu naciśnij klawisz TAB lub STRZAŁKI W PRAWO. W celu przejścia do poprzedniego elementu naciśnij klawisze SHIFT+TAB lub STRZAŁKI W LEWO. By wybrać element w edytorze, użyj klawisza SPACJI lub ENTER."}]}, 8legend:"Wewnątrz listy przejdź do kolejnego elementu listy za pomocą przycisku TAB lub STRZAŁKI W DÓŁ. Przejdź do poprzedniego elementu listy za pomocą SHIFT+TAB lub STRZAŁKI W GÓRĘ. Naciśnij SPACJĘ lub ENTER w celu wybrania opcji z listy. Naciśnij ESC, by zamknąć listę."},{name:"Pasek ścieżki elementów edytora",legend:"Naciśnij ${elementsPathFocus} w celu przejścia do paska ścieżki elementów edytora. W celu przejścia do kolejnego elementu naciśnij klawisz TAB lub STRZAŁKI W PRAWO. W celu przejścia do poprzedniego elementu naciśnij klawisze SHIFT+TAB lub STRZAŁKI W LEWO. By wybrać element w edytorze, użyj klawisza SPACJI lub ENTER."}]},
9{name:"Polecenia",items:[{name:"Polecenie Cofnij",legend:"Naciśnij ${undo}"},{name:"Polecenie Ponów",legend:"Naciśnij ${redo}"},{name:"Polecenie Pogrubienie",legend:"Naciśnij ${bold}"},{name:"Polecenie Kursywa",legend:"Naciśnij ${italic}"},{name:"Polecenie Podkreślenie",legend:"Naciśnij ${underline}"},{name:"Polecenie Wstaw/ edytuj odnośnik",legend:"Naciśnij ${link}"},{name:"Polecenie schowaj pasek narzędzi",legend:"Naciśnij ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, 9{name:"Polecenia",items:[{name:"Polecenie Cofnij",legend:"Naciśnij ${undo}"},{name:"Polecenie Ponów",legend:"Naciśnij ${redo}"},{name:"Polecenie Pogrubienie",legend:"Naciśnij ${bold}"},{name:"Polecenie Kursywa",legend:"Naciśnij ${italic}"},{name:"Polecenie Podkreślenie",legend:"Naciśnij ${underline}"},{name:"Polecenie Wstaw/ edytuj odnośnik",legend:"Naciśnij ${link}"},{name:"Polecenie schowaj pasek narzędzi",legend:"Naciśnij ${toolbarCollapse}"},{name:"Przejdź do poprzedniego miejsca, w którym można ustawić focus",
10{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:"Pomoc dotycząca dostępności",legend:"Naciśnij ${a11yHelp}"}]}],backspace:"Backspace",tab:"Tab",enter:"Enter",shift:"Shift",ctrl:"Ctrl",alt:"Alt",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",end:"End",home:"Home",leftArrow:"Strzałka w lewo", 10legend:"Naciśnij ${accessPreviousSpace}, aby przejść do najbliższego niedostępnego miejsca przed kursorem, w którym można ustawić focus. Przykład: dwa przylegające elementy HR. Powtórz ten skrót klawiaturowy, by dotrzeć do kolejnych takich miejsc."},{name:"Przejdź do następnego miejsca, w którym można ustawić focus",legend:"Naciśnij ${accessNextSpace}, aby przejść do najbliższego niedostępnego miejsca po kursorze, w którym można ustawić focus. Przykład: dwa przylegające elementy HR. Powtórz ten skrót klawiaturowy, by dotrzeć do kolejnych takich miejsc."},
11upArrow:"Strzałka w górę",rightArrow:"Strzałka w prawo",downArrow:"Strzałka w dół",insert:"Insert","delete":"Delete",leftWindowKey:"Lewy klawisz Windows",rightWindowKey:"Prawy klawisz Windows",selectKey:"Klawisz wyboru",numpad0:"Klawisz 0 na klawiaturze numerycznej",numpad1:"Klawisz 1 na klawiaturze numerycznej",numpad2:"Klawisz 2 na klawiaturze numerycznej",numpad3:"Klawisz 3 na klawiaturze numerycznej",numpad4:"Klawisz 4 na klawiaturze numerycznej",numpad5:"Klawisz 5 na klawiaturze numerycznej", 11{name:"Pomoc dotycząca dostępności",legend:"Naciśnij ${a11yHelp}"},{name:"Wklej jako tekst",legend:"Naciśnij ${pastetext}",legendEdge:"Naciśnij ${pastetext}, a następnie ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",leftArrow:"Strzałka w lewo",upArrow:"Strzałka w górę",rightArrow:"Strzałka w prawo",downArrow:"Strzałka w dół",insert:"Insert",leftWindowKey:"Lewy klawisz Windows",rightWindowKey:"Prawy klawisz Windows",selectKey:"Klawisz wyboru",
12numpad6:"Klawisz 6 na klawiaturze numerycznej",numpad7:"Klawisz 7 na klawiaturze numerycznej",numpad8:"Klawisz 8 na klawiaturze numerycznej",numpad9:"Klawisz 9 na klawiaturze numerycznej",multiply:"Przemnóż",add:"Plus",subtract:"Minus",decimalPoint:"Separator dziesiętny",divide:"Podziel",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Średnik",equalSign:"Znak równości",comma:"Przecinek",dash:"Pauza", 12numpad0:"Klawisz 0 na klawiaturze numerycznej",numpad1:"Klawisz 1 na klawiaturze numerycznej",numpad2:"Klawisz 2 na klawiaturze numerycznej",numpad3:"Klawisz 3 na klawiaturze numerycznej",numpad4:"Klawisz 4 na klawiaturze numerycznej",numpad5:"Klawisz 5 na klawiaturze numerycznej",numpad6:"Klawisz 6 na klawiaturze numerycznej",numpad7:"Klawisz 7 na klawiaturze numerycznej",numpad8:"Klawisz 8 na klawiaturze numerycznej",numpad9:"Klawisz 9 na klawiaturze numerycznej",multiply:"Przemnóż",add:"Plus",
13period:"Kropka",forwardSlash:"Ukośnik prawy",graveAccent:"Akcent słaby",openBracket:"Nawias kwadratowy otwierający",backSlash:"Ukośnik lewy",closeBracket:"Nawias kwadratowy zamykający",singleQuote:"Apostrof"}); \ No newline at end of file 13subtract:"Minus",decimalPoint:"Separator dziesiętny",divide:"Podziel",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Średnik",equalSign:"Znak równości",comma:"Przecinek",dash:"Pauza",period:"Kropka",forwardSlash:"Ukośnik prawy",graveAccent:"Akcent słaby",openBracket:"Nawias kwadratowy otwierający",backSlash:"Ukośnik lewy",closeBracket:"Nawias kwadratowy zamykający",singleQuote:"Apostrof"}); \ No newline at end of file
diff --git a/release/plugins/a11yhelp/dialogs/lang/pt-br.js b/release/plugins/a11yhelp/dialogs/lang/pt-br.js
index 1cf81f7..317e571 100644
--- a/release/plugins/a11yhelp/dialogs/lang/pt-br.js
+++ b/release/plugins/a11yhelp/dialogs/lang/pt-br.js
@@ -1,5 +1,5 @@
1/* 1/*
2 Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 For licensing, see LICENSE.md or http://ckeditor.com/license 3 For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang("a11yhelp","pt-br",{title:"Instruções de Acessibilidade",contents:"Conteúdo da Ajuda. Para fechar este diálogo pressione ESC.",legend:[{name:"Geral",items:[{name:"Barra de Ferramentas do Editor",legend:"Pressione ${toolbarFocus} para navegar para a barra de ferramentas. Mova para o anterior ou próximo grupo de ferramentas com TAB e SHIFT+TAB. Mova para o anterior ou próximo botão com SETA PARA DIREITA or SETA PARA ESQUERDA. Pressione ESPAÇO ou ENTER para ativar o botão da barra de ferramentas."}, 5CKEDITOR.plugins.setLang("a11yhelp","pt-br",{title:"Instruções de Acessibilidade",contents:"Conteúdo da Ajuda. Para fechar este diálogo pressione ESC.",legend:[{name:"Geral",items:[{name:"Barra de Ferramentas do Editor",legend:"Pressione ${toolbarFocus} para navegar para a barra de ferramentas. Mova para o anterior ou próximo grupo de ferramentas com TAB e SHIFT+TAB. Mova para o anterior ou próximo botão com SETA PARA DIREITA or SETA PARA ESQUERDA. Pressione ESPAÇO ou ENTER para ativar o botão da barra de ferramentas."},
@@ -7,7 +7,7 @@ CKEDITOR.plugins.setLang("a11yhelp","pt-br",{title:"Instruções de Acessibilida
7{name:"Menu de Contexto do Editor",legend:"Pressione ${contextMenu} ou TECLA DE MENU para abrir o menu de contexto, então mova para a próxima opção com TAB ou SETA PARA BAIXO. Mova para a anterior com SHIFT+TAB ou SETA PARA CIMA. Pressione ESPAÇO ou ENTER para selecionar a opção do menu. Abra o submenu da opção atual com ESPAÇO ou ENTER ou SETA PARA DIREITA. Volte para o menu pai com ESC ou SETA PARA ESQUERDA. Feche o menu de contexto com ESC."},{name:"Caixa de Lista do Editor",legend:"Dentro de uma caixa de lista, mova para o próximo item com TAB ou SETA PARA BAIXO. Mova para o item anterior com SHIFT+TAB ou SETA PARA CIMA. Pressione ESPAÇO ou ENTER para selecionar uma opção na lista. Pressione ESC para fechar a caixa de lista."}, 7{name:"Menu de Contexto do Editor",legend:"Pressione ${contextMenu} ou TECLA DE MENU para abrir o menu de contexto, então mova para a próxima opção com TAB ou SETA PARA BAIXO. Mova para a anterior com SHIFT+TAB ou SETA PARA CIMA. Pressione ESPAÇO ou ENTER para selecionar a opção do menu. Abra o submenu da opção atual com ESPAÇO ou ENTER ou SETA PARA DIREITA. Volte para o menu pai com ESC ou SETA PARA ESQUERDA. Feche o menu de contexto com ESC."},{name:"Caixa de Lista do Editor",legend:"Dentro de uma caixa de lista, mova para o próximo item com TAB ou SETA PARA BAIXO. Mova para o item anterior com SHIFT+TAB ou SETA PARA CIMA. Pressione ESPAÇO ou ENTER para selecionar uma opção na lista. Pressione ESC para fechar a caixa de lista."},
8{name:"Barra de Caminho do Elementos do Editor",legend:"Pressione ${elementsPathFocus} para a barra de caminho dos elementos. Mova para o próximo botão de elemento com TAB ou SETA PARA DIREITA. Mova para o botão anterior com SHIFT+TAB ou SETA PARA ESQUERDA. Pressione ESPAÇO ou ENTER para selecionar o elemento no editor."}]},{name:"Comandos",items:[{name:" Comando Desfazer",legend:"Pressione ${undo}"},{name:" Comando Refazer",legend:"Pressione ${redo}"},{name:" Comando Negrito",legend:"Pressione ${bold}"}, 8{name:"Barra de Caminho do Elementos do Editor",legend:"Pressione ${elementsPathFocus} para a barra de caminho dos elementos. Mova para o próximo botão de elemento com TAB ou SETA PARA DIREITA. Mova para o botão anterior com SHIFT+TAB ou SETA PARA ESQUERDA. Pressione ESPAÇO ou ENTER para selecionar o elemento no editor."}]},{name:"Comandos",items:[{name:" Comando Desfazer",legend:"Pressione ${undo}"},{name:" Comando Refazer",legend:"Pressione ${redo}"},{name:" Comando Negrito",legend:"Pressione ${bold}"},
9{name:" Comando Itálico",legend:"Pressione ${italic}"},{name:" Comando Sublinhado",legend:"Pressione ${underline}"},{name:" Comando Link",legend:"Pressione ${link}"},{name:" Comando Fechar Barra de Ferramentas",legend:"Pressione ${toolbarCollapse}"},{name:"Acessar o comando anterior de spaço de foco",legend:"Pressione ${accessNextSpace} para acessar o espaço de foco não alcançável mais próximo antes do cursor, por exemplo: dois elementos HR adjacentes. Repita a combinação de teclas para alcançar espaços de foco distantes."}, 9{name:" Comando Itálico",legend:"Pressione ${italic}"},{name:" Comando Sublinhado",legend:"Pressione ${underline}"},{name:" Comando Link",legend:"Pressione ${link}"},{name:" Comando Fechar Barra de Ferramentas",legend:"Pressione ${toolbarCollapse}"},{name:"Acessar o comando anterior de spaço de foco",legend:"Pressione ${accessNextSpace} para acessar o espaço de foco não alcançável mais próximo antes do cursor, por exemplo: dois elementos HR adjacentes. Repita a combinação de teclas para alcançar espaços de foco distantes."},
10{name:"Acessar próximo fomando de spaço de foco",legend:"Pressione ${accessNextSpace} para acessar o espaço de foco não alcançável mais próximo após o cursor, por exemplo: dois elementos HR adjacentes. Repita a combinação de teclas para alcançar espaços de foco distantes."},{name:" Ajuda de Acessibilidade",legend:"Pressione ${a11yHelp}"}]}],backspace:"Tecla Backspace",tab:"Tecla Tab",enter:"Enter",shift:"Shift",ctrl:"Ctrl",alt:"Alt",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up", 10{name:"Acessar próximo fomando de spaço de foco",legend:"Pressione ${accessNextSpace} para acessar o espaço de foco não alcançável mais próximo após o cursor, por exemplo: dois elementos HR adjacentes. Repita a combinação de teclas para alcançar espaços de foco distantes."},{name:" Ajuda de Acessibilidade",legend:"Pressione ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tecla Tab",pause:"Pause",capslock:"Caps Lock",
11pageDown:"Page Down",end:"End",home:"Home",leftArrow:"Seta à Esquerda",upArrow:"Seta à Cima",rightArrow:"Seta à Direita",downArrow:"Seta à Baixo",insert:"Insert","delete":"Delete",leftWindowKey:"Tecla do Windows Esquerda",rightWindowKey:"Tecla do Windows Direita",selectKey:"Tecla Selecionar",numpad0:"0 do Teclado Numérico",numpad1:"1 do Teclado Numérico",numpad2:"2 do Teclado Numérico",numpad3:"3 do Teclado Numérico",numpad4:"4 do Teclado Numérico",numpad5:"5 do Teclado Numérico",numpad6:"6 do Teclado Numérico", 11escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",leftArrow:"Seta à Esquerda",upArrow:"Seta à Cima",rightArrow:"Seta à Direita",downArrow:"Seta à Baixo",insert:"Insert",leftWindowKey:"Tecla do Windows Esquerda",rightWindowKey:"Tecla do Windows Direita",selectKey:"Tecla Selecionar",numpad0:"0 do Teclado Numérico",numpad1:"1 do Teclado Numérico",numpad2:"2 do Teclado Numérico",numpad3:"3 do Teclado Numérico",numpad4:"4 do Teclado Numérico",numpad5:"5 do Teclado Numérico",numpad6:"6 do Teclado Numérico",
12numpad7:"7 do Teclado Numérico",numpad8:"8 do Teclado Numérico",numpad9:"9 do Teclado Numérico",multiply:"Multiplicar",add:"Mais",subtract:"Subtrair",decimalPoint:"Ponto",divide:"Dividir",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Ponto-e-vírgula",equalSign:"Igual",comma:"Vírgula",dash:"Hífen",period:"Ponto",forwardSlash:"Barra",graveAccent:"Acento Grave",openBracket:"Abrir Conchetes", 12numpad7:"7 do Teclado Numérico",numpad8:"8 do Teclado Numérico",numpad9:"9 do Teclado Numérico",multiply:"Multiplicar",add:"Mais",subtract:"Subtrair",decimalPoint:"Ponto",divide:"Dividir",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Ponto-e-vírgula",equalSign:"Igual",comma:"Vírgula",dash:"Hífen",period:"Ponto",forwardSlash:"Barra",graveAccent:"Acento Grave",openBracket:"Abrir Conchetes",
13backSlash:"Contra-barra",closeBracket:"Fechar Colchetes",singleQuote:"Aspas Simples"}); \ No newline at end of file 13backSlash:"Contra-barra",closeBracket:"Fechar Colchetes",singleQuote:"Aspas Simples"}); \ No newline at end of file
diff --git a/release/plugins/a11yhelp/dialogs/lang/pt.js b/release/plugins/a11yhelp/dialogs/lang/pt.js
index 620dcbe..a8c788d 100644
--- a/release/plugins/a11yhelp/dialogs/lang/pt.js
+++ b/release/plugins/a11yhelp/dialogs/lang/pt.js
@@ -1,12 +1,12 @@
1/* 1/*
2 Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 For licensing, see LICENSE.md or http://ckeditor.com/license 3 For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang("a11yhelp","pt",{title:"Instruções de acessibilidade",contents:"Conteúdo de ajuda. Use a tecla ESC para fechar esta janela.",legend:[{name:"Geral",items:[{name:"Barra de ferramentas do editor",legend:"Clique em ${toolbarFocus} para navegar para a barra de ferramentas. Vá para o grupo da barra de ferramentas anterior e seguinte com TAB e SHIFT+TAB. Vá para o botão da barra de ferramentas anterior com a SETA DIREITA ou ESQUERDA. Pressione ESPAÇO ou ENTER para ativar o botão da barra de ferramentas."}, 5CKEDITOR.plugins.setLang("a11yhelp","pt",{title:"Instruções de acessibilidade",contents:"Conteúdo de ajuda. Use a tecla ESC para fechar esta janela.",legend:[{name:"Geral",items:[{name:"Barra de ferramentas do editor",legend:"Clique em ${toolbarFocus} para navegar na barra de ferramentas. Para navegar entre o grupo da barra de ferramentas anterior e seguinte use TAB e SHIFT+TAB. Para navegar entre o botão da barra de ferramentas seguinte e anterior use a SETA DIREITA ou SETA ESQUERDA. Carregue em ESPAÇO ou ENTER para ativar o botão da barra de ferramentas."},
6{name:"Janela do Editor",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."},{name:"Menu de Contexto do Editor",legend:"Clique em ${contextMenu} ou TECLA APLICAÇÃO para abrir o menu de contexto. Depois vá para a opção do menu seguinte com TAB ou SETA PARA BAIXO. Vá para a opção anterior com SHIFT+TAB ou SETA PARA CIMA. Pressione ESPAÇO ou ENTER para selecionar a opção do menu. Abra o submenu da opção atual com ESPAÇO, ENTER ou SETA DIREITA. GVá para o item do menu parente com ESC ou SETA ESQUERDA. Feche o menu de contexto com ESC."}, 6{name:"Janela do editor",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."},{name:"Menu de contexto do editor",legend:"Clique em ${contextMenu} ou TECLA APLICAÇÃO para abrir o menu de contexto. Depois vá para a opção do menu seguinte com TAB ou SETA PARA BAIXO. Vá para a opção anterior com SHIFT+TAB ou SETA PARA CIMA. Pressione ESPAÇO ou ENTER para selecionar a opção do menu. Abra o submenu da opção atual com ESPAÇO, ENTER ou SETA DIREITA. Vá para o item do menu contentor com ESC ou SETA ESQUERDA. Feche o menu de contexto com ESC."},
7{name:"Editor de caixa em lista",legend:"Dentro da caixa da lista, vá para o itemda lista seguinte com TAB ou SETA PARA BAIXO. Move Vá parao item da lista anterior com SHIFT+TAB ou SETA PARA BAIXO. Pressione ESPAÇO ou ENTER para selecionar a opção da lista. Pressione ESC para fechar a caisa da lista."},{name:"Caminho Barra Elemento Editor",legend:"Clique em ${elementsPathFocus} para navegar para a barra do caminho dos elementos. Vá para o botão do elemento seguinte com TAB ou SETA DIREITA. Vá para o botão anterior com SHIFT+TAB ou SETA ESQUERDA. Pressione ESPAÇO ou ENTER para selecionar o elemento no editor."}]}, 7{name:"Editor de caixa em lista",legend:"Dentro de uma lista, para navegar para o item seguinte da lista use TAB ou SETA PARA BAIXO. Para o item anterior da lista use SHIFT+TAB ou SETA PARA BAIXO. Carregue em ESPAÇO ou ENTER para selecionar a opção lista. Carregue em ESC para fechar a caixa da lista."},{name:"Editor da barra de caminho dos elementos",legend:"Clique em ${elementsPathFocus} para navegar na barra de caminho dos elementos. Para o botão do elemento seguinte use TAB ou SETA DIREITA. para o botão anterior use SHIFT+TAB ou SETA ESQUERDA. Carregue em ESPAÇO ou ENTER para selecionar o elemento no editor."}]},
8{name:"Comandos",items:[{name:"Comando de Anular",legend:"Carregar ${undo}"},{name:"Comando de Refazer",legend:"Pressione ${redo}"},{name:"Comando de Negrito",legend:"Pressione ${bold}"},{name:"Comando de Itálico",legend:"Pressione ${italic}"},{name:"Comando de Sublinhado",legend:"Pressione ${underline}"},{name:"Comando de Hiperligação",legend:"Pressione ${link}"},{name:"Comando de Ocultar Barra de Ferramentas",legend:"Pressione ${toolbarCollapse}"},{name:"Acesso comando do espaço focus anterior", 8{name:"Comandos",items:[{name:"Comando de anular",legend:"Carregar ${undo}"},{name:"Comando de refazer",legend:"Clique ${redo}"},{name:"Comando de negrito",legend:"Pressione ${bold}"},{name:"Comando de itálico",legend:"Pressione ${italic}"},{name:"Comando de sublinhado",legend:"Pressione ${underline}"},{name:"Comando de hiperligação",legend:"Pressione ${link}"},{name:"Comando de ocultar barra de ferramentas",legend:"Pressione ${toolbarCollapse}"},{name:"Aceder ao comando espaço de foco anterior",
9legend:"Clique em ${accessPreviousSpace} para aceder ao espaço do focos inalcançável mais perto antes do sinal de omissão, por exemplo: dois elementos HR adjacentes. Repetir a combinação da chave para alcançar os espaços dos focos distantes."},{name:"Acesso comando do espaço focus seguinte",legend:"Pressione ${accessNextSpace} para aceder ao espaço do focos inalcançável mais perto depois do sinal de omissão, por exemplo: dois elementos HR adjacentes. Repetir a combinação da chave para alcançar os espaços dos focos distantes."}, 9legend:"Clique em ${accessPreviousSpace} para aceder ao espaço do focos inalcançável mais perto antes do sinal de omissão, por exemplo: dois elementos HR adjacentes. Repetir a combinação da chave para alcançar os espaços dos focos distantes."},{name:"Acesso comando do espaço focus seguinte",legend:"Pressione ${accessNextSpace} para aceder ao espaço do focos inalcançável mais perto depois do sinal de omissão, por exemplo: dois elementos HR adjacentes. Repetir a combinação da chave para alcançar os espaços dos focos distantes."},
10{name:"Ajuda a acessibilidade",legend:"Pressione ${a11yHelp}"}]}],backspace:"Backspace",tab:"Tab",enter:"Enter",shift:"Shift",ctrl:"Ctrl",alt:"Alt",pause:"Pausa",capslock:"Maiúsculas",escape:"Esc",pageUp:"Page Up",pageDown:"Page Down",end:"Fim",home:"Entrada",leftArrow:"Seta esquerda",upArrow:"Seta para cima",rightArrow:"Seta direita",downArrow:"Seta para baixo",insert:"Inserir","delete":"Eliminar",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0", 10{name:"Ajuda a acessibilidade",legend:"Pressione ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Separador",pause:"Pausa",capslock:"Maiúsculas",escape:"Esc",pageUp:"Subir página",pageDown:"Descer página",leftArrow:"Seta esquerda",upArrow:"Seta para cima",rightArrow:"Seta direita",downArrow:"Seta para baixo",insert:"Inserir",leftWindowKey:"Tecla esquerda Windows",rightWindowKey:"Tecla direita Windows",selectKey:"Selecionar tecla",
11numpad1:"Numpad 1",numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiplicar",add:"Adicionar",subtract:"Subtrair",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Vírgula",dash:"Dash",period:"Period", 11numpad0:"Numpad 0",numpad1:"Numpad 1",numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiplicar",add:"Adicionar",subtract:"Subtrair",decimalPoint:"Ponto decimal",divide:"Separar",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Ponto e vírgula",equalSign:"Sinald e igual",comma:"Vírgula",
12forwardSlash:"Forward Slash",graveAccent:"Acento grave",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"}); \ No newline at end of file 12dash:"Cardinal",period:"Ponto",forwardSlash:"Forward Slash",graveAccent:"Acento grave",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Plica"}); \ No newline at end of file
diff --git a/release/plugins/a11yhelp/dialogs/lang/ro.js b/release/plugins/a11yhelp/dialogs/lang/ro.js
index a92f60f..72f91d4 100644
--- a/release/plugins/a11yhelp/dialogs/lang/ro.js
+++ b/release/plugins/a11yhelp/dialogs/lang/ro.js
@@ -1,11 +1,11 @@
1/* 1/*
2 Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 For licensing, see LICENSE.md or http://ckeditor.com/license 3 For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang("a11yhelp","ro",{title:"Instrucțiuni de accesibilitate",contents:"Cuprins. Pentru a închide acest dialog, apăsați tasta ESC.",legend:[{name:"General",items:[{name:"Editează bara instrumente.",legend:"Apasă ${toolbarFocus} pentru a naviga prin bara de instrumente. Pentru a te mișca prin grupurile de instrumente folosește tastele TAB și SHIFT+TAB. Pentru a te mișca intre diverse instrumente folosește tastele SĂGEATĂ DREAPTA sau SĂGEATĂ STÂNGA. Apasă butonul SPAȚIU sau ENTER pentru activarea instrumentului."}, 5CKEDITOR.plugins.setLang("a11yhelp","ro",{title:"Instrucțiuni de accesibilitate",contents:"Cuprins. Pentru a închide acest dialog, apăsați tasta ESC.",legend:[{name:"General",items:[{name:"Editează bara instrumente.",legend:"Apasă ${toolbarFocus} pentru a naviga prin bara de instrumente. Pentru a te mișca prin grupurile de instrumente folosește tastele TAB și SHIFT+TAB. Pentru a te mișca intre diverse instrumente folosește tastele SĂGEATĂ DREAPTA sau SĂGEATĂ STÂNGA. Apasă butonul SPAȚIU sau ENTER pentru activarea instrumentului."},
6{name:"Dialog editor",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."},{name:"Editor meniu contextual",legend:"Apasă ${contextMenu} sau TASTA MENIU pentru a deschide meniul contextual. Treci la următoarea opțiune din meniu cu TAB sau SĂGEATĂ JOS. Treci la opțiunea anterioară cu SHIFT+TAB sau SĂGEATĂ SUS. Apasă SPAȚIU sau ENTER pentru a selecta opțiunea din meniu. Deschide sub-meniul opțiunii curente cu SPAȚIU sau ENTER sau SĂGEATĂ DREAPTA. Revino la elementul din meniul părinte cu ESC sau SĂGEATĂ STÂNGA. Închide meniul de context cu ESC."}, 6{name:"Dialog editor",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."},{name:"Editor meniu contextual",legend:"Apasă ${contextMenu} sau TASTA MENIU pentru a deschide meniul contextual. Treci la următoarea opțiune din meniu cu TAB sau SĂGEATĂ JOS. Treci la opțiunea anterioară cu SHIFT+TAB sau SĂGEATĂ SUS. Apasă SPAȚIU sau ENTER pentru a selecta opțiunea din meniu. Deschide sub-meniul opțiunii curente cu SPAȚIU sau ENTER sau SĂGEATĂ DREAPTA. Revino la elementul din meniul părinte cu ESC sau SĂGEATĂ STÂNGA. Închide meniul de context cu ESC."},
7{name:"Editor Casetă Listă",legend:"În interiorul unei liste, treci la următorull element cu TAB sau SĂGEATĂ JOS. Treci la elementul anterior din listă cu SHIFT+TAB sau SĂGEATĂ SUS. Apasă SPAȚIU sau ENTER pentru a selecta opțiunea din listă. Apasă ESC pentru a închide lista."},{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]}, 7{name:"Editor Casetă Listă",legend:"În interiorul unei liste, treci la următorull element cu TAB sau SĂGEATĂ JOS. Treci la elementul anterior din listă cu SHIFT+TAB sau SĂGEATĂ SUS. Apasă SPAȚIU sau ENTER pentru a selecta opțiunea din listă. Apasă ESC pentru a închide lista."},{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]},
8{name:"Comenzi",items:[{name:" Undo command",legend:"Apasă ${undo}"},{name:"Comanda precedentă",legend:"Apasă ${redo}"},{name:"Comanda Îngroșat",legend:"Apasă ${bold}"},{name:"Comanda Inclinat",legend:"Apasă ${italic}"},{name:"Comanda Subliniere",legend:"Apasă ${underline}"},{name:"Comanda Legatură",legend:"Apasă ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, 8{name:"Comenzi",items:[{name:" Undo command",legend:"Apasă ${undo}"},{name:"Comanda precedentă",legend:"Apasă ${redo}"},{name:"Comanda Îngroșat",legend:"Apasă ${bold}"},{name:"Comanda Inclinat",legend:"Apasă ${italic}"},{name:"Comanda Subliniere",legend:"Apasă ${underline}"},{name:"Comanda Legatură",legend:"Apasă ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},
9{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Accessibility Help",legend:"Press ${a11yHelp}"}]}],backspace:"Backspace",tab:"Tab",enter:"Enter",shift:"Shift",ctrl:"Ctrl",alt:"Alt",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",end:"End",home:"Home",leftArrow:"Left Arrow", 9{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Accessibility Help",legend:"Press ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",
10upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert","delete":"Delete",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1",numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1",f2:"F2",f3:"F3", 10leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1",numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1",f2:"F2",f3:"F3",
11f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash",graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"}); \ No newline at end of file 11f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash",graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"}); \ No newline at end of file
diff --git a/release/plugins/a11yhelp/dialogs/lang/ru.js b/release/plugins/a11yhelp/dialogs/lang/ru.js
index 667c872..6381aae 100644
--- a/release/plugins/a11yhelp/dialogs/lang/ru.js
+++ b/release/plugins/a11yhelp/dialogs/lang/ru.js
@@ -1,11 +1,11 @@
1/* 1/*
2 Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 For licensing, see LICENSE.md or http://ckeditor.com/license 3 For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang("a11yhelp","ru",{title:"Горячие клавиши",contents:"Помощь. Для закрытия этого окна нажмите ESC.",legend:[{name:"Основное",items:[{name:"Панель инструментов",legend:"Нажмите ${toolbarFocus} для перехода к панели инструментов. Для перемещения между группами панели инструментов используйте TAB и SHIFT+TAB. Для перемещения между кнопками панели иструментов используйте кнопки ВПРАВО или ВЛЕВО. Нажмите ПРОБЕЛ или ENTER для запуска кнопки панели инструментов."},{name:"Диалоги",legend:'Внутри диалога, нажмите TAB чтобы перейти к следующему элементу диалога, нажмите SHIFT+TAB чтобы перейти к предыдущему элементу диалога, нажмите ENTER чтобы отправить диалог, нажмите ESC чтобы отменить диалог. Когда диалоговое окно имеет несколько вкладок, получить доступ к панели вкладок как части диалога можно нажатием или сочетания ALT+F10 или TAB, при этом активные элементы диалога будут перебираться с учетом порядка табуляции. При активной панели вкладок, переход к следующей или предыдущей вкладке осуществляется нажатием стрелки "ВПРАВО" или стрелки "ВЛЕВО" соответственно.'}, 5CKEDITOR.plugins.setLang("a11yhelp","ru",{title:"Горячие клавиши",contents:"Помощь. Для закрытия этого окна нажмите ESC.",legend:[{name:"Основное",items:[{name:"Панель инструментов",legend:"Нажмите ${toolbarFocus} для перехода к панели инструментов. Для перемещения между группами панели инструментов используйте TAB и SHIFT+TAB. Для перемещения между кнопками панели иструментов используйте кнопки ВПРАВО или ВЛЕВО. Нажмите ПРОБЕЛ или ENTER для запуска кнопки панели инструментов."},{name:"Диалоги",legend:'Внутри диалога, нажмите TAB чтобы перейти к следующему элементу диалога, нажмите SHIFT+TAB чтобы перейти к предыдущему элементу диалога, нажмите ENTER чтобы отправить диалог, нажмите ESC чтобы отменить диалог. Когда диалоговое окно имеет несколько вкладок, получить доступ к панели вкладок как части диалога можно нажатием или сочетания ALT+F10 или TAB, при этом активные элементы диалога будут перебираться с учетом порядка табуляции. При активной панели вкладок, переход к следующей или предыдущей вкладке осуществляется нажатием стрелки "ВПРАВО" или стрелки "ВЛЕВО" соответственно.'},
6{name:"Контекстное меню",legend:'Нажмите ${contextMenu} или клавишу APPLICATION, чтобы открыть контекстное меню. Затем перейдите к следующему пункту меню с помощью TAB или стрелкой "ВНИЗ". Переход к предыдущей опции - SHIFT+TAB или стрелкой "ВВЕРХ". Нажмите SPACE, или ENTER, чтобы задействовать опцию меню. Открыть подменю текущей опции - SPACE или ENTER или стрелкой "ВПРАВО". Возврат к родительскому пункту меню - ESC или стрелкой "ВЛЕВО". Закрытие контекстного меню - ESC.'},{name:"Редактор списка", 6{name:"Контекстное меню",legend:'Нажмите ${contextMenu} или клавишу APPLICATION, чтобы открыть контекстное меню. Затем перейдите к следующему пункту меню с помощью TAB или стрелкой "ВНИЗ". Переход к предыдущей опции - SHIFT+TAB или стрелкой "ВВЕРХ". Нажмите SPACE, или ENTER, чтобы задействовать опцию меню. Открыть подменю текущей опции - SPACE или ENTER или стрелкой "ВПРАВО". Возврат к родительскому пункту меню - ESC или стрелкой "ВЛЕВО". Закрытие контекстного меню - ESC.'},{name:"Редактор списка",
7legend:'Внутри окна списка, переход к следующему пункту списка - TAB или стрелкой "ВНИЗ". Переход к предыдущему пункту списка - SHIFT+TAB или стрелкой "ВВЕРХ". Нажмите SPACE, или ENTER, чтобы задействовать опцию списка. Нажмите ESC, чтобы закрыть окно списка.'},{name:"Путь к элементу",legend:'Нажмите ${elementsPathFocus}, чтобы перейти к панели пути элементов. Переход к следующей кнопке элемента - TAB или стрелкой "ВПРАВО". Переход к предыдущей кнопку - SHIFT+TAB или стрелкой "ВЛЕВО". Нажмите SPACE, или ENTER, чтобы выбрать элемент в редакторе.'}]}, 7legend:'Внутри окна списка, переход к следующему пункту списка - TAB или стрелкой "ВНИЗ". Переход к предыдущему пункту списка - SHIFT+TAB или стрелкой "ВВЕРХ". Нажмите SPACE, или ENTER, чтобы задействовать опцию списка. Нажмите ESC, чтобы закрыть окно списка.'},{name:"Путь к элементу",legend:'Нажмите ${elementsPathFocus}, чтобы перейти к панели пути элементов. Переход к следующей кнопке элемента - TAB или стрелкой "ВПРАВО". Переход к предыдущей кнопку - SHIFT+TAB или стрелкой "ВЛЕВО". Нажмите SPACE, или ENTER, чтобы выбрать элемент в редакторе.'}]},
8{name:"Команды",items:[{name:"Отменить",legend:"Нажмите ${undo}"},{name:"Повторить",legend:"Нажмите ${redo}"},{name:"Полужирный",legend:"Нажмите ${bold}"},{name:"Курсив",legend:"Нажмите ${italic}"},{name:"Подчеркнутый",legend:"Нажмите ${underline}"},{name:"Гиперссылка",legend:"Нажмите ${link}"},{name:"Свернуть панель инструментов",legend:"Нажмите ${toolbarCollapse}"},{name:"Команды доступа к предыдущему фокусному пространству",legend:'Нажмите ${accessPreviousSpace}, чтобы обратиться к ближайшему недостижимому фокусному пространству перед символом "^", например: два смежных HR элемента. Повторите комбинацию клавиш, чтобы достичь отдаленных фокусных пространств.'}, 8{name:"Команды",items:[{name:"Отменить",legend:"Нажмите ${undo}"},{name:"Повторить",legend:"Нажмите ${redo}"},{name:"Полужирный",legend:"Нажмите ${bold}"},{name:"Курсив",legend:"Нажмите ${italic}"},{name:"Подчеркнутый",legend:"Нажмите ${underline}"},{name:"Гиперссылка",legend:"Нажмите ${link}"},{name:"Свернуть панель инструментов",legend:"Нажмите ${toolbarCollapse}"},{name:"Команды доступа к предыдущему фокусному пространству",legend:'Нажмите ${accessPreviousSpace}, чтобы обратиться к ближайшему недостижимому фокусному пространству перед символом "^", например: два смежных HR элемента. Повторите комбинацию клавиш, чтобы достичь отдаленных фокусных пространств.'},
9{name:"Команды доступа к следующему фокусному пространству",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:"Справка по горячим клавишам",legend:"Нажмите ${a11yHelp}"}]}],backspace:"Backspace",tab:"Tab",enter:"Enter",shift:"Shift",ctrl:"Ctrl",alt:"Alt",pause:"Pause",capslock:"Caps Lock",escape:"Esc",pageUp:"Page Up",pageDown:"Page Down",end:"End", 9{name:"Команды доступа к следующему фокусному пространству",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:"Справка по горячим клавишам",legend:"Нажмите ${a11yHelp}"},{name:"Вставить только текст",legend:"Нажмите ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Caps Lock",escape:"Esc",pageUp:"Page Up",
10home:"Home",leftArrow:"Стрелка влево",upArrow:"Стрелка вверх",rightArrow:"Стрелка вправо",downArrow:"Стрелка вниз",insert:"Insert","delete":"Delete",leftWindowKey:"Левая клавиша Windows",rightWindowKey:"Правая клавиша Windows",selectKey:"Выбрать",numpad0:"Цифра 0",numpad1:"Цифра 1",numpad2:"Цифра 2",numpad3:"Цифра 3",numpad4:"Цифра 4",numpad5:"Цифра 5",numpad6:"Цифра 6",numpad7:"Цифра 7",numpad8:"Цифра 8",numpad9:"Цифра 9",multiply:"Умножить",add:"Плюс",subtract:"Вычесть",decimalPoint:"Десятичная точка", 10pageDown:"Page Down",leftArrow:"Стрелка влево",upArrow:"Стрелка вверх",rightArrow:"Стрелка вправо",downArrow:"Стрелка вниз",insert:"Insert",leftWindowKey:"Левая клавиша Windows",rightWindowKey:"Правая клавиша Windows",selectKey:"Выбрать",numpad0:"Цифра 0",numpad1:"Цифра 1",numpad2:"Цифра 2",numpad3:"Цифра 3",numpad4:"Цифра 4",numpad5:"Цифра 5",numpad6:"Цифра 6",numpad7:"Цифра 7",numpad8:"Цифра 8",numpad9:"Цифра 9",multiply:"Умножить",add:"Плюс",subtract:"Вычесть",decimalPoint:"Десятичная точка",divide:"Делить",
11divide:"Делить",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Точка с запятой",equalSign:"Равно",comma:"Запятая",dash:"Тире",period:"Точка",forwardSlash:"Наклонная черта",graveAccent:"Апостроф",openBracket:"Открыть скобку",backSlash:"Обратная наклонная черта",closeBracket:"Закрыть скобку",singleQuote:"Одинарная кавычка"}); \ No newline at end of file 11f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Точка с запятой",equalSign:"Равно",comma:"Запятая",dash:"Тире",period:"Точка",forwardSlash:"Наклонная черта",graveAccent:"Апостроф",openBracket:"Открыть скобку",backSlash:"Обратная наклонная черта",closeBracket:"Закрыть скобку",singleQuote:"Одинарная кавычка"}); \ No newline at end of file
diff --git a/release/plugins/a11yhelp/dialogs/lang/si.js b/release/plugins/a11yhelp/dialogs/lang/si.js
index 56b5b92..0f21a5f 100644
--- a/release/plugins/a11yhelp/dialogs/lang/si.js
+++ b/release/plugins/a11yhelp/dialogs/lang/si.js
@@ -1,10 +1,10 @@
1/* 1/*
2 Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 For licensing, see LICENSE.md or http://ckeditor.com/license 3 For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang("a11yhelp","si",{title:"ළඟා වියහැකි ",contents:"උදව් සඳහා අන්තර්ගතය.නික්මයෙමට ESC බොත්තම ඔබන්න",legend:[{name:"පොදු කරුණු",items:[{name:"සංස්කරණ මෙවලම් ",legend:"ඔබන්න ${මෙවලම් තීරු අවධානය} මෙවලම් තීරුවේ එහා මෙහා යෑමට.ඉදිරියට යෑමට හා ආපසු යෑමට මෙවලම් තීරුකාණ්ඩය හා TAB හා SHIFT+TAB .ඉදිරියට යෑමට හා ආපසු යෑමට මෙවලම් තීරු බොත්තම සමග RIGHT ARROW හෝ LEFT ARROW.මෙවලම් තීරු බොත්තම සක්‍රිය කර ගැනීමට SPACE හෝ ENTER බොත්තම ඔබන්න."},{name:"සංස්කරණ ",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."}, 5CKEDITOR.plugins.setLang("a11yhelp","si",{title:"ළඟා වියහැකි ",contents:"උදව් සඳහා අන්තර්ගතය.නික්මයෙමට ESC බොත්තම ඔබන්න",legend:[{name:"පොදු කරුණු",items:[{name:"සංස්කරණ මෙවලම් ",legend:"ඔබන්න ${මෙවලම් තීරු අවධානය} මෙවලම් තීරුවේ එහා මෙහා යෑමට.ඉදිරියට යෑමට හා ආපසු යෑමට මෙවලම් තීරුකාණ්ඩය හා TAB හා SHIFT+TAB .ඉදිරියට යෑමට හා ආපසු යෑමට මෙවලම් තීරු බොත්තම සමග RIGHT ARROW හෝ LEFT ARROW.මෙවලම් තීරු බොත්තම සක්‍රිය කර ගැනීමට SPACE හෝ ENTER බොත්තම ඔබන්න."},{name:"සංස්කරණ ",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."},
6{name:"සංස්කරණ අඩංගුවට ",legend:"ඔබන්න ${අන්තර්ගත මෙනුව} හෝ APPLICATION KEY අන්තර්ගත-මෙනුව විවුරතකිරීමට. ඊළඟ මෙනුව-ව්කල්පයන්ට යෑමට TAB හෝ DOWN ARROW බොත්තම ද, පෙර විකල්පයන්ටයෑමට SHIFT+TAB හෝ UP ARROW බොත්තම ද, මෙනුව-ව්කල්පයන් තේරීමට SPACE හෝ ENTER බොත්තම ද, දැනට විවුර්තව ඇති උප-මෙනුවක වීකල්ප තේරීමට SPACE හෝ ENTER හෝ RIGHT ARROW ද, නැවත පෙර ප්‍රධාන මෙනුවට යෑමට ESC හෝ LEFT ARROW බොත්තම ද. අන්තර්ගත-මෙනුව වැසීමට ESC බොත්තම ද ඔබන්න."},{name:"සංස්කරණ තේරුම් ",legend:"තේරුම් කොටුව තුළ , ඊළඟ අයිතමයට යෑමට TAB හෝ DOWN ARROW , පෙර අයිතමයට යෑමට SHIFT+TAB හෝ UP ARROW . අයිතම විකල්පයන් තේරීමට SPACE හෝ ENTER ,තේරුම් කොටුව වැසීමට ESC බොත්තම් ද ඔබන්න."}, 6{name:"සංස්කරණ අඩංගුවට ",legend:"ඔබන්න ${අන්තර්ගත මෙනුව} හෝ APPLICATION KEY අන්තර්ගත-මෙනුව විවුරතකිරීමට. ඊළඟ මෙනුව-ව්කල්පයන්ට යෑමට TAB හෝ DOWN ARROW බොත්තම ද, පෙර විකල්පයන්ටයෑමට SHIFT+TAB හෝ UP ARROW බොත්තම ද, මෙනුව-ව්කල්පයන් තේරීමට SPACE හෝ ENTER බොත්තම ද, දැනට විවුර්තව ඇති උප-මෙනුවක වීකල්ප තේරීමට SPACE හෝ ENTER හෝ RIGHT ARROW ද, නැවත පෙර ප්‍රධාන මෙනුවට යෑමට ESC හෝ LEFT ARROW බොත්තම ද. අන්තර්ගත-මෙනුව වැසීමට ESC බොත්තම ද ඔබන්න."},{name:"සංස්කරණ තේරුම් ",legend:"තේරුම් කොටුව තුළ , ඊළඟ අයිතමයට යෑමට TAB හෝ DOWN ARROW , පෙර අයිතමයට යෑමට SHIFT+TAB හෝ UP ARROW . අයිතම විකල්පයන් තේරීමට SPACE හෝ ENTER ,තේරුම් කොටුව වැසීමට ESC බොත්තම් ද ඔබන්න."},
7{name:"සංස්කරණ අංග සහිත ",legend:"ඔබන්න ${මෙවලම් තීරු අවධානය} මෙවලම් තීරුවේ එහා මෙහා යෑමට.ඉදිරියට යෑමට හා ආපසු යෑමට මෙවලම් තීරුකාණ්ඩය හා TAB හා SHIFT+TAB .ඉදිරියට යෑමට හා ආපසු යෑමට මෙවලම් තීරු බොත්තම සමග RIGHT ARROW හෝ LEFT ARROW.මෙවලම් තීරු බොත්තම සක්‍රිය කර ගැනීමට SPACE හෝ ENTER බොත්තම ඔබන්න."}]},{name:"විධාන",items:[{name:"විධානය වෙනස් ",legend:"ඔබන්න ${වෙනස් කිරීම}"},{name:"විධාන නැවත් පෙර පරිදිම වෙනස්කර ගැනීම.",legend:"ඔබන්න ${නැවත් පෙර පරිදිම වෙනස්කර ගැනීම}"},{name:"තද අකුරින් විධාන",legend:"ඔබන්න ${තද }"}, 7{name:"සංස්කරණ අංග සහිත ",legend:"ඔබන්න ${මෙවලම් තීරු අවධානය} මෙවලම් තීරුවේ එහා මෙහා යෑමට.ඉදිරියට යෑමට හා ආපසු යෑමට මෙවලම් තීරුකාණ්ඩය හා TAB හා SHIFT+TAB .ඉදිරියට යෑමට හා ආපසු යෑමට මෙවලම් තීරු බොත්තම සමග RIGHT ARROW හෝ LEFT ARROW.මෙවලම් තීරු බොත්තම සක්‍රිය කර ගැනීමට SPACE හෝ ENTER බොත්තම ඔබන්න."}]},{name:"විධාන",items:[{name:"විධානය වෙනස් ",legend:"ඔබන්න ${වෙනස් කිරීම}"},{name:"විධාන නැවත් පෙර පරිදිම වෙනස්කර ගැනීම.",legend:"ඔබන්න ${නැවත් පෙර පරිදිම වෙනස්කර ගැනීම}"},{name:"තද අකුරින් විධාන",legend:"ඔබන්න ${තද }"},
8{name:"බැධී අකුරු විධාන",legend:"ඔබන්න ${බැධී අකුරු }"},{name:"යටින් ඉරි ඇද ඇති විධාන.",legend:"ඔබන්න ${යටින් ඉරි ඇද ඇති}"},{name:"සම්බන්ධිත විධාන",legend:"ඔබන්න ${සම්බන්ධ }"},{name:"මෙවලම් තීරු හැකුලුම් විධාන",legend:"ඔබන්න ${මෙවලම් තීරු හැකුලුම් }"},{name:"යොමුවීමට පෙර වැදගත් විධාන",legend:"ඔබන්න ${යොමුවීමට ඊළඟ }"},{name:"යොමුවීමට ඊළග වැදගත් විධාන",legend:"ඔබන්න ${යොමුවීමට ඊළඟ }"},{name:"ප්‍රවේශ ",legend:"ඔබන්න ${a11y }"}]}],backspace:"Backspace",tab:"Tab",enter:"Enter",shift:"Shift",ctrl:"Ctrl", 8{name:"බැධී අකුරු විධාන",legend:"ඔබන්න ${බැධී අකුරු }"},{name:"යටින් ඉරි ඇද ඇති විධාන.",legend:"ඔබන්න ${යටින් ඉරි ඇද ඇති}"},{name:"සම්බන්ධිත විධාන",legend:"ඔබන්න ${සම්බන්ධ }"},{name:"මෙවලම් තීරු හැකුලුම් විධාන",legend:"ඔබන්න ${මෙවලම් තීරු හැකුලුම් }"},{name:"යොමුවීමට පෙර වැදගත් විධාන",legend:"ඔබන්න ${යොමුවීමට ඊළඟ }"},{name:"යොමුවීමට ඊළග වැදගත් විධාන",legend:"ඔබන්න ${යොමුවීමට ඊළඟ }"},{name:"ප්‍රවේශ ",legend:"ඔබන්න ${a11y }"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],
9alt:"Alt",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",end:"End",home:"Home",leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert","delete":"Delete",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1",numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8", 9tab:"Tab",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1",numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",
10numpad9:"Numpad 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash",graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"}); \ No newline at end of file 10add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash",graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"}); \ No newline at end of file
diff --git a/release/plugins/a11yhelp/dialogs/lang/sk.js b/release/plugins/a11yhelp/dialogs/lang/sk.js
index 6f16ff9..dc59887 100644
--- a/release/plugins/a11yhelp/dialogs/lang/sk.js
+++ b/release/plugins/a11yhelp/dialogs/lang/sk.js
@@ -1,11 +1,11 @@
1/* 1/*
2 Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 For licensing, see LICENSE.md or http://ckeditor.com/license 3 For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang("a11yhelp","sk",{title:"Inštrukcie prístupnosti",contents:"Pomocný obsah. Pre zatvorenie tohto okna, stlačte ESC.",legend:[{name:"Všeobecne",items:[{name:"Lišta nástrojov editora",legend:"Stlačte ${toolbarFocus} pre navigáciu na lištu nástrojov. Medzi ďalšou a predchádzajúcou lištou nástrojov sa pohybujete s TAB a SHIFT+TAB. Medzi ďalším a predchádzajúcim tlačidlom na lište nástrojov sa pohybujete s pravou šípkou a ľavou šípkou. Stlačte medzerník alebo ENTER pre aktiváciu tlačidla lišty nástrojov."}, 5CKEDITOR.plugins.setLang("a11yhelp","sk",{title:"Inštrukcie prístupnosti",contents:"Pomocný obsah. Pre zatvorenie tohto okna, stlačte ESC.",legend:[{name:"Všeobecne",items:[{name:"Lišta nástrojov editora",legend:"Stlačte ${toolbarFocus} pre navigáciu na lištu nástrojov. Medzi ďalšou a predchádzajúcou lištou nástrojov sa pohybujete s TAB a SHIFT+TAB. Medzi ďalším a predchádzajúcim tlačidlom na lište nástrojov sa pohybujete s pravou šípkou a ľavou šípkou. Stlačte medzerník alebo ENTER pre aktiváciu tlačidla lišty nástrojov."},
6{name:"Editorový dialóg",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."},{name:"Editorové kontextové menu",legend:"Stlačte ${contextMenu} alebo APPLICATION KEY pre otvorenie kontextového menu. Potom sa presúvajte na ďalšie možnosti menu s TAB alebo dolnou šípkou. Presunte sa k predchádzajúcej možnosti s SHIFT+TAB alebo hornou šípkou. Stlačte medzerník alebo ENTER pre výber možnosti menu. Otvorte pod-menu danej možnosti s medzerníkom, alebo ENTER, alebo pravou šípkou. Vráťte sa späť do položky rodičovského menu s ESC alebo ľavou šípkou. Zatvorte kontextové menu s ESC."}, 6{name:"Editorový dialóg",legend:"V dialógovom okne stlačte TAB pre presun na ďalší prvok, SHIFT+TAB pre presun na predchádzajúci prvok, ENTER pre odoslanie, ESC pre zrušenie. Keď má dialógové okno viacero kariet, zoznam kariet dosiahnete buď stlačením ALT+F10 alebo s TAB v príslušnom poradí kariet. So zameraným zoznamom kariet sa pohybujte k ďalšej alebo predchádzajúcej karte cez PRAVÚ a ĽAVÚ ŠÍPKU."},{name:"Editorové kontextové menu",legend:"Stlačte ${contextMenu} alebo APPLICATION KEY pre otvorenie kontextového menu. Potom sa presúvajte na ďalšie možnosti menu s TAB alebo dolnou šípkou. Presunte sa k predchádzajúcej možnosti s SHIFT+TAB alebo hornou šípkou. Stlačte medzerník alebo ENTER pre výber možnosti menu. Otvorte pod-menu danej možnosti s medzerníkom, alebo ENTER, alebo pravou šípkou. Vráťte sa späť do položky rodičovského menu s ESC alebo ľavou šípkou. Zatvorte kontextové menu s ESC."},
7{name:"Editorov box zoznamu",legend:"V boxe zoznamu, presuňte sa na ďalšiu položku v zozname s TAB alebo dolnou šípkou. Presuňte sa k predchádzajúcej položke v zozname so SHIFT+TAB alebo hornou šípkou. Stlačte medzerník alebo ENTER pre výber možnosti zoznamu. Stlačte ESC pre zatvorenie boxu zoznamu."},{name:"Editorove pásmo cesty prvku",legend:"Stlačte ${elementsPathFocus} pre navigovanie na pásmo cesty elementu. Presuňte sa na tlačidlo ďalšieho prvku s TAB alebo pravou šípkou. Presuňte sa k predchádzajúcemu tlačidlu s SHIFT+TAB alebo ľavou šípkou. Stlačte medzerník alebo ENTER pre výber prvku v editore."}]}, 7{name:"Editorov box zoznamu",legend:"V boxe zoznamu, presuňte sa na ďalšiu položku v zozname s TAB alebo dolnou šípkou. Presuňte sa k predchádzajúcej položke v zozname so SHIFT+TAB alebo hornou šípkou. Stlačte medzerník alebo ENTER pre výber možnosti zoznamu. Stlačte ESC pre zatvorenie boxu zoznamu."},{name:"Editorove pásmo cesty prvku",legend:"Stlačte ${elementsPathFocus} pre navigovanie na pásmo cesty elementu. Presuňte sa na tlačidlo ďalšieho prvku s TAB alebo pravou šípkou. Presuňte sa k predchádzajúcemu tlačidlu s SHIFT+TAB alebo ľavou šípkou. Stlačte medzerník alebo ENTER pre výber prvku v editore."}]},
8{name:"Príkazy",items:[{name:"Vrátiť príkazy",legend:"Stlačte ${undo}"},{name:"Nanovo vrátiť príkaz",legend:"Stlačte ${redo}"},{name:"Príkaz na stučnenie",legend:"Stlačte ${bold}"},{name:"Príkaz na kurzívu",legend:"Stlačte ${italic}"},{name:"Príkaz na podčiarknutie",legend:"Stlačte ${underline}"},{name:"Príkaz na odkaz",legend:"Stlačte ${link}"},{name:"Príkaz na zbalenie lišty nástrojov",legend:"Stlačte ${toolbarCollapse}"},{name:"Prejsť na predchádzajúcu zamerateľnú medzeru príkazu",legend:"Stlačte ${accessPreviousSpace} pre prístup na najbližšie nedosiahnuteľné zamerateľné medzery pred vsuvkuo. Napríklad: dve za sebou idúce horizontálne čiary. Opakujte kombináciu klávesov pre dosiahnutie vzdialených zamerateľných medzier."}, 8{name:"Príkazy",items:[{name:"Vrátiť príkazy",legend:"Stlačte ${undo}"},{name:"Nanovo vrátiť príkaz",legend:"Stlačte ${redo}"},{name:"Príkaz na stučnenie",legend:"Stlačte ${bold}"},{name:"Príkaz na kurzívu",legend:"Stlačte ${italic}"},{name:"Príkaz na podčiarknutie",legend:"Stlačte ${underline}"},{name:"Príkaz na odkaz",legend:"Stlačte ${link}"},{name:"Príkaz na zbalenie lišty nástrojov",legend:"Stlačte ${toolbarCollapse}"},{name:"Prejsť na predchádzajúcu zamerateľnú medzeru príkazu",legend:"Stlačte ${accessPreviousSpace} pre prístup na najbližšie nedosiahnuteľné zamerateľné medzery pred vsuvkuo. Napríklad: dve za sebou idúce horizontálne čiary. Opakujte kombináciu klávesov pre dosiahnutie vzdialených zamerateľných medzier."},
9{name:"Prejsť na ďalší ",legend:"Stlačte ${accessNextSpace} pre prístup na najbližšie nedosiahnuteľné zamerateľné medzery po vsuvke. Napríklad: dve za sebou idúce horizontálne čiary. Opakujte kombináciu klávesov pre dosiahnutie vzdialených zamerateľných medzier."},{name:"Pomoc prístupnosti",legend:"Stlačte ${a11yHelp}"}]}],backspace:"Backspace",tab:"Tab",enter:"Enter",shift:"Shift",ctrl:"Ctrl",alt:"Alt",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Stránka hore",pageDown:"Stránka dole", 9{name:"Prejsť na ďalší ",legend:"Stlačte ${accessNextSpace} pre prístup na najbližšie nedosiahnuteľné zamerateľné medzery po vsuvke. Napríklad: dve za sebou idúce horizontálne čiary. Opakujte kombináciu klávesov pre dosiahnutie vzdialených zamerateľných medzier."},{name:"Pomoc prístupnosti",legend:"Stlačte ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Stránka hore",
10end:"End",home:"Home",leftArrow:"Šípka naľavo",upArrow:"Šípka hore",rightArrow:"Šípka napravo",downArrow:"Šípka dole",insert:"Insert","delete":"Delete",leftWindowKey:"Ľavé Windows tlačidlo",rightWindowKey:"Pravé Windows tlačidlo",selectKey:"Tlačidlo Select",numpad0:"Numpad 0",numpad1:"Numpad 1",numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Násobenie",add:"Sčítanie",subtract:"Odčítanie", 10pageDown:"Stránka dole",leftArrow:"Šípka naľavo",upArrow:"Šípka hore",rightArrow:"Šípka napravo",downArrow:"Šípka dole",insert:"Insert",leftWindowKey:"Ľavé Windows tlačidlo",rightWindowKey:"Pravé Windows tlačidlo",selectKey:"Tlačidlo Select",numpad0:"Numpad 0",numpad1:"Numpad 1",numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Násobenie",add:"Sčítanie",subtract:"Odčítanie",decimalPoint:"Desatinná čiarka",
11decimalPoint:"Desatinná čiarka",divide:"Delenie",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Bodkočiarka",equalSign:"Rovná sa",comma:"Čiarka",dash:"Pomĺčka",period:"Bodka",forwardSlash:"Lomítko",graveAccent:"Zdôrazňovanie prízvuku",openBracket:"Hranatá zátvorka otváracia",backSlash:"Backslash",closeBracket:"Hranatá zátvorka zatváracia",singleQuote:"Jednoduché úvodzovky"}); \ No newline at end of file 11divide:"Delenie",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Bodkočiarka",equalSign:"Rovná sa",comma:"Čiarka",dash:"Pomĺčka",period:"Bodka",forwardSlash:"Lomítko",graveAccent:"Zdôrazňovanie prízvuku",openBracket:"Hranatá zátvorka otváracia",backSlash:"Backslash",closeBracket:"Hranatá zátvorka zatváracia",singleQuote:"Jednoduché úvodzovky"}); \ No newline at end of file
diff --git a/release/plugins/a11yhelp/dialogs/lang/sl.js b/release/plugins/a11yhelp/dialogs/lang/sl.js
index 0671357..2df296a 100644
--- a/release/plugins/a11yhelp/dialogs/lang/sl.js
+++ b/release/plugins/a11yhelp/dialogs/lang/sl.js
@@ -1,11 +1,11 @@
1/* 1/*
2 Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 For licensing, see LICENSE.md or http://ckeditor.com/license 3 For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang("a11yhelp","sl",{title:"Navodila Dostopnosti",contents:"Vsebina Pomoči. Če želite zapreti to pogovorno okno pritisnite ESC.",legend:[{name:"Splošno",items:[{name:"Urejevalna Orodna Vrstica",legend:"Pritisnite ${toolbarFocus} za pomik v orodno vrstico. Z TAB in SHIFT+TAB se pomikate na naslednjo in prejšnjo skupino orodne vrstice. Z DESNO PUŠČICO ali LEVO PUŠČICO se pomikate na naslednji in prejšnji gumb orodne vrstice. Pritisnite SPACE ali ENTER, da aktivirate gumb orodne vrstice."}, 5CKEDITOR.plugins.setLang("a11yhelp","sl",{title:"Navodila za dostopnost",contents:"Vsebina pomoči. Če želite zapreti pogovorno okno, pritisnite ESC.",legend:[{name:"Splošno",items:[{name:"Orodna vrstica urejevalnika",legend:"Pritisnite ${toolbarFocus} za pomik v orodno vrstico. Z TAB in SHIFT+TAB se pomikate na naslednjo in prejšnjo skupino orodne vrstice. Z DESNO PUŠČICO ali LEVO PUŠČICO se pomikate na naslednji in prejšnji gumb orodne vrstice. Pritisnite SPACE ali ENTER, da aktivirate gumb orodne vrstice."},
6{name:"Urejevalno Pogovorno Okno",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."},{name:"Urejevalni Kontekstni Meni",legend:"Pritisnite ${contextMenu} ali APPLICATION KEY, da odprete kontekstni meni. Nato se premaknite na naslednjo možnost menija s tipko TAB ali PUŠČICA DOL. Premakniti se na prejšnjo možnost z SHIFT + TAB ali PUŠČICA GOR. Pritisnite SPACE ali ENTER za izbiro možnosti menija. Odprite podmeni trenutne možnosti menija s tipko SPACE ali ENTER ali DESNA PUŠČICA. Vrnite se na matični element menija s tipko ESC ali LEVA PUŠČICA. Zaprite kontekstni meni z ESC."}, 6{name:"Urejevalno Pogovorno Okno",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."},{name:"Kontekstni meni urejevalnika",legend:"Pritisnite ${contextMenu} ali APPLICATION KEY, da odprete kontekstni meni. Nato se premaknite na naslednjo možnost menija s tipko TAB ali PUŠČICA DOL. Premakniti se na prejšnjo možnost z SHIFT + TAB ali PUŠČICA GOR. Pritisnite SPACE ali ENTER za izbiro možnosti menija. Odprite podmeni trenutne možnosti menija s tipko SPACE ali ENTER ali DESNA PUŠČICA. Vrnite se na matični element menija s tipko ESC ali LEVA PUŠČICA. Zaprite kontekstni meni z ESC."},
7{name:"Urejevalno Seznamsko Polje",legend:"Znotraj seznama, se premaknete na naslednji element seznama s tipko TAB ali PUŠČICO DOL. Z SHIFT+TAB ali PUŠČICO GOR se premaknete na prejšnji element seznama. Pritisnite tipko SPACE ali ENTER za izbiro elementa. Pritisnite tipko ESC, da zaprete seznam."},{name:"Urejevalna vrstica poti elementa",legend:"Pritisnite ${elementsPathFocus} za pomikanje po vrstici elementnih poti. S TAB ali DESNA PUŠČICA se premaknete na naslednji gumb elementa. Z SHIFT+TAB ali LEVO PUŠČICO se premaknete na prejšnji gumb elementa. Pritisnite SPACE ali ENTER za izbiro elementa v urejevalniku."}]}, 7{name:"Urejevalno Seznamsko Polje",legend:"Znotraj seznama, se premaknete na naslednji element seznama s tipko TAB ali PUŠČICO DOL. Z SHIFT+TAB ali PUŠČICO GOR se premaknete na prejšnji element seznama. Pritisnite tipko SPACE ali ENTER za izbiro elementa. Pritisnite tipko ESC, da zaprete seznam."},{name:"Urejevalna vrstica poti elementa",legend:"Pritisnite ${elementsPathFocus} za pomikanje po vrstici elementnih poti. S TAB ali DESNA PUŠČICA se premaknete na naslednji gumb elementa. Z SHIFT+TAB ali LEVO PUŠČICO se premaknete na prejšnji gumb elementa. Pritisnite SPACE ali ENTER za izbiro elementa v urejevalniku."}]},
8{name:"Ukazi",items:[{name:"Razveljavi ukaz",legend:"Pritisnite ${undo}"},{name:"Ponovi ukaz",legend:"Pritisnite ${redo}"},{name:"Krepki ukaz",legend:"Pritisnite ${bold}"},{name:"Ležeči ukaz",legend:"Pritisnite ${italic}"},{name:"Poudarni ukaz",legend:"Pritisnite ${underline}"},{name:"Ukaz povezave",legend:"Pritisnite ${link}"},{name:"Skrči Orodno Vrstico Ukaz",legend:"Pritisnite ${toolbarCollapse}"},{name:"Dostop do prejšnjega ukaza ostrenja",legend:"Pritisnite ${accessPreviousSpace} za dostop do najbližjega nedosegljivega osredotočenega prostora pred strešico, npr.: dva sosednja HR elementa. Ponovite kombinacijo tipk, da dosežete oddaljene osredotočene prostore."}, 8{name:"Ukazi",items:[{name:"Razveljavi ukaz",legend:"Pritisnite ${undo}"},{name:"Ponovi ukaz",legend:"Pritisnite ${redo}"},{name:"Krepki ukaz",legend:"Pritisnite ${bold}"},{name:"Ležeči ukaz",legend:"Pritisnite ${italic}"},{name:"Poudarni ukaz",legend:"Pritisnite ${underline}"},{name:"Ukaz povezave",legend:"Pritisnite ${link}"},{name:"Skrči Orodno Vrstico Ukaz",legend:"Pritisnite ${toolbarCollapse}"},{name:"Dostop do prejšnjega ukaza ostrenja",legend:"Pritisnite ${accessPreviousSpace} za dostop do najbližjega nedosegljivega osredotočenega prostora pred strešico, npr.: dva sosednja HR elementa. Ponovite kombinacijo tipk, da dosežete oddaljene osredotočene prostore."},
9{name:"Dostop do naslednjega ukaza ostrenja",legend:"Pritisnite ${accessNextSpace} za dostop do najbližjega nedosegljivega osredotočenega prostora po strešici, npr.: dva sosednja HR elementa. Ponovite kombinacijo tipk, da dosežete oddaljene osredotočene prostore."},{name:"Pomoč Dostopnosti",legend:"Pritisnite ${a11yHelp}"}]}],backspace:"Backspace",tab:"Tab",enter:"Enter",shift:"Shift",ctrl:"Ctrl",alt:"Alt",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",end:"End", 9{name:"Dostop do naslednjega ukaza ostrenja",legend:"Pritisnite ${accessNextSpace} za dostop do najbližjega nedosegljivega osredotočenega prostora po strešici, npr.: dva sosednja HR elementa. Ponovite kombinacijo tipk, da dosežete oddaljene osredotočene prostore."},{name:"Pomoč dostopnosti",legend:"Pritisnite ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Caps Lock",escape:"Escape",
10home:"Home",leftArrow:"Levo puščica",upArrow:"Gor puščica",rightArrow:"Desno puščica",downArrow:"Dol puščica",insert:"Insert","delete":"Delete",leftWindowKey:"Leva Windows tipka",rightWindowKey:"Desna Windows tipka",selectKey:"Select tipka",numpad0:"Numpad 0",numpad1:"Numpad 1",numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Zmnoži",add:"Dodaj",subtract:"Odštej",decimalPoint:"Decimalna vejica", 10pageUp:"Page Up",pageDown:"Page Down",leftArrow:"Puščica levo",upArrow:"Puščica gor",rightArrow:"Puščica desno",downArrow:"Puščica dol",insert:"Insert",leftWindowKey:"Leva tipka Windows",rightWindowKey:"Desna tipka Windows",selectKey:"Select tipka",numpad0:"Numpad 0",numpad1:"Numpad 1",numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Zmnoži",add:"Dodaj",subtract:"Odštej",decimalPoint:"Decimalna vejica",
11divide:"Deli",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Podpičje",equalSign:"enačaj",comma:"Vejica",dash:"Vezaj",period:"Pika",forwardSlash:"Desna poševnica",graveAccent:"Krativec",openBracket:"Oklepaj",backSlash:"Leva poševnica",closeBracket:"Oklepaj",singleQuote:"Opuščaj"}); \ No newline at end of file 11divide:"Deli",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Podpičje",equalSign:"Enačaj",comma:"Vejica",dash:"Vezaj",period:"Pika",forwardSlash:"Desna poševnica",graveAccent:"Krativec",openBracket:"Oklepaj",backSlash:"Leva poševnica",closeBracket:"Zaklepaj",singleQuote:"Opuščaj"}); \ No newline at end of file
diff --git a/release/plugins/a11yhelp/dialogs/lang/sq.js b/release/plugins/a11yhelp/dialogs/lang/sq.js
index 8f9d5c7..77db830 100644
--- a/release/plugins/a11yhelp/dialogs/lang/sq.js
+++ b/release/plugins/a11yhelp/dialogs/lang/sq.js
@@ -1,11 +1,11 @@
1/* 1/*
2 Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 For licensing, see LICENSE.md or http://ckeditor.com/license 3 For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang("a11yhelp","sq",{title:"Udhëzimet e Qasjes",contents:"Përmbajtja ndihmëse. Për ta mbyllur dialogun shtyp ESC.",legend:[{name:"Të përgjithshme",items:[{name:"Shiriti i Redaktuesit",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"Dialogu i Redaktuesit",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."}, 5CKEDITOR.plugins.setLang("a11yhelp","sq",{title:"Udhëzimet e Qasjes",contents:"Përmbajtja ndihmëse. Për ta mbyllur dialogun shtyp ESC.",legend:[{name:"Të përgjithshme",items:[{name:"Shiriti i Redaktuesit",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"Dialogu i Redaktuesit",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."},
6{name:"Editor Context Menu",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."},{name:"Editor List Box",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."}, 6{name:"Editor Context Menu",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."},{name:"Editor List Box",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."},
7{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]},{name:"Komandat",items:[{name:"Rikthe komandën",legend:"Shtyp ${undo}"},{name:"Ribëj komandën",legend:"Shtyp ${redo}"},{name:"Komanda e trashjes së tekstit",legend:"Shtyp ${bold}"},{name:"Komanda kursive",legend:"Shtyp ${italic}"}, 7{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]},{name:"Komandat",items:[{name:"Rikthe komandën",legend:"Shtyp ${undo}"},{name:"Ribëj komandën",legend:"Shtyp ${redo}"},{name:"Komanda e trashjes së tekstit",legend:"Shtyp ${bold}"},{name:"Komanda kursive",legend:"Shtyp ${italic}"},
8{name:"Komanda e nënvijëzimit",legend:"Shtyp ${underline}"},{name:"Komanda e Nyjes",legend:"Shtyp ${link}"},{name:" Toolbar Collapse command",legend:"Shtyp ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, 8{name:"Komanda e nënvijëzimit",legend:"Shtyp ${underline}"},{name:"Komanda e Nyjes",legend:"Shtyp ${link}"},{name:" Toolbar Collapse command",legend:"Shtyp ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},
9{name:"Ndihmë Qasjeje",legend:"Shtyp ${a11yHelp}"}]}],backspace:"Prapa",tab:"Fletë",enter:"Enter",shift:"Shift",ctrl:"Ctrl",alt:"Alt",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",end:"End",home:"Home",leftArrow:"Shenja majtas",upArrow:"Shenja sipër",rightArrow:"Shenja djathtas",downArrow:"Shenja poshtë",insert:"Shto","delete":"Grise",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1", 9{name:"Ndihmë Qasjeje",legend:"Shtyp ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Fletë",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",leftArrow:"Shenja majtas",upArrow:"Shenja sipër",rightArrow:"Shenja djathtas",downArrow:"Shenja poshtë",insert:"Shto",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1",
10numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"Shto",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Presje",dash:"vizë",period:"Pikë",forwardSlash:"Forward Slash", 10numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"Shto",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Presje",dash:"vizë",period:"Pikë",forwardSlash:"Forward Slash",
11graveAccent:"Grave Accent",openBracket:"Hape kllapën",backSlash:"Backslash",closeBracket:"Mbylle kllapën",singleQuote:"Single Quote"}); \ No newline at end of file 11graveAccent:"Grave Accent",openBracket:"Hape kllapën",backSlash:"Backslash",closeBracket:"Mbylle kllapën",singleQuote:"Single Quote"}); \ No newline at end of file
diff --git a/release/plugins/a11yhelp/dialogs/lang/sr-latn.js b/release/plugins/a11yhelp/dialogs/lang/sr-latn.js
index ee71b67..da9a17f 100644
--- a/release/plugins/a11yhelp/dialogs/lang/sr-latn.js
+++ b/release/plugins/a11yhelp/dialogs/lang/sr-latn.js
@@ -1,11 +1,11 @@
1/* 1/*
2 Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 For licensing, see LICENSE.md or http://ckeditor.com/license 3 For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang("a11yhelp","sr-latn",{title:"Accessibility Instructions",contents:"Help Contents. To close this dialog press ESC.",legend:[{name:"Opšte",items:[{name:"Editor Toolbar",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"Editor Dialog",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."}, 5CKEDITOR.plugins.setLang("a11yhelp","sr-latn",{title:"Accessibility Instructions",contents:"Help Contents. To close this dialog press ESC.",legend:[{name:"Opšte",items:[{name:"Editor Toolbar",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"Editor Dialog",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."},
6{name:"Editor Context Menu",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."},{name:"Editor List Box",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."}, 6{name:"Editor Context Menu",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."},{name:"Editor List Box",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."},
7{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]},{name:"Commands",items:[{name:" Undo command",legend:"Press ${undo}"},{name:" Redo command",legend:"Press ${redo}"},{name:" Bold command",legend:"Press ${bold}"},{name:" Italic command",legend:"Press ${italic}"},{name:" Underline command", 7{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]},{name:"Commands",items:[{name:" Undo command",legend:"Press ${undo}"},{name:" Redo command",legend:"Press ${redo}"},{name:" Bold command",legend:"Press ${bold}"},{name:" Italic command",legend:"Press ${italic}"},{name:" Underline command",
8legend:"Press ${underline}"},{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, 8legend:"Press ${underline}"},{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},
9{name:" Accessibility Help",legend:"Press ${a11yHelp}"}]}],backspace:"Backspace",tab:"Tab",enter:"Enter",shift:"Shift",ctrl:"Ctrl",alt:"Alt",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",end:"End",home:"Home",leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert","delete":"Delete",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1", 9{name:" Accessibility Help",legend:"Press ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1",
10numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash", 10numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash",
11graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"}); \ No newline at end of file 11graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"}); \ No newline at end of file
diff --git a/release/plugins/a11yhelp/dialogs/lang/sr.js b/release/plugins/a11yhelp/dialogs/lang/sr.js
index fd04d22..7d7c87d 100644
--- a/release/plugins/a11yhelp/dialogs/lang/sr.js
+++ b/release/plugins/a11yhelp/dialogs/lang/sr.js
@@ -1,11 +1,11 @@
1/* 1/*
2 Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 For licensing, see LICENSE.md or http://ckeditor.com/license 3 For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang("a11yhelp","sr",{title:"Accessibility Instructions",contents:"Help Contents. To close this dialog press ESC.",legend:[{name:"Опште",items:[{name:"Editor Toolbar",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"Editor Dialog",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."}, 5CKEDITOR.plugins.setLang("a11yhelp","sr",{title:"Accessibility Instructions",contents:"Help Contents. To close this dialog press ESC.",legend:[{name:"Опште",items:[{name:"Editor Toolbar",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"Editor Dialog",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."},
6{name:"Editor Context Menu",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."},{name:"Editor List Box",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."}, 6{name:"Editor Context Menu",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."},{name:"Editor List Box",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."},
7{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]},{name:"Commands",items:[{name:" Undo command",legend:"Press ${undo}"},{name:" Redo command",legend:"Press ${redo}"},{name:" Bold command",legend:"Press ${bold}"},{name:" Italic command",legend:"Press ${italic}"},{name:" Underline command", 7{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]},{name:"Commands",items:[{name:" Undo command",legend:"Press ${undo}"},{name:" Redo command",legend:"Press ${redo}"},{name:" Bold command",legend:"Press ${bold}"},{name:" Italic command",legend:"Press ${italic}"},{name:" Underline command",
8legend:"Press ${underline}"},{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, 8legend:"Press ${underline}"},{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},
9{name:" Accessibility Help",legend:"Press ${a11yHelp}"}]}],backspace:"Backspace",tab:"Tab",enter:"Enter",shift:"Shift",ctrl:"Ctrl",alt:"Alt",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",end:"End",home:"Home",leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert","delete":"Delete",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1", 9{name:" Accessibility Help",legend:"Press ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1",
10numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash", 10numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash",
11graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"}); \ No newline at end of file 11graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"}); \ No newline at end of file
diff --git a/release/plugins/a11yhelp/dialogs/lang/sv.js b/release/plugins/a11yhelp/dialogs/lang/sv.js
index 751a075..8180336 100644
--- a/release/plugins/a11yhelp/dialogs/lang/sv.js
+++ b/release/plugins/a11yhelp/dialogs/lang/sv.js
@@ -1,11 +1,11 @@
1/* 1/*
2 Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 For licensing, see LICENSE.md or http://ckeditor.com/license 3 For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang("a11yhelp","sv",{title:"Hjälpmedelsinstruktioner",contents:"Hjälpinnehåll. För att stänga denna dialogruta trycker du på ESC.",legend:[{name:"Allmänt",items:[{name:"Editor verktygsfält",legend:"Tryck på ${toolbarFocus} för att navigera till verktygsfältet. Flytta till nästa och föregående verktygsfältsgrupp med TAB och SHIFT+TAB. Flytta till nästa och föregående knapp i verktygsfältet med HÖGERPIL eller VÄNSTERPIL. Tryck SPACE eller ENTER för att aktivera knappen i verktygsfältet."}, 5CKEDITOR.plugins.setLang("a11yhelp","sv",{title:"Hjälpmedelsinstruktioner",contents:"Hjälpinnehåll. För att stänga denna dialogruta trycker du på ESC.",legend:[{name:"Allmänt",items:[{name:"Editor verktygsfält",legend:"Tryck på ${toolbarFocus} för att navigera till verktygsfältet. Flytta till nästa och föregående verktygsfältsgrupp med TAB och SHIFT+TAB. Flytta till nästa och föregående knapp i verktygsfältet med HÖGERPIL eller VÄNSTERPIL. Tryck SPACE eller ENTER för att aktivera knappen i verktygsfältet."},
6{name:"Dialogeditor",legend:"Inuti en dialogruta, tryck TAB för att navigera till nästa fält i dialogrutan, tryck SKIFT+TAB för att flytta till föregående fält, tryck ENTER för att skicka. Du avbryter och stänger dialogen med ESC. För dialogrutor som har flera flikar, tryck ALT+F10 eller TAB för att navigera till fliklistan. med fliklistan vald flytta till nästa och föregående flik med HÖGER- eller VÄNSTERPIL."},{name:"Editor för innehållsmeny",legend:"Tryck på $ {contextMenu} eller PROGRAMTANGENTEN för att öppna snabbmenyn. Flytta sedan till nästa menyalternativ med TAB eller NEDPIL. Flytta till föregående alternativ med SHIFT + TABB eller UPPIL. Tryck Space eller ENTER för att välja menyalternativ. Öppna undermeny av nuvarande alternativ med SPACE eller ENTER eller HÖGERPIL. Gå tillbaka till överordnade menyalternativ med ESC eller VÄNSTERPIL. Stäng snabbmenyn med ESC."}, 6{name:"Dialogeditor",legend:"Inuti en dialogruta, tryck TAB för att navigera till nästa fält i dialogrutan, tryck SKIFT+TAB för att flytta till föregående fält, tryck ENTER för att skicka. Du avbryter och stänger dialogen med ESC. För dialogrutor som har flera flikar, tryck ALT+F10 eller TAB för att navigera till fliklistan. med fliklistan vald flytta till nästa och föregående flik med HÖGER- eller VÄNSTERPIL."},{name:"Editor för innehållsmeny",legend:"Tryck på $ {contextMenu} eller PROGRAMTANGENTEN för att öppna snabbmenyn. Flytta sedan till nästa menyalternativ med TAB eller NEDPIL. Flytta till föregående alternativ med SHIFT + TABB eller UPPIL. Tryck Space eller ENTER för att välja menyalternativ. Öppna undermeny av nuvarande alternativ med SPACE eller ENTER eller HÖGERPIL. Gå tillbaka till överordnade menyalternativ med ESC eller VÄNSTERPIL. Stäng snabbmenyn med ESC."},
7{name:"Editor för list-box",legend:"Inuti en list-box, gå till nästa listobjekt med TAB eller NEDPIL. Flytta till föregående listobjekt med SHIFT+TAB eller UPPIL. Tryck SPACE eller ENTER för att välja listan alternativet. Tryck ESC för att stänga list-boxen."},{name:"Editor för elementens sökväg",legend:"Tryck på ${elementsPathFocus} för att navigera till verktygsfältet för elementens sökvägar. Flytta till nästa elementknapp med TAB eller HÖGERPIL. Flytta till föregående knapp med SKIFT+TAB eller VÄNSTERPIL. Tryck SPACE eller ENTER för att välja element i redigeraren."}]}, 7{name:"Editor för list-box",legend:"Inuti en list-box, gå till nästa listobjekt med TAB eller NEDPIL. Flytta till föregående listobjekt med SHIFT+TAB eller UPPIL. Tryck SPACE eller ENTER för att välja listan alternativet. Tryck ESC för att stänga list-boxen."},{name:"Editor för elementens sökväg",legend:"Tryck på ${elementsPathFocus} för att navigera till verktygsfältet för elementens sökvägar. Flytta till nästa elementknapp med TAB eller HÖGERPIL. Flytta till föregående knapp med SKIFT+TAB eller VÄNSTERPIL. Tryck SPACE eller ENTER för att välja element i redigeraren."}]},
8{name:"Kommandon",items:[{name:"Ångra kommando",legend:"Tryck på ${undo}"},{name:"Gör om kommando",legend:"Tryck på ${redo}"},{name:"Kommandot fet stil",legend:"Tryck på ${bold}"},{name:"Kommandot kursiv",legend:"Tryck på ${italic}"},{name:"Kommandot understruken",legend:"Tryck på ${underline}"},{name:"Kommandot länk",legend:"Tryck på ${link}"},{name:"Verktygsfält Dölj kommandot",legend:"Tryck på ${toolbarCollapse}"},{name:"Gå till föregående fokus plats",legend:"Tryck på ${accessPreviousSpace} för att gå till närmast onåbara utrymme före markören, exempel: två intilliggande HR element. Repetera tangentkombinationen för att gå till nästa."}, 8{name:"Kommandon",items:[{name:"Ångra kommando",legend:"Tryck på ${undo}"},{name:"Gör om kommando",legend:"Tryck på ${redo}"},{name:"Kommandot fet stil",legend:"Tryck på ${bold}"},{name:"Kommandot kursiv",legend:"Tryck på ${italic}"},{name:"Kommandot understruken",legend:"Tryck på ${underline}"},{name:"Kommandot länk",legend:"Tryck på ${link}"},{name:"Verktygsfält Dölj kommandot",legend:"Tryck på ${toolbarCollapse}"},{name:"Gå till föregående fokus plats",legend:"Tryck på ${accessPreviousSpace} för att gå till närmast onåbara utrymme före markören, exempel: två intilliggande HR element. Repetera tangentkombinationen för att gå till nästa."},
9{name:"Tillgå nästa fokuskommandots utrymme",legend:"Tryck ${accessNextSpace} på för att komma åt den närmaste onåbar fokus utrymme efter cirkumflex, till exempel: två intilliggande HR element. Upprepa tangentkombinationen för att nå avlägsna fokus utrymmen."},{name:"Hjälp om tillgänglighet",legend:"Tryck ${a11yHelp}"}]}],backspace:"Backsteg",tab:"Tab",enter:"Retur",shift:"Skift",ctrl:"Ctrl",alt:"Alt",pause:"Paus",capslock:"Caps lock",escape:"Escape",pageUp:"Sida Up",pageDown:"Sida Ned",end:"Slut", 9{name:"Tillgå nästa fokuskommandots utrymme",legend:"Tryck ${accessNextSpace} på för att komma åt den närmaste onåbar fokus utrymme efter cirkumflex, till exempel: två intilliggande HR element. Upprepa tangentkombinationen för att nå avlägsna fokus utrymmen."},{name:"Hjälp om tillgänglighet",legend:"Tryck ${a11yHelp}"},{name:"Klistra in som vanlig text",legend:"Tryck ${pastetext}",legendEdge:"Tryck ${pastetext}, följt av ${paste}"}]}],tab:"Tab",pause:"Paus",capslock:"Caps lock",escape:"Escape",pageUp:"Sida Up",
10home:"Hem",leftArrow:"Vänsterpil",upArrow:"Uppil",rightArrow:"Högerpil",downArrow:"Nedåtpil",insert:"Infoga","delete":"Radera",leftWindowKey:"Vänster Windowstangent",rightWindowKey:"Höger Windowstangent",selectKey:"Välj tangent",numpad0:"Nummer 0",numpad1:"Nummer 1",numpad2:"Nummer 2",numpad3:"Nummer 3",numpad4:"Nummer 4",numpad5:"Nummer 5",numpad6:"Nummer 6",numpad7:"Nummer 7",numpad8:"Nummer 8",numpad9:"Nummer 9",multiply:"Multiplicera",add:"Addera",subtract:"Minus",decimalPoint:"Decimalpunkt", 10pageDown:"Sida Ned",leftArrow:"Vänsterpil",upArrow:"Uppil",rightArrow:"Högerpil",downArrow:"Nedåtpil",insert:"Infoga",leftWindowKey:"Vänster Windowstangent",rightWindowKey:"Höger Windowstangent",selectKey:"Välj tangent",numpad0:"Nummer 0",numpad1:"Nummer 1",numpad2:"Nummer 2",numpad3:"Nummer 3",numpad4:"Nummer 4",numpad5:"Nummer 5",numpad6:"Nummer 6",numpad7:"Nummer 7",numpad8:"Nummer 8",numpad9:"Nummer 9",multiply:"Multiplicera",add:"Addera",subtract:"Minus",decimalPoint:"Decimalpunkt",divide:"Dividera",
11divide:"Dividera",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semikolon",equalSign:"Lika med tecken",comma:"Komma",dash:"Minus",period:"Punkt",forwardSlash:"Snedstreck framåt",graveAccent:"Accent",openBracket:"Öppningsparentes",backSlash:"Snedstreck bakåt",closeBracket:"Slutparentes",singleQuote:"Enkelt Citattecken"}); \ No newline at end of file 11f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semikolon",equalSign:"Lika med tecken",comma:"Komma",dash:"Minus",period:"Punkt",forwardSlash:"Snedstreck framåt",graveAccent:"Accent",openBracket:"Öppningsparentes",backSlash:"Snedstreck bakåt",closeBracket:"Slutparentes",singleQuote:"Enkelt Citattecken"}); \ No newline at end of file
diff --git a/release/plugins/a11yhelp/dialogs/lang/th.js b/release/plugins/a11yhelp/dialogs/lang/th.js
index 2499b99..c2df8db 100644
--- a/release/plugins/a11yhelp/dialogs/lang/th.js
+++ b/release/plugins/a11yhelp/dialogs/lang/th.js
@@ -1,11 +1,11 @@
1/* 1/*
2 Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 For licensing, see LICENSE.md or http://ckeditor.com/license 3 For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang("a11yhelp","th",{title:"Accessibility Instructions",contents:"Help Contents. To close this dialog press ESC.",legend:[{name:"ทั่วไป",items:[{name:"แถบเครื่องมือสำหรับเครื่องมือช่วยพิมพ์",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"Editor Dialog",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."}, 5CKEDITOR.plugins.setLang("a11yhelp","th",{title:"Accessibility Instructions",contents:"Help Contents. To close this dialog press ESC.",legend:[{name:"ทั่วไป",items:[{name:"แถบเครื่องมือสำหรับเครื่องมือช่วยพิมพ์",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"Editor Dialog",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."},
6{name:"Editor Context Menu",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."},{name:"Editor List Box",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."}, 6{name:"Editor Context Menu",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."},{name:"Editor List Box",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."},
7{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]},{name:"คำสั่ง",items:[{name:"เลิกทำคำสั่ง",legend:"วาง ${undo}"},{name:"คำสั่งสำหรับทำซ้ำ",legend:"วาง ${redo}"},{name:"คำสั่งสำหรับตัวหนา",legend:"วาง ${bold}"},{name:"คำสั่งสำหรับตัวเอียง",legend:"วาง ${italic}"},{name:"คำสั่งสำหรับขีดเส้นใต้", 7{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]},{name:"คำสั่ง",items:[{name:"เลิกทำคำสั่ง",legend:"วาง ${undo}"},{name:"คำสั่งสำหรับทำซ้ำ",legend:"วาง ${redo}"},{name:"คำสั่งสำหรับตัวหนา",legend:"วาง ${bold}"},{name:"คำสั่งสำหรับตัวเอียง",legend:"วาง ${italic}"},{name:"คำสั่งสำหรับขีดเส้นใต้",
8legend:"วาง ${underline}"},{name:"คำสั่งสำหรับลิงก์",legend:"วาง ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, 8legend:"วาง ${underline}"},{name:"คำสั่งสำหรับลิงก์",legend:"วาง ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},
9{name:" Accessibility Help",legend:"Press ${a11yHelp}"}]}],backspace:"Backspace",tab:"Tab",enter:"Enter",shift:"Shift",ctrl:"Ctrl",alt:"Alt",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",end:"End",home:"Home",leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert","delete":"Delete",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1", 9{name:" Accessibility Help",legend:"Press ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1",
10numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash", 10numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash",
11graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"}); \ No newline at end of file 11graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"}); \ No newline at end of file
diff --git a/release/plugins/a11yhelp/dialogs/lang/tr.js b/release/plugins/a11yhelp/dialogs/lang/tr.js
index 1eb46ce..699f0db 100644
--- a/release/plugins/a11yhelp/dialogs/lang/tr.js
+++ b/release/plugins/a11yhelp/dialogs/lang/tr.js
@@ -1,5 +1,5 @@
1/* 1/*
2 Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 For licensing, see LICENSE.md or http://ckeditor.com/license 3 For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang("a11yhelp","tr",{title:"Erişilebilirlik Talimatları",contents:"Yardım içeriği. Bu pencereyi kapatmak için ESC tuşuna basın.",legend:[{name:"Genel",items:[{name:"Düzenleyici Araç Çubuğu",legend:"Araç çubuğunda gezinmek için ${toolbarFocus} basın. TAB ve SHIFT+TAB ile önceki ve sonraki araç çubuğu grubuna taşıyın. SAĞ OK veya SOL OK ile önceki ve sonraki bir araç çubuğu düğmesini hareket ettirin. SPACE tuşuna basın veya araç çubuğu düğmesini etkinleştirmek için ENTER tuşna basın."}, 5CKEDITOR.plugins.setLang("a11yhelp","tr",{title:"Erişilebilirlik Talimatları",contents:"Yardım içeriği. Bu pencereyi kapatmak için ESC tuşuna basın.",legend:[{name:"Genel",items:[{name:"Düzenleyici Araç Çubuğu",legend:"Araç çubuğunda gezinmek için ${toolbarFocus} basın. TAB ve SHIFT+TAB ile önceki ve sonraki araç çubuğu grubuna taşıyın. SAĞ OK veya SOL OK ile önceki ve sonraki bir araç çubuğu düğmesini hareket ettirin. SPACE tuşuna basın veya araç çubuğu düğmesini etkinleştirmek için ENTER tuşna basın."},
@@ -7,6 +7,6 @@ CKEDITOR.plugins.setLang("a11yhelp","tr",{title:"Erişilebilirlik Talimatları",
7{name:"İçerik Menü Editörü",legend:"İçerik menüsünü açmak için ${contextMenu} veya UYGULAMA TUŞU'na basın. Daha sonra SEKME veya AŞAĞI OK ile bir sonraki menü seçeneği taşıyın. SHIFT + TAB veya YUKARI OK ile önceki seçeneğe gider. Menü seçeneğini seçmek için SPACE veya ENTER tuşuna basın. Seçili seçeneğin alt menüsünü SPACE ya da ENTER veya SAĞ OK açın. Üst menü öğesini geçmek için ESC veya SOL OK ile geri dönün. ESC ile bağlam menüsünü kapatın."},{name:"Liste Kutusu Editörü",legend:"Liste kutusu içinde, bir sonraki liste öğesine SEKME VEYA AŞAĞI OK ile taşıyın. SHIFT+TAB veya YUKARI önceki liste öğesi taşıyın. Liste seçeneği seçmek için SPACE veya ENTER tuşuna basın. Liste kutusunu kapatmak için ESC tuşuna basın."}, 7{name:"İçerik Menü Editörü",legend:"İçerik menüsünü açmak için ${contextMenu} veya UYGULAMA TUŞU'na basın. Daha sonra SEKME veya AŞAĞI OK ile bir sonraki menü seçeneği taşıyın. SHIFT + TAB veya YUKARI OK ile önceki seçeneğe gider. Menü seçeneğini seçmek için SPACE veya ENTER tuşuna basın. Seçili seçeneğin alt menüsünü SPACE ya da ENTER veya SAĞ OK açın. Üst menü öğesini geçmek için ESC veya SOL OK ile geri dönün. ESC ile bağlam menüsünü kapatın."},{name:"Liste Kutusu Editörü",legend:"Liste kutusu içinde, bir sonraki liste öğesine SEKME VEYA AŞAĞI OK ile taşıyın. SHIFT+TAB veya YUKARI önceki liste öğesi taşıyın. Liste seçeneği seçmek için SPACE veya ENTER tuşuna basın. Liste kutusunu kapatmak için ESC tuşuna basın."},
8{name:"Element Yol Çubuğu Editörü",legend:"Elementlerin yol çubuğunda gezinmek için ${ElementsPathFocus} basın. SEKME veya SAĞ OK ile sonraki element düğmesine taşıyın. SHIFT+TAB veya SOL OK önceki düğmeye hareket ettirin. Editör içindeki elementi seçmek için ENTER veya SPACE tuşuna basın."}]},{name:"Komutlar",items:[{name:"Komutu geri al",legend:"$(undo)'ya basın"},{name:"Komutu geri al",legend:"${redo} basın"},{name:" Kalın komut",legend:"${bold} basın"},{name:" İtalik komutu",legend:"${italic} basın"}, 8{name:"Element Yol Çubuğu Editörü",legend:"Elementlerin yol çubuğunda gezinmek için ${ElementsPathFocus} basın. SEKME veya SAĞ OK ile sonraki element düğmesine taşıyın. SHIFT+TAB veya SOL OK önceki düğmeye hareket ettirin. Editör içindeki elementi seçmek için ENTER veya SPACE tuşuna basın."}]},{name:"Komutlar",items:[{name:"Komutu geri al",legend:"$(undo)'ya basın"},{name:"Komutu geri al",legend:"${redo} basın"},{name:" Kalın komut",legend:"${bold} basın"},{name:" İtalik komutu",legend:"${italic} basın"},
9{name:" Alttan çizgi komutu",legend:"${underline} basın"},{name:" Bağlantı komutu",legend:"${link} basın"},{name:" Araç çubuğu Toplama komutu",legend:"${toolbarCollapse} basın"},{name:"Önceki komut alanına odaklan",legend:"Düzeltme imleçinden önce, en yakın uzaktaki alana erişmek için ${accessPreviousSpace} basın, örneğin: iki birleşik HR elementleri. Aynı tuş kombinasyonu tekrarıyla diğer alanlarada ulaşın."},{name:"Sonraki komut alanına odaklan",legend:"Düzeltme imleçinden sonra, en yakın uzaktaki alana erişmek için ${accessNextSpace} basın, örneğin: iki birleşik HR elementleri. Aynı tuş kombinasyonu tekrarıyla diğer alanlarada ulaşın."}, 9{name:" Alttan çizgi komutu",legend:"${underline} basın"},{name:" Bağlantı komutu",legend:"${link} basın"},{name:" Araç çubuğu Toplama komutu",legend:"${toolbarCollapse} basın"},{name:"Önceki komut alanına odaklan",legend:"Düzeltme imleçinden önce, en yakın uzaktaki alana erişmek için ${accessPreviousSpace} basın, örneğin: iki birleşik HR elementleri. Aynı tuş kombinasyonu tekrarıyla diğer alanlarada ulaşın."},{name:"Sonraki komut alanına odaklan",legend:"Düzeltme imleçinden sonra, en yakın uzaktaki alana erişmek için ${accessNextSpace} basın, örneğin: iki birleşik HR elementleri. Aynı tuş kombinasyonu tekrarıyla diğer alanlarada ulaşın."},
10{name:"Erişilebilirlik Yardımı",legend:"${a11yHelp}'e basın"}]}],backspace:"Silme",tab:"Sekme tuşu",enter:"Gir tuşu",shift:'"Shift" Kaydırma tuşu',ctrl:'"Ctrl" Kontrol tuşu',alt:'"Alt" Anahtar tuşu',pause:"Durdurma tuşu",capslock:"Büyük harf tuşu",escape:"Vazgeç tuşu",pageUp:"Sayfa Yukarı",pageDown:"Sayfa Aşağı",end:"Sona",home:"En başa",leftArrow:"Sol ok",upArrow:"Yukarı ok",rightArrow:"Sağ ok",downArrow:"Aşağı ok",insert:"Araya gir","delete":"Silme",leftWindowKey:"Sol windows tuşu",rightWindowKey:"Sağ windows tuşu", 10{name:"Erişilebilirlik Yardımı",legend:"${a11yHelp}'e basın"},{name:"Düz Metin Olarak Yapıştır",legend:"${pastetext} basın",legendEdge:"Önce ${pastetext} ardından${paste} basın"}]}],tab:"Sekme tuşu",pause:"Durdurma tuşu",capslock:"Büyük harf tuşu",escape:"Vazgeç tuşu",pageUp:"Sayfa Yukarı",pageDown:"Sayfa Aşağı",leftArrow:"Sol ok",upArrow:"Yukarı ok",rightArrow:"Sağ ok",downArrow:"Aşağı ok",insert:"Araya gir",leftWindowKey:"Sol windows tuşu",rightWindowKey:"Sağ windows tuşu",selectKey:"Seçme tuşu",
11selectKey:"Seçme tuşu",numpad0:"Nümerik 0",numpad1:"Nümerik 1",numpad2:"Nümerik 2",numpad3:"Nümerik 3",numpad4:"Nümerik 4",numpad5:"Nümerik 5",numpad6:"Nümerik 6",numpad7:"Nümerik 7",numpad8:"Nümerik 8",numpad9:"Nümerik 9",multiply:"Çarpma",add:"Toplama",subtract:"Çıkarma",decimalPoint:"Ondalık işareti",divide:"Bölme",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lk",scrollLock:"Scr Lk",semiColon:"Noktalı virgül",equalSign:"Eşittir", 11numpad0:"Nümerik 0",numpad1:"Nümerik 1",numpad2:"Nümerik 2",numpad3:"Nümerik 3",numpad4:"Nümerik 4",numpad5:"Nümerik 5",numpad6:"Nümerik 6",numpad7:"Nümerik 7",numpad8:"Nümerik 8",numpad9:"Nümerik 9",multiply:"Çarpma",add:"Toplama",subtract:"Çıkarma",decimalPoint:"Ondalık işareti",divide:"Bölme",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lk",scrollLock:"Scr Lk",semiColon:"Noktalı virgül",equalSign:"Eşittir",comma:"Virgül",dash:"Eksi",
12comma:"Virgül",dash:"Eksi",period:"Nokta",forwardSlash:"İleri eğik çizgi",graveAccent:"Üst tırnak",openBracket:"Parantez aç",backSlash:"Ters eğik çizgi",closeBracket:"Parantez kapa",singleQuote:"Tek tırnak"}); \ No newline at end of file 12period:"Nokta",forwardSlash:"İleri eğik çizgi",graveAccent:"Üst tırnak",openBracket:"Parantez aç",backSlash:"Ters eğik çizgi",closeBracket:"Parantez kapa",singleQuote:"Tek tırnak"}); \ No newline at end of file
diff --git a/release/plugins/a11yhelp/dialogs/lang/tt.js b/release/plugins/a11yhelp/dialogs/lang/tt.js
index 40d8b28..ff239fd 100644
--- a/release/plugins/a11yhelp/dialogs/lang/tt.js
+++ b/release/plugins/a11yhelp/dialogs/lang/tt.js
@@ -1,11 +1,11 @@
1/* 1/*
2 Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 For licensing, see LICENSE.md or http://ckeditor.com/license 3 For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang("a11yhelp","tt",{title:"Accessibility Instructions",contents:"Help Contents. To close this dialog press ESC.",legend:[{name:"Гомуми",items:[{name:"Editor Toolbar",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"Editor Dialog",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."}, 5CKEDITOR.plugins.setLang("a11yhelp","tt",{title:"Accessibility Instructions",contents:"Help Contents. To close this dialog press ESC.",legend:[{name:"Гомуми",items:[{name:"Editor Toolbar",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"Editor Dialog",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."},
6{name:"Editor Context Menu",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."},{name:"Editor List Box",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."}, 6{name:"Editor Context Menu",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."},{name:"Editor List Box",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."},
7{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]},{name:"Командалар",items:[{name:"Кайтару",legend:"${undo} басыгыз"},{name:"Кабатлау",legend:"${redo} басыгыз"},{name:"Калын",legend:"${bold} басыгыз"},{name:"Курсив",legend:"${italic} басыгыз"},{name:"Астына сызылган",legend:"${underline} басыгыз"}, 7{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]},{name:"Командалар",items:[{name:"Кайтару",legend:"${undo} басыгыз"},{name:"Кабатлау",legend:"${redo} басыгыз"},{name:"Калын",legend:"${bold} басыгыз"},{name:"Курсив",legend:"${italic} басыгыз"},{name:"Астына сызылган",legend:"${underline} басыгыз"},
8{name:"Сылталама",legend:"${link} басыгыз"},{name:" Toolbar Collapse command",legend:"${toolbarCollapse} басыгыз"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, 8{name:"Сылталама",legend:"${link} басыгыз"},{name:" Toolbar Collapse command",legend:"${toolbarCollapse} басыгыз"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},
9{name:" Accessibility Help",legend:"${a11yHelp} басыгыз"}]}],backspace:"Кайтару",tab:"Tab",enter:"Enter",shift:"Shift",ctrl:"Ctrl",alt:"Alt",pause:"Тыныш",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",end:"End",home:"Home",leftArrow:"Сул якка ук",upArrow:"Өскә таба ук",rightArrow:"Уң якка ук",downArrow:"Аска таба ук",insert:"Өстәү","delete":"Бетерү",leftWindowKey:"Сул Windows төймəсе",rightWindowKey:"Уң Windows төймəсе",selectKey:"Select төймəсе",numpad0:"Numpad 0",numpad1:"Numpad 1", 9{name:" Accessibility Help",legend:"${a11yHelp} басыгыз"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Тыныш",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",leftArrow:"Сул якка ук",upArrow:"Өскә таба ук",rightArrow:"Уң якка ук",downArrow:"Аска таба ук",insert:"Өстәү",leftWindowKey:"Сул Windows төймəсе",rightWindowKey:"Уң Windows төймəсе",selectKey:"Select төймəсе",numpad0:"Numpad 0",
10numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Тапкырлау",add:"Кушу",subtract:"Алу",decimalPoint:"Унарлы нокта",divide:"Бүлү",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Нокталы өтер",equalSign:"Тигезлек билгесе",comma:"Өтер",dash:"Сызык",period:"Дәрәҗә",forwardSlash:"Кыек сызык", 10numpad1:"Numpad 1",numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Тапкырлау",add:"Кушу",subtract:"Алу",decimalPoint:"Унарлы нокта",divide:"Бүлү",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Нокталы өтер",equalSign:"Тигезлек билгесе",comma:"Өтер",dash:"Сызык",period:"Дәрәҗә",
11graveAccent:"Гравис",openBracket:"Җәя ачу",backSlash:"Кире кыек сызык",closeBracket:"Җәя ябу",singleQuote:"Бер иңле куштырнаклар"}); \ No newline at end of file 11forwardSlash:"Кыек сызык",graveAccent:"Гравис",openBracket:"Җәя ачу",backSlash:"Кире кыек сызык",closeBracket:"Җәя ябу",singleQuote:"Бер иңле куштырнаклар"}); \ No newline at end of file
diff --git a/release/plugins/a11yhelp/dialogs/lang/ug.js b/release/plugins/a11yhelp/dialogs/lang/ug.js
index c7fe6fd..cf81a70 100644
--- a/release/plugins/a11yhelp/dialogs/lang/ug.js
+++ b/release/plugins/a11yhelp/dialogs/lang/ug.js
@@ -1,12 +1,12 @@
1/* 1/*
2 Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 For licensing, see LICENSE.md or http://ckeditor.com/license 3 For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang("a11yhelp","ug",{title:"قوشۇمچە چۈشەندۈرۈش",contents:"ياردەم مەزمۇنى. بۇ سۆزلەشكۈنى ياپماقچى بولسىڭىز ESC نى بېسىڭ.",legend:[{name:"ئادەتتىكى",items:[{name:"قورال بالداق تەھرىر",legend:"${toolbarFocus} بېسىلسا قورال بالداققا يېتەكلەيدۇ، TAB ياكى SHIFT+TAB ئارقىلىق قورال بالداق گۇرۇپپىسى تاللىنىدۇ، ئوڭ سول يا ئوقتا توپچا تاللىنىدۇ، بوشلۇق ياكى Enter كۇنۇپكىسىدا تاللانغان توپچىنى قوللىنىدۇ."},{name:"تەھرىرلىگۈچ سۆزلەشكۈسى",legend:"سۆزلەشكۈدە TAB كۇنۇپكىسىدا كېيىنكى سۆز بۆلىكىگە يۆتكىلىدۇ، SHIFT+TAB بىرىكمە كۇنۇپكىسىدا ئالدىنقى سۆز بۆلىكىگە يۆتكىلىدۇ، ENTER كۇنۇپكىسىدا سۆزلەشكۈنى تاپشۇرىدۇ، ESC كۇنۇپكىسى سۆزلەشكۈدىن ۋاز كېچىدۇ. كۆپ بەتكۈچلۈك سۆزلەشكۈگە نىسبەتەن، ALT+F10 دا بەتكۈچ تىزىمىغا يۆتكەيدۇ. ئاندىن TAB كۇنۇپكىسى ياكى ئوڭ يا ئوق كۇنۇپكىسى كېيىنكى بەتكۈچكە يۆتكەيدۇ؛SHIFT+ TAB كۇنۇپكىسى ياكى سول يا ئوق كۇنۇپكىسى ئالدىنقى بەتكۈچكە يۆتكەيدۇ. بوشلۇق كۇنۇپكىسى ياكى ENTER كۇنۇپكىسى بەتكۈچنى تاللايدۇ."}, 5CKEDITOR.plugins.setLang("a11yhelp","ug",{title:"قوشۇمچە چۈشەندۈرۈش",contents:"ياردەم مەزمۇنى. بۇ سۆزلەشكۈنى ياپماقچى بولسىڭىز ESC نى بېسىڭ.",legend:[{name:"ئادەتتىكى",items:[{name:"قورال بالداق تەھرىر",legend:"${toolbarFocus} بېسىلسا قورال بالداققا يېتەكلەيدۇ، TAB ياكى SHIFT+TAB ئارقىلىق قورال بالداق گۇرۇپپىسى تاللىنىدۇ، ئوڭ سول يا ئوقتا توپچا تاللىنىدۇ، بوشلۇق ياكى Enter كۇنۇپكىسىدا تاللانغان توپچىنى قوللىنىدۇ."},{name:"تەھرىرلىگۈچ سۆزلەشكۈسى",legend:"سۆزلەشكۈدە TAB كۇنۇپكىسىدا كېيىنكى سۆز بۆلىكىگە يۆتكىلىدۇ، SHIFT+TAB بىرىكمە كۇنۇپكىسىدا ئالدىنقى سۆز بۆلىكىگە يۆتكىلىدۇ، ENTER كۇنۇپكىسىدا سۆزلەشكۈنى تاپشۇرىدۇ، ESC كۇنۇپكىسى سۆزلەشكۈدىن ۋاز كېچىدۇ. كۆپ بەتكۈچلۈك سۆزلەشكۈگە نىسبەتەن، ALT+F10 دا بەتكۈچ تىزىمىغا يۆتكەيدۇ. ئاندىن TAB كۇنۇپكىسى ياكى ئوڭ يا ئوق كۇنۇپكىسى كېيىنكى بەتكۈچكە يۆتكەيدۇ؛SHIFT+ TAB كۇنۇپكىسى ياكى سول يا ئوق كۇنۇپكىسى ئالدىنقى بەتكۈچكە يۆتكەيدۇ. بوشلۇق كۇنۇپكىسى ياكى ENTER كۇنۇپكىسى بەتكۈچنى تاللايدۇ."},
6{name:"تەھرىرلىگۈچ تىل مۇھىت تىزىملىكى",legend:"${contextMenu} ياكى ئەپ كۇنۇپكىسىدا تىل مۇھىت تىزىملىكىنى ئاچىدۇ. ئاندىن TAB ياكى ئاستى يا ئوق كۇنۇپكىسىدا كېيىنكى تىزىملىك تۈرىگە يۆتكەيدۇ؛ SHIFT+TAB ياكى ئۈستى يا ئوق كۇنۇپكىسىدا ئالدىنقى تىزىملىك تۈرىگە يۆتكەيدۇ. بوشلۇق ياكى ENTER كۇنۇپكىسىدا تىزىملىك تۈرىنى تاللايدۇ. بوشلۇق، ENTER ياكى ئوڭ يا ئوق كۇنۇپكىسىدا تارماق تىزىملىكنى ئاچىدۇ. قايتىش تىزىملىكىگە ESC ياكى سول يا ئوق كۇنۇپكىسى ئىشلىتىلىدۇ. ESC كۇنۇپكىسىدا تىل مۇھىت تىزىملىكى تاقىلىدۇ."},{name:"تەھرىرلىگۈچ تىزىمى", 6{name:"تەھرىرلىگۈچ تىل مۇھىت تىزىملىكى",legend:"${contextMenu} ياكى ئەپ كۇنۇپكىسىدا تىل مۇھىت تىزىملىكىنى ئاچىدۇ. ئاندىن TAB ياكى ئاستى يا ئوق كۇنۇپكىسىدا كېيىنكى تىزىملىك تۈرىگە يۆتكەيدۇ؛ SHIFT+TAB ياكى ئۈستى يا ئوق كۇنۇپكىسىدا ئالدىنقى تىزىملىك تۈرىگە يۆتكەيدۇ. بوشلۇق ياكى ENTER كۇنۇپكىسىدا تىزىملىك تۈرىنى تاللايدۇ. بوشلۇق، ENTER ياكى ئوڭ يا ئوق كۇنۇپكىسىدا تارماق تىزىملىكنى ئاچىدۇ. قايتىش تىزىملىكىگە ESC ياكى سول يا ئوق كۇنۇپكىسى ئىشلىتىلىدۇ. ESC كۇنۇپكىسىدا تىل مۇھىت تىزىملىكى تاقىلىدۇ."},{name:"تەھرىرلىگۈچ تىزىمى",
7legend:"تىزىم قۇتىسىدا، كېيىنكى تىزىم تۈرىگە يۆتكەشتە TAB ياكى ئاستى يا ئوق كۇنۇپكىسى ئىشلىتىلىدۇ. ئالدىنقى تىزىم تۈرىگە يۆتكەشتە SHIFT+TAB ياكى ئۈستى يا ئوق كۇنۇپكىسى ئىشلىتىلىدۇ. بوشلۇق ياكى ENTER كۇنۇپكىسىدا تىزىم تۈرىنى تاللايدۇ.ESC كۇنۇپكىسىدا تىزىم قۇتىسىنى يىغىدۇ."},{name:"تەھرىرلىگۈچ ئېلېمېنت يول بالداق",legend:"${elementsPathFocus} بېسىلسا ئېلېمېنت يول بالداققا يېتەكلەيدۇ، TAB ياكى ئوڭ يا ئوقتا كېيىنكى ئېلېمېنت تاللىنىدۇ، SHIFT+TAB ياكى سول يا ئوقتا ئالدىنقى ئېلېمېنت تاللىنىدۇ، بوشلۇق ياكى Enter كۇنۇپكىسىدا تەھرىرلىگۈچتىكى ئېلېمېنت تاللىنىدۇ."}]}, 7legend:"تىزىم قۇتىسىدا، كېيىنكى تىزىم تۈرىگە يۆتكەشتە TAB ياكى ئاستى يا ئوق كۇنۇپكىسى ئىشلىتىلىدۇ. ئالدىنقى تىزىم تۈرىگە يۆتكەشتە SHIFT+TAB ياكى ئۈستى يا ئوق كۇنۇپكىسى ئىشلىتىلىدۇ. بوشلۇق ياكى ENTER كۇنۇپكىسىدا تىزىم تۈرىنى تاللايدۇ.ESC كۇنۇپكىسىدا تىزىم قۇتىسىنى يىغىدۇ."},{name:"تەھرىرلىگۈچ ئېلېمېنت يول بالداق",legend:"${elementsPathFocus} بېسىلسا ئېلېمېنت يول بالداققا يېتەكلەيدۇ، TAB ياكى ئوڭ يا ئوقتا كېيىنكى ئېلېمېنت تاللىنىدۇ، SHIFT+TAB ياكى سول يا ئوقتا ئالدىنقى ئېلېمېنت تاللىنىدۇ، بوشلۇق ياكى Enter كۇنۇپكىسىدا تەھرىرلىگۈچتىكى ئېلېمېنت تاللىنىدۇ."}]},
8{name:"بۇيرۇق",items:[{name:"بۇيرۇقتىن يېنىۋال",legend:"${undo} نى بېسىڭ"},{name:"قايتىلاش بۇيرۇقى",legend:"${redo} نى بېسىڭ"},{name:"توملىتىش بۇيرۇقى",legend:"${bold} نى بېسىڭ"},{name:"يانتۇ بۇيرۇقى",legend:"${italic} نى بېسىڭ"},{name:"ئاستى سىزىق بۇيرۇقى",legend:"${underline} نى بېسىڭ"},{name:"ئۇلانما بۇيرۇقى",legend:"${link} نى بېسىڭ"},{name:"قورال بالداق قاتلاش بۇيرۇقى",legend:"${toolbarCollapse} نى بېسىڭ"},{name:"ئالدىنقى فوكۇس نۇقتىسىنى زىيارەت قىلىدىغان بۇيرۇق",legend:"${accessPreviousSpace} بېسىپ ^ بەلگىسىگە ئەڭ يېقىن زىيارەت قىلغىلى بولمايدىغان فوكۇس نۇقتا رايونىنىڭ ئالدىنى زىيارەت قىلىدۇ، مەسىلەن: ئۆز ئارا قوشنا ئىككى HR ئېلېمېنت. بۇ بىرىكمە كۇنۇپكا تەكرارلانسا يىراقتىكى فوكۇس نۇقتا رايونىغا يەتكىلى بولىدۇ."}, 8{name:"بۇيرۇق",items:[{name:"بۇيرۇقتىن يېنىۋال",legend:"${undo} نى بېسىڭ"},{name:"قايتىلاش بۇيرۇقى",legend:"${redo} نى بېسىڭ"},{name:"توملىتىش بۇيرۇقى",legend:"${bold} نى بېسىڭ"},{name:"يانتۇ بۇيرۇقى",legend:"${italic} نى بېسىڭ"},{name:"ئاستى سىزىق بۇيرۇقى",legend:"${underline} نى بېسىڭ"},{name:"ئۇلانما بۇيرۇقى",legend:"${link} نى بېسىڭ"},{name:"قورال بالداق قاتلاش بۇيرۇقى",legend:"${toolbarCollapse} نى بېسىڭ"},{name:"ئالدىنقى فوكۇس نۇقتىسىنى زىيارەت قىلىدىغان بۇيرۇق",legend:"${accessPreviousSpace} بېسىپ ^ بەلگىسىگە ئەڭ يېقىن زىيارەت قىلغىلى بولمايدىغان فوكۇس نۇقتا رايونىنىڭ ئالدىنى زىيارەت قىلىدۇ، مەسىلەن: ئۆز ئارا قوشنا ئىككى HR ئېلېمېنت. بۇ بىرىكمە كۇنۇپكا تەكرارلانسا يىراقتىكى فوكۇس نۇقتا رايونىغا يەتكىلى بولىدۇ."},
9{name:"كېيىنكى فوكۇس نۇقتىسىنى زىيارەت قىلىدىغان بۇيرۇق",legend:"${accessNextSpace} بېسىپ ^ بەلگىسىگە ئەڭ يېقىن زىيارەت قىلغىلى بولمايدىغان فوكۇس نۇقتا رايونىنىڭ كەينىنى زىيارەت قىلىدۇ، مەسىلەن: ئۆز ئارا قوشنا ئىككى HR ئېلېمېنت. بۇ بىرىكمە كۇنۇپكا تەكرارلانسا يىراقتىكى فوكۇس نۇقتا رايونىغا يەتكىلى بولىدۇ."},{name:"توسالغۇسىز لايىھە چۈشەندۈرۈشى",legend:"${a11yHelp} نى بېسىڭ"}]}],backspace:"Backspace",tab:"Tab",enter:"Enter",shift:"Shift",ctrl:"Ctrl",alt:"Alt",pause:"Pause",capslock:"Caps Lock",escape:"Escape", 9{name:"كېيىنكى فوكۇس نۇقتىسىنى زىيارەت قىلىدىغان بۇيرۇق",legend:"${accessNextSpace} بېسىپ ^ بەلگىسىگە ئەڭ يېقىن زىيارەت قىلغىلى بولمايدىغان فوكۇس نۇقتا رايونىنىڭ كەينىنى زىيارەت قىلىدۇ، مەسىلەن: ئۆز ئارا قوشنا ئىككى HR ئېلېمېنت. بۇ بىرىكمە كۇنۇپكا تەكرارلانسا يىراقتىكى فوكۇس نۇقتا رايونىغا يەتكىلى بولىدۇ."},{name:"توسالغۇسىز لايىھە چۈشەندۈرۈشى",legend:"${a11yHelp} نى بېسىڭ"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",
10pageUp:"Page Up",pageDown:"Page Down",end:"End",home:"Home",leftArrow:"سول يا ئوق",upArrow:"ئۈستى يا ئوق",rightArrow:"ئوڭ يا ئوق",downArrow:"ئاستى يا ئوق",insert:"قىستۇر","delete":"ئۆچۈر",leftWindowKey:"سول Windows كۇنۇپكىسى",rightWindowKey:"ئوڭ Windows كۇنۇپكىسى",selectKey:"تاللاش كۇنۇپكىسى",numpad0:"سان تاختا 0",numpad1:"سان تاختا 1",numpad2:"سان تاختا 2",numpad3:"سان تاختا 3",numpad4:"سان تاختا 4",numpad5:"سان تاختا 5",numpad6:"سان تاختا 6",numpad7:"سان تاختا 7",numpad8:"سان تاختا 8",numpad9:"سان تاختا 9", 10pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",leftArrow:"سول يا ئوق",upArrow:"ئۈستى يا ئوق",rightArrow:"ئوڭ يا ئوق",downArrow:"ئاستى يا ئوق",insert:"قىستۇر",leftWindowKey:"سول Windows كۇنۇپكىسى",rightWindowKey:"ئوڭ Windows كۇنۇپكىسى",selectKey:"تاللاش كۇنۇپكىسى",numpad0:"سان تاختا 0",numpad1:"سان تاختا 1",numpad2:"سان تاختا 2",numpad3:"سان تاختا 3",numpad4:"سان تاختا 4",numpad5:"سان تاختا 5",numpad6:"سان تاختا 6",numpad7:"سان تاختا 7",numpad8:"سان تاختا 8",
11multiply:"يۇلتۇز كۇنۇپكىسى",add:"قوشۇش",subtract:"ئېلىش",decimalPoint:"كەسىر چېكىت",divide:"بۆلۈش",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"سان قۇلۇپ كۇنۇپكىسى",scrollLock:"سۈرگۈچ قۇلۇپ كۇنۇپكىسى",semiColon:"چېكىتلىك پەش",equalSign:"تەڭلىك بەلگىسى",comma:"پەش",dash:"سىزىقچە",period:"چېكىت",forwardSlash:"سولغا يانتۇ سىزىق",graveAccent:"ئۇرغۇ بەلگىسى",openBracket:"ئېچىلغان تىرناق",backSlash:"ئوڭغا يانتۇ سىزىق",closeBracket:"يېپىلغان تىرناق", 11numpad9:"سان تاختا 9",multiply:"يۇلتۇز كۇنۇپكىسى",add:"قوشۇش",subtract:"ئېلىش",decimalPoint:"كەسىر چېكىت",divide:"بۆلۈش",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"سان قۇلۇپ كۇنۇپكىسى",scrollLock:"سۈرگۈچ قۇلۇپ كۇنۇپكىسى",semiColon:"چېكىتلىك پەش",equalSign:"تەڭلىك بەلگىسى",comma:"پەش",dash:"سىزىقچە",period:"چېكىت",forwardSlash:"سولغا يانتۇ سىزىق",graveAccent:"ئۇرغۇ بەلگىسى",openBracket:"ئېچىلغان تىرناق",backSlash:"ئوڭغا يانتۇ سىزىق",
12singleQuote:"يالاڭ پەش"}); \ No newline at end of file 12closeBracket:"يېپىلغان تىرناق",singleQuote:"يالاڭ پەش"}); \ No newline at end of file
diff --git a/release/plugins/a11yhelp/dialogs/lang/uk.js b/release/plugins/a11yhelp/dialogs/lang/uk.js
index c7aac2b..1bed30b 100644
--- a/release/plugins/a11yhelp/dialogs/lang/uk.js
+++ b/release/plugins/a11yhelp/dialogs/lang/uk.js
@@ -1,5 +1,5 @@
1/* 1/*
2 Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 For licensing, see LICENSE.md or http://ckeditor.com/license 3 For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang("a11yhelp","uk",{title:"Спеціальні Інструкції",contents:"Довідка. Натисніть ESC і вона зникне.",legend:[{name:"Основне",items:[{name:"Панель Редактора",legend:"Натисніть ${toolbarFocus} для переходу до панелі інструментів. Для переміщення між групами панелі інструментів використовуйте TAB і SHIFT+TAB. Для переміщення між кнопками панелі іструментів використовуйте кнопки СТРІЛКА ВПРАВО або ВЛІВО. Натисніть ПРОПУСК або ENTER для запуску кнопки панелі інструментів."},{name:"Діалог Редактора", 5CKEDITOR.plugins.setLang("a11yhelp","uk",{title:"Спеціальні Інструкції",contents:"Довідка. Натисніть ESC і вона зникне.",legend:[{name:"Основне",items:[{name:"Панель Редактора",legend:"Натисніть ${toolbarFocus} для переходу до панелі інструментів. Для переміщення між групами панелі інструментів використовуйте TAB і SHIFT+TAB. Для переміщення між кнопками панелі іструментів використовуйте кнопки СТРІЛКА ВПРАВО або ВЛІВО. Натисніть ПРОПУСК або ENTER для запуску кнопки панелі інструментів."},{name:"Діалог Редактора",
@@ -7,6 +7,6 @@ legend:'Усередині діалогу, натисніть TAB щоб пер
7{name:"Контекстне Меню Редактора",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Потім перейдіть до наступного пункту меню за допомогою TAB або СТРІЛКИ ВНИЗ. Натисніть ПРОПУСК або ENTER для вибору параметру меню. Відкрийте підменю поточного параметру, натиснувши ПРОПУСК або ENTER або СТРІЛКУ ВПРАВО. Перейдіть до батьківського елемента меню, натиснувши ESC або СТРІЛКУ ВЛІВО. Закрийте контекстне меню, натиснувши ESC."},{name:"Скринька Списків Редактора",legend:"Усередині списку, перехід до наступного пункту списку виконується клавішею TAB або СТРІЛКА ВНИЗ. Перехід до попереднього елемента списку клавішею SHIFT+TAB або СТРІЛКА ВГОРУ. Натисніть ПРОПУСК або ENTER, щоб вибрати параметр списку. Натисніть клавішу ESC, щоб закрити список."}, 7{name:"Контекстне Меню Редактора",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Потім перейдіть до наступного пункту меню за допомогою TAB або СТРІЛКИ ВНИЗ. Натисніть ПРОПУСК або ENTER для вибору параметру меню. Відкрийте підменю поточного параметру, натиснувши ПРОПУСК або ENTER або СТРІЛКУ ВПРАВО. Перейдіть до батьківського елемента меню, натиснувши ESC або СТРІЛКУ ВЛІВО. Закрийте контекстне меню, натиснувши ESC."},{name:"Скринька Списків Редактора",legend:"Усередині списку, перехід до наступного пункту списку виконується клавішею TAB або СТРІЛКА ВНИЗ. Перехід до попереднього елемента списку клавішею SHIFT+TAB або СТРІЛКА ВГОРУ. Натисніть ПРОПУСК або ENTER, щоб вибрати параметр списку. Натисніть клавішу ESC, щоб закрити список."},
8{name:"Шлях до елемента редактора",legend:"Натисніть ${elementsPathFocus} для навігації між елементами панелі. Перейдіть до наступного елемента кнопкою TAB або СТРІЛКА ВПРАВО. Перейдіть до попереднього елемента кнопкою SHIFT+TAB або СТРІЛКА ВЛІВО. Натисніть ПРОПУСК або ENTER для вибору елемента в редакторі."}]},{name:"Команди",items:[{name:"Відмінити команду",legend:"Натисніть ${undo}"},{name:"Повторити",legend:"Натисніть ${redo}"},{name:"Жирний",legend:"Натисніть ${bold}"},{name:"Курсив",legend:"Натисніть ${italic}"}, 8{name:"Шлях до елемента редактора",legend:"Натисніть ${elementsPathFocus} для навігації між елементами панелі. Перейдіть до наступного елемента кнопкою TAB або СТРІЛКА ВПРАВО. Перейдіть до попереднього елемента кнопкою SHIFT+TAB або СТРІЛКА ВЛІВО. Натисніть ПРОПУСК або ENTER для вибору елемента в редакторі."}]},{name:"Команди",items:[{name:"Відмінити команду",legend:"Натисніть ${undo}"},{name:"Повторити",legend:"Натисніть ${redo}"},{name:"Жирний",legend:"Натисніть ${bold}"},{name:"Курсив",legend:"Натисніть ${italic}"},
9{name:"Підкреслений",legend:"Натисніть ${underline}"},{name:"Посилання",legend:"Натисніть ${link}"},{name:"Згорнути панель інструментів",legend:"Натисніть ${toolbarCollapse}"},{name:"Доступ до попереднього місця фокусування",legend:"Натисніть ${accessNextSpace} для доступу до найближчої недосяжної області фокусування перед кареткою, наприклад: два сусідні елементи HR. Повторіть комбінацію клавіш для досягнення віддалених областей фокусування."},{name:"Доступ до наступного місця фокусування",legend:"Натисніть ${accessNextSpace} для доступу до найближчої недосяжної області фокусування після каретки, наприклад: два сусідні елементи HR. Повторіть комбінацію клавіш для досягнення віддалених областей фокусування."}, 9{name:"Підкреслений",legend:"Натисніть ${underline}"},{name:"Посилання",legend:"Натисніть ${link}"},{name:"Згорнути панель інструментів",legend:"Натисніть ${toolbarCollapse}"},{name:"Доступ до попереднього місця фокусування",legend:"Натисніть ${accessNextSpace} для доступу до найближчої недосяжної області фокусування перед кареткою, наприклад: два сусідні елементи HR. Повторіть комбінацію клавіш для досягнення віддалених областей фокусування."},{name:"Доступ до наступного місця фокусування",legend:"Натисніть ${accessNextSpace} для доступу до найближчої недосяжної області фокусування після каретки, наприклад: два сусідні елементи HR. Повторіть комбінацію клавіш для досягнення віддалених областей фокусування."},
10{name:"Допомога з доступності",legend:"Натисніть ${a11yHelp}"}]}],backspace:"Backspace",tab:"Tab",enter:"Enter",shift:"Shift",ctrl:"Ctrl",alt:"Alt",pause:"Pause",capslock:"Caps Lock",escape:"Esc",pageUp:"Page Up",pageDown:"Page Down",end:"End",home:"Home",leftArrow:"Ліва стрілка",upArrow:"Стрілка вгору",rightArrow:"Права стрілка",downArrow:"Стрілка вниз",insert:"Вставити","delete":"Видалити",leftWindowKey:"Ліва клавіша Windows",rightWindowKey:"Права клавіша Windows",selectKey:"Виберіть клавішу",numpad0:"Numpad 0", 10{name:"Допомога з доступності",legend:"Натисніть ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Caps Lock",escape:"Esc",pageUp:"Page Up",pageDown:"Page Down",leftArrow:"Ліва стрілка",upArrow:"Стрілка вгору",rightArrow:"Права стрілка",downArrow:"Стрілка вниз",insert:"Вставити",leftWindowKey:"Ліва клавіша Windows",rightWindowKey:"Права клавіша Windows",selectKey:"Виберіть клавішу",numpad0:"Numpad 0",
11numpad1:"Numpad 1",numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Множення",add:"Додати",subtract:"Віднімання",decimalPoint:"Десяткова кома",divide:"Ділення",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Крапка з комою",equalSign:"Знак рівності",comma:"Кома",dash:"Тире",period:"Період", 11numpad1:"Numpad 1",numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Множення",add:"Додати",subtract:"Віднімання",decimalPoint:"Десяткова кома",divide:"Ділення",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Крапка з комою",equalSign:"Знак рівності",comma:"Кома",dash:"Тире",period:"Період",
12forwardSlash:"Коса риска",graveAccent:"Гравіс",openBracket:"Відкрити дужку",backSlash:"Зворотна коса риска",closeBracket:"Закрити дужку",singleQuote:"Одинарні лапки"}); \ No newline at end of file 12forwardSlash:"Коса риска",graveAccent:"Гравіс",openBracket:"Відкрити дужку",backSlash:"Зворотна коса риска",closeBracket:"Закрити дужку",singleQuote:"Одинарні лапки"}); \ No newline at end of file
diff --git a/release/plugins/a11yhelp/dialogs/lang/vi.js b/release/plugins/a11yhelp/dialogs/lang/vi.js
index 18ba882..de18861 100644
--- a/release/plugins/a11yhelp/dialogs/lang/vi.js
+++ b/release/plugins/a11yhelp/dialogs/lang/vi.js
@@ -1,11 +1,11 @@
1/* 1/*
2 Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 For licensing, see LICENSE.md or http://ckeditor.com/license 3 For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang("a11yhelp","vi",{title:"Hướng dẫn trợ năng",contents:"Nội dung Hỗ trợ. Nhấn ESC để đóng hộp thoại.",legend:[{name:"Chung",items:[{name:"Thanh công cụ soạn thảo",legend:"Nhấn ${toolbarFocus} để điều hướng đến thanh công cụ. Nhấn TAB và SHIFT+TAB để chuyển đến nhóm thanh công cụ khác. Nhấn MŨI TÊN PHẢI hoặc MŨI TÊN TRÁI để chuyển sang nút khác trên thanh công cụ. Nhấn PHÍM CÁCH hoặc ENTER để kích hoạt nút trên thanh công cụ."},{name:"Hộp thoại Biên t",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."}, 5CKEDITOR.plugins.setLang("a11yhelp","vi",{title:"Hướng dẫn trợ năng",contents:"Nội dung Hỗ trợ. Nhấn ESC để đóng hộp thoại.",legend:[{name:"Chung",items:[{name:"Thanh công cụ soạn thảo",legend:"Nhấn ${toolbarFocus} để điều hướng đến thanh công cụ. Nhấn TAB và SHIFT+TAB để chuyển đến nhóm thanh công cụ khác. Nhấn MŨI TÊN PHẢI hoặc MŨI TÊN TRÁI để chuyển sang nút khác trên thanh công cụ. Nhấn PHÍM CÁCH hoặc ENTER để kích hoạt nút trên thanh công cụ."},{name:"Hộp thoại Biên t",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."},
6{name:"Trình đơn Ngữ cảnh cBộ soạn thảo",legend:"Nhấn ${contextMenu} hoặc PHÍM ỨNG DỤNG để mở thực đơn ngữ cảnh. Sau đó nhấn TAB hoặc MŨI TÊN XUỐNG để di chuyển đến tuỳ chọn tiếp theo của thực đơn. Nhấn SHIFT+TAB hoặc MŨI TÊN LÊN để quay lại tuỳ chọn trước. Nhấn DẤU CÁCH hoặc ENTER để chọn tuỳ chọn của thực đơn. Nhấn DẤU CÁCH hoặc ENTER hoặc MŨI TÊN SANG PHẢI để mở thực đơn con của tuỳ chọn hiện tại. Nhấn ESC hoặc MŨI TÊN SANG TRÁI để quay trở lại thực đơn gốc. Nhấn ESC để đóng thực đơn ngữ cảnh."}, 6{name:"Trình đơn Ngữ cảnh cBộ soạn thảo",legend:"Nhấn ${contextMenu} hoặc PHÍM ỨNG DỤNG để mở thực đơn ngữ cảnh. Sau đó nhấn TAB hoặc MŨI TÊN XUỐNG để di chuyển đến tuỳ chọn tiếp theo của thực đơn. Nhấn SHIFT+TAB hoặc MŨI TÊN LÊN để quay lại tuỳ chọn trước. Nhấn DẤU CÁCH hoặc ENTER để chọn tuỳ chọn của thực đơn. Nhấn DẤU CÁCH hoặc ENTER hoặc MŨI TÊN SANG PHẢI để mở thực đơn con của tuỳ chọn hiện tại. Nhấn ESC hoặc MŨI TÊN SANG TRÁI để quay trở lại thực đơn gốc. Nhấn ESC để đóng thực đơn ngữ cảnh."},
7{name:"Hộp danh sách trình biên tập",legend:"Trong một danh sách chọn, di chuyển đối tượng tiếp theo với phím TAB hoặc phím mũi tên hướng xuống. Di chuyển đến đối tượng trước đó bằng cách nhấn tổ hợp phím SHIFT+TAB hoặc mũi tên hướng lên. Phím khoảng cách hoặc phím ENTER để chọn các tùy chọn trong danh sách. Nhấn phím ESC để đóng lại danh sách chọn."},{name:"Thanh đường dẫn các đối tượng",legend:"Nhấn ${elementsPathFocus} để điều hướng các đối tượng trong thanh đường dẫn. Di chuyển đến đối tượng tiếp theo bằng phím TAB hoặc phím mũi tên bên phải. Di chuyển đến đối tượng trước đó bằng tổ hợp phím SHIFT+TAB hoặc phím mũi tên bên trái. Nhấn phím khoảng cách hoặc ENTER để chọn đối tượng trong trình soạn thảo."}]}, 7{name:"Hộp danh sách trình biên tập",legend:"Trong một danh sách chọn, di chuyển đối tượng tiếp theo với phím TAB hoặc phím mũi tên hướng xuống. Di chuyển đến đối tượng trước đó bằng cách nhấn tổ hợp phím SHIFT+TAB hoặc mũi tên hướng lên. Phím khoảng cách hoặc phím ENTER để chọn các tùy chọn trong danh sách. Nhấn phím ESC để đóng lại danh sách chọn."},{name:"Thanh đường dẫn các đối tượng",legend:"Nhấn ${elementsPathFocus} để điều hướng các đối tượng trong thanh đường dẫn. Di chuyển đến đối tượng tiếp theo bằng phím TAB hoặc phím mũi tên bên phải. Di chuyển đến đối tượng trước đó bằng tổ hợp phím SHIFT+TAB hoặc phím mũi tên bên trái. Nhấn phím khoảng cách hoặc ENTER để chọn đối tượng trong trình soạn thảo."}]},
8{name:"Lệnh",items:[{name:"Làm lại lện",legend:"Ấn ${undo}"},{name:"Làm lại lệnh",legend:"Ấn ${redo}"},{name:"Lệnh in đậm",legend:"Ấn ${bold}"},{name:"Lệnh in nghiêng",legend:"Ấn ${italic}"},{name:"Lệnh gạch dưới",legend:"Ấn ${underline}"},{name:"Lệnh liên kết",legend:"Nhấn ${link}"},{name:"Lệnh hiển thị thanh công cụ",legend:"Nhấn${toolbarCollapse}"},{name:"Truy cập đến lệnh tập trung vào khoảng cách trước đó",legend:"Ấn ${accessPreviousSpace} để truy cập đến phần tập trung khoảng cách sau phần còn sót lại của khoảng cách gần nhất vốn không tác động đến được , thí dụ: hai yếu tố điều chỉnh HR. Lặp lại các phím kết họep này để vươn đến phần khoảng cách."}, 8{name:"Lệnh",items:[{name:"Làm lại lện",legend:"Ấn ${undo}"},{name:"Làm lại lệnh",legend:"Ấn ${redo}"},{name:"Lệnh in đậm",legend:"Ấn ${bold}"},{name:"Lệnh in nghiêng",legend:"Ấn ${italic}"},{name:"Lệnh gạch dưới",legend:"Ấn ${underline}"},{name:"Lệnh liên kết",legend:"Nhấn ${link}"},{name:"Lệnh hiển thị thanh công cụ",legend:"Nhấn${toolbarCollapse}"},{name:"Truy cập đến lệnh tập trung vào khoảng cách trước đó",legend:"Ấn ${accessPreviousSpace} để truy cập đến phần tập trung khoảng cách sau phần còn sót lại của khoảng cách gần nhất vốn không tác động đến được , thí dụ: hai yếu tố điều chỉnh HR. Lặp lại các phím kết họep này để vươn đến phần khoảng cách."},
9{name:"Truy cập phần đối tượng lệnh khoảng trống",legend:"Ấn ${accessNextSpace} để truy cập đến phần tập trung khoảng cách sau phần còn sót lại của khoảng cách gần nhất vốn không tác động đến được , thí dụ: hai yếu tố điều chỉnh HR. Lặp lại các phím kết họep này để vươn đến phần khoảng cách."},{name:"Trợ giúp liên quan",legend:"Nhấn ${a11yHelp}"}]}],backspace:"Phím Backspace",tab:"Phím Tab",enter:"Phím Tab",shift:"Phím Shift",ctrl:"Phím Ctrl",alt:"Phím Alt",pause:"Phím Pause",capslock:"Phím Caps Lock", 9{name:"Truy cập phần đối tượng lệnh khoảng trống",legend:"Ấn ${accessNextSpace} để truy cập đến phần tập trung khoảng cách sau phần còn sót lại của khoảng cách gần nhất vốn không tác động đến được , thí dụ: hai yếu tố điều chỉnh HR. Lặp lại các phím kết họep này để vươn đến phần khoảng cách."},{name:"Trợ giúp liên quan",legend:"Nhấn ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Phím Tab",pause:"Phím Pause",capslock:"Phím Caps Lock",
10escape:"Phím Escape",pageUp:"Phím Page Up",pageDown:"Phím Page Down",end:"Phím End",home:"Phím Home",leftArrow:"Phím Left Arrow",upArrow:"Phím Up Arrow",rightArrow:"Phím Right Arrow",downArrow:"Phím Down Arrow",insert:"Chèn","delete":"Xóa",leftWindowKey:"Phím Left Windows",rightWindowKey:"Phím Right Windows ",selectKey:"Chọn phím",numpad0:"Phím 0",numpad1:"Phím 1",numpad2:"Phím 2",numpad3:"Phím 3",numpad4:"Phím 4",numpad5:"Phím 5",numpad6:"Phím 6",numpad7:"Phím 7",numpad8:"Phím 8",numpad9:"Phím 9", 10escape:"Phím Escape",pageUp:"Phím Page Up",pageDown:"Phím Page Down",leftArrow:"Phím Left Arrow",upArrow:"Phím Up Arrow",rightArrow:"Phím Right Arrow",downArrow:"Phím Down Arrow",insert:"Chèn",leftWindowKey:"Phím Left Windows",rightWindowKey:"Phím Right Windows ",selectKey:"Chọn phím",numpad0:"Phím 0",numpad1:"Phím 1",numpad2:"Phím 2",numpad3:"Phím 3",numpad4:"Phím 4",numpad5:"Phím 5",numpad6:"Phím 6",numpad7:"Phím 7",numpad8:"Phím 8",numpad9:"Phím 9",multiply:"Nhân",add:"Thêm",subtract:"Trừ",decimalPoint:"Điểm số thập phân",
11multiply:"Nhân",add:"Thêm",subtract:"Trừ",decimalPoint:"Điểm số thập phân",divide:"Chia",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Dấu chấm phẩy",equalSign:"Đăng nhập bằng",comma:"Dấu phẩy",dash:"Dấu gạch ngang",period:"Phím .",forwardSlash:"Phím /",graveAccent:"Phím `",openBracket:"Open Bracket",backSlash:"Dấu gạch chéo ngược",closeBracket:"Gần giá đỡ",singleQuote:"Trích dẫn"}); \ No newline at end of file 11divide:"Chia",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Dấu chấm phẩy",equalSign:"Đăng nhập bằng",comma:"Dấu phẩy",dash:"Dấu gạch ngang",period:"Phím .",forwardSlash:"Phím /",graveAccent:"Phím `",openBracket:"Open Bracket",backSlash:"Dấu gạch chéo ngược",closeBracket:"Gần giá đỡ",singleQuote:"Trích dẫn"}); \ No newline at end of file
diff --git a/release/plugins/a11yhelp/dialogs/lang/zh-cn.js b/release/plugins/a11yhelp/dialogs/lang/zh-cn.js
index b63d413..5c78983 100644
--- a/release/plugins/a11yhelp/dialogs/lang/zh-cn.js
+++ b/release/plugins/a11yhelp/dialogs/lang/zh-cn.js
@@ -1,9 +1,9 @@
1/* 1/*
2 Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 For licensing, see LICENSE.md or http://ckeditor.com/license 3 For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang("a11yhelp","zh-cn",{title:"辅助功能说明",contents:"帮助内容。要关闭此对话框请按 ESC 键。",legend:[{name:"常规",items:[{name:"编辑器工具栏",legend:"按 ${toolbarFocus} 切换到工具栏,使用 TAB 键和 SHIFT+TAB 组合键移动到上一个和下一个工具栏组。使用左右箭头键移动到上一个或下一个工具栏按钮。按空格键或回车键以选中工具栏按钮。"},{name:"编辑器对话框",legend:"在对话框内,按 TAB 键移动到下一个字段,按 SHIFT + TAB 组合键移动到上一个字段,按 ENTER 键提交对话框,按 ESC 键取消对话框。对于有多选项卡的对话框,可以按 ALT + F10 直接切换到或者按 TAB 键逐步移到选项卡列表,当焦点移到选项卡列表时可以用左右箭头键来移动到前后的选项卡。"},{name:"编辑器上下文菜单",legend:"用 ${contextMenu} 或者“应用程序键”打开上下文菜单。然后用 TAB 键或者下箭头键来移动到下一个菜单项;SHIFT + TAB 组合键或者上箭头键移动到上一个菜单项。用 SPACE 键或者 ENTER 键选择菜单项。用 SPACE 键,ENTER 键或者右箭头键打开子菜单。返回菜单用 ESC 键或者左箭头键。用 ESC 键关闭上下文菜单。"}, 5CKEDITOR.plugins.setLang("a11yhelp","zh-cn",{title:"辅助功能说明",contents:"帮助内容。要关闭此对话框请按 ESC 键。",legend:[{name:"常规",items:[{name:"编辑器工具栏",legend:"按 ${toolbarFocus} 切换到工具栏,使用 TAB 键和 SHIFT+TAB 组合键移动到上一个和下一个工具栏组。使用左右箭头键移动到上一个或下一个工具栏按钮。按空格键或回车键以选中工具栏按钮。"},{name:"编辑器对话框",legend:"在对话框内,按 TAB 键移动到下一个字段,按 SHIFT + TAB 组合键移动到上一个字段,按 ENTER 键提交对话框,按 ESC 键取消对话框。对于有多选项卡的对话框,可以按 ALT + F10 直接切换到或者按 TAB 键逐步移到选项卡列表,当焦点移到选项卡列表时可以用左右箭头键来移动到前后的选项卡。"},{name:"编辑器上下文菜单",legend:"用 ${contextMenu} 或者“应用程序键”打开上下文菜单。然后用 TAB 键或者下箭头键来移动到下一个菜单项;SHIFT + TAB 组合键或者上箭头键移动到上一个菜单项。用 SPACE 键或者 ENTER 键选择菜单项。用 SPACE 键,ENTER 键或者右箭头键打开子菜单。返回菜单用 ESC 键或者左箭头键。用 ESC 键关闭上下文菜单。"},
6{name:"编辑器列表框",legend:"在列表框中,移到下一列表项用 TAB 键或者下箭头键。移到上一列表项用SHIFT+TAB 组合键或者上箭头键,用 SPACE 键或者 ENTER 键选择列表项。用 ESC 键收起列表框。"},{name:"编辑器元素路径栏",legend:"按 ${elementsPathFocus} 以导航到元素路径栏,使用 TAB 键或右箭头键选择下一个元素,使用 SHIFT+TAB 组合键或左箭头键选择上一个元素,按空格键或回车键以选定编辑器里的元素。"}]},{name:"命令",items:[{name:" 撤消命令",legend:"按 ${undo}"},{name:" 重做命令",legend:"按 ${redo}"},{name:" 加粗命令",legend:"按 ${bold}"},{name:" 倾斜命令",legend:"按 ${italic}"},{name:" 下划线命令",legend:"按 ${underline}"},{name:" 链接命令",legend:"按 ${link}"},{name:" 工具栏折叠命令",legend:"按 ${toolbarCollapse}"}, 6{name:"编辑器列表框",legend:"在列表框中,移到下一列表项用 TAB 键或者下箭头键。移到上一列表项用SHIFT+TAB 组合键或者上箭头键,用 SPACE 键或者 ENTER 键选择列表项。用 ESC 键收起列表框。"},{name:"编辑器元素路径栏",legend:"按 ${elementsPathFocus} 以导航到元素路径栏,使用 TAB 键或右箭头键选择下一个元素,使用 SHIFT+TAB 组合键或左箭头键选择上一个元素,按空格键或回车键以选定编辑器里的元素。"}]},{name:"命令",items:[{name:" 撤消命令",legend:"按 ${undo}"},{name:" 重做命令",legend:"按 ${redo}"},{name:" 加粗命令",legend:"按 ${bold}"},{name:" 倾斜命令",legend:"按 ${italic}"},{name:" 下划线命令",legend:"按 ${underline}"},{name:" 链接命令",legend:"按 ${link}"},{name:" 工具栏折叠命令",legend:"按 ${toolbarCollapse}"},
7{name:"访问前一个焦点区域的命令",legend:"按 ${accessPreviousSpace} 访问^符号前最近的不可访问的焦点区域,例如:两个相邻的 HR 元素。重复此组合按键可以到达远处的焦点区域。"},{name:"访问下一个焦点区域命令",legend:"按 ${accessNextSpace} 以访问^符号后最近的不可访问的焦点区域。例如:两个相邻的 HR 元素。重复此组合按键可以到达远处的焦点区域。"},{name:"辅助功能帮助",legend:"按 ${a11yHelp}"}]}],backspace:"退格键",tab:"Tab 键",enter:"回车键",shift:"Shift 键",ctrl:"Ctrl 键",alt:"Alt 键",pause:"暂停键",capslock:"大写锁定键",escape:"Esc 键",pageUp:"上翻页键",pageDown:"下翻页键",end:"行尾键",home:"行首键",leftArrow:"向左箭头键",upArrow:"向上箭头键",rightArrow:"向右箭头键",downArrow:"向下箭头键", 7{name:"访问前一个焦点区域的命令",legend:"按 ${accessPreviousSpace} 访问^符号前最近的不可访问的焦点区域,例如:两个相邻的 HR 元素。重复此组合按键可以到达远处的焦点区域。"},{name:"访问下一个焦点区域命令",legend:"按 ${accessNextSpace} 以访问^符号后最近的不可访问的焦点区域。例如:两个相邻的 HR 元素。重复此组合按键可以到达远处的焦点区域。"},{name:"辅助功能帮助",legend:"按 ${a11yHelp}"},{name:"粘贴为纯文本",legend:"按 ${pastetext}",legendEdge:"按 ${pastetext},然后再按 ${paste}"}]}],tab:"Tab 键",pause:"暂停键",capslock:"大写锁定键",escape:"Esc 键",pageUp:"上翻页键",pageDown:"下翻页键",leftArrow:"向左箭头键",upArrow:"向上箭头键",rightArrow:"向右箭头键",downArrow:"向下箭头键",insert:"插入键",
8insert:"插入键","delete":"删除键",leftWindowKey:"左 WIN 键",rightWindowKey:"右 WIN 键",selectKey:"选择键",numpad0:"小键盘 0 键",numpad1:"小键盘 1 键",numpad2:"小键盘 2 键",numpad3:"小键盘 3 键",numpad4:"小键盘 4 键",numpad5:"小键盘 5 键",numpad6:"小键盘 6 键",numpad7:"小键盘 7 键",numpad8:"小键盘 8 键",numpad9:"小键盘 9 键",multiply:"星号键",add:"加号键",subtract:"减号键",decimalPoint:"小数点键",divide:"除号键",f1:"F1 键",f2:"F2 键",f3:"F3 键",f4:"F4 键",f5:"F5 键",f6:"F6 键",f7:"F7 键",f8:"F8 键",f9:"F9 键",f10:"F10 键",f11:"F11 键",f12:"F12 键",numLock:"数字锁定键",scrollLock:"滚动锁定键", 8leftWindowKey:"左 WIN 键",rightWindowKey:"右 WIN 键",selectKey:"选择键",numpad0:"小键盘 0 键",numpad1:"小键盘 1 键",numpad2:"小键盘 2 键",numpad3:"小键盘 3 键",numpad4:"小键盘 4 键",numpad5:"小键盘 5 键",numpad6:"小键盘 6 键",numpad7:"小键盘 7 键",numpad8:"小键盘 8 键",numpad9:"小键盘 9 键",multiply:"星号键",add:"加号键",subtract:"减号键",decimalPoint:"小数点键",divide:"除号键",f1:"F1 键",f2:"F2 键",f3:"F3 键",f4:"F4 键",f5:"F5 键",f6:"F6 键",f7:"F7 键",f8:"F8 键",f9:"F9 键",f10:"F10 键",f11:"F11 键",f12:"F12 键",numLock:"数字锁定键",scrollLock:"滚动锁定键",semiColon:"分号键",equalSign:"等号键",
9semiColon:"分号键",equalSign:"等号键",comma:"逗号键",dash:"短划线键",period:"句号键",forwardSlash:"斜杠键",graveAccent:"重音符键",openBracket:"左中括号键",backSlash:"反斜杠键",closeBracket:"右中括号键",singleQuote:"单引号键"}); \ No newline at end of file 9comma:"逗号键",dash:"短划线键",period:"句号键",forwardSlash:"斜杠键",graveAccent:"重音符键",openBracket:"左中括号键",backSlash:"反斜杠键",closeBracket:"右中括号键",singleQuote:"单引号键"}); \ No newline at end of file
diff --git a/release/plugins/a11yhelp/dialogs/lang/zh.js b/release/plugins/a11yhelp/dialogs/lang/zh.js
index 3305d9c..10bf41c 100644
--- a/release/plugins/a11yhelp/dialogs/lang/zh.js
+++ b/release/plugins/a11yhelp/dialogs/lang/zh.js
@@ -1,9 +1,9 @@
1/* 1/*
2 Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 For licensing, see LICENSE.md or http://ckeditor.com/license 3 For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang("a11yhelp","zh",{title:"輔助工具指南",contents:"說明內容。若要關閉此對話框請按「ESC」。",legend:[{name:"一般",items:[{name:"編輯器工具列",legend:"請按 ${toolbarFocus} 以導覽到工具列。利用 TAB 或 SHIFT+TAB 以便移動到下一個及前一個工具列群組。利用右方向鍵或左方向鍵以便移動到下一個及上一個工具列按鈕。按下空白鍵或 ENTER 鍵啟用工具列按鈕。"},{name:"編輯器對話方塊",legend:"在對話框中,按下 TAB 鍵以導覽到下一個對話框元素,按下 SHIFT+TAB 以移動到上一個對話框元素,按下 ENTER 以遞交對話框,按下 ESC 以取消對話框。當對話框有多個分頁時,可以使用 ALT+F10 或是在對話框分頁順序中的一部份按下 TAB 以使用分頁列表。焦點在分頁列表上時,分別使用右方向鍵及左方向鍵移動到下一個及上一個分頁。"},{name:"編輯器內容功能表",legend:"請按下「${contextMenu}」或是「應用程式鍵」以開啟內容選單。以「TAB」或是「↓」鍵移動到下一個選單選項。以「SHIFT + TAB」或是「↑」鍵移動到上一個選單選項。按下「空白鍵」或是「ENTER」鍵以選取選單選項。以「空白鍵」或「ENTER」或「→」開啟目前選項之子選單。以「ESC」或「←」回到父選單。以「ESC」鍵關閉內容選單」。"}, 5CKEDITOR.plugins.setLang("a11yhelp","zh",{title:"輔助工具指南",contents:"說明內容。若要關閉此對話框請按「ESC」。",legend:[{name:"一般",items:[{name:"編輯器工具列",legend:"請按 ${toolbarFocus} 以導覽到工具列。利用 TAB 或 SHIFT+TAB 以便移動到下一個及前一個工具列群組。利用右方向鍵或左方向鍵以便移動到下一個及上一個工具列按鈕。按下空白鍵或 ENTER 鍵啟用工具列按鈕。"},{name:"編輯器對話方塊",legend:"在對話框中,按下 TAB 鍵以導覽到下一個對話框元素,按下 SHIFT+TAB 以移動到上一個對話框元素,按下 ENTER 以遞交對話框,按下 ESC 以取消對話框。當對話框有多個分頁時,可以使用 ALT+F10 或是在對話框分頁順序中的一部份按下 TAB 以使用分頁列表。焦點在分頁列表上時,分別使用右方向鍵及左方向鍵移動到下一個及上一個分頁。"},{name:"編輯器內容功能表",legend:"請按下「${contextMenu}」或是「應用程式鍵」以開啟內容選單。以「TAB」或是「↓」鍵移動到下一個選單選項。以「SHIFT + TAB」或是「↑」鍵移動到上一個選單選項。按下「空白鍵」或是「ENTER」鍵以選取選單選項。以「空白鍵」或「ENTER」或「→」開啟目前選項之子選單。以「ESC」或「←」回到父選單。以「ESC」鍵關閉內容選單」。"},
6{name:"編輯器清單方塊",legend:"在清單方塊中,使用 TAB 或下方向鍵移動到下一個列表項目。使用 SHIFT+TAB 或上方向鍵移動到上一個列表項目。按下空白鍵或 ENTER 以選取列表選項。按下 ESC 以關閉清單方塊。"},{name:"編輯器元件路徑工具列",legend:"請按 ${elementsPathFocus} 以瀏覽元素路徑列。利用 TAB 或右方向鍵以便移動到下一個元素按鈕。利用 SHIFT 或左方向鍵以便移動到上一個按鈕。按下空白鍵或 ENTER 鍵來選取在編輯器中的元素。"}]},{name:"命令",items:[{name:"復原命令",legend:"請按下「${undo}」"},{name:"重複命令",legend:"請按下「 ${redo}」"},{name:"粗體命令",legend:"請按下「${bold}」"},{name:"斜體",legend:"請按下「${italic}」"},{name:"底線命令",legend:"請按下「${underline}」"},{name:"連結",legend:"請按下「${link}」"}, 6{name:"編輯器清單方塊",legend:"在清單方塊中,使用 TAB 或下方向鍵移動到下一個列表項目。使用 SHIFT+TAB 或上方向鍵移動到上一個列表項目。按下空白鍵或 ENTER 以選取列表選項。按下 ESC 以關閉清單方塊。"},{name:"編輯器元件路徑工具列",legend:"請按 ${elementsPathFocus} 以瀏覽元素路徑列。利用 TAB 或右方向鍵以便移動到下一個元素按鈕。利用 SHIFT 或左方向鍵以便移動到上一個按鈕。按下空白鍵或 ENTER 鍵來選取在編輯器中的元素。"}]},{name:"命令",items:[{name:"復原命令",legend:"請按下「${undo}」"},{name:"重複命令",legend:"請按下「 ${redo}」"},{name:"粗體命令",legend:"請按下「${bold}」"},{name:"斜體",legend:"請按下「${italic}」"},{name:"底線命令",legend:"請按下「${underline}」"},{name:"連結",legend:"請按下「${link}」"},
7{name:"隱藏工具列",legend:"請按下「${toolbarCollapse}」"},{name:"存取前一個焦點空間命令",legend:"請按下 ${accessPreviousSpace} 以存取最近但無法靠近之插字符號前的焦點空間。舉例:二個相鄰的 HR 元素。\r\n重複按鍵以存取較遠的焦點空間。"},{name:"存取下一個焦點空間命令",legend:"請按下 ${accessNextSpace} 以存取最近但無法靠近之插字符號後的焦點空間。舉例:二個相鄰的 HR 元素。\r\n重複按鍵以存取較遠的焦點空間。"},{name:"協助工具說明",legend:"請按下「${a11yHelp}」"}]}],backspace:"退格鍵",tab:"Tab",enter:"Enter",shift:"Shift",ctrl:"Ctrl",alt:"Alt",pause:"Pause",capslock:"Caps Lock",escape:"Esc",pageUp:"Page Up",pageDown:"Page Down",end:"End",home:"Home", 7{name:"隱藏工具列",legend:"請按下「${toolbarCollapse}」"},{name:"存取前一個焦點空間命令",legend:"請按下 ${accessPreviousSpace} 以存取最近但無法靠近之插字符號前的焦點空間。舉例:二個相鄰的 HR 元素。\r\n重複按鍵以存取較遠的焦點空間。"},{name:"存取下一個焦點空間命令",legend:"請按下 ${accessNextSpace} 以存取最近但無法靠近之插字符號後的焦點空間。舉例:二個相鄰的 HR 元素。\r\n重複按鍵以存取較遠的焦點空間。"},{name:"協助工具說明",legend:"請按下「${a11yHelp}」"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Caps Lock",escape:"Esc",pageUp:"Page Up",
8leftArrow:"向左箭號",upArrow:"向上鍵號",rightArrow:"向右鍵號",downArrow:"向下鍵號",insert:"插入","delete":"刪除",leftWindowKey:"左方 Windows 鍵",rightWindowKey:"右方 Windows 鍵",selectKey:"選擇鍵",numpad0:"Numpad 0",numpad1:"Numpad 1",numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"乘號",add:"新增",subtract:"減號",decimalPoint:"小數點",divide:"除號",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10", 8pageDown:"Page Down",leftArrow:"向左箭號",upArrow:"向上鍵號",rightArrow:"向右鍵號",downArrow:"向下鍵號",insert:"插入",leftWindowKey:"左方 Windows 鍵",rightWindowKey:"右方 Windows 鍵",selectKey:"選擇鍵",numpad0:"Numpad 0",numpad1:"Numpad 1",numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"乘號",add:"新增",subtract:"減號",decimalPoint:"小數點",divide:"除號",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",
9f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"分號",equalSign:"等號",comma:"逗號",dash:"虛線",period:"句點",forwardSlash:"斜線",graveAccent:"抑音符號",openBracket:"左方括號",backSlash:"反斜線",closeBracket:"右方括號",singleQuote:"單引號"}); \ No newline at end of file 9f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"分號",equalSign:"等號",comma:"逗號",dash:"虛線",period:"句點",forwardSlash:"斜線",graveAccent:"抑音符號",openBracket:"左方括號",backSlash:"反斜線",closeBracket:"右方括號",singleQuote:"單引號"}); \ No newline at end of file
diff --git a/release/plugins/dialog/dialogDefinition.js b/release/plugins/dialog/dialogDefinition.js
index 26c2feb..5c35976 100644
--- a/release/plugins/dialog/dialogDefinition.js
+++ b/release/plugins/dialog/dialogDefinition.js
@@ -1,4 +1,4 @@
1/* 1/*
2 Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 For licensing, see LICENSE.md or http://ckeditor.com/license 3 For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
diff --git a/release/plugins/html5video/dialogs/html5video.js b/release/plugins/html5video/dialogs/html5video.js
new file mode 100644
index 0000000..dd32471
--- /dev/null
+++ b/release/plugins/html5video/dialogs/html5video.js
@@ -0,0 +1,5 @@
1CKEDITOR.dialog.add("html5video",function(b){return{title:b.lang.html5video.title,minWidth:500,minHeight:100,contents:[{id:"info",label:b.lang.html5video.infoLabel,elements:[{type:"vbox",padding:0,children:[{type:"hbox",widths:["365px","110px"],align:"right",children:[{type:"text",id:"url",label:b.lang.html5video.allowed,required:!0,validate:CKEDITOR.dialog.validate.notEmpty(b.lang.html5video.urlMissing),setup:function(a){this.setValue(a.data.src)},commit:function(a){a.setData("src",this.getValue())}},
2{type:"button",id:"browse",style:"display:inline-block;margin-top:14px;",align:"center",label:b.lang.common.browseServer,hidden:!0,filebrowser:"info:url"}]}]},{type:"checkbox",id:"responsive",label:b.lang.html5video.responsive,setup:function(a){this.setValue(a.data.responsive)},commit:function(a){a.setData("responsive",this.getValue()?"true":"")}},{type:"hbox",id:"size",children:[{type:"text",id:"width",label:b.lang.common.width,setup:function(a){a.data.width&&this.setValue(a.data.width)},commit:function(a){a.setData("width",
3this.getValue())}},{type:"text",id:"height",label:b.lang.common.height,setup:function(a){a.data.height&&this.setValue(a.data.height)},commit:function(a){a.setData("height",this.getValue())}}]},{type:"hbox",id:"alignment",children:[{type:"radio",id:"align",label:b.lang.common.align,items:[[b.lang.common.alignCenter,"center"],[b.lang.common.alignLeft,"left"],[b.lang.common.alignRight,"right"],[b.lang.common.alignNone,"none"]],"default":"center",setup:function(a){a.data.align&&this.setValue(a.data.align)},
4commit:function(a){a.setData("align",this.getValue())}}]}]},{id:"Upload",hidden:!0,filebrowser:"uploadButton",label:b.lang.html5video.upload,elements:[{type:"file",id:"upload",label:b.lang.html5video.btnUpload,style:"height:40px",size:38},{type:"fileButton",id:"uploadButton",filebrowser:"info:url",label:b.lang.html5video.btnUpload,"for":["Upload","upload"]}]},{id:"advanced",label:b.lang.html5video.advanced,elements:[{type:"vbox",padding:0,children:[{type:"hbox",children:[{type:"radio",id:"autoplay",
5label:b.lang.html5video.autoplay,items:[[b.lang.html5video.yes,"yes"],[b.lang.html5video.no,"no"]],"default":"no",setup:function(a){a.data.autoplay&&this.setValue(a.data.autoplay)},commit:function(a){a.setData("autoplay",this.getValue())}}]}]}]}]}}); \ No newline at end of file
diff --git a/release/plugins/icons.png b/release/plugins/icons.png
index 6b315f9..ab7c411 100644
--- a/release/plugins/icons.png
+++ b/release/plugins/icons.png
Binary files differ
diff --git a/release/plugins/icons_hidpi.png b/release/plugins/icons_hidpi.png
index 4f3073d..2516678 100644
--- a/release/plugins/icons_hidpi.png
+++ b/release/plugins/icons_hidpi.png
Binary files differ
diff --git a/release/plugins/iframe/dialogs/iframe.js b/release/plugins/iframe/dialogs/iframe.js
index 9c811a0..d431e5f 100644
--- a/release/plugins/iframe/dialogs/iframe.js
+++ b/release/plugins/iframe/dialogs/iframe.js
@@ -1,5 +1,5 @@
1/* 1/*
2 Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 For licensing, see LICENSE.md or http://ckeditor.com/license 3 For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5(function(){function c(b){var c=this instanceof CKEDITOR.ui.dialog.checkbox;b.hasAttribute(this.id)&&(b=b.getAttribute(this.id),c?this.setValue(e[this.id]["true"]==b.toLowerCase()):this.setValue(b))}function d(b){var c=""===this.getValue(),a=this instanceof CKEDITOR.ui.dialog.checkbox,d=this.getValue();c?b.removeAttribute(this.att||this.id):a?b.setAttribute(this.id,e[this.id][d]):b.setAttribute(this.att||this.id,d)}var e={scrolling:{"true":"yes","false":"no"},frameborder:{"true":"1","false":"0"}}; 5(function(){function c(b){var c=this instanceof CKEDITOR.ui.dialog.checkbox;b.hasAttribute(this.id)&&(b=b.getAttribute(this.id),c?this.setValue(e[this.id]["true"]==b.toLowerCase()):this.setValue(b))}function d(b){var c=""===this.getValue(),a=this instanceof CKEDITOR.ui.dialog.checkbox,d=this.getValue();c?b.removeAttribute(this.att||this.id):a?b.setAttribute(this.id,e[this.id][d]):b.setAttribute(this.att||this.id,d)}var e={scrolling:{"true":"yes","false":"no"},frameborder:{"true":"1","false":"0"}};
diff --git a/release/plugins/image/dialogs/image.js b/release/plugins/image/dialogs/image.js
index 1818579..ad47e6b 100644
--- a/release/plugins/image/dialogs/image.js
+++ b/release/plugins/image/dialogs/image.js
@@ -1,5 +1,5 @@
1/* 1/*
2 Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 For licensing, see LICENSE.md or http://ckeditor.com/license 3 For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5(function(){var v=function(d,l){function v(){var a=arguments,b=this.getContentElement("advanced","txtdlgGenStyle");b&&b.commit.apply(b,a);this.foreach(function(b){b.commit&&"txtdlgGenStyle"!=b.id&&b.commit.apply(b,a)})}function k(a){if(!w){w=1;var b=this.getDialog(),c=b.imageElement;if(c){this.commit(1,c);a=[].concat(a);for(var d=a.length,f,g=0;g<d;g++)(f=b.getContentElement.apply(b,a[g].split(":")))&&f.setup(1,c)}w=0}}var m=/^\s*(\d+)((px)|\%)?\s*$/i,z=/(^\s*(\d+)((px)|\%)?\s*$)|^$/i,r=/^\d+px$/, 5(function(){var v=function(d,l){function v(){var a=arguments,b=this.getContentElement("advanced","txtdlgGenStyle");b&&b.commit.apply(b,a);this.foreach(function(b){b.commit&&"txtdlgGenStyle"!=b.id&&b.commit.apply(b,a)})}function k(a){if(!w){w=1;var b=this.getDialog(),c=b.imageElement;if(c){this.commit(1,c);a=[].concat(a);for(var d=a.length,f,g=0;g<d;g++)(f=b.getContentElement.apply(b,a[g].split(":")))&&f.setup(1,c)}w=0}}var m=/^\s*(\d+)((px)|\%)?\s*$/i,z=/(^\s*(\d+)((px)|\%)?\s*$)|^$/i,r=/^\d+px$/,
@@ -8,35 +8,35 @@ b){if(!a.getContentElement("info","ratioLock"))return null;var c=a.originalEleme
8d.removeClass("cke_btn_unlocked"):d.addClass("cke_btn_unlocked");d.setAttribute("aria-checked",a.lockRatio);CKEDITOR.env.hc&&d.getChild(0).setHtml(a.lockRatio?CKEDITOR.env.ie?"■":"▣":CKEDITOR.env.ie?"□":"▢");return a.lockRatio},B=function(a,b){var c=a.originalElement;if("true"==c.getCustomData("isReady")){var d=a.getContentElement("info","txtWidth"),f=a.getContentElement("info","txtHeight"),g;b?c=g=0:(g=c.$.width,c=c.$.height);d&&d.setValue(g);f&&f.setValue(c)}e(a)},C=function(a,b){function c(a,b){var c= 8d.removeClass("cke_btn_unlocked"):d.addClass("cke_btn_unlocked");d.setAttribute("aria-checked",a.lockRatio);CKEDITOR.env.hc&&d.getChild(0).setHtml(a.lockRatio?CKEDITOR.env.ie?"■":"▣":CKEDITOR.env.ie?"□":"▢");return a.lockRatio},B=function(a,b){var c=a.originalElement;if("true"==c.getCustomData("isReady")){var d=a.getContentElement("info","txtWidth"),f=a.getContentElement("info","txtHeight"),g;b?c=g=0:(g=c.$.width,c=c.$.height);d&&d.setValue(g);f&&f.setValue(c)}e(a)},C=function(a,b){function c(a,b){var c=
9a.match(m);return c?("%"==c[2]&&(c[1]+="%",n(d,!1)),c[1]):b}if(1==a){var d=this.getDialog(),f="",g="txtWidth"==this.id?"width":"height",e=b.getAttribute(g);e&&(f=c(e,f));f=c(b.getStyle(g),f);this.setValue(f)}},x,u=function(){var a=this.originalElement,b=CKEDITOR.document.getById(p);a.setCustomData("isReady","true");a.removeListener("load",u);a.removeListener("error",h);a.removeListener("abort",h);b&&b.setStyle("display","none");this.dontResetSize||B(this,!1===d.config.image_prefillDimensions);this.firstLoad&& 9a.match(m);return c?("%"==c[2]&&(c[1]+="%",n(d,!1)),c[1]):b}if(1==a){var d=this.getDialog(),f="",g="txtWidth"==this.id?"width":"height",e=b.getAttribute(g);e&&(f=c(e,f));f=c(b.getStyle(g),f);this.setValue(f)}},x,u=function(){var a=this.originalElement,b=CKEDITOR.document.getById(p);a.setCustomData("isReady","true");a.removeListener("load",u);a.removeListener("error",h);a.removeListener("abort",h);b&&b.setStyle("display","none");this.dontResetSize||B(this,!1===d.config.image_prefillDimensions);this.firstLoad&&
10CKEDITOR.tools.setTimeout(function(){n(this,"check")},0,this);this.dontResetSize=this.firstLoad=!1;e(this)},h=function(){var a=this.originalElement,b=CKEDITOR.document.getById(p);a.removeListener("load",u);a.removeListener("error",h);a.removeListener("abort",h);a=CKEDITOR.getUrl(CKEDITOR.plugins.get("image").path+"images/noimage.png");this.preview&&this.preview.setAttribute("src",a);b&&b.setStyle("display","none");n(this,!1)},q=function(a){return CKEDITOR.tools.getNextId()+"_"+a},t=q("btnLockSizes"), 10CKEDITOR.tools.setTimeout(function(){n(this,"check")},0,this);this.dontResetSize=this.firstLoad=!1;e(this)},h=function(){var a=this.originalElement,b=CKEDITOR.document.getById(p);a.removeListener("load",u);a.removeListener("error",h);a.removeListener("abort",h);a=CKEDITOR.getUrl(CKEDITOR.plugins.get("image").path+"images/noimage.png");this.preview&&this.preview.setAttribute("src",a);b&&b.setStyle("display","none");n(this,!1)},q=function(a){return CKEDITOR.tools.getNextId()+"_"+a},t=q("btnLockSizes"),
11y=q("btnResetSize"),p=q("ImagePreviewLoader"),E=q("previewLink"),D=q("previewImage");return{title:d.lang.image["image"==l?"title":"titleButton"],minWidth:420,minHeight:360,onShow:function(){this.linkEditMode=this.imageEditMode=this.linkElement=this.imageElement=!1;this.lockRatio=!0;this.userlockRatio=0;this.dontResetSize=!1;this.firstLoad=!0;this.addLink=!1;var a=this.getParentEditor(),b=a.getSelection(),c=(b=b&&b.getSelectedElement())&&a.elementPath(b).contains("a",1),d=CKEDITOR.document.getById(p); 11y=q("btnResetSize"),p=q("ImagePreviewLoader"),E=q("previewLink"),D=q("previewImage");return{title:d.lang.image["image"==l?"title":"titleButton"],minWidth:"moono-lisa"==(CKEDITOR.skinName||d.config.skin)?500:420,minHeight:360,onShow:function(){this.linkEditMode=this.imageEditMode=this.linkElement=this.imageElement=!1;this.lockRatio=!0;this.userlockRatio=0;this.dontResetSize=!1;this.firstLoad=!0;this.addLink=!1;var a=this.getParentEditor(),b=a.getSelection(),c=(b=b&&b.getSelectedElement())&&a.elementPath(b).contains("a",
12d&&d.setStyle("display","none");x=new CKEDITOR.dom.element("img",a.document);this.preview=CKEDITOR.document.getById(D);this.originalElement=a.document.createElement("img");this.originalElement.setAttribute("alt","");this.originalElement.setCustomData("isReady","false");c&&(this.linkElement=c,this.addLink=this.linkEditMode=!0,a=c.getChildren(),1==a.count()&&(d=a.getItem(0),d.type==CKEDITOR.NODE_ELEMENT&&(d.is("img")||d.is("input"))&&(this.imageElement=a.getItem(0),this.imageElement.is("img")?this.imageEditMode= 121),d=CKEDITOR.document.getById(p);d&&d.setStyle("display","none");x=new CKEDITOR.dom.element("img",a.document);this.preview=CKEDITOR.document.getById(D);this.originalElement=a.document.createElement("img");this.originalElement.setAttribute("alt","");this.originalElement.setCustomData("isReady","false");c&&(this.linkElement=c,this.addLink=this.linkEditMode=!0,a=c.getChildren(),1==a.count()&&(d=a.getItem(0),d.type==CKEDITOR.NODE_ELEMENT&&(d.is("img")||d.is("input"))&&(this.imageElement=a.getItem(0),
13"img":this.imageElement.is("input")&&(this.imageEditMode="input"))),"image"==l&&this.setupContent(2,c));if(this.customImageElement)this.imageEditMode="img",this.imageElement=this.customImageElement,delete this.customImageElement;else if(b&&"img"==b.getName()&&!b.data("cke-realelement")||b&&"input"==b.getName()&&"image"==b.getAttribute("type"))this.imageEditMode=b.getName(),this.imageElement=b;this.imageEditMode&&(this.cleanImageElement=this.imageElement,this.imageElement=this.cleanImageElement.clone(!0, 13this.imageElement.is("img")?this.imageEditMode="img":this.imageElement.is("input")&&(this.imageEditMode="input"))),"image"==l&&this.setupContent(2,c));if(this.customImageElement)this.imageEditMode="img",this.imageElement=this.customImageElement,delete this.customImageElement;else if(b&&"img"==b.getName()&&!b.data("cke-realelement")||b&&"input"==b.getName()&&"image"==b.getAttribute("type"))this.imageEditMode=b.getName(),this.imageElement=b;this.imageEditMode&&(this.cleanImageElement=this.imageElement,
14!0),this.setupContent(1,this.imageElement));n(this,!0);CKEDITOR.tools.trim(this.getValueOf("info","txtUrl"))||(this.preview.removeAttribute("src"),this.preview.setStyle("display","none"))},onOk:function(){if(this.imageEditMode){var a=this.imageEditMode;"image"==l&&"input"==a&&confirm(d.lang.image.button2Img)?(this.imageElement=d.document.createElement("img"),this.imageElement.setAttribute("alt",""),d.insertElement(this.imageElement)):"image"!=l&&"img"==a&&confirm(d.lang.image.img2Button)?(this.imageElement= 14this.imageElement=this.cleanImageElement.clone(!0,!0),this.setupContent(1,this.imageElement));n(this,!0);CKEDITOR.tools.trim(this.getValueOf("info","txtUrl"))||(this.preview.removeAttribute("src"),this.preview.setStyle("display","none"))},onOk:function(){if(this.imageEditMode){var a=this.imageEditMode;"image"==l&&"input"==a&&confirm(d.lang.image.button2Img)?(this.imageElement=d.document.createElement("img"),this.imageElement.setAttribute("alt",""),d.insertElement(this.imageElement)):"image"!=l&&"img"==
15d.document.createElement("input"),this.imageElement.setAttributes({type:"image",alt:""}),d.insertElement(this.imageElement)):(this.imageElement=this.cleanImageElement,delete this.cleanImageElement)}else"image"==l?this.imageElement=d.document.createElement("img"):(this.imageElement=d.document.createElement("input"),this.imageElement.setAttribute("type","image")),this.imageElement.setAttribute("alt","");this.linkEditMode||(this.linkElement=d.document.createElement("a"));this.commitContent(1,this.imageElement); 15a&&confirm(d.lang.image.img2Button)?(this.imageElement=d.document.createElement("input"),this.imageElement.setAttributes({type:"image",alt:""}),d.insertElement(this.imageElement)):(this.imageElement=this.cleanImageElement,delete this.cleanImageElement)}else"image"==l?this.imageElement=d.document.createElement("img"):(this.imageElement=d.document.createElement("input"),this.imageElement.setAttribute("type","image")),this.imageElement.setAttribute("alt","");this.linkEditMode||(this.linkElement=d.document.createElement("a"));
16this.commitContent(2,this.linkElement);this.imageElement.getAttribute("style")||this.imageElement.removeAttribute("style");this.imageEditMode?!this.linkEditMode&&this.addLink?(d.insertElement(this.linkElement),this.imageElement.appendTo(this.linkElement)):this.linkEditMode&&!this.addLink&&(d.getSelection().selectElement(this.linkElement),d.insertElement(this.imageElement)):this.addLink?this.linkEditMode?this.linkElement.equals(d.getSelection().getSelectedElement())?(this.linkElement.setHtml(""),this.linkElement.append(this.imageElement, 16this.commitContent(1,this.imageElement);this.commitContent(2,this.linkElement);this.imageElement.getAttribute("style")||this.imageElement.removeAttribute("style");this.imageEditMode?!this.linkEditMode&&this.addLink?(d.insertElement(this.linkElement),this.imageElement.appendTo(this.linkElement)):this.linkEditMode&&!this.addLink&&(d.getSelection().selectElement(this.linkElement),d.insertElement(this.imageElement)):this.addLink?this.linkEditMode?this.linkElement.equals(d.getSelection().getSelectedElement())?
17!1)):d.insertElement(this.imageElement):(d.insertElement(this.linkElement),this.linkElement.append(this.imageElement,!1)):d.insertElement(this.imageElement)},onLoad:function(){"image"!=l&&this.hidePage("Link");var a=this._.element.getDocument();this.getContentElement("info","ratioLock")&&(this.addFocusable(a.getById(y),5),this.addFocusable(a.getById(t),5));this.commitContent=v},onHide:function(){this.preview&&this.commitContent(8,this.preview);this.originalElement&&(this.originalElement.removeListener("load", 17(this.linkElement.setHtml(""),this.linkElement.append(this.imageElement,!1)):d.insertElement(this.imageElement):(d.insertElement(this.linkElement),this.linkElement.append(this.imageElement,!1)):d.insertElement(this.imageElement)},onLoad:function(){"image"!=l&&this.hidePage("Link");var a=this._.element.getDocument();this.getContentElement("info","ratioLock")&&(this.addFocusable(a.getById(y),5),this.addFocusable(a.getById(t),5));this.commitContent=v},onHide:function(){this.preview&&this.commitContent(8,
18u),this.originalElement.removeListener("error",h),this.originalElement.removeListener("abort",h),this.originalElement.remove(),this.originalElement=!1);delete this.imageElement},contents:[{id:"info",label:d.lang.image.infoTab,accessKey:"I",elements:[{type:"vbox",padding:0,children:[{type:"hbox",widths:["280px","110px"],align:"right",children:[{id:"txtUrl",type:"text",label:d.lang.common.url,required:!0,onChange:function(){var a=this.getDialog(),b=this.getValue();if(0<b.length){var a=this.getDialog(), 18this.preview);this.originalElement&&(this.originalElement.removeListener("load",u),this.originalElement.removeListener("error",h),this.originalElement.removeListener("abort",h),this.originalElement.remove(),this.originalElement=!1);delete this.imageElement},contents:[{id:"info",label:d.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:d.lang.common.url,
19c=a.originalElement;a.preview&&a.preview.removeStyle("display");c.setCustomData("isReady","false");var d=CKEDITOR.document.getById(p);d&&d.setStyle("display","");c.on("load",u,a);c.on("error",h,a);c.on("abort",h,a);c.setAttribute("src",b);a.preview&&(x.setAttribute("src",b),a.preview.setAttribute("src",x.$.src),e(a))}else a.preview&&(a.preview.removeAttribute("src"),a.preview.setStyle("display","none"))},setup:function(a,b){if(1==a){var c=b.data("cke-saved-src")||b.getAttribute("src");this.getDialog().dontResetSize= 19required:!0,onChange:function(){var a=this.getDialog(),b=this.getValue();if(0<b.length){var a=this.getDialog(),c=a.originalElement;a.preview&&a.preview.removeStyle("display");c.setCustomData("isReady","false");var d=CKEDITOR.document.getById(p);d&&d.setStyle("display","");c.on("load",u,a);c.on("error",h,a);c.on("abort",h,a);c.setAttribute("src",b);a.preview&&(x.setAttribute("src",b),a.preview.setAttribute("src",x.$.src),e(a))}else a.preview&&(a.preview.removeAttribute("src"),a.preview.setStyle("display",
20!0;this.setValue(c);this.setInitValue()}},commit:function(a,b){1==a&&(this.getValue()||this.isChanged())?(b.data("cke-saved-src",this.getValue()),b.setAttribute("src",this.getValue())):8==a&&(b.setAttribute("src",""),b.removeAttribute("src"))},validate:CKEDITOR.dialog.validate.notEmpty(d.lang.image.urlMissing)},{type:"button",id:"browse",style:"display:inline-block;margin-top:14px;",align:"center",label:d.lang.common.browseServer,hidden:!0,filebrowser:"info:txtUrl"}]}]},{id:"txtAlt",type:"text",label:d.lang.image.alt, 20"none"))},setup:function(a,b){if(1==a){var c=b.data("cke-saved-src")||b.getAttribute("src");this.getDialog().dontResetSize=!0;this.setValue(c);this.setInitValue()}},commit:function(a,b){1==a&&(this.getValue()||this.isChanged())?(b.data("cke-saved-src",this.getValue()),b.setAttribute("src",this.getValue())):8==a&&(b.setAttribute("src",""),b.removeAttribute("src"))},validate:CKEDITOR.dialog.validate.notEmpty(d.lang.image.urlMissing)},{type:"button",id:"browse",style:"display:inline-block;margin-top:14px;",
21accessKey:"T","default":"",onChange:function(){e(this.getDialog())},setup:function(a,b){1==a&&this.setValue(b.getAttribute("alt"))},commit:function(a,b){1==a?(this.getValue()||this.isChanged())&&b.setAttribute("alt",this.getValue()):4==a?b.setAttribute("alt",this.getValue()):8==a&&b.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", 21align:"center",label:d.lang.common.browseServer,hidden:!0,filebrowser:"info:txtUrl"}]}]},{id:"txtAlt",type:"text",label:d.lang.image.alt,accessKey:"T","default":"",onChange:function(){e(this.getDialog())},setup:function(a,b){1==a&&this.setValue(b.getAttribute("alt"))},commit:function(a,b){1==a?(this.getValue()||this.isChanged())&&b.setAttribute("alt",this.getValue()):4==a?b.setAttribute("alt",this.getValue()):8==a&&b.removeAttribute("alt")}},{type:"hbox",children:[{id:"basic",type:"vbox",children:[{type:"hbox",
22id:"txtWidth",label:d.lang.common.width,onKeyUp:A,onChange:function(){k.call(this,"advanced:txtdlgGenStyle")},validate:function(){var a=this.getValue().match(z);(a=!(!a||0===parseInt(a[1],10)))||alert(d.lang.common.invalidWidth);return a},setup:C,commit:function(a,b){var c=this.getValue();1==a?(c&&d.activeFilter.check("img{width,height}")?b.setStyle("width",CKEDITOR.tools.cssLength(c)):b.removeStyle("width"),b.removeAttribute("width")):4==a?c.match(m)?b.setStyle("width",CKEDITOR.tools.cssLength(c)): 22requiredContent:"img{width,height}",widths:["50%","50%"],children:[{type:"vbox",padding:1,children:[{type:"text",width:"45px",id:"txtWidth",label:d.lang.common.width,onKeyUp:A,onChange:function(){k.call(this,"advanced:txtdlgGenStyle")},validate:function(){var a=this.getValue().match(z);(a=!(!a||0===parseInt(a[1],10)))||alert(d.lang.common.invalidWidth);return a},setup:C,commit:function(a,b){var c=this.getValue();1==a?(c&&d.activeFilter.check("img{width,height}")?b.setStyle("width",CKEDITOR.tools.cssLength(c)):
23(c=this.getDialog().originalElement,"true"==c.getCustomData("isReady")&&b.setStyle("width",c.$.width+"px")):8==a&&(b.removeAttribute("width"),b.removeStyle("width"))}},{type:"text",id:"txtHeight",width:"45px",label:d.lang.common.height,onKeyUp:A,onChange:function(){k.call(this,"advanced:txtdlgGenStyle")},validate:function(){var a=this.getValue().match(z);(a=!(!a||0===parseInt(a[1],10)))||alert(d.lang.common.invalidHeight);return a},setup:C,commit:function(a,b){var c=this.getValue();1==a?(c&&d.activeFilter.check("img{width,height}")? 23b.removeStyle("width"),b.removeAttribute("width")):4==a?c.match(m)?b.setStyle("width",CKEDITOR.tools.cssLength(c)):(c=this.getDialog().originalElement,"true"==c.getCustomData("isReady")&&b.setStyle("width",c.$.width+"px")):8==a&&(b.removeAttribute("width"),b.removeStyle("width"))}},{type:"text",id:"txtHeight",width:"45px",label:d.lang.common.height,onKeyUp:A,onChange:function(){k.call(this,"advanced:txtdlgGenStyle")},validate:function(){var a=this.getValue().match(z);(a=!(!a||0===parseInt(a[1],10)))||
24b.setStyle("height",CKEDITOR.tools.cssLength(c)):b.removeStyle("height"),b.removeAttribute("height")):4==a?c.match(m)?b.setStyle("height",CKEDITOR.tools.cssLength(c)):(c=this.getDialog().originalElement,"true"==c.getCustomData("isReady")&&b.setStyle("height",c.$.height+"px")):8==a&&(b.removeAttribute("height"),b.removeStyle("height"))}}]},{id:"ratioLock",type:"html",style:"margin-top:30px;width:40px;height:40px;",onLoad:function(){var a=CKEDITOR.document.getById(y),b=CKEDITOR.document.getById(t); 24alert(d.lang.common.invalidHeight);return a},setup:C,commit:function(a,b){var c=this.getValue();1==a?(c&&d.activeFilter.check("img{width,height}")?b.setStyle("height",CKEDITOR.tools.cssLength(c)):b.removeStyle("height"),b.removeAttribute("height")):4==a?c.match(m)?b.setStyle("height",CKEDITOR.tools.cssLength(c)):(c=this.getDialog().originalElement,"true"==c.getCustomData("isReady")&&b.setStyle("height",c.$.height+"px")):8==a&&(b.removeAttribute("height"),b.removeStyle("height"))}}]},{id:"ratioLock",
25a&&(a.on("click",function(a){B(this);a.data&&a.data.preventDefault()},this.getDialog()),a.on("mouseover",function(){this.addClass("cke_btn_over")},a),a.on("mouseout",function(){this.removeClass("cke_btn_over")},a));b&&(b.on("click",function(a){n(this);var b=this.originalElement,d=this.getValueOf("info","txtWidth");"true"==b.getCustomData("isReady")&&d&&(b=b.$.height/b.$.width*d,isNaN(b)||(this.setValueOf("info","txtHeight",Math.round(b)),e(this)));a.data&&a.data.preventDefault()},this.getDialog()), 25type:"html",className:"cke_dialog_image_ratiolock",style:"margin-top:30px;width:40px;height:40px;",onLoad:function(){var a=CKEDITOR.document.getById(y),b=CKEDITOR.document.getById(t);a&&(a.on("click",function(a){B(this);a.data&&a.data.preventDefault()},this.getDialog()),a.on("mouseover",function(){this.addClass("cke_btn_over")},a),a.on("mouseout",function(){this.removeClass("cke_btn_over")},a));b&&(b.on("click",function(a){n(this);var b=this.originalElement,d=this.getValueOf("info","txtWidth");"true"==
26b.on("mouseover",function(){this.addClass("cke_btn_over")},b),b.on("mouseout",function(){this.removeClass("cke_btn_over")},b))},html:'\x3cdiv\x3e\x3ca href\x3d"javascript:void(0)" tabindex\x3d"-1" title\x3d"'+d.lang.image.lockRatio+'" class\x3d"cke_btn_locked" id\x3d"'+t+'" role\x3d"checkbox"\x3e\x3cspan class\x3d"cke_icon"\x3e\x3c/span\x3e\x3cspan class\x3d"cke_label"\x3e'+d.lang.image.lockRatio+'\x3c/span\x3e\x3c/a\x3e\x3ca href\x3d"javascript:void(0)" tabindex\x3d"-1" title\x3d"'+d.lang.image.resetSize+ 26b.getCustomData("isReady")&&d&&(b=b.$.height/b.$.width*d,isNaN(b)||(this.setValueOf("info","txtHeight",Math.round(b)),e(this)));a.data&&a.data.preventDefault()},this.getDialog()),b.on("mouseover",function(){this.addClass("cke_btn_over")},b),b.on("mouseout",function(){this.removeClass("cke_btn_over")},b))},html:'\x3cdiv\x3e\x3ca href\x3d"javascript:void(0)" tabindex\x3d"-1" title\x3d"'+d.lang.image.lockRatio+'" class\x3d"cke_btn_locked" id\x3d"'+t+'" role\x3d"checkbox"\x3e\x3cspan class\x3d"cke_icon"\x3e\x3c/span\x3e\x3cspan class\x3d"cke_label"\x3e'+
27'" class\x3d"cke_btn_reset" id\x3d"'+y+'" role\x3d"button"\x3e\x3cspan class\x3d"cke_label"\x3e'+d.lang.image.resetSize+"\x3c/span\x3e\x3c/a\x3e\x3c/div\x3e"}]},{type:"vbox",padding:1,children:[{type:"text",id:"txtBorder",requiredContent:"img{border-width}",width:"60px",label:d.lang.image.border,"default":"",onKeyUp:function(){e(this.getDialog())},onChange:function(){k.call(this,"advanced:txtdlgGenStyle")},validate:CKEDITOR.dialog.validate.integer(d.lang.image.validateBorder),setup:function(a,b){if(1== 27d.lang.image.lockRatio+'\x3c/span\x3e\x3c/a\x3e\x3ca href\x3d"javascript:void(0)" tabindex\x3d"-1" title\x3d"'+d.lang.image.resetSize+'" class\x3d"cke_btn_reset" id\x3d"'+y+'" role\x3d"button"\x3e\x3cspan class\x3d"cke_label"\x3e'+d.lang.image.resetSize+"\x3c/span\x3e\x3c/a\x3e\x3c/div\x3e"}]},{type:"vbox",padding:1,children:[{type:"text",id:"txtBorder",requiredContent:"img{border-width}",width:"60px",label:d.lang.image.border,"default":"",onKeyUp:function(){e(this.getDialog())},onChange:function(){k.call(this,
28a){var c;c=(c=(c=b.getStyle("border-width"))&&c.match(/^(\d+px)(?: \1 \1 \1)?$/))&&parseInt(c[1],10);isNaN(parseInt(c,10))&&(c=b.getAttribute("border"));this.setValue(c)}},commit:function(a,b){var c=parseInt(this.getValue(),10);1==a||4==a?(isNaN(c)?!c&&this.isChanged()&&b.removeStyle("border"):(b.setStyle("border-width",CKEDITOR.tools.cssLength(c)),b.setStyle("border-style","solid")),1==a&&b.removeAttribute("border")):8==a&&(b.removeAttribute("border"),b.removeStyle("border-width"),b.removeStyle("border-style"), 28"advanced:txtdlgGenStyle")},validate:CKEDITOR.dialog.validate.integer(d.lang.image.validateBorder),setup:function(a,b){if(1==a){var c;c=(c=(c=b.getStyle("border-width"))&&c.match(/^(\d+px)(?: \1 \1 \1)?$/))&&parseInt(c[1],10);isNaN(parseInt(c,10))&&(c=b.getAttribute("border"));this.setValue(c)}},commit:function(a,b){var c=parseInt(this.getValue(),10);1==a||4==a?(isNaN(c)?!c&&this.isChanged()&&b.removeStyle("border"):(b.setStyle("border-width",CKEDITOR.tools.cssLength(c)),b.setStyle("border-style",
29b.removeStyle("border-color"))}},{type:"text",id:"txtHSpace",requiredContent:"img{margin-left,margin-right}",width:"60px",label:d.lang.image.hSpace,"default":"",onKeyUp:function(){e(this.getDialog())},onChange:function(){k.call(this,"advanced:txtdlgGenStyle")},validate:CKEDITOR.dialog.validate.integer(d.lang.image.validateHSpace),setup:function(a,b){if(1==a){var c,d;c=b.getStyle("margin-left");d=b.getStyle("margin-right");c=c&&c.match(r);d=d&&d.match(r);c=parseInt(c,10);d=parseInt(d,10);c=c==d&&c; 29"solid")),1==a&&b.removeAttribute("border")):8==a&&(b.removeAttribute("border"),b.removeStyle("border-width"),b.removeStyle("border-style"),b.removeStyle("border-color"))}},{type:"text",id:"txtHSpace",requiredContent:"img{margin-left,margin-right}",width:"60px",label:d.lang.image.hSpace,"default":"",onKeyUp:function(){e(this.getDialog())},onChange:function(){k.call(this,"advanced:txtdlgGenStyle")},validate:CKEDITOR.dialog.validate.integer(d.lang.image.validateHSpace),setup:function(a,b){if(1==a){var c,
30isNaN(parseInt(c,10))&&(c=b.getAttribute("hspace"));this.setValue(c)}},commit:function(a,b){var c=parseInt(this.getValue(),10);1==a||4==a?(isNaN(c)?!c&&this.isChanged()&&(b.removeStyle("margin-left"),b.removeStyle("margin-right")):(b.setStyle("margin-left",CKEDITOR.tools.cssLength(c)),b.setStyle("margin-right",CKEDITOR.tools.cssLength(c))),1==a&&b.removeAttribute("hspace")):8==a&&(b.removeAttribute("hspace"),b.removeStyle("margin-left"),b.removeStyle("margin-right"))}},{type:"text",id:"txtVSpace", 30d;c=b.getStyle("margin-left");d=b.getStyle("margin-right");c=c&&c.match(r);d=d&&d.match(r);c=parseInt(c,10);d=parseInt(d,10);c=c==d&&c;isNaN(parseInt(c,10))&&(c=b.getAttribute("hspace"));this.setValue(c)}},commit:function(a,b){var c=parseInt(this.getValue(),10);1==a||4==a?(isNaN(c)?!c&&this.isChanged()&&(b.removeStyle("margin-left"),b.removeStyle("margin-right")):(b.setStyle("margin-left",CKEDITOR.tools.cssLength(c)),b.setStyle("margin-right",CKEDITOR.tools.cssLength(c))),1==a&&b.removeAttribute("hspace")):
31requiredContent:"img{margin-top,margin-bottom}",width:"60px",label:d.lang.image.vSpace,"default":"",onKeyUp:function(){e(this.getDialog())},onChange:function(){k.call(this,"advanced:txtdlgGenStyle")},validate:CKEDITOR.dialog.validate.integer(d.lang.image.validateVSpace),setup:function(a,b){if(1==a){var c,d;c=b.getStyle("margin-top");d=b.getStyle("margin-bottom");c=c&&c.match(r);d=d&&d.match(r);c=parseInt(c,10);d=parseInt(d,10);c=c==d&&c;isNaN(parseInt(c,10))&&(c=b.getAttribute("vspace"));this.setValue(c)}}, 318==a&&(b.removeAttribute("hspace"),b.removeStyle("margin-left"),b.removeStyle("margin-right"))}},{type:"text",id:"txtVSpace",requiredContent:"img{margin-top,margin-bottom}",width:"60px",label:d.lang.image.vSpace,"default":"",onKeyUp:function(){e(this.getDialog())},onChange:function(){k.call(this,"advanced:txtdlgGenStyle")},validate:CKEDITOR.dialog.validate.integer(d.lang.image.validateVSpace),setup:function(a,b){if(1==a){var c,d;c=b.getStyle("margin-top");d=b.getStyle("margin-bottom");c=c&&c.match(r);
32commit:function(a,b){var c=parseInt(this.getValue(),10);1==a||4==a?(isNaN(c)?!c&&this.isChanged()&&(b.removeStyle("margin-top"),b.removeStyle("margin-bottom")):(b.setStyle("margin-top",CKEDITOR.tools.cssLength(c)),b.setStyle("margin-bottom",CKEDITOR.tools.cssLength(c))),1==a&&b.removeAttribute("vspace")):8==a&&(b.removeAttribute("vspace"),b.removeStyle("margin-top"),b.removeStyle("margin-bottom"))}},{id:"cmbAlign",requiredContent:"img{float}",type:"select",widths:["35%","65%"],style:"width:90px", 32d=d&&d.match(r);c=parseInt(c,10);d=parseInt(d,10);c=c==d&&c;isNaN(parseInt(c,10))&&(c=b.getAttribute("vspace"));this.setValue(c)}},commit:function(a,b){var c=parseInt(this.getValue(),10);1==a||4==a?(isNaN(c)?!c&&this.isChanged()&&(b.removeStyle("margin-top"),b.removeStyle("margin-bottom")):(b.setStyle("margin-top",CKEDITOR.tools.cssLength(c)),b.setStyle("margin-bottom",CKEDITOR.tools.cssLength(c))),1==a&&b.removeAttribute("vspace")):8==a&&(b.removeAttribute("vspace"),b.removeStyle("margin-top"),b.removeStyle("margin-bottom"))}},
33label:d.lang.common.align,"default":"",items:[[d.lang.common.notSet,""],[d.lang.common.alignLeft,"left"],[d.lang.common.alignRight,"right"]],onChange:function(){e(this.getDialog());k.call(this,"advanced:txtdlgGenStyle")},setup:function(a,b){if(1==a){var c=b.getStyle("float");switch(c){case "inherit":case "none":c=""}!c&&(c=(b.getAttribute("align")||"").toLowerCase());this.setValue(c)}},commit:function(a,b){var c=this.getValue();if(1==a||4==a){if(c?b.setStyle("float",c):b.removeStyle("float"),1==a)switch(c= 33{id:"cmbAlign",requiredContent:"img{float}",type:"select",widths:["35%","65%"],style:"width:90px",label:d.lang.common.align,"default":"",items:[[d.lang.common.notSet,""],[d.lang.common.alignLeft,"left"],[d.lang.common.alignRight,"right"]],onChange:function(){e(this.getDialog());k.call(this,"advanced:txtdlgGenStyle")},setup:function(a,b){if(1==a){var c=b.getStyle("float");switch(c){case "inherit":case "none":c=""}!c&&(c=(b.getAttribute("align")||"").toLowerCase());this.setValue(c)}},commit:function(a,
34(b.getAttribute("align")||"").toLowerCase(),c){case "left":case "right":b.removeAttribute("align")}}else 8==a&&b.removeStyle("float")}}]}]},{type:"vbox",height:"250px",children:[{type:"html",id:"htmlPreview",style:"width:95%;",html:"\x3cdiv\x3e"+CKEDITOR.tools.htmlEncode(d.lang.common.preview)+'\x3cbr\x3e\x3cdiv id\x3d"'+p+'" class\x3d"ImagePreviewLoader" style\x3d"display:none"\x3e\x3cdiv class\x3d"loading"\x3e\x26nbsp;\x3c/div\x3e\x3c/div\x3e\x3cdiv class\x3d"ImagePreviewBox"\x3e\x3ctable\x3e\x3ctr\x3e\x3ctd\x3e\x3ca href\x3d"javascript:void(0)" target\x3d"_blank" onclick\x3d"return false;" id\x3d"'+ 34b){var c=this.getValue();if(1==a||4==a){if(c?b.setStyle("float",c):b.removeStyle("float"),1==a)switch(c=(b.getAttribute("align")||"").toLowerCase(),c){case "left":case "right":b.removeAttribute("align")}}else 8==a&&b.removeStyle("float")}}]}]},{type:"vbox",height:"250px",children:[{type:"html",id:"htmlPreview",style:"width:95%;",html:"\x3cdiv\x3e"+CKEDITOR.tools.htmlEncode(d.lang.common.preview)+'\x3cbr\x3e\x3cdiv id\x3d"'+p+'" class\x3d"ImagePreviewLoader" style\x3d"display:none"\x3e\x3cdiv class\x3d"loading"\x3e\x26nbsp;\x3c/div\x3e\x3c/div\x3e\x3cdiv class\x3d"ImagePreviewBox"\x3e\x3ctable\x3e\x3ctr\x3e\x3ctd\x3e\x3ca href\x3d"javascript:void(0)" target\x3d"_blank" onclick\x3d"return false;" id\x3d"'+
35E+'"\x3e\x3cimg id\x3d"'+D+'" alt\x3d"" /\x3e\x3c/a\x3e'+(d.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.")+ 35E+'"\x3e\x3cimg id\x3d"'+D+'" alt\x3d"" /\x3e\x3c/a\x3e'+(d.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.")+
36"\x3c/td\x3e\x3c/tr\x3e\x3c/table\x3e\x3c/div\x3e\x3c/div\x3e"}]}]}]},{id:"Link",requiredContent:"a[href]",label:d.lang.image.linkTab,padding:0,elements:[{id:"txtUrl",type:"text",label:d.lang.common.url,style:"width: 100%","default":"",setup:function(a,b){if(2==a){var c=b.data("cke-saved-href");c||(c=b.getAttribute("href"));this.setValue(c)}},commit:function(a,b){if(2==a&&(this.getValue()||this.isChanged())){var c=this.getValue();b.data("cke-saved-href",c);b.setAttribute("href",c);this.getValue()|| 36"\x3c/td\x3e\x3c/tr\x3e\x3c/table\x3e\x3c/div\x3e\x3c/div\x3e"}]}]}]},{id:"Link",requiredContent:"a[href]",label:d.lang.image.linkTab,padding:0,elements:[{id:"txtUrl",type:"text",label:d.lang.common.url,style:"width: 100%","default":"",setup:function(a,b){if(2==a){var c=b.data("cke-saved-href");c||(c=b.getAttribute("href"));this.setValue(c)}},commit:function(a,b){if(2==a&&(this.getValue()||this.isChanged())){var c=this.getValue();b.data("cke-saved-href",c);b.setAttribute("href",c);this.getValue()||
37!d.config.image_removeLinkByEmptyURL?this.getDialog().addLink=!0:this.getDialog().addLink=!1}}},{type:"button",id:"browse",filebrowser:{action:"Browse",target:"Link:txtUrl",url:d.config.filebrowserImageBrowseLinkUrl},style:"float:right",hidden:!0,label:d.lang.common.browseServer},{id:"cmbTarget",type:"select",requiredContent:"a[target]",label:d.lang.common.target,"default":"",items:[[d.lang.common.notSet,""],[d.lang.common.targetNew,"_blank"],[d.lang.common.targetTop,"_top"],[d.lang.common.targetSelf, 37!d.config.image_removeLinkByEmptyURL?this.getDialog().addLink=!0:this.getDialog().addLink=!1}}},{type:"button",id:"browse",className:"cke_dialog_image_browse",filebrowser:{action:"Browse",target:"Link:txtUrl",url:d.config.filebrowserImageBrowseLinkUrl},style:"float:right",hidden:!0,label:d.lang.common.browseServer},{id:"cmbTarget",type:"select",requiredContent:"a[target]",label:d.lang.common.target,"default":"",items:[[d.lang.common.notSet,""],[d.lang.common.targetNew,"_blank"],[d.lang.common.targetTop,
38"_self"],[d.lang.common.targetParent,"_parent"]],setup:function(a,b){2==a&&this.setValue(b.getAttribute("target")||"")},commit:function(a,b){2==a&&(this.getValue()||this.isChanged())&&b.setAttribute("target",this.getValue())}}]},{id:"Upload",hidden:!0,filebrowser:"uploadButton",label:d.lang.image.upload,elements:[{type:"file",id:"upload",label:d.lang.image.btnUpload,style:"height:40px",size:38},{type:"fileButton",id:"uploadButton",filebrowser:"info:txtUrl",label:d.lang.image.btnUpload,"for":["Upload", 38"_top"],[d.lang.common.targetSelf,"_self"],[d.lang.common.targetParent,"_parent"]],setup:function(a,b){2==a&&this.setValue(b.getAttribute("target")||"")},commit:function(a,b){2==a&&(this.getValue()||this.isChanged())&&b.setAttribute("target",this.getValue())}}]},{id:"Upload",hidden:!0,filebrowser:"uploadButton",label:d.lang.image.upload,elements:[{type:"file",id:"upload",label:d.lang.image.btnUpload,style:"height:40px",size:38},{type:"fileButton",id:"uploadButton",filebrowser:"info:txtUrl",label:d.lang.image.btnUpload,
39"upload"]}]},{id:"advanced",label:d.lang.common.advancedTab,elements:[{type:"hbox",widths:["50%","25%","25%"],children:[{type:"text",id:"linkId",requiredContent:"img[id]",label:d.lang.common.id,setup:function(a,b){1==a&&this.setValue(b.getAttribute("id"))},commit:function(a,b){1==a&&(this.getValue()||this.isChanged())&&b.setAttribute("id",this.getValue())}},{id:"cmbLangDir",type:"select",requiredContent:"img[dir]",style:"width : 100px;",label:d.lang.common.langDir,"default":"",items:[[d.lang.common.notSet, 39"for":["Upload","upload"]}]},{id:"advanced",label:d.lang.common.advancedTab,elements:[{type:"hbox",widths:["50%","25%","25%"],children:[{type:"text",id:"linkId",requiredContent:"img[id]",label:d.lang.common.id,setup:function(a,b){1==a&&this.setValue(b.getAttribute("id"))},commit:function(a,b){1==a&&(this.getValue()||this.isChanged())&&b.setAttribute("id",this.getValue())}},{id:"cmbLangDir",type:"select",requiredContent:"img[dir]",style:"width : 100px;",label:d.lang.common.langDir,"default":"",items:[[d.lang.common.notSet,
40""],[d.lang.common.langDirLtr,"ltr"],[d.lang.common.langDirRtl,"rtl"]],setup:function(a,b){1==a&&this.setValue(b.getAttribute("dir"))},commit:function(a,b){1==a&&(this.getValue()||this.isChanged())&&b.setAttribute("dir",this.getValue())}},{type:"text",id:"txtLangCode",requiredContent:"img[lang]",label:d.lang.common.langCode,"default":"",setup:function(a,b){1==a&&this.setValue(b.getAttribute("lang"))},commit:function(a,b){1==a&&(this.getValue()||this.isChanged())&&b.setAttribute("lang",this.getValue())}}]}, 40""],[d.lang.common.langDirLtr,"ltr"],[d.lang.common.langDirRtl,"rtl"]],setup:function(a,b){1==a&&this.setValue(b.getAttribute("dir"))},commit:function(a,b){1==a&&(this.getValue()||this.isChanged())&&b.setAttribute("dir",this.getValue())}},{type:"text",id:"txtLangCode",requiredContent:"img[lang]",label:d.lang.common.langCode,"default":"",setup:function(a,b){1==a&&this.setValue(b.getAttribute("lang"))},commit:function(a,b){1==a&&(this.getValue()||this.isChanged())&&b.setAttribute("lang",this.getValue())}}]},
41{type:"text",id:"txtGenLongDescr",requiredContent:"img[longdesc]",label:d.lang.common.longDescr,setup:function(a,b){1==a&&this.setValue(b.getAttribute("longDesc"))},commit:function(a,b){1==a&&(this.getValue()||this.isChanged())&&b.setAttribute("longDesc",this.getValue())}},{type:"hbox",widths:["50%","50%"],children:[{type:"text",id:"txtGenClass",requiredContent:"img(cke-xyz)",label:d.lang.common.cssClass,"default":"",setup:function(a,b){1==a&&this.setValue(b.getAttribute("class"))},commit:function(a, 41{type:"text",id:"txtGenLongDescr",requiredContent:"img[longdesc]",label:d.lang.common.longDescr,setup:function(a,b){1==a&&this.setValue(b.getAttribute("longDesc"))},commit:function(a,b){1==a&&(this.getValue()||this.isChanged())&&b.setAttribute("longDesc",this.getValue())}},{type:"hbox",widths:["50%","50%"],children:[{type:"text",id:"txtGenClass",requiredContent:"img(cke-xyz)",label:d.lang.common.cssClass,"default":"",setup:function(a,b){1==a&&this.setValue(b.getAttribute("class"))},commit:function(a,
42b){1==a&&(this.getValue()||this.isChanged())&&b.setAttribute("class",this.getValue())}},{type:"text",id:"txtGenTitle",requiredContent:"img[title]",label:d.lang.common.advisoryTitle,"default":"",onChange:function(){e(this.getDialog())},setup:function(a,b){1==a&&this.setValue(b.getAttribute("title"))},commit:function(a,b){1==a?(this.getValue()||this.isChanged())&&b.setAttribute("title",this.getValue()):4==a?b.setAttribute("title",this.getValue()):8==a&&b.removeAttribute("title")}}]},{type:"text",id:"txtdlgGenStyle", 42b){1==a&&(this.getValue()||this.isChanged())&&b.setAttribute("class",this.getValue())}},{type:"text",id:"txtGenTitle",requiredContent:"img[title]",label:d.lang.common.advisoryTitle,"default":"",onChange:function(){e(this.getDialog())},setup:function(a,b){1==a&&this.setValue(b.getAttribute("title"))},commit:function(a,b){1==a?(this.getValue()||this.isChanged())&&b.setAttribute("title",this.getValue()):4==a?b.setAttribute("title",this.getValue()):8==a&&b.removeAttribute("title")}}]},{type:"text",id:"txtdlgGenStyle",
diff --git a/release/plugins/link/dialogs/anchor.js b/release/plugins/link/dialogs/anchor.js
index 63372eb..50677e1 100644
--- a/release/plugins/link/dialogs/anchor.js
+++ b/release/plugins/link/dialogs/anchor.js
@@ -1,7 +1,8 @@
1/* 1/*
2 Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 For licensing, see LICENSE.md or http://ckeditor.com/license 3 For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.dialog.add("anchor",function(c){function d(a,b){return a.createFakeElement(a.document.createElement("a",{attributes:b}),"cke_anchor","anchor")}return{title:c.lang.link.anchor.title,minWidth:300,minHeight:60,onOk:function(){var a=CKEDITOR.tools.trim(this.getValueOf("info","txtName")),a={id:a,name:a,"data-cke-saved-name":a};if(this._.selectedElement)this._.selectedElement.data("cke-realelement")?(a=d(c,a),a.replace(this._.selectedElement),CKEDITOR.env.ie&&c.getSelection().selectElement(a)): 5CKEDITOR.dialog.add("anchor",function(c){function e(b,a){return b.createFakeElement(b.document.createElement("a",{attributes:a}),"cke_anchor","anchor")}return{title:c.lang.link.anchor.title,minWidth:300,minHeight:60,onOk:function(){var b=CKEDITOR.tools.trim(this.getValueOf("info","txtName")),a={id:b,name:b,"data-cke-saved-name":b};this._.selectedElement?this._.selectedElement.data("cke-realelement")?(b=e(c,a),b.replace(this._.selectedElement),CKEDITOR.env.ie&&c.getSelection().selectElement(b)):this._.selectedElement.setAttributes(a):
6this._.selectedElement.setAttributes(a);else{var b=c.getSelection(),b=b&&b.getRanges()[0];b.collapsed?(a=d(c,a),b.insertNode(a)):(CKEDITOR.env.ie&&9>CKEDITOR.env.version&&(a["class"]="cke_anchor"),a=new CKEDITOR.style({element:"a",attributes:a}),a.type=CKEDITOR.STYLE_INLINE,c.applyStyle(a))}},onHide:function(){delete this._.selectedElement},onShow:function(){var a=c.getSelection(),b=a.getSelectedElement(),d=b&&b.data("cke-realelement"),e=d?CKEDITOR.plugins.link.tryRestoreFakeAnchor(c,b):CKEDITOR.plugins.link.getSelectedLink(c); 6(b=(b=c.getSelection())&&b.getRanges()[0],b.collapsed?(a=e(c,a),b.insertNode(a)):(CKEDITOR.env.ie&&9>CKEDITOR.env.version&&(a["class"]="cke_anchor"),a=new CKEDITOR.style({element:"a",attributes:a}),a.type=CKEDITOR.STYLE_INLINE,a.applyToRange(b)))},onHide:function(){delete this._.selectedElement},onShow:function(){var b=c.getSelection(),a;a=b.getRanges()[0];var d=b.getSelectedElement();a.shrink(CKEDITOR.SHRINK_ELEMENT);a=(d=a.getEnclosedNode())&&d.type===CKEDITOR.NODE_ELEMENT&&("anchor"===d.data("cke-real-element-type")||
7if(e){this._.selectedElement=e;var f=e.data("cke-saved-name");this.setValueOf("info","txtName",f||"");!d&&a.selectElement(e);b&&(this._.selectedElement=b)}this.getContentElement("info","txtName").focus()},contents:[{id:"info",label:c.lang.link.anchor.title,accessKey:"I",elements:[{type:"text",id:"txtName",label:c.lang.link.anchor.name,required:!0,validate:function(){return this.getValue()?!0:(alert(c.lang.link.anchor.errorName),!1)}}]}]}}); \ No newline at end of file 7d.is("a"))?d:void 0;var f=(d=a&&a.data("cke-realelement"))?CKEDITOR.plugins.link.tryRestoreFakeAnchor(c,a):CKEDITOR.plugins.link.getSelectedLink(c);if(f){this._.selectedElement=f;var e=f.data("cke-saved-name");this.setValueOf("info","txtName",e||"");!d&&b.selectElement(f);a&&(this._.selectedElement=a)}this.getContentElement("info","txtName").focus()},contents:[{id:"info",label:c.lang.link.anchor.title,accessKey:"I",elements:[{type:"text",id:"txtName",label:c.lang.link.anchor.name,required:!0,validate:function(){return this.getValue()?
8!0:(alert(c.lang.link.anchor.errorName),!1)}}]}]}}); \ No newline at end of file
diff --git a/release/plugins/link/dialogs/link.js b/release/plugins/link/dialogs/link.js
index fcb4b64..e8581a7 100644
--- a/release/plugins/link/dialogs/link.js
+++ b/release/plugins/link/dialogs/link.js
@@ -1,26 +1,28 @@
1/* 1/*
2 Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 For licensing, see LICENSE.md or http://ckeditor.com/license 3 For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5(function(){CKEDITOR.dialog.add("link",function(g){var n=CKEDITOR.plugins.link,p=function(){var a=this.getDialog(),b=a.getContentElement("target","popupFeatures"),a=a.getContentElement("target","linkTargetName"),m=this.getValue();if(b&&a)switch(b=b.getElement(),b.hide(),a.setValue(""),m){case "frame":a.setLabel(g.lang.link.targetFrameName);a.getElement().show();break;case "popup":b.show();a.setLabel(g.lang.link.targetPopupName);a.getElement().show();break;default:a.setValue(m),a.getElement().hide()}}, 5(function(){CKEDITOR.dialog.add("link",function(c){function t(a,b){var c=a.createRange();c.setStartBefore(b);c.setEndAfter(b);return c}var n=CKEDITOR.plugins.link,q,r=function(){var a=this.getDialog(),b=a.getContentElement("target","popupFeatures"),a=a.getContentElement("target","linkTargetName"),p=this.getValue();if(b&&a)switch(b=b.getElement(),b.hide(),a.setValue(""),p){case "frame":a.setLabel(c.lang.link.targetFrameName);a.getElement().show();break;case "popup":b.show();a.setLabel(c.lang.link.targetPopupName);
6f=function(a){a.target&&this.setValue(a.target[this.id]||"")},h=function(a){a.advanced&&this.setValue(a.advanced[this.id]||"")},k=function(a){a.target||(a.target={});a.target[this.id]=this.getValue()||""},l=function(a){a.advanced||(a.advanced={});a.advanced[this.id]=this.getValue()||""},c=g.lang.common,b=g.lang.link,d;return{title:b.title,minWidth:350,minHeight:230,contents:[{id:"info",label:b.info,title:b.info,elements:[{id:"linkType",type:"select",label:b.type,"default":"url",items:[[b.toUrl,"url"], 6a.getElement().show();break;default:a.setValue(p),a.getElement().hide()}},l=function(a){a.target&&this.setValue(a.target[this.id]||"")},e=function(a){a.advanced&&this.setValue(a.advanced[this.id]||"")},k=function(a){a.target||(a.target={});a.target[this.id]=this.getValue()||""},m=function(a){a.advanced||(a.advanced={});a.advanced[this.id]=this.getValue()||""},g=c.lang.common,b=c.lang.link,d;return{title:b.title,minWidth:"moono-lisa"==(CKEDITOR.skinName||c.config.skin)?450:350,minHeight:240,contents:[{id:"info",
7[b.toAnchor,"anchor"],[b.toEmail,"email"]],onChange:function(){var a=this.getDialog(),b=["urlOptions","anchorOptions","emailOptions"],m=this.getValue(),e=a.definition.getContents("upload"),e=e&&e.hidden;"url"==m?(g.config.linkShowTargetTab&&a.showPage("target"),e||a.showPage("upload")):(a.hidePage("target"),e||a.hidePage("upload"));for(e=0;e<b.length;e++){var c=a.getContentElement("info",b[e]);c&&(c=c.getElement().getParent().getParent(),b[e]==m+"Options"?c.show():c.hide())}a.layout()},setup:function(a){this.setValue(a.type|| 7label:b.info,title:b.info,elements:[{type:"text",id:"linkDisplayText",label:b.displayText,setup:function(){this.enable();this.setValue(c.getSelection().getSelectedText());q=this.getValue()},commit:function(a){a.linkText=this.isEnabled()?this.getValue():""}},{id:"linkType",type:"select",label:b.type,"default":"url",items:[[b.toUrl,"url"],[b.toAnchor,"anchor"],[b.toEmail,"email"]],onChange:function(){var a=this.getDialog(),b=["urlOptions","anchorOptions","emailOptions"],p=this.getValue(),f=a.definition.getContents("upload"),
8"url")},commit:function(a){a.type=this.getValue()}},{type:"vbox",id:"urlOptions",children:[{type:"hbox",widths:["25%","75%"],children:[{id:"protocol",type:"select",label:c.protocol,"default":"http://",items:[["http://‎","http://"],["https://‎","https://"],["ftp://‎","ftp://"],["news://‎","news://"],[b.other,""]],setup:function(a){a.url&&this.setValue(a.url.protocol||"")},commit:function(a){a.url||(a.url={});a.url.protocol=this.getValue()}},{type:"text",id:"url",label:c.url,required:!0,onLoad:function(){this.allowOnChange= 8f=f&&f.hidden;"url"==p?(c.config.linkShowTargetTab&&a.showPage("target"),f||a.showPage("upload")):(a.hidePage("target"),f||a.hidePage("upload"));for(f=0;f<b.length;f++){var h=a.getContentElement("info",b[f]);h&&(h=h.getElement().getParent().getParent(),b[f]==p+"Options"?h.show():h.hide())}a.layout()},setup:function(a){this.setValue(a.type||"url")},commit:function(a){a.type=this.getValue()}},{type:"vbox",id:"urlOptions",children:[{type:"hbox",widths:["25%","75%"],children:[{id:"protocol",type:"select",
9!0},onKeyUp:function(){this.allowOnChange=!1;var a=this.getDialog().getContentElement("info","protocol"),b=this.getValue(),m=/^((javascript:)|[#\/\.\?])/i,c=/^(http|https|ftp|news):\/\/(?=.)/i.exec(b);c?(this.setValue(b.substr(c[0].length)),a.setValue(c[0].toLowerCase())):m.test(b)&&a.setValue("");this.allowOnChange=!0},onChange:function(){if(this.allowOnChange)this.onKeyUp()},validate:function(){var a=this.getDialog();return a.getContentElement("info","linkType")&&"url"!=a.getValueOf("info","linkType")? 9label:g.protocol,"default":"http://",items:[["http://‎","http://"],["https://‎","https://"],["ftp://‎","ftp://"],["news://‎","news://"],[b.other,""]],setup:function(a){a.url&&this.setValue(a.url.protocol||"")},commit:function(a){a.url||(a.url={});a.url.protocol=this.getValue()}},{type:"text",id:"url",label:g.url,required:!0,onLoad:function(){this.allowOnChange=!0},onKeyUp:function(){this.allowOnChange=!1;var a=this.getDialog().getContentElement("info","protocol"),b=this.getValue(),c=/^((javascript:)|[#\/\.\?])/i,
10!0:!g.config.linkJavaScriptLinksAllowed&&/javascript\:/.test(this.getValue())?(alert(c.invalidValue),!1):this.getDialog().fakeObj?!0:CKEDITOR.dialog.validate.notEmpty(b.noUrl).apply(this)},setup:function(a){this.allowOnChange=!1;a.url&&this.setValue(a.url.url);this.allowOnChange=!0},commit:function(a){this.onChange();a.url||(a.url={});a.url.url=this.getValue();this.allowOnChange=!1}}],setup:function(){this.getDialog().getContentElement("info","linkType")||this.getElement().show()}},{type:"button", 10f=/^(http|https|ftp|news):\/\/(?=.)/i.exec(b);f?(this.setValue(b.substr(f[0].length)),a.setValue(f[0].toLowerCase())):c.test(b)&&a.setValue("");this.allowOnChange=!0},onChange:function(){if(this.allowOnChange)this.onKeyUp()},validate:function(){var a=this.getDialog();return a.getContentElement("info","linkType")&&"url"!=a.getValueOf("info","linkType")?!0:!c.config.linkJavaScriptLinksAllowed&&/javascript\:/.test(this.getValue())?(alert(g.invalidValue),!1):this.getDialog().fakeObj?!0:CKEDITOR.dialog.validate.notEmpty(b.noUrl).apply(this)},
11id:"browse",hidden:"true",filebrowser:"info:url",label:c.browseServer}]},{type:"vbox",id:"anchorOptions",width:260,align:"center",padding:0,children:[{type:"fieldset",id:"selectAnchorText",label:b.selectAnchor,setup:function(){d=n.getEditorAnchors(g);this.getElement()[d&&d.length?"show":"hide"]()},children:[{type:"hbox",id:"selectAnchor",children:[{type:"select",id:"anchorName","default":"",label:b.anchorName,style:"width: 100%;",items:[[""]],setup:function(a){this.clear();this.add("");if(d)for(var b= 11setup:function(a){this.allowOnChange=!1;a.url&&this.setValue(a.url.url);this.allowOnChange=!0},commit:function(a){this.onChange();a.url||(a.url={});a.url.url=this.getValue();this.allowOnChange=!1}}],setup:function(){this.getDialog().getContentElement("info","linkType")||this.getElement().show()}},{type:"button",id:"browse",hidden:"true",filebrowser:"info:url",label:g.browseServer}]},{type:"vbox",id:"anchorOptions",width:260,align:"center",padding:0,children:[{type:"fieldset",id:"selectAnchorText",
120;b<d.length;b++)d[b].name&&this.add(d[b].name);a.anchor&&this.setValue(a.anchor.name);(a=this.getDialog().getContentElement("info","linkType"))&&"email"==a.getValue()&&this.focus()},commit:function(a){a.anchor||(a.anchor={});a.anchor.name=this.getValue()}},{type:"select",id:"anchorId","default":"",label:b.anchorId,style:"width: 100%;",items:[[""]],setup:function(a){this.clear();this.add("");if(d)for(var b=0;b<d.length;b++)d[b].id&&this.add(d[b].id);a.anchor&&this.setValue(a.anchor.id)},commit:function(a){a.anchor|| 12label:b.selectAnchor,setup:function(){d=n.getEditorAnchors(c);this.getElement()[d&&d.length?"show":"hide"]()},children:[{type:"hbox",id:"selectAnchor",children:[{type:"select",id:"anchorName","default":"",label:b.anchorName,style:"width: 100%;",items:[[""]],setup:function(a){this.clear();this.add("");if(d)for(var b=0;b<d.length;b++)d[b].name&&this.add(d[b].name);a.anchor&&this.setValue(a.anchor.name);(a=this.getDialog().getContentElement("info","linkType"))&&"email"==a.getValue()&&this.focus()},commit:function(a){a.anchor||
13(a.anchor={});a.anchor.id=this.getValue()}}],setup:function(){this.getElement()[d&&d.length?"show":"hide"]()}}]},{type:"html",id:"noAnchors",style:"text-align: center;",html:'\x3cdiv role\x3d"note" tabIndex\x3d"-1"\x3e'+CKEDITOR.tools.htmlEncode(b.noAnchors)+"\x3c/div\x3e",focus:!0,setup:function(){this.getElement()[d&&d.length?"hide":"show"]()}}],setup:function(){this.getDialog().getContentElement("info","linkType")||this.getElement().hide()}},{type:"vbox",id:"emailOptions",padding:1,children:[{type:"text", 13(a.anchor={});a.anchor.name=this.getValue()}},{type:"select",id:"anchorId","default":"",label:b.anchorId,style:"width: 100%;",items:[[""]],setup:function(a){this.clear();this.add("");if(d)for(var b=0;b<d.length;b++)d[b].id&&this.add(d[b].id);a.anchor&&this.setValue(a.anchor.id)},commit:function(a){a.anchor||(a.anchor={});a.anchor.id=this.getValue()}}],setup:function(){this.getElement()[d&&d.length?"show":"hide"]()}}]},{type:"html",id:"noAnchors",style:"text-align: center;",html:'\x3cdiv role\x3d"note" tabIndex\x3d"-1"\x3e'+
14id:"emailAddress",label:b.emailAddress,required:!0,validate:function(){var a=this.getDialog();return a.getContentElement("info","linkType")&&"email"==a.getValueOf("info","linkType")?CKEDITOR.dialog.validate.notEmpty(b.noEmail).apply(this):!0},setup:function(a){a.email&&this.setValue(a.email.address);(a=this.getDialog().getContentElement("info","linkType"))&&"email"==a.getValue()&&this.select()},commit:function(a){a.email||(a.email={});a.email.address=this.getValue()}},{type:"text",id:"emailSubject", 14CKEDITOR.tools.htmlEncode(b.noAnchors)+"\x3c/div\x3e",focus:!0,setup:function(){this.getElement()[d&&d.length?"hide":"show"]()}}],setup:function(){this.getDialog().getContentElement("info","linkType")||this.getElement().hide()}},{type:"vbox",id:"emailOptions",padding:1,children:[{type:"text",id:"emailAddress",label:b.emailAddress,required:!0,validate:function(){var a=this.getDialog();return a.getContentElement("info","linkType")&&"email"==a.getValueOf("info","linkType")?CKEDITOR.dialog.validate.notEmpty(b.noEmail).apply(this):
15label:b.emailSubject,setup:function(a){a.email&&this.setValue(a.email.subject)},commit:function(a){a.email||(a.email={});a.email.subject=this.getValue()}},{type:"textarea",id:"emailBody",label:b.emailBody,rows:3,"default":"",setup:function(a){a.email&&this.setValue(a.email.body)},commit:function(a){a.email||(a.email={});a.email.body=this.getValue()}}],setup:function(){this.getDialog().getContentElement("info","linkType")||this.getElement().hide()}}]},{id:"target",requiredContent:"a[target]",label:b.target, 15!0},setup:function(a){a.email&&this.setValue(a.email.address);(a=this.getDialog().getContentElement("info","linkType"))&&"email"==a.getValue()&&this.select()},commit:function(a){a.email||(a.email={});a.email.address=this.getValue()}},{type:"text",id:"emailSubject",label:b.emailSubject,setup:function(a){a.email&&this.setValue(a.email.subject)},commit:function(a){a.email||(a.email={});a.email.subject=this.getValue()}},{type:"textarea",id:"emailBody",label:b.emailBody,rows:3,"default":"",setup:function(a){a.email&&
16title:b.target,elements:[{type:"hbox",widths:["50%","50%"],children:[{type:"select",id:"linkTargetType",label:c.target,"default":"notSet",style:"width : 100%;",items:[[c.notSet,"notSet"],[b.targetFrame,"frame"],[b.targetPopup,"popup"],[c.targetNew,"_blank"],[c.targetTop,"_top"],[c.targetSelf,"_self"],[c.targetParent,"_parent"]],onChange:p,setup:function(a){a.target&&this.setValue(a.target.type||"notSet");p.call(this)},commit:function(a){a.target||(a.target={});a.target.type=this.getValue()}},{type:"text", 16this.setValue(a.email.body)},commit:function(a){a.email||(a.email={});a.email.body=this.getValue()}}],setup:function(){this.getDialog().getContentElement("info","linkType")||this.getElement().hide()}}]},{id:"target",requiredContent:"a[target]",label:b.target,title:b.target,elements:[{type:"hbox",widths:["50%","50%"],children:[{type:"select",id:"linkTargetType",label:g.target,"default":"notSet",style:"width : 100%;",items:[[g.notSet,"notSet"],[b.targetFrame,"frame"],[b.targetPopup,"popup"],[g.targetNew,
17id:"linkTargetName",label:b.targetFrameName,"default":"",setup:function(a){a.target&&this.setValue(a.target.name)},commit:function(a){a.target||(a.target={});a.target.name=this.getValue().replace(/([^\x00-\x7F]|\s)/gi,"")}}]},{type:"vbox",width:"100%",align:"center",padding:2,id:"popupFeatures",children:[{type:"fieldset",label:b.popupFeatures,children:[{type:"hbox",children:[{type:"checkbox",id:"resizable",label:b.popupResizable,setup:f,commit:k},{type:"checkbox",id:"status",label:b.popupStatusBar, 17"_blank"],[g.targetTop,"_top"],[g.targetSelf,"_self"],[g.targetParent,"_parent"]],onChange:r,setup:function(a){a.target&&this.setValue(a.target.type||"notSet");r.call(this)},commit:function(a){a.target||(a.target={});a.target.type=this.getValue()}},{type:"text",id:"linkTargetName",label:b.targetFrameName,"default":"",setup:function(a){a.target&&this.setValue(a.target.name)},commit:function(a){a.target||(a.target={});a.target.name=this.getValue().replace(/([^\x00-\x7F]|\s)/gi,"")}}]},{type:"vbox",
18setup:f,commit:k}]},{type:"hbox",children:[{type:"checkbox",id:"location",label:b.popupLocationBar,setup:f,commit:k},{type:"checkbox",id:"toolbar",label:b.popupToolbar,setup:f,commit:k}]},{type:"hbox",children:[{type:"checkbox",id:"menubar",label:b.popupMenuBar,setup:f,commit:k},{type:"checkbox",id:"fullscreen",label:b.popupFullScreen,setup:f,commit:k}]},{type:"hbox",children:[{type:"checkbox",id:"scrollbars",label:b.popupScrollBars,setup:f,commit:k},{type:"checkbox",id:"dependent",label:b.popupDependent, 18width:"100%",align:"center",padding:2,id:"popupFeatures",children:[{type:"fieldset",label:b.popupFeatures,children:[{type:"hbox",children:[{type:"checkbox",id:"resizable",label:b.popupResizable,setup:l,commit:k},{type:"checkbox",id:"status",label:b.popupStatusBar,setup:l,commit:k}]},{type:"hbox",children:[{type:"checkbox",id:"location",label:b.popupLocationBar,setup:l,commit:k},{type:"checkbox",id:"toolbar",label:b.popupToolbar,setup:l,commit:k}]},{type:"hbox",children:[{type:"checkbox",id:"menubar",
19setup:f,commit:k}]},{type:"hbox",children:[{type:"text",widths:["50%","50%"],labelLayout:"horizontal",label:c.width,id:"width",setup:f,commit:k},{type:"text",labelLayout:"horizontal",widths:["50%","50%"],label:b.popupLeft,id:"left",setup:f,commit:k}]},{type:"hbox",children:[{type:"text",labelLayout:"horizontal",widths:["50%","50%"],label:c.height,id:"height",setup:f,commit:k},{type:"text",labelLayout:"horizontal",label:b.popupTop,widths:["50%","50%"],id:"top",setup:f,commit:k}]}]}]}]},{id:"upload", 19label:b.popupMenuBar,setup:l,commit:k},{type:"checkbox",id:"fullscreen",label:b.popupFullScreen,setup:l,commit:k}]},{type:"hbox",children:[{type:"checkbox",id:"scrollbars",label:b.popupScrollBars,setup:l,commit:k},{type:"checkbox",id:"dependent",label:b.popupDependent,setup:l,commit:k}]},{type:"hbox",children:[{type:"text",widths:["50%","50%"],labelLayout:"horizontal",label:g.width,id:"width",setup:l,commit:k},{type:"text",labelLayout:"horizontal",widths:["50%","50%"],label:b.popupLeft,id:"left",
20label:b.upload,title:b.upload,hidden:!0,filebrowser:"uploadButton",elements:[{type:"file",id:"upload",label:c.upload,style:"height:40px",size:29},{type:"fileButton",id:"uploadButton",label:c.uploadSubmit,filebrowser:"info:url","for":["upload","upload"]}]},{id:"advanced",label:b.advanced,title:b.advanced,elements:[{type:"vbox",padding:1,children:[{type:"hbox",widths:["45%","35%","20%"],children:[{type:"text",id:"advId",requiredContent:"a[id]",label:b.id,setup:h,commit:l},{type:"select",id:"advLangDir", 20setup:l,commit:k}]},{type:"hbox",children:[{type:"text",labelLayout:"horizontal",widths:["50%","50%"],label:g.height,id:"height",setup:l,commit:k},{type:"text",labelLayout:"horizontal",label:b.popupTop,widths:["50%","50%"],id:"top",setup:l,commit:k}]}]}]}]},{id:"upload",label:b.upload,title:b.upload,hidden:!0,filebrowser:"uploadButton",elements:[{type:"file",id:"upload",label:g.upload,style:"height:40px",size:29},{type:"fileButton",id:"uploadButton",label:g.uploadSubmit,filebrowser:"info:url","for":["upload",
21requiredContent:"a[dir]",label:b.langDir,"default":"",style:"width:110px",items:[[c.notSet,""],[b.langDirLTR,"ltr"],[b.langDirRTL,"rtl"]],setup:h,commit:l},{type:"text",id:"advAccessKey",requiredContent:"a[accesskey]",width:"80px",label:b.acccessKey,maxLength:1,setup:h,commit:l}]},{type:"hbox",widths:["45%","35%","20%"],children:[{type:"text",label:b.name,id:"advName",requiredContent:"a[name]",setup:h,commit:l},{type:"text",label:b.langCode,id:"advLangCode",requiredContent:"a[lang]",width:"110px", 21"upload"]}]},{id:"advanced",label:b.advanced,title:b.advanced,elements:[{type:"vbox",padding:1,children:[{type:"hbox",widths:["45%","35%","20%"],children:[{type:"text",id:"advId",requiredContent:"a[id]",label:b.id,setup:e,commit:m},{type:"select",id:"advLangDir",requiredContent:"a[dir]",label:b.langDir,"default":"",style:"width:110px",items:[[g.notSet,""],[b.langDirLTR,"ltr"],[b.langDirRTL,"rtl"]],setup:e,commit:m},{type:"text",id:"advAccessKey",requiredContent:"a[accesskey]",width:"80px",label:b.acccessKey,
22"default":"",setup:h,commit:l},{type:"text",label:b.tabIndex,id:"advTabIndex",requiredContent:"a[tabindex]",width:"80px",maxLength:5,setup:h,commit:l}]}]},{type:"vbox",padding:1,children:[{type:"hbox",widths:["45%","55%"],children:[{type:"text",label:b.advisoryTitle,requiredContent:"a[title]","default":"",id:"advTitle",setup:h,commit:l},{type:"text",label:b.advisoryContentType,requiredContent:"a[type]","default":"",id:"advContentType",setup:h,commit:l}]},{type:"hbox",widths:["45%","55%"],children:[{type:"text", 22maxLength:1,setup:e,commit:m}]},{type:"hbox",widths:["45%","35%","20%"],children:[{type:"text",label:b.name,id:"advName",requiredContent:"a[name]",setup:e,commit:m},{type:"text",label:b.langCode,id:"advLangCode",requiredContent:"a[lang]",width:"110px","default":"",setup:e,commit:m},{type:"text",label:b.tabIndex,id:"advTabIndex",requiredContent:"a[tabindex]",width:"80px",maxLength:5,setup:e,commit:m}]}]},{type:"vbox",padding:1,children:[{type:"hbox",widths:["45%","55%"],children:[{type:"text",label:b.advisoryTitle,
23label:b.cssClasses,requiredContent:"a(cke-xyz)","default":"",id:"advCSSClasses",setup:h,commit:l},{type:"text",label:b.charset,requiredContent:"a[charset]","default":"",id:"advCharset",setup:h,commit:l}]},{type:"hbox",widths:["45%","55%"],children:[{type:"text",label:b.rel,requiredContent:"a[rel]","default":"",id:"advRel",setup:h,commit:l},{type:"text",label:b.styles,requiredContent:"a{cke-xyz}","default":"",id:"advStyles",validate:CKEDITOR.dialog.validate.inlineStyle(g.lang.common.invalidInlineStyle), 23requiredContent:"a[title]","default":"",id:"advTitle",setup:e,commit:m},{type:"text",label:b.advisoryContentType,requiredContent:"a[type]","default":"",id:"advContentType",setup:e,commit:m}]},{type:"hbox",widths:["45%","55%"],children:[{type:"text",label:b.cssClasses,requiredContent:"a(cke-xyz)","default":"",id:"advCSSClasses",setup:e,commit:m},{type:"text",label:b.charset,requiredContent:"a[charset]","default":"",id:"advCharset",setup:e,commit:m}]},{type:"hbox",widths:["45%","55%"],children:[{type:"text",
24setup:h,commit:l}]}]}]}],onShow:function(){var a=this.getParentEditor(),b=a.getSelection(),c=null;(c=n.getSelectedLink(a))&&c.hasAttribute("href")?b.getSelectedElement()||b.selectElement(c):c=null;a=n.parseLinkAttributes(a,c);this._.selectedElement=c;this.setupContent(a)},onOk:function(){var a={};this.commitContent(a);var b=g.getSelection(),c=n.getLinkAttributes(g,a);if(this._.selectedElement){var e=this._.selectedElement,d=e.data("cke-saved-href"),f=e.getHtml();e.setAttributes(c.set);e.removeAttributes(c.removed); 24label:b.rel,requiredContent:"a[rel]","default":"",id:"advRel",setup:e,commit:m},{type:"text",label:b.styles,requiredContent:"a{cke-xyz}","default":"",id:"advStyles",validate:CKEDITOR.dialog.validate.inlineStyle(c.lang.common.invalidInlineStyle),setup:e,commit:m}]},{type:"hbox",widths:["45%","55%"],children:[{type:"checkbox",id:"download",requiredContent:"a[download]",label:b.download,setup:function(a){void 0!==a.download&&this.setValue("checked","checked")},commit:function(a){this.getValue()&&(a.download=
25if(d==f||"email"==a.type&&-1!=f.indexOf("@"))e.setHtml("email"==a.type?a.email.address:c.set["data-cke-saved-href"]),b.selectElement(e);delete this._.selectedElement}else b=b.getRanges()[0],b.collapsed&&(a=new CKEDITOR.dom.text("email"==a.type?a.email.address:c.set["data-cke-saved-href"],g.document),b.insertNode(a),b.selectNodeContents(a)),c=new CKEDITOR.style({element:"a",attributes:c.set}),c.type=CKEDITOR.STYLE_INLINE,c.applyToRange(b,g),b.select()},onLoad:function(){g.config.linkShowAdvancedTab|| 25this.getValue())}}]}]}]}],onShow:function(){var a=this.getParentEditor(),b=a.getSelection(),c=this.getContentElement("info","linkDisplayText").getElement().getParent().getParent(),f=n.getSelectedLink(a,!0),h=f[0]||null;h&&h.hasAttribute("href")&&(b.getSelectedElement()||b.isInTable()||b.selectElement(h));b=n.parseLinkAttributes(a,h);1>=f.length&&n.showDisplayTextForElement(h,a)?c.show():c.hide();this._.selectedElements=f;this.setupContent(b)},onOk:function(){var a={};this.commitContent(a);if(this._.selectedElements.length){var b=
26this.hidePage("advanced");g.config.linkShowTargetTab||this.hidePage("target")},onFocus:function(){var a=this.getContentElement("info","linkType");a&&"url"==a.getValue()&&(a=this.getContentElement("info","url"),a.select())}}})})(); \ No newline at end of file 26this._.selectedElements,g=n.getLinkAttributes(c,a),f=[],h,d,l,e,k;for(k=0;k<b.length;k++){h=b[k];d=h.data("cke-saved-href");l=h.getHtml();h.setAttributes(g.set);h.removeAttributes(g.removed);if(a.linkText&&q!=a.linkText)e=a.linkText;else if(d==l||"email"==a.type&&-1!=l.indexOf("@"))e="email"==a.type?a.email.address:g.set["data-cke-saved-href"];e&&h.setText(e);f.push(t(c,h))}c.getSelection().selectRanges(f);delete this._.selectedElements}else{b=n.getLinkAttributes(c,a);g=c.getSelection().getRanges();
27f=new CKEDITOR.style({element:"a",attributes:b.set});h=[];f.type=CKEDITOR.STYLE_INLINE;for(l=0;l<g.length;l++){d=g[l];d.collapsed?(e=new CKEDITOR.dom.text(a.linkText||("email"==a.type?a.email.address:b.set["data-cke-saved-href"]),c.document),d.insertNode(e),d.selectNodeContents(e)):q!==a.linkText&&(e=new CKEDITOR.dom.text(a.linkText,c.document),d.shrink(CKEDITOR.SHRINK_TEXT),c.editable().extractHtmlFromRange(d),d.insertNode(e));e=d._find("a");for(k=0;k<e.length;k++)e[k].remove(!0);f.applyToRange(d,
28c);h.push(d)}c.getSelection().selectRanges(h)}},onLoad:function(){c.config.linkShowAdvancedTab||this.hidePage("advanced");c.config.linkShowTargetTab||this.hidePage("target")},onFocus:function(){var a=this.getContentElement("info","linkType");a&&"url"==a.getValue()&&(a=this.getContentElement("info","url"),a.select())}}})})(); \ No newline at end of file
diff --git a/release/plugins/link/images/anchor.png b/release/plugins/link/images/anchor.png
index 6d861a0..d94adb4 100644
--- a/release/plugins/link/images/anchor.png
+++ b/release/plugins/link/images/anchor.png
Binary files differ
diff --git a/release/plugins/link/images/hidpi/anchor.png b/release/plugins/link/images/hidpi/anchor.png
index f504843..186c3e9 100644
--- a/release/plugins/link/images/hidpi/anchor.png
+++ b/release/plugins/link/images/hidpi/anchor.png
Binary files differ
diff --git a/release/plugins/liststyle/dialogs/liststyle.js b/release/plugins/liststyle/dialogs/liststyle.js
index b984cbb..3d5a56f 100644
--- a/release/plugins/liststyle/dialogs/liststyle.js
+++ b/release/plugins/liststyle/dialogs/liststyle.js
@@ -1,5 +1,5 @@
1/* 1/*
2 Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 For licensing, see LICENSE.md or http://ckeditor.com/license 3 For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5(function(){function d(c,d){var b;try{b=c.getSelection().getRanges()[0]}catch(f){return null}b.shrink(CKEDITOR.SHRINK_TEXT);return c.elementPath(b.getCommonAncestor()).contains(d,1)}function e(c,e){var b=c.lang.liststyle;if("bulletedListStyle"==e)return{title:b.bulletedTitle,minWidth:300,minHeight:50,contents:[{id:"info",accessKey:"I",elements:[{type:"select",label:b.type,id:"type",align:"center",style:"width:150px",items:[[b.notset,""],[b.circle,"circle"],[b.disc,"disc"],[b.square,"square"]],setup:function(a){a= 5(function(){function d(c,d){var b;try{b=c.getSelection().getRanges()[0]}catch(f){return null}b.shrink(CKEDITOR.SHRINK_TEXT);return c.elementPath(b.getCommonAncestor()).contains(d,1)}function e(c,e){var b=c.lang.liststyle;if("bulletedListStyle"==e)return{title:b.bulletedTitle,minWidth:300,minHeight:50,contents:[{id:"info",accessKey:"I",elements:[{type:"select",label:b.type,id:"type",align:"center",style:"width:150px",items:[[b.notset,""],[b.circle,"circle"],[b.disc,"disc"],[b.square,"square"]],setup:function(a){a=
diff --git a/release/plugins/oembed/LICENSE.md b/release/plugins/oembed/LICENSE.md
new file mode 100644
index 0000000..be0064f
--- /dev/null
+++ b/release/plugins/oembed/LICENSE.md
@@ -0,0 +1,21 @@
1The MIT License (MIT)
2
3Copyright (c) Ingo Herbote
4
5Permission is hereby granted, free of charge, to any person obtaining a copy
6of this software and associated documentation files (the "Software"), to deal
7in the Software without restriction, including without limitation the rights
8to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9copies of the Software, and to permit persons to whom the Software is
10furnished to do so, subject to the following conditions:
11
12The above copyright notice and this permission notice shall be included in all
13copies or substantial portions of the Software.
14
15THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21SOFTWARE.
diff --git a/release/plugins/oembed/README.md b/release/plugins/oembed/README.md
new file mode 100644
index 0000000..64c729c
--- /dev/null
+++ b/release/plugins/oembed/README.md
@@ -0,0 +1,201 @@
1CKEditor-oEmbed-Plugin
2======================
3
4oEmbed Plugin for CKEditor
5
6This Plugin allows to insert embedded content (such as photos, videos, audio, and other rich media) via the OEmbed API. You only have to provide the url to the site (It works also when the url is shortened) you want to embed and the plugin does the rest.
7
8This Plugin uses the jquery-oembed-all Plugin located at https://github.com/starfishmod/jquery-oembed-all.
9
10####Demo
11
12http://w8tcha.github.com/CKEditor-oEmbed-Plugin/
13
14####Currently Supported Sites...
15
16###Video
17* Youtube - oembed - YQL
18* Blip - oEmbed
19* Hulu - oEmbed
20* Vimeo - oEmbed
21* National film board of Canada - oEmbed
22* Qik - oEmbed
23* Dotsub - oEmbed
24* Clikthrough - oEmbed
25* Kino Map - oEmbed
26* Funny Or Die - Embedded
27* College Humour - Embedded
28* Metacafe - Embedded
29* embedr - Embedded
30* 5min - oEmbed is XML only - using YQL to translate it
31* ustream.tv - oEmbed is not JSONP enabled - using YQL to translate it
32* viddler - OGP
33* twitvid - Embedded
34* bambuser - Embedded
35* xtranormal - Embedded
36* Gametrailers - Embedded
37* Vzarr - Embedded
38* VHX - oembed
39* bambuser - oembed
40* dailymotion.com - oembed
41* animoto - oembed
42* justin.tv - YQL JSON
43* livestream - OGP
44* scivee - embedded
45* veoh - embedded
46* minoto-video - oembed using YQL
47* TrailerAddict - OGP
48* vodpod - oembed YQL - broken as the oembed has absolute positioning which breaks the display
49* fora.tv -OGP YQL
50* TED - OGP YQL
51* Aniboom - embedded
52* Comedy Central - OGP
53* snotr - embedded
54* zapiks - OGP
55* youku - embedded
56* wistia - Oembed
57
58###Audio
59* Soundcloud - oEmbed
60* HuffDuffer - oEmbed
61* BandCamp - YQL and Embedded
62* podomatic - OGP
63* rdio.com - oEmbed
64* hark.com - OGP
65* chirb.it - YQL and oembed
66* official.fm - YQL and oembed
67* mixcloud - YQL and oembed
68* shoudio - oembed
69* audioboo.fm - OGP
70* Spotify - OGP YQL
71
72###Photo
73* flickr - oEmbed
74* photobucket - oEmbed
75* instagram - oEmbed
76* yfrog - oEmbed
77* 23HQ - oEmbed
78* Smugmug - oEmbed
79* twitpic - OGP YQL
80* 500px.com - OGP
81* visual.ly - YQL Lookup
82* img.ly - Thumbnail view
83* imgur.com - Thumbnail view
84* twitgoo.com - Thumbnail view
85* gravatar - Thumbnail view when using mailto
86* pintrest - YQL - Embedded view of a sort.
87* circuitlab - image view
88* skitch - YQL oembed
89* graphic.ly - OGP
90* dribble - jsonp lookup
91* Lockerz - YQL lookup
92* AsciiArtFarts - YQL Lookup
93* lego cusoo - OGP over YQL
94* plannary - OGP over YQL
95* propic - OGP
96* avairy.com - OGP
97* lomography - ogp
98* weheartit - ogp
99* glogster - ogp
100* chart.ly - embedded
101* twitrpix - OGP
102* chictopia - OGP
103
104###Rich
105* Meetup - oEmbed
106* gigapans - Embedded
107* Slideshare - oEmbed
108* ebay - Embedded
109* scribd - Embedded
110* screenr - Embedded
111* tumblr- JSONP lookup
112* imdb - JSONP lookup via imdbapi.com
113* wikipedia- JSONP lookup
114* github- JSONP lookup (CSS)
115* eventful - OGP
116* myspace - OGP
117* live Journal - JSONP Lookup (CSS)
118* wordpress - oEmbed (wordpress.com, wp.me, blogs.cnn.com, techcrunch.com). I can add other wordpress sites as well.
119* circuitbee -Embedded
120* stack overflow - JSONP Lookup (CSS)
121* Facebook - JSONP Lookup (CSS)
122* Pastebin - Embedded
123* Pastie - YQL lookup
124* kickstarter - Embedded
125* issuu - OGP
126* reelapp.com - Embedded
127* Etsy - OGP over YQL
128* Amazon - Embedded - Requires Affiliate code
129* linkedin - Embedded IFRAME - found a link that works :)
130* Lanyrd - YQL (CSS)
131* twitter - Oembed - status only - but that is ok I think
132* github gist - oembed
133* speakerdeck - yql oembed
134* dipity - yql oembed
135* dailymile - oembed
136* deviantart - oembed
137* Roomshare Japan - oembed
138* mobypictures - oembed
139* prezi - embedded
140* popplet - embedded
141* authorstream - OGP
142* googlecalendar - Iframe
143* cacoo - oembed
144* pearltrees - embedded
145* urtak - oembed - is broken in iframe return atm -seems to be an embed.ly issue??
146* jotform - embedded
147* Urban Dictionary - YQL lookup
148* Ars Technica - YQL Lookup
149* Eventbrite - OGP YQL
150* last.fm OGP YQL
151* Rotten Tomatoes - OGP YQL
152* iFixit - OGP
153* qwiki - OGP
154* brighttalk - Meta info
155* tinychat - OGP
156* tourwrist - embedded
157* bnter - OGP
158* bigthink - OGP
159* wirewax - OGP
160* whosay - OGP
161* timetoast - embedded
162* tripline - OGP
163* jsfiddle - embedded
164
165
166####License
167
168Licensed under the terms of the MIT License.
169
170####Dependencies
171This Plugin requires the following plugins to work: Widget, Dialog.
172
173####Installation
174
175 1. Before you can use the plugin you also need to download & install the widget plugin, if you have it not installed. http://ckeditor.com/addon/widget
176 2. Extract the contents of the file into the "plugins" folder of CKEditor.
177 3. In the CKEditor configuration file (config.js) add the following code:
178
179````js
180config.extraPlugins = 'oembed,widget';
181````
182
1832a. Additionally you can also set the default values vor the Max. Width/Height Values
184
185````js
186config.oembed_maxWidth = '560';
187config.oembed_maxHeight = '315';
188````
189
190and also you can define an css class for the embeded content wrapper (div), by default there is no Class defined
191
192````js
193config.oembed_WrapperClass = 'embededContent';
194````
195
196
1973. and also include the plugin in the toolbar
198
199````js
200toolbar :[ ... ['oembed']...]
201````
diff --git a/release/plugins/oembed/libs/jquery.oembed.min.js b/release/plugins/oembed/libs/jquery.oembed.min.js
new file mode 100644
index 0000000..5a64c0d
--- /dev/null
+++ b/release/plugins/oembed/libs/jquery.oembed.min.js
@@ -0,0 +1,71 @@
1(function(b){function m(){return"file:"===window.location.protocol?"http://":"//"}function o(a,b){return b=b?b:"",a?o(--a,"0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz".charAt(Math.floor(60*Math.random()))+b):b}function q(a,b){var h=a.apiendpoint,d="",c,h=h+(0>=h.indexOf("?")?"?":"&"),h=h.replace("#","%23");null!==a.maxWidth&&("undefined"==typeof a.params.maxwidth||null===a.params.maxwidth)&&(a.params.maxwidth=a.maxWidth);null!==a.maxHeight&&("undefined"==typeof a.params.maxheight||
2null===a.params.maxheight)&&(a.params.maxheight=a.maxHeight);for(c in a.params)c!=a.callbackparameter&&null!==a.params[c]&&(d+="&"+escape(c)+"="+a.params[c]);return h+="format="+a.format+"&url="+escape(b)+d,"json"!=a.dataType&&(h+="&"+a.callbackparameter+"=?"),h}function n(a,l,h){b("#jqoembeddata").data(l,a.code);j.beforeEmbed.call(h,a);j.onEmbed.call(h,a);j.afterEmbed.call(h,a)}function e(a,l,h){var d,c,f;if(void 0!=b("#jqoembeddata").data(l)&&"iframe"!=h.embedtag.tag)c={code:b("#jqoembeddata").data(l)},
3n(c,l,a);else if(h.yql){c=h.yql.from||"htmlstring";var g=h.yql.url?h.yql.url(l):l;f="SELECT * FROM "+c+' WHERE url="'+g+'" and '+(/html/.test(c)?"xpath":"itemPath")+"='"+(h.yql.xpath||"/")+"'";"html"==c&&(f+=" and compat='html5'");f=b.extend({url:m()+"query.yahooapis.com/v1/public/yql",dataType:"jsonp",data:{q:f,format:"json",env:"store://datatables.org/alltableswithkeys",callback:"?"},success:function(c){var d,f,e,k,j;if(h.yql.xpath&&"//meta|//title|//link"==h.yql.xpath){d={};null==c.query.results&&
4(c.query.results={meta:[]});e=0;for(k=c.query.results.meta.length;e<k;e++)(f=c.query.results.meta[e].name||c.query.results.meta[e].property||null,null!=f)&&(d[f.toLowerCase()]=c.query.results.meta[e].content);if(d.hasOwnProperty("title")&&d.hasOwnProperty("og:title")||null!=c.query.results.title&&(d.title=c.query.results.title),!d.hasOwnProperty("og:image")&&c.query.results.hasOwnProperty("link")){e=0;for(k=c.query.results.link.length;e<k;e++)c.query.results.link[e].hasOwnProperty("rel")&&"apple-touch-icon"==
5c.query.results.link[e].rel&&(d["og:image"]="/"==c.query.results.link[e].href.charAt(0)?g.match(/^(([a-z]+:)?(\/\/)?[^\/]+\/).*$/)[1]+c.query.results.link[e].href:c.query.results.link[e].href)}c=h.yql.datareturn(d)}else c=h.yql.datareturn?h.yql.datareturn(c.query.results):c.query.results.result;!1!==c&&(j=b.extend({},c),j.code=c,n(j,l,a))},error:function(){j.onError.call(a,l,h)}},j.ajaxOptions||{});b.ajax(f)}else if(h.templateRegex)if(""!==h.embedtag.tag){c=h.embedtag.flashvars||"";f=h.embedtag.tag||
6"embed";d=h.embedtag.width||"auto";var e=h.embedtag.height||"auto",p=l.replace(h.templateRegex,h.apiendpoint);if(h.nocache||(p+="&jqoemcache="+o(5)),h.apikey&&(p=p.replace("_APIKEY_",j.apikeys[h.name])),j.maxHeight&&j.maxWidth)if(j.useResponsiveResize){var r=0,s=d,t=e;d>j.maxWidth&&(r=j.maxWidth/d,s=j.maxWidth,t=e*r,e*=r,d*=r);e>j.maxHeight&&(r=j.maxHeight/e,t=j.maxHeight,s=d*r,d*=r);e=t;d=s}else e=j.maxHeight,d=j.maxWidth;d=b("<"+f+"/>").attr("src",p).attr("width",d).attr("height",e).attr("allowfullscreen",
7h.embedtag.allowfullscreen||"true").attr("allowscriptaccess",h.embedtag.allowfullscreen||"always").css("max-height",j.maxHeight||"auto").css("max-width",j.maxWidth||"auto");"embed"==f&&d.attr("type",h.embedtag.type||"application/x-shockwave-flash").attr("flashvars",l.replace(h.templateRegex,c));"iframe"==f&&d.attr("scrolling",h.embedtag.scrolling||"no").attr("frameborder",h.embedtag.frameborder||"0");c={code:d};n(c,l,a)}else h.apiendpoint?(h.apikey&&(h.apiendpoint=h.apiendpoint.replace("_APIKEY_",
8j.apikeys[h.name])),f=b.extend({url:l.replace(h.templateRegex,h.apiendpoint),dataType:"jsonp",success:function(c){var d=b.extend({},c);d.code=h.templateData(c);n(d,l,a)},error:function(){j.onError.call(a,l,h)}},j.ajaxOptions||{}),b.ajax(f)):(c={code:l.replace(h.templateRegex,h.template)},n(c,l,a));else c=q(h,l),f=b.extend({url:c,dataType:h.dataType||"jsonp",success:function(c){c=b.extend({},c);switch(c.type){case "file":case "photo":c.code=b.fn.oembed.getPhotoCode(l,c);break;case "link":c.code="Flickr"==
9c.provider_name?b.fn.oembed.getPhotoCode(l,c):b.fn.oembed.getGenericCode(l,c);break;case "video":case "rich":c.code=b.fn.oembed.getRichCode(l,c);break;default:c.code=b.fn.oembed.getGenericCode(l,c)}n(c,l,a)},error:function(){j.onError.call(a,l,h)}},j.ajaxOptions||{}),b.ajax(f)}function p(a){if(null===a)return null;var b,e={};for(b in a)null!==b&&(e[b.toLowerCase()]=a[b]);return e}b.fn.oembed=function(a,l,h){j=b.extend(!0,b.fn.oembed.defaults,l);var d="0rz.tw 1link.in 1url.com 2.gp 2big.at 2tu.us 3.ly 307.to 4ms.me 4sq.com 4url.cc 6url.com 7.ly a.gg a.nf aa.cx abcurl.net ad.vu adf.ly adjix.com afx.cc all.fuseurl.com alturl.com amzn.to ar.gy arst.ch atu.ca azc.cc b23.ru b2l.me bacn.me bcool.bz binged.it bit.ly bizj.us bloat.me bravo.ly bsa.ly budurl.com canurl.com chilp.it chzb.gr cl.lk cl.ly clck.ru cli.gs cliccami.info clickthru.ca clop.in conta.cc cort.as cot.ag crks.me ctvr.us cutt.us dai.ly decenturl.com dfl8.me digbig.com http://digg.com/[^/]+$ disq.us dld.bz dlvr.it do.my doiop.com dopen.us easyuri.com easyurl.net eepurl.com eweri.com fa.by fav.me fb.me fbshare.me ff.im fff.to fire.to firsturl.de firsturl.net flic.kr flq.us fly2.ws fon.gs freak.to fuseurl.com fuzzy.to fwd4.me fwib.net g.ro.lt gizmo.do gl.am go.9nl.com go.ign.com go.usa.gov goo.gl goshrink.com gurl.es hex.io hiderefer.com hmm.ph href.in hsblinks.com htxt.it huff.to hulu.com hurl.me hurl.ws icanhaz.com idek.net ilix.in is.gd its.my ix.lt j.mp jijr.com kl.am klck.me korta.nu krunchd.com l9k.net lat.ms liip.to liltext.com linkbee.com linkbun.ch liurl.cn ln-s.net ln-s.ru lnk.gd lnk.ms lnkd.in lnkurl.com lru.jp lt.tl lurl.no macte.ch mash.to merky.de migre.me miniurl.com minurl.fr mke.me moby.to moourl.com mrte.ch myloc.me myurl.in n.pr nbc.co nblo.gs nn.nf not.my notlong.com nsfw.in nutshellurl.com nxy.in nyti.ms o-x.fr oc1.us om.ly omf.gd omoikane.net on.cnn.com on.mktw.net onforb.es orz.se ow.ly ping.fm pli.gs pnt.me politi.co post.ly pp.gg profile.to ptiturl.com pub.vitrue.com qlnk.net qte.me qu.tc qy.fi r.ebay.com r.im rb6.me read.bi readthis.ca reallytinyurl.com redir.ec redirects.ca redirx.com retwt.me ri.ms rickroll.it riz.gd rt.nu ru.ly rubyurl.com rurl.org rww.tw s4c.in s7y.us safe.mn sameurl.com sdut.us shar.es shink.de shorl.com short.ie short.to shortlinks.co.uk shorturl.com shout.to show.my shrinkify.com shrinkr.com shrt.fr shrt.st shrten.com shrunkin.com simurl.com slate.me smallr.com smsh.me smurl.name sn.im snipr.com snipurl.com snurl.com sp2.ro spedr.com srnk.net srs.li starturl.com stks.co su.pr surl.co.uk surl.hu t.cn t.co t.lh.com ta.gd tbd.ly tcrn.ch tgr.me tgr.ph tighturl.com tiniuri.com tiny.cc tiny.ly tiny.pl tinylink.in tinyuri.ca tinyurl.com tk. tl.gd tmi.me tnij.org tnw.to tny.com to.ly togoto.us totc.us toysr.us tpm.ly tr.im tra.kz trunc.it twhub.com twirl.at twitclicks.com twitterurl.net twitterurl.org twiturl.de twurl.cc twurl.nl u.mavrev.com u.nu u76.org ub0.cc ulu.lu updating.me ur1.ca url.az url.co.uk url.ie url360.me url4.eu urlborg.com urlbrief.com urlcover.com urlcut.com urlenco.de urli.nl urls.im urlshorteningservicefortwitter.com urlx.ie urlzen.com usat.ly use.my vb.ly vevo.ly vgn.am vl.am vm.lc w55.de wapo.st wapurl.co.uk wipi.es wp.me x.vu xr.com xrl.in xrl.us xurl.es xurl.jp y.ahoo.it yatuc.com ye.pe yep.it yfrog.com yhoo.it yiyd.com youtu.be yuarel.com z0p.de zi.ma zi.mu zipmyurl.com zud.me zurl.ws zz.gd zzang.kr ›.ws ✩.ws ✿.ws ❥.ws ➔.ws ➞.ws ➡.ws ➨.ws ➯.ws ➹.ws ➽.ws".split(" ");
10return 0===b("#jqoembeddata").length&&b('<span id="jqoembeddata"></span>').appendTo("body"),this.each(function(){var c=b(this),f=a&&(!a.indexOf("http://")||!a.indexOf("https://"))?a:c.attr("href"),g,l,m,n,o;if(h?j.onEmbed=h:j.onEmbed||(j.onEmbed=function(a){b.fn.oembed.insertCode(this,j.embedMethod,a)}),null!==f&&void 0!==f){l=0;for(m=d.length;l<m;l++)if(n=RegExp("://"+d[l]+"/","i"),null!==f.match(n))return o=b.extend({url:"http://api.longurl.org/v2/expand",dataType:"jsonp",data:{url:f,format:"json"},
11success:function(a){f=a["long-url"];g=b.fn.oembed.getOEmbedProvider(a["long-url"]);null!==g?(g.params=p(j[g.name])||{},g.maxWidth=j.maxWidth,g.maxHeight=j.maxHeight,e(c,f,g)):j.onProviderNotFound.call(c,f)}},j.ajaxOptions||{}),b.ajax(o),c;g=b.fn.oembed.getOEmbedProvider(f);null!==g?(g.params=p(j[g.name])||{},g.maxWidth=j.maxWidth,g.maxHeight=j.maxHeight,e(c,f,g)):j.onProviderNotFound.call(c,f)}return c})};var j;b.fn.oembed.defaults={maxWidth:null,maxHeight:null,useResponsiveResize:!1,includeHandle:!0,
12embedMethod:"auto",onProviderNotFound:function(){},beforeEmbed:function(){},afterEmbed:function(){},onEmbed:!1,onError:function(){},ajaxOptions:{timeout:2E3}};b.fn.oembed.insertCode=function(a,l,e){if(null!==e)switch("auto"==l&&null!==a.attr("href")?l="append":"auto"==l&&(l="replace"),l){case "replace":a.replaceWith(e.code);break;case "fill":a.html(e.code);break;case "append":a.wrap('<div class="oembedall-container"></div>');l=a.parent();j.includeHandle&&b('<span class="oembedall-closehide">&darr;</span>').insertBefore(a).click(function(){var a=
13encodeURIComponent(b(this).text());b(this).html("%E2%86%91"==a?"&darr;":"&uarr;");b(this).parent().children().last().toggle()});l.append("<br/>");try{e.code.clone().appendTo(l)}catch(d){l.append(e.code)}}};b.fn.oembed.getPhotoCode=function(a,b){var e,d=b.title?b.title:"",c;return d+=b.author_name?" - "+b.author_name:"",d+=b.provider_name?" - "+b.provider_name:"",b.url?e='<div><a href="'+a+"\" target='_blank'><img src=\""+b.url+'" alt="'+d+'"/></a></div>':b.thumbnail_url?(c=b.thumbnail_url.replace("_s",
14"_b"),e='<div><a href="'+a+"\" target='_blank'><img src=\""+c+'" alt="'+d+'"/></a></div>'):e="Flickr"==b.provider_name?'<p><a href="'+a+"\" target='_blank'>"+a+"</a></p>":"<div>Error loading this picture</div>",e};b.fn.oembed.getRichCode=function(a,b){return b.html};b.fn.oembed.getGenericCode=function(a,b){var e='<a href="'+a+'">'+(null!==b.title?b.title:a)+"</a>";return b.html&&(e+="<div>"+b.html+"</div>"),e};b.fn.oembed.getOEmbedProvider=function(a){for(var e,h,d,c=0;c<b.fn.oembed.providers.length;c++){e=
150;for(h=b.fn.oembed.providers[c].urlschemes.length;e<h;e++)if(d=RegExp(b.fn.oembed.providers[c].urlschemes[e],"i"),null!==a.match(d))return b.fn.oembed.providers[c]}return null};b.fn.oembed.OEmbedProvider=function(a,e,h,d,c){this.name=a;this.type=e;this.urlschemes=h;this.apiendpoint=d;this.maxWidth=500;this.maxHeight=400;c=c||{};c.useYQL&&(c.yql="xml"==c.useYQL?{xpath:"//oembed/html",from:"xml",apiendpoint:this.apiendpoint,url:function(a){return this.apiendpoint+"?format=xml&url="+a},datareturn:function(a){return a.html.replace(/.*\[CDATA\[(.*)\]\]>$/,
16"$1")||""}}:{from:"json",apiendpoint:this.apiendpoint,url:function(a){return this.apiendpoint+"?format=json&url="+a},datareturn:function(a){var c,d,e;if("video"!=a.json.type&&(a.json.url||a.json.thumbnail_url)&&!a.json.html.indexOf("iframe"))return'<img src="'+(a.json.url||a.json.thumbnail_url)+'" />';if(a.json.html.indexOf("iframe")){a.json.html.indexOf("allowfullscreen>")&&(a.json.html=a.json.html.replace("allowfullscreen>",'allowfullscreen="false">'));var a=b.parseHTML(a.json.html),f=a[0].width,
17l=a[0].height;return j.maxHeight&&j.maxWidth&&(j.useResponsiveResize?(d=f,e=l,f>j.maxWidth&&(c=j.maxWidth/f,d=j.maxWidth,e=l*c,l*=c,f*=c),l>j.maxHeight&&(c=j.maxHeight/l,e=j.maxHeight,d=f*c),l=e,f=d):(l=j.maxHeight,f=j.maxWidth)),a[0].width=f,a[0].height=l,a[0].outerHTML}return a.json.html||""}},this.apiendpoint=null);for(var f in c)this[f]=c[f];this.format=this.format||"json";this.callbackparameter=this.callbackparameter||"callback";this.embedtag=this.embedtag||{tag:""}};b.fn.updateOEmbedProvider=
18function(a,e,h,d,c){for(var f,g=0;g<b.fn.oembed.providers.length;g++)if(b.fn.oembed.providers[g].name===a&&(null!==e&&(b.fn.oembed.providers[g].type=e),null!==h&&(b.fn.oembed.providers[g].urlschemes=h),null!==d&&(b.fn.oembed.providers[g].apiendpoint=d),null!==c))for(f in b.fn.oembed.providers[g].extraSettings=c,c)null!==c[f]&&(b.fn.oembed.providers[g][f]=c[f])};b.fn.oembed.providers=[new b.fn.oembed.OEmbedProvider("youtube","video",["youtube\\.com/watch.+v=[\\w-]+&?","youtu\\.be/[\\w-]+","youtube.com/embed"],
19m()+"www.youtube.com/embed/$1?wmode=transparent",{templateRegex:/.*(?:v\=|be\/|embed\/)([\w\-]+)&?.*/,embedtag:{tag:"iframe",width:"425",height:"349"}}),new b.fn.oembed.OEmbedProvider("youtubeiframe","video",["youtube.com/embed"],"$1?wmode=transparent",{templateRegex:/(.*)/,embedtag:{tag:"iframe",width:"425",height:"349"}}),new b.fn.oembed.OEmbedProvider("wistia","video",["wistia.com/m/.+","wistia.com/embed/.+","wi.st/m/.+","wi.st/embed/.+"],"http://fast.wistia.com/oembed",{useYQL:"json"}),new b.fn.oembed.OEmbedProvider("xtranormal",
20"video",["xtranormal\\.com/watch/.+"],"http://www.xtranormal.com/xtraplayr/$1/$2",{templateRegex:/.*com\/watch\/([\w\-]+)\/([\w\-]+).*/,embedtag:{tag:"iframe",width:"320",height:"269"}}),new b.fn.oembed.OEmbedProvider("scivee","video",["scivee.tv/node/.+"],"http://www.scivee.tv/flash/embedCast.swf?",{templateRegex:/.*tv\/node\/(.+)/,embedtag:{width:"480",height:"400",flashvars:"id=$1&type=3"}}),new b.fn.oembed.OEmbedProvider("veoh","video",["veoh.com/watch/.+"],"http://www.veoh.com/swf/webplayer/WebPlayer.swf?version=AFrontend.5.7.0.1337&permalinkId=$1&player=videodetailsembedded&videoAutoPlay=0&id=anonymous",
21{templateRegex:/.*watch\/([^\?]+).*/,embedtag:{width:"410",height:"341"}}),new b.fn.oembed.OEmbedProvider("gametrailers","video",["gametrailers\\.com/video/.+"],"http://media.mtvnservices.com/mgid:moses:video:gametrailers.com:$2",{templateRegex:/.*com\/video\/([\w\-]+)\/([\w\-]+).*/,embedtag:{width:"512",height:"288"}}),new b.fn.oembed.OEmbedProvider("funnyordie","video",["funnyordie\\.com/videos/.+"],"http://player.ordienetworks.com/flash/fodplayer.swf?",{templateRegex:/.*videos\/([^\/]+)\/([^\/]+)?/,
22embedtag:{width:512,height:328,flashvars:"key=$1"}}),new b.fn.oembed.OEmbedProvider("colledgehumour","video",["collegehumor\\.com/video/.+"],"http://www.collegehumor.com/moogaloop/moogaloop.swf?clip_id=$1&use_node_id=true&fullscreen=1",{templateRegex:/.*video\/([^\/]+).*/,embedtag:{width:600,height:338}}),new b.fn.oembed.OEmbedProvider("metacafe","video",["metacafe\\.com/watch/.+"],"http://www.metacafe.com/fplayer/$1/$2.swf",{templateRegex:/.*watch\/(\d+)\/(\w+)\/.*/,embedtag:{width:400,height:345}}),
23new b.fn.oembed.OEmbedProvider("bambuser","video",["bambuser\\.com/channel/.*/broadcast/.*"],"http://static.bambuser.com/r/player.swf?vid=$1",{templateRegex:/.*bambuser\.com\/channel\/.*\/broadcast\/(\w+).*/,embedtag:{width:512,height:339}}),new b.fn.oembed.OEmbedProvider("twitvid","video",["twitvid\\.com/.+"],"http://www.twitvid.com/embed.php?guid=$1&autoplay=0",{templateRegex:/.*twitvid\.com\/(\w+).*/,embedtag:{tag:"iframe",width:480,height:360}}),new b.fn.oembed.OEmbedProvider("aniboom","video",
24["aniboom\\.com/animation-video/.+"],"http://api.aniboom.com/e/$1",{templateRegex:/.*animation-video\/(\d+).*/,embedtag:{width:594,height:334}}),new b.fn.oembed.OEmbedProvider("vzaar","video",["vzaar\\.com/videos/.+","vzaar.tv/.+"],"http://view.vzaar.com/$1/player?",{templateRegex:/.*\/(\d+).*/,embedtag:{tag:"iframe",width:576,height:324}}),new b.fn.oembed.OEmbedProvider("snotr","video",["snotr\\.com/video/.+"],"http://www.snotr.com/embed/$1",{templateRegex:/.*\/(\d+).*/,embedtag:{tag:"iframe",width:400,
25height:330,nocache:1}}),new b.fn.oembed.OEmbedProvider("youku","video",["v.youku.com/v_show/id_.+"],"http://player.youku.com/player.php/sid/$1/v.swf",{templateRegex:/.*id_(.+)\.html.*/,embedtag:{width:480,height:400,nocache:1}}),new b.fn.oembed.OEmbedProvider("tudou","video",["tudou.com/programs/view/.+/"],"http://www.tudou.com/v/$1/v.swf",{templateRegex:/.*view\/(.+)\//,embedtag:{width:480,height:400,nocache:1}}),new b.fn.oembed.OEmbedProvider("embedr","video",["embedr\\.com/playlist/.+"],"http://embedr.com/swf/slider/$1/425/520/default/false/std?",
26{templateRegex:/.*playlist\/([^\/]+).*/,embedtag:{width:425,height:520}}),new b.fn.oembed.OEmbedProvider("blip","video",["blip\\.tv/.+"],"http://blip.tv/oembed/"),new b.fn.oembed.OEmbedProvider("minoto-video","video",["http://api.minoto-video.com/publishers/.+/videos/.+","http://dashboard.minoto-video.com/main/video/details/.+","http://embed.minoto-video.com/.+"],"http://api.minoto-video.com/services/oembed.json",{useYQL:"json"}),new b.fn.oembed.OEmbedProvider("animoto","video",["animoto.com/play/.+"],
27"http://animoto.com/services/oembed"),new b.fn.oembed.OEmbedProvider("hulu","video",["hulu\\.com/watch/.*"],"http://www.hulu.com/api/oembed.json"),new b.fn.oembed.OEmbedProvider("ustream","video",["ustream\\.tv/recorded/.*"],"http://www.ustream.tv/oembed",{useYQL:"json"}),new b.fn.oembed.OEmbedProvider("videojug","video",["videojug\\.com/(film|payer|interview).*"],"http://www.videojug.com/oembed.json",{useYQL:"json"}),new b.fn.oembed.OEmbedProvider("sapo","video",["videos\\.sapo\\.pt/.*"],"http://videos.sapo.pt/oembed",
28{useYQL:"json"}),new b.fn.oembed.OEmbedProvider("vodpod","video",["vodpod.com/watch/.*"],"http://vodpod.com/oembed.js",{useYQL:"json"}),new b.fn.oembed.OEmbedProvider("vimeo","video",["www.vimeo.com/groups/.*/videos/.*","www.vimeo.com/.*","vimeo.com/groups/.*/videos/.*","vimeo.com/.*"],"//vimeo.com/api/oembed.json"),new b.fn.oembed.OEmbedProvider("dailymotion","video",["dailymotion\\.com/.+"],"http://www.dailymotion.com/services/oembed"),new b.fn.oembed.OEmbedProvider("5min","video",["www\\.5min\\.com/.+"],
29"http://api.5min.com/oembed.xml",{useYQL:"xml"}),new b.fn.oembed.OEmbedProvider("National Film Board of Canada","video",["nfb\\.ca/film/.+"],"http://www.nfb.ca/remote/services/oembed/",{useYQL:"json"}),new b.fn.oembed.OEmbedProvider("qik","video",["qik\\.com/\\w+"],"http://qik.com/api/oembed.json",{useYQL:"json"}),new b.fn.oembed.OEmbedProvider("revision3","video",["revision3\\.com"],"http://revision3.com/api/oembed/"),new b.fn.oembed.OEmbedProvider("dotsub","video",["dotsub\\.com/view/.+"],"http://dotsub.com/services/oembed",
30{useYQL:"json"}),new b.fn.oembed.OEmbedProvider("clikthrough","video",["clikthrough\\.com/theater/video/\\d+"],"http://clikthrough.com/services/oembed"),new b.fn.oembed.OEmbedProvider("Kinomap","video",["kinomap\\.com/.+"],"http://www.kinomap.com/oembed"),new b.fn.oembed.OEmbedProvider("VHX","video",["vhx.tv/.+"],"http://vhx.tv/services/oembed.json"),new b.fn.oembed.OEmbedProvider("bambuser","video",["bambuser.com/.+"],"http://api.bambuser.com/oembed/iframe.json"),new b.fn.oembed.OEmbedProvider("justin.tv",
31"video",["justin.tv/.+"],"http://api.justin.tv/api/embed/from_url.json",{useYQL:"json"}),new b.fn.oembed.OEmbedProvider("official.fm","rich",["official.fm/.+"],"http://official.fm/services/oembed",{useYQL:"json"}),new b.fn.oembed.OEmbedProvider("chirbit","rich",["chirb.it/.+"],"http://chirb.it/oembed.json",{useYQL:"json"}),new b.fn.oembed.OEmbedProvider("Huffduffer","rich",["huffduffer.com/[-.\\w@]+/\\d+"],"http://huffduffer.com/oembed"),new b.fn.oembed.OEmbedProvider("Spotify","rich",["open.spotify.com/(track|album|user)/"],
32"https://embed.spotify.com/oembed/"),new b.fn.oembed.OEmbedProvider("shoudio","rich",["shoudio.com/.+","shoud.io/.+"],"http://shoudio.com/api/oembed"),new b.fn.oembed.OEmbedProvider("mixcloud","rich",["mixcloud.com/.+"],m()+"www.mixcloud.com/oembed/",{useYQL:"json"}),new b.fn.oembed.OEmbedProvider("rdio.com","rich",["rd.io/.+","rdio.com"],m()+"www.rdio.com/api/oembed/"),new b.fn.oembed.OEmbedProvider("Soundcloud","rich",["soundcloud.com/.+","snd.sc/.+"],m()+"soundcloud.com/oembed",{format:"js"}),
33new b.fn.oembed.OEmbedProvider("bandcamp","rich",["bandcamp\\.com/album/.+"],null,{yql:{xpath:"//meta[contains(@content, \\'EmbeddedPlayer\\')]",from:"html",datareturn:function(a){return a.meta?'<iframe width="400" height="100" src="'+a.meta.content+'" allowtransparency="true" frameborder="0"></iframe>':!1}}}),new b.fn.oembed.OEmbedProvider("deviantart","photo",["deviantart.com/.+","fav.me/.+","deviantart.com/.+"],"http://backend.deviantart.com/oembed",{format:"jsonp"}),new b.fn.oembed.OEmbedProvider("skitch",
34"photo",["skitch.com/.+"],null,{yql:{xpath:"json",from:"json",url:function(a){return"http://skitch.com/oembed/?format=json&url="+a},datareturn:function(a){return b.fn.oembed.getPhotoCode(a.json.url,a.json)}}}),new b.fn.oembed.OEmbedProvider("mobypicture","photo",["mobypicture.com/user/.+/view/.+","moby.to/.+"],"http://api.mobypicture.com/oEmbed"),new b.fn.oembed.OEmbedProvider("flickr","photo",["flickr\\.com/photos/.+"],"http://flickr.com/services/oembed",{callbackparameter:"jsoncallback"}),new b.fn.oembed.OEmbedProvider("photobucket",
35"photo",["photobucket\\.com/(albums|groups)/.+"],m()+"photobucket.com/oembed/"),new b.fn.oembed.OEmbedProvider("instagram","photo",["instagr\\.?am(\\.com)?/.+"],m()+"api.instagram.com/oembed"),new b.fn.oembed.OEmbedProvider("SmugMug","photo",["smugmug.com/[-.\\w@]+/.+"],"http://api.smugmug.com/services/oembed/"),new b.fn.oembed.OEmbedProvider("dribbble","photo",["dribbble.com/shots/.+"],"http://api.dribbble.com/shots/$1?callback=?",{templateRegex:/.*shots\/([\d]+).*/,templateData:function(a){return a.image_teaser_url?
36'<img src="'+a.image_teaser_url+'"/>':!1}}),new b.fn.oembed.OEmbedProvider("chart.ly","photo",["chart\\.ly/[a-z0-9]{6,8}"],"http://chart.ly/uploads/large_$1.png",{templateRegex:/.*ly\/([^\/]+).*/,embedtag:{tag:"img"},nocache:1}),new b.fn.oembed.OEmbedProvider("circuitlab","photo",["circuitlab.com/circuit/.+"],"https://www.circuitlab.com/circuit/$1/screenshot/540x405/",{templateRegex:/.*circuit\/([^\/]+).*/,embedtag:{tag:"img"},nocache:1}),new b.fn.oembed.OEmbedProvider("23hq","photo",["23hq.com/[-.\\w@]+/photo/.+"],
37"http://www.23hq.com/23/oembed",{useYQL:"json"}),new b.fn.oembed.OEmbedProvider("img.ly","photo",["img\\.ly/.+"],"http://img.ly/show/thumb/$1",{templateRegex:/.*ly\/([^\/]+).*/,embedtag:{tag:"img"},nocache:1}),new b.fn.oembed.OEmbedProvider("twitgoo.com","photo",["twitgoo\\.com/.+"],"http://twitgoo.com/show/thumb/$1",{templateRegex:/.*com\/([^\/]+).*/,embedtag:{tag:"img"},nocache:1}),new b.fn.oembed.OEmbedProvider("imgur.com","photo",["imgur\\.com/gallery/.+"],m()+"imgur.com/$1l.jpg",{templateRegex:/.*gallery\/([^\/]+).*/,
38embedtag:{tag:"img"},nocache:1}),new b.fn.oembed.OEmbedProvider("visual.ly","rich",["visual\\.ly/.+"],null,{yql:{xpath:"//a[@id=\\'gc_article_graphic_image\\']/img",from:"htmlstring"}}),new b.fn.oembed.OEmbedProvider("gravtar","photo",["mailto:.+"],null,{templateRegex:/mailto:([^\/]+).*/,template:function(a,b){return'<img src="http://gravatar.com/avatar/'+b.md5()+'.jpg" alt="on Gravtar" class="jqoaImg">'}}),new b.fn.oembed.OEmbedProvider("twitter","rich",["twitter.com/.+"],"https://api.twitter.com/1/statuses/oembed.json?id="),
39new b.fn.oembed.OEmbedProvider("gmep","rich",["gmep.imeducate.com/.*","gmep.org/.*"],"http://gmep.org/oembed.json"),new b.fn.oembed.OEmbedProvider("urtak","rich",["urtak.com/(u|clr)/.+"],"http://oembed.urtak.com/1/oembed"),new b.fn.oembed.OEmbedProvider("cacoo","rich",["cacoo.com/.+"],"http://cacoo.com/oembed.json"),new b.fn.oembed.OEmbedProvider("dailymile","rich",["dailymile.com/people/.*/entries/.*"],"http://api.dailymile.com/oembed"),new b.fn.oembed.OEmbedProvider("dipity","rich",["dipity.com/timeline/.+"],
40"http://www.dipity.com/oembed/timeline/",{useYQL:"json"}),new b.fn.oembed.OEmbedProvider("sketchfab","rich",["sketchfab.com/show/.+"],"http://sketchfab.com/oembed",{useYQL:"json"}),new b.fn.oembed.OEmbedProvider("speakerdeck","rich",["speakerdeck.com/.+"],"http://speakerdeck.com/oembed.json",{useYQL:"json"}),new b.fn.oembed.OEmbedProvider("popplet","rich",["popplet.com/app/.*"],"http://popplet.com/app/Popplet_Alpha.swf?page_id=$1&em=1",{templateRegex:/.*#\/([^\/]+).*/,embedtag:{width:460,height:460}}),
41new b.fn.oembed.OEmbedProvider("pearltrees","rich",["pearltrees.com/.*"],"http://cdn.pearltrees.com/s/embed/getApp?",{templateRegex:/.*N-f=1_(\d+).*N-p=(\d+).*/,embedtag:{width:460,height:460,flashvars:"lang=en_US&amp;embedId=pt-embed-$1-693&amp;treeId=$1&amp;pearlId=$2&amp;treeTitle=Diagrams%2FVisualization&amp;site=www.pearltrees.com%2FF"}}),new b.fn.oembed.OEmbedProvider("prezi","rich",["prezi.com/.*"],"http://prezi.com/bin/preziloader.swf?",{templateRegex:/.*com\/([^\/]+)\/.*/,embedtag:{width:550,
42height:400,flashvars:"prezi_id=$1&amp;lock_to_path=0&amp;color=ffffff&amp;autoplay=no&amp;autohide_ctrls=0"}}),new b.fn.oembed.OEmbedProvider("tourwrist","rich",["tourwrist.com/tours/.+"],null,{templateRegex:/.*tours.([\d]+).*/,template:function(a,b){return setTimeout(function(){loadEmbeds&&loadEmbeds()},2E3),"<div id='"+b+"' class='tourwrist-tour-embed direct'></div> <script type='text/javascript' src='http://tourwrist.com/tour_embed.js'><\/script>"}}),new b.fn.oembed.OEmbedProvider("meetup","rich",
43["meetup\\.(com|ps)/.+"],m()+"api.meetup.com/oembed"),new b.fn.oembed.OEmbedProvider("ebay","rich",["ebay\\.*"],m()+"togo.ebay.com/togo/togo.swf?2008013100",{templateRegex:/.*\/([^\/]+)\/(\d{10,13}).*/,embedtag:{width:355,height:300,flashvars:"base=http://togo.ebay.com/togo/&lang=en-us&mode=normal&itemid=$2&query=$1"}}),new b.fn.oembed.OEmbedProvider("wikipedia","rich",["wikipedia.org/wiki/.+"],"http://$1.wikipedia.org/w/api.php?action=parse&page=$2&format=json&section=0&callback=?",{templateRegex:/.*\/\/([\w]+).*\/wiki\/([^\/]+).*/,
44templateData:function(a){if(!a.parse)return!1;var b=a.parse.text["*"].replace(/href="\/wiki/g,'href="http://en.wikipedia.org/wiki');return'<div id="content"><h3><a class="nav-link" href="http://en.wikipedia.org/wiki/'+a.parse.displaytitle+'">'+a.parse.displaytitle+"</a></h3>"+b+"</div>"}}),new b.fn.oembed.OEmbedProvider("imdb","rich",["imdb.com/title/.+"],"http://www.imdbapi.com/?i=$1&callback=?",{templateRegex:/.*\/title\/([^\/]+).*/,templateData:function(a){return a.Title?'<div id="content"><h3><a class="nav-link" href="http://imdb.com/title/'+
45a.ID+'/">'+a.Title+"</a> ("+a.Year+")</h3><p>Starring: "+a.Actors+'</p><div id="photo-wrap" style="margin: auto;width:600px;height:450px;"><img class="photo" id="photo-display" src="'+a.Poster+'" alt="'+a.Title+'"></div> <div id="view-photo-caption">'+a.Plot+"</div></div>":!1}}),new b.fn.oembed.OEmbedProvider("livejournal","rich",["livejournal.com/"],"http://ljpic.seacrow.com/json/$2$4?jsonp=?",{templateRegex:/(http:\/\/(((?!users).)+)\.livejournal\.com|.*users\.livejournal\.com\/([^\/]+)).*/,templateData:function(a){return!!a.username&&
46'<div><img src="'+a.image+'" align="left" style="margin-right: 1em;" /><span class="oembedall-ljuser"><a href="http://'+a.username+'.livejournal.com/profile"><img src="http://www.livejournal.com/img/userinfo.gif" alt="[info]" width="17" height="17" /></a><a href="http://'+a.username+'.livejournal.com/">'+a.username+"</a></span><br />"+a.name+"</div>"}}),new b.fn.oembed.OEmbedProvider("circuitbee","rich",["circuitbee\\.com/circuit/view/.+"],"http://c.circuitbee.com/build/r/schematic-embed.html?id=$1",
47{templateRegex:/.*circuit\/view\/(\d+).*/,embedtag:{tag:"iframe",width:"500",height:"350"}}),new b.fn.oembed.OEmbedProvider("googlecalendar","rich",["www.google.com/calendar/embed?.+"],"$1",{templateRegex:/(.*)/,embedtag:{tag:"iframe",width:"800",height:"600"}}),new b.fn.oembed.OEmbedProvider("jsfiddle","rich",["jsfiddle.net/[^/]+/?"],"http://jsfiddle.net/$1/embedded/result,js,resources,html,css/?",{templateRegex:/.*net\/([^\/]+).*/,embedtag:{tag:"iframe",width:"100%",height:"300"}}),new b.fn.oembed.OEmbedProvider("jsbin",
48"rich",["jsbin.com/.+"],"http://jsbin.com/$1/?",{templateRegex:/.*com\/([^\/]+).*/,embedtag:{tag:"iframe",width:"100%",height:"300"}}),new b.fn.oembed.OEmbedProvider("jotform","rich",["form.jotform.co/form/.+"],"$1?",{templateRegex:/(.*)/,embedtag:{tag:"iframe",width:"100%",height:"507"}}),new b.fn.oembed.OEmbedProvider("reelapp","rich",["reelapp\\.com/.+"],"http://www.reelapp.com/$1/embed",{templateRegex:/.*com\/(\S{6}).*/,embedtag:{tag:"iframe",width:"400",height:"338"}}),new b.fn.oembed.OEmbedProvider("linkedin",
49"rich",["linkedin.com/pub/.+"],"https://www.linkedin.com/cws/member/public_profile?public_profile_url=$1&format=inline&isFramed=true",{templateRegex:/(.*)/,embedtag:{tag:"iframe",width:"368px",height:"auto"}}),new b.fn.oembed.OEmbedProvider("timetoast","rich",["timetoast.com/timelines/[0-9]+"],"http://www.timetoast.com/flash/TimelineViewer.swf?passedTimelines=$1",{templateRegex:/.*timelines\/([0-9]*)/,embedtag:{width:550,height:400,nocache:1}}),new b.fn.oembed.OEmbedProvider("pastebin","rich",["pastebin\\.com/[\\S]{8}"],
50"http://pastebin.com/embed_iframe.php?i=$1",{templateRegex:/.*\/(\S{8}).*/,embedtag:{tag:"iframe",width:"100%",height:"auto"}}),new b.fn.oembed.OEmbedProvider("mixlr","rich",["mixlr.com/.+"],"http://mixlr.com/embed/$1?autoplay=ae",{templateRegex:/.*com\/([^\/]+).*/,embedtag:{tag:"iframe",width:"100%",height:"auto"}}),new b.fn.oembed.OEmbedProvider("pastie","rich",["pastie\\.org/pastes/.+"],null,{yql:{xpath:'//pre[@class="textmate-source"]'}}),new b.fn.oembed.OEmbedProvider("github","rich",["gist.github.com/.+"],
51"https://github.com/api/oembed"),new b.fn.oembed.OEmbedProvider("github","rich",["github.com/[-.\\w@]+/[-.\\w@]+"],"https://api.github.com/repos/$1/$2?callback=?",{templateRegex:/.*\/([^\/]+)\/([^\/]+).*/,templateData:function(a){return a.data.html_url?'<div class="oembedall-githubrepos"><ul class="oembedall-repo-stats"><li>'+a.data.language+'</li><li class="oembedall-watchers"><a title="Watchers" href="'+a.data.html_url+'/watchers">&#x25c9; '+a.data.watchers+'</a></li><li class="oembedall-forks"><a title="Forks" href="'+
52a.data.html_url+'/network">&#x0265; '+a.data.forks+'</a></li></ul><h3><a href="'+a.data.html_url+'">'+a.data.name+'</a></h3><div class="oembedall-body"><p class="oembedall-description">'+a.data.description+'</p><p class="oembedall-updated-at">Last updated: '+a.data.pushed_at+"</p></div></div>":!1}}),new b.fn.oembed.OEmbedProvider("facebook","rich",["facebook.com/(people/[^\\/]+/\\d+|[^\\/]+$)"],"https://graph.facebook.com/$2$3/?callback=?",{templateRegex:/.*facebook.com\/(people\/[^\/]+\/(\d+).*|([^\/]+$))/,
53templateData:function(a){if(!a.id)return!1;var b='<div class="oembedall-facebook1"><div class="oembedall-facebook2"><a href="http://www.facebook.com/">facebook</a> ';return b+=a.from?'<a href="http://www.facebook.com/'+a.from.id+'">'+a.from.name+"</a>":a.link?'<a href="'+a.link+'">'+a.name+"</a>":a.username?'<a href="http://www.facebook.com/'+a.username+'">'+a.name+"</a>":'<a href="http://www.facebook.com/'+a.id+'">'+a.name+"</a>",b+='</div><div class="oembedall-facebookBody"><div class="contents">',
54b+=a.picture?'<a href="'+a.link+'"><img src="'+a.picture+'"></a>':'<img src="https://graph.facebook.com/'+a.id+'/picture">',a.from&&(b+='<a href="'+a.link+'">'+a.name+"</a>"),a.founded&&(b+="Founded: <strong>"+a.founded+"</strong><br>"),a.category&&(b+="Category: <strong>"+a.category+"</strong><br>"),a.website&&(b+='Website: <strong><a href="'+a.website+'">'+a.website+"</a></strong><br>"),a.gender&&(b+="Gender: <strong>"+a.gender+"</strong><br>"),a.description&&(b+=a.description+"<br>"),b+"</div></div>"}}),
55new b.fn.oembed.OEmbedProvider("stackoverflow","rich",["stackoverflow.com/questions/[\\d]+"],"http://api.stackoverflow.com/1.1/questions/$1?body=true&jsonp=?",{templateRegex:/.*questions\/([\d]+).*/,templateData:function(a){if(!a.questions)return!1;var a=a.questions[0],e=b(a.body).text(),e='<div class="oembedall-stoqembed"><div class="oembedall-statscontainer"><div class="oembedall-statsarrow"></div><div class="oembedall-stats"><div class="oembedall-vote"><div class="oembedall-votes"><span class="oembedall-vote-count-post"><strong>'+
56(a.up_vote_count-a.down_vote_count)+'</strong></span><div class="oembedall-viewcount">vote(s)</div></div></div><div class="oembedall-status"><strong>'+a.answer_count+'</strong>answer</div></div><div class="oembedall-views">'+a.view_count+' view(s)</div></div><div class="oembedall-summary"><h3><a class="oembedall-question-hyperlink" href="http://stackoverflow.com/questions/'+a.question_id+'/">'+a.title+'</a></h3><div class="oembedall-excerpt">'+e.substring(0,100)+'...</div><div class="oembedall-tags">';
57for(i in a.tags)e+='<a title="" class="oembedall-post-tag" href="http://stackoverflow.com/questions/tagged/'+a.tags[i]+'">'+a.tags[i]+"</a>";return e+('</div><div class="oembedall-fr"><div class="oembedall-user-info"><div class="oembedall-user-gravatar32"><a href="http://stackoverflow.com/users/'+a.owner.user_id+"/"+a.owner.display_name+'"><img width="32" height="32" alt="" src="http://www.gravatar.com/avatar/'+a.owner.email_hash+'?s=32&amp;d=identicon&amp;r=PG"></a></div><div class="oembedall-user-details"><a href="http://stackoverflow.com/users/'+
58a.owner.user_id+"/"+a.owner.display_name+'">'+a.owner.display_name+'</a><br><span title="reputation score" class="oembedall-reputation-score">'+a.owner.reputation+"</span></div></div></div></div></div>")}}),new b.fn.oembed.OEmbedProvider("wordpress","rich",["wordpress\\.com/.+","blogs\\.cnn\\.com/.+","techcrunch\\.com/.+","wp\\.me/.+"],"http://public-api.wordpress.com/oembed/1.0/?for=jquery-oembed-all"),new b.fn.oembed.OEmbedProvider("screenr","rich",["screenr.com"],"http://www.screenr.com/embed/$1",
59{templateRegex:/.*\/([^\/]+).*/,embedtag:{tag:"iframe",width:"650",height:396}}),new b.fn.oembed.OEmbedProvider("gigpans","rich",["gigapan\\.org/[-.\\w@]+/\\d+"],"http://gigapan.org/gigapans/$1/options/nosnapshots/iframe/flash.html",{templateRegex:/.*\/(\d+)\/?.*/,embedtag:{tag:"iframe",width:"100%",height:400}}),new b.fn.oembed.OEmbedProvider("scribd","rich",["scribd\\.com/.+"],m()+"www.scribd.com/embeds/$1/content?start_page=1&view_mode=list",{templateRegex:/.*doc\/([^\/]+).*/,embedtag:{tag:"iframe",
60width:"100%",height:600}}),new b.fn.oembed.OEmbedProvider("kickstarter","rich",["kickstarter\\.com/projects/.+"],"$1/widget/card.html",{templateRegex:/([^\?]+).*/,embedtag:{tag:"iframe",width:"220",height:380}}),new b.fn.oembed.OEmbedProvider("amazon","rich",["amzn.com/B+","amazon.com.*/(B\\S+)($|\\/.*)"],m()+"rcm.amazon.com/e/cm?t=_APIKEY_&o=1&p=8&l=as1&asins=$1&ref=qf_br_asin_til&fc1=000000&IS2=1&lt1=_blank&m=amazon&lc1=0000FF&bc1=000000&bg1=FFFFFF&f=ifr",{apikey:!0,templateRegex:/.*\/(B[0-9A-Z]+)($|\/.*)/,
61embedtag:{tag:"iframe",width:"120px",height:"240px"}}),new b.fn.oembed.OEmbedProvider("slideshare","rich",["slideshare.net"],m()+"www.slideshare.net/api/oembed/2",{format:"jsonp"}),new b.fn.oembed.OEmbedProvider("roomsharejp","rich",["roomshare\\.jp/(en/)?post/.*"],"http://roomshare.jp/oembed.json"),new b.fn.oembed.OEmbedProvider("lanyard","rich",["lanyrd.com/\\d+/.+"],null,{yql:{xpath:'(//div[@class="primary"])[1]',from:"htmlstring",datareturn:function(a){return a.result?'<div class="oembedall-lanyard">'+
62a.result+"</div>":!1}}}),new b.fn.oembed.OEmbedProvider("asciiartfarts","rich",["asciiartfarts.com/\\d+.html"],null,{yql:{xpath:"//pre/font",from:"htmlstring",datareturn:function(a){return a.result?'<pre style="background-color:000;">'+a.result+"</div>":!1}}}),new b.fn.oembed.OEmbedProvider("opengraph","rich",[".*"],null,{yql:{xpath:"//meta|//title|//link",from:"html",datareturn:function(a){var e,h,d;return(!a["og:title"]&&a.title&&a.description&&(a["og:title"]=a.title),!a["og:title"]&&!a.title)?
63!1:(e=b("<p/>"),a["og:video"]?(h=b('<embed src="'+a["og:video"]+'"/>'),h.attr("type",a["og:video:type"]||"application/x-shockwave-flash").css("max-height",j.maxHeight||"auto").css("max-width",j.maxWidth||"auto"),a["og:video:width"]&&h.attr("width",a["og:video:width"]),a["og:video:height"]&&h.attr("height",a["og:video:height"]),e.append(h)):a["og:image"]&&(d=b('<img src="'+a["og:image"]+'">'),d.css("max-height",j.maxHeight||"auto").css("max-width",j.maxWidth||"auto"),a["og:image:width"]&&d.attr("width",
64a["og:image:width"]),a["og:image:height"]&&d.attr("height",a["og:image:height"]),e.append(d)),a["og:title"]&&e.append("<b>"+a["og:title"]+"</b><br/>"),a["og:description"]?e.append(a["og:description"]+"<br/>"):a.description&&e.append(a.description+"<br/>"),e)}}})]})(jQuery);
65String.prototype.md5=function(){var b=function(b,m){var j=(b&65535)+(m&65535);return(b>>16)+(m>>16)+(j>>16)<<16|j&65535},m=function(e,m,j,a,l,h){e=b(b(m,e),b(a,h));return b(e<<l|e>>>32-l,j)},o=function(b,p,j,a,l,h,d){return m(p&j|~p&a,b,p,l,h,d)},q=function(b,p,j,a,l,h,d){return m(p&a|j&~a,b,p,l,h,d)},n=function(b,p,j,a,l,h,d){return m(j^(p|~a),b,p,l,h,d)};return function(b){for(var m="",j=4*b.length,a=0;a<j;a++)m+="0123456789abcdef".charAt(b[a>>2]>>8*(a%4)+4&15)+"0123456789abcdef".charAt(b[a>>2]>>
668*(a%4)&15);return m}(function(e){for(var p,j,a,l,h=e.length,d=1732584193,c=-271733879,f=-1732584194,g=271733878,k=0;k<h;k+=16)p=d,j=c,a=f,l=g,d=o(d,c,f,g,e[k+0],7,-680876936),g=o(g,d,c,f,e[k+1],12,-389564586),f=o(f,g,d,c,e[k+2],17,606105819),c=o(c,f,g,d,e[k+3],22,-1044525330),d=o(d,c,f,g,e[k+4],7,-176418897),g=o(g,d,c,f,e[k+5],12,1200080426),f=o(f,g,d,c,e[k+6],17,-1473231341),c=o(c,f,g,d,e[k+7],22,-45705983),d=o(d,c,f,g,e[k+8],7,1770035416),g=o(g,d,c,f,e[k+9],12,-1958414417),f=o(f,g,d,c,e[k+10],
6717,-42063),c=o(c,f,g,d,e[k+11],22,-1990404162),d=o(d,c,f,g,e[k+12],7,1804603682),g=o(g,d,c,f,e[k+13],12,-40341101),f=o(f,g,d,c,e[k+14],17,-1502002290),c=o(c,f,g,d,e[k+15],22,1236535329),d=q(d,c,f,g,e[k+1],5,-165796510),g=q(g,d,c,f,e[k+6],9,-1069501632),f=q(f,g,d,c,e[k+11],14,643717713),c=q(c,f,g,d,e[k+0],20,-373897302),d=q(d,c,f,g,e[k+5],5,-701558691),g=q(g,d,c,f,e[k+10],9,38016083),f=q(f,g,d,c,e[k+15],14,-660478335),c=q(c,f,g,d,e[k+4],20,-405537848),d=q(d,c,f,g,e[k+9],5,568446438),g=q(g,d,c,f,e[k+
6814],9,-1019803690),f=q(f,g,d,c,e[k+3],14,-187363961),c=q(c,f,g,d,e[k+8],20,1163531501),d=q(d,c,f,g,e[k+13],5,-1444681467),g=q(g,d,c,f,e[k+2],9,-51403784),f=q(f,g,d,c,e[k+7],14,1735328473),c=q(c,f,g,d,e[k+12],20,-1926607734),d=m(c^f^g,d,c,e[k+5],4,-378558),g=m(d^c^f,g,d,e[k+8],11,-2022574463),f=m(g^d^c,f,g,e[k+11],16,1839030562),c=m(f^g^d,c,f,e[k+14],23,-35309556),d=m(c^f^g,d,c,e[k+1],4,-1530992060),g=m(d^c^f,g,d,e[k+4],11,1272893353),f=m(g^d^c,f,g,e[k+7],16,-155497632),c=m(f^g^d,c,f,e[k+10],23,-1094730640),
69d=m(c^f^g,d,c,e[k+13],4,681279174),g=m(d^c^f,g,d,e[k+0],11,-358537222),f=m(g^d^c,f,g,e[k+3],16,-722521979),c=m(f^g^d,c,f,e[k+6],23,76029189),d=m(c^f^g,d,c,e[k+9],4,-640364487),g=m(d^c^f,g,d,e[k+12],11,-421815835),f=m(g^d^c,f,g,e[k+15],16,530742520),c=m(f^g^d,c,f,e[k+2],23,-995338651),d=n(d,c,f,g,e[k+0],6,-198630844),g=n(g,d,c,f,e[k+7],10,1126891415),f=n(f,g,d,c,e[k+14],15,-1416354905),c=n(c,f,g,d,e[k+5],21,-57434055),d=n(d,c,f,g,e[k+12],6,1700485571),g=n(g,d,c,f,e[k+3],10,-1894986606),f=n(f,g,d,c,
70e[k+10],15,-1051523),c=n(c,f,g,d,e[k+1],21,-2054922799),d=n(d,c,f,g,e[k+8],6,1873313359),g=n(g,d,c,f,e[k+15],10,-30611744),f=n(f,g,d,c,e[k+6],15,-1560198380),c=n(c,f,g,d,e[k+13],21,1309151649),d=n(d,c,f,g,e[k+4],6,-145523070),g=n(g,d,c,f,e[k+11],10,-1120210379),f=n(f,g,d,c,e[k+2],15,718787259),c=n(c,f,g,d,e[k+9],21,-343485551),d=b(d,p),c=b(c,j),f=b(f,a),g=b(g,l);return[d,c,f,g]}(function(b){for(var m=(b.length+8>>6)+1,j=[],a=16*m,l=b.length,h=0;h<a;h++)j.push(0);for(a=0;a<l;a++)j[a>>2]|=(b.charCodeAt(a)&
71255)<<8*(a%4);return j[a>>2]|=128<<8*(a%4),j[16*m-2]=8*l,j}(this)))}; \ No newline at end of file
diff --git a/release/plugins/widget/images/handle.png b/release/plugins/widget/images/handle.png
new file mode 100644
index 0000000..ba8cda5
--- /dev/null
+++ b/release/plugins/widget/images/handle.png
Binary files differ
diff --git a/release/samples/css/samples.css b/release/samples/css/samples.css
index 43e5973..f1973d0 100644
--- a/release/samples/css/samples.css
+++ b/release/samples/css/samples.css
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5@media (max-width: 900px) { 5@media (max-width: 900px) {
@@ -136,7 +136,7 @@ html {
136} 136}
137.navigation-a { 137.navigation-a {
138 height: 30px; 138 height: 30px;
139 background: #3d3d3d; 139 background: #3D3D3D;
140 position: absolute; 140 position: absolute;
141 left: 0; 141 left: 0;
142 right: 0; 142 right: 0;
@@ -197,14 +197,14 @@ html {
197 line-height: 1.13rem; 197 line-height: 1.13rem;
198 line-height: 30px; 198 line-height: 30px;
199 float: left; 199 float: left;
200 color: #dddddd; 200 color: #ddd;
201 font-weight: bold; 201 font-weight: bold;
202 text-decoration: none; 202 text-decoration: none;
203 text-transform: uppercase; 203 text-transform: uppercase;
204} 204}
205.navigation-a ul li a:hover { 205.navigation-a ul li a:hover {
206 cursor: pointer; 206 cursor: pointer;
207 color: #ffffff; 207 color: #fff;
208} 208}
209.icon-navigation-a-github:before, 209.icon-navigation-a-github:before,
210.icon-navigation-a-github:after { 210.icon-navigation-a-github:after {
@@ -282,9 +282,9 @@ html {
282 color: #8a8a8a; 282 color: #8a8a8a;
283} 283}
284.footer-a a { 284.footer-a a {
285 color: #27c0d8; 285 color: #27C0D8;
286 text-decoration: none; 286 text-decoration: none;
287 border-bottom: 1px dotted #27c0d8; 287 border-bottom: 1px dotted #27C0D8;
288} 288}
289.footer-a a:hover { 289.footer-a a:hover {
290 color: #23adc2; 290 color: #23adc2;
@@ -333,7 +333,7 @@ html {
333.content blockquote, 333.content blockquote,
334.content pre { 334.content pre {
335 background: none; 335 background: none;
336 border-left: 4px solid #27c0d8; 336 border-left: 4px solid #27C0D8;
337 padding: 1.5em 2.25em; 337 padding: 1.5em 2.25em;
338} 338}
339.content p a, 339.content p a,
@@ -345,9 +345,9 @@ html {
345.content h3 a, 345.content h3 a,
346.content h4 a, 346.content h4 a,
347.content h5 a { 347.content h5 a {
348 color: #27c0d8; 348 color: #27C0D8;
349 text-decoration: none; 349 text-decoration: none;
350 border-bottom: 1px dotted #27c0d8; 350 border-bottom: 1px dotted #27C0D8;
351} 351}
352.content p a:hover, 352.content p a:hover,
353.content ul a:hover, 353.content ul a:hover,
@@ -422,7 +422,7 @@ html {
422 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.08); 422 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.08);
423 font: inherit; 423 font: inherit;
424 color: inherit; 424 color: inherit;
425 border: 1px solid #d9d9d9; 425 border: 1px solid #D9D9D9;
426 padding: .2em .5em; 426 padding: .2em .5em;
427} 427}
428.content input:focus, 428.content input:focus,
@@ -489,7 +489,7 @@ html {
489} 489}
490.content hr { 490.content hr {
491 border: 0; 491 border: 0;
492 border-top: 4px solid #d9d9d9; 492 border-top: 4px solid #D9D9D9;
493 margin: 1.5em 0; 493 margin: 1.5em 0;
494} 494}
495.content input[type="text"] { 495.content input[type="text"] {
@@ -508,9 +508,9 @@ html {
508 line-height: 1.35rem; 508 line-height: 1.35rem;
509 font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif; 509 font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif;
510 padding: 2px 6px; 510 padding: 2px 6px;
511 -webkit-box-shadow: 0 0 4px #ffffff inset, 0 2px 0 #d9d9d9; 511 -webkit-box-shadow: 0 0 4px #fff inset, 0 2px 0 #D9D9D9;
512 -moz-box-shadow: 0 0 4px #ffffff inset, 0 2px 0 #d9d9d9; 512 -moz-box-shadow: 0 0 4px #fff inset, 0 2px 0 #D9D9D9;
513 box-shadow: 0 0 4px #ffffff inset, 0 2px 0 #d9d9d9; 513 box-shadow: 0 0 4px #fff inset, 0 2px 0 #D9D9D9;
514} 514}
515.content p img { 515.content p img {
516 vertical-align: middle; 516 vertical-align: middle;
@@ -704,7 +704,7 @@ body a.navigation-b ul li a:hover,
704body button.navigation-b ul li a:hover, 704body button.navigation-b ul li a:hover,
705body input.navigation-b ul li a:hover { 705body input.navigation-b ul li a:hover {
706 color: #fff; 706 color: #fff;
707 background: #27c0d8; 707 background: #27C0D8;
708} 708}
709body a.button-a-background:active, 709body a.button-a-background:active,
710body button.button-a-background:active, 710body button.button-a-background:active,
@@ -826,7 +826,7 @@ body input.navigation-b ul li a:hover:hover {
826 line-height: 25.2px; 826 line-height: 25.2px;
827 line-height: 1.57rem; 827 line-height: 1.57rem;
828 font-weight: bold; 828 font-weight: bold;
829 background-color: #27c0d8; 829 background-color: #27C0D8;
830 overflow: hidden; 830 overflow: hidden;
831 display: inline-block; 831 display: inline-block;
832 padding: 0.75em 0.25em; 832 padding: 0.75em 0.25em;
@@ -1004,10 +1004,10 @@ footer > div {
1004 margin-top: 30px; 1004 margin-top: 30px;
1005} 1005}
1006.footer-a { 1006.footer-a {
1007 border-top: 1px solid #d9d9d9; 1007 border-top: 1px solid #D9D9D9;
1008} 1008}
1009.adjoined-top { 1009.adjoined-top {
1010 background-color: #27c0d8; 1010 background-color: #27C0D8;
1011 color: #fff; 1011 color: #fff;
1012} 1012}
1013.adjoined-top .content h1, 1013.adjoined-top .content h1,
@@ -1040,7 +1040,7 @@ footer > div {
1040} 1040}
1041.adjoined-top .content code { 1041.adjoined-top .content code {
1042 font-size: inherit; 1042 font-size: inherit;
1043 color: #27c0d8; 1043 color: #27C0D8;
1044} 1044}
1045.adjoined-bottom { 1045.adjoined-bottom {
1046 position: relative; 1046 position: relative;
@@ -1048,7 +1048,7 @@ footer > div {
1048.adjoined-bottom:before { 1048.adjoined-bottom:before {
1049 z-index: -1; 1049 z-index: -1;
1050 content: ''; 1050 content: '';
1051 background: #27c0d8; 1051 background: #27C0D8;
1052 position: absolute; 1052 position: absolute;
1053 top: 0; 1053 top: 0;
1054 left: 0; 1054 left: 0;
@@ -1091,15 +1091,7 @@ main .grid-container.freed-width {
1091#main #editor { 1091#main #editor {
1092 background: #FFF; 1092 background: #FFF;
1093 padding: 2% 4%; 1093 padding: 2% 4%;
1094 border: dashed 5px #27c0d8; 1094 border: dashed 5px #27C0D8;
1095}
1096div.cke a.cke_button,
1097div.cke .cke_combo_button {
1098 border-bottom: none;
1099}
1100div.cke a.cke_button.cke_combo_button,
1101div.cke .cke_combo_button.cke_combo_button {
1102 border-bottom: 1px solid #a6a6a6;
1103} 1095}
1104#main .adjoined-top:before { 1096#main .adjoined-top:before {
1105 height: 335px; 1097 height: 335px;
@@ -1313,7 +1305,7 @@ div.toolbarModifier .empty > p {
1313div.toolbarModifier > ul { 1305div.toolbarModifier > ul {
1314 padding: 0; 1306 padding: 0;
1315 margin: 0; 1307 margin: 0;
1316 border-top: 1px solid #cccccc; 1308 border-top: 1px solid #ccc;
1317 width: 100%; 1309 width: 100%;
1318} 1310}
1319div.toolbarModifier > ul[data-type="table-header"] { 1311div.toolbarModifier > ul[data-type="table-header"] {
@@ -1336,7 +1328,7 @@ div.toolbarModifier > ul > li[data-type="header"] {
1336} 1328}
1337div.toolbarModifier > ul > li[data-type="group"], 1329div.toolbarModifier > ul > li[data-type="group"],
1338div.toolbarModifier > ul > li[data-type="separator"] { 1330div.toolbarModifier > ul > li[data-type="separator"] {
1339 border-bottom: 1px solid #cccccc; 1331 border-bottom: 1px solid #ccc;
1340} 1332}
1341div.toolbarModifier > ul > li[data-type="subgroup"] { 1333div.toolbarModifier > ul > li[data-type="subgroup"] {
1342 border-top: 1px solid #eee; 1334 border-top: 1px solid #eee;
@@ -1425,7 +1417,7 @@ div.toolbarModifier > ul > li ul li {
1425 line-height: 1; 1417 line-height: 1;
1426} 1418}
1427div.toolbarModifier > ul > li ul li[data-type="subgroup"] { 1419div.toolbarModifier > ul > li ul li[data-type="subgroup"] {
1428 border-top: 1px solid #dddddd; 1420 border-top: 1px solid #ddd;
1429} 1421}
1430div.toolbarModifier > ul > li ul li[data-type="subgroup"]:first-child { 1422div.toolbarModifier > ul > li ul li[data-type="subgroup"]:first-child {
1431 border-top: 0; 1423 border-top: 0;
@@ -1491,7 +1483,7 @@ div.toolbarModifier-hints h3 {
1491 line-height: 2.03rem; 1483 line-height: 2.03rem;
1492 padding: 0.36em 1.5em; 1484 padding: 0.36em 1.5em;
1493 background: #f5f5f5; 1485 background: #f5f5f5;
1494 border-bottom: 1px solid #dddddd; 1486 border-bottom: 1px solid #ddd;
1495 margin-top: 0; 1487 margin-top: 0;
1496 margin-bottom: 1.2em; 1488 margin-bottom: 1.2em;
1497} 1489}
@@ -1512,7 +1504,7 @@ div.toolbarModifier-hints dl dt {
1512 width: 9em; 1504 width: 9em;
1513 clear: both; 1505 clear: both;
1514 text-align: right; 1506 text-align: right;
1515 border-top: 1px solid #dddddd; 1507 border-top: 1px solid #ddd;
1516 padding-left: 1.5em; 1508 padding-left: 1.5em;
1517 padding-right: .1em; 1509 padding-right: .1em;
1518 -webkit-box-sizing: border-box; 1510 -webkit-box-sizing: border-box;
@@ -1637,4 +1629,4 @@ div.toolbarModifier-hints dl dd:after {
1637#help-content { 1629#help-content {
1638 display: none; 1630 display: none;
1639} 1631}
1640/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL25vZGVfbW9kdWxlcy9ja3NvdXJjZS1zYW1wbGVzLWZyYW1ld29yay9jb21wb25lbnRzL2dsb2JhbC9nbG9iYWwubGVzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ja3NvdXJjZS1zYW1wbGVzLWZyYW1ld29yay9jb21wb25lbnRzL2NvcmUvY29yZS5sZXNzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2Nrc291cmNlLXNhbXBsZXMtZnJhbWV3b3JrL2NvbXBvbmVudHMvZ3JpZC9ncmlkLmxlc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvY2tzb3VyY2Utc2FtcGxlcy1mcmFtZXdvcmsvbm9kZV9tb2R1bGVzL2xlc3NoYXQvYnVpbGQvbGVzc2hhdC5sZXNzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2Nrc291cmNlLXNhbXBsZXMtZnJhbWV3b3JrL2NvbXBvbmVudHMvaGVhZGVyLWEvaGVhZGVyLWEubGVzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ja3NvdXJjZS1zYW1wbGVzLWZyYW1ld29yay9jb21wb25lbnRzL25hdmlnYXRpb24tYS9uYXZpZ2F0aW9uLWEubGVzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ja3NvdXJjZS1zYW1wbGVzLWZyYW1ld29yay9jb21wb25lbnRzL25hdmlnYXRpb24tYi9uYXZpZ2F0aW9uLWIubGVzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ja3NvdXJjZS1zYW1wbGVzLWZyYW1ld29yay9jb21wb25lbnRzL2Zvb3Rlci1hL2Zvb3Rlci1hLmxlc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvY2tzb3VyY2Utc2FtcGxlcy1mcmFtZXdvcmsvY29tcG9uZW50cy9jb250ZW50L2NvbnRlbnQubGVzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ja3NvdXJjZS1zYW1wbGVzLWZyYW1ld29yay9jb21wb25lbnRzL2J1dHRvbi1hL2J1dHRvbi1hLmxlc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvY2tzb3VyY2Utc2FtcGxlcy1mcmFtZXdvcmsvY29tcG9uZW50cy9iYWxsb29uLWEvYmFsbG9vbi1hLmxlc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvY2tzb3VyY2Utc2FtcGxlcy1mcmFtZXdvcmsvY29tcG9uZW50cy9pY29uL2ljb24ubGVzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ja3NvdXJjZS1zYW1wbGVzLWZyYW1ld29yay9jb21wb25lbnRzL3N3aXRjaC9zd2l0Y2gubGVzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ja3NvdXJjZS1zYW1wbGVzLWZyYW1ld29yay9jb21wb25lbnRzL3RvZ2dsZXIvdG9nZ2xlci5sZXNzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2Nrc291cmNlLXNhbXBsZXMtZnJhbWV3b3JrL2NvbXBvbmVudHMvbW9kYWwvbW9kYWwubGVzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ja3NvdXJjZS1zYW1wbGVzLWZyYW1ld29yay9jb21wb25lbnRzL2Jhc2ljc2FtcGxlL2NvcmUubGVzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ja3NvdXJjZS1zYW1wbGVzLWZyYW1ld29yay9jb21wb25lbnRzL2Jhc2ljc2FtcGxlL2Fkam9pbmVkLmxlc3MiLCIuLi8uLi9zYW1wbGVzL2xlc3MvY3VzdG9tLmxlc3MiLCIuLi8uLi9zYW1wbGVzL3Rvb2xiYXJjb25maWd1cmF0b3IvbGVzcy90b29sYmFybW9kaWZpZXIubGVzcyIsIi4uLy4uL3NhbXBsZXMvdG9vbGJhcmNvbmZpZ3VyYXRvci9sZXNzL2Jhc2UubGVzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBc0RBLFFBSGlDO0VBeUNoQztJQUNDLHdCQUFBOzs7QUMxRkY7QUFBUztBQUFPO0FBQVM7QUFBWTtBQUFRO0FBQVE7QUFBUTtBQUFRO0FBQU07QUFBTTtBQUFLO0VBQ3JGLGNBQUE7O0FBR0Q7QUFBTTtFQUNMLFNBQUE7RUFDQSxVQUFBO0VBQ0Esd0JETitCLHVDQ00vQjtFQUNBLGdCQUFBO0VBQ0EsY0FBQTs7QUNIQSxZQUFZO0VBQ1gsVUFBQTs7QUFERCxZQUFZO0VBQ1gsVUFBQTs7QUFERCxZQUFZO0VBQ1gsVUFBQTs7QUFERCxZQUFZO0VBQ1gsVUFBQTs7QUFERCxZQUFZO0VBQ1gsVUFBQTs7QUFERCxZQUFZO0VBQ1gsVUFBQTs7QUFERCxZQUFZO0VBQ1gsVUFBQTs7QUFERCxZQUFZO0VBQ1gsVUFBQTs7QUFERCxZQUFZO0VBQ1gsVUFBQTs7QUFERCxZQUFZO0VBQ1gsV0FBQTs7QUY0Q0YsUUFIaUM7RUVqQ2hDO0VBS0MsWUFBWTtFQUFaLFlBQVk7RUFBWixZQUFZO0VBQVosWUFBWTtFQUFaLFlBQVk7RUFBWixZQUFZO0VBQVosWUFBWTtFQUFaLFlBQVk7RUFBWixZQUFZO0lBSlosV0FBQTs7O0FBYUYsQ0FBQztFQ3FSQyw4QkFBQTtFQUNBLDJCQUFBO0VBQ0Esc0JBQUE7RURyUkQsZ0JBQUE7RUFDQSxpQkFBQTtFQUNBLFdBQUE7O0FBSUEsQ0FEQSxxQkFDQztBQUFELGVBQUM7QUFBUSxDQURULHFCQUNVO0FBQUQsZUFBQztFQUNULFNBQVMsRUFBVDtFQUNBLGNBQUE7RUFDQSxnQkFBQTtFQUNBLGtCQUFBO0VBQ0EsWUFBQTtFQUNBLGNBQUE7RUFDQSxRQUFBO0VBQ0EsU0FBQTs7QUFLRCxDQURBLHFCQUNDO0FBQUQsZUFBQztFQUNBLFdBQUE7O0FBSUY7RUMyUEUsOEJBQUE7RUFDQSwyQkFBQTtFQUNBLHNCQUFBO0VEM1BELGlCQUFBO0VBQ0Esa0JBQUE7O0FBS0Msc0JBREQsRUFBQyxxQkFDQztFQUNBLGVBQUE7O0FBR0Qsc0JBTEQsRUFBQyxxQkFLQztFQUNBLGdCQUFBOztBRmpCSCxRQUhpQztFRTBCOUIsc0JBREQsRUFBQyxxQkFDQztJQUNBLGdCQUFBOztFQUdELHNCQUxELEVBQUMscUJBS0M7SUFDQSxpQkFBQTs7O0FFN0VKO0VBQ0MsaUJBQUE7RUFHQSxnQkFBQTs7QUFKRCxTQU1DO0VBQ0MsZ0JBQUE7O0FKMENGLFFBSGlDO0VBR2pDLFNJM0NDO0lBSUUsa0JBQUE7OztBQVZILFNBTUMsZUFPQztFQUNDLG1CQUFBOztBQ1ZIO0VBQ0MsWUFBQTtFQUNBLG1CQUFBO0VBQ0Esa0JBQUE7RUFDQSxPQUFBO0VBQ0EsUUFBQTtFQUNBLE1BQUE7RUFDQSxVQUFBO0VBQ0EsZ0JBQUE7O0FMcUNELFFBSGlDO0VBR2pDO0lLbENFLGtCQUFBOzs7QUFYRixhQWNDO0VBQ0MsZ0JBQUE7RUFDQSxTQUFBO0VBQ0EsZ0JBQUE7O0FBakJGLGFBY0MsR0FLQztBQW5CRixhQWNDLEdBS0ssR0FBRztFQUNOLHFCQUFBOztBTHlCSCxRQUhpQztFQUdqQyxhSy9CQztJQVVFLFdBQUE7SUFDQSx1QkFBQTtJQUNBLG1CQUFBO0lBQ0EscUJBQUE7SUFDQSxXQUFBOztFQUVBLGFBaEJGLEdBZ0JHO0VBQVMsYUFoQlosR0FnQmE7SUFDVixhQUFBOzs7QUFLRCxhQXRCRixHQXFCRSxhQUNDO0VBQ0EsZ0JBQUE7O0FMUUosUUFIaUM7RUFHakMsYUsvQkMsR0FxQkUsYUFDQztJQUlDLGdCQUFBOzs7QUFJRixhQTlCRixHQXFCRSxhQVNDO0VBQ0EsaUJBQUE7O0FMQUosUUFIaUM7RUFHakMsYUsvQkMsR0FxQkUsYUFTQztJQUlDLGtCQUFBOzs7QUFNRixhQXhDRixHQXVDQyxHQUNHO0VBQ0QsaUJBQUE7O0FBdkRKLGFBY0MsR0F1Q0MsR0FLQztFTHhDRixlQUFBO0VBQ0EsbUJBQUE7RUFDQSxpQkFBQTtFQUNBLG9CQUFBO0VLdUNHLGlCQUFBO0VBQ0EsV0FBQTtFQUNBLGNBQUE7RUFDQSxpQkFBQTtFQUNBLHFCQUFBO0VBQ0EseUJBQUE7O0FBRUEsYUFyREgsR0F1Q0MsR0FLQyxFQVNFO0VBQ0EsZUFBQTtFQUNBLGNBQUE7O0FBUUoseUJBQUM7QUFBUyx5QkFBQztFQUNWLHNCQUFrQixxckJBQWxCOztBQ3BGRjtFQUNDLGlCQUFBO0VBQ0EsZ0JBQUE7RUFDQSxpQkFBQTs7QU5nREQsUUFIaUM7RUFHakM7SU03Q0Usa0JBQUE7SUFDQSxnQkFBQTtJQUdBLFVBQUE7OztBQVZGLGFBYUM7RUFDQyxVQUFBO0VBQ0EsZ0JBQUE7RUFDQSxTQUFBO0VBQ0EsaUJBQUE7O0FBakJGLGFBYUMsR0FNQztBQW5CRixhQWFDLEdBTUssR0FBRztFQUNOLHFCQUFBOztBTitCSCxRQUhpQztFQUdqQyxhTXRDQztJQVdFLGNBQUE7SUFDQSxXQUFBO0lBQ0EscUJBQUE7OztBTnlCSCxRQUhpQztFQUdqQyxhTXRDQyxHQWdCQztJQUVFLGtCQUFBOzs7QUFHRCxhQXJCRixHQWdCQyxHQUtHO0VBQ0QsaUJBQUE7O0FOZ0JKLFFBSGlDO0VBR2pDLGFNdENDLEdBZ0JDLEdBS0c7SUFJQSxjQUFBOzs7QUF0Q0wsYUFhQyxHQWdCQyxHQWFDO0VId1FELDhCQUFBO0VBQ0EsMkJBQUE7RUFDQSxzQkFBQTtFR3hRRSx5QkFBQTtFQUNBLHFCQUFBO0VBQ0EsYUFBQTs7QU5LSixRQUhpQztFQUdqQyxhTXRDQyxHQWdCQyxHQWFDO0lBT0UsV0FBQTtJSHFPSCx3QkFBQTtJQUFpQyxvQ0FBQTtJQUNqQyxxQkFBQTtJQUE4Qiw2QkFBQTtJQUM5QixnQkFBQTtJQUF5Qiw0QkFBQTs7O0FJeFIzQjtFUHdCQyxlQUFBO0VBQ0Esb0JBQUE7RUFDQSxtQkFBQTtFQUNBLG9CQUFBO0VPeEJBLG1CQUFBO0VBQ0Esc0JBQUE7RUFDQSxnQkFBQTtFQUNBLGNBQUE7O0FBTkQsU1A0RUM7RUFDQyxjQUFBO0VBQ0EscUJBQUE7RUFFQSxpQ0FBQTs7QUFFQSxTQU5ELEVBTUU7RUFDQSxjQUFBOztBT25GSCxTQVFDO0VBQ0MsU0FBQTtFQUNBLHFCQUFBO0VBQ0Esa0JBQUE7O0FDWEY7RVJ3QkMsZUFBQTtFQUNBLG1CQUFBO0VBQ0EsbUJBQUE7RUFDQSxvQkFBQTtFUXpCQSxnQkFBQTtFQUNBLGtCQUFBO0VBQ0EscUJBQUE7O0FBSkQsUUFTQztFQUNDLGdCQUFBOztBQVZGLFFBYUM7QUFiRCxRQWFLO0FBYkwsUUFhUztBQWJULFFBYWM7QUFiZCxRQWEwQixTQUFRLElBQUk7QUFidEMsUUFhd0Q7RUFDdEQsaUJBQUE7O0FBZEYsUUFpQkM7QUFqQkQsUUFpQk87RUxxUUwsMEJBQUE7RUFBaUMsb0NBQUE7RUFDakMsdUJBQUE7RUFBOEIsNkJBQUE7RUFDOUIsa0JBQUE7RUFBeUIsNEJBQUE7RUtyUXpCLGdCQUFBOztBQW5CRixRQXNCQztBQXRCRCxRQXNCTTtBQXRCTixRQXNCWTtBQXRCWixRQXNCaUI7RUFDZixtQkFBQTs7QUF2QkYsUUEwQkM7QUExQkQsUUEwQmE7RUFDWCxnQkFBQTtFQUNBLDhCQUFBO0VBQ0EscUJBQUE7O0FBN0JGLFFBb0NDLEVSd0NBO0FRNUVELFFBb0NJLEdSd0NIO0FRNUVELFFBb0NRLEdSd0NQO0FRNUVELFFBb0NZLFdSd0NYO0FRNUVELFFBb0N3QixHUndDdkI7QVE1RUQsUUFvQzRCLEdSd0MzQjtBUTVFRCxRQW9DZ0MsR1J3Qy9CO0FRNUVELFFBb0NvQyxHUndDbkM7QVE1RUQsUUFvQ3dDLEdSd0N2QztFQUNDLGNBQUE7RUFDQSxxQkFBQTtFQUVBLGlDQUFBOztBQUVBLFFROUNELEVSd0NBLEVBTUU7QUFBRCxRUTlDRSxHUndDSCxFQU1FO0FBQUQsUVE5Q00sR1J3Q1AsRUFNRTtBQUFELFFROUNVLFdSd0NYLEVBTUU7QUFBRCxRUTlDc0IsR1J3Q3ZCLEVBTUU7QUFBRCxRUTlDMEIsR1J3QzNCLEVBTUU7QUFBRCxRUTlDOEIsR1J3Qy9CLEVBTUU7QUFBRCxRUTlDa0MsR1J3Q25DLEVBTUU7QUFBRCxRUTlDc0MsR1J3Q3ZDLEVBTUU7RUFDQSxjQUFBOztBUW5GSCxRQXdDQztBQXhDRCxRQXdDSztBQXhDTCxRQXdDUztBQXhDVCxRQXdDYTtBQXhDYixRQXdDaUI7RUFDZixXQUFBO0VBQ0EsZ0JBQUE7O0FBMUNGLFFBd0NDLEdBS0M7QUE3Q0YsUUF3Q0ssR0FLSDtBQTdDRixRQXdDUyxHQUtQO0FBN0NGLFFBd0NhLEdBS1g7QUE3Q0YsUUF3Q2lCLEdBS2Y7QUE3Q0YsUUF3Q0MsR0FLTztBQTdDUixRQXdDSyxHQUtHO0FBN0NSLFFBd0NTLEdBS0Q7QUE3Q1IsUUF3Q2EsR0FLTDtBQTdDUixRQXdDaUIsR0FLVDtFQUNMLGtCQUFBOztBQTlDSCxRQXdDQyxHQVVDLEVBQUM7QUFsREgsUUF3Q0ssR0FVSCxFQUFDO0FBbERILFFBd0NTLEdBVVAsRUFBQztBQWxESCxRQXdDYSxHQVVYLEVBQUM7QUFsREgsUUF3Q2lCLEdBVWYsRUFBQztFQUNBLGdCQUFBO0VBQ0Esc0JBQUE7RUFDQSxVQUFBO0VBQ0EsU0FBQTs7QUFHRCxRQWpCRCxHQWlCRSxNQUNBLEVBQUM7QUFERixRQWpCRyxHQWlCRixNQUNBLEVBQUM7QUFERixRQWpCTyxHQWlCTixNQUNBLEVBQUM7QUFERixRQWpCVyxHQWlCVixNQUNBLEVBQUM7QUFERixRQWpCZSxHQWlCZCxNQUNBLEVBQUM7RUFDQSxVQUFBOztBQUlGLFFBdkJELEdBdUJFLE9BQ0E7QUFERCxRQXZCRyxHQXVCRixPQUNBO0FBREQsUUF2Qk8sR0F1Qk4sT0FDQTtBQURELFFBdkJXLEdBdUJWLE9BQ0E7QUFERCxRQXZCZSxHQXVCZCxPQUNBO0VMOERELDBEQUFBO0VBQ0EsdURBQUE7RUFDQSxxREFBQTtFQUNBLGtEQUFBO0VLL0RFLFVBQUE7O0FBbEVKLFFBdUVDO0FBdkVELFFBdUVRO0FBdkVSLFFBdUVnQixTQUFRLElBQUk7RUwrTTFCLDBCQUFBO0VBQWlDLG9DQUFBO0VBQ2pDLHVCQUFBO0VBQThCLDZCQUFBO0VBQzlCLGtCQUFBO0VBQXlCLDRCQUFBO0VBbUJ6Qix1REFBQTtFQUNBLG9EQUFBO0VBQ0EsK0NBQUE7RUtsT0EsYUFBQTtFQUNBLGNBQUE7RUFFQSx5QkFBQTtFQUNBLGtCQUFBOztBQUVBLFFBVkQsTUFVRTtBQUFELFFBVk0sT0FVTDtBQUFELFFBVmMsU0FBUSxJQUFJLGdCQVV6QjtFQUNBLHFCQUFBO0VBQ0EsVUFBQTtFTHdORCx3RUFBQTtFQUNBLHFFQUFBO0VBQ0EsZ0VBQUE7O0FLN1NGLFFBOEZDO0VBQ0MsOEJBQUE7RUFDQSxlQUFBOztBQWhHRixRQW1HQztFQUNDLGtCQUFBO0VBQ0EsNkJSbkcyQyx3QlFtRzNDO0VSN0VELGVBQUE7RUFDQSxlQUFBO0VBQ0EsbUJBQUE7RUFDQSxtQkFBQTs7QVEzQkQsUUF5R0M7RUFDQyxrQkFBQTs7QUExR0YsUUE2R0M7RVJyRkEsZUFBQTtFQUNBLGtCQUFBO0VBQ0EsbUJBQUE7RUFDQSxvQkFBQTtFUW9GQyxtQkFBQTs7QUEvR0YsUUFrSEM7RVIxRkEsaUJBQUE7RUFDQSxpQkFBQTtFQUNBLG9CQUFBO0VBQ0Esb0JBQUE7RVF5RkMsaUJBQUE7O0FBcEhGLFFBdUhDO0VSL0ZBLGVBQUE7RUFDQSxpQkFBQTtFQUNBLG1CQUFBO0VBQ0EsbUJBQUE7RVE4RkMsZ0JBQUE7RUFDQSxrQkFBQTs7QUExSEYsUUE2SEM7RVJyR0EsaUJBQUE7RUFDQSxpQkFBQTtFQUNBLG9CQUFBO0VBQ0Esb0JBQUE7RVFvR0MsZ0JBQUE7RUFDQSxrQkFBQTs7QUFoSUYsUUFtSUM7RVIzR0EsaUJBQUE7RUFDQSxpQkFBQTtFQUNBLG9CQUFBO0VBQ0Esb0JBQUE7RVEwR0MsZ0JBQUE7RUFDQSxrQkFBQTs7QUF0SUYsUUF5SUM7RUFDQyxTQUFBO0VBQ0EsNkJBQUE7RUFDQSxlQUFBOztBQUlBLFFBREQsTUFDRTtFQUNBLGFBQUE7RUFDQSxrQkFBQTs7QUFHRCxRQU5ELE1BTUU7RUxpREQsMEJBQUE7RUFDQSx1QkFBQTtFQUNBLGtCQUFBOztBS3hNRixRQTRKQztFUnBJQSxlQUFBO0VBQ0Esa0JBQUE7RUFDQSxtQkFBQTtFQUNBLG9CQUFBO0VRbUlDLG9CUjdKOEIsdUNRNko5QjtFQUNBLGdCQUFBO0VMNElBLDBEQUFBO0VBQ0EsdURBQUE7RUFDQSxrREFBQTs7QUs3U0YsUUF1S0MsRUFDQztFQUNDLHNCQUFBOztBQXpLSCxRQXVLQyxFQUtDO0VBQ0MsY0FBQTs7QUE3S0gsUUFpTEM7RUFDQyxVQUFBO0VBQ0EsU0FBQTtFQUVBLFdBQUE7RUFDQSxjQUFBO0VBQ0EsZ0JBQUE7O0FBdkxGLFFBMExDO0FBMUxELFFBMExNO0VSbEtMLGtCQUFBO0VBQ0EsbUJBQUE7RUFDQSxtQkFBQTtFQUNBLG9CQUFBO0VRa0tDLGdKQUFBOztBQTdMRixRQTBMQyxJQUtDO0FBL0xGLFFBMExNLEtBS0o7RUFDQyxTQUFBOztBQWhNSCxRQXFNQyxJQUFJO0VBQ0gsZUFBQTtFQUNBLGNBQUE7O0FBdk1GLFFBME1DO0VBQ0MsV0FBQTs7QUEzTUYsUUE4TUMsR0FFQztBQWhORixRQThNSyxHQUVIO0FBaE5GLFFBOE1DLEdBRUs7QUFoTk4sUUE4TUssR0FFQztFQUNILGdCQUFBOztBQWpOSCxRQThNQyxHQU1DO0FBcE5GLFFBOE1LLEdBTUg7RVI1TEQsZUFBQTtFQUNBLG1CQUFBO0VBQ0Esb0JBQUE7RUFDQSxvQkFBQTs7QVEzQkQsUUEwTkMsU0FBUSxJQUFJO0VBQ1gsV0FBQTs7QUEzTkYsUUE4TkMsSUFBRztFQUNGLHVCQUFBO0VBQ0EsYUFBQTtFQUNBLHFCQUFBOzs7QUFHQSxRQU5ELElBQUcsS0FNRDtFQUNBLFNBQVMsTUFBVDtFQUNBLGlCQUFBOztBQ2pPRCxJQURELEVBQ0U7QUFBRCxJQURFLE9BQ0Q7QUFBRCxJQURVLE1BQ1Q7RU5pUkQsMEJBQUE7RUFBaUMsb0NBQUE7RUFDakMsdUJBQUE7RUFBOEIsNkJBQUE7RUFDOUIsa0JBQUE7RUFBeUIsNEJBQUE7RUhoUTFCLGVBQUE7RUFDQSxtQkFBQTtFQUNBLG1CQUFBO0VBQ0Esb0JBQUE7RVNuQkUsWUFBQTtFQUNBLGlCQUFBO0VBQ0EsZ0JBQUE7RUFDQSxnQkFBQTtFQUNBLGNBQUE7RUFDQSxtQkFBQTtFQUNBLHFCQUFBO0VBQ0EscUJBQUE7RUFDQSxlQUFBO0VBQ0EsU0FBQTtFQUNBLHNCQUFBO0VBSUEsYUFBQTtFQUdBLHVCQUFBOztBQUVBLElBdkJGLEVBQ0UsU0FzQkM7QUFBRCxJQXZCQyxPQUNELFNBc0JDO0FBQUQsSUF2QlMsTUFDVCxTQXNCQztFQUNBLGtCQUFBOztBQUdELElBM0JGLEVBQ0UsU0EwQkM7QUFBRCxJQTNCQyxPQUNELFNBMEJDO0FBQUQsSUEzQlMsTUFDVCxTQTBCQztFQUNBLG1CQUFBOztBQW9CRCxJQWhERixFQUNFLFNBK0NDO0FBQUQsSUFoREMsT0FDRCxTQStDQztBQUFELElBaERTLE1BQ1QsU0ErQ0M7RU5rT0YsNEJBQUE7RUFBaUMsb0NBQUE7RUFDakMseUJBQUE7RUFBOEIsNkJBQUE7RUFDOUIsb0JBQUE7RUFBeUIsNEJBQUE7RU1uUHZCLFdBQUE7RUFDQSxVQUFBO0VBQ0EsbUJBQUE7RUFDQSxnQkFBQTtFQUNBLGtCQUFBO0VBQ0Esa0JBQUE7O0FBRUEsSUF4Q0gsRUFDRSxTQStDQyxpQkFSQztBQUFELElBeENBLE9BQ0QsU0ErQ0MsaUJBUkM7QUFBRCxJQXhDUSxNQUNULFNBK0NDLGlCQVJDO0VBQ0Esa0JBQUE7RUFDQSxTQUFBO0VBQ0EsUUFBQTtFQUNBLHFCQUFBOztBVEdMLFFBSGlDO0VBR2pDLElTL0NDLEVBQ0UsU0FtREM7RVRMSixJUy9DSSxPQUNELFNBbURDO0VUTEosSVMvQ1ksTUFDVCxTQW1EQztJTjhORiw0QkFBQTtJQUFpQyxvQ0FBQTtJQUNqQyx5QkFBQTtJQUE4Qiw2QkFBQTtJQUM5QixvQkFBQTtJQUF5Qiw0QkFBQTtJTW5QdkIsV0FBQTtJQUNBLFVBQUE7SUFDQSxtQkFBQTtJQUNBLGdCQUFBO0lBQ0Esa0JBQUE7SUFDQSxrQkFBQTs7RUFFQSxJQXhDSCxFQUNFLFNBbURDLDBCQVpDO0VBQUQsSUF4Q0EsT0FDRCxTQW1EQywwQkFaQztFQUFELElBeENRLE1BQ1QsU0FtREMsMEJBWkM7SUFDQSxrQkFBQTtJQUNBLFNBQUE7SUFDQSxRQUFBO0lBQ0EscUJBQUE7O0VBSkQsSUF4Q0gsRUFDRSxTQW1EQywwQkFaQztFQUFELElBeENBLE9BQ0QsU0FtREMsMEJBWkM7RUFBRCxJQXhDUSxNQUNULFNBbURDLDBCQVpDO0lBQ0Esa0JBQUE7SUFDQSxTQUFBO0lBQ0EsUUFBQTtJQUNBLHFCQUFBOzs7QUFjRixJQTFERixFQUNFLFNBeURDO0FBQUQsSUExREMsT0FDRCxTQXlEQztBQUFELElBMURTLE1BQ1QsU0F5REM7QUFDRCxJQTNERixFQUNFLFNBMERDO0FBQUQsSUEzREMsT0FDRCxTQTBEQztBQUFELElBM0RTLE1BQ1QsU0EwREM7RUFDQSxXQUFBO0VBQ0EsbUJBQUE7O0FBR0QsSUFoRUYsRUFDRSxTQStEQztBQUFELElBaEVDLE9BQ0QsU0ErREM7QUFBRCxJQWhFUyxNQUNULFNBK0RDO0VBQ0EscUJBQUE7RUFDQSxVQUFBO0VOcU9GLHlFQUFBO0VBQ0Esc0VBQUE7RUFDQSxpRUFBQTs7QU01TkEsSUE3RUQsRUE2RUU7QUFBRCxJQTdFRSxPQTZFRDtBQUFELElBN0VVLE1BNkVUO0VBQ0EsbUJBQUE7O0FBRUEsSUFoRkYsRUE2RUUsY0FHQztBQUFELElBaEZDLE9BNkVELGNBR0M7QUFBRCxJQWhGUyxNQTZFVCxjQUdDO0FBQ0QsSUFqRkYsRUE2RUUsY0FJQztBQUFELElBakZDLE9BNkVELGNBSUM7QUFBRCxJQWpGUyxNQTZFVCxjQUlDO0VBQ0EsY0FBQTtFQUNBLG1CQUFBOztBQUlGLElBdkZELEVBdUZFO0FBQUQsSUF2RkUsT0F1RkQ7QUFBRCxJQXZGVSxNQXVGVDtBQUFELElBdkZELEVIaURHLGFBeENILEdBZ0JDLEdBYUMsRUFXRTtBR3NDSCxJQXZGRSxPSGlEQSxhQXhDSCxHQWdCQyxHQWFDLEVBV0U7QUdzQ0gsSUF2RlUsTUhpRFIsYUF4Q0gsR0FnQkMsR0FhQyxFQVdFO0VHdUNGLFdBQUE7RUFDQSxtQkFBQTs7QUFFQSxJQTNGRixFQXVGRSxvQkFJQztBQUFELElBM0ZDLE9BdUZELG9CQUlDO0FBQUQsSUEzRlMsTUF1RlQsb0JBSUM7QUFDRCxJQTVGRixFQXVGRSxvQkFLQztBQUFELElBNUZDLE9BdUZELG9CQUtDO0FBQUQsSUE1RlMsTUF1RlQsb0JBS0M7QUFERCxJQTNGRixFSGlERyxhQXhDSCxHQWdCQyxHQWFDLEVBV0UsTUcwQ0Q7QUFBRCxJQTNGQyxPSGlEQSxhQXhDSCxHQWdCQyxHQWFDLEVBV0UsTUcwQ0Q7QUFBRCxJQTNGUyxNSGlEUixhQXhDSCxHQWdCQyxHQWFDLEVBV0UsTUcwQ0Q7QUFDRCxJQTVGRixFSGlERyxhQXhDSCxHQWdCQyxHQWFDLEVBV0UsTUcyQ0Q7QUFBRCxJQTVGQyxPSGlEQSxhQXhDSCxHQWdCQyxHQWFDLEVBV0UsTUcyQ0Q7QUFBRCxJQTVGUyxNSGlEUixhQXhDSCxHQWdCQyxHQWFDLEVBV0UsTUcyQ0Q7RUFDQSxXQUFBO0VBQ0EsbUJBQUE7O0FDaEdKO0VWc0JDLGVBQUE7RUFDQSxrQkFBQTtFQUNBLG1CQUFBO0VBQ0Esb0JBQUE7RUcyUEMsMEJBQUE7RUFBaUMsb0NBQUE7RUFDakMsdUJBQUE7RUFBOEIsNkJBQUE7RUFDOUIsa0JBQUE7RUFBeUIsNEJBQUE7RU9uUjFCLGdDQUFBO0VBRUEsbUJBQUE7RUFDQSxxQkFBQTtFQUNBLG1CQUFBO0VBQ0Esd0JBQUE7RUFDQSxnQkFBQTtFQUNBLGtCQUFBO0VBQ0EsYUFBQTtFQUNBLG9CQUFBO0VBQ0EsY0FBQTs7QUFFQSxVQUFDO0VBQ0EsY0FBQTs7QUFHRCxVQUFDO0VBQ0EsU0FBUyxFQUFUO0VBQ0EsUUFBQTtFQUNBLFNBQUE7RUFDQSxtQkFBQTtFQUNBLGtCQUFBOztBQU1ELGFBQUM7QUFBRCxhQUFDO0VBQ0EsVUFBQTtFQUNBLDhCQUFBO0VBQ0EseURBQUE7O0FBTUQsYUFBQztBQUFELGFBQUM7RUFDQSxhQUFBO0VBQ0EsOEJBQUE7RUFDQSx5REFBQTs7QUFNRCxhQUFDO0FBQUQsYUFBQztFQUNBLFVBQUE7O0FBTUQsYUFBQztBQUFELGFBQUM7RUFDQSxXQUFBOztBQ3ZERixjQUFjO0FBQ2QsZUFBZTtFQUNkLFNBQVMsRUFBVDtFQUNBLHFCQUFBO0VBQ0EsV0FBQTtFQUNBLFlBQUE7RUFDQSxzQkFBQTtFQUNBLDRCQUFBOztBQUdELGNBQWM7RUFDYixrQkFBQTs7QUFHRCxlQUFlO0VBQ2QsaUJBQUE7O0FBSUEsY0FBQztBQUFTLGNBQUM7RUFDVixzQkFBa0IsNmNBQWxCOztBQUtELG1CQUFDO0FBQVMsbUJBQUM7RUFDVixzQkFBa0IsNmlCQUFsQjs7QUFLRCxXQUFDO0FBQVMsV0FBQztFQUNWLHNCQUFrQiw2aUJBQWxCOztBQzVCRixJQUFLLFFBRUo7RUFDQyxzQkFBQTs7QUFIRixJQUFLLFFBTUosTUFBSztFQUNKLGdCQUFBO0VBQ0EscUJBQUE7O0FBUkYsSUFBSyxRQVdKO0VBQ0MseUJBQUE7RUFDQSwwQkFBQTs7QUFFQSxJQWZHLFFBV0osTUFJRTtFQUNBLFdBQUE7O0FBR0QsSUFuQkcsUUFXSixNQVFFO0VBQ0EsWUFBQTs7QUFwQkgsSUFBSyxRQXdCSjtFQUNDLGFBQUE7O0FBSUY7RVpaQyxlQUFBO0VBQ0EsbUJBQUE7RUFDQSxtQkFBQTtFQUNBLG9CQUFBO0VZV0EsaUJBQUE7RUFDQSx5QkFBQTtFQUNBLGdCQUFBO0VBQ0EscUJBQUE7RUFDQSxzQkFBQTtFQUNBLFdBQUE7RVQyT0MsMEJBQUE7RUFBaUMsb0NBQUE7RUFDakMsdUJBQUE7RUFBOEIsNkJBQUE7RUFDOUIsa0JBQUE7RUFBeUIsNEJBQUE7RVMzTzFCLGtCQUFBOztBQVRELE9BV0MsTUFBSztFQUNKLGFBQUE7O0FBWkYsT0FlQztFQUNDLGtCQUFBO0VBQ0EsVUFBQTtFQUNBLFdBQUE7RUFDQSxlQUFBO0VBQ0EsaUJBQUE7O0FBRUEsT0FQRCxNQU9FO0VBQ0EsMEJBQUE7O0FBdkJILE9BMkJDO0VBQ0MsV0FBQTtFQUNBLHNCQUFBO0VBQ0EsYUFBQTtFQUNBLGNBQUE7RUFDQSxZQUFBO0VBQ0EsZ0JBQUE7RVRpTkEsNEJBQUE7RUFBaUMsb0NBQUE7RUFDakMseUJBQUE7RUFBOEIsNkJBQUE7RUFDOUIsb0JBQUE7RUFBeUIsNEJBQUE7O0FTcFAzQixPQTJCQyxjQVNDO0VBQ0MsZ0JBQUE7RUFDQSxrQkFBQTtFQUNBLGNBQUE7RUFDQSxhQUFBO0VBQ0EsWUFBQTtFQUNBLG1CQUFBO0VUd01ELDRCQUFBO0VBQWlDLG9DQUFBO0VBQ2pDLHlCQUFBO0VBQThCLDZCQUFBO0VBQzlCLG9CQUFBO0VBQXlCLDRCQUFBOztBU3ZNeEIsT0FsQkYsY0FTQyxTQVNFO0VBQ0EsU0FBUyxFQUFUO0VBQ0EsY0FBQTtFQUNBLGtCQUFBO0VBQ0EsTUFBQTtFQUNBLFFBQUE7RUFDQSxXQUFBO0VBQ0EsT0FBQTtFQUVBLHlCQUFBO0VUc0tGLHdDQUFBO0VBQ0Esb0NBQUE7RUFDQSxnQ0FBQTtFQUtBLHlDQUFBO0VBQThDLG9DQUFBO0VBQzlDLHFDQUFBO0VBQTBDLDZCQUFBO0VBQzFDLGlDQUFBO0VBQXNDLDRCQUFBOztBU3ZLdkMsT0FBQyxNQUNBLGNBQWMsU0FBUTtFQUNyQixtQkFBQTs7QUFoRUgsT0FvRUMsTUFBSyxjQUFnQixRQUVwQixnQkFBZ0I7RUFDZixpQkFBQTs7QUF2RUgsT0FvRUMsTUFBSyxjQUFnQixRQVNwQixRQUFPO0VBQ04sc0JBQUE7RUFDQSxzQkFBQTs7QUEvRUgsT0FtRkMsTUFBSyxjQUFnQixRQUFTLFFBQU87RUFDcEMscUJBQUE7RUFDQSxxQkFBQTs7QUN6SEY7RVZrM0JFLHlCQUFBO0VBQ0Esc0JBQUE7RUFDQSxxQkFBQTtFQUNBLGlCQUFBOztBVXIzQkYsUUFHQztFQUNDLGVBQUE7O0FBSkYsUUFNQztFQUNDLGdCQUFBOztBQVBGLFFBVUM7RUFDQyxhQUFBOztBQUdELFFBQUMsVUFDQTtFQUNDLGFBQUE7O0FBRkYsUUFBQyxVQUtBO0VBQ0MsZ0JBQUE7O0FBS0g7RUFDQyxnQkFBQTs7QUFFQSxrQkFBQztFQUNBLFNBQUE7O0FBTUQsc0JBQUM7QUFBRCx1QkFBQztBQUFTLHNCQUFDO0FBQUQsdUJBQUM7RUFDVixzQkFBa0IseXNCQUFsQjs7QUFJQSxzQkFEQSxXQUNDO0FBQUQsdUJBREEsV0FDQztBQUFTLHNCQURWLFdBQ1c7QUFBRCx1QkFEVixXQUNXO0VBQ1Ysc0JBQWtCLHF0QkFBbEI7O0FBTUYsc0JBQUM7QUFDRCxzQkFBQztFQUNBLDZCQUFBOztBQUtELHVCQUFDO0FBQ0QsdUJBQUM7RUFDQSxnQ0FBQTs7QUN0REY7RUFDQyxhQUFBO0VBQ0Esa0JBQUE7RUFDQSx1QkFBQTtFQUNBLGdCQUFBO0VYNFNDLDhCQUFBO0VBQ0EsMkJBQUE7RUFDQSxzQkFBQTtFV3pTRCxxQkFBQTtFQUNBLG1CQUFBO0VYZ3ZCQyx3Q0FBQTtFQUNBLHFDQUFBO0VBQ0EsbUNBQUE7RUFDQSxvQ0FBQTtFQUNBLGdDQUFBOztBV2p2QkQsTUFBQztFWHVRQSw0QkFBQTtFQUFpQyxvQ0FBQTtFQUNqQyx5QkFBQTtFQUE4Qiw2QkFBQTtFQUM5QixvQkFBQTtFQUF5Qiw0QkFBQTtFV3ZRekIsZUFBQTtFQUNBLFlBQUE7RUFDQSxXQUFBO0VBQ0Esa0JBQUE7RUFDQSxTQUFBO0VBQ0EsV0FBQTtFQUNBLGVBQUE7RUFDQSxrQkFBQTtFQUNBLGlCQUFBO0VBQ0EsbUJBQUE7O0FDekJGLElBQUs7QUFDTCxNQUFPO0FBQ1AsYUFBYztBQUNkLE1BQU87RUFDTixnQkFBQTs7QUFJRDtFQUNDLGdCQUFBOztBQUdEO0VBQ0MsNkJBQUE7O0FDWEEsU0FBQztFQUNBLHlCQUFBO0VBQ0EsV0FBQTs7QUFGRCxTQUFDLElBSUEsU0FDQztBQUxGLFNBQUMsSUFJQSxTQUNLO0FBTE4sU0FBQyxJQUlBLFNBQ1M7QUFMVixTQUFDLElBSUEsU0FDYTtBQUxkLFNBQUMsSUFJQSxTQUNpQjtFQUNmLFdBQUE7O0FBTkgsU0FBQyxJQUlBLFNBS0M7RWhCWUYsZUFBQTtFQUNBLG1CQUFBO0VBQ0EsbUJBQUE7RUFDQSxvQkFBQTtFZ0JiRyxnQkFBQTs7QUFYSCxTQUFDLElBSUEsU0FLQyxFQUlDO0VBQ0MscUJBQUE7RUFDQSw4QkFBQTtFQUNBLGNBQUE7O0FBRUEsU0FsQkgsSUFJQSxTQUtDLEVBSUMsRUFLRTtFQUNBLGNBQUE7O0FBbkJMLFNBQUMsSUFJQSxTQW9CQztFQUNDLFdBQUE7O0FBekJILFNBQUMsSUFJQSxTQXdCQztFQUNDLFdBQUE7O0FBN0JILFNBQUMsSUFJQSxTQTRCQztFQUNDLGtCQUFBO0VBQ0EsY0FBQTs7QUFLSCxTQUFDO0VBQ0Esa0JBQUE7O0FBRUEsU0FIQSxPQUdDO0VBQ0EsV0FBQTtFQUNBLFNBQVMsRUFBVDtFQUNBLG1CQUFBO0VBQ0Esa0JBQUE7RUFDQSxNQUFBO0VBQ0EsT0FBQTtFQUNBLFFBQUE7RUFDQSxXQUFBOztBQ3hESCxJQUFLO0FBQ0wsTUFBTztBQUNQLGFBQWM7QUFDZCxNQUFPO0VBQ04saUJBQUE7O0FBR0QsSUFBSyxnQkFBZTtFQUNuQixlQUFBOztBQUdEO0VBQ0MsbUJBQUE7RUFDQSxZQUFBO0VBQ0EsaUJBQUE7O0FBSEQsT0FNQztFQUVDLGtCQUFBO0VBQ0EsVUFBQTtFQUNBLFVBQUE7RUFDQSxtQkFBQTtFQUdBLG1CQUFBO0VBQ0EsNEJBQUE7O0FBRUEsT0FYRCxXQVdFO0VBQ0EseURBQUE7O0FBS0gsUUFBUztFQUNSLGdCQUFBO0VBQ0EsU0FBQTtFQUNBLHdCQUFBOztBQUVBLFFBTFEsbUJBS1A7RUFDQSxZQUFBOztBQUtGLEtBQU07RUFDTCxnQkFBQTtFQUNBLGNBQUE7RUFDQSwwQkFBQTs7QUFJRCxHQUFHLElBQUssRUFBQztBQUNULEdBQUcsSUFBSztFQUNQLG1CQUFBOztBQUVBLEdBSkUsSUFBSyxFQUFDLFdBSVA7QUFBRCxHQUhFLElBQUssa0JBR047RUFDQSxnQ0FBQTs7QUFJRixLQUFNLGNBQWE7RUFDbEIsYUFBQTs7QUFJQSxRQURRLGNBQ1A7RUFDQSxhQUFBOztBQUZGLFFBQVMsY0FLUjtFQUNDLGFBQUE7O0FBSUYsUUFDQztFQUNDLGlCQUFBOztBQUlGO0VBQ0MsaUJBQUE7O0FBREQsU0FHQztFQUNDLFdBQUE7RUFDQSxpQkFBQTs7QUFMRixTQUdDLE1BSUM7RUFDQyxnQkFBQTs7QUFFQSxTQVBGLE1BSUMsU0FHRTtFQUNBLHVCQUFBO0VBQ0EsV0FBQTs7QUFGRCxTQVBGLE1BSUMsU0FHRSxNQUlBO0VBQ0MsMEJBQUE7O0FBZkwsU0FHQyxNQWlCQztFQUNDLFdBQUE7RUFDQSxhQUFBOztBQUdELFNBdEJELE1Bc0JFO0VBQ0EsZ0JBQUE7O0FBS0g7RUFDQyxnQkFBQTtFQUNBLFNBQUE7RUFDQSxVQUFBO0VBQ0Esd0JBQUE7O0FBRUEsdUJBQUM7RUFDQSxZQUFBO0VBQ0EsVUFBQTs7QUFLRjtFQUNDLGlCQUFBOztBQURELE1BR0MsSUFBRztFQUNGLGlCQUFBOztBQUpGLE1BT0M7RUFDQyxpQkFBQTs7QUFSRixNQU9DLGNBR0M7RUFDQyxpQkFBQTs7QUFYSCxNQU9DLGNBT0M7RUFFQyxrQkFBQTs7QUFoQkgsTUFvQkM7RUFDQyxrQkFBQTtFQUNBLFNBQUE7RUFFQSxTQUFBO0VBQ0Esa0JBQUE7O0FqQmhHRixRQUhpQztFQUdqQyxNaUIyRkM7SUFVRSxVQUFBO0lBQ0EsaUJBQUE7SUFFQSxVQUFBO0lBQ0EsbUJBQUE7O0VBRUEsTUFoQkYsV0FnQkc7SUFDQSxVQUFBO0lBQ0EsV0FBQTs7O0FqQjdHSixRQUhpQztFQUdqQyxNaUIyRkM7SUF3QkUsYUFBQTs7O0FDeEpILFFBQVM7RUFDUixvQkFBQTtFZm0yQkMseUJBQUE7RUFDQSxzQkFBQTtFQUNBLHFCQUFBO0VBQ0EsaUJBQUE7RWVwMkJELGVBQUE7O0FBSUQsb0JBQXFCO0VmNmVsQixPQUFBO0VBQVMseUJBQUE7RUFDVixvQkFBQTtFQUNBLGlCQUFBO0VBQ0EsWUFBQTs7QWU1ZUYsWUFBWTtFQUNYLGtCQUFBO0Vmd2VFLE9BQUE7RUFBUywwQkFBQTtFQUNWLGtCQUFBO0VBQ0EsZUFBQTtFQUNBLFVBQUE7O0FldGVELFlBTlcsT0FNVjtFQUNBLFNBQVMsRUFBVDtFQUNBLGNBQUE7RUFDQSxrQkFBQTtFQUNBLE1BQUE7RUFDQSxVQUFBO0VBQ0EsV0FBQTtFQUNBLE9BQUE7RWZnUEEsMEJBQUE7RUFBaUMsb0NBQUE7RUFDakMsdUJBQUE7RUFBOEIsNkJBQUE7RUFDOUIsa0JBQUE7RUFBeUIsNEJBQUE7RUFtQnpCLDRDQUFBO0VBQ0EseUNBQUE7RUFDQSxvQ0FBQTs7QWVwUkYsWUFBWSxPQWtCWDtFZmdRQyx3QkFBQTtFQUNBLHFCQUFBO0VBQ0EsZ0JBQUE7RWVoUUEscUJBQUE7O0FBcEJGLFlBQVksT0F1Qlg7QUF2QkQsWUFBWSxPQXdCWDtFQUNDLGtCQUFBO0VBQ0EsVUFBQTs7QUExQkYsWUFBWSxPQTZCWDtFZnFQQyx3QkFBQTtFQUNBLHFCQUFBO0VBQ0EsZ0JBQUE7O0FlbFBGO0VmdXpCRSx5QkFBQTtFQUNBLHNCQUFBO0VBQ0EscUJBQUE7RUFDQSxpQkFBQTs7QWV2ekJGO0VBQ0MsY0FBQTtFQUNBLG9CQUFBO0VBQ0EsZ0JBQUE7RUFDQSxnQkFBQTs7QUFHQyxRQURELE9BQU0sU0FDSjtFQUNBLGVBQUE7RUFFQSxxQkFBQTtFQUNBLGdCQUFBO0VBQ0EsVUFBQTtFQUNBLHlCQUFBOztBQUdELFFBVkQsT0FBTSxTQVVKO0VBQ0EsYUFBQTs7QUFHRCxRQWRELE9BQU0sU0FjSjtFQUNBLFdBQUE7RUFDQSxpQkFBQTs7QUFHRCxRQW5CRCxPQUFNLFNBbUJKO0VBQ0EsWUFBQTtFQUNBLGdCQUFBOztBQTNCSCxRQU1DLE9BQU0sU0F3Qkw7RUFDQyxjQUFBOztBQU1ILGdCQUFnQjtBQUNoQixnQkFBZ0I7QUFDaEIsc0JBQXNCO0VBQ3JCLGFBQUE7O0FBR0QsZ0JBQWlCO0FBQ2pCLFFBQVMsT0FBTTtBQUNmLGdCQUFpQixTQUFRLFdBQVc7RUFDbkMsYUFBQTs7QUFHRCxHQUFHO0VBQ0YsVUFBQTtFQUNBLGdCQUFBO0VBQ0EsV0FBQTtFQUNBLGtCQUFBO0VBQ0EsY0FBQTtFQUNBLHlCQUFBOztBQU5ELEdBQUcsZ0JBUUY7RUFDQyxTQUFBOztBQVRGLEdBQUcsZ0JBWUY7RUFDQyxhQUFBOztBQUdELEdBaEJFLGdCQWdCRCxjQUFlO0VBQ2Ysa0JBQUE7RWZrWUMsT0FBQTtFQUFTLHlCQUFBO0VBQ1Ysb0JBQUE7RUFDQSxpQkFBQTtFQUNBLFlBQUE7O0FldFpGLEdBQUcsZ0JBdUJGLE9BQU87RUFDTixpQkFBQTs7QUFJRCxHQTVCRSxnQkE0QkE7RUFDRCxVQUFBO0VBQ0EsU0FBQTtFQUNBLDZCQUFBO0VBQ0EsV0FBQTs7QUFFQSxHQWxDQyxnQkE0QkEsS0FNQTtFQUNBLDJCQUFBOztBQUdELEdBdENDLGdCQTRCQSxLQVVBO0VBQ0Esd0JBQUE7O0FBWEYsR0E1QkUsZ0JBNEJBLEtBZUQ7RUFDQyxVQUFBO0VBQ0EsU0FBQTs7QUFJRCxHQWpEQyxnQkE0QkEsS0FxQkM7RUFDRCxrQkFBQTs7QUFFQSxHQXBEQSxnQkE0QkEsS0FxQkMsS0FHQTtFQUNBLGlCQUFBO0VBQ0EsaUJBQUE7RUFDQSxlQUFBOztBQUdELEdBMURBLGdCQTRCQSxLQXFCQyxLQVNBO0FBQ0QsR0EzREEsZ0JBNEJBLEtBcUJDLEtBVUE7RUFDQSxnQ0FBQTs7QUFHRCxHQS9EQSxnQkE0QkEsS0FxQkMsS0FjQTtFQUNBLDBCQUFBOztBQUVBLEdBbEVELGdCQTRCQSxLQXFCQyxLQWNBLHNCQUdDO0VBQ0EsZ0JBQUE7O0FBSUYsR0F2RUEsZ0JBNEJBLEtBcUJDLEtBc0JBLG1CQUFtQjtBQUNwQixHQXhFQSxnQkE0QkEsS0FxQkMsS0F1QkEsbUJBQW1CO0FBQ3BCLEdBekVBLGdCQTRCQSxLQXFCQyxLQXdCQSx1QkFBdUI7QUFDeEIsR0ExRUEsZ0JBNEJBLEtBcUJDLEtBeUJBLHVCQUF1QjtFQUN2QixnQkFBQTtFQUNBLFVBQUE7O0FBR0QsR0EvRUEsZ0JBNEJBLEtBcUJDLEtBOEJBLG1CQUFtQjtBQUNwQixHQWhGQSxnQkE0QkEsS0FxQkMsS0ErQkEsdUJBQXVCO0FBQ3hCLEdBakZBLGdCQTRCQSxLQXFCQyxLQWdDQSxtQkFBbUIsT0FBTztBQUMzQixHQWxGQSxnQkE0QkEsS0FxQkMsS0FpQ0EsdUJBQXVCLE9BQU87RUFDOUIsbUJBQUE7O0FBR0QsR0F0RkEsZ0JBNEJBLEtBcUJDLEtBcUNBLG1CQUFtQjtBQUNwQixHQXZGQSxnQkE0QkEsS0FxQkMsS0FzQ0EsdUJBQXVCO0VBQ3ZCLG1CQUFBOztBQUdELEdBM0ZBLGdCQTRCQSxLQXFCQyxLQTBDQTtFQU1BLG1CQUFBOztBQUxBLEdBNUZELGdCQTRCQSxLQXFCQyxLQTBDQSx1QkFDQztFQUNBLFNBQVMsRUFBVDtFQUNBLFdBQUE7O0FBS0QsR0FuR0QsZ0JBNEJBLEtBcUJDLEtBMENBLHVCQVFFO0VBQ0QsZ0JBQUE7O0FBSUYsR0F4R0EsZ0JBNEJBLEtBcUJDLEtBdURDO0FBQUssR0F4R1AsZ0JBNEJBLEtBcUJDLEtBdURRO0VBQ1IsbUJBQUE7RUFDQSxzQkFBQTs7QUF6REYsR0FqREMsZ0JBNEJBLEtBcUJDLEtBNkREO0VBQ0MsaUJBQUE7RUFDQSxnQkFBQTs7QUEvREYsR0FqREMsZ0JBNEJBLEtBcUJDLEtBNkRELEVBSUM7RUFDQyxtQkFBQTtFQUNBLGVBQUE7O0FBbkVILEdBakRDLGdCQTRCQSxLQXFCQyxLQTZERCxFQUlDLEtBSUM7RUFDQyxtQkFBQTtFQUNBLGlCQUFBO0VBQ0EsZUFBQTtFQUNBLGdCQUFBO0VmNkNKLDBCQUFBO0VBQWlDLG9DQUFBO0VBQ2pDLHVCQUFBO0VBQThCLDZCQUFBO0VBQzlCLGtCQUFBO0VBQXlCLDRCQUFBO0VlN0NyQixzQkFBQTtFQUNBLGNBQUE7RUFDQSxpQkFBQTtFQUNBLFlBQUE7O0FBR0MsR0FsSUosZ0JBNEJBLEtBcUJDLEtBNkRELEVBSUMsS0FJQyxPQVdFLElBQUksV0FDSDtBQUNELEdBbklKLGdCQTRCQSxLQXFCQyxLQTZERCxFQUlDLEtBSUMsT0FXRSxJQUFJLFdBRUg7RUFDQSxXQUFBO0VBQ0EseUJBQUE7RUFDQSx5QkFBQTs7QUFJRixHQTFJSCxnQkE0QkEsS0FxQkMsS0E2REQsRUFJQyxLQUlDLE9Bb0JFLEtBQUs7RUFDTCxlQUFBO0Vmd1FKLE9BQUE7RUFBUyx5QkFBQTtFQUNWLG9CQUFBO0VBQ0EsaUJBQUE7RUFDQSxZQUFBOztBZXJXQSxHQWpEQyxnQkE0QkEsS0FxQkMsS0FrR0Q7RUFDQyx5QkFBQTtFQUNBLFVBQUE7RUFDQSxXQUFBOztBQXJHRixHQWpEQyxnQkE0QkEsS0FxQkMsS0FrR0QsR0FNQztFQUNDLGtCQUFBO0VBQ0EscUJBQUE7RUFHQSxjQUFBOztBQUVBLEdBaEtGLGdCQTRCQSxLQXFCQyxLQWtHRCxHQU1DLEdBT0U7RUFDQSw2QkFBQTs7QUFFQSxHQW5LSCxnQkE0QkEsS0FxQkMsS0FrR0QsR0FNQyxHQU9FLHNCQUdDO0VBQ0EsYUFBQTs7QUFKRixHQWhLRixnQkE0QkEsS0FxQkMsS0FrR0QsR0FNQyxHQU9FLHNCQU9BO0VmQUosMEJBQUE7RUFBaUMsb0NBQUE7RUFDakMsdUJBQUE7RUFBOEIsNkJBQUE7RUFDOUIsa0JBQUE7RUFBeUIsNEJBQUE7RWVBcEIsY0FBQTs7QUFFQSxHQTNLSixnQkE0QkEsS0FxQkMsS0FrR0QsR0FNQyxHQU9FLHNCQU9BLHFCQUlFO0VBQ0EsK0JBQUE7O0FBWkgsR0FoS0YsZ0JBNEJBLEtBcUJDLEtBa0dELEdBTUMsR0FPRSxzQkFPQSxxQkFRQztFQUNDLHNCQUFBOztBQUtILEdBckxGLGdCQTRCQSxLQXFCQyxLQWtHRCxHQU1DLEdBNEJHO0FBQUssR0FyTFQsZ0JBNEJBLEtBcUJDLEtBa0dELEdBTUMsR0E0QlU7RUFDUixtQkFBQTtFQUNBLHNCQUFBOztBQXRJSixHQWpEQyxnQkE0QkEsS0FxQkMsS0FrR0QsR0FNQyxHQWtDQztFQUNDLFVBQUE7O0FBM0lKLEdBakRDLGdCQTRCQSxLQXFCQyxLQWtHRCxHQU1DLEdBa0NDLEdBSUM7RUFDQyxVQUFBO0VBQ0EscUJBQUE7RUFDQSxlQUFBO0VBQ0EscUJBQUE7O0FBbEpMLEdBakRDLGdCQTRCQSxLQXFCQyxLQWtHRCxHQU1DLEdBa0NDLEdBSUMsR0FPQztFQUNDLGVBQUE7RUFDQSxtQkFBQTs7QUF2Sk4sR0FqREMsZ0JBNEJBLEtBcUJDLEtBa0dELEdBTUMsR0FrQ0MsR0FJQyxHQVlDO0FBMUpMLEdBakRDLGdCQTRCQSxLQXFCQyxLQWtHRCxHQU1DLEdBa0NDLEdBSUMsR0FhQztFQUNDLGVBQUE7RUFDQSxTQUFBO0VBQ0Esc0JBQUE7RUFDQSxzQkFBQTtFQ2xTUCxrQkFBQTtFQUNBLG1CQUFBO0VBRUEsb0JBQUE7RUFDQSxvQkFBQTs7QUR3U0EsR0ExTkUsZ0JBME5BO0VBQ0QsZ0JBQUE7O0FBSUQsR0EvTkUsZ0JBK05EO0VBQ0EsWUFBQTtFQUNBLFlBQUE7RUFDQSxnQkFBQTtFQUNBLGdCQUFBO0VBQ0Esa0JBQUE7O0FBTEQsR0EvTkUsZ0JBK05ELE1BT0E7RUN4VEQsa0JBQUE7RUFDQSxrQkFBQTtFQUVBLG9CQUFBO0VBQ0Esb0JBQUE7RURzVEUscUJBQUE7RUFDQSxtQkFBQTtFQUNBLGdDQUFBO0VBQ0EsYUFBQTtFQUNBLG9CQUFBOztBQWJGLEdBL05FLGdCQStORCxNQWdCQTtFQUVDLG9CQUFBO0VBQ0EsZ0JBQUE7O0FBbkJGLEdBL05FLGdCQStORCxNQWdCQSxHQUtDO0VBQ0MsaUJBQUE7RUFDQSxTQUFBO0VBQ0EscUJBQUE7O0FBR0QsR0ExUEEsZ0JBK05ELE1BZ0JBLEdBV0c7RUFDRCxrQkFBQTs7QUE1QkgsR0EvTkUsZ0JBK05ELE1BZ0JBLEdBZUM7RUFDQyxXQUFBO0VBQ0EsVUFBQTtFQUNBLFdBQUE7RUFDQSxpQkFBQTtFQUNBLDZCQUFBO0VBQ0EsbUJBQUE7RUFDQSxtQkFBQTtFZmxFRiw4QkFBQTtFQUNBLDJCQUFBO0VBQ0Esc0JBQUE7O0FlMEJELEdBL05FLGdCQStORCxNQWdCQSxHQWVDLEdBVUM7RUFDQyxnQkFBQTtFQUNBLFlBQUE7RUFDQSxzQkFBQTs7QUE1Q0osR0EvTkUsZ0JBK05ELE1BZ0JBLEdBZ0NDO0VBQ0MsaUJBQUE7RUFDQSxZQUFBO0VBQ0Esb0JBQUE7O0FBbkRILEdBL05FLGdCQStORCxNQWdCQSxHQWdDQyxHQUtDO0VBQ0Msa0JBQUE7O0FBR0QsR0F4UkQsZ0JBK05ELE1BZ0JBLEdBZ0NDLEdBU0U7RUFDQSxTQUFTLE9BQVQ7RUFDQSxjQUFBO0VBQ0EsV0FBQTtFQUNBLFlBQUE7RUFDQSxTQUFBO0VBQ0EsUUFBQTs7QUFPTDtBQUNBLGdCQUFpQixTQUFRO0FBQ3pCO0VmaElFLDBCQUFBO0VBQWlDLG9DQUFBO0VBQ2pDLHVCQUFBO0VBQThCLDZCQUFBO0VBQzlCLGtCQUFBO0VBQXlCLDRCQUFBO0VlZ0kxQixzQkFBQTtFQzNYQSxrQkFBQTtFQUNBLG1CQUFBO0VBRUEsb0JBQUE7RUFDQSxvQkFBQTs7QUQyWEQsZ0JBQWlCLFNBQVE7QUFDekIsV0FBWTtBQUNaO0VDallDLGtCQUFBO0VBQ0EsbUJBQUE7RUFFQSxvQkFBQTtFQUNBLG9CQUFBO0VEK1hBLGdKQUFBOztBQUdELFdBQVk7RUFDWCxZQUFBO0VBQ0EsVUFBQTtFQUNBLFNBQUE7O0FBR0QsZ0JBQWlCLFNBQVE7RWZ2SHZCLDhCQUFBO0VBQ0EsMkJBQUE7RUFDQSxzQkFBQTtFZXVIRCxjQUFBO0VBQ0EsYUFBQTtFQUNBLFdBQUE7RUFDQSxpQkFBQTtFQUNBLFNBQUE7RUFDQSxZQUFBO0VBQ0EsYUFBQTtFQUNBLGdCQUFBO0VBQ0EsV0FBQTtFQUNBLGdCQUFBO0VBQ0EsaUJBQUE7RUFDQSxjQUFBOztBQUdELGlCQUFpQjtFQUNoQixVQUFBO0VBQ0EsY0FBQTtFQzlaQSxlQUFBO0VBQ0EsbUJBQUE7RUFFQSxtQkFBQTtFQUNBLG9CQUFBO0VEa2FBLGdKQUFBOztBQVZELGlCQUFpQixpQkFJaEI7RUFDQyxjQUFBO0VBQ0EsbUJBQUE7O0FBTUQsaUJBWmdCLGlCQVlkLEtBQUk7RUFDTCxtQkFBQTs7O0FBS0Y7RUFDQyxvQkFBQTs7QUFERCx1QkFHQyxTQUFTO0VBQ1IsbUJBQUE7RUFDQSxpQkFBQTs7QUFMRix1QkFRQztFQUVDLFlBQUE7RUFHQSxnQkFBQTs7QUFJRjtFQUNDLGVBQUE7RUFDQSxNQUFBO0VBQ0EsV0FBQTtFQUNBLFdBQUE7O0FBSkQsZ0JBTUM7RUFDQyxpQkFBQTs7QUFQRixnQkFNQyxrQkFHQztFQUNDLGdCQUFBOztBQVZILGdCQU1DLGtCQUdDLE9BR0M7RUFDQyxnQkFBQTs7QUFPSjtFQUNDLGtCQUFBO0VBQ0EsVUFBQTtFQUNBLFVBQUE7O0FBRUEsS0FBQztFQUNBLGFBQUEifQ== */ 1632/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL25vZGVfbW9kdWxlcy9ja3NvdXJjZS1zYW1wbGVzLWZyYW1ld29yay9jb21wb25lbnRzL2dsb2JhbC9nbG9iYWwubGVzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ja3NvdXJjZS1zYW1wbGVzLWZyYW1ld29yay9jb21wb25lbnRzL2NvcmUvY29yZS5sZXNzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2Nrc291cmNlLXNhbXBsZXMtZnJhbWV3b3JrL2NvbXBvbmVudHMvZ3JpZC9ncmlkLmxlc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvY2tzb3VyY2Utc2FtcGxlcy1mcmFtZXdvcmsvbm9kZV9tb2R1bGVzL2xlc3NoYXQvYnVpbGQvbGVzc2hhdC5sZXNzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2Nrc291cmNlLXNhbXBsZXMtZnJhbWV3b3JrL2NvbXBvbmVudHMvaGVhZGVyLWEvaGVhZGVyLWEubGVzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ja3NvdXJjZS1zYW1wbGVzLWZyYW1ld29yay9jb21wb25lbnRzL25hdmlnYXRpb24tYS9uYXZpZ2F0aW9uLWEubGVzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ja3NvdXJjZS1zYW1wbGVzLWZyYW1ld29yay9jb21wb25lbnRzL25hdmlnYXRpb24tYi9uYXZpZ2F0aW9uLWIubGVzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ja3NvdXJjZS1zYW1wbGVzLWZyYW1ld29yay9jb21wb25lbnRzL2Zvb3Rlci1hL2Zvb3Rlci1hLmxlc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvY2tzb3VyY2Utc2FtcGxlcy1mcmFtZXdvcmsvY29tcG9uZW50cy9jb250ZW50L2NvbnRlbnQubGVzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ja3NvdXJjZS1zYW1wbGVzLWZyYW1ld29yay9jb21wb25lbnRzL2J1dHRvbi1hL2J1dHRvbi1hLmxlc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvY2tzb3VyY2Utc2FtcGxlcy1mcmFtZXdvcmsvY29tcG9uZW50cy9iYWxsb29uLWEvYmFsbG9vbi1hLmxlc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvY2tzb3VyY2Utc2FtcGxlcy1mcmFtZXdvcmsvY29tcG9uZW50cy9pY29uL2ljb24ubGVzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ja3NvdXJjZS1zYW1wbGVzLWZyYW1ld29yay9jb21wb25lbnRzL3N3aXRjaC9zd2l0Y2gubGVzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ja3NvdXJjZS1zYW1wbGVzLWZyYW1ld29yay9jb21wb25lbnRzL3RvZ2dsZXIvdG9nZ2xlci5sZXNzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2Nrc291cmNlLXNhbXBsZXMtZnJhbWV3b3JrL2NvbXBvbmVudHMvbW9kYWwvbW9kYWwubGVzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ja3NvdXJjZS1zYW1wbGVzLWZyYW1ld29yay9jb21wb25lbnRzL2Jhc2ljc2FtcGxlL2NvcmUubGVzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ja3NvdXJjZS1zYW1wbGVzLWZyYW1ld29yay9jb21wb25lbnRzL2Jhc2ljc2FtcGxlL2Fkam9pbmVkLmxlc3MiLCIuLi8uLi9zYW1wbGVzL2xlc3MvY3VzdG9tLmxlc3MiLCIuLi8uLi9zYW1wbGVzL3Rvb2xiYXJjb25maWd1cmF0b3IvbGVzcy90b29sYmFybW9kaWZpZXIubGVzcyIsIi4uLy4uL3NhbXBsZXMvdG9vbGJhcmNvbmZpZ3VyYXRvci9sZXNzL2Jhc2UubGVzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBc0RBLFFBSGlDO0VBeUNoQztJQUNDLHdCQUFBOzs7QUMxRkY7QUFBUztBQUFPO0FBQVM7QUFBWTtBQUFRO0FBQVE7QUFBUTtBQUFRO0FBQU07QUFBTTtBQUFLO0VBQ3JGLGNBQUE7O0FBR0Q7QUFBTTtFQUNMLFNBQUE7RUFDQSxVQUFBO0VBQ0Esd0JETitCLHVDQ00vQjtFQUNBLGdCQUFBO0VBQ0EsY0FBQTs7QUNIQSxZQUFZO0VBQ1gsVUFBQTs7QUFERCxZQUFZO0VBQ1gsVUFBQTs7QUFERCxZQUFZO0VBQ1gsVUFBQTs7QUFERCxZQUFZO0VBQ1gsVUFBQTs7QUFERCxZQUFZO0VBQ1gsVUFBQTs7QUFERCxZQUFZO0VBQ1gsVUFBQTs7QUFERCxZQUFZO0VBQ1gsVUFBQTs7QUFERCxZQUFZO0VBQ1gsVUFBQTs7QUFERCxZQUFZO0VBQ1gsVUFBQTs7QUFERCxZQUFZO0VBQ1gsV0FBQTs7QUY0Q0YsUUFIaUM7RUVqQ2hDO0VBS0MsWUFBWTtFQUFaLFlBQVk7RUFBWixZQUFZO0VBQVosWUFBWTtFQUFaLFlBQVk7RUFBWixZQUFZO0VBQVosWUFBWTtFQUFaLFlBQVk7RUFBWixZQUFZO0lBSlosV0FBQTs7O0FBYUYsQ0FBQztFQ3FSQyw4QkFBQTtFQUNBLDJCQUFBO0VBQ0Esc0JBQUE7RURyUkQsZ0JBQUE7RUFDQSxpQkFBQTtFQUNBLFdBQUE7O0FBSUEsQ0FEQSxxQkFDQztBQUFELGVBQUM7QUFBUSxDQURULHFCQUNVO0FBQUQsZUFBQztFQUNULFNBQVMsRUFBVDtFQUNBLGNBQUE7RUFDQSxnQkFBQTtFQUNBLGtCQUFBO0VBQ0EsWUFBQTtFQUNBLGNBQUE7RUFDQSxRQUFBO0VBQ0EsU0FBQTs7QUFLRCxDQURBLHFCQUNDO0FBQUQsZUFBQztFQUNBLFdBQUE7O0FBSUY7RUMyUEUsOEJBQUE7RUFDQSwyQkFBQTtFQUNBLHNCQUFBO0VEM1BELGlCQUFBO0VBQ0Esa0JBQUE7O0FBS0Msc0JBREQsRUFBQyxxQkFDQztFQUNBLGVBQUE7O0FBR0Qsc0JBTEQsRUFBQyxxQkFLQztFQUNBLGdCQUFBOztBRmpCSCxRQUhpQztFRTBCOUIsc0JBREQsRUFBQyxxQkFDQztJQUNBLGdCQUFBOztFQUdELHNCQUxELEVBQUMscUJBS0M7SUFDQSxpQkFBQTs7O0FFN0VKO0VBQ0MsaUJBQUE7RUFHQSxnQkFBQTs7QUFKRCxTQU1DO0VBQ0MsZ0JBQUE7O0FKMENGLFFBSGlDO0VBNkNqQyxTSXJGQztJQUlFLGtCQUFBOzs7QUFWSCxTQU1DLGVBT0M7RUFDQyxtQkFBQTs7QUNWSDtFQUNDLFlBQUE7RUFDQSxtQkFBQTtFQUNBLGtCQUFBO0VBQ0EsT0FBQTtFQUNBLFFBQUE7RUFDQSxNQUFBO0VBQ0EsVUFBQTtFQUNBLGdCQUFBOztBTHFDRCxRQUhpQztFQTZDakM7SUs1RUUsa0JBQUE7OztBQVhGLGFBY0M7RUFDQyxnQkFBQTtFQUNBLFNBQUE7RUFDQSxnQkFBQTs7QUFqQkYsYUFjQyxHQUtDO0FBbkJGLGFBY0MsR0FLSyxHQUFHO0VBQ04scUJBQUE7O0FMeUJILFFBSGlDO0VBNkNqQyxhS3pFQztJQVVFLFdBQUE7SUFDQSx1QkFBQTtJQUNBLG1CQUFBO0lBQ0EscUJBQUE7SUFDQSxXQUFBOztFQUVBLGFBaEJGLEdBZ0JHO0VBQVMsYUFoQlosR0FnQmE7SUFDVixhQUFBOzs7QUFLRCxhQXRCRixHQXFCRSxhQUNDO0VBQ0EsZ0JBQUE7O0FMUUosUUFIaUM7RUE2Q2pDLGFLekVDLEdBcUJFLGFBQ0M7SUFJQyxnQkFBQTs7O0FBSUYsYUE5QkYsR0FxQkUsYUFTQztFQUNBLGlCQUFBOztBTEFKLFFBSGlDO0VBNkNqQyxhS3pFQyxHQXFCRSxhQVNDO0lBSUMsa0JBQUE7OztBQU1GLGFBeENGLEdBdUNDLEdBQ0c7RUFDRCxpQkFBQTs7QUF2REosYUFjQyxHQXVDQyxHQUtDO0VMeENGLGVBQUE7RUFDQSxtQkFBQTtFQUNBLGlCQUFBO0VBQ0Esb0JBQUE7RUt1Q0csaUJBQUE7RUFDQSxXQUFBO0VBQ0EsV0FBQTtFQUNBLGlCQUFBO0VBQ0EscUJBQUE7RUFDQSx5QkFBQTs7QUFFQSxhQXJESCxHQXVDQyxHQUtDLEVBU0U7RUFDQSxlQUFBO0VBQ0EsV0FBQTs7QUFRSix5QkFBQztBQUFTLHlCQUFDO0VBQ1Ysc0JBQWtCLHFyQkFBbEI7O0FDcEZGO0VBQ0MsaUJBQUE7RUFDQSxnQkFBQTtFQUNBLGlCQUFBOztBTmdERCxRQUhpQztFQTZDakM7SU12RkUsa0JBQUE7SUFDQSxnQkFBQTtJQUdBLFVBQUE7OztBQVZGLGFBYUM7RUFDQyxVQUFBO0VBQ0EsZ0JBQUE7RUFDQSxTQUFBO0VBQ0EsaUJBQUE7O0FBakJGLGFBYUMsR0FNQztBQW5CRixhQWFDLEdBTUssR0FBRztFQUNOLHFCQUFBOztBTitCSCxRQUhpQztFQTZDakMsYU1oRkM7SUFXRSxjQUFBO0lBQ0EsV0FBQTtJQUNBLHFCQUFBOzs7QU55QkgsUUFIaUM7RUE2Q2pDLGFNaEZDLEdBZ0JDO0lBRUUsa0JBQUE7OztBQUdELGFBckJGLEdBZ0JDLEdBS0c7RUFDRCxpQkFBQTs7QU5nQkosUUFIaUM7RUE2Q2pDLGFNaEZDLEdBZ0JDLEdBS0c7SUFJQSxjQUFBOzs7QUF0Q0wsYUFhQyxHQWdCQyxHQWFDO0VId1FELDhCQUFBO0VBQ0EsMkJBQUE7RUFDQSxzQkFBQTtFR3hRRSx5QkFBQTtFQUNBLHFCQUFBO0VBQ0EsYUFBQTs7QU5LSixRQUhpQztFQTZDakMsYU1oRkMsR0FnQkMsR0FhQztJQU9FLFdBQUE7SUhxT0gsd0JBQUE7SUFBaUMsb0NBQUE7SUFDakMscUJBQUE7SUFBOEIsNkJBQUE7SUFDOUIsZ0JBQUE7SUFBeUIsNEJBQUE7OztBSXhSM0I7RVB3QkMsZUFBQTtFQUNBLG9CQUFBO0VBQ0EsbUJBQUE7RUFDQSxvQkFBQTtFT3hCQSxtQkFBQTtFQUNBLHNCQUFBO0VBQ0EsZ0JBQUE7RUFDQSxjQUFBOztBQU5ELFNQNEVDO0VBQ0MsY0FBQTtFQUNBLHFCQUFBO0VBRUEsaUNBQUE7O0FBRUEsU0FORCxFQU1FO0VBQ0EsY0FBQTs7QU9uRkgsU0FRQztFQUNDLFNBQUE7RUFDQSxxQkFBQTtFQUNBLGtCQUFBOztBQ1hGO0VSd0JDLGVBQUE7RUFDQSxtQkFBQTtFQUNBLG1CQUFBO0VBQ0Esb0JBQUE7RVF6QkEsZ0JBQUE7RUFDQSxrQkFBQTtFQUNBLHFCQUFBOztBQUpELFFBU0M7RUFDQyxnQkFBQTs7QUFWRixRQWFDO0FBYkQsUUFhSztBQWJMLFFBYVM7QUFiVCxRQWFjO0FBYmQsUUFhMEIsU0FBUSxJQUFJO0FBYnRDLFFBYXdEO0VBQ3RELGlCQUFBOztBQWRGLFFBaUJDO0FBakJELFFBaUJPO0VMcVFMLDBCQUFBO0VBQWlDLG9DQUFBO0VBQ2pDLHVCQUFBO0VBQThCLDZCQUFBO0VBQzlCLGtCQUFBO0VBQXlCLDRCQUFBO0VLclF6QixnQkFBQTs7QUFuQkYsUUFzQkM7QUF0QkQsUUFzQk07QUF0Qk4sUUFzQlk7QUF0QlosUUFzQmlCO0VBQ2YsbUJBQUE7O0FBdkJGLFFBMEJDO0FBMUJELFFBMEJhO0VBQ1gsZ0JBQUE7RUFDQSw4QkFBQTtFQUNBLHFCQUFBOztBQTdCRixRQW9DQyxFUndDQTtBUTVFRCxRQW9DSSxHUndDSDtBUTVFRCxRQW9DUSxHUndDUDtBUTVFRCxRQW9DWSxXUndDWDtBUTVFRCxRQW9Dd0IsR1J3Q3ZCO0FRNUVELFFBb0M0QixHUndDM0I7QVE1RUQsUUFvQ2dDLEdSd0MvQjtBUTVFRCxRQW9Db0MsR1J3Q25DO0FRNUVELFFBb0N3QyxHUndDdkM7RUFDQyxjQUFBO0VBQ0EscUJBQUE7RUFFQSxpQ0FBQTs7QUFFQSxRUTlDRCxFUndDQSxFQU1FO0FBQUQsUVE5Q0UsR1J3Q0gsRUFNRTtBQUFELFFROUNNLEdSd0NQLEVBTUU7QUFBRCxRUTlDVSxXUndDWCxFQU1FO0FBQUQsUVE5Q3NCLEdSd0N2QixFQU1FO0FBQUQsUVE5QzBCLEdSd0MzQixFQU1FO0FBQUQsUVE5QzhCLEdSd0MvQixFQU1FO0FBQUQsUVE5Q2tDLEdSd0NuQyxFQU1FO0FBQUQsUVE5Q3NDLEdSd0N2QyxFQU1FO0VBQ0EsY0FBQTs7QVFuRkgsUUF3Q0M7QUF4Q0QsUUF3Q0s7QUF4Q0wsUUF3Q1M7QUF4Q1QsUUF3Q2E7QUF4Q2IsUUF3Q2lCO0VBQ2YsV0FBQTtFQUNBLGdCQUFBOztBQTFDRixRQXdDQyxHQUtDO0FBN0NGLFFBd0NLLEdBS0g7QUE3Q0YsUUF3Q1MsR0FLUDtBQTdDRixRQXdDYSxHQUtYO0FBN0NGLFFBd0NpQixHQUtmO0FBN0NGLFFBd0NDLEdBS087QUE3Q1IsUUF3Q0ssR0FLRztBQTdDUixRQXdDUyxHQUtEO0FBN0NSLFFBd0NhLEdBS0w7QUE3Q1IsUUF3Q2lCLEdBS1Q7RUFDTCxrQkFBQTs7QUE5Q0gsUUF3Q0MsR0FVQyxFQUFDO0FBbERILFFBd0NLLEdBVUgsRUFBQztBQWxESCxRQXdDUyxHQVVQLEVBQUM7QUFsREgsUUF3Q2EsR0FVWCxFQUFDO0FBbERILFFBd0NpQixHQVVmLEVBQUM7RUFDQSxnQkFBQTtFQUNBLHNCQUFBO0VBQ0EsVUFBQTtFQUNBLFNBQUE7O0FBR0QsUUFqQkQsR0FpQkUsTUFDQSxFQUFDO0FBREYsUUFqQkcsR0FpQkYsTUFDQSxFQUFDO0FBREYsUUFqQk8sR0FpQk4sTUFDQSxFQUFDO0FBREYsUUFqQlcsR0FpQlYsTUFDQSxFQUFDO0FBREYsUUFqQmUsR0FpQmQsTUFDQSxFQUFDO0VBQ0EsVUFBQTs7QUFJRixRQXZCRCxHQXVCRSxPQUNBO0FBREQsUUF2QkcsR0F1QkYsT0FDQTtBQURELFFBdkJPLEdBdUJOLE9BQ0E7QUFERCxRQXZCVyxHQXVCVixPQUNBO0FBREQsUUF2QmUsR0F1QmQsT0FDQTtFTDhERCwwREFBQTtFQUNBLHVEQUFBO0VBQ0EscURBQUE7RUFDQSxrREFBQTtFSy9ERSxVQUFBOztBQWxFSixRQXVFQztBQXZFRCxRQXVFUTtBQXZFUixRQXVFZ0IsU0FBUSxJQUFJO0VMK00xQiwwQkFBQTtFQUFpQyxvQ0FBQTtFQUNqQyx1QkFBQTtFQUE4Qiw2QkFBQTtFQUM5QixrQkFBQTtFQUF5Qiw0QkFBQTtFQW1CekIsdURBQUE7RUFDQSxvREFBQTtFQUNBLCtDQUFBO0VLbE9BLGFBQUE7RUFDQSxjQUFBO0VBRUEseUJBQUE7RUFDQSxrQkFBQTs7QUFFQSxRQVZELE1BVUU7QUFBRCxRQVZNLE9BVUw7QUFBRCxRQVZjLFNBQVEsSUFBSSxnQkFVekI7RUFDQSxxQkFBQTtFQUNBLFVBQUE7RUx3TkQsd0VBQUE7RUFDQSxxRUFBQTtFQUNBLGdFQUFBOztBSzdTRixRQThGQztFQUNDLDhCQUFBO0VBQ0EsZUFBQTs7QUFoR0YsUUFtR0M7RUFDQyxrQkFBQTtFQUNBLDZCUm5HMkMsd0JRbUczQztFUjdFRCxlQUFBO0VBQ0EsZUFBQTtFQUNBLG1CQUFBO0VBQ0EsbUJBQUE7O0FRM0JELFFBeUdDO0VBQ0Msa0JBQUE7O0FBMUdGLFFBNkdDO0VSckZBLGVBQUE7RUFDQSxrQkFBQTtFQUNBLG1CQUFBO0VBQ0Esb0JBQUE7RVFvRkMsbUJBQUE7O0FBL0dGLFFBa0hDO0VSMUZBLGlCQUFBO0VBQ0EsaUJBQUE7RUFDQSxvQkFBQTtFQUNBLG9CQUFBO0VReUZDLGlCQUFBOztBQXBIRixRQXVIQztFUi9GQSxlQUFBO0VBQ0EsaUJBQUE7RUFDQSxtQkFBQTtFQUNBLG1CQUFBO0VROEZDLGdCQUFBO0VBQ0Esa0JBQUE7O0FBMUhGLFFBNkhDO0VSckdBLGlCQUFBO0VBQ0EsaUJBQUE7RUFDQSxvQkFBQTtFQUNBLG9CQUFBO0VRb0dDLGdCQUFBO0VBQ0Esa0JBQUE7O0FBaElGLFFBbUlDO0VSM0dBLGlCQUFBO0VBQ0EsaUJBQUE7RUFDQSxvQkFBQTtFQUNBLG9CQUFBO0VRMEdDLGdCQUFBO0VBQ0Esa0JBQUE7O0FBdElGLFFBeUlDO0VBQ0MsU0FBQTtFQUNBLDZCQUFBO0VBQ0EsZUFBQTs7QUFJQSxRQURELE1BQ0U7RUFDQSxhQUFBO0VBQ0Esa0JBQUE7O0FBR0QsUUFORCxNQU1FO0VMaURELDBCQUFBO0VBQ0EsdUJBQUE7RUFDQSxrQkFBQTs7QUt4TUYsUUE0SkM7RVJwSUEsZUFBQTtFQUNBLGtCQUFBO0VBQ0EsbUJBQUE7RUFDQSxvQkFBQTtFUW1JQyxvQlI3SjhCLHVDUTZKOUI7RUFDQSxnQkFBQTtFTDRJQSx1REFBQTtFQUNBLG9EQUFBO0VBQ0EsK0NBQUE7O0FLN1NGLFFBdUtDLEVBQ0M7RUFDQyxzQkFBQTs7QUF6S0gsUUF1S0MsRUFLQztFQUNDLGNBQUE7O0FBN0tILFFBaUxDO0VBQ0MsVUFBQTtFQUNBLFNBQUE7RUFFQSxXQUFBO0VBQ0EsY0FBQTtFQUNBLGdCQUFBOztBQXZMRixRQTBMQztBQTFMRCxRQTBMTTtFUmxLTCxrQkFBQTtFQUNBLG1CQUFBO0VBQ0EsbUJBQUE7RUFDQSxvQkFBQTtFUWtLQyxnSkFBQTs7QUE3TEYsUUEwTEMsSUFLQztBQS9MRixRQTBMTSxLQUtKO0VBQ0MsU0FBQTs7QUFoTUgsUUFxTUMsSUFBSTtFQUNILGVBQUE7RUFDQSxjQUFBOztBQXZNRixRQTBNQztFQUNDLFdBQUE7O0FBM01GLFFBOE1DLEdBRUM7QUFoTkYsUUE4TUssR0FFSDtBQWhORixRQThNQyxHQUVLO0FBaE5OLFFBOE1LLEdBRUM7RUFDSCxnQkFBQTs7QUFqTkgsUUE4TUMsR0FNQztBQXBORixRQThNSyxHQU1IO0VSNUxELGVBQUE7RUFDQSxtQkFBQTtFQUNBLG9CQUFBO0VBQ0Esb0JBQUE7O0FRM0JELFFBME5DLFNBQVEsSUFBSTtFQUNYLFdBQUE7O0FBM05GLFFBOE5DLElBQUc7RUFDRix1QkFBQTtFQUNBLGFBQUE7RUFDQSxxQkFBQTs7O0FBR0EsUUFORCxJQUFHLEtBTUQ7RUFDQSxTQUFTLE1BQVQ7RUFDQSxpQkFBQTs7QUNqT0QsSUFERCxFQUNFO0FBQUQsSUFERSxPQUNEO0FBQUQsSUFEVSxNQUNUO0VOaVJELDBCQUFBO0VBQWlDLG9DQUFBO0VBQ2pDLHVCQUFBO0VBQThCLDZCQUFBO0VBQzlCLGtCQUFBO0VBQXlCLDRCQUFBO0VIaFExQixlQUFBO0VBQ0EsbUJBQUE7RUFDQSxtQkFBQTtFQUNBLG9CQUFBO0VTbkJFLFlBQUE7RUFDQSxpQkFBQTtFQUNBLGdCQUFBO0VBQ0EsZ0JBQUE7RUFDQSxjQUFBO0VBQ0EsbUJBQUE7RUFDQSxxQkFBQTtFQUNBLHFCQUFBO0VBQ0EsZUFBQTtFQUNBLFNBQUE7RUFDQSxzQkFBQTtFQUlBLGFBQUE7RUFHQSx1QkFBQTs7QUFFQSxJQXZCRixFQUNFLFNBc0JDO0FBQUQsSUF2QkMsT0FDRCxTQXNCQztBQUFELElBdkJTLE1BQ1QsU0FzQkM7RUFDQSxrQkFBQTs7QUFHRCxJQTNCRixFQUNFLFNBMEJDO0FBQUQsSUEzQkMsT0FDRCxTQTBCQztBQUFELElBM0JTLE1BQ1QsU0EwQkM7RUFDQSxtQkFBQTs7QUFvQkQsSUFoREYsRUFDRSxTQStDQztBQUFELElBaERDLE9BQ0QsU0ErQ0M7QUFBRCxJQWhEUyxNQUNULFNBK0NDO0VOa09GLDRCQUFBO0VBQWlDLG9DQUFBO0VBQ2pDLHlCQUFBO0VBQThCLDZCQUFBO0VBQzlCLG9CQUFBO0VBQXlCLDRCQUFBO0VNblB2QixXQUFBO0VBQ0EsVUFBQTtFQUNBLG1CQUFBO0VBQ0EsZ0JBQUE7RUFDQSxrQkFBQTtFQUNBLGtCQUFBOztBQUVBLElBeENILEVBQ0UsU0ErQ0MsaUJBUkM7QUFBRCxJQXhDQSxPQUNELFNBK0NDLGlCQVJDO0FBQUQsSUF4Q1EsTUFDVCxTQStDQyxpQkFSQztFQUNBLGtCQUFBO0VBQ0EsU0FBQTtFQUNBLFFBQUE7RUFDQSxxQkFBQTs7QVRHTCxRQUhpQztFQTZDakMsSVN6RkMsRUFDRSxTQW1EQztFVHFDSixJU3pGSSxPQUNELFNBbURDO0VUcUNKLElTekZZLE1BQ1QsU0FtREM7SU44TkYsNEJBQUE7SUFBaUMsb0NBQUE7SUFDakMseUJBQUE7SUFBOEIsNkJBQUE7SUFDOUIsb0JBQUE7SUFBeUIsNEJBQUE7SU1uUHZCLFdBQUE7SUFDQSxVQUFBO0lBQ0EsbUJBQUE7SUFDQSxnQkFBQTtJQUNBLGtCQUFBO0lBQ0Esa0JBQUE7O0VBRUEsSUF4Q0gsRUFDRSxTQW1EQywwQkFaQztFQUFELElBeENBLE9BQ0QsU0FtREMsMEJBWkM7RUFBRCxJQXhDUSxNQUNULFNBbURDLDBCQVpDO0lBQ0Esa0JBQUE7SUFDQSxTQUFBO0lBQ0EsUUFBQTtJQUNBLHFCQUFBOztFQUpELElBeENILEVBQ0UsU0FtREMsMEJBWkM7RUFBRCxJQXhDQSxPQUNELFNBbURDLDBCQVpDO0VBQUQsSUF4Q1EsTUFDVCxTQW1EQywwQkFaQztJQUNBLGtCQUFBO0lBQ0EsU0FBQTtJQUNBLFFBQUE7SUFDQSxxQkFBQTs7O0FBY0YsSUExREYsRUFDRSxTQXlEQztBQUFELElBMURDLE9BQ0QsU0F5REM7QUFBRCxJQTFEUyxNQUNULFNBeURDO0FBQ0QsSUEzREYsRUFDRSxTQTBEQztBQUFELElBM0RDLE9BQ0QsU0EwREM7QUFBRCxJQTNEUyxNQUNULFNBMERDO0VBQ0EsV0FBQTtFQUNBLG1CQUFBOztBQUdELElBaEVGLEVBQ0UsU0ErREM7QUFBRCxJQWhFQyxPQUNELFNBK0RDO0FBQUQsSUFoRVMsTUFDVCxTQStEQztFQUNBLHFCQUFBO0VBQ0EsVUFBQTtFTnFPRix5RUFBQTtFQUNBLHNFQUFBO0VBQ0EsaUVBQUE7O0FNNU5BLElBN0VELEVBNkVFO0FBQUQsSUE3RUUsT0E2RUQ7QUFBRCxJQTdFVSxNQTZFVDtFQUNBLG1CQUFBOztBQUVBLElBaEZGLEVBNkVFLGNBR0M7QUFBRCxJQWhGQyxPQTZFRCxjQUdDO0FBQUQsSUFoRlMsTUE2RVQsY0FHQztBQUNELElBakZGLEVBNkVFLGNBSUM7QUFBRCxJQWpGQyxPQTZFRCxjQUlDO0FBQUQsSUFqRlMsTUE2RVQsY0FJQztFQUNBLGNBQUE7RUFDQSxtQkFBQTs7QUFJRixJQXZGRCxFQXVGRTtBQUFELElBdkZFLE9BdUZEO0FBQUQsSUF2RlUsTUF1RlQ7QUFBRCxJQXZGRCxFSGlERyxhQXhDSCxHQWdCQyxHQWFDLEVBV0U7QUdzQ0gsSUF2RkUsT0hpREEsYUF4Q0gsR0FnQkMsR0FhQyxFQVdFO0FHc0NILElBdkZVLE1IaURSLGFBeENILEdBZ0JDLEdBYUMsRUFXRTtFR3VDRixXQUFBO0VBQ0EsbUJBQUE7O0FBRUEsSUEzRkYsRUF1RkUsb0JBSUM7QUFBRCxJQTNGQyxPQXVGRCxvQkFJQztBQUFELElBM0ZTLE1BdUZULG9CQUlDO0FBQ0QsSUE1RkYsRUF1RkUsb0JBS0M7QUFBRCxJQTVGQyxPQXVGRCxvQkFLQztBQUFELElBNUZTLE1BdUZULG9CQUtDO0FBREQsSUEzRkYsRUhpREcsYUF4Q0gsR0FnQkMsR0FhQyxFQVdFLE1HMENEO0FBQUQsSUEzRkMsT0hpREEsYUF4Q0gsR0FnQkMsR0FhQyxFQVdFLE1HMENEO0FBQUQsSUEzRlMsTUhpRFIsYUF4Q0gsR0FnQkMsR0FhQyxFQVdFLE1HMENEO0FBQ0QsSUE1RkYsRUhpREcsYUF4Q0gsR0FnQkMsR0FhQyxFQVdFLE1HMkNEO0FBQUQsSUE1RkMsT0hpREEsYUF4Q0gsR0FnQkMsR0FhQyxFQVdFLE1HMkNEO0FBQUQsSUE1RlMsTUhpRFIsYUF4Q0gsR0FnQkMsR0FhQyxFQVdFLE1HMkNEO0VBQ0EsV0FBQTtFQUNBLG1CQUFBOztBQ2hHSjtFVnNCQyxlQUFBO0VBQ0Esa0JBQUE7RUFDQSxtQkFBQTtFQUNBLG9CQUFBO0VHMlBDLDBCQUFBO0VBQWlDLG9DQUFBO0VBQ2pDLHVCQUFBO0VBQThCLDZCQUFBO0VBQzlCLGtCQUFBO0VBQXlCLDRCQUFBO0VPblIxQixnQ0FBQTtFQUVBLG1CQUFBO0VBQ0EscUJBQUE7RUFDQSxtQkFBQTtFQUNBLHdCQUFBO0VBQ0EsZ0JBQUE7RUFDQSxrQkFBQTtFQUNBLGFBQUE7RUFDQSxvQkFBQTtFQUNBLGNBQUE7O0FBRUEsVUFBQztFQUNBLGNBQUE7O0FBR0QsVUFBQztFQUNBLFNBQVMsRUFBVDtFQUNBLFFBQUE7RUFDQSxTQUFBO0VBQ0EsbUJBQUE7RUFDQSxrQkFBQTs7QUFNRCxhQUFDO0FBQUQsYUFBQztFQUNBLFVBQUE7RUFDQSw4QkFBQTtFQUNBLHlEQUFBOztBQU1ELGFBQUM7QUFBRCxhQUFDO0VBQ0EsYUFBQTtFQUNBLDhCQUFBO0VBQ0EseURBQUE7O0FBTUQsYUFBQztBQUFELGFBQUM7RUFDQSxVQUFBOztBQU1ELGFBQUM7QUFBRCxhQUFDO0VBQ0EsV0FBQTs7QUN2REYsY0FBYztBQUNkLGVBQWU7RUFDZCxTQUFTLEVBQVQ7RUFDQSxxQkFBQTtFQUNBLFdBQUE7RUFDQSxZQUFBO0VBQ0Esc0JBQUE7RUFDQSw0QkFBQTs7QUFHRCxjQUFjO0VBQ2Isa0JBQUE7O0FBR0QsZUFBZTtFQUNkLGlCQUFBOztBQUlBLGNBQUM7QUFBUyxjQUFDO0VBQ1Ysc0JBQWtCLDZjQUFsQjs7QUFLRCxtQkFBQztBQUFTLG1CQUFDO0VBQ1Ysc0JBQWtCLDZpQkFBbEI7O0FBS0QsV0FBQztBQUFTLFdBQUM7RUFDVixzQkFBa0IsNmlCQUFsQjs7QUM1QkYsSUFBSyxRQUVKO0VBQ0Msc0JBQUE7O0FBSEYsSUFBSyxRQU1KLE1BQUs7RUFDSixnQkFBQTtFQUNBLHFCQUFBOztBQVJGLElBQUssUUFXSjtFQUNDLHlCQUFBO0VBQ0EsMEJBQUE7O0FBRUEsSUFmRyxRQVdKLE1BSUU7RUFDQSxXQUFBOztBQUdELElBbkJHLFFBV0osTUFRRTtFQUNBLFlBQUE7O0FBcEJILElBQUssUUF3Qko7RUFDQyxhQUFBOztBQUlGO0VaWkMsZUFBQTtFQUNBLG1CQUFBO0VBQ0EsbUJBQUE7RUFDQSxvQkFBQTtFWVdBLGlCQUFBO0VBQ0EseUJBQUE7RUFDQSxnQkFBQTtFQUNBLHFCQUFBO0VBQ0Esc0JBQUE7RUFDQSxXQUFBO0VUMk9DLDBCQUFBO0VBQWlDLG9DQUFBO0VBQ2pDLHVCQUFBO0VBQThCLDZCQUFBO0VBQzlCLGtCQUFBO0VBQXlCLDRCQUFBO0VTM08xQixrQkFBQTs7QUFURCxPQVdDLE1BQUs7RUFDSixhQUFBOztBQVpGLE9BZUM7RUFDQyxrQkFBQTtFQUNBLFVBQUE7RUFDQSxXQUFBO0VBQ0EsZUFBQTtFQUNBLGlCQUFBOztBQUVBLE9BUEQsTUFPRTtFQUNBLDBCQUFBOztBQXZCSCxPQTJCQztFQUNDLFdBQUE7RUFDQSxzQkFBQTtFQUNBLGFBQUE7RUFDQSxjQUFBO0VBQ0EsWUFBQTtFQUNBLGdCQUFBO0VUaU5BLDRCQUFBO0VBQWlDLG9DQUFBO0VBQ2pDLHlCQUFBO0VBQThCLDZCQUFBO0VBQzlCLG9CQUFBO0VBQXlCLDRCQUFBOztBU3BQM0IsT0EyQkMsY0FTQztFQUNDLGdCQUFBO0VBQ0Esa0JBQUE7RUFDQSxjQUFBO0VBQ0EsYUFBQTtFQUNBLFlBQUE7RUFDQSxtQkFBQTtFVHdNRCw0QkFBQTtFQUFpQyxvQ0FBQTtFQUNqQyx5QkFBQTtFQUE4Qiw2QkFBQTtFQUM5QixvQkFBQTtFQUF5Qiw0QkFBQTs7QVN2TXhCLE9BbEJGLGNBU0MsU0FTRTtFQUNBLFNBQVMsRUFBVDtFQUNBLGNBQUE7RUFDQSxrQkFBQTtFQUNBLE1BQUE7RUFDQSxRQUFBO0VBQ0EsV0FBQTtFQUNBLE9BQUE7RUFFQSx5QkFBQTtFVHNLRix3Q0FBQTtFQUNBLG9DQUFBO0VBQ0EsZ0NBQUE7RUFLQSx5Q0FBQTtFQUE4QyxvQ0FBQTtFQUM5QyxxQ0FBQTtFQUEwQyw2QkFBQTtFQUMxQyxpQ0FBQTtFQUFzQyw0QkFBQTs7QVN2S3ZDLE9BQUMsTUFDQSxjQUFjLFNBQVE7RUFDckIsbUJBQUE7O0FBaEVILE9Bb0VDLE1BQUssY0FBZ0IsUUFFcEIsZ0JBQWdCO0VBQ2YsaUJBQUE7O0FBdkVILE9Bb0VDLE1BQUssY0FBZ0IsUUFTcEIsUUFBTztFQUNOLHNCQUFBO0VBQ0Esc0JBQUE7O0FBL0VILE9BbUZDLE1BQUssY0FBZ0IsUUFBUyxRQUFPO0VBQ3BDLHFCQUFBO0VBQ0EscUJBQUE7O0FDekhGO0VWazNCRSx5QkFBQTtFQUNBLHNCQUFBO0VBQ0EscUJBQUE7RUFDQSxpQkFBQTs7QVVyM0JGLFFBR0M7RUFDQyxlQUFBOztBQUpGLFFBTUM7RUFDQyxnQkFBQTs7QUFQRixRQVVDO0VBQ0MsYUFBQTs7QUFHRCxRQUFDLFVBQ0E7RUFDQyxhQUFBOztBQUZGLFFBQUMsVUFLQTtFQUNDLGdCQUFBOztBQUtIO0VBQ0MsZ0JBQUE7O0FBRUEsa0JBQUM7RUFDQSxTQUFBOztBQU1ELHNCQUFDO0FBQUQsdUJBQUM7QUFBUyxzQkFBQztBQUFELHVCQUFDO0VBQ1Ysc0JBQWtCLHlzQkFBbEI7O0FBSUEsc0JBREEsV0FDQztBQUFELHVCQURBLFdBQ0M7QUFBUyxzQkFEVixXQUNXO0FBQUQsdUJBRFYsV0FDVztFQUNWLHNCQUFrQixxdEJBQWxCOztBQU1GLHNCQUFDO0FBQ0Qsc0JBQUM7RUFDQSw2QkFBQTs7QUFLRCx1QkFBQztBQUNELHVCQUFDO0VBQ0EsZ0NBQUE7O0FDdERGO0VBQ0MsYUFBQTtFQUNBLGtCQUFBO0VBQ0EsdUJBQUE7RUFDQSxnQkFBQTtFWDRTQyw4QkFBQTtFQUNBLDJCQUFBO0VBQ0Esc0JBQUE7RVd6U0QscUJBQUE7RUFDQSxtQkFBQTtFWGd2QkMsd0NBQUE7RUFDQSxxQ0FBQTtFQUNBLG1DQUFBO0VBQ0Esb0NBQUE7RUFDQSxnQ0FBQTs7QVdqdkJELE1BQUM7RVh1UUEsNEJBQUE7RUFBaUMsb0NBQUE7RUFDakMseUJBQUE7RUFBOEIsNkJBQUE7RUFDOUIsb0JBQUE7RUFBeUIsNEJBQUE7RVd2UXpCLGVBQUE7RUFDQSxZQUFBO0VBQ0EsV0FBQTtFQUNBLGtCQUFBO0VBQ0EsU0FBQTtFQUNBLFdBQUE7RUFDQSxlQUFBO0VBQ0Esa0JBQUE7RUFDQSxpQkFBQTtFQUNBLG1CQUFBOztBQ3pCRixJQUFLO0FBQ0wsTUFBTztBQUNQLGFBQWM7QUFDZCxNQUFPO0VBQ04sZ0JBQUE7O0FBSUQ7RUFDQyxnQkFBQTs7QUFHRDtFQUNDLDZCQUFBOztBQ1hBLFNBQUM7RUFDQSx5QkFBQTtFQUNBLFdBQUE7O0FBRkQsU0FBQyxJQUlBLFNBQ0M7QUFMRixTQUFDLElBSUEsU0FDSztBQUxOLFNBQUMsSUFJQSxTQUNTO0FBTFYsU0FBQyxJQUlBLFNBQ2E7QUFMZCxTQUFDLElBSUEsU0FDaUI7RUFDZixXQUFBOztBQU5ILFNBQUMsSUFJQSxTQUtDO0VoQllGLGVBQUE7RUFDQSxtQkFBQTtFQUNBLG1CQUFBO0VBQ0Esb0JBQUE7RWdCYkcsZ0JBQUE7O0FBWEgsU0FBQyxJQUlBLFNBS0MsRUFJQztFQUNDLHFCQUFBO0VBQ0EsOEJBQUE7RUFDQSxjQUFBOztBQUVBLFNBbEJILElBSUEsU0FLQyxFQUlDLEVBS0U7RUFDQSxjQUFBOztBQW5CTCxTQUFDLElBSUEsU0FvQkM7RUFDQyxXQUFBOztBQXpCSCxTQUFDLElBSUEsU0F3QkM7RUFDQyxXQUFBOztBQTdCSCxTQUFDLElBSUEsU0E0QkM7RUFDQyxrQkFBQTtFQUNBLGNBQUE7O0FBS0gsU0FBQztFQUNBLGtCQUFBOztBQUVBLFNBSEEsT0FHQztFQUNBLFdBQUE7RUFDQSxTQUFTLEVBQVQ7RUFDQSxtQkFBQTtFQUNBLGtCQUFBO0VBQ0EsTUFBQTtFQUNBLE9BQUE7RUFDQSxRQUFBO0VBQ0EsV0FBQTs7QUN4REgsSUFBSztBQUNMLE1BQU87QUFDUCxhQUFjO0FBQ2QsTUFBTztFQUNOLGlCQUFBOztBQUdELElBQUssZ0JBQWU7RUFDbkIsZUFBQTs7QUFHRDtFQUNDLG1CQUFBO0VBQ0EsWUFBQTtFQUNBLGlCQUFBOztBQUhELE9BTUM7RUFFQyxrQkFBQTtFQUNBLFVBQUE7RUFDQSxVQUFBO0VBQ0EsbUJBQUE7RUFHQSxtQkFBQTtFQUNBLDRCQUFBOztBQUVBLE9BWEQsV0FXRTtFQUNBLHlEQUFBOztBQUtILFFBQVM7RUFDUixnQkFBQTtFQUNBLFNBQUE7RUFDQSx3QkFBQTs7QUFFQSxRQUxRLG1CQUtQO0VBQ0EsWUFBQTs7QUFLRixLQUFNO0VBQ0wsZ0JBQUE7RUFDQSxjQUFBO0VBQ0EsMEJBQUE7O0FBR0QsS0FBTSxjQUFhO0VBQ2xCLGFBQUE7O0FBSUEsUUFEUSxjQUNQO0VBQ0EsYUFBQTs7QUFGRixRQUFTLGNBS1I7RUFDQyxhQUFBOztBQUlGLFFBQ0M7RUFDQyxpQkFBQTs7QUFJRjtFQUNDLGlCQUFBOztBQURELFNBR0M7RUFDQyxXQUFBO0VBQ0EsaUJBQUE7O0FBTEYsU0FHQyxNQUlDO0VBQ0MsZ0JBQUE7O0FBRUEsU0FQRixNQUlDLFNBR0U7RUFDQSx1QkFBQTtFQUNBLFdBQUE7O0FBRkQsU0FQRixNQUlDLFNBR0UsTUFJQTtFQUNDLDBCQUFBOztBQWZMLFNBR0MsTUFpQkM7RUFDQyxXQUFBO0VBQ0EsYUFBQTs7QUFHRCxTQXRCRCxNQXNCRTtFQUNBLGdCQUFBOztBQUtIO0VBQ0MsZ0JBQUE7RUFDQSxTQUFBO0VBQ0EsVUFBQTtFQUNBLHdCQUFBOztBQUVBLHVCQUFDO0VBQ0EsWUFBQTtFQUNBLFVBQUE7O0FBS0Y7RUFDQyxpQkFBQTs7QUFERCxNQUdDLElBQUc7RUFDRixpQkFBQTs7QUFKRixNQU9DO0VBQ0MsaUJBQUE7O0FBUkYsTUFPQyxjQUdDO0VBQ0MsaUJBQUE7O0FBWEgsTUFPQyxjQU9DO0VBRUMsa0JBQUE7O0FBaEJILE1Bb0JDO0VBQ0Msa0JBQUE7RUFDQSxTQUFBO0VBRUEsU0FBQTtFQUNBLGtCQUFBOztBakJ0RkYsUUFIaUM7RUE2Q2pDLE1pQnVDQztJQVVFLFVBQUE7SUFDQSxpQkFBQTtJQUVBLFVBQUE7SUFDQSxtQkFBQTs7RUFFQSxNQWhCRixXQWdCRztJQUNBLFVBQUE7SUFDQSxXQUFBOzs7QWpCbkdKLFFBSGlDO0VBNkNqQyxNaUJ1Q0M7SUF3QkUsYUFBQTs7O0FDOUlILFFBQVM7RUFDUixvQkFBQTtFZm0yQkMseUJBQUE7RUFDQSxzQkFBQTtFQUNBLHFCQUFBO0VBQ0EsaUJBQUE7RWVwMkJELGVBQUE7O0FBSUQsb0JBQXFCO0VmNmVsQixPQUFBO0VBQVMseUJBQUE7RUFDVixvQkFBQTtFQUNBLGlCQUFBO0VBQ0EsWUFBQTs7QWU1ZUYsWUFBWTtFQUNYLGtCQUFBO0Vmd2VFLE9BQUE7RUFBUywwQkFBQTtFQUNWLGtCQUFBO0VBQ0EsZUFBQTtFQUNBLFVBQUE7O0FldGVELFlBTlcsT0FNVjtFQUNBLFNBQVMsRUFBVDtFQUNBLGNBQUE7RUFDQSxrQkFBQTtFQUNBLE1BQUE7RUFDQSxVQUFBO0VBQ0EsV0FBQTtFQUNBLE9BQUE7RWZnUEEsMEJBQUE7RUFBaUMsb0NBQUE7RUFDakMsdUJBQUE7RUFBOEIsNkJBQUE7RUFDOUIsa0JBQUE7RUFBeUIsNEJBQUE7RUFtQnpCLDRDQUFBO0VBQ0EseUNBQUE7RUFDQSxvQ0FBQTs7QWVwUkYsWUFBWSxPQWtCWDtFZmdRQyx3QkFBQTtFQUNBLHFCQUFBO0VBQ0EsZ0JBQUE7RWVoUUEscUJBQUE7O0FBcEJGLFlBQVksT0F1Qlg7QUF2QkQsWUFBWSxPQXdCWDtFQUNDLGtCQUFBO0VBQ0EsVUFBQTs7QUExQkYsWUFBWSxPQTZCWDtFZnFQQyx3QkFBQTtFQUNBLHFCQUFBO0VBQ0EsZ0JBQUE7O0FlbFBGO0VmdXpCRSx5QkFBQTtFQUNBLHNCQUFBO0VBQ0EscUJBQUE7RUFDQSxpQkFBQTs7QWV2ekJGO0VBQ0MsY0FBQTtFQUNBLG9CQUFBO0VBQ0EsZ0JBQUE7RUFDQSxnQkFBQTs7QUFHQyxRQURELE9BQU0sU0FDSjtFQUNBLGVBQUE7RUFFQSxxQkFBQTtFQUNBLGdCQUFBO0VBQ0EsVUFBQTtFQUNBLHlCQUFBOztBQUdELFFBVkQsT0FBTSxTQVVKO0VBQ0EsYUFBQTs7QUFHRCxRQWRELE9BQU0sU0FjSjtFQUNBLFdBQUE7RUFDQSxpQkFBQTs7QUFHRCxRQW5CRCxPQUFNLFNBbUJKO0VBQ0EsWUFBQTtFQUNBLGdCQUFBOztBQTNCSCxRQU1DLE9BQU0sU0F3Qkw7RUFDQyxjQUFBOztBQU1ILGdCQUFnQjtBQUNoQixnQkFBZ0I7QUFDaEIsc0JBQXNCO0VBQ3JCLGFBQUE7O0FBR0QsZ0JBQWlCO0FBQ2pCLFFBQVMsT0FBTTtBQUNmLGdCQUFpQixTQUFRLFdBQVc7RUFDbkMsYUFBQTs7QUFHRCxHQUFHO0VBQ0YsVUFBQTtFQUNBLGdCQUFBO0VBQ0EsV0FBQTtFQUNBLGtCQUFBO0VBQ0EsY0FBQTtFQUNBLHlCQUFBOztBQU5ELEdBQUcsZ0JBUUY7RUFDQyxTQUFBOztBQVRGLEdBQUcsZ0JBWUY7RUFDQyxhQUFBOztBQUdELEdBaEJFLGdCQWdCRCxjQUFlO0VBQ2Ysa0JBQUE7RWZrWUMsT0FBQTtFQUFTLHlCQUFBO0VBQ1Ysb0JBQUE7RUFDQSxpQkFBQTtFQUNBLFlBQUE7O0FldFpGLEdBQUcsZ0JBdUJGLE9BQU87RUFDTixpQkFBQTs7QUFJRCxHQTVCRSxnQkE0QkE7RUFDRCxVQUFBO0VBQ0EsU0FBQTtFQUNBLDBCQUFBO0VBQ0EsV0FBQTs7QUFFQSxHQWxDQyxnQkE0QkEsS0FNQTtFQUNBLDJCQUFBOztBQUdELEdBdENDLGdCQTRCQSxLQVVBO0VBQ0Esd0JBQUE7O0FBWEYsR0E1QkUsZ0JBNEJBLEtBZUQ7RUFDQyxVQUFBO0VBQ0EsU0FBQTs7QUFJRCxHQWpEQyxnQkE0QkEsS0FxQkM7RUFDRCxrQkFBQTs7QUFFQSxHQXBEQSxnQkE0QkEsS0FxQkMsS0FHQTtFQUNBLGlCQUFBO0VBQ0EsaUJBQUE7RUFDQSxlQUFBOztBQUdELEdBMURBLGdCQTRCQSxLQXFCQyxLQVNBO0FBQ0QsR0EzREEsZ0JBNEJBLEtBcUJDLEtBVUE7RUFDQSw2QkFBQTs7QUFHRCxHQS9EQSxnQkE0QkEsS0FxQkMsS0FjQTtFQUNBLDBCQUFBOztBQUVBLEdBbEVELGdCQTRCQSxLQXFCQyxLQWNBLHNCQUdDO0VBQ0EsZ0JBQUE7O0FBSUYsR0F2RUEsZ0JBNEJBLEtBcUJDLEtBc0JBLG1CQUFtQjtBQUNwQixHQXhFQSxnQkE0QkEsS0FxQkMsS0F1QkEsbUJBQW1CO0FBQ3BCLEdBekVBLGdCQTRCQSxLQXFCQyxLQXdCQSx1QkFBdUI7QUFDeEIsR0ExRUEsZ0JBNEJBLEtBcUJDLEtBeUJBLHVCQUF1QjtFQUN2QixnQkFBQTtFQUNBLFVBQUE7O0FBR0QsR0EvRUEsZ0JBNEJBLEtBcUJDLEtBOEJBLG1CQUFtQjtBQUNwQixHQWhGQSxnQkE0QkEsS0FxQkMsS0ErQkEsdUJBQXVCO0FBQ3hCLEdBakZBLGdCQTRCQSxLQXFCQyxLQWdDQSxtQkFBbUIsT0FBTztBQUMzQixHQWxGQSxnQkE0QkEsS0FxQkMsS0FpQ0EsdUJBQXVCLE9BQU87RUFDOUIsbUJBQUE7O0FBR0QsR0F0RkEsZ0JBNEJBLEtBcUJDLEtBcUNBLG1CQUFtQjtBQUNwQixHQXZGQSxnQkE0QkEsS0FxQkMsS0FzQ0EsdUJBQXVCO0VBQ3ZCLG1CQUFBOztBQUdELEdBM0ZBLGdCQTRCQSxLQXFCQyxLQTBDQTtFQU1BLG1CQUFBOztBQUxBLEdBNUZELGdCQTRCQSxLQXFCQyxLQTBDQSx1QkFDQztFQUNBLFNBQVMsRUFBVDtFQUNBLFdBQUE7O0FBS0QsR0FuR0QsZ0JBNEJBLEtBcUJDLEtBMENBLHVCQVFFO0VBQ0QsZ0JBQUE7O0FBSUYsR0F4R0EsZ0JBNEJBLEtBcUJDLEtBdURDO0FBQUssR0F4R1AsZ0JBNEJBLEtBcUJDLEtBdURRO0VBQ1IsbUJBQUE7RUFDQSxzQkFBQTs7QUF6REYsR0FqREMsZ0JBNEJBLEtBcUJDLEtBNkREO0VBQ0MsaUJBQUE7RUFDQSxnQkFBQTs7QUEvREYsR0FqREMsZ0JBNEJBLEtBcUJDLEtBNkRELEVBSUM7RUFDQyxtQkFBQTtFQUNBLGVBQUE7O0FBbkVILEdBakRDLGdCQTRCQSxLQXFCQyxLQTZERCxFQUlDLEtBSUM7RUFDQyxtQkFBQTtFQUNBLGlCQUFBO0VBQ0EsZUFBQTtFQUNBLGdCQUFBO0VmNkNKLDBCQUFBO0VBQWlDLG9DQUFBO0VBQ2pDLHVCQUFBO0VBQThCLDZCQUFBO0VBQzlCLGtCQUFBO0VBQXlCLDRCQUFBO0VlN0NyQixzQkFBQTtFQUNBLGNBQUE7RUFDQSxpQkFBQTtFQUNBLFlBQUE7O0FBR0MsR0FsSUosZ0JBNEJBLEtBcUJDLEtBNkRELEVBSUMsS0FJQyxPQVdFLElBQUksV0FDSDtBQUNELEdBbklKLGdCQTRCQSxLQXFCQyxLQTZERCxFQUlDLEtBSUMsT0FXRSxJQUFJLFdBRUg7RUFDQSxXQUFBO0VBQ0EseUJBQUE7RUFDQSx5QkFBQTs7QUFJRixHQTFJSCxnQkE0QkEsS0FxQkMsS0E2REQsRUFJQyxLQUlDLE9Bb0JFLEtBQUs7RUFDTCxlQUFBO0Vmd1FKLE9BQUE7RUFBUyx5QkFBQTtFQUNWLG9CQUFBO0VBQ0EsaUJBQUE7RUFDQSxZQUFBOztBZXJXQSxHQWpEQyxnQkE0QkEsS0FxQkMsS0FrR0Q7RUFDQyx5QkFBQTtFQUNBLFVBQUE7RUFDQSxXQUFBOztBQXJHRixHQWpEQyxnQkE0QkEsS0FxQkMsS0FrR0QsR0FNQztFQUNDLGtCQUFBO0VBQ0EscUJBQUE7RUFHQSxjQUFBOztBQUVBLEdBaEtGLGdCQTRCQSxLQXFCQyxLQWtHRCxHQU1DLEdBT0U7RUFDQSwwQkFBQTs7QUFFQSxHQW5LSCxnQkE0QkEsS0FxQkMsS0FrR0QsR0FNQyxHQU9FLHNCQUdDO0VBQ0EsYUFBQTs7QUFKRixHQWhLRixnQkE0QkEsS0FxQkMsS0FrR0QsR0FNQyxHQU9FLHNCQU9BO0VmQUosMEJBQUE7RUFBaUMsb0NBQUE7RUFDakMsdUJBQUE7RUFBOEIsNkJBQUE7RUFDOUIsa0JBQUE7RUFBeUIsNEJBQUE7RWVBcEIsY0FBQTs7QUFFQSxHQTNLSixnQkE0QkEsS0FxQkMsS0FrR0QsR0FNQyxHQU9FLHNCQU9BLHFCQUlFO0VBQ0EsK0JBQUE7O0FBWkgsR0FoS0YsZ0JBNEJBLEtBcUJDLEtBa0dELEdBTUMsR0FPRSxzQkFPQSxxQkFRQztFQUNDLHNCQUFBOztBQUtILEdBckxGLGdCQTRCQSxLQXFCQyxLQWtHRCxHQU1DLEdBNEJHO0FBQUssR0FyTFQsZ0JBNEJBLEtBcUJDLEtBa0dELEdBTUMsR0E0QlU7RUFDUixtQkFBQTtFQUNBLHNCQUFBOztBQXRJSixHQWpEQyxnQkE0QkEsS0FxQkMsS0FrR0QsR0FNQyxHQWtDQztFQUNDLFVBQUE7O0FBM0lKLEdBakRDLGdCQTRCQSxLQXFCQyxLQWtHRCxHQU1DLEdBa0NDLEdBSUM7RUFDQyxVQUFBO0VBQ0EscUJBQUE7RUFDQSxlQUFBO0VBQ0EscUJBQUE7O0FBbEpMLEdBakRDLGdCQTRCQSxLQXFCQyxLQWtHRCxHQU1DLEdBa0NDLEdBSUMsR0FPQztFQUNDLGVBQUE7RUFDQSxtQkFBQTs7QUF2Sk4sR0FqREMsZ0JBNEJBLEtBcUJDLEtBa0dELEdBTUMsR0FrQ0MsR0FJQyxHQVlDO0FBMUpMLEdBakRDLGdCQTRCQSxLQXFCQyxLQWtHRCxHQU1DLEdBa0NDLEdBSUMsR0FhQztFQUNDLGVBQUE7RUFDQSxTQUFBO0VBQ0Esc0JBQUE7RUFDQSxzQkFBQTtFQ2xTUCxrQkFBQTtFQUNBLG1CQUFBO0VBRUEsb0JBQUE7RUFDQSxvQkFBQTs7QUR3U0EsR0ExTkUsZ0JBME5BO0VBQ0QsZ0JBQUE7O0FBSUQsR0EvTkUsZ0JBK05EO0VBQ0EsWUFBQTtFQUNBLFlBQUE7RUFDQSxnQkFBQTtFQUNBLGdCQUFBO0VBQ0Esa0JBQUE7O0FBTEQsR0EvTkUsZ0JBK05ELE1BT0E7RUN4VEQsa0JBQUE7RUFDQSxrQkFBQTtFQUVBLG9CQUFBO0VBQ0Esb0JBQUE7RURzVEUscUJBQUE7RUFDQSxtQkFBQTtFQUNBLDZCQUFBO0VBQ0EsYUFBQTtFQUNBLG9CQUFBOztBQWJGLEdBL05FLGdCQStORCxNQWdCQTtFQUVDLG9CQUFBO0VBQ0EsZ0JBQUE7O0FBbkJGLEdBL05FLGdCQStORCxNQWdCQSxHQUtDO0VBQ0MsaUJBQUE7RUFDQSxTQUFBO0VBQ0EscUJBQUE7O0FBR0QsR0ExUEEsZ0JBK05ELE1BZ0JBLEdBV0c7RUFDRCxrQkFBQTs7QUE1QkgsR0EvTkUsZ0JBK05ELE1BZ0JBLEdBZUM7RUFDQyxXQUFBO0VBQ0EsVUFBQTtFQUNBLFdBQUE7RUFDQSxpQkFBQTtFQUNBLDBCQUFBO0VBQ0EsbUJBQUE7RUFDQSxtQkFBQTtFZmxFRiw4QkFBQTtFQUNBLDJCQUFBO0VBQ0Esc0JBQUE7O0FlMEJELEdBL05FLGdCQStORCxNQWdCQSxHQWVDLEdBVUM7RUFDQyxnQkFBQTtFQUNBLFlBQUE7RUFDQSxzQkFBQTs7QUE1Q0osR0EvTkUsZ0JBK05ELE1BZ0JBLEdBZ0NDO0VBQ0MsaUJBQUE7RUFDQSxZQUFBO0VBQ0Esb0JBQUE7O0FBbkRILEdBL05FLGdCQStORCxNQWdCQSxHQWdDQyxHQUtDO0VBQ0Msa0JBQUE7O0FBR0QsR0F4UkQsZ0JBK05ELE1BZ0JBLEdBZ0NDLEdBU0U7RUFDQSxTQUFTLE9BQVQ7RUFDQSxjQUFBO0VBQ0EsV0FBQTtFQUNBLFlBQUE7RUFDQSxTQUFBO0VBQ0EsUUFBQTs7QUFPTDtBQUNBLGdCQUFpQixTQUFRO0FBQ3pCO0VmaElFLDBCQUFBO0VBQWlDLG9DQUFBO0VBQ2pDLHVCQUFBO0VBQThCLDZCQUFBO0VBQzlCLGtCQUFBO0VBQXlCLDRCQUFBO0VlZ0kxQixzQkFBQTtFQzNYQSxrQkFBQTtFQUNBLG1CQUFBO0VBRUEsb0JBQUE7RUFDQSxvQkFBQTs7QUQyWEQsZ0JBQWlCLFNBQVE7QUFDekIsV0FBWTtBQUNaO0VDallDLGtCQUFBO0VBQ0EsbUJBQUE7RUFFQSxvQkFBQTtFQUNBLG9CQUFBO0VEK1hBLGdKQUFBOztBQUdELFdBQVk7RUFDWCxZQUFBO0VBQ0EsVUFBQTtFQUNBLFNBQUE7O0FBR0QsZ0JBQWlCLFNBQVE7RWZ2SHZCLDhCQUFBO0VBQ0EsMkJBQUE7RUFDQSxzQkFBQTtFZXVIRCxjQUFBO0VBQ0EsYUFBQTtFQUNBLFdBQUE7RUFDQSxpQkFBQTtFQUNBLFNBQUE7RUFDQSxZQUFBO0VBQ0EsYUFBQTtFQUNBLGdCQUFBO0VBQ0EsV0FBQTtFQUNBLGdCQUFBO0VBQ0EsaUJBQUE7RUFDQSxjQUFBOztBQUdELGlCQUFpQjtFQUNoQixVQUFBO0VBQ0EsY0FBQTtFQzlaQSxlQUFBO0VBQ0EsbUJBQUE7RUFFQSxtQkFBQTtFQUNBLG9CQUFBO0VEa2FBLGdKQUFBOztBQVZELGlCQUFpQixpQkFJaEI7RUFDQyxjQUFBO0VBQ0EsbUJBQUE7O0FBTUQsaUJBWmdCLGlCQVlkLEtBQUk7RUFDTCxtQkFBQTs7O0FBS0Y7RUFDQyxvQkFBQTs7QUFERCx1QkFHQyxTQUFTO0VBQ1IsbUJBQUE7RUFDQSxpQkFBQTs7QUFMRix1QkFRQztFQUVDLFlBQUE7RUFHQSxnQkFBQTs7QUFJRjtFQUNDLGVBQUE7RUFDQSxNQUFBO0VBQ0EsV0FBQTtFQUNBLFdBQUE7O0FBSkQsZ0JBTUM7RUFDQyxpQkFBQTs7QUFQRixnQkFNQyxrQkFHQztFQUNDLGdCQUFBOztBQVZILGdCQU1DLGtCQUdDLE9BR0M7RUFDQyxnQkFBQTs7QUFPSjtFQUNDLGtCQUFBO0VBQ0EsVUFBQTtFQUNBLFVBQUE7O0FBRUEsS0FBQztFQUNBLGFBQUEifQ== */
diff --git a/release/samples/index.html b/release/samples/index.html
index f8ca889..663fc17 100644
--- a/release/samples/index.html
+++ b/release/samples/index.html
@@ -1,6 +1,6 @@
1<!DOCTYPE html> 1<!DOCTYPE html>
2<!-- 2<!--
3Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 3Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
4For licensing, see LICENSE.md or http://ckeditor.com/license 4For licensing, see LICENSE.md or http://ckeditor.com/license
5--> 5-->
6<html> 6<html>
@@ -18,7 +18,7 @@ For licensing, see LICENSE.md or http://ckeditor.com/license
18 <div class="grid-container"> 18 <div class="grid-container">
19 <ul class="navigation-a-left grid-width-70"> 19 <ul class="navigation-a-left grid-width-70">
20 <li><a href="http://ckeditor.com">Project Homepage</a></li> 20 <li><a href="http://ckeditor.com">Project Homepage</a></li>
21 <li><a href="http://dev.ckeditor.com/">I found a bug</a></li> 21 <li><a href="https://github.com/ckeditor/ckeditor-dev/issues">I found a bug</a></li>
22 <li><a href="http://github.com/ckeditor/ckeditor-dev" class="icon-pos-right icon-navigation-a-github">Fork CKEditor on GitHub</a></li> 22 <li><a href="http://github.com/ckeditor/ckeditor-dev" class="icon-pos-right icon-navigation-a-github">Fork CKEditor on GitHub</a></li>
23 </ul> 23 </ul>
24 <ul class="navigation-a-right grid-width-30"> 24 <ul class="navigation-a-right grid-width-30">
@@ -116,7 +116,7 @@ For licensing, see LICENSE.md or http://ckeditor.com/license
116 CKEditor &ndash; The text editor for the Internet &ndash; <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a> 116 CKEditor &ndash; The text editor for the Internet &ndash; <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a>
117 </p> 117 </p>
118 <p class="grid-width-100" id="copy"> 118 <p class="grid-width-100" id="copy">
119 Copyright &copy; 2003-2016, <a class="samples" href="http://cksource.com/">CKSource</a> &ndash; Frederico Knabben. All rights reserved. 119 Copyright &copy; 2003-2017, <a class="samples" href="http://cksource.com/">CKSource</a> &ndash; Frederico Knabben. All rights reserved.
120 </p> 120 </p>
121 </div> 121 </div>
122</footer> 122</footer>
diff --git a/release/samples/js/sample.js b/release/samples/js/sample.js
index 80f1c2b..f0cd939 100644
--- a/release/samples/js/sample.js
+++ b/release/samples/js/sample.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/release/samples/js/sf.js b/release/samples/js/sf.js
index 72edbde..69dd77d 100644
--- a/release/samples/js/sf.js
+++ b/release/samples/js/sf.js
@@ -1,5 +1,5 @@
1/* 1/*
2 Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 For licensing, see LICENSE.md or http://ckeditor.com/license 3 For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5var SF=function(){function d(a){return(a=a.attributes?a.attributes.getNamedItem("class"):null)?a.value.split(" "):[]}function c(a){var e=document.createAttribute("class");e.value=a.join(" ");return e}var b={attachListener:function(a,e,b){if(a.addEventListener)a.addEventListener(e,b,!1);else if(a.attachEvent)a.attachEvent("on"+e,function(){b.apply(a,arguments)});else throw Error("Could not attach event.");}};b.indexOf=function(){var a=Array.prototype.indexOf;return"function"===a?function(e,b){return a.call(e, 5var SF=function(){function d(a){return(a=a.attributes?a.attributes.getNamedItem("class"):null)?a.value.split(" "):[]}function c(a){var e=document.createAttribute("class");e.value=a.join(" ");return e}var b={attachListener:function(a,e,b){if(a.addEventListener)a.addEventListener(e,b,!1);else if(a.attachEvent)a.attachEvent("on"+e,function(){b.apply(a,arguments)});else throw Error("Could not attach event.");}};b.indexOf=function(){var a=Array.prototype.indexOf;return"function"===a?function(e,b){return a.call(e,
diff --git a/release/samples/old/ajax.html b/release/samples/old/ajax.html
index 57accf5..3ca07c2 100644
--- a/release/samples/old/ajax.html
+++ b/release/samples/old/ajax.html
@@ -1,6 +1,6 @@
1<!DOCTYPE html> 1<!DOCTYPE html>
2<!-- 2<!--
3Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 3Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
4For licensing, see LICENSE.md or http://ckeditor.com/license 4For licensing, see LICENSE.md or http://ckeditor.com/license
5--> 5-->
6<html> 6<html>
@@ -77,7 +77,7 @@ For licensing, see LICENSE.md or http://ckeditor.com/license
77 CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a> 77 CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a>
78 </p> 78 </p>
79 <p id="copy"> 79 <p id="copy">
80 Copyright &copy; 2003-2016, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico 80 Copyright &copy; 2003-2017, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico
81 Knabben. All rights reserved. 81 Knabben. All rights reserved.
82 </p> 82 </p>
83 </div> 83 </div>
diff --git a/release/samples/old/api.html b/release/samples/old/api.html
index e3cdc3e..88a4b06 100644
--- a/release/samples/old/api.html
+++ b/release/samples/old/api.html
@@ -1,6 +1,6 @@
1<!DOCTYPE html> 1<!DOCTYPE html>
2<!-- 2<!--
3Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 3Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
4For licensing, see LICENSE.md or http://ckeditor.com/license 4For licensing, see LICENSE.md or http://ckeditor.com/license
5--> 5-->
6<html> 6<html>
@@ -202,7 +202,7 @@ Second line of text preceded by two line breaks.</textarea>
202 CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a> 202 CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a>
203 </p> 203 </p>
204 <p id="copy"> 204 <p id="copy">
205 Copyright &copy; 2003-2016, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico 205 Copyright &copy; 2003-2017, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico
206 Knabben. All rights reserved. 206 Knabben. All rights reserved.
207 </p> 207 </p>
208 </div> 208 </div>
diff --git a/release/samples/old/appendto.html b/release/samples/old/appendto.html
index 26e0b6b..dbabf75 100644
--- a/release/samples/old/appendto.html
+++ b/release/samples/old/appendto.html
@@ -1,6 +1,6 @@
1<!DOCTYPE html> 1<!DOCTYPE html>
2<!-- 2<!--
3Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 3Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
4For licensing, see LICENSE.md or http://ckeditor.com/license 4For licensing, see LICENSE.md or http://ckeditor.com/license
5--> 5-->
6<html> 6<html>
@@ -51,7 +51,7 @@ For licensing, see LICENSE.md or http://ckeditor.com/license
51 CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a> 51 CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a>
52 </p> 52 </p>
53 <p id="copy"> 53 <p id="copy">
54 Copyright &copy; 2003-2016, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico 54 Copyright &copy; 2003-2017, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico
55 Knabben. All rights reserved. 55 Knabben. All rights reserved.
56 </p> 56 </p>
57 </div> 57 </div>
diff --git a/release/samples/old/assets/outputxhtml/outputxhtml.css b/release/samples/old/assets/outputxhtml/outputxhtml.css
index 09ca048..fbcc767 100644
--- a/release/samples/old/assets/outputxhtml/outputxhtml.css
+++ b/release/samples/old/assets/outputxhtml/outputxhtml.css
@@ -1,5 +1,5 @@
1/* 1/*
2 * Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 * 4 *
5 * Styles used by the XHTML 1.1 sample page (xhtml.html). 5 * Styles used by the XHTML 1.1 sample page (xhtml.html).
diff --git a/release/samples/old/assets/posteddata.php b/release/samples/old/assets/posteddata.php
index 568dbfb..bb4dd94 100644
--- a/release/samples/old/assets/posteddata.php
+++ b/release/samples/old/assets/posteddata.php
@@ -1,7 +1,7 @@
1<!DOCTYPE html> 1<!DOCTYPE html>
2<?php 2<?php
3/* 3/*
4Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 4Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
5For licensing, see LICENSE.md or http://ckeditor.com/license 5For licensing, see LICENSE.md or http://ckeditor.com/license
6*/ 6*/
7?> 7?>
@@ -52,7 +52,7 @@ if (!empty($_POST))
52 CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a> 52 CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a>
53 </p> 53 </p>
54 <p id="copy"> 54 <p id="copy">
55 Copyright &copy; 2003-2016, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico Knabben. All rights reserved. 55 Copyright &copy; 2003-2017, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico Knabben. All rights reserved.
56 </p> 56 </p>
57 </div> 57 </div>
58</body> 58</body>
diff --git a/release/samples/old/assets/uilanguages/languages.js b/release/samples/old/assets/uilanguages/languages.js
index 3bd1248..3208ff4 100644
--- a/release/samples/old/assets/uilanguages/languages.js
+++ b/release/samples/old/assets/uilanguages/languages.js
@@ -1,7 +1,7 @@
1/* 1/*
2 Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 For licensing, see LICENSE.md or http://ckeditor.com/license 3 For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5var CKEDITOR_LANGS=function(){var c={af:"Afrikaans",ar:"Arabic",bg:"Bulgarian",bn:"Bengali/Bangla",bs:"Bosnian",ca:"Catalan",cs:"Czech",cy:"Welsh",da:"Danish",de:"German","de-ch":"German (Switzerland)",el:"Greek",en:"English","en-au":"English (Australia)","en-ca":"English (Canadian)","en-gb":"English (United Kingdom)",eo:"Esperanto",es:"Spanish",et:"Estonian",eu:"Basque",fa:"Persian",fi:"Finnish",fo:"Faroese",fr:"French","fr-ca":"French (Canada)",gl:"Galician",gu:"Gujarati",he:"Hebrew",hi:"Hindi", 5var CKEDITOR_LANGS=function(){var c={af:"Afrikaans",ar:"Arabic",az:"Azerbaijani",bg:"Bulgarian",bn:"Bengali/Bangla",bs:"Bosnian",ca:"Catalan",cs:"Czech",cy:"Welsh",da:"Danish",de:"German","de-ch":"German (Switzerland)",el:"Greek",en:"English","en-au":"English (Australia)","en-ca":"English (Canadian)","en-gb":"English (United Kingdom)",eo:"Esperanto",es:"Spanish","es-mx":"Spanish (Mexico)",et:"Estonian",eu:"Basque",fa:"Persian",fi:"Finnish",fo:"Faroese",fr:"French","fr-ca":"French (Canada)",gl:"Galician",
6hr:"Croatian",hu:"Hungarian",id:"Indonesian",is:"Icelandic",it:"Italian",ja:"Japanese",ka:"Georgian",km:"Khmer",ko:"Korean",ku:"Kurdish",lt:"Lithuanian",lv:"Latvian",mk:"Macedonian",mn:"Mongolian",ms:"Malay",nb:"Norwegian Bokmal",nl:"Dutch",no:"Norwegian",pl:"Polish",pt:"Portuguese (Portugal)","pt-br":"Portuguese (Brazil)",ro:"Romanian",ru:"Russian",si:"Sinhala",sk:"Slovak",sq:"Albanian",sl:"Slovenian",sr:"Serbian (Cyrillic)","sr-latn":"Serbian (Latin)",sv:"Swedish",th:"Thai",tr:"Turkish",tt:"Tatar", 6gu:"Gujarati",he:"Hebrew",hi:"Hindi",hr:"Croatian",hu:"Hungarian",id:"Indonesian",is:"Icelandic",it:"Italian",ja:"Japanese",ka:"Georgian",km:"Khmer",ko:"Korean",ku:"Kurdish",lt:"Lithuanian",lv:"Latvian",mk:"Macedonian",mn:"Mongolian",ms:"Malay",nb:"Norwegian Bokmal",nl:"Dutch",no:"Norwegian",oc:"Occitan",pl:"Polish",pt:"Portuguese (Portugal)","pt-br":"Portuguese (Brazil)",ro:"Romanian",ru:"Russian",si:"Sinhala",sk:"Slovak",sq:"Albanian",sl:"Slovenian",sr:"Serbian (Cyrillic)","sr-latn":"Serbian (Latin)",
7ug:"Uighur",uk:"Ukrainian",vi:"Vietnamese",zh:"Chinese Traditional","zh-cn":"Chinese Simplified"},b=[],a;for(a in CKEDITOR.lang.languages)b.push({code:a,name:c[a]||a});b.sort(function(a,b){return a.name<b.name?-1:1});return b}(); \ No newline at end of file 7sv:"Swedish",th:"Thai",tr:"Turkish",tt:"Tatar",ug:"Uighur",uk:"Ukrainian",vi:"Vietnamese",zh:"Chinese Traditional","zh-cn":"Chinese Simplified"},b=[],a;for(a in CKEDITOR.lang.languages)b.push({code:a,name:c[a]||a});b.sort(function(a,b){return a.name<b.name?-1:1});return b}(); \ No newline at end of file
diff --git a/release/samples/old/datafiltering.html b/release/samples/old/datafiltering.html
index f5f31f8..637c17b 100644
--- a/release/samples/old/datafiltering.html
+++ b/release/samples/old/datafiltering.html
@@ -1,6 +1,6 @@
1<!DOCTYPE html> 1<!DOCTYPE html>
2<!-- 2<!--
3Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 3Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
4For licensing, see LICENSE.md or http://ckeditor.com/license 4For licensing, see LICENSE.md or http://ckeditor.com/license
5--> 5-->
6<html> 6<html>
@@ -399,7 +399,7 @@ CKEDITOR.replace( 'editor4', {
399 <div class="description"> 399 <div class="description">
400 <p> 400 <p>
401 This editor is using a custom configuration for <abbr title="Advanced Content Filter">ACF</abbr>. 401 This editor is using a custom configuration for <abbr title="Advanced Content Filter">ACF</abbr>.
402 It's using the <a href="http://docs.ckeditor.com/#!/guide/dev_disallowed_content" target="_blank"> 402 It's using the <a href="http://docs.ckeditor.com/#!/guide/dev_disallowed_content" rel="noopener noreferrer" target="_blank">
403 Disallowed Content</a> property of the filter to eliminate all <code>title</code> attributes. 403 Disallowed Content</a> property of the filter to eliminate all <code>title</code> attributes.
404 </p> 404 </p>
405 405
@@ -454,7 +454,7 @@ CKEDITOR.replace( 'editor6', {
454 <div class="description"> 454 <div class="description">
455 <p> 455 <p>
456 This editor is using a custom configuration for <abbr title="Advanced Content Filter">ACF</abbr>. 456 This editor is using a custom configuration for <abbr title="Advanced Content Filter">ACF</abbr>.
457 It's using the <a href="http://docs.ckeditor.com/#!/guide/dev_disallowed_content" target="_blank"> 457 It's using the <a href="http://docs.ckeditor.com/#!/guide/dev_disallowed_content" rel="noopener noreferrer" target="_blank">
458 Disallowed Content</a> property of the filter to eliminate all <code>a</code> and <code>img</code> tags, 458 Disallowed Content</a> property of the filter to eliminate all <code>a</code> and <code>img</code> tags,
459 while allowing all other tags. 459 while allowing all other tags.
460 </p> 460 </p>
@@ -500,7 +500,7 @@ CKEDITOR.replace( 'editor7', {
500 CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a> 500 CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a>
501 </p> 501 </p>
502 <p id="copy"> 502 <p id="copy">
503 Copyright &copy; 2003-2016, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico 503 Copyright &copy; 2003-2017, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico
504 Knabben. All rights reserved. 504 Knabben. All rights reserved.
505 </p> 505 </p>
506 </div> 506 </div>
diff --git a/release/samples/old/dialog/assets/my_dialog.js b/release/samples/old/dialog/assets/my_dialog.js
index f85af78..fcd1a43 100644
--- a/release/samples/old/dialog/assets/my_dialog.js
+++ b/release/samples/old/dialog/assets/my_dialog.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/release/samples/old/dialog/dialog.html b/release/samples/old/dialog/dialog.html
index 7fda2bb..0f22a1a 100644
--- a/release/samples/old/dialog/dialog.html
+++ b/release/samples/old/dialog/dialog.html
@@ -1,6 +1,6 @@
1<!DOCTYPE html> 1<!DOCTYPE html>
2<!-- 2<!--
3Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 3Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
4For licensing, see LICENSE.md or http://ckeditor.com/license 4For licensing, see LICENSE.md or http://ckeditor.com/license
5--> 5-->
6<html> 6<html>
@@ -182,7 +182,7 @@ For licensing, see LICENSE.md or http://ckeditor.com/license
182 CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a> 182 CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a>
183 </p> 183 </p>
184 <p id="copy"> 184 <p id="copy">
185 Copyright &copy; 2003-2016, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico 185 Copyright &copy; 2003-2017, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico
186 Knabben. All rights reserved. 186 Knabben. All rights reserved.
187 </p> 187 </p>
188 </div> 188 </div>
diff --git a/release/samples/old/divreplace.html b/release/samples/old/divreplace.html
index 3fdb9b2..c6724f0 100644
--- a/release/samples/old/divreplace.html
+++ b/release/samples/old/divreplace.html
@@ -1,6 +1,6 @@
1<!DOCTYPE html> 1<!DOCTYPE html>
2<!-- 2<!--
3Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 3Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
4For licensing, see LICENSE.md or http://ckeditor.com/license 4For licensing, see LICENSE.md or http://ckeditor.com/license
5--> 5-->
6<html> 6<html>
@@ -136,7 +136,7 @@ For licensing, see LICENSE.md or http://ckeditor.com/license
136 CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a> 136 CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a>
137 </p> 137 </p>
138 <p id="copy"> 138 <p id="copy">
139 Copyright &copy; 2003-2016, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico 139 Copyright &copy; 2003-2017, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico
140 Knabben. All rights reserved. 140 Knabben. All rights reserved.
141 </p> 141 </p>
142 </div> 142 </div>
diff --git a/release/samples/old/enterkey/enterkey.html b/release/samples/old/enterkey/enterkey.html
index 6b78e06..79afee3 100644
--- a/release/samples/old/enterkey/enterkey.html
+++ b/release/samples/old/enterkey/enterkey.html
@@ -1,6 +1,6 @@
1<!DOCTYPE html> 1<!DOCTYPE html>
2<!-- 2<!--
3Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 3Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
4For licensing, see LICENSE.md or http://ckeditor.com/license 4For licensing, see LICENSE.md or http://ckeditor.com/license
5--> 5-->
6<html> 6<html>
@@ -98,7 +98,7 @@ CKEDITOR.replace( '<em>textarea_id</em>', {
98 CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a> 98 CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a>
99 </p> 99 </p>
100 <p id="copy"> 100 <p id="copy">
101 Copyright &copy; 2003-2016, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico 101 Copyright &copy; 2003-2017, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico
102 Knabben. All rights reserved. 102 Knabben. All rights reserved.
103 </p> 103 </p>
104 </div> 104 </div>
diff --git a/release/samples/old/htmlwriter/outputforflash.html b/release/samples/old/htmlwriter/outputforflash.html
index a4318f3..f72616d 100644
--- a/release/samples/old/htmlwriter/outputforflash.html
+++ b/release/samples/old/htmlwriter/outputforflash.html
@@ -1,6 +1,6 @@
1<!DOCTYPE html> 1<!DOCTYPE html>
2<!-- 2<!--
3Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 3Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
4For licensing, see LICENSE.md or http://ckeditor.com/license 4For licensing, see LICENSE.md or http://ckeditor.com/license
5--> 5-->
6<html> 6<html>
@@ -275,7 +275,7 @@ For licensing, see LICENSE.md or http://ckeditor.com/license
275 CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a> 275 CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a>
276 </p> 276 </p>
277 <p id="copy"> 277 <p id="copy">
278 Copyright &copy; 2003-2016, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico 278 Copyright &copy; 2003-2017, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico
279 Knabben. All rights reserved. 279 Knabben. All rights reserved.
280 </p> 280 </p>
281 </div> 281 </div>
diff --git a/release/samples/old/htmlwriter/outputhtml.html b/release/samples/old/htmlwriter/outputhtml.html
index f7123a1..a433025 100644
--- a/release/samples/old/htmlwriter/outputhtml.html
+++ b/release/samples/old/htmlwriter/outputhtml.html
@@ -1,6 +1,6 @@
1<!DOCTYPE html> 1<!DOCTYPE html>
2<!-- 2<!--
3Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 3Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
4For licensing, see LICENSE.md or http://ckeditor.com/license 4For licensing, see LICENSE.md or http://ckeditor.com/license
5--> 5-->
6<html> 6<html>
@@ -216,7 +216,7 @@ CKEDITOR.replace( '<em>textarea_id</em>', {
216 CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a> 216 CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a>
217 </p> 217 </p>
218 <p id="copy"> 218 <p id="copy">
219 Copyright &copy; 2003-2016, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico 219 Copyright &copy; 2003-2017, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico
220 Knabben. All rights reserved. 220 Knabben. All rights reserved.
221 </p> 221 </p>
222 </div> 222 </div>
diff --git a/release/samples/old/index.html b/release/samples/old/index.html
index 8e20ea9..f4f795b 100644
--- a/release/samples/old/index.html
+++ b/release/samples/old/index.html
@@ -1,6 +1,6 @@
1<!DOCTYPE html> 1<!DOCTYPE html>
2<!-- 2<!--
3Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 3Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
4For licensing, see LICENSE.md or http://ckeditor.com/license 4For licensing, see LICENSE.md or http://ckeditor.com/license
5--> 5-->
6<html> 6<html>
@@ -124,7 +124,7 @@ For licensing, see LICENSE.md or http://ckeditor.com/license
124 CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a> 124 CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a>
125 </p> 125 </p>
126 <p id="copy"> 126 <p id="copy">
127 Copyright &copy; 2003-2016, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico Knabben. All rights reserved. 127 Copyright &copy; 2003-2017, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico Knabben. All rights reserved.
128 </p> 128 </p>
129 </div> 129 </div>
130</body> 130</body>
diff --git a/release/samples/old/inlineall.html b/release/samples/old/inlineall.html
index 8f99705..e0241e8 100644
--- a/release/samples/old/inlineall.html
+++ b/release/samples/old/inlineall.html
@@ -1,6 +1,6 @@
1<!DOCTYPE html> 1<!DOCTYPE html>
2<!-- 2<!--
3Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 3Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
4For licensing, see LICENSE.md or http://ckeditor.com/license 4For licensing, see LICENSE.md or http://ckeditor.com/license
5--> 5-->
6<html> 6<html>
@@ -306,7 +306,7 @@ For licensing, see LICENSE.md or http://ckeditor.com/license
306 http://ckeditor.com</a> 306 http://ckeditor.com</a>
307 </p> 307 </p>
308 <p id="copy"> 308 <p id="copy">
309 Copyright &copy; 2003-2016, <a class="samples" href="http://cksource.com/">CKSource</a> 309 Copyright &copy; 2003-2017, <a class="samples" href="http://cksource.com/">CKSource</a>
310 - Frederico Knabben. All rights reserved. 310 - Frederico Knabben. All rights reserved.
311 </p> 311 </p>
312</div> 312</div>
diff --git a/release/samples/old/inlinebycode.html b/release/samples/old/inlinebycode.html
index edbec8a..339be0c 100644
--- a/release/samples/old/inlinebycode.html
+++ b/release/samples/old/inlinebycode.html
@@ -1,6 +1,6 @@
1<!DOCTYPE html> 1<!DOCTYPE html>
2<!-- 2<!--
3Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 3Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
4For licensing, see LICENSE.md or http://ckeditor.com/license 4For licensing, see LICENSE.md or http://ckeditor.com/license
5--> 5-->
6<html> 6<html>
@@ -116,7 +116,7 @@ var editor = CKEDITOR.inline( document.getElementById( 'editable' ) );
116 http://ckeditor.com</a> 116 http://ckeditor.com</a>
117 </p> 117 </p>
118 <p id="copy"> 118 <p id="copy">
119 Copyright &copy; 2003-2016, <a class="samples" href="http://cksource.com/">CKSource</a> 119 Copyright &copy; 2003-2017, <a class="samples" href="http://cksource.com/">CKSource</a>
120 - Frederico Knabben. All rights reserved. 120 - Frederico Knabben. All rights reserved.
121 </p> 121 </p>
122 </div> 122 </div>
diff --git a/release/samples/old/inlinetextarea.html b/release/samples/old/inlinetextarea.html
index ff55bf4..504d181 100644
--- a/release/samples/old/inlinetextarea.html
+++ b/release/samples/old/inlinetextarea.html
@@ -1,6 +1,6 @@
1<!DOCTYPE html> 1<!DOCTYPE html>
2<!-- 2<!--
3Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 3Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
4For licensing, see LICENSE.md or http://ckeditor.com/license 4For licensing, see LICENSE.md or http://ckeditor.com/license
5--> 5-->
6<html> 6<html>
@@ -105,7 +105,7 @@ var editor = CKEDITOR.inline( 'article-body' );
105 http://ckeditor.com</a> 105 http://ckeditor.com</a>
106 </p> 106 </p>
107 <p id="copy"> 107 <p id="copy">
108 Copyright &copy; 2003-2016, <a class="samples" href="http://cksource.com/">CKSource</a> 108 Copyright &copy; 2003-2017, <a class="samples" href="http://cksource.com/">CKSource</a>
109 - Frederico Knabben. All rights reserved. 109 - Frederico Knabben. All rights reserved.
110 </p> 110 </p>
111 </div> 111 </div>
diff --git a/release/samples/old/jquery.html b/release/samples/old/jquery.html
index 6df9a64..95e43ea 100644
--- a/release/samples/old/jquery.html
+++ b/release/samples/old/jquery.html
@@ -1,6 +1,6 @@
1<!DOCTYPE html> 1<!DOCTYPE html>
2<!-- 2<!--
3Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 3Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
4For licensing, see LICENSE.md or http://ckeditor.com/license 4For licensing, see LICENSE.md or http://ckeditor.com/license
5--> 5-->
6<html> 6<html>
@@ -95,7 +95,7 @@ $( document ).ready( function() {
95 CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a> 95 CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a>
96 </p> 96 </p>
97 <p id="copy"> 97 <p id="copy">
98 Copyright &copy; 2003-2016, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico 98 Copyright &copy; 2003-2017, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico
99 Knabben. All rights reserved. 99 Knabben. All rights reserved.
100 </p> 100 </p>
101 </div> 101 </div>
diff --git a/release/samples/old/magicline/magicline.html b/release/samples/old/magicline/magicline.html
index af8d17a..8fff40e 100644
--- a/release/samples/old/magicline/magicline.html
+++ b/release/samples/old/magicline/magicline.html
@@ -1,6 +1,6 @@
1<!DOCTYPE html> 1<!DOCTYPE html>
2<!-- 2<!--
3Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 3Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
4For licensing, see LICENSE.md or http://ckeditor.com/license 4For licensing, see LICENSE.md or http://ckeditor.com/license
5--> 5-->
6<html> 6<html>
@@ -201,7 +201,7 @@ CKEDITOR.replace( 'editor2', {
201 CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a> 201 CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a>
202 </p> 202 </p>
203 <p id="copy"> 203 <p id="copy">
204 Copyright &copy; 2003-2016, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico 204 Copyright &copy; 2003-2017, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico
205 Knabben. All rights reserved. 205 Knabben. All rights reserved.
206 </p> 206 </p>
207 </div> 207 </div>
diff --git a/release/samples/old/readonly.html b/release/samples/old/readonly.html
index 14c32b5..edd1118 100644
--- a/release/samples/old/readonly.html
+++ b/release/samples/old/readonly.html
@@ -1,6 +1,6 @@
1<!DOCTYPE html> 1<!DOCTYPE html>
2<!-- 2<!--
3Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 3Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
4For licensing, see LICENSE.md or http://ckeditor.com/license 4For licensing, see LICENSE.md or http://ckeditor.com/license
5--> 5-->
6<html> 6<html>
@@ -68,7 +68,7 @@ For licensing, see LICENSE.md or http://ckeditor.com/license
68 CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a> 68 CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a>
69 </p> 69 </p>
70 <p id="copy"> 70 <p id="copy">
71 Copyright &copy; 2003-2016, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico 71 Copyright &copy; 2003-2017, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico
72 Knabben. All rights reserved. 72 Knabben. All rights reserved.
73 </p> 73 </p>
74 </div> 74 </div>
diff --git a/release/samples/old/replacebyclass.html b/release/samples/old/replacebyclass.html
index 839b31e..2edbf49 100644
--- a/release/samples/old/replacebyclass.html
+++ b/release/samples/old/replacebyclass.html
@@ -1,6 +1,6 @@
1<!DOCTYPE html> 1<!DOCTYPE html>
2<!-- 2<!--
3Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 3Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
4For licensing, see LICENSE.md or http://ckeditor.com/license 4For licensing, see LICENSE.md or http://ckeditor.com/license
5--> 5-->
6<html> 6<html>
@@ -52,7 +52,7 @@ For licensing, see LICENSE.md or http://ckeditor.com/license
52 CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a> 52 CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a>
53 </p> 53 </p>
54 <p id="copy"> 54 <p id="copy">
55 Copyright &copy; 2003-2016, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico 55 Copyright &copy; 2003-2017, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico
56 Knabben. All rights reserved. 56 Knabben. All rights reserved.
57 </p> 57 </p>
58 </div> 58 </div>
diff --git a/release/samples/old/replacebycode.html b/release/samples/old/replacebycode.html
index bfd8c05..36ace8b 100644
--- a/release/samples/old/replacebycode.html
+++ b/release/samples/old/replacebycode.html
@@ -1,6 +1,6 @@
1<!DOCTYPE html> 1<!DOCTYPE html>
2<!-- 2<!--
3Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 3Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
4For licensing, see LICENSE.md or http://ckeditor.com/license 4For licensing, see LICENSE.md or http://ckeditor.com/license
5--> 5-->
6<html> 6<html>
@@ -51,7 +51,7 @@ CKEDITOR.replace( '<em>textarea_id</em>' )
51 CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a> 51 CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a>
52 </p> 52 </p>
53 <p id="copy"> 53 <p id="copy">
54 Copyright &copy; 2003-2016, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico 54 Copyright &copy; 2003-2017, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico
55 Knabben. All rights reserved. 55 Knabben. All rights reserved.
56 </p> 56 </p>
57 </div> 57 </div>
diff --git a/release/samples/old/sample.css b/release/samples/old/sample.css
index dee8855..af866fe 100644
--- a/release/samples/old/sample.css
+++ b/release/samples/old/sample.css
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5 5
diff --git a/release/samples/old/sample.js b/release/samples/old/sample.js
index ebc077f..59b64ee 100644
--- a/release/samples/old/sample.js
+++ b/release/samples/old/sample.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/release/samples/old/sample_posteddata.php b/release/samples/old/sample_posteddata.php
index 1146c91..866867e 100644
--- a/release/samples/old/sample_posteddata.php
+++ b/release/samples/old/sample_posteddata.php
@@ -9,7 +9,7 @@
9 To save the content created with CKEditor you need to read the POST data on the server 9 To save the content created with CKEditor you need to read the POST data on the server
10 side and write it to a file or the database. 10 side and write it to a file or the database.
11 11
12 Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 12 Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
13 For licensing, see LICENSE.md or http://ckeditor.com/license 13 For licensing, see LICENSE.md or http://ckeditor.com/license
14------------------------------------------------------------------------------------------- 14-------------------------------------------------------------------------------------------
15 15
diff --git a/release/samples/old/tabindex.html b/release/samples/old/tabindex.html
index bd4799a..82ed647 100644
--- a/release/samples/old/tabindex.html
+++ b/release/samples/old/tabindex.html
@@ -1,6 +1,6 @@
1<!DOCTYPE html> 1<!DOCTYPE html>
2<!-- 2<!--
3Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 3Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
4For licensing, see LICENSE.md or http://ckeditor.com/license 4For licensing, see LICENSE.md or http://ckeditor.com/license
5--> 5-->
6<html> 6<html>
@@ -70,7 +70,7 @@ For licensing, see LICENSE.md or http://ckeditor.com/license
70 CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a> 70 CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a>
71 </p> 71 </p>
72 <p id="copy"> 72 <p id="copy">
73 Copyright &copy; 2003-2016, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico 73 Copyright &copy; 2003-2017, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico
74 Knabben. All rights reserved. 74 Knabben. All rights reserved.
75 </p> 75 </p>
76 </div> 76 </div>
diff --git a/release/samples/old/toolbar/toolbar.html b/release/samples/old/toolbar/toolbar.html
index 2d3d25f..e40d2a1 100644
--- a/release/samples/old/toolbar/toolbar.html
+++ b/release/samples/old/toolbar/toolbar.html
@@ -1,6 +1,6 @@
1<!DOCTYPE html> 1<!DOCTYPE html>
2<!-- 2<!--
3Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 3Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
4For licensing, see LICENSE.md or http://ckeditor.com/license 4For licensing, see LICENSE.md or http://ckeditor.com/license
5--> 5-->
6<html> 6<html>
@@ -227,7 +227,7 @@ CKEDITOR.replace( <em>'textarea_id'</em>, {
227 CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a> 227 CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a>
228 </p> 228 </p>
229 <p id="copy"> 229 <p id="copy">
230 Copyright &copy; 2003-2016, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico 230 Copyright &copy; 2003-2017, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico
231 Knabben. All rights reserved. 231 Knabben. All rights reserved.
232 </p> 232 </p>
233 </div> 233 </div>
diff --git a/release/samples/old/uicolor.html b/release/samples/old/uicolor.html
index f503204..bff1b96 100644
--- a/release/samples/old/uicolor.html
+++ b/release/samples/old/uicolor.html
@@ -1,6 +1,6 @@
1<!DOCTYPE html> 1<!DOCTYPE html>
2<!-- 2<!--
3Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 3Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
4For licensing, see LICENSE.md or http://ckeditor.com/license 4For licensing, see LICENSE.md or http://ckeditor.com/license
5--> 5-->
6<html> 6<html>
@@ -64,7 +64,7 @@ CKEDITOR.replace( '<em>textarea_id</em>', {
64 CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a> 64 CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a>
65 </p> 65 </p>
66 <p id="copy"> 66 <p id="copy">
67 Copyright &copy; 2003-2016, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico 67 Copyright &copy; 2003-2017, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico
68 Knabben. All rights reserved. 68 Knabben. All rights reserved.
69 </p> 69 </p>
70 </div> 70 </div>
diff --git a/release/samples/old/uilanguages.html b/release/samples/old/uilanguages.html
index ef6dbb3..9c1d0b8 100644
--- a/release/samples/old/uilanguages.html
+++ b/release/samples/old/uilanguages.html
@@ -1,6 +1,6 @@
1<!DOCTYPE html> 1<!DOCTYPE html>
2<!-- 2<!--
3Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 3Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
4For licensing, see LICENSE.md or http://ckeditor.com/license 4For licensing, see LICENSE.md or http://ckeditor.com/license
5--> 5-->
6<html> 6<html>
@@ -114,7 +114,7 @@ CKEDITOR.replace( '<em>textarea_id</em>', {
114 CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a> 114 CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a>
115 </p> 115 </p>
116 <p id="copy"> 116 <p id="copy">
117 Copyright &copy; 2003-2016, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico 117 Copyright &copy; 2003-2017, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico
118 Knabben. All rights reserved. 118 Knabben. All rights reserved.
119 </p> 119 </p>
120 </div> 120 </div>
diff --git a/release/samples/old/wysiwygarea/fullpage.html b/release/samples/old/wysiwygarea/fullpage.html
index 341a4e7..bb3193a 100644
--- a/release/samples/old/wysiwygarea/fullpage.html
+++ b/release/samples/old/wysiwygarea/fullpage.html
@@ -1,6 +1,6 @@
1<!DOCTYPE html> 1<!DOCTYPE html>
2<!-- 2<!--
3Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 3Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
4For licensing, see LICENSE.md or http://ckeditor.com/license 4For licensing, see LICENSE.md or http://ckeditor.com/license
5--> 5-->
6<html> 6<html>
@@ -72,7 +72,7 @@ CKEDITOR.replace( '<em>textarea_id</em>', {
72 CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a> 72 CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a>
73 </p> 73 </p>
74 <p id="copy"> 74 <p id="copy">
75 Copyright &copy; 2003-2016, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico 75 Copyright &copy; 2003-2017, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico
76 Knabben. All rights reserved. 76 Knabben. All rights reserved.
77 </p> 77 </p>
78 </div> 78 </div>
diff --git a/release/samples/old/xhtmlstyle.html b/release/samples/old/xhtmlstyle.html
index 2d67fb0..daf5879 100644
--- a/release/samples/old/xhtmlstyle.html
+++ b/release/samples/old/xhtmlstyle.html
@@ -1,6 +1,6 @@
1<!DOCTYPE html> 1<!DOCTYPE html>
2<!-- 2<!--
3Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 3Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
4For licensing, see LICENSE.md or http://ckeditor.com/license 4For licensing, see LICENSE.md or http://ckeditor.com/license
5--> 5-->
6<html> 6<html>
@@ -226,7 +226,7 @@ CKEDITOR.replace( '<em>textarea_id</em>', {
226 CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a> 226 CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a>
227 </p> 227 </p>
228 <p id="copy"> 228 <p id="copy">
229 Copyright &copy; 2003-2016, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico 229 Copyright &copy; 2003-2017, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico
230 Knabben. All rights reserved. 230 Knabben. All rights reserved.
231 </p> 231 </p>
232 </div> 232 </div>
diff --git a/release/samples/toolbarconfigurator/index.html b/release/samples/toolbarconfigurator/index.html
index 4c9057b..5c06a0f 100644
--- a/release/samples/toolbarconfigurator/index.html
+++ b/release/samples/toolbarconfigurator/index.html
@@ -1,6 +1,6 @@
1<!DOCTYPE html> 1<!DOCTYPE html>
2<!-- 2<!--
3Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 3Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
4For licensing, see LICENSE.md or http://ckeditor.com/license 4For licensing, see LICENSE.md or http://ckeditor.com/license
5--> 5-->
6<!--[if IE 8]><html class="ie8"><![endif]--> 6<!--[if IE 8]><html class="ie8"><![endif]-->
@@ -26,7 +26,7 @@ For licensing, see LICENSE.md or http://ckeditor.com/license
26 <div class="grid-container"> 26 <div class="grid-container">
27 <ul class="navigation-a-left grid-width-70"> 27 <ul class="navigation-a-left grid-width-70">
28 <li><a href="http://ckeditor.com">Project Homepage</a></li> 28 <li><a href="http://ckeditor.com">Project Homepage</a></li>
29 <li><a href="http://dev.ckeditor.com/">I found a bug</a></li> 29 <li><a href="https://github.com/ckeditor/ckeditor-dev/issues">I found a bug</a></li>
30 <li><a href="http://github.com/ckeditor/ckeditor-dev" class="icon-pos-right icon-navigation-a-github">Fork CKEditor on GitHub</a></li> 30 <li><a href="http://github.com/ckeditor/ckeditor-dev" class="icon-pos-right icon-navigation-a-github">Fork CKEditor on GitHub</a></li>
31 </ul> 31 </ul>
32 <ul class="navigation-a-right grid-width-30"> 32 <ul class="navigation-a-right grid-width-30">
@@ -136,7 +136,7 @@ For licensing, see LICENSE.md or http://ckeditor.com/license
136 CKEditor &ndash; The text editor for the Internet &ndash; <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a> 136 CKEditor &ndash; The text editor for the Internet &ndash; <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a>
137 </p> 137 </p>
138 <p class="grid-width-100" id="copy"> 138 <p class="grid-width-100" id="copy">
139 Copyright &copy; 2003-2016, <a class="samples" href="http://cksource.com/">CKSource</a> &ndash; Frederico Knabben. All rights reserved. 139 Copyright &copy; 2003-2017, <a class="samples" href="http://cksource.com/">CKSource</a> &ndash; Frederico Knabben. All rights reserved.
140 </p> 140 </p>
141</footer> 141</footer>
142 142
diff --git a/release/skins/moono/dialog.css b/release/skins/moono/dialog.css
index a787e39..e17ab78 100644
--- a/release/skins/moono/dialog.css
+++ b/release/skins/moono/dialog.css
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5.cke_dialog{visibility:visible}.cke_dialog_body{z-index:1;background:#eaeaea;border:1px solid #b2b2b2;border-bottom-color:#999;border-radius:3px;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_dialog strong{font-weight:bold}.cke_dialog_title{font-weight:bold;font-size:13px;cursor:move;position:relative;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #999;padding:6px 10px;border-radius:2px 2px 0 0;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_dialog_spinner{border-radius:50%;width:12px;height:12px;overflow:hidden;text-indent:-9999em;border-top:2px solid rgba(102,102,102,0.2);border-right:2px solid rgba(102,102,102,0.2);border-bottom:2px solid rgba(102,102,102,0.2);border-left:2px solid rgba(102,102,102,1);-webkit-animation:dialog_spinner 1s infinite linear;animation:dialog_spinner 1s infinite linear}.cke_browser_ie8 .cke_dialog_spinner,.cke_browser_ie9 .cke_dialog_spinner{background:url(images/spinner.gif) center top no-repeat;width:16px;height:16px;border:0}@-webkit-keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.cke_dialog_contents{background-color:#fff;overflow:auto;padding:15px 10px 5px 10px;margin-top:30px;border-top:1px solid #bfbfbf;border-radius:0 0 3px 3px}.cke_dialog_contents_body{overflow:auto;padding:17px 10px 5px 10px;margin-top:22px}.cke_dialog_footer{text-align:right;position:relative;border:0;outline:1px solid #bfbfbf;box-shadow:0 1px 0 #fff inset;border-radius:0 0 2px 2px;background:#cfd1cf;background-image:linear-gradient(to bottom,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_rtl .cke_dialog_footer{text-align:left}.cke_hc .cke_dialog_footer{outline:0;border-top:1px solid #fff}.cke_dialog .cke_resizer{margin-top:22px}.cke_dialog .cke_resizer_rtl{margin-left:5px}.cke_dialog .cke_resizer_ltr{margin-right:5px}.cke_dialog_tabs{height:24px;display:inline-block;margin:5px 0 0;position:absolute;z-index:2;left:10px}.cke_rtl .cke_dialog_tabs{right:10px}a.cke_dialog_tab{height:16px;padding:4px 8px;margin-right:3px;display:inline-block;cursor:pointer;line-height:16px;outline:0;color:#595959;border:1px solid #bfbfbf;border-radius:3px 3px 0 0;background:#d4d4d4;background-image:linear-gradient(to bottom,#fafafa,#ededed);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fafafa',endColorstr='#ededed')}.cke_rtl a.cke_dialog_tab{margin-right:0;margin-left:3px}a.cke_dialog_tab:hover,a.cke_dialog_tab:focus{background:#ebebeb;background:linear-gradient(to bottom,#ebebeb 0,#dfdfdf 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ebebeb',endColorstr='#dfdfdf',GradientType=0)}a.cke_dialog_tab_selected{background:#fff;color:#383838;border-bottom-color:#fff;cursor:default;filter:none}a.cke_dialog_tab_selected:hover,a.cke_dialog_tab_selected:focus,{background:#ededed;background:linear-gradient(to bottom,#ededed 0,#fff 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed',endColorstr='#ffffff',GradientType=0)}.cke_hc a.cke_dialog_tab:hover,.cke_hc a.cke_dialog_tab:focus,.cke_hc a.cke_dialog_tab_selected{border:3px solid;padding:2px 6px}a.cke_dialog_tab_disabled{color:#bababa;cursor:default}.cke_single_page .cke_dialog_tabs{display:none}.cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:0;border-top:0}a.cke_dialog_close_button{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:4px;z-index:5;opacity:.8;filter:alpha(opacity = 80)}.cke_dialog_close_button:hover{opacity:1;filter:alpha(opacity = 100)}.cke_hidpi .cke_dialog_close_button{background-image:url(images/hidpi/close.png);background-size:16px}.cke_dialog_close_button span{display:none}.cke_hc .cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px}.cke_ltr .cke_dialog_close_button{right:5px}.cke_rtl .cke_dialog_close_button{left:6px}.cke_dialog_close_button{top:4px}div.cke_disabled .cke_dialog_ui_labeled_content div *{background-color:#ddd;cursor:default}.cke_dialog_ui_vbox table,.cke_dialog_ui_hbox table{margin:auto}.cke_dialog_ui_vbox_child{padding:5px 0}.cke_dialog_ui_hbox{width:100%}.cke_dialog_ui_hbox_first,.cke_dialog_ui_hbox_child,.cke_dialog_ui_hbox_last{vertical-align:top}.cke_ltr .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px}.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px}.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-right:5px}.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-left:5px;padding-right:0}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:1px solid}textarea.cke_dialog_ui_input_textarea{overflow:auto;resize:none}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,textarea.cke_dialog_ui_input_textarea{background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:4px 6px;outline:0;width:100%;*width:95%;box-sizing:border-box;border-radius:3px;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}input.cke_dialog_ui_input_text:hover,input.cke_dialog_ui_input_password:hover,textarea.cke_dialog_ui_input_textarea:hover{border:1px solid #aeb3b9;border-top-color:#a0a6ad}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,textarea.cke_dialog_ui_input_textarea:focus,select.cke_dialog_ui_input_select:focus{outline:0;border:1px solid #139ff7;border-top-color:#1392e9}a.cke_dialog_ui_button{display:inline-block;*display:inline;*zoom:1;padding:4px 0;margin:0;text-align:center;color:#333;vertical-align:middle;cursor:pointer;border:1px solid #b6b6b6;border-bottom-color:#999;border-radius:3px;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}span.cke_dialog_ui_button{padding:0 10px}a.cke_dialog_ui_button:hover{border-color:#9e9e9e;background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{border-color:#969696;outline:0;box-shadow:0 0 6px rgba(0,0,0,.4) inset}.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button:focus,.cke_hc a.cke_dialog_ui_button:active{border:3px solid;padding-top:1px;padding-bottom:1px}.cke_hc a.cke_dialog_ui_button:hover span,.cke_hc a.cke_dialog_ui_button:focus span,.cke_hc a.cke_dialog_ui_button:active span{padding-left:10px;padding-right:10px}.cke_dialog_footer_buttons a.cke_dialog_ui_button span{color:inherit;font-size:12px;font-weight:bold;line-height:18px;padding:0 12px}a.cke_dialog_ui_button_ok{color:#fff;text-shadow:0 -1px 0 #55830c;border-color:#62a60a #62a60a #4d9200;background:#69b10b;background-image:linear-gradient(to bottom,#9ad717,#69b10b);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#9ad717',endColorstr='#69b10b')}a.cke_dialog_ui_button_ok:hover{border-color:#5b9909 #5b9909 #478500;background:#88be14;background:linear-gradient(to bottom,#88be14 0,#5d9c0a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#88be14',endColorstr='#5d9c0a',GradientType=0)}a.cke_dialog_ui_button_ok.cke_disabled{border-color:#7d9f51;background:#8dad62;background-image:-webkit-gradient(linear,0 0,0 100%,from(#b3d271),to(#8dad62));background-image:-webkit-linear-gradient(top,#b3d271,#8dad62);background-image:-o-linear-gradient(top,#b3d271,#8dad62);background-image:linear-gradient(to bottom,#b3d271,#8dad62);background-image:-moz-linear-gradient(top,#b3d271,#8dad62);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#B3D271',endColorstr='#8DAD62')}a.cke_dialog_ui_button_ok.cke_disabled span{color:#e0e8d1}a.cke_dialog_ui_button span{text-shadow:0 1px 0 #fff}a.cke_dialog_ui_button_ok span{text-shadow:0 -1px 0 #55830c}span.cke_dialog_ui_button{cursor:pointer}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active,a.cke_dialog_ui_button_cancel:focus,a.cke_dialog_ui_button_cancel:active{border-width:2px;padding:3px 0}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active{border-color:#568c0a}a.cke_dialog_ui_button_ok.cke_disabled:focus,a.cke_dialog_ui_button_ok.cke_disabled:active{border-color:#6f8c49}a.cke_dialog_ui_button_ok:focus span,a.cke_dialog_ui_button_ok:active span,a.cke_dialog_ui_button_cancel:focus span,a.cke_dialog_ui_button_cancel:active span{padding:0 11px}.cke_dialog_footer_buttons{display:inline-table;margin:5px;width:auto;position:relative;vertical-align:middle}div.cke_dialog_ui_input_select{display:table}select.cke_dialog_ui_input_select{height:25px;line-height:25px;background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:3px 3px 3px 6px;outline:0;border-radius:3px;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}.cke_dialog_ui_input_file{width:100%;height:25px}.cke_hc .cke_dialog_ui_labeled_content input:focus,.cke_hc .cke_dialog_ui_labeled_content select:focus,.cke_hc .cke_dialog_ui_labeled_content textarea:focus{outline:1px dotted}.cke_dialog .cke_dark_background{background-color:#dedede}.cke_dialog .cke_light_background{background-color:#ebebeb}.cke_dialog .cke_centered{text-align:center}.cke_dialog a.cke_btn_reset{float:right;background:url(images/refresh.png) top left no-repeat;width:16px;height:16px;border:1px none;font-size:1px}.cke_hidpi .cke_dialog a.cke_btn_reset{background-size:16px;background-image:url(images/hidpi/refresh.png)}.cke_rtl .cke_dialog a.cke_btn_reset{float:left}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked{float:left;width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.cke_dialog a.cke_btn_locked .cke_icon{display:none}.cke_rtl .cke_dialog a.cke_btn_locked,.cke_rtl .cke_dialog a.cke_btn_unlocked{float:right}.cke_dialog a.cke_btn_locked{background-image:url(images/lock.png)}.cke_dialog a.cke_btn_unlocked{background-image:url(images/lock-open.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked,.cke_hidpi .cke_dialog a.cke_btn_locked{background-size:16px}.cke_hidpi .cke_dialog a.cke_btn_locked{background-image:url(images/hidpi/lock.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked{background-image:url(images/hidpi/lock-open.png)}.cke_dialog .cke_btn_over{border:outset 1px;cursor:pointer}.cke_dialog .ImagePreviewBox{border:2px ridge black;overflow:scroll;height:200px;width:300px;padding:2px;background-color:white}.cke_dialog .ImagePreviewBox table td{white-space:normal}.cke_dialog .ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity = 90);background-color:#e4e4e4}.cke_dialog .FlashPreviewBox{white-space:normal;border:2px ridge black;overflow:auto;height:160px;width:390px;padding:2px;background-color:white}.cke_dialog .cke_pastetext{width:346px;height:170px}.cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none}.cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:white;border:1px solid #aeb3b9;border-radius:3px}.cke_dialog .cke_hand{cursor:pointer}.cke_disabled{color:#a0a0a0}.cke_dialog_body .cke_label{display:none}.cke_dialog_body label{display:inline;margin-bottom:auto;cursor:default}.cke_dialog_body label.cke_required{font-weight:bold}a.cke_smile{overflow:hidden;display:block;text-align:center;padding:.3em 0}a.cke_smile img{vertical-align:middle}a.cke_specialchar{cursor:inherit;display:block;height:1.25em;padding:.2em .3em;text-align:center}a.cke_smile,a.cke_specialchar{border:1px solid transparent}a.cke_smile:hover,a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:hover,a.cke_specialchar:focus,a.cke_specialchar:active{background:#fff;outline:0}a.cke_smile:hover,a.cke_specialchar:hover{border-color:#888}a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:focus,a.cke_specialchar:active{border-color:#139ff7}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_dialog_ui_checkbox_input:focus,.cke_dialog_ui_radio_input:focus,.cke_btn_over{outline:1px dotted #696969}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity = 0);width:100%;height:100%} \ No newline at end of file 5.cke_dialog{visibility:visible}.cke_dialog_body{z-index:1;background:#eaeaea;border:1px solid #b2b2b2;border-bottom-color:#999;border-radius:3px;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_dialog strong{font-weight:bold}.cke_dialog_title{font-weight:bold;font-size:13px;cursor:move;position:relative;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #999;padding:6px 10px;border-radius:2px 2px 0 0;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_dialog_spinner{border-radius:50%;width:12px;height:12px;overflow:hidden;text-indent:-9999em;border-top:2px solid rgba(102,102,102,0.2);border-right:2px solid rgba(102,102,102,0.2);border-bottom:2px solid rgba(102,102,102,0.2);border-left:2px solid rgba(102,102,102,1);-webkit-animation:dialog_spinner 1s infinite linear;animation:dialog_spinner 1s infinite linear}.cke_browser_ie8 .cke_dialog_spinner,.cke_browser_ie9 .cke_dialog_spinner{background:url(images/spinner.gif) center top no-repeat;width:16px;height:16px;border:0}@-webkit-keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.cke_dialog_contents{background-color:#fff;overflow:auto;padding:15px 10px 5px 10px;margin-top:30px;border-top:1px solid #bfbfbf;border-radius:0 0 3px 3px}.cke_dialog_contents_body{overflow:auto;padding:17px 10px 5px 10px;margin-top:22px}.cke_dialog_footer{text-align:right;position:relative;border:0;outline:1px solid #bfbfbf;box-shadow:0 1px 0 #fff inset;border-radius:0 0 2px 2px;background:#cfd1cf;background-image:linear-gradient(to bottom,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_rtl .cke_dialog_footer{text-align:left}.cke_hc .cke_dialog_footer{outline:0;border-top:1px solid #fff}.cke_dialog .cke_resizer{margin-top:22px}.cke_dialog .cke_resizer_rtl{margin-left:5px}.cke_dialog .cke_resizer_ltr{margin-right:5px}.cke_dialog_tabs{height:24px;display:inline-block;margin:5px 0 0;position:absolute;z-index:2;left:10px}.cke_rtl .cke_dialog_tabs{right:10px}a.cke_dialog_tab{height:16px;padding:4px 8px;margin-right:3px;display:inline-block;cursor:pointer;line-height:16px;outline:0;color:#595959;border:1px solid #bfbfbf;border-radius:3px 3px 0 0;background:#d4d4d4;background-image:linear-gradient(to bottom,#fafafa,#ededed);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fafafa',endColorstr='#ededed')}.cke_rtl a.cke_dialog_tab{margin-right:0;margin-left:3px}a.cke_dialog_tab:hover,a.cke_dialog_tab:focus{background:#ebebeb;background:linear-gradient(to bottom,#ebebeb 0,#dfdfdf 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ebebeb',endColorstr='#dfdfdf',GradientType=0)}a.cke_dialog_tab_selected{background:#fff;color:#383838;border-bottom-color:#fff;cursor:default;filter:none}a.cke_dialog_tab_selected:hover,a.cke_dialog_tab_selected:focus{background:#ededed;background:linear-gradient(to bottom,#ededed 0,#fff 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed',endColorstr='#ffffff',GradientType=0)}.cke_hc a.cke_dialog_tab:hover,.cke_hc a.cke_dialog_tab:focus,.cke_hc a.cke_dialog_tab_selected{border:3px solid;padding:2px 6px}a.cke_dialog_tab_disabled{color:#bababa;cursor:default}.cke_single_page .cke_dialog_tabs{display:none}.cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:0;border-top:0}a.cke_dialog_close_button{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:4px;z-index:5;opacity:.8;filter:alpha(opacity = 80)}.cke_dialog_close_button:hover{opacity:1;filter:alpha(opacity = 100)}.cke_hidpi .cke_dialog_close_button{background-image:url(images/hidpi/close.png);background-size:16px}.cke_dialog_close_button span{display:none}.cke_hc .cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px}.cke_ltr .cke_dialog_close_button{right:5px}.cke_rtl .cke_dialog_close_button{left:6px}.cke_dialog_close_button{top:4px}div.cke_disabled .cke_dialog_ui_labeled_content div *{background-color:#ddd;cursor:default}.cke_dialog_ui_vbox table,.cke_dialog_ui_hbox table{margin:auto}.cke_dialog_ui_vbox_child{padding:5px 0}.cke_dialog_ui_hbox{width:100%}.cke_dialog_ui_hbox_first,.cke_dialog_ui_hbox_child,.cke_dialog_ui_hbox_last{vertical-align:top}.cke_ltr .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px}.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px}.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-right:5px}.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-left:5px;padding-right:0}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:1px solid}textarea.cke_dialog_ui_input_textarea{overflow:auto;resize:none}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,textarea.cke_dialog_ui_input_textarea{background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:4px 6px;outline:0;width:100%;*width:95%;box-sizing:border-box;border-radius:3px;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}input.cke_dialog_ui_input_text:hover,input.cke_dialog_ui_input_password:hover,textarea.cke_dialog_ui_input_textarea:hover{border:1px solid #aeb3b9;border-top-color:#a0a6ad}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,textarea.cke_dialog_ui_input_textarea:focus,select.cke_dialog_ui_input_select:focus{outline:0;border:1px solid #139ff7;border-top-color:#1392e9}a.cke_dialog_ui_button{display:inline-block;*display:inline;*zoom:1;padding:4px 0;margin:0;text-align:center;color:#333;vertical-align:middle;cursor:pointer;border:1px solid #b6b6b6;border-bottom-color:#999;border-radius:3px;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}span.cke_dialog_ui_button{padding:0 10px}a.cke_dialog_ui_button:hover{border-color:#9e9e9e;background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{border-color:#969696;outline:0;box-shadow:0 0 6px rgba(0,0,0,.4) inset}.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button:focus,.cke_hc a.cke_dialog_ui_button:active{border:3px solid;padding-top:1px;padding-bottom:1px}.cke_hc a.cke_dialog_ui_button:hover span,.cke_hc a.cke_dialog_ui_button:focus span,.cke_hc a.cke_dialog_ui_button:active span{padding-left:10px;padding-right:10px}.cke_dialog_footer_buttons a.cke_dialog_ui_button span{color:inherit;font-size:12px;font-weight:bold;line-height:18px;padding:0 12px}a.cke_dialog_ui_button_ok{color:#fff;text-shadow:0 -1px 0 #55830c;border-color:#62a60a #62a60a #4d9200;background:#69b10b;background-image:linear-gradient(to bottom,#9ad717,#69b10b);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#9ad717',endColorstr='#69b10b')}a.cke_dialog_ui_button_ok:hover{border-color:#5b9909 #5b9909 #478500;background:#88be14;background:linear-gradient(to bottom,#88be14 0,#5d9c0a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#88be14',endColorstr='#5d9c0a',GradientType=0)}a.cke_dialog_ui_button_ok.cke_disabled{border-color:#7d9f51;background:#8dad62;background-image:-webkit-gradient(linear,0 0,0 100%,from(#b3d271),to(#8dad62));background-image:-webkit-linear-gradient(top,#b3d271,#8dad62);background-image:-o-linear-gradient(top,#b3d271,#8dad62);background-image:linear-gradient(to bottom,#b3d271,#8dad62);background-image:-moz-linear-gradient(top,#b3d271,#8dad62);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#B3D271',endColorstr='#8DAD62')}a.cke_dialog_ui_button_ok.cke_disabled span{color:#e0e8d1}a.cke_dialog_ui_button span{text-shadow:0 1px 0 #fff}a.cke_dialog_ui_button_ok span{text-shadow:0 -1px 0 #55830c}span.cke_dialog_ui_button{cursor:pointer}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active,a.cke_dialog_ui_button_cancel:focus,a.cke_dialog_ui_button_cancel:active{border-width:2px;padding:3px 0}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active{border-color:#568c0a}a.cke_dialog_ui_button_ok.cke_disabled:focus,a.cke_dialog_ui_button_ok.cke_disabled:active{border-color:#6f8c49}a.cke_dialog_ui_button_ok:focus span,a.cke_dialog_ui_button_ok:active span,a.cke_dialog_ui_button_cancel:focus span,a.cke_dialog_ui_button_cancel:active span{padding:0 11px}.cke_dialog_footer_buttons{display:inline-table;margin:5px;width:auto;position:relative;vertical-align:middle}div.cke_dialog_ui_input_select{display:table}select.cke_dialog_ui_input_select{height:25px;line-height:25px;background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:3px 3px 3px 6px;outline:0;border-radius:3px;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}.cke_dialog_ui_input_file{width:100%;height:25px}.cke_hc .cke_dialog_ui_labeled_content input:focus,.cke_hc .cke_dialog_ui_labeled_content select:focus,.cke_hc .cke_dialog_ui_labeled_content textarea:focus{outline:1px dotted}.cke_dialog .cke_dark_background{background-color:#dedede}.cke_dialog .cke_light_background{background-color:#ebebeb}.cke_dialog .cke_centered{text-align:center}.cke_dialog a.cke_btn_reset{float:right;background:url(images/refresh.png) top left no-repeat;width:16px;height:16px;border:1px none;font-size:1px}.cke_hidpi .cke_dialog a.cke_btn_reset{background-size:16px;background-image:url(images/hidpi/refresh.png)}.cke_rtl .cke_dialog a.cke_btn_reset{float:left}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked{float:left;width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.cke_dialog a.cke_btn_locked .cke_icon{display:none}.cke_rtl .cke_dialog a.cke_btn_locked,.cke_rtl .cke_dialog a.cke_btn_unlocked{float:right}.cke_dialog a.cke_btn_locked{background-image:url(images/lock.png)}.cke_dialog a.cke_btn_unlocked{background-image:url(images/lock-open.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked,.cke_hidpi .cke_dialog a.cke_btn_locked{background-size:16px}.cke_hidpi .cke_dialog a.cke_btn_locked{background-image:url(images/hidpi/lock.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked{background-image:url(images/hidpi/lock-open.png)}.cke_dialog .cke_btn_over{border:outset 1px;cursor:pointer}.cke_dialog .ImagePreviewBox{border:2px ridge black;overflow:scroll;height:200px;width:300px;padding:2px;background-color:white}.cke_dialog .ImagePreviewBox table td{white-space:normal}.cke_dialog .ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity = 90);background-color:#e4e4e4}.cke_dialog .FlashPreviewBox{white-space:normal;border:2px ridge black;overflow:auto;height:160px;width:390px;padding:2px;background-color:white}.cke_dialog .cke_pastetext{width:346px;height:170px}.cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none}.cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:white;border:1px solid #aeb3b9;border-radius:3px}.cke_dialog .cke_hand{cursor:pointer}.cke_disabled{color:#a0a0a0}.cke_dialog_body .cke_label{display:none}.cke_dialog_body label{display:inline;margin-bottom:auto;cursor:default}.cke_dialog_body label.cke_required{font-weight:bold}a.cke_smile{overflow:hidden;display:block;text-align:center;padding:.3em 0}a.cke_smile img{vertical-align:middle}a.cke_specialchar{cursor:inherit;display:block;height:1.25em;padding:.2em .3em;text-align:center}a.cke_smile,a.cke_specialchar{border:1px solid transparent}a.cke_smile:hover,a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:hover,a.cke_specialchar:focus,a.cke_specialchar:active{background:#fff;outline:0}a.cke_smile:hover,a.cke_specialchar:hover{border-color:#888}a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:focus,a.cke_specialchar:active{border-color:#139ff7}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_dialog_ui_checkbox_input:focus,.cke_dialog_ui_radio_input:focus,.cke_btn_over{outline:1px dotted #696969}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity = 0);width:100%;height:100%} \ No newline at end of file
diff --git a/release/skins/moono/dialog_ie.css b/release/skins/moono/dialog_ie.css
index e41c10b..41a8200 100644
--- a/release/skins/moono/dialog_ie.css
+++ b/release/skins/moono/dialog_ie.css
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5.cke_dialog{visibility:visible}.cke_dialog_body{z-index:1;background:#eaeaea;border:1px solid #b2b2b2;border-bottom-color:#999;border-radius:3px;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_dialog strong{font-weight:bold}.cke_dialog_title{font-weight:bold;font-size:13px;cursor:move;position:relative;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #999;padding:6px 10px;border-radius:2px 2px 0 0;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_dialog_spinner{border-radius:50%;width:12px;height:12px;overflow:hidden;text-indent:-9999em;border-top:2px solid rgba(102,102,102,0.2);border-right:2px solid rgba(102,102,102,0.2);border-bottom:2px solid rgba(102,102,102,0.2);border-left:2px solid rgba(102,102,102,1);-webkit-animation:dialog_spinner 1s infinite linear;animation:dialog_spinner 1s infinite linear}.cke_browser_ie8 .cke_dialog_spinner,.cke_browser_ie9 .cke_dialog_spinner{background:url(images/spinner.gif) center top no-repeat;width:16px;height:16px;border:0}@-webkit-keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.cke_dialog_contents{background-color:#fff;overflow:auto;padding:15px 10px 5px 10px;margin-top:30px;border-top:1px solid #bfbfbf;border-radius:0 0 3px 3px}.cke_dialog_contents_body{overflow:auto;padding:17px 10px 5px 10px;margin-top:22px}.cke_dialog_footer{text-align:right;position:relative;border:0;outline:1px solid #bfbfbf;box-shadow:0 1px 0 #fff inset;border-radius:0 0 2px 2px;background:#cfd1cf;background-image:linear-gradient(to bottom,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_rtl .cke_dialog_footer{text-align:left}.cke_hc .cke_dialog_footer{outline:0;border-top:1px solid #fff}.cke_dialog .cke_resizer{margin-top:22px}.cke_dialog .cke_resizer_rtl{margin-left:5px}.cke_dialog .cke_resizer_ltr{margin-right:5px}.cke_dialog_tabs{height:24px;display:inline-block;margin:5px 0 0;position:absolute;z-index:2;left:10px}.cke_rtl .cke_dialog_tabs{right:10px}a.cke_dialog_tab{height:16px;padding:4px 8px;margin-right:3px;display:inline-block;cursor:pointer;line-height:16px;outline:0;color:#595959;border:1px solid #bfbfbf;border-radius:3px 3px 0 0;background:#d4d4d4;background-image:linear-gradient(to bottom,#fafafa,#ededed);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fafafa',endColorstr='#ededed')}.cke_rtl a.cke_dialog_tab{margin-right:0;margin-left:3px}a.cke_dialog_tab:hover,a.cke_dialog_tab:focus{background:#ebebeb;background:linear-gradient(to bottom,#ebebeb 0,#dfdfdf 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ebebeb',endColorstr='#dfdfdf',GradientType=0)}a.cke_dialog_tab_selected{background:#fff;color:#383838;border-bottom-color:#fff;cursor:default;filter:none}a.cke_dialog_tab_selected:hover,a.cke_dialog_tab_selected:focus,{background:#ededed;background:linear-gradient(to bottom,#ededed 0,#fff 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed',endColorstr='#ffffff',GradientType=0)}.cke_hc a.cke_dialog_tab:hover,.cke_hc a.cke_dialog_tab:focus,.cke_hc a.cke_dialog_tab_selected{border:3px solid;padding:2px 6px}a.cke_dialog_tab_disabled{color:#bababa;cursor:default}.cke_single_page .cke_dialog_tabs{display:none}.cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:0;border-top:0}a.cke_dialog_close_button{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:4px;z-index:5;opacity:.8;filter:alpha(opacity = 80)}.cke_dialog_close_button:hover{opacity:1;filter:alpha(opacity = 100)}.cke_hidpi .cke_dialog_close_button{background-image:url(images/hidpi/close.png);background-size:16px}.cke_dialog_close_button span{display:none}.cke_hc .cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px}.cke_ltr .cke_dialog_close_button{right:5px}.cke_rtl .cke_dialog_close_button{left:6px}.cke_dialog_close_button{top:4px}div.cke_disabled .cke_dialog_ui_labeled_content div *{background-color:#ddd;cursor:default}.cke_dialog_ui_vbox table,.cke_dialog_ui_hbox table{margin:auto}.cke_dialog_ui_vbox_child{padding:5px 0}.cke_dialog_ui_hbox{width:100%}.cke_dialog_ui_hbox_first,.cke_dialog_ui_hbox_child,.cke_dialog_ui_hbox_last{vertical-align:top}.cke_ltr .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px}.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px}.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-right:5px}.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-left:5px;padding-right:0}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:1px solid}textarea.cke_dialog_ui_input_textarea{overflow:auto;resize:none}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,textarea.cke_dialog_ui_input_textarea{background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:4px 6px;outline:0;width:100%;*width:95%;box-sizing:border-box;border-radius:3px;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}input.cke_dialog_ui_input_text:hover,input.cke_dialog_ui_input_password:hover,textarea.cke_dialog_ui_input_textarea:hover{border:1px solid #aeb3b9;border-top-color:#a0a6ad}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,textarea.cke_dialog_ui_input_textarea:focus,select.cke_dialog_ui_input_select:focus{outline:0;border:1px solid #139ff7;border-top-color:#1392e9}a.cke_dialog_ui_button{display:inline-block;*display:inline;*zoom:1;padding:4px 0;margin:0;text-align:center;color:#333;vertical-align:middle;cursor:pointer;border:1px solid #b6b6b6;border-bottom-color:#999;border-radius:3px;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}span.cke_dialog_ui_button{padding:0 10px}a.cke_dialog_ui_button:hover{border-color:#9e9e9e;background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{border-color:#969696;outline:0;box-shadow:0 0 6px rgba(0,0,0,.4) inset}.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button:focus,.cke_hc a.cke_dialog_ui_button:active{border:3px solid;padding-top:1px;padding-bottom:1px}.cke_hc a.cke_dialog_ui_button:hover span,.cke_hc a.cke_dialog_ui_button:focus span,.cke_hc a.cke_dialog_ui_button:active span{padding-left:10px;padding-right:10px}.cke_dialog_footer_buttons a.cke_dialog_ui_button span{color:inherit;font-size:12px;font-weight:bold;line-height:18px;padding:0 12px}a.cke_dialog_ui_button_ok{color:#fff;text-shadow:0 -1px 0 #55830c;border-color:#62a60a #62a60a #4d9200;background:#69b10b;background-image:linear-gradient(to bottom,#9ad717,#69b10b);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#9ad717',endColorstr='#69b10b')}a.cke_dialog_ui_button_ok:hover{border-color:#5b9909 #5b9909 #478500;background:#88be14;background:linear-gradient(to bottom,#88be14 0,#5d9c0a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#88be14',endColorstr='#5d9c0a',GradientType=0)}a.cke_dialog_ui_button_ok.cke_disabled{border-color:#7d9f51;background:#8dad62;background-image:-webkit-gradient(linear,0 0,0 100%,from(#b3d271),to(#8dad62));background-image:-webkit-linear-gradient(top,#b3d271,#8dad62);background-image:-o-linear-gradient(top,#b3d271,#8dad62);background-image:linear-gradient(to bottom,#b3d271,#8dad62);background-image:-moz-linear-gradient(top,#b3d271,#8dad62);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#B3D271',endColorstr='#8DAD62')}a.cke_dialog_ui_button_ok.cke_disabled span{color:#e0e8d1}a.cke_dialog_ui_button span{text-shadow:0 1px 0 #fff}a.cke_dialog_ui_button_ok span{text-shadow:0 -1px 0 #55830c}span.cke_dialog_ui_button{cursor:pointer}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active,a.cke_dialog_ui_button_cancel:focus,a.cke_dialog_ui_button_cancel:active{border-width:2px;padding:3px 0}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active{border-color:#568c0a}a.cke_dialog_ui_button_ok.cke_disabled:focus,a.cke_dialog_ui_button_ok.cke_disabled:active{border-color:#6f8c49}a.cke_dialog_ui_button_ok:focus span,a.cke_dialog_ui_button_ok:active span,a.cke_dialog_ui_button_cancel:focus span,a.cke_dialog_ui_button_cancel:active span{padding:0 11px}.cke_dialog_footer_buttons{display:inline-table;margin:5px;width:auto;position:relative;vertical-align:middle}div.cke_dialog_ui_input_select{display:table}select.cke_dialog_ui_input_select{height:25px;line-height:25px;background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:3px 3px 3px 6px;outline:0;border-radius:3px;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}.cke_dialog_ui_input_file{width:100%;height:25px}.cke_hc .cke_dialog_ui_labeled_content input:focus,.cke_hc .cke_dialog_ui_labeled_content select:focus,.cke_hc .cke_dialog_ui_labeled_content textarea:focus{outline:1px dotted}.cke_dialog .cke_dark_background{background-color:#dedede}.cke_dialog .cke_light_background{background-color:#ebebeb}.cke_dialog .cke_centered{text-align:center}.cke_dialog a.cke_btn_reset{float:right;background:url(images/refresh.png) top left no-repeat;width:16px;height:16px;border:1px none;font-size:1px}.cke_hidpi .cke_dialog a.cke_btn_reset{background-size:16px;background-image:url(images/hidpi/refresh.png)}.cke_rtl .cke_dialog a.cke_btn_reset{float:left}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked{float:left;width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.cke_dialog a.cke_btn_locked .cke_icon{display:none}.cke_rtl .cke_dialog a.cke_btn_locked,.cke_rtl .cke_dialog a.cke_btn_unlocked{float:right}.cke_dialog a.cke_btn_locked{background-image:url(images/lock.png)}.cke_dialog a.cke_btn_unlocked{background-image:url(images/lock-open.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked,.cke_hidpi .cke_dialog a.cke_btn_locked{background-size:16px}.cke_hidpi .cke_dialog a.cke_btn_locked{background-image:url(images/hidpi/lock.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked{background-image:url(images/hidpi/lock-open.png)}.cke_dialog .cke_btn_over{border:outset 1px;cursor:pointer}.cke_dialog .ImagePreviewBox{border:2px ridge black;overflow:scroll;height:200px;width:300px;padding:2px;background-color:white}.cke_dialog .ImagePreviewBox table td{white-space:normal}.cke_dialog .ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity = 90);background-color:#e4e4e4}.cke_dialog .FlashPreviewBox{white-space:normal;border:2px ridge black;overflow:auto;height:160px;width:390px;padding:2px;background-color:white}.cke_dialog .cke_pastetext{width:346px;height:170px}.cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none}.cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:white;border:1px solid #aeb3b9;border-radius:3px}.cke_dialog .cke_hand{cursor:pointer}.cke_disabled{color:#a0a0a0}.cke_dialog_body .cke_label{display:none}.cke_dialog_body label{display:inline;margin-bottom:auto;cursor:default}.cke_dialog_body label.cke_required{font-weight:bold}a.cke_smile{overflow:hidden;display:block;text-align:center;padding:.3em 0}a.cke_smile img{vertical-align:middle}a.cke_specialchar{cursor:inherit;display:block;height:1.25em;padding:.2em .3em;text-align:center}a.cke_smile,a.cke_specialchar{border:1px solid transparent}a.cke_smile:hover,a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:hover,a.cke_specialchar:focus,a.cke_specialchar:active{background:#fff;outline:0}a.cke_smile:hover,a.cke_specialchar:hover{border-color:#888}a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:focus,a.cke_specialchar:active{border-color:#139ff7}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_dialog_ui_checkbox_input:focus,.cke_dialog_ui_radio_input:focus,.cke_btn_over{outline:1px dotted #696969}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity = 0);width:100%;height:100%}.cke_rtl input.cke_dialog_ui_input_text,.cke_rtl input.cke_dialog_ui_input_password{padding-right:2px}.cke_rtl div.cke_dialog_ui_input_text,.cke_rtl div.cke_dialog_ui_input_password{padding-left:2px}.cke_rtl div.cke_dialog_ui_input_text{padding-right:1px}.cke_rtl .cke_dialog_ui_vbox_child,.cke_rtl .cke_dialog_ui_hbox_child,.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_last{padding-right:2px!important}.cke_hc .cke_dialog_title,.cke_hc .cke_dialog_footer,.cke_hc a.cke_dialog_tab,.cke_hc a.cke_dialog_ui_button,.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button_ok,.cke_hc a.cke_dialog_ui_button_ok:hover{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:0} \ No newline at end of file 5.cke_dialog{visibility:visible}.cke_dialog_body{z-index:1;background:#eaeaea;border:1px solid #b2b2b2;border-bottom-color:#999;border-radius:3px;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_dialog strong{font-weight:bold}.cke_dialog_title{font-weight:bold;font-size:13px;cursor:move;position:relative;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #999;padding:6px 10px;border-radius:2px 2px 0 0;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_dialog_spinner{border-radius:50%;width:12px;height:12px;overflow:hidden;text-indent:-9999em;border-top:2px solid rgba(102,102,102,0.2);border-right:2px solid rgba(102,102,102,0.2);border-bottom:2px solid rgba(102,102,102,0.2);border-left:2px solid rgba(102,102,102,1);-webkit-animation:dialog_spinner 1s infinite linear;animation:dialog_spinner 1s infinite linear}.cke_browser_ie8 .cke_dialog_spinner,.cke_browser_ie9 .cke_dialog_spinner{background:url(images/spinner.gif) center top no-repeat;width:16px;height:16px;border:0}@-webkit-keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.cke_dialog_contents{background-color:#fff;overflow:auto;padding:15px 10px 5px 10px;margin-top:30px;border-top:1px solid #bfbfbf;border-radius:0 0 3px 3px}.cke_dialog_contents_body{overflow:auto;padding:17px 10px 5px 10px;margin-top:22px}.cke_dialog_footer{text-align:right;position:relative;border:0;outline:1px solid #bfbfbf;box-shadow:0 1px 0 #fff inset;border-radius:0 0 2px 2px;background:#cfd1cf;background-image:linear-gradient(to bottom,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_rtl .cke_dialog_footer{text-align:left}.cke_hc .cke_dialog_footer{outline:0;border-top:1px solid #fff}.cke_dialog .cke_resizer{margin-top:22px}.cke_dialog .cke_resizer_rtl{margin-left:5px}.cke_dialog .cke_resizer_ltr{margin-right:5px}.cke_dialog_tabs{height:24px;display:inline-block;margin:5px 0 0;position:absolute;z-index:2;left:10px}.cke_rtl .cke_dialog_tabs{right:10px}a.cke_dialog_tab{height:16px;padding:4px 8px;margin-right:3px;display:inline-block;cursor:pointer;line-height:16px;outline:0;color:#595959;border:1px solid #bfbfbf;border-radius:3px 3px 0 0;background:#d4d4d4;background-image:linear-gradient(to bottom,#fafafa,#ededed);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fafafa',endColorstr='#ededed')}.cke_rtl a.cke_dialog_tab{margin-right:0;margin-left:3px}a.cke_dialog_tab:hover,a.cke_dialog_tab:focus{background:#ebebeb;background:linear-gradient(to bottom,#ebebeb 0,#dfdfdf 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ebebeb',endColorstr='#dfdfdf',GradientType=0)}a.cke_dialog_tab_selected{background:#fff;color:#383838;border-bottom-color:#fff;cursor:default;filter:none}a.cke_dialog_tab_selected:hover,a.cke_dialog_tab_selected:focus{background:#ededed;background:linear-gradient(to bottom,#ededed 0,#fff 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed',endColorstr='#ffffff',GradientType=0)}.cke_hc a.cke_dialog_tab:hover,.cke_hc a.cke_dialog_tab:focus,.cke_hc a.cke_dialog_tab_selected{border:3px solid;padding:2px 6px}a.cke_dialog_tab_disabled{color:#bababa;cursor:default}.cke_single_page .cke_dialog_tabs{display:none}.cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:0;border-top:0}a.cke_dialog_close_button{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:4px;z-index:5;opacity:.8;filter:alpha(opacity = 80)}.cke_dialog_close_button:hover{opacity:1;filter:alpha(opacity = 100)}.cke_hidpi .cke_dialog_close_button{background-image:url(images/hidpi/close.png);background-size:16px}.cke_dialog_close_button span{display:none}.cke_hc .cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px}.cke_ltr .cke_dialog_close_button{right:5px}.cke_rtl .cke_dialog_close_button{left:6px}.cke_dialog_close_button{top:4px}div.cke_disabled .cke_dialog_ui_labeled_content div *{background-color:#ddd;cursor:default}.cke_dialog_ui_vbox table,.cke_dialog_ui_hbox table{margin:auto}.cke_dialog_ui_vbox_child{padding:5px 0}.cke_dialog_ui_hbox{width:100%}.cke_dialog_ui_hbox_first,.cke_dialog_ui_hbox_child,.cke_dialog_ui_hbox_last{vertical-align:top}.cke_ltr .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px}.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px}.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-right:5px}.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-left:5px;padding-right:0}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:1px solid}textarea.cke_dialog_ui_input_textarea{overflow:auto;resize:none}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,textarea.cke_dialog_ui_input_textarea{background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:4px 6px;outline:0;width:100%;*width:95%;box-sizing:border-box;border-radius:3px;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}input.cke_dialog_ui_input_text:hover,input.cke_dialog_ui_input_password:hover,textarea.cke_dialog_ui_input_textarea:hover{border:1px solid #aeb3b9;border-top-color:#a0a6ad}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,textarea.cke_dialog_ui_input_textarea:focus,select.cke_dialog_ui_input_select:focus{outline:0;border:1px solid #139ff7;border-top-color:#1392e9}a.cke_dialog_ui_button{display:inline-block;*display:inline;*zoom:1;padding:4px 0;margin:0;text-align:center;color:#333;vertical-align:middle;cursor:pointer;border:1px solid #b6b6b6;border-bottom-color:#999;border-radius:3px;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}span.cke_dialog_ui_button{padding:0 10px}a.cke_dialog_ui_button:hover{border-color:#9e9e9e;background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{border-color:#969696;outline:0;box-shadow:0 0 6px rgba(0,0,0,.4) inset}.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button:focus,.cke_hc a.cke_dialog_ui_button:active{border:3px solid;padding-top:1px;padding-bottom:1px}.cke_hc a.cke_dialog_ui_button:hover span,.cke_hc a.cke_dialog_ui_button:focus span,.cke_hc a.cke_dialog_ui_button:active span{padding-left:10px;padding-right:10px}.cke_dialog_footer_buttons a.cke_dialog_ui_button span{color:inherit;font-size:12px;font-weight:bold;line-height:18px;padding:0 12px}a.cke_dialog_ui_button_ok{color:#fff;text-shadow:0 -1px 0 #55830c;border-color:#62a60a #62a60a #4d9200;background:#69b10b;background-image:linear-gradient(to bottom,#9ad717,#69b10b);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#9ad717',endColorstr='#69b10b')}a.cke_dialog_ui_button_ok:hover{border-color:#5b9909 #5b9909 #478500;background:#88be14;background:linear-gradient(to bottom,#88be14 0,#5d9c0a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#88be14',endColorstr='#5d9c0a',GradientType=0)}a.cke_dialog_ui_button_ok.cke_disabled{border-color:#7d9f51;background:#8dad62;background-image:-webkit-gradient(linear,0 0,0 100%,from(#b3d271),to(#8dad62));background-image:-webkit-linear-gradient(top,#b3d271,#8dad62);background-image:-o-linear-gradient(top,#b3d271,#8dad62);background-image:linear-gradient(to bottom,#b3d271,#8dad62);background-image:-moz-linear-gradient(top,#b3d271,#8dad62);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#B3D271',endColorstr='#8DAD62')}a.cke_dialog_ui_button_ok.cke_disabled span{color:#e0e8d1}a.cke_dialog_ui_button span{text-shadow:0 1px 0 #fff}a.cke_dialog_ui_button_ok span{text-shadow:0 -1px 0 #55830c}span.cke_dialog_ui_button{cursor:pointer}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active,a.cke_dialog_ui_button_cancel:focus,a.cke_dialog_ui_button_cancel:active{border-width:2px;padding:3px 0}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active{border-color:#568c0a}a.cke_dialog_ui_button_ok.cke_disabled:focus,a.cke_dialog_ui_button_ok.cke_disabled:active{border-color:#6f8c49}a.cke_dialog_ui_button_ok:focus span,a.cke_dialog_ui_button_ok:active span,a.cke_dialog_ui_button_cancel:focus span,a.cke_dialog_ui_button_cancel:active span{padding:0 11px}.cke_dialog_footer_buttons{display:inline-table;margin:5px;width:auto;position:relative;vertical-align:middle}div.cke_dialog_ui_input_select{display:table}select.cke_dialog_ui_input_select{height:25px;line-height:25px;background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:3px 3px 3px 6px;outline:0;border-radius:3px;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}.cke_dialog_ui_input_file{width:100%;height:25px}.cke_hc .cke_dialog_ui_labeled_content input:focus,.cke_hc .cke_dialog_ui_labeled_content select:focus,.cke_hc .cke_dialog_ui_labeled_content textarea:focus{outline:1px dotted}.cke_dialog .cke_dark_background{background-color:#dedede}.cke_dialog .cke_light_background{background-color:#ebebeb}.cke_dialog .cke_centered{text-align:center}.cke_dialog a.cke_btn_reset{float:right;background:url(images/refresh.png) top left no-repeat;width:16px;height:16px;border:1px none;font-size:1px}.cke_hidpi .cke_dialog a.cke_btn_reset{background-size:16px;background-image:url(images/hidpi/refresh.png)}.cke_rtl .cke_dialog a.cke_btn_reset{float:left}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked{float:left;width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.cke_dialog a.cke_btn_locked .cke_icon{display:none}.cke_rtl .cke_dialog a.cke_btn_locked,.cke_rtl .cke_dialog a.cke_btn_unlocked{float:right}.cke_dialog a.cke_btn_locked{background-image:url(images/lock.png)}.cke_dialog a.cke_btn_unlocked{background-image:url(images/lock-open.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked,.cke_hidpi .cke_dialog a.cke_btn_locked{background-size:16px}.cke_hidpi .cke_dialog a.cke_btn_locked{background-image:url(images/hidpi/lock.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked{background-image:url(images/hidpi/lock-open.png)}.cke_dialog .cke_btn_over{border:outset 1px;cursor:pointer}.cke_dialog .ImagePreviewBox{border:2px ridge black;overflow:scroll;height:200px;width:300px;padding:2px;background-color:white}.cke_dialog .ImagePreviewBox table td{white-space:normal}.cke_dialog .ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity = 90);background-color:#e4e4e4}.cke_dialog .FlashPreviewBox{white-space:normal;border:2px ridge black;overflow:auto;height:160px;width:390px;padding:2px;background-color:white}.cke_dialog .cke_pastetext{width:346px;height:170px}.cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none}.cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:white;border:1px solid #aeb3b9;border-radius:3px}.cke_dialog .cke_hand{cursor:pointer}.cke_disabled{color:#a0a0a0}.cke_dialog_body .cke_label{display:none}.cke_dialog_body label{display:inline;margin-bottom:auto;cursor:default}.cke_dialog_body label.cke_required{font-weight:bold}a.cke_smile{overflow:hidden;display:block;text-align:center;padding:.3em 0}a.cke_smile img{vertical-align:middle}a.cke_specialchar{cursor:inherit;display:block;height:1.25em;padding:.2em .3em;text-align:center}a.cke_smile,a.cke_specialchar{border:1px solid transparent}a.cke_smile:hover,a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:hover,a.cke_specialchar:focus,a.cke_specialchar:active{background:#fff;outline:0}a.cke_smile:hover,a.cke_specialchar:hover{border-color:#888}a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:focus,a.cke_specialchar:active{border-color:#139ff7}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_dialog_ui_checkbox_input:focus,.cke_dialog_ui_radio_input:focus,.cke_btn_over{outline:1px dotted #696969}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity = 0);width:100%;height:100%}.cke_rtl input.cke_dialog_ui_input_text,.cke_rtl input.cke_dialog_ui_input_password{padding-right:2px}.cke_rtl div.cke_dialog_ui_input_text,.cke_rtl div.cke_dialog_ui_input_password{padding-left:2px}.cke_rtl div.cke_dialog_ui_input_text{padding-right:1px}.cke_rtl .cke_dialog_ui_vbox_child,.cke_rtl .cke_dialog_ui_hbox_child,.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_last{padding-right:2px!important}.cke_hc .cke_dialog_title,.cke_hc .cke_dialog_footer,.cke_hc a.cke_dialog_tab,.cke_hc a.cke_dialog_ui_button,.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button_ok,.cke_hc a.cke_dialog_ui_button_ok:hover{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:0} \ No newline at end of file
diff --git a/release/skins/moono/dialog_ie7.css b/release/skins/moono/dialog_ie7.css
index 61f8e11..fdfe1d5 100644
--- a/release/skins/moono/dialog_ie7.css
+++ b/release/skins/moono/dialog_ie7.css
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5.cke_dialog{visibility:visible}.cke_dialog_body{z-index:1;background:#eaeaea;border:1px solid #b2b2b2;border-bottom-color:#999;border-radius:3px;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_dialog strong{font-weight:bold}.cke_dialog_title{font-weight:bold;font-size:13px;cursor:move;position:relative;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #999;padding:6px 10px;border-radius:2px 2px 0 0;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_dialog_spinner{border-radius:50%;width:12px;height:12px;overflow:hidden;text-indent:-9999em;border-top:2px solid rgba(102,102,102,0.2);border-right:2px solid rgba(102,102,102,0.2);border-bottom:2px solid rgba(102,102,102,0.2);border-left:2px solid rgba(102,102,102,1);-webkit-animation:dialog_spinner 1s infinite linear;animation:dialog_spinner 1s infinite linear}.cke_browser_ie8 .cke_dialog_spinner,.cke_browser_ie9 .cke_dialog_spinner{background:url(images/spinner.gif) center top no-repeat;width:16px;height:16px;border:0}@-webkit-keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.cke_dialog_contents{background-color:#fff;overflow:auto;padding:15px 10px 5px 10px;margin-top:30px;border-top:1px solid #bfbfbf;border-radius:0 0 3px 3px}.cke_dialog_contents_body{overflow:auto;padding:17px 10px 5px 10px;margin-top:22px}.cke_dialog_footer{text-align:right;position:relative;border:0;outline:1px solid #bfbfbf;box-shadow:0 1px 0 #fff inset;border-radius:0 0 2px 2px;background:#cfd1cf;background-image:linear-gradient(to bottom,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_rtl .cke_dialog_footer{text-align:left}.cke_hc .cke_dialog_footer{outline:0;border-top:1px solid #fff}.cke_dialog .cke_resizer{margin-top:22px}.cke_dialog .cke_resizer_rtl{margin-left:5px}.cke_dialog .cke_resizer_ltr{margin-right:5px}.cke_dialog_tabs{height:24px;display:inline-block;margin:5px 0 0;position:absolute;z-index:2;left:10px}.cke_rtl .cke_dialog_tabs{right:10px}a.cke_dialog_tab{height:16px;padding:4px 8px;margin-right:3px;display:inline-block;cursor:pointer;line-height:16px;outline:0;color:#595959;border:1px solid #bfbfbf;border-radius:3px 3px 0 0;background:#d4d4d4;background-image:linear-gradient(to bottom,#fafafa,#ededed);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fafafa',endColorstr='#ededed')}.cke_rtl a.cke_dialog_tab{margin-right:0;margin-left:3px}a.cke_dialog_tab:hover,a.cke_dialog_tab:focus{background:#ebebeb;background:linear-gradient(to bottom,#ebebeb 0,#dfdfdf 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ebebeb',endColorstr='#dfdfdf',GradientType=0)}a.cke_dialog_tab_selected{background:#fff;color:#383838;border-bottom-color:#fff;cursor:default;filter:none}a.cke_dialog_tab_selected:hover,a.cke_dialog_tab_selected:focus,{background:#ededed;background:linear-gradient(to bottom,#ededed 0,#fff 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed',endColorstr='#ffffff',GradientType=0)}.cke_hc a.cke_dialog_tab:hover,.cke_hc a.cke_dialog_tab:focus,.cke_hc a.cke_dialog_tab_selected{border:3px solid;padding:2px 6px}a.cke_dialog_tab_disabled{color:#bababa;cursor:default}.cke_single_page .cke_dialog_tabs{display:none}.cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:0;border-top:0}a.cke_dialog_close_button{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:4px;z-index:5;opacity:.8;filter:alpha(opacity = 80)}.cke_dialog_close_button:hover{opacity:1;filter:alpha(opacity = 100)}.cke_hidpi .cke_dialog_close_button{background-image:url(images/hidpi/close.png);background-size:16px}.cke_dialog_close_button span{display:none}.cke_hc .cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px}.cke_ltr .cke_dialog_close_button{right:5px}.cke_rtl .cke_dialog_close_button{left:6px}.cke_dialog_close_button{top:4px}div.cke_disabled .cke_dialog_ui_labeled_content div *{background-color:#ddd;cursor:default}.cke_dialog_ui_vbox table,.cke_dialog_ui_hbox table{margin:auto}.cke_dialog_ui_vbox_child{padding:5px 0}.cke_dialog_ui_hbox{width:100%}.cke_dialog_ui_hbox_first,.cke_dialog_ui_hbox_child,.cke_dialog_ui_hbox_last{vertical-align:top}.cke_ltr .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px}.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px}.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-right:5px}.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-left:5px;padding-right:0}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:1px solid}textarea.cke_dialog_ui_input_textarea{overflow:auto;resize:none}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,textarea.cke_dialog_ui_input_textarea{background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:4px 6px;outline:0;width:100%;*width:95%;box-sizing:border-box;border-radius:3px;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}input.cke_dialog_ui_input_text:hover,input.cke_dialog_ui_input_password:hover,textarea.cke_dialog_ui_input_textarea:hover{border:1px solid #aeb3b9;border-top-color:#a0a6ad}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,textarea.cke_dialog_ui_input_textarea:focus,select.cke_dialog_ui_input_select:focus{outline:0;border:1px solid #139ff7;border-top-color:#1392e9}a.cke_dialog_ui_button{display:inline-block;*display:inline;*zoom:1;padding:4px 0;margin:0;text-align:center;color:#333;vertical-align:middle;cursor:pointer;border:1px solid #b6b6b6;border-bottom-color:#999;border-radius:3px;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}span.cke_dialog_ui_button{padding:0 10px}a.cke_dialog_ui_button:hover{border-color:#9e9e9e;background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{border-color:#969696;outline:0;box-shadow:0 0 6px rgba(0,0,0,.4) inset}.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button:focus,.cke_hc a.cke_dialog_ui_button:active{border:3px solid;padding-top:1px;padding-bottom:1px}.cke_hc a.cke_dialog_ui_button:hover span,.cke_hc a.cke_dialog_ui_button:focus span,.cke_hc a.cke_dialog_ui_button:active span{padding-left:10px;padding-right:10px}.cke_dialog_footer_buttons a.cke_dialog_ui_button span{color:inherit;font-size:12px;font-weight:bold;line-height:18px;padding:0 12px}a.cke_dialog_ui_button_ok{color:#fff;text-shadow:0 -1px 0 #55830c;border-color:#62a60a #62a60a #4d9200;background:#69b10b;background-image:linear-gradient(to bottom,#9ad717,#69b10b);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#9ad717',endColorstr='#69b10b')}a.cke_dialog_ui_button_ok:hover{border-color:#5b9909 #5b9909 #478500;background:#88be14;background:linear-gradient(to bottom,#88be14 0,#5d9c0a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#88be14',endColorstr='#5d9c0a',GradientType=0)}a.cke_dialog_ui_button_ok.cke_disabled{border-color:#7d9f51;background:#8dad62;background-image:-webkit-gradient(linear,0 0,0 100%,from(#b3d271),to(#8dad62));background-image:-webkit-linear-gradient(top,#b3d271,#8dad62);background-image:-o-linear-gradient(top,#b3d271,#8dad62);background-image:linear-gradient(to bottom,#b3d271,#8dad62);background-image:-moz-linear-gradient(top,#b3d271,#8dad62);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#B3D271',endColorstr='#8DAD62')}a.cke_dialog_ui_button_ok.cke_disabled span{color:#e0e8d1}a.cke_dialog_ui_button span{text-shadow:0 1px 0 #fff}a.cke_dialog_ui_button_ok span{text-shadow:0 -1px 0 #55830c}span.cke_dialog_ui_button{cursor:pointer}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active,a.cke_dialog_ui_button_cancel:focus,a.cke_dialog_ui_button_cancel:active{border-width:2px;padding:3px 0}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active{border-color:#568c0a}a.cke_dialog_ui_button_ok.cke_disabled:focus,a.cke_dialog_ui_button_ok.cke_disabled:active{border-color:#6f8c49}a.cke_dialog_ui_button_ok:focus span,a.cke_dialog_ui_button_ok:active span,a.cke_dialog_ui_button_cancel:focus span,a.cke_dialog_ui_button_cancel:active span{padding:0 11px}.cke_dialog_footer_buttons{display:inline-table;margin:5px;width:auto;position:relative;vertical-align:middle}div.cke_dialog_ui_input_select{display:table}select.cke_dialog_ui_input_select{height:25px;line-height:25px;background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:3px 3px 3px 6px;outline:0;border-radius:3px;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}.cke_dialog_ui_input_file{width:100%;height:25px}.cke_hc .cke_dialog_ui_labeled_content input:focus,.cke_hc .cke_dialog_ui_labeled_content select:focus,.cke_hc .cke_dialog_ui_labeled_content textarea:focus{outline:1px dotted}.cke_dialog .cke_dark_background{background-color:#dedede}.cke_dialog .cke_light_background{background-color:#ebebeb}.cke_dialog .cke_centered{text-align:center}.cke_dialog a.cke_btn_reset{float:right;background:url(images/refresh.png) top left no-repeat;width:16px;height:16px;border:1px none;font-size:1px}.cke_hidpi .cke_dialog a.cke_btn_reset{background-size:16px;background-image:url(images/hidpi/refresh.png)}.cke_rtl .cke_dialog a.cke_btn_reset{float:left}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked{float:left;width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.cke_dialog a.cke_btn_locked .cke_icon{display:none}.cke_rtl .cke_dialog a.cke_btn_locked,.cke_rtl .cke_dialog a.cke_btn_unlocked{float:right}.cke_dialog a.cke_btn_locked{background-image:url(images/lock.png)}.cke_dialog a.cke_btn_unlocked{background-image:url(images/lock-open.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked,.cke_hidpi .cke_dialog a.cke_btn_locked{background-size:16px}.cke_hidpi .cke_dialog a.cke_btn_locked{background-image:url(images/hidpi/lock.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked{background-image:url(images/hidpi/lock-open.png)}.cke_dialog .cke_btn_over{border:outset 1px;cursor:pointer}.cke_dialog .ImagePreviewBox{border:2px ridge black;overflow:scroll;height:200px;width:300px;padding:2px;background-color:white}.cke_dialog .ImagePreviewBox table td{white-space:normal}.cke_dialog .ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity = 90);background-color:#e4e4e4}.cke_dialog .FlashPreviewBox{white-space:normal;border:2px ridge black;overflow:auto;height:160px;width:390px;padding:2px;background-color:white}.cke_dialog .cke_pastetext{width:346px;height:170px}.cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none}.cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:white;border:1px solid #aeb3b9;border-radius:3px}.cke_dialog .cke_hand{cursor:pointer}.cke_disabled{color:#a0a0a0}.cke_dialog_body .cke_label{display:none}.cke_dialog_body label{display:inline;margin-bottom:auto;cursor:default}.cke_dialog_body label.cke_required{font-weight:bold}a.cke_smile{overflow:hidden;display:block;text-align:center;padding:.3em 0}a.cke_smile img{vertical-align:middle}a.cke_specialchar{cursor:inherit;display:block;height:1.25em;padding:.2em .3em;text-align:center}a.cke_smile,a.cke_specialchar{border:1px solid transparent}a.cke_smile:hover,a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:hover,a.cke_specialchar:focus,a.cke_specialchar:active{background:#fff;outline:0}a.cke_smile:hover,a.cke_specialchar:hover{border-color:#888}a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:focus,a.cke_specialchar:active{border-color:#139ff7}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_dialog_ui_checkbox_input:focus,.cke_dialog_ui_radio_input:focus,.cke_btn_over{outline:1px dotted #696969}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity = 0);width:100%;height:100%}.cke_rtl input.cke_dialog_ui_input_text,.cke_rtl input.cke_dialog_ui_input_password{padding-right:2px}.cke_rtl div.cke_dialog_ui_input_text,.cke_rtl div.cke_dialog_ui_input_password{padding-left:2px}.cke_rtl div.cke_dialog_ui_input_text{padding-right:1px}.cke_rtl .cke_dialog_ui_vbox_child,.cke_rtl .cke_dialog_ui_hbox_child,.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_last{padding-right:2px!important}.cke_hc .cke_dialog_title,.cke_hc .cke_dialog_footer,.cke_hc a.cke_dialog_tab,.cke_hc a.cke_dialog_ui_button,.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button_ok,.cke_hc a.cke_dialog_ui_button_ok:hover{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:0}.cke_dialog_title{zoom:1}.cke_dialog_footer{border-top:1px solid #bfbfbf}.cke_dialog_footer_buttons{position:static}.cke_dialog_footer_buttons a.cke_dialog_ui_button{vertical-align:top}.cke_dialog .cke_resizer_ltr{padding-left:4px}.cke_dialog .cke_resizer_rtl{padding-right:4px}.cke_dialog_ui_input_text,.cke_dialog_ui_input_password,.cke_dialog_ui_input_textarea,.cke_dialog_ui_input_select{padding:0!important}.cke_dialog_ui_checkbox_input,.cke_dialog_ui_ratio_input,.cke_btn_reset,.cke_btn_locked,.cke_btn_unlocked{border:1px solid transparent!important} \ No newline at end of file 5.cke_dialog{visibility:visible}.cke_dialog_body{z-index:1;background:#eaeaea;border:1px solid #b2b2b2;border-bottom-color:#999;border-radius:3px;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_dialog strong{font-weight:bold}.cke_dialog_title{font-weight:bold;font-size:13px;cursor:move;position:relative;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #999;padding:6px 10px;border-radius:2px 2px 0 0;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_dialog_spinner{border-radius:50%;width:12px;height:12px;overflow:hidden;text-indent:-9999em;border-top:2px solid rgba(102,102,102,0.2);border-right:2px solid rgba(102,102,102,0.2);border-bottom:2px solid rgba(102,102,102,0.2);border-left:2px solid rgba(102,102,102,1);-webkit-animation:dialog_spinner 1s infinite linear;animation:dialog_spinner 1s infinite linear}.cke_browser_ie8 .cke_dialog_spinner,.cke_browser_ie9 .cke_dialog_spinner{background:url(images/spinner.gif) center top no-repeat;width:16px;height:16px;border:0}@-webkit-keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.cke_dialog_contents{background-color:#fff;overflow:auto;padding:15px 10px 5px 10px;margin-top:30px;border-top:1px solid #bfbfbf;border-radius:0 0 3px 3px}.cke_dialog_contents_body{overflow:auto;padding:17px 10px 5px 10px;margin-top:22px}.cke_dialog_footer{text-align:right;position:relative;border:0;outline:1px solid #bfbfbf;box-shadow:0 1px 0 #fff inset;border-radius:0 0 2px 2px;background:#cfd1cf;background-image:linear-gradient(to bottom,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_rtl .cke_dialog_footer{text-align:left}.cke_hc .cke_dialog_footer{outline:0;border-top:1px solid #fff}.cke_dialog .cke_resizer{margin-top:22px}.cke_dialog .cke_resizer_rtl{margin-left:5px}.cke_dialog .cke_resizer_ltr{margin-right:5px}.cke_dialog_tabs{height:24px;display:inline-block;margin:5px 0 0;position:absolute;z-index:2;left:10px}.cke_rtl .cke_dialog_tabs{right:10px}a.cke_dialog_tab{height:16px;padding:4px 8px;margin-right:3px;display:inline-block;cursor:pointer;line-height:16px;outline:0;color:#595959;border:1px solid #bfbfbf;border-radius:3px 3px 0 0;background:#d4d4d4;background-image:linear-gradient(to bottom,#fafafa,#ededed);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fafafa',endColorstr='#ededed')}.cke_rtl a.cke_dialog_tab{margin-right:0;margin-left:3px}a.cke_dialog_tab:hover,a.cke_dialog_tab:focus{background:#ebebeb;background:linear-gradient(to bottom,#ebebeb 0,#dfdfdf 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ebebeb',endColorstr='#dfdfdf',GradientType=0)}a.cke_dialog_tab_selected{background:#fff;color:#383838;border-bottom-color:#fff;cursor:default;filter:none}a.cke_dialog_tab_selected:hover,a.cke_dialog_tab_selected:focus{background:#ededed;background:linear-gradient(to bottom,#ededed 0,#fff 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed',endColorstr='#ffffff',GradientType=0)}.cke_hc a.cke_dialog_tab:hover,.cke_hc a.cke_dialog_tab:focus,.cke_hc a.cke_dialog_tab_selected{border:3px solid;padding:2px 6px}a.cke_dialog_tab_disabled{color:#bababa;cursor:default}.cke_single_page .cke_dialog_tabs{display:none}.cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:0;border-top:0}a.cke_dialog_close_button{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:4px;z-index:5;opacity:.8;filter:alpha(opacity = 80)}.cke_dialog_close_button:hover{opacity:1;filter:alpha(opacity = 100)}.cke_hidpi .cke_dialog_close_button{background-image:url(images/hidpi/close.png);background-size:16px}.cke_dialog_close_button span{display:none}.cke_hc .cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px}.cke_ltr .cke_dialog_close_button{right:5px}.cke_rtl .cke_dialog_close_button{left:6px}.cke_dialog_close_button{top:4px}div.cke_disabled .cke_dialog_ui_labeled_content div *{background-color:#ddd;cursor:default}.cke_dialog_ui_vbox table,.cke_dialog_ui_hbox table{margin:auto}.cke_dialog_ui_vbox_child{padding:5px 0}.cke_dialog_ui_hbox{width:100%}.cke_dialog_ui_hbox_first,.cke_dialog_ui_hbox_child,.cke_dialog_ui_hbox_last{vertical-align:top}.cke_ltr .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px}.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px}.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-right:5px}.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-left:5px;padding-right:0}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:1px solid}textarea.cke_dialog_ui_input_textarea{overflow:auto;resize:none}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,textarea.cke_dialog_ui_input_textarea{background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:4px 6px;outline:0;width:100%;*width:95%;box-sizing:border-box;border-radius:3px;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}input.cke_dialog_ui_input_text:hover,input.cke_dialog_ui_input_password:hover,textarea.cke_dialog_ui_input_textarea:hover{border:1px solid #aeb3b9;border-top-color:#a0a6ad}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,textarea.cke_dialog_ui_input_textarea:focus,select.cke_dialog_ui_input_select:focus{outline:0;border:1px solid #139ff7;border-top-color:#1392e9}a.cke_dialog_ui_button{display:inline-block;*display:inline;*zoom:1;padding:4px 0;margin:0;text-align:center;color:#333;vertical-align:middle;cursor:pointer;border:1px solid #b6b6b6;border-bottom-color:#999;border-radius:3px;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}span.cke_dialog_ui_button{padding:0 10px}a.cke_dialog_ui_button:hover{border-color:#9e9e9e;background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{border-color:#969696;outline:0;box-shadow:0 0 6px rgba(0,0,0,.4) inset}.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button:focus,.cke_hc a.cke_dialog_ui_button:active{border:3px solid;padding-top:1px;padding-bottom:1px}.cke_hc a.cke_dialog_ui_button:hover span,.cke_hc a.cke_dialog_ui_button:focus span,.cke_hc a.cke_dialog_ui_button:active span{padding-left:10px;padding-right:10px}.cke_dialog_footer_buttons a.cke_dialog_ui_button span{color:inherit;font-size:12px;font-weight:bold;line-height:18px;padding:0 12px}a.cke_dialog_ui_button_ok{color:#fff;text-shadow:0 -1px 0 #55830c;border-color:#62a60a #62a60a #4d9200;background:#69b10b;background-image:linear-gradient(to bottom,#9ad717,#69b10b);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#9ad717',endColorstr='#69b10b')}a.cke_dialog_ui_button_ok:hover{border-color:#5b9909 #5b9909 #478500;background:#88be14;background:linear-gradient(to bottom,#88be14 0,#5d9c0a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#88be14',endColorstr='#5d9c0a',GradientType=0)}a.cke_dialog_ui_button_ok.cke_disabled{border-color:#7d9f51;background:#8dad62;background-image:-webkit-gradient(linear,0 0,0 100%,from(#b3d271),to(#8dad62));background-image:-webkit-linear-gradient(top,#b3d271,#8dad62);background-image:-o-linear-gradient(top,#b3d271,#8dad62);background-image:linear-gradient(to bottom,#b3d271,#8dad62);background-image:-moz-linear-gradient(top,#b3d271,#8dad62);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#B3D271',endColorstr='#8DAD62')}a.cke_dialog_ui_button_ok.cke_disabled span{color:#e0e8d1}a.cke_dialog_ui_button span{text-shadow:0 1px 0 #fff}a.cke_dialog_ui_button_ok span{text-shadow:0 -1px 0 #55830c}span.cke_dialog_ui_button{cursor:pointer}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active,a.cke_dialog_ui_button_cancel:focus,a.cke_dialog_ui_button_cancel:active{border-width:2px;padding:3px 0}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active{border-color:#568c0a}a.cke_dialog_ui_button_ok.cke_disabled:focus,a.cke_dialog_ui_button_ok.cke_disabled:active{border-color:#6f8c49}a.cke_dialog_ui_button_ok:focus span,a.cke_dialog_ui_button_ok:active span,a.cke_dialog_ui_button_cancel:focus span,a.cke_dialog_ui_button_cancel:active span{padding:0 11px}.cke_dialog_footer_buttons{display:inline-table;margin:5px;width:auto;position:relative;vertical-align:middle}div.cke_dialog_ui_input_select{display:table}select.cke_dialog_ui_input_select{height:25px;line-height:25px;background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:3px 3px 3px 6px;outline:0;border-radius:3px;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}.cke_dialog_ui_input_file{width:100%;height:25px}.cke_hc .cke_dialog_ui_labeled_content input:focus,.cke_hc .cke_dialog_ui_labeled_content select:focus,.cke_hc .cke_dialog_ui_labeled_content textarea:focus{outline:1px dotted}.cke_dialog .cke_dark_background{background-color:#dedede}.cke_dialog .cke_light_background{background-color:#ebebeb}.cke_dialog .cke_centered{text-align:center}.cke_dialog a.cke_btn_reset{float:right;background:url(images/refresh.png) top left no-repeat;width:16px;height:16px;border:1px none;font-size:1px}.cke_hidpi .cke_dialog a.cke_btn_reset{background-size:16px;background-image:url(images/hidpi/refresh.png)}.cke_rtl .cke_dialog a.cke_btn_reset{float:left}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked{float:left;width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.cke_dialog a.cke_btn_locked .cke_icon{display:none}.cke_rtl .cke_dialog a.cke_btn_locked,.cke_rtl .cke_dialog a.cke_btn_unlocked{float:right}.cke_dialog a.cke_btn_locked{background-image:url(images/lock.png)}.cke_dialog a.cke_btn_unlocked{background-image:url(images/lock-open.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked,.cke_hidpi .cke_dialog a.cke_btn_locked{background-size:16px}.cke_hidpi .cke_dialog a.cke_btn_locked{background-image:url(images/hidpi/lock.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked{background-image:url(images/hidpi/lock-open.png)}.cke_dialog .cke_btn_over{border:outset 1px;cursor:pointer}.cke_dialog .ImagePreviewBox{border:2px ridge black;overflow:scroll;height:200px;width:300px;padding:2px;background-color:white}.cke_dialog .ImagePreviewBox table td{white-space:normal}.cke_dialog .ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity = 90);background-color:#e4e4e4}.cke_dialog .FlashPreviewBox{white-space:normal;border:2px ridge black;overflow:auto;height:160px;width:390px;padding:2px;background-color:white}.cke_dialog .cke_pastetext{width:346px;height:170px}.cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none}.cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:white;border:1px solid #aeb3b9;border-radius:3px}.cke_dialog .cke_hand{cursor:pointer}.cke_disabled{color:#a0a0a0}.cke_dialog_body .cke_label{display:none}.cke_dialog_body label{display:inline;margin-bottom:auto;cursor:default}.cke_dialog_body label.cke_required{font-weight:bold}a.cke_smile{overflow:hidden;display:block;text-align:center;padding:.3em 0}a.cke_smile img{vertical-align:middle}a.cke_specialchar{cursor:inherit;display:block;height:1.25em;padding:.2em .3em;text-align:center}a.cke_smile,a.cke_specialchar{border:1px solid transparent}a.cke_smile:hover,a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:hover,a.cke_specialchar:focus,a.cke_specialchar:active{background:#fff;outline:0}a.cke_smile:hover,a.cke_specialchar:hover{border-color:#888}a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:focus,a.cke_specialchar:active{border-color:#139ff7}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_dialog_ui_checkbox_input:focus,.cke_dialog_ui_radio_input:focus,.cke_btn_over{outline:1px dotted #696969}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity = 0);width:100%;height:100%}.cke_rtl input.cke_dialog_ui_input_text,.cke_rtl input.cke_dialog_ui_input_password{padding-right:2px}.cke_rtl div.cke_dialog_ui_input_text,.cke_rtl div.cke_dialog_ui_input_password{padding-left:2px}.cke_rtl div.cke_dialog_ui_input_text{padding-right:1px}.cke_rtl .cke_dialog_ui_vbox_child,.cke_rtl .cke_dialog_ui_hbox_child,.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_last{padding-right:2px!important}.cke_hc .cke_dialog_title,.cke_hc .cke_dialog_footer,.cke_hc a.cke_dialog_tab,.cke_hc a.cke_dialog_ui_button,.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button_ok,.cke_hc a.cke_dialog_ui_button_ok:hover{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:0}.cke_dialog_title{zoom:1}.cke_dialog_footer{border-top:1px solid #bfbfbf}.cke_dialog_footer_buttons{position:static}.cke_dialog_footer_buttons a.cke_dialog_ui_button{vertical-align:top}.cke_dialog .cke_resizer_ltr{padding-left:4px}.cke_dialog .cke_resizer_rtl{padding-right:4px}.cke_dialog_ui_input_text,.cke_dialog_ui_input_password,.cke_dialog_ui_input_textarea,.cke_dialog_ui_input_select{padding:0!important}.cke_dialog_ui_checkbox_input,.cke_dialog_ui_ratio_input,.cke_btn_reset,.cke_btn_locked,.cke_btn_unlocked{border:1px solid transparent!important} \ No newline at end of file
diff --git a/release/skins/moono/dialog_ie8.css b/release/skins/moono/dialog_ie8.css
index cae1188..9cf4b57 100644
--- a/release/skins/moono/dialog_ie8.css
+++ b/release/skins/moono/dialog_ie8.css
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5.cke_dialog{visibility:visible}.cke_dialog_body{z-index:1;background:#eaeaea;border:1px solid #b2b2b2;border-bottom-color:#999;border-radius:3px;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_dialog strong{font-weight:bold}.cke_dialog_title{font-weight:bold;font-size:13px;cursor:move;position:relative;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #999;padding:6px 10px;border-radius:2px 2px 0 0;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_dialog_spinner{border-radius:50%;width:12px;height:12px;overflow:hidden;text-indent:-9999em;border-top:2px solid rgba(102,102,102,0.2);border-right:2px solid rgba(102,102,102,0.2);border-bottom:2px solid rgba(102,102,102,0.2);border-left:2px solid rgba(102,102,102,1);-webkit-animation:dialog_spinner 1s infinite linear;animation:dialog_spinner 1s infinite linear}.cke_browser_ie8 .cke_dialog_spinner,.cke_browser_ie9 .cke_dialog_spinner{background:url(images/spinner.gif) center top no-repeat;width:16px;height:16px;border:0}@-webkit-keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.cke_dialog_contents{background-color:#fff;overflow:auto;padding:15px 10px 5px 10px;margin-top:30px;border-top:1px solid #bfbfbf;border-radius:0 0 3px 3px}.cke_dialog_contents_body{overflow:auto;padding:17px 10px 5px 10px;margin-top:22px}.cke_dialog_footer{text-align:right;position:relative;border:0;outline:1px solid #bfbfbf;box-shadow:0 1px 0 #fff inset;border-radius:0 0 2px 2px;background:#cfd1cf;background-image:linear-gradient(to bottom,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_rtl .cke_dialog_footer{text-align:left}.cke_hc .cke_dialog_footer{outline:0;border-top:1px solid #fff}.cke_dialog .cke_resizer{margin-top:22px}.cke_dialog .cke_resizer_rtl{margin-left:5px}.cke_dialog .cke_resizer_ltr{margin-right:5px}.cke_dialog_tabs{height:24px;display:inline-block;margin:5px 0 0;position:absolute;z-index:2;left:10px}.cke_rtl .cke_dialog_tabs{right:10px}a.cke_dialog_tab{height:16px;padding:4px 8px;margin-right:3px;display:inline-block;cursor:pointer;line-height:16px;outline:0;color:#595959;border:1px solid #bfbfbf;border-radius:3px 3px 0 0;background:#d4d4d4;background-image:linear-gradient(to bottom,#fafafa,#ededed);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fafafa',endColorstr='#ededed')}.cke_rtl a.cke_dialog_tab{margin-right:0;margin-left:3px}a.cke_dialog_tab:hover,a.cke_dialog_tab:focus{background:#ebebeb;background:linear-gradient(to bottom,#ebebeb 0,#dfdfdf 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ebebeb',endColorstr='#dfdfdf',GradientType=0)}a.cke_dialog_tab_selected{background:#fff;color:#383838;border-bottom-color:#fff;cursor:default;filter:none}a.cke_dialog_tab_selected:hover,a.cke_dialog_tab_selected:focus,{background:#ededed;background:linear-gradient(to bottom,#ededed 0,#fff 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed',endColorstr='#ffffff',GradientType=0)}.cke_hc a.cke_dialog_tab:hover,.cke_hc a.cke_dialog_tab:focus,.cke_hc a.cke_dialog_tab_selected{border:3px solid;padding:2px 6px}a.cke_dialog_tab_disabled{color:#bababa;cursor:default}.cke_single_page .cke_dialog_tabs{display:none}.cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:0;border-top:0}a.cke_dialog_close_button{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:4px;z-index:5;opacity:.8;filter:alpha(opacity = 80)}.cke_dialog_close_button:hover{opacity:1;filter:alpha(opacity = 100)}.cke_hidpi .cke_dialog_close_button{background-image:url(images/hidpi/close.png);background-size:16px}.cke_dialog_close_button span{display:none}.cke_hc .cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px}.cke_ltr .cke_dialog_close_button{right:5px}.cke_rtl .cke_dialog_close_button{left:6px}.cke_dialog_close_button{top:4px}div.cke_disabled .cke_dialog_ui_labeled_content div *{background-color:#ddd;cursor:default}.cke_dialog_ui_vbox table,.cke_dialog_ui_hbox table{margin:auto}.cke_dialog_ui_vbox_child{padding:5px 0}.cke_dialog_ui_hbox{width:100%}.cke_dialog_ui_hbox_first,.cke_dialog_ui_hbox_child,.cke_dialog_ui_hbox_last{vertical-align:top}.cke_ltr .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px}.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px}.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-right:5px}.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-left:5px;padding-right:0}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:1px solid}textarea.cke_dialog_ui_input_textarea{overflow:auto;resize:none}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,textarea.cke_dialog_ui_input_textarea{background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:4px 6px;outline:0;width:100%;*width:95%;box-sizing:border-box;border-radius:3px;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}input.cke_dialog_ui_input_text:hover,input.cke_dialog_ui_input_password:hover,textarea.cke_dialog_ui_input_textarea:hover{border:1px solid #aeb3b9;border-top-color:#a0a6ad}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,textarea.cke_dialog_ui_input_textarea:focus,select.cke_dialog_ui_input_select:focus{outline:0;border:1px solid #139ff7;border-top-color:#1392e9}a.cke_dialog_ui_button{display:inline-block;*display:inline;*zoom:1;padding:4px 0;margin:0;text-align:center;color:#333;vertical-align:middle;cursor:pointer;border:1px solid #b6b6b6;border-bottom-color:#999;border-radius:3px;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}span.cke_dialog_ui_button{padding:0 10px}a.cke_dialog_ui_button:hover{border-color:#9e9e9e;background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{border-color:#969696;outline:0;box-shadow:0 0 6px rgba(0,0,0,.4) inset}.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button:focus,.cke_hc a.cke_dialog_ui_button:active{border:3px solid;padding-top:1px;padding-bottom:1px}.cke_hc a.cke_dialog_ui_button:hover span,.cke_hc a.cke_dialog_ui_button:focus span,.cke_hc a.cke_dialog_ui_button:active span{padding-left:10px;padding-right:10px}.cke_dialog_footer_buttons a.cke_dialog_ui_button span{color:inherit;font-size:12px;font-weight:bold;line-height:18px;padding:0 12px}a.cke_dialog_ui_button_ok{color:#fff;text-shadow:0 -1px 0 #55830c;border-color:#62a60a #62a60a #4d9200;background:#69b10b;background-image:linear-gradient(to bottom,#9ad717,#69b10b);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#9ad717',endColorstr='#69b10b')}a.cke_dialog_ui_button_ok:hover{border-color:#5b9909 #5b9909 #478500;background:#88be14;background:linear-gradient(to bottom,#88be14 0,#5d9c0a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#88be14',endColorstr='#5d9c0a',GradientType=0)}a.cke_dialog_ui_button_ok.cke_disabled{border-color:#7d9f51;background:#8dad62;background-image:-webkit-gradient(linear,0 0,0 100%,from(#b3d271),to(#8dad62));background-image:-webkit-linear-gradient(top,#b3d271,#8dad62);background-image:-o-linear-gradient(top,#b3d271,#8dad62);background-image:linear-gradient(to bottom,#b3d271,#8dad62);background-image:-moz-linear-gradient(top,#b3d271,#8dad62);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#B3D271',endColorstr='#8DAD62')}a.cke_dialog_ui_button_ok.cke_disabled span{color:#e0e8d1}a.cke_dialog_ui_button span{text-shadow:0 1px 0 #fff}a.cke_dialog_ui_button_ok span{text-shadow:0 -1px 0 #55830c}span.cke_dialog_ui_button{cursor:pointer}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active,a.cke_dialog_ui_button_cancel:focus,a.cke_dialog_ui_button_cancel:active{border-width:2px;padding:3px 0}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active{border-color:#568c0a}a.cke_dialog_ui_button_ok.cke_disabled:focus,a.cke_dialog_ui_button_ok.cke_disabled:active{border-color:#6f8c49}a.cke_dialog_ui_button_ok:focus span,a.cke_dialog_ui_button_ok:active span,a.cke_dialog_ui_button_cancel:focus span,a.cke_dialog_ui_button_cancel:active span{padding:0 11px}.cke_dialog_footer_buttons{display:inline-table;margin:5px;width:auto;position:relative;vertical-align:middle}div.cke_dialog_ui_input_select{display:table}select.cke_dialog_ui_input_select{height:25px;line-height:25px;background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:3px 3px 3px 6px;outline:0;border-radius:3px;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}.cke_dialog_ui_input_file{width:100%;height:25px}.cke_hc .cke_dialog_ui_labeled_content input:focus,.cke_hc .cke_dialog_ui_labeled_content select:focus,.cke_hc .cke_dialog_ui_labeled_content textarea:focus{outline:1px dotted}.cke_dialog .cke_dark_background{background-color:#dedede}.cke_dialog .cke_light_background{background-color:#ebebeb}.cke_dialog .cke_centered{text-align:center}.cke_dialog a.cke_btn_reset{float:right;background:url(images/refresh.png) top left no-repeat;width:16px;height:16px;border:1px none;font-size:1px}.cke_hidpi .cke_dialog a.cke_btn_reset{background-size:16px;background-image:url(images/hidpi/refresh.png)}.cke_rtl .cke_dialog a.cke_btn_reset{float:left}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked{float:left;width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.cke_dialog a.cke_btn_locked .cke_icon{display:none}.cke_rtl .cke_dialog a.cke_btn_locked,.cke_rtl .cke_dialog a.cke_btn_unlocked{float:right}.cke_dialog a.cke_btn_locked{background-image:url(images/lock.png)}.cke_dialog a.cke_btn_unlocked{background-image:url(images/lock-open.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked,.cke_hidpi .cke_dialog a.cke_btn_locked{background-size:16px}.cke_hidpi .cke_dialog a.cke_btn_locked{background-image:url(images/hidpi/lock.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked{background-image:url(images/hidpi/lock-open.png)}.cke_dialog .cke_btn_over{border:outset 1px;cursor:pointer}.cke_dialog .ImagePreviewBox{border:2px ridge black;overflow:scroll;height:200px;width:300px;padding:2px;background-color:white}.cke_dialog .ImagePreviewBox table td{white-space:normal}.cke_dialog .ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity = 90);background-color:#e4e4e4}.cke_dialog .FlashPreviewBox{white-space:normal;border:2px ridge black;overflow:auto;height:160px;width:390px;padding:2px;background-color:white}.cke_dialog .cke_pastetext{width:346px;height:170px}.cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none}.cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:white;border:1px solid #aeb3b9;border-radius:3px}.cke_dialog .cke_hand{cursor:pointer}.cke_disabled{color:#a0a0a0}.cke_dialog_body .cke_label{display:none}.cke_dialog_body label{display:inline;margin-bottom:auto;cursor:default}.cke_dialog_body label.cke_required{font-weight:bold}a.cke_smile{overflow:hidden;display:block;text-align:center;padding:.3em 0}a.cke_smile img{vertical-align:middle}a.cke_specialchar{cursor:inherit;display:block;height:1.25em;padding:.2em .3em;text-align:center}a.cke_smile,a.cke_specialchar{border:1px solid transparent}a.cke_smile:hover,a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:hover,a.cke_specialchar:focus,a.cke_specialchar:active{background:#fff;outline:0}a.cke_smile:hover,a.cke_specialchar:hover{border-color:#888}a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:focus,a.cke_specialchar:active{border-color:#139ff7}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_dialog_ui_checkbox_input:focus,.cke_dialog_ui_radio_input:focus,.cke_btn_over{outline:1px dotted #696969}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity = 0);width:100%;height:100%}.cke_rtl input.cke_dialog_ui_input_text,.cke_rtl input.cke_dialog_ui_input_password{padding-right:2px}.cke_rtl div.cke_dialog_ui_input_text,.cke_rtl div.cke_dialog_ui_input_password{padding-left:2px}.cke_rtl div.cke_dialog_ui_input_text{padding-right:1px}.cke_rtl .cke_dialog_ui_vbox_child,.cke_rtl .cke_dialog_ui_hbox_child,.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_last{padding-right:2px!important}.cke_hc .cke_dialog_title,.cke_hc .cke_dialog_footer,.cke_hc a.cke_dialog_tab,.cke_hc a.cke_dialog_ui_button,.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button_ok,.cke_hc a.cke_dialog_ui_button_ok:hover{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:0}a.cke_dialog_ui_button_ok:focus span,a.cke_dialog_ui_button_ok:active span,a.cke_dialog_ui_button_cancel:focus span,a.cke_dialog_ui_button_cancel:active span{display:block} \ No newline at end of file 5.cke_dialog{visibility:visible}.cke_dialog_body{z-index:1;background:#eaeaea;border:1px solid #b2b2b2;border-bottom-color:#999;border-radius:3px;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_dialog strong{font-weight:bold}.cke_dialog_title{font-weight:bold;font-size:13px;cursor:move;position:relative;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #999;padding:6px 10px;border-radius:2px 2px 0 0;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_dialog_spinner{border-radius:50%;width:12px;height:12px;overflow:hidden;text-indent:-9999em;border-top:2px solid rgba(102,102,102,0.2);border-right:2px solid rgba(102,102,102,0.2);border-bottom:2px solid rgba(102,102,102,0.2);border-left:2px solid rgba(102,102,102,1);-webkit-animation:dialog_spinner 1s infinite linear;animation:dialog_spinner 1s infinite linear}.cke_browser_ie8 .cke_dialog_spinner,.cke_browser_ie9 .cke_dialog_spinner{background:url(images/spinner.gif) center top no-repeat;width:16px;height:16px;border:0}@-webkit-keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.cke_dialog_contents{background-color:#fff;overflow:auto;padding:15px 10px 5px 10px;margin-top:30px;border-top:1px solid #bfbfbf;border-radius:0 0 3px 3px}.cke_dialog_contents_body{overflow:auto;padding:17px 10px 5px 10px;margin-top:22px}.cke_dialog_footer{text-align:right;position:relative;border:0;outline:1px solid #bfbfbf;box-shadow:0 1px 0 #fff inset;border-radius:0 0 2px 2px;background:#cfd1cf;background-image:linear-gradient(to bottom,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_rtl .cke_dialog_footer{text-align:left}.cke_hc .cke_dialog_footer{outline:0;border-top:1px solid #fff}.cke_dialog .cke_resizer{margin-top:22px}.cke_dialog .cke_resizer_rtl{margin-left:5px}.cke_dialog .cke_resizer_ltr{margin-right:5px}.cke_dialog_tabs{height:24px;display:inline-block;margin:5px 0 0;position:absolute;z-index:2;left:10px}.cke_rtl .cke_dialog_tabs{right:10px}a.cke_dialog_tab{height:16px;padding:4px 8px;margin-right:3px;display:inline-block;cursor:pointer;line-height:16px;outline:0;color:#595959;border:1px solid #bfbfbf;border-radius:3px 3px 0 0;background:#d4d4d4;background-image:linear-gradient(to bottom,#fafafa,#ededed);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fafafa',endColorstr='#ededed')}.cke_rtl a.cke_dialog_tab{margin-right:0;margin-left:3px}a.cke_dialog_tab:hover,a.cke_dialog_tab:focus{background:#ebebeb;background:linear-gradient(to bottom,#ebebeb 0,#dfdfdf 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ebebeb',endColorstr='#dfdfdf',GradientType=0)}a.cke_dialog_tab_selected{background:#fff;color:#383838;border-bottom-color:#fff;cursor:default;filter:none}a.cke_dialog_tab_selected:hover,a.cke_dialog_tab_selected:focus{background:#ededed;background:linear-gradient(to bottom,#ededed 0,#fff 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed',endColorstr='#ffffff',GradientType=0)}.cke_hc a.cke_dialog_tab:hover,.cke_hc a.cke_dialog_tab:focus,.cke_hc a.cke_dialog_tab_selected{border:3px solid;padding:2px 6px}a.cke_dialog_tab_disabled{color:#bababa;cursor:default}.cke_single_page .cke_dialog_tabs{display:none}.cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:0;border-top:0}a.cke_dialog_close_button{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:4px;z-index:5;opacity:.8;filter:alpha(opacity = 80)}.cke_dialog_close_button:hover{opacity:1;filter:alpha(opacity = 100)}.cke_hidpi .cke_dialog_close_button{background-image:url(images/hidpi/close.png);background-size:16px}.cke_dialog_close_button span{display:none}.cke_hc .cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px}.cke_ltr .cke_dialog_close_button{right:5px}.cke_rtl .cke_dialog_close_button{left:6px}.cke_dialog_close_button{top:4px}div.cke_disabled .cke_dialog_ui_labeled_content div *{background-color:#ddd;cursor:default}.cke_dialog_ui_vbox table,.cke_dialog_ui_hbox table{margin:auto}.cke_dialog_ui_vbox_child{padding:5px 0}.cke_dialog_ui_hbox{width:100%}.cke_dialog_ui_hbox_first,.cke_dialog_ui_hbox_child,.cke_dialog_ui_hbox_last{vertical-align:top}.cke_ltr .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px}.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px}.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-right:5px}.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-left:5px;padding-right:0}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:1px solid}textarea.cke_dialog_ui_input_textarea{overflow:auto;resize:none}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,textarea.cke_dialog_ui_input_textarea{background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:4px 6px;outline:0;width:100%;*width:95%;box-sizing:border-box;border-radius:3px;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}input.cke_dialog_ui_input_text:hover,input.cke_dialog_ui_input_password:hover,textarea.cke_dialog_ui_input_textarea:hover{border:1px solid #aeb3b9;border-top-color:#a0a6ad}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,textarea.cke_dialog_ui_input_textarea:focus,select.cke_dialog_ui_input_select:focus{outline:0;border:1px solid #139ff7;border-top-color:#1392e9}a.cke_dialog_ui_button{display:inline-block;*display:inline;*zoom:1;padding:4px 0;margin:0;text-align:center;color:#333;vertical-align:middle;cursor:pointer;border:1px solid #b6b6b6;border-bottom-color:#999;border-radius:3px;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}span.cke_dialog_ui_button{padding:0 10px}a.cke_dialog_ui_button:hover{border-color:#9e9e9e;background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{border-color:#969696;outline:0;box-shadow:0 0 6px rgba(0,0,0,.4) inset}.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button:focus,.cke_hc a.cke_dialog_ui_button:active{border:3px solid;padding-top:1px;padding-bottom:1px}.cke_hc a.cke_dialog_ui_button:hover span,.cke_hc a.cke_dialog_ui_button:focus span,.cke_hc a.cke_dialog_ui_button:active span{padding-left:10px;padding-right:10px}.cke_dialog_footer_buttons a.cke_dialog_ui_button span{color:inherit;font-size:12px;font-weight:bold;line-height:18px;padding:0 12px}a.cke_dialog_ui_button_ok{color:#fff;text-shadow:0 -1px 0 #55830c;border-color:#62a60a #62a60a #4d9200;background:#69b10b;background-image:linear-gradient(to bottom,#9ad717,#69b10b);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#9ad717',endColorstr='#69b10b')}a.cke_dialog_ui_button_ok:hover{border-color:#5b9909 #5b9909 #478500;background:#88be14;background:linear-gradient(to bottom,#88be14 0,#5d9c0a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#88be14',endColorstr='#5d9c0a',GradientType=0)}a.cke_dialog_ui_button_ok.cke_disabled{border-color:#7d9f51;background:#8dad62;background-image:-webkit-gradient(linear,0 0,0 100%,from(#b3d271),to(#8dad62));background-image:-webkit-linear-gradient(top,#b3d271,#8dad62);background-image:-o-linear-gradient(top,#b3d271,#8dad62);background-image:linear-gradient(to bottom,#b3d271,#8dad62);background-image:-moz-linear-gradient(top,#b3d271,#8dad62);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#B3D271',endColorstr='#8DAD62')}a.cke_dialog_ui_button_ok.cke_disabled span{color:#e0e8d1}a.cke_dialog_ui_button span{text-shadow:0 1px 0 #fff}a.cke_dialog_ui_button_ok span{text-shadow:0 -1px 0 #55830c}span.cke_dialog_ui_button{cursor:pointer}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active,a.cke_dialog_ui_button_cancel:focus,a.cke_dialog_ui_button_cancel:active{border-width:2px;padding:3px 0}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active{border-color:#568c0a}a.cke_dialog_ui_button_ok.cke_disabled:focus,a.cke_dialog_ui_button_ok.cke_disabled:active{border-color:#6f8c49}a.cke_dialog_ui_button_ok:focus span,a.cke_dialog_ui_button_ok:active span,a.cke_dialog_ui_button_cancel:focus span,a.cke_dialog_ui_button_cancel:active span{padding:0 11px}.cke_dialog_footer_buttons{display:inline-table;margin:5px;width:auto;position:relative;vertical-align:middle}div.cke_dialog_ui_input_select{display:table}select.cke_dialog_ui_input_select{height:25px;line-height:25px;background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:3px 3px 3px 6px;outline:0;border-radius:3px;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}.cke_dialog_ui_input_file{width:100%;height:25px}.cke_hc .cke_dialog_ui_labeled_content input:focus,.cke_hc .cke_dialog_ui_labeled_content select:focus,.cke_hc .cke_dialog_ui_labeled_content textarea:focus{outline:1px dotted}.cke_dialog .cke_dark_background{background-color:#dedede}.cke_dialog .cke_light_background{background-color:#ebebeb}.cke_dialog .cke_centered{text-align:center}.cke_dialog a.cke_btn_reset{float:right;background:url(images/refresh.png) top left no-repeat;width:16px;height:16px;border:1px none;font-size:1px}.cke_hidpi .cke_dialog a.cke_btn_reset{background-size:16px;background-image:url(images/hidpi/refresh.png)}.cke_rtl .cke_dialog a.cke_btn_reset{float:left}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked{float:left;width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.cke_dialog a.cke_btn_locked .cke_icon{display:none}.cke_rtl .cke_dialog a.cke_btn_locked,.cke_rtl .cke_dialog a.cke_btn_unlocked{float:right}.cke_dialog a.cke_btn_locked{background-image:url(images/lock.png)}.cke_dialog a.cke_btn_unlocked{background-image:url(images/lock-open.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked,.cke_hidpi .cke_dialog a.cke_btn_locked{background-size:16px}.cke_hidpi .cke_dialog a.cke_btn_locked{background-image:url(images/hidpi/lock.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked{background-image:url(images/hidpi/lock-open.png)}.cke_dialog .cke_btn_over{border:outset 1px;cursor:pointer}.cke_dialog .ImagePreviewBox{border:2px ridge black;overflow:scroll;height:200px;width:300px;padding:2px;background-color:white}.cke_dialog .ImagePreviewBox table td{white-space:normal}.cke_dialog .ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity = 90);background-color:#e4e4e4}.cke_dialog .FlashPreviewBox{white-space:normal;border:2px ridge black;overflow:auto;height:160px;width:390px;padding:2px;background-color:white}.cke_dialog .cke_pastetext{width:346px;height:170px}.cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none}.cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:white;border:1px solid #aeb3b9;border-radius:3px}.cke_dialog .cke_hand{cursor:pointer}.cke_disabled{color:#a0a0a0}.cke_dialog_body .cke_label{display:none}.cke_dialog_body label{display:inline;margin-bottom:auto;cursor:default}.cke_dialog_body label.cke_required{font-weight:bold}a.cke_smile{overflow:hidden;display:block;text-align:center;padding:.3em 0}a.cke_smile img{vertical-align:middle}a.cke_specialchar{cursor:inherit;display:block;height:1.25em;padding:.2em .3em;text-align:center}a.cke_smile,a.cke_specialchar{border:1px solid transparent}a.cke_smile:hover,a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:hover,a.cke_specialchar:focus,a.cke_specialchar:active{background:#fff;outline:0}a.cke_smile:hover,a.cke_specialchar:hover{border-color:#888}a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:focus,a.cke_specialchar:active{border-color:#139ff7}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_dialog_ui_checkbox_input:focus,.cke_dialog_ui_radio_input:focus,.cke_btn_over{outline:1px dotted #696969}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity = 0);width:100%;height:100%}.cke_rtl input.cke_dialog_ui_input_text,.cke_rtl input.cke_dialog_ui_input_password{padding-right:2px}.cke_rtl div.cke_dialog_ui_input_text,.cke_rtl div.cke_dialog_ui_input_password{padding-left:2px}.cke_rtl div.cke_dialog_ui_input_text{padding-right:1px}.cke_rtl .cke_dialog_ui_vbox_child,.cke_rtl .cke_dialog_ui_hbox_child,.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_last{padding-right:2px!important}.cke_hc .cke_dialog_title,.cke_hc .cke_dialog_footer,.cke_hc a.cke_dialog_tab,.cke_hc a.cke_dialog_ui_button,.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button_ok,.cke_hc a.cke_dialog_ui_button_ok:hover{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:0}a.cke_dialog_ui_button_ok:focus span,a.cke_dialog_ui_button_ok:active span,a.cke_dialog_ui_button_cancel:focus span,a.cke_dialog_ui_button_cancel:active span{display:block} \ No newline at end of file
diff --git a/release/skins/moono/dialog_iequirks.css b/release/skins/moono/dialog_iequirks.css
index 133fdc0..661e8eb 100644
--- a/release/skins/moono/dialog_iequirks.css
+++ b/release/skins/moono/dialog_iequirks.css
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5.cke_dialog{visibility:visible}.cke_dialog_body{z-index:1;background:#eaeaea;border:1px solid #b2b2b2;border-bottom-color:#999;border-radius:3px;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_dialog strong{font-weight:bold}.cke_dialog_title{font-weight:bold;font-size:13px;cursor:move;position:relative;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #999;padding:6px 10px;border-radius:2px 2px 0 0;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_dialog_spinner{border-radius:50%;width:12px;height:12px;overflow:hidden;text-indent:-9999em;border-top:2px solid rgba(102,102,102,0.2);border-right:2px solid rgba(102,102,102,0.2);border-bottom:2px solid rgba(102,102,102,0.2);border-left:2px solid rgba(102,102,102,1);-webkit-animation:dialog_spinner 1s infinite linear;animation:dialog_spinner 1s infinite linear}.cke_browser_ie8 .cke_dialog_spinner,.cke_browser_ie9 .cke_dialog_spinner{background:url(images/spinner.gif) center top no-repeat;width:16px;height:16px;border:0}@-webkit-keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.cke_dialog_contents{background-color:#fff;overflow:auto;padding:15px 10px 5px 10px;margin-top:30px;border-top:1px solid #bfbfbf;border-radius:0 0 3px 3px}.cke_dialog_contents_body{overflow:auto;padding:17px 10px 5px 10px;margin-top:22px}.cke_dialog_footer{text-align:right;position:relative;border:0;outline:1px solid #bfbfbf;box-shadow:0 1px 0 #fff inset;border-radius:0 0 2px 2px;background:#cfd1cf;background-image:linear-gradient(to bottom,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_rtl .cke_dialog_footer{text-align:left}.cke_hc .cke_dialog_footer{outline:0;border-top:1px solid #fff}.cke_dialog .cke_resizer{margin-top:22px}.cke_dialog .cke_resizer_rtl{margin-left:5px}.cke_dialog .cke_resizer_ltr{margin-right:5px}.cke_dialog_tabs{height:24px;display:inline-block;margin:5px 0 0;position:absolute;z-index:2;left:10px}.cke_rtl .cke_dialog_tabs{right:10px}a.cke_dialog_tab{height:16px;padding:4px 8px;margin-right:3px;display:inline-block;cursor:pointer;line-height:16px;outline:0;color:#595959;border:1px solid #bfbfbf;border-radius:3px 3px 0 0;background:#d4d4d4;background-image:linear-gradient(to bottom,#fafafa,#ededed);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fafafa',endColorstr='#ededed')}.cke_rtl a.cke_dialog_tab{margin-right:0;margin-left:3px}a.cke_dialog_tab:hover,a.cke_dialog_tab:focus{background:#ebebeb;background:linear-gradient(to bottom,#ebebeb 0,#dfdfdf 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ebebeb',endColorstr='#dfdfdf',GradientType=0)}a.cke_dialog_tab_selected{background:#fff;color:#383838;border-bottom-color:#fff;cursor:default;filter:none}a.cke_dialog_tab_selected:hover,a.cke_dialog_tab_selected:focus,{background:#ededed;background:linear-gradient(to bottom,#ededed 0,#fff 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed',endColorstr='#ffffff',GradientType=0)}.cke_hc a.cke_dialog_tab:hover,.cke_hc a.cke_dialog_tab:focus,.cke_hc a.cke_dialog_tab_selected{border:3px solid;padding:2px 6px}a.cke_dialog_tab_disabled{color:#bababa;cursor:default}.cke_single_page .cke_dialog_tabs{display:none}.cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:0;border-top:0}a.cke_dialog_close_button{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:4px;z-index:5;opacity:.8;filter:alpha(opacity = 80)}.cke_dialog_close_button:hover{opacity:1;filter:alpha(opacity = 100)}.cke_hidpi .cke_dialog_close_button{background-image:url(images/hidpi/close.png);background-size:16px}.cke_dialog_close_button span{display:none}.cke_hc .cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px}.cke_ltr .cke_dialog_close_button{right:5px}.cke_rtl .cke_dialog_close_button{left:6px}.cke_dialog_close_button{top:4px}div.cke_disabled .cke_dialog_ui_labeled_content div *{background-color:#ddd;cursor:default}.cke_dialog_ui_vbox table,.cke_dialog_ui_hbox table{margin:auto}.cke_dialog_ui_vbox_child{padding:5px 0}.cke_dialog_ui_hbox{width:100%}.cke_dialog_ui_hbox_first,.cke_dialog_ui_hbox_child,.cke_dialog_ui_hbox_last{vertical-align:top}.cke_ltr .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px}.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px}.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-right:5px}.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-left:5px;padding-right:0}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:1px solid}textarea.cke_dialog_ui_input_textarea{overflow:auto;resize:none}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,textarea.cke_dialog_ui_input_textarea{background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:4px 6px;outline:0;width:100%;*width:95%;box-sizing:border-box;border-radius:3px;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}input.cke_dialog_ui_input_text:hover,input.cke_dialog_ui_input_password:hover,textarea.cke_dialog_ui_input_textarea:hover{border:1px solid #aeb3b9;border-top-color:#a0a6ad}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,textarea.cke_dialog_ui_input_textarea:focus,select.cke_dialog_ui_input_select:focus{outline:0;border:1px solid #139ff7;border-top-color:#1392e9}a.cke_dialog_ui_button{display:inline-block;*display:inline;*zoom:1;padding:4px 0;margin:0;text-align:center;color:#333;vertical-align:middle;cursor:pointer;border:1px solid #b6b6b6;border-bottom-color:#999;border-radius:3px;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}span.cke_dialog_ui_button{padding:0 10px}a.cke_dialog_ui_button:hover{border-color:#9e9e9e;background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{border-color:#969696;outline:0;box-shadow:0 0 6px rgba(0,0,0,.4) inset}.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button:focus,.cke_hc a.cke_dialog_ui_button:active{border:3px solid;padding-top:1px;padding-bottom:1px}.cke_hc a.cke_dialog_ui_button:hover span,.cke_hc a.cke_dialog_ui_button:focus span,.cke_hc a.cke_dialog_ui_button:active span{padding-left:10px;padding-right:10px}.cke_dialog_footer_buttons a.cke_dialog_ui_button span{color:inherit;font-size:12px;font-weight:bold;line-height:18px;padding:0 12px}a.cke_dialog_ui_button_ok{color:#fff;text-shadow:0 -1px 0 #55830c;border-color:#62a60a #62a60a #4d9200;background:#69b10b;background-image:linear-gradient(to bottom,#9ad717,#69b10b);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#9ad717',endColorstr='#69b10b')}a.cke_dialog_ui_button_ok:hover{border-color:#5b9909 #5b9909 #478500;background:#88be14;background:linear-gradient(to bottom,#88be14 0,#5d9c0a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#88be14',endColorstr='#5d9c0a',GradientType=0)}a.cke_dialog_ui_button_ok.cke_disabled{border-color:#7d9f51;background:#8dad62;background-image:-webkit-gradient(linear,0 0,0 100%,from(#b3d271),to(#8dad62));background-image:-webkit-linear-gradient(top,#b3d271,#8dad62);background-image:-o-linear-gradient(top,#b3d271,#8dad62);background-image:linear-gradient(to bottom,#b3d271,#8dad62);background-image:-moz-linear-gradient(top,#b3d271,#8dad62);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#B3D271',endColorstr='#8DAD62')}a.cke_dialog_ui_button_ok.cke_disabled span{color:#e0e8d1}a.cke_dialog_ui_button span{text-shadow:0 1px 0 #fff}a.cke_dialog_ui_button_ok span{text-shadow:0 -1px 0 #55830c}span.cke_dialog_ui_button{cursor:pointer}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active,a.cke_dialog_ui_button_cancel:focus,a.cke_dialog_ui_button_cancel:active{border-width:2px;padding:3px 0}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active{border-color:#568c0a}a.cke_dialog_ui_button_ok.cke_disabled:focus,a.cke_dialog_ui_button_ok.cke_disabled:active{border-color:#6f8c49}a.cke_dialog_ui_button_ok:focus span,a.cke_dialog_ui_button_ok:active span,a.cke_dialog_ui_button_cancel:focus span,a.cke_dialog_ui_button_cancel:active span{padding:0 11px}.cke_dialog_footer_buttons{display:inline-table;margin:5px;width:auto;position:relative;vertical-align:middle}div.cke_dialog_ui_input_select{display:table}select.cke_dialog_ui_input_select{height:25px;line-height:25px;background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:3px 3px 3px 6px;outline:0;border-radius:3px;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}.cke_dialog_ui_input_file{width:100%;height:25px}.cke_hc .cke_dialog_ui_labeled_content input:focus,.cke_hc .cke_dialog_ui_labeled_content select:focus,.cke_hc .cke_dialog_ui_labeled_content textarea:focus{outline:1px dotted}.cke_dialog .cke_dark_background{background-color:#dedede}.cke_dialog .cke_light_background{background-color:#ebebeb}.cke_dialog .cke_centered{text-align:center}.cke_dialog a.cke_btn_reset{float:right;background:url(images/refresh.png) top left no-repeat;width:16px;height:16px;border:1px none;font-size:1px}.cke_hidpi .cke_dialog a.cke_btn_reset{background-size:16px;background-image:url(images/hidpi/refresh.png)}.cke_rtl .cke_dialog a.cke_btn_reset{float:left}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked{float:left;width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.cke_dialog a.cke_btn_locked .cke_icon{display:none}.cke_rtl .cke_dialog a.cke_btn_locked,.cke_rtl .cke_dialog a.cke_btn_unlocked{float:right}.cke_dialog a.cke_btn_locked{background-image:url(images/lock.png)}.cke_dialog a.cke_btn_unlocked{background-image:url(images/lock-open.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked,.cke_hidpi .cke_dialog a.cke_btn_locked{background-size:16px}.cke_hidpi .cke_dialog a.cke_btn_locked{background-image:url(images/hidpi/lock.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked{background-image:url(images/hidpi/lock-open.png)}.cke_dialog .cke_btn_over{border:outset 1px;cursor:pointer}.cke_dialog .ImagePreviewBox{border:2px ridge black;overflow:scroll;height:200px;width:300px;padding:2px;background-color:white}.cke_dialog .ImagePreviewBox table td{white-space:normal}.cke_dialog .ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity = 90);background-color:#e4e4e4}.cke_dialog .FlashPreviewBox{white-space:normal;border:2px ridge black;overflow:auto;height:160px;width:390px;padding:2px;background-color:white}.cke_dialog .cke_pastetext{width:346px;height:170px}.cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none}.cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:white;border:1px solid #aeb3b9;border-radius:3px}.cke_dialog .cke_hand{cursor:pointer}.cke_disabled{color:#a0a0a0}.cke_dialog_body .cke_label{display:none}.cke_dialog_body label{display:inline;margin-bottom:auto;cursor:default}.cke_dialog_body label.cke_required{font-weight:bold}a.cke_smile{overflow:hidden;display:block;text-align:center;padding:.3em 0}a.cke_smile img{vertical-align:middle}a.cke_specialchar{cursor:inherit;display:block;height:1.25em;padding:.2em .3em;text-align:center}a.cke_smile,a.cke_specialchar{border:1px solid transparent}a.cke_smile:hover,a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:hover,a.cke_specialchar:focus,a.cke_specialchar:active{background:#fff;outline:0}a.cke_smile:hover,a.cke_specialchar:hover{border-color:#888}a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:focus,a.cke_specialchar:active{border-color:#139ff7}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_dialog_ui_checkbox_input:focus,.cke_dialog_ui_radio_input:focus,.cke_btn_over{outline:1px dotted #696969}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity = 0);width:100%;height:100%}.cke_rtl input.cke_dialog_ui_input_text,.cke_rtl input.cke_dialog_ui_input_password{padding-right:2px}.cke_rtl div.cke_dialog_ui_input_text,.cke_rtl div.cke_dialog_ui_input_password{padding-left:2px}.cke_rtl div.cke_dialog_ui_input_text{padding-right:1px}.cke_rtl .cke_dialog_ui_vbox_child,.cke_rtl .cke_dialog_ui_hbox_child,.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_last{padding-right:2px!important}.cke_hc .cke_dialog_title,.cke_hc .cke_dialog_footer,.cke_hc a.cke_dialog_tab,.cke_hc a.cke_dialog_ui_button,.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button_ok,.cke_hc a.cke_dialog_ui_button_ok:hover{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:0}.cke_dialog_footer{filter:""} \ No newline at end of file 5.cke_dialog{visibility:visible}.cke_dialog_body{z-index:1;background:#eaeaea;border:1px solid #b2b2b2;border-bottom-color:#999;border-radius:3px;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_dialog strong{font-weight:bold}.cke_dialog_title{font-weight:bold;font-size:13px;cursor:move;position:relative;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #999;padding:6px 10px;border-radius:2px 2px 0 0;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_dialog_spinner{border-radius:50%;width:12px;height:12px;overflow:hidden;text-indent:-9999em;border-top:2px solid rgba(102,102,102,0.2);border-right:2px solid rgba(102,102,102,0.2);border-bottom:2px solid rgba(102,102,102,0.2);border-left:2px solid rgba(102,102,102,1);-webkit-animation:dialog_spinner 1s infinite linear;animation:dialog_spinner 1s infinite linear}.cke_browser_ie8 .cke_dialog_spinner,.cke_browser_ie9 .cke_dialog_spinner{background:url(images/spinner.gif) center top no-repeat;width:16px;height:16px;border:0}@-webkit-keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.cke_dialog_contents{background-color:#fff;overflow:auto;padding:15px 10px 5px 10px;margin-top:30px;border-top:1px solid #bfbfbf;border-radius:0 0 3px 3px}.cke_dialog_contents_body{overflow:auto;padding:17px 10px 5px 10px;margin-top:22px}.cke_dialog_footer{text-align:right;position:relative;border:0;outline:1px solid #bfbfbf;box-shadow:0 1px 0 #fff inset;border-radius:0 0 2px 2px;background:#cfd1cf;background-image:linear-gradient(to bottom,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_rtl .cke_dialog_footer{text-align:left}.cke_hc .cke_dialog_footer{outline:0;border-top:1px solid #fff}.cke_dialog .cke_resizer{margin-top:22px}.cke_dialog .cke_resizer_rtl{margin-left:5px}.cke_dialog .cke_resizer_ltr{margin-right:5px}.cke_dialog_tabs{height:24px;display:inline-block;margin:5px 0 0;position:absolute;z-index:2;left:10px}.cke_rtl .cke_dialog_tabs{right:10px}a.cke_dialog_tab{height:16px;padding:4px 8px;margin-right:3px;display:inline-block;cursor:pointer;line-height:16px;outline:0;color:#595959;border:1px solid #bfbfbf;border-radius:3px 3px 0 0;background:#d4d4d4;background-image:linear-gradient(to bottom,#fafafa,#ededed);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fafafa',endColorstr='#ededed')}.cke_rtl a.cke_dialog_tab{margin-right:0;margin-left:3px}a.cke_dialog_tab:hover,a.cke_dialog_tab:focus{background:#ebebeb;background:linear-gradient(to bottom,#ebebeb 0,#dfdfdf 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ebebeb',endColorstr='#dfdfdf',GradientType=0)}a.cke_dialog_tab_selected{background:#fff;color:#383838;border-bottom-color:#fff;cursor:default;filter:none}a.cke_dialog_tab_selected:hover,a.cke_dialog_tab_selected:focus{background:#ededed;background:linear-gradient(to bottom,#ededed 0,#fff 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed',endColorstr='#ffffff',GradientType=0)}.cke_hc a.cke_dialog_tab:hover,.cke_hc a.cke_dialog_tab:focus,.cke_hc a.cke_dialog_tab_selected{border:3px solid;padding:2px 6px}a.cke_dialog_tab_disabled{color:#bababa;cursor:default}.cke_single_page .cke_dialog_tabs{display:none}.cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:0;border-top:0}a.cke_dialog_close_button{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:4px;z-index:5;opacity:.8;filter:alpha(opacity = 80)}.cke_dialog_close_button:hover{opacity:1;filter:alpha(opacity = 100)}.cke_hidpi .cke_dialog_close_button{background-image:url(images/hidpi/close.png);background-size:16px}.cke_dialog_close_button span{display:none}.cke_hc .cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px}.cke_ltr .cke_dialog_close_button{right:5px}.cke_rtl .cke_dialog_close_button{left:6px}.cke_dialog_close_button{top:4px}div.cke_disabled .cke_dialog_ui_labeled_content div *{background-color:#ddd;cursor:default}.cke_dialog_ui_vbox table,.cke_dialog_ui_hbox table{margin:auto}.cke_dialog_ui_vbox_child{padding:5px 0}.cke_dialog_ui_hbox{width:100%}.cke_dialog_ui_hbox_first,.cke_dialog_ui_hbox_child,.cke_dialog_ui_hbox_last{vertical-align:top}.cke_ltr .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px}.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px}.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-right:5px}.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-left:5px;padding-right:0}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:1px solid}textarea.cke_dialog_ui_input_textarea{overflow:auto;resize:none}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,textarea.cke_dialog_ui_input_textarea{background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:4px 6px;outline:0;width:100%;*width:95%;box-sizing:border-box;border-radius:3px;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}input.cke_dialog_ui_input_text:hover,input.cke_dialog_ui_input_password:hover,textarea.cke_dialog_ui_input_textarea:hover{border:1px solid #aeb3b9;border-top-color:#a0a6ad}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,textarea.cke_dialog_ui_input_textarea:focus,select.cke_dialog_ui_input_select:focus{outline:0;border:1px solid #139ff7;border-top-color:#1392e9}a.cke_dialog_ui_button{display:inline-block;*display:inline;*zoom:1;padding:4px 0;margin:0;text-align:center;color:#333;vertical-align:middle;cursor:pointer;border:1px solid #b6b6b6;border-bottom-color:#999;border-radius:3px;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}span.cke_dialog_ui_button{padding:0 10px}a.cke_dialog_ui_button:hover{border-color:#9e9e9e;background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{border-color:#969696;outline:0;box-shadow:0 0 6px rgba(0,0,0,.4) inset}.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button:focus,.cke_hc a.cke_dialog_ui_button:active{border:3px solid;padding-top:1px;padding-bottom:1px}.cke_hc a.cke_dialog_ui_button:hover span,.cke_hc a.cke_dialog_ui_button:focus span,.cke_hc a.cke_dialog_ui_button:active span{padding-left:10px;padding-right:10px}.cke_dialog_footer_buttons a.cke_dialog_ui_button span{color:inherit;font-size:12px;font-weight:bold;line-height:18px;padding:0 12px}a.cke_dialog_ui_button_ok{color:#fff;text-shadow:0 -1px 0 #55830c;border-color:#62a60a #62a60a #4d9200;background:#69b10b;background-image:linear-gradient(to bottom,#9ad717,#69b10b);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#9ad717',endColorstr='#69b10b')}a.cke_dialog_ui_button_ok:hover{border-color:#5b9909 #5b9909 #478500;background:#88be14;background:linear-gradient(to bottom,#88be14 0,#5d9c0a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#88be14',endColorstr='#5d9c0a',GradientType=0)}a.cke_dialog_ui_button_ok.cke_disabled{border-color:#7d9f51;background:#8dad62;background-image:-webkit-gradient(linear,0 0,0 100%,from(#b3d271),to(#8dad62));background-image:-webkit-linear-gradient(top,#b3d271,#8dad62);background-image:-o-linear-gradient(top,#b3d271,#8dad62);background-image:linear-gradient(to bottom,#b3d271,#8dad62);background-image:-moz-linear-gradient(top,#b3d271,#8dad62);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#B3D271',endColorstr='#8DAD62')}a.cke_dialog_ui_button_ok.cke_disabled span{color:#e0e8d1}a.cke_dialog_ui_button span{text-shadow:0 1px 0 #fff}a.cke_dialog_ui_button_ok span{text-shadow:0 -1px 0 #55830c}span.cke_dialog_ui_button{cursor:pointer}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active,a.cke_dialog_ui_button_cancel:focus,a.cke_dialog_ui_button_cancel:active{border-width:2px;padding:3px 0}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active{border-color:#568c0a}a.cke_dialog_ui_button_ok.cke_disabled:focus,a.cke_dialog_ui_button_ok.cke_disabled:active{border-color:#6f8c49}a.cke_dialog_ui_button_ok:focus span,a.cke_dialog_ui_button_ok:active span,a.cke_dialog_ui_button_cancel:focus span,a.cke_dialog_ui_button_cancel:active span{padding:0 11px}.cke_dialog_footer_buttons{display:inline-table;margin:5px;width:auto;position:relative;vertical-align:middle}div.cke_dialog_ui_input_select{display:table}select.cke_dialog_ui_input_select{height:25px;line-height:25px;background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:3px 3px 3px 6px;outline:0;border-radius:3px;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}.cke_dialog_ui_input_file{width:100%;height:25px}.cke_hc .cke_dialog_ui_labeled_content input:focus,.cke_hc .cke_dialog_ui_labeled_content select:focus,.cke_hc .cke_dialog_ui_labeled_content textarea:focus{outline:1px dotted}.cke_dialog .cke_dark_background{background-color:#dedede}.cke_dialog .cke_light_background{background-color:#ebebeb}.cke_dialog .cke_centered{text-align:center}.cke_dialog a.cke_btn_reset{float:right;background:url(images/refresh.png) top left no-repeat;width:16px;height:16px;border:1px none;font-size:1px}.cke_hidpi .cke_dialog a.cke_btn_reset{background-size:16px;background-image:url(images/hidpi/refresh.png)}.cke_rtl .cke_dialog a.cke_btn_reset{float:left}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked{float:left;width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.cke_dialog a.cke_btn_locked .cke_icon{display:none}.cke_rtl .cke_dialog a.cke_btn_locked,.cke_rtl .cke_dialog a.cke_btn_unlocked{float:right}.cke_dialog a.cke_btn_locked{background-image:url(images/lock.png)}.cke_dialog a.cke_btn_unlocked{background-image:url(images/lock-open.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked,.cke_hidpi .cke_dialog a.cke_btn_locked{background-size:16px}.cke_hidpi .cke_dialog a.cke_btn_locked{background-image:url(images/hidpi/lock.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked{background-image:url(images/hidpi/lock-open.png)}.cke_dialog .cke_btn_over{border:outset 1px;cursor:pointer}.cke_dialog .ImagePreviewBox{border:2px ridge black;overflow:scroll;height:200px;width:300px;padding:2px;background-color:white}.cke_dialog .ImagePreviewBox table td{white-space:normal}.cke_dialog .ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity = 90);background-color:#e4e4e4}.cke_dialog .FlashPreviewBox{white-space:normal;border:2px ridge black;overflow:auto;height:160px;width:390px;padding:2px;background-color:white}.cke_dialog .cke_pastetext{width:346px;height:170px}.cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none}.cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:white;border:1px solid #aeb3b9;border-radius:3px}.cke_dialog .cke_hand{cursor:pointer}.cke_disabled{color:#a0a0a0}.cke_dialog_body .cke_label{display:none}.cke_dialog_body label{display:inline;margin-bottom:auto;cursor:default}.cke_dialog_body label.cke_required{font-weight:bold}a.cke_smile{overflow:hidden;display:block;text-align:center;padding:.3em 0}a.cke_smile img{vertical-align:middle}a.cke_specialchar{cursor:inherit;display:block;height:1.25em;padding:.2em .3em;text-align:center}a.cke_smile,a.cke_specialchar{border:1px solid transparent}a.cke_smile:hover,a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:hover,a.cke_specialchar:focus,a.cke_specialchar:active{background:#fff;outline:0}a.cke_smile:hover,a.cke_specialchar:hover{border-color:#888}a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:focus,a.cke_specialchar:active{border-color:#139ff7}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_dialog_ui_checkbox_input:focus,.cke_dialog_ui_radio_input:focus,.cke_btn_over{outline:1px dotted #696969}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity = 0);width:100%;height:100%}.cke_rtl input.cke_dialog_ui_input_text,.cke_rtl input.cke_dialog_ui_input_password{padding-right:2px}.cke_rtl div.cke_dialog_ui_input_text,.cke_rtl div.cke_dialog_ui_input_password{padding-left:2px}.cke_rtl div.cke_dialog_ui_input_text{padding-right:1px}.cke_rtl .cke_dialog_ui_vbox_child,.cke_rtl .cke_dialog_ui_hbox_child,.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_last{padding-right:2px!important}.cke_hc .cke_dialog_title,.cke_hc .cke_dialog_footer,.cke_hc a.cke_dialog_tab,.cke_hc a.cke_dialog_ui_button,.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button_ok,.cke_hc a.cke_dialog_ui_button_ok:hover{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:0}.cke_dialog_footer{filter:""} \ No newline at end of file
diff --git a/release/skins/moono/editor.css b/release/skins/moono/editor.css
index 52cccd7..6583b5b 100644
--- a/release/skins/moono/editor.css
+++ b/release/skins/moono/editor.css
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none}.cke_reset_all,.cke_reset_all *,.cke_reset_all a,.cke_reset_all textarea{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre-wrap}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;border:1px solid #b6b6b6;padding:0;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_inner{display:block;-webkit-touch-callout:none;background:#fff;padding:0}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #b6b6b6;padding:6px 8px 2px;white-space:normal;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_float .cke_top{border:1px solid #b6b6b6;border-bottom-color:#999}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #bfbfbf;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #666 transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px;box-shadow:0 1px 0 rgba(255,255,255,.3)}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #a5a5a5;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #b6b6b6;border-bottom-color:#999;border-radius:3px;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap}.cke_panel_listItem{margin:0;padding-bottom:1px}.cke_panel_listItem a{padding:3px 4px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;border-radius:2px}* html .cke_panel_listItem a{width:100%;color:#000}*:first-child+html .cke_panel_listItem a{color:#000}.cke_panel_listItem.cke_selected a{border:1px solid #dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_hc .cke_panel_listItem a{border-style:none}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:1px 2px}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:4px 6px;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #b6b6b6;border-radius:2px 2px 0 0;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_colorblock{padding:3px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}span.cke_colorbox{width:10px;height:10px;border:#808080 1px solid;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorbox{border:#fff 1px solid;padding:2px;float:left;width:12px;height:12px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{border:#b6b6b6 1px solid;background-color:#e5e5e5}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:2px;display:block;cursor:pointer}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{border:#b6b6b6 1px solid;background-color:#e5e5e5}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;border-radius:3px;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_hc .cke_toolgroup{border:0;margin-right:10px;margin-bottom:10px}.cke_rtl .cke_toolgroup{float:right;margin-left:6px;margin-right:0}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0}.cke_ltr .cke_button:last-child,.cke_rtl .cke_button:first-child{border-radius:0 2px 2px 0}.cke_ltr .cke_button:first-child,.cke_rtl .cke_button:last-child{border-radius:2px 0 0 2px}.cke_rtl .cke_button{float:right}.cke_hc .cke_button{border:1px solid black;padding:3px 5px;margin:-2px 4px 0 -2px}a.cke_button_on{box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);background:#b5b5b5;background-image:linear-gradient(to bottom,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border-width:3px;padding:1px 3px}.cke_button_disabled .cke_button_icon{opacity:.3}.cke_hc .cke_button_disabled{opacity:.5}a.cke_button_on:hover,a.cke_button_on:focus,a.cke_button_on:active{box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{box-shadow:0 0 1px rgba(0,0,0,.3) inset;background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5)}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 1px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px -2px 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#c0c0c0;background-color:rgba(0,0,0,.2);margin:5px 2px 0;height:18px;width:1px;box-shadow:1px 0 1px rgba(255,255,255,.5)}.cke_rtl .cke_toolbar_separator{float:right;box-shadow:-1px 0 1px rgba(255,255,255,.1)}.cke_hc .cke_toolbar_separator{width:0;border-left:1px solid;margin:1px 5px 0 0}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}a.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #a6a6a6;border-bottom-color:#979797;border-radius:3px;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_toolbox_collapser:hover{background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border-left:3px solid transparent;border-right:3px solid transparent;border-bottom:3px solid #474747;border-top:3px solid transparent}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#474747}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0;margin-right:2px}.cke_menubutton{display:block}.cke_menuitem span{cursor:default}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#d3d3d3;display:block}.cke_hc .cke_menubutton{padding:2px}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#d7d8d7;opacity:.70;filter:alpha(opacity=70);padding:4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#d0d2d0}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_on{border:1px solid #dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#eff0ef}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d3d3d3;height:1px;filter:alpha(opacity=70);opacity:.70}.cke_menuarrow{background-image:url(images/arrow.png);background-position:0 10px;background-repeat:no-repeat;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:-2px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}a.cke_combo_button{cursor:default;display:inline-block;float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;border-radius:3px;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_combo_off a.cke_combo_button:hover,.cke_combo_off a.cke_combo_button:focus{background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc');outline:0}.cke_combo_off a.cke_combo_button:active,.cke_combo_on a.cke_combo_button{border:1px solid #777;box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;background:#b5b5b5;background-image:linear-gradient(to bottom,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_combo_on a.cke_combo_button:hover,.cke_combo_on a.cke_combo_button:focus,.cke_combo_on a.cke_combo_button:active{box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}.cke_rtl .cke_combo_button{float:right;margin-left:5px;margin-right:0}.cke_hc a.cke_combo_button{padding:3px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border-width:3px;padding:1px}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5);width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 7px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{cursor:default;margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}a.cke_path_item,span.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#4c4c4c;text-shadow:0 1px 0 #fff;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#bfbfbf;color:#333;text-shadow:0 1px 0 rgba(255,255,255,.5);border-radius:2px;box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5)}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combo__fontsize .cke_combo_text{width:30px}.cke_combopanel__fontsize{width:120px}textarea.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre-wrap;border:0;padding:0;margin:0;display:block}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_notifications_area{pointer-events:none}.cke_notification{pointer-events:auto;position:relative;margin:10px;width:300px;color:white;border-radius:3px;text-align:center;opacity:.95;filter:alpha(opacity = 95);box-shadow:2px 2px 3px 0 rgba(50,50,50,0.3);-webkit-animation:fadeIn .7s;animation:fadeIn .7s}.cke_notification_message a{color:#12306f}@-webkit-keyframes fadeIn{from{opacity:.4}to{opacity:.95}}@keyframes fadeIn{from{opacity:.4}to{opacity:.95}}.cke_notification_success{background:#72b572;border:1px solid #63a563}.cke_notification_warning{background:#c83939;border:1px solid #902b2b}.cke_notification_info{background:#2e9ad0;border:1px solid #0f74a8}.cke_notification_info span.cke_notification_progress{background-color:#0f74a8;display:block;padding:0;margin:0;height:100%;overflow:hidden;position:absolute;z-index:1}.cke_notification_message{position:relative;margin:4px 23px 3px;font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:18px;z-index:4;text-overflow:ellipsis;overflow:hidden}.cke_notification_close{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:1px;right:1px;padding:0;margin:0;z-index:5;opacity:.6;filter:alpha(opacity = 60)}.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_notification_close span{display:none}.cke_notification_warning a.cke_notification_close{opacity:.8;filter:alpha(opacity = 80)}.cke_notification_warning a.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}.cke_button__bold_icon {background: url(icons.png) no-repeat 0 -0px !important;}.cke_button__italic_icon {background: url(icons.png) no-repeat 0 -24px !important;}.cke_button__strike_icon {background: url(icons.png) no-repeat 0 -48px !important;}.cke_button__subscript_icon {background: url(icons.png) no-repeat 0 -72px !important;}.cke_button__superscript_icon {background: url(icons.png) no-repeat 0 -96px !important;}.cke_button__underline_icon {background: url(icons.png) no-repeat 0 -120px !important;}.cke_button__horizontalrule_icon {background: url(icons.png) no-repeat 0 -144px !important;}.cke_button__iframe_icon {background: url(icons.png) no-repeat 0 -168px !important;}.cke_button__image_icon {background: url(icons.png) no-repeat 0 -192px !important;}.cke_rtl .cke_button__indent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons.png) no-repeat 0 -216px !important;}.cke_ltr .cke_button__indent_icon {background: url(icons.png) no-repeat 0 -240px !important;}.cke_rtl .cke_button__outdent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons.png) no-repeat 0 -264px !important;}.cke_ltr .cke_button__outdent_icon {background: url(icons.png) no-repeat 0 -288px !important;}.cke_button__justifyblock_icon {background: url(icons.png) no-repeat 0 -312px !important;}.cke_button__justifycenter_icon {background: url(icons.png) no-repeat 0 -336px !important;}.cke_button__justifyleft_icon {background: url(icons.png) no-repeat 0 -360px !important;}.cke_button__justifyright_icon {background: url(icons.png) no-repeat 0 -384px !important;}.cke_rtl .cke_button__anchor_icon, .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons.png) no-repeat 0 -408px !important;}.cke_ltr .cke_button__anchor_icon {background: url(icons.png) no-repeat 0 -432px !important;}.cke_button__link_icon {background: url(icons.png) no-repeat 0 -456px !important;}.cke_button__unlink_icon {background: url(icons.png) no-repeat 0 -480px !important;}.cke_rtl .cke_button__bulletedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons.png) no-repeat 0 -504px !important;}.cke_ltr .cke_button__bulletedlist_icon {background: url(icons.png) no-repeat 0 -528px !important;}.cke_rtl .cke_button__numberedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons.png) no-repeat 0 -552px !important;}.cke_ltr .cke_button__numberedlist_icon {background: url(icons.png) no-repeat 0 -576px !important;}.cke_button__maximize_icon {background: url(icons.png) no-repeat 0 -600px !important;}.cke_button__removeformat_icon {background: url(icons.png) no-repeat 0 -624px !important;}.cke_rtl .cke_button__source_icon, .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons.png) no-repeat 0 -648px !important;}.cke_ltr .cke_button__source_icon {background: url(icons.png) no-repeat 0 -672px !important;}.cke_hidpi .cke_button__bold_icon {background: url(icons_hidpi.png) no-repeat 0 -0px !important;background-size: 16px !important;}.cke_hidpi .cke_button__italic_icon {background: url(icons_hidpi.png) no-repeat 0 -24px !important;background-size: 16px !important;}.cke_hidpi .cke_button__strike_icon {background: url(icons_hidpi.png) no-repeat 0 -48px !important;background-size: 16px !important;}.cke_hidpi .cke_button__subscript_icon {background: url(icons_hidpi.png) no-repeat 0 -72px !important;background-size: 16px !important;}.cke_hidpi .cke_button__superscript_icon {background: url(icons_hidpi.png) no-repeat 0 -96px !important;background-size: 16px !important;}.cke_hidpi .cke_button__underline_icon {background: url(icons_hidpi.png) no-repeat 0 -120px !important;background-size: 16px !important;}.cke_hidpi .cke_button__horizontalrule_icon {background: url(icons_hidpi.png) no-repeat 0 -144px !important;background-size: 16px !important;}.cke_hidpi .cke_button__iframe_icon {background: url(icons_hidpi.png) no-repeat 0 -168px !important;background-size: 16px !important;}.cke_hidpi .cke_button__image_icon {background: url(icons_hidpi.png) no-repeat 0 -192px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__indent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons_hidpi.png) no-repeat 0 -216px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__indent_icon,.cke_ltr.cke_hidpi .cke_button__indent_icon {background: url(icons_hidpi.png) no-repeat 0 -240px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__outdent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons_hidpi.png) no-repeat 0 -264px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__outdent_icon,.cke_ltr.cke_hidpi .cke_button__outdent_icon {background: url(icons_hidpi.png) no-repeat 0 -288px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyblock_icon {background: url(icons_hidpi.png) no-repeat 0 -312px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifycenter_icon {background: url(icons_hidpi.png) no-repeat 0 -336px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyleft_icon {background: url(icons_hidpi.png) no-repeat 0 -360px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyright_icon {background: url(icons_hidpi.png) no-repeat 0 -384px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__anchor_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons_hidpi.png) no-repeat 0 -408px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__anchor_icon,.cke_ltr.cke_hidpi .cke_button__anchor_icon {background: url(icons_hidpi.png) no-repeat 0 -432px !important;background-size: 16px !important;}.cke_hidpi .cke_button__link_icon {background: url(icons_hidpi.png) no-repeat 0 -456px !important;background-size: 16px !important;}.cke_hidpi .cke_button__unlink_icon {background: url(icons_hidpi.png) no-repeat 0 -480px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__bulletedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -504px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__bulletedlist_icon,.cke_ltr.cke_hidpi .cke_button__bulletedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -528px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__numberedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -552px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__numberedlist_icon,.cke_ltr.cke_hidpi .cke_button__numberedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -576px !important;background-size: 16px !important;}.cke_hidpi .cke_button__maximize_icon {background: url(icons_hidpi.png) no-repeat 0 -600px !important;background-size: 16px !important;}.cke_hidpi .cke_button__removeformat_icon {background: url(icons_hidpi.png) no-repeat 0 -624px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__source_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons_hidpi.png) no-repeat 0 -648px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__source_icon,.cke_ltr.cke_hidpi .cke_button__source_icon {background: url(icons_hidpi.png) no-repeat 0 -672px !important;background-size: 16px !important;} \ No newline at end of file 5.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none}.cke_reset_all,.cke_reset_all *,.cke_reset_all a,.cke_reset_all textarea{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre-wrap}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;border:1px solid #b6b6b6;padding:0;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_inner{display:block;-webkit-touch-callout:none;background:#fff;padding:0}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #b6b6b6;padding:6px 8px 2px;white-space:normal;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_float .cke_top{border:1px solid #b6b6b6;border-bottom-color:#999}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #bfbfbf;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #666 transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px;box-shadow:0 1px 0 rgba(255,255,255,.3)}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #a5a5a5;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #b6b6b6;border-bottom-color:#999;border-radius:3px;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap}.cke_panel_listItem{margin:0;padding-bottom:1px}.cke_panel_listItem a{padding:3px 4px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;border-radius:2px}* html .cke_panel_listItem a{width:100%;color:#000}*:first-child+html .cke_panel_listItem a{color:#000}.cke_panel_listItem.cke_selected a{border:1px solid #dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_hc .cke_panel_listItem a{border-style:none}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:1px 2px}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:4px 6px;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #b6b6b6;border-radius:2px 2px 0 0;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_colorblock{padding:3px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}span.cke_colorbox{width:10px;height:10px;border:#808080 1px solid;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorbox{border:#fff 1px solid;padding:2px;float:left;width:12px;height:12px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{border:#b6b6b6 1px solid;background-color:#e5e5e5}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:2px;display:block;cursor:pointer}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{border:#b6b6b6 1px solid;background-color:#e5e5e5}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;border-radius:3px;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_hc .cke_toolgroup{border:0;margin-right:10px;margin-bottom:10px}.cke_rtl .cke_toolgroup{float:right;margin-left:6px;margin-right:0}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0}.cke_ltr .cke_button:last-child,.cke_rtl .cke_button:first-child{border-radius:0 2px 2px 0}.cke_ltr .cke_button:first-child,.cke_rtl .cke_button:last-child{border-radius:2px 0 0 2px}.cke_rtl .cke_button{float:right}.cke_hc .cke_button{border:1px solid black;padding:3px 5px;margin:-2px 4px 0 -2px}a.cke_button_on{box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);background:#b5b5b5;background-image:linear-gradient(to bottom,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border-width:3px;padding:1px 3px}.cke_button_disabled .cke_button_icon{opacity:.3}.cke_hc .cke_button_disabled{opacity:.5}a.cke_button_on:hover,a.cke_button_on:focus,a.cke_button_on:active{box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{box-shadow:0 0 1px rgba(0,0,0,.3) inset;background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5)}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 1px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px -2px 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#c0c0c0;background-color:rgba(0,0,0,.2);margin:5px 2px 0;height:18px;width:1px;box-shadow:1px 0 1px rgba(255,255,255,.5)}.cke_rtl .cke_toolbar_separator{float:right;box-shadow:-1px 0 1px rgba(255,255,255,.1)}.cke_hc .cke_toolbar_separator{width:0;border-left:1px solid;margin:1px 5px 0 0}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}a.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #a6a6a6;border-bottom-color:#979797;border-radius:3px;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_toolbox_collapser:hover{background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border-left:3px solid transparent;border-right:3px solid transparent;border-bottom:3px solid #474747;border-top:3px solid transparent}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#474747}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0;margin-right:2px}.cke_menubutton{display:block}.cke_menuitem span{cursor:default}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#d3d3d3;display:block}.cke_hc .cke_menubutton{padding:2px}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#d7d8d7;opacity:.70;filter:alpha(opacity=70);padding:4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#d0d2d0}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_shortcut{color:#979797}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_on{border:1px solid #dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#eff0ef}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d3d3d3;height:1px;filter:alpha(opacity=70);opacity:.70}.cke_menuarrow{background-image:url(images/arrow.png);background-position:0 10px;background-repeat:no-repeat;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:-2px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}a.cke_combo_button{cursor:default;display:inline-block;float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;border-radius:3px;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_combo_off a.cke_combo_button:hover,.cke_combo_off a.cke_combo_button:focus{background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc');outline:0}.cke_combo_off a.cke_combo_button:active,.cke_combo_on a.cke_combo_button{border:1px solid #777;box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;background:#b5b5b5;background-image:linear-gradient(to bottom,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_combo_on a.cke_combo_button:hover,.cke_combo_on a.cke_combo_button:focus,.cke_combo_on a.cke_combo_button:active{box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}.cke_rtl .cke_combo_button{float:right;margin-left:5px;margin-right:0}.cke_hc a.cke_combo_button{padding:3px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border-width:3px;padding:1px}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5);width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 7px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{cursor:default;margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}a.cke_path_item,span.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#4c4c4c;text-shadow:0 1px 0 #fff;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#bfbfbf;color:#333;text-shadow:0 1px 0 rgba(255,255,255,.5);border-radius:2px;box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5)}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combo__fontsize .cke_combo_text{width:30px}.cke_combopanel__fontsize{width:120px}textarea.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre-wrap;border:0;padding:0;margin:0;display:block}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_notifications_area{pointer-events:none}.cke_notification{pointer-events:auto;position:relative;margin:10px;width:300px;color:white;border-radius:3px;text-align:center;opacity:.95;filter:alpha(opacity = 95);box-shadow:2px 2px 3px 0 rgba(50,50,50,0.3);-webkit-animation:fadeIn .7s;animation:fadeIn .7s}.cke_notification_message a{color:#12306f}@-webkit-keyframes fadeIn{from{opacity:.4}to{opacity:.95}}@keyframes fadeIn{from{opacity:.4}to{opacity:.95}}.cke_notification_success{background:#72b572;border:1px solid #63a563}.cke_notification_warning{background:#c83939;border:1px solid #902b2b}.cke_notification_info{background:#2e9ad0;border:1px solid #0f74a8}.cke_notification_info span.cke_notification_progress{background-color:#0f74a8;display:block;padding:0;margin:0;height:100%;overflow:hidden;position:absolute;z-index:1}.cke_notification_message{position:relative;margin:4px 23px 3px;font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:18px;z-index:4;text-overflow:ellipsis;overflow:hidden}.cke_notification_close{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:1px;right:1px;padding:0;margin:0;z-index:5;opacity:.6;filter:alpha(opacity = 60)}.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_notification_close span{display:none}.cke_notification_warning a.cke_notification_close{opacity:.8;filter:alpha(opacity = 80)}.cke_notification_warning a.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}.cke_button__bold_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -0px !important;}.cke_button__italic_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -24px !important;}.cke_button__strike_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -48px !important;}.cke_button__subscript_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -72px !important;}.cke_button__superscript_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -96px !important;}.cke_button__underline_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -120px !important;}.cke_button__horizontalrule_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -144px !important;}.cke_button__iframe_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -168px !important;}.cke_button__image_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -192px !important;}.cke_rtl .cke_button__indent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -216px !important;}.cke_ltr .cke_button__indent_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -240px !important;}.cke_rtl .cke_button__outdent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -264px !important;}.cke_ltr .cke_button__outdent_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -288px !important;}.cke_button__justifyblock_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -312px !important;}.cke_button__justifycenter_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -336px !important;}.cke_button__justifyleft_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -360px !important;}.cke_button__justifyright_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -384px !important;}.cke_rtl .cke_button__anchor_icon, .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -408px !important;}.cke_ltr .cke_button__anchor_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -432px !important;}.cke_button__link_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -456px !important;}.cke_button__unlink_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -480px !important;}.cke_rtl .cke_button__bulletedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -504px !important;}.cke_ltr .cke_button__bulletedlist_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -528px !important;}.cke_rtl .cke_button__numberedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -552px !important;}.cke_ltr .cke_button__numberedlist_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -576px !important;}.cke_button__maximize_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -600px !important;}.cke_button__removeformat_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -624px !important;}.cke_rtl .cke_button__source_icon, .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -648px !important;}.cke_ltr .cke_button__source_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -672px !important;}.cke_rtl .cke_button__copy_icon, .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -696px !important;}.cke_ltr .cke_button__copy_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -720px !important;}.cke_rtl .cke_button__cut_icon, .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -744px !important;}.cke_ltr .cke_button__cut_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -768px !important;}.cke_rtl .cke_button__paste_icon, .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -792px !important;}.cke_ltr .cke_button__paste_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -816px !important;}.cke_button__oembed_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -840px !important;}.cke_button__html5video_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -864px !important;}.cke_hidpi .cke_button__bold_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -0px !important;background-size: 16px !important;}.cke_hidpi .cke_button__italic_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -24px !important;background-size: 16px !important;}.cke_hidpi .cke_button__strike_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -48px !important;background-size: 16px !important;}.cke_hidpi .cke_button__subscript_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -72px !important;background-size: 16px !important;}.cke_hidpi .cke_button__superscript_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -96px !important;background-size: 16px !important;}.cke_hidpi .cke_button__underline_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -120px !important;background-size: 16px !important;}.cke_hidpi .cke_button__horizontalrule_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -144px !important;background-size: 16px !important;}.cke_hidpi .cke_button__iframe_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -168px !important;background-size: 16px !important;}.cke_hidpi .cke_button__image_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -192px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__indent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -216px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__indent_icon,.cke_ltr.cke_hidpi .cke_button__indent_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -240px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__outdent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -264px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__outdent_icon,.cke_ltr.cke_hidpi .cke_button__outdent_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -288px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyblock_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -312px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifycenter_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -336px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyleft_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -360px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyright_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -384px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__anchor_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -408px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__anchor_icon,.cke_ltr.cke_hidpi .cke_button__anchor_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -432px !important;background-size: 16px !important;}.cke_hidpi .cke_button__link_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -456px !important;background-size: 16px !important;}.cke_hidpi .cke_button__unlink_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -480px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__bulletedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -504px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__bulletedlist_icon,.cke_ltr.cke_hidpi .cke_button__bulletedlist_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -528px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__numberedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -552px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__numberedlist_icon,.cke_ltr.cke_hidpi .cke_button__numberedlist_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -576px !important;background-size: 16px !important;}.cke_hidpi .cke_button__maximize_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -600px !important;background-size: 16px !important;}.cke_hidpi .cke_button__removeformat_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -624px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__source_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -648px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__source_icon,.cke_ltr.cke_hidpi .cke_button__source_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -672px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__copy_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -696px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__copy_icon,.cke_ltr.cke_hidpi .cke_button__copy_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -720px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__cut_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -744px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__cut_icon,.cke_ltr.cke_hidpi .cke_button__cut_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -768px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__paste_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -792px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__paste_icon,.cke_ltr.cke_hidpi .cke_button__paste_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -816px !important;background-size: 16px !important;}.cke_hidpi .cke_button__oembed_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -840px !important;background-size: 16px !important;}.cke_hidpi .cke_button__html5video_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -1728px !important;} \ No newline at end of file
diff --git a/release/skins/moono/editor_gecko.css b/release/skins/moono/editor_gecko.css
index 24fac1d..d7f9e07 100644
--- a/release/skins/moono/editor_gecko.css
+++ b/release/skins/moono/editor_gecko.css
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none}.cke_reset_all,.cke_reset_all *,.cke_reset_all a,.cke_reset_all textarea{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre-wrap}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;border:1px solid #b6b6b6;padding:0;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_inner{display:block;-webkit-touch-callout:none;background:#fff;padding:0}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #b6b6b6;padding:6px 8px 2px;white-space:normal;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_float .cke_top{border:1px solid #b6b6b6;border-bottom-color:#999}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #bfbfbf;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #666 transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px;box-shadow:0 1px 0 rgba(255,255,255,.3)}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #a5a5a5;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #b6b6b6;border-bottom-color:#999;border-radius:3px;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap}.cke_panel_listItem{margin:0;padding-bottom:1px}.cke_panel_listItem a{padding:3px 4px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;border-radius:2px}* html .cke_panel_listItem a{width:100%;color:#000}*:first-child+html .cke_panel_listItem a{color:#000}.cke_panel_listItem.cke_selected a{border:1px solid #dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_hc .cke_panel_listItem a{border-style:none}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:1px 2px}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:4px 6px;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #b6b6b6;border-radius:2px 2px 0 0;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_colorblock{padding:3px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}span.cke_colorbox{width:10px;height:10px;border:#808080 1px solid;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorbox{border:#fff 1px solid;padding:2px;float:left;width:12px;height:12px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{border:#b6b6b6 1px solid;background-color:#e5e5e5}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:2px;display:block;cursor:pointer}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{border:#b6b6b6 1px solid;background-color:#e5e5e5}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;border-radius:3px;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_hc .cke_toolgroup{border:0;margin-right:10px;margin-bottom:10px}.cke_rtl .cke_toolgroup{float:right;margin-left:6px;margin-right:0}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0}.cke_ltr .cke_button:last-child,.cke_rtl .cke_button:first-child{border-radius:0 2px 2px 0}.cke_ltr .cke_button:first-child,.cke_rtl .cke_button:last-child{border-radius:2px 0 0 2px}.cke_rtl .cke_button{float:right}.cke_hc .cke_button{border:1px solid black;padding:3px 5px;margin:-2px 4px 0 -2px}a.cke_button_on{box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);background:#b5b5b5;background-image:linear-gradient(to bottom,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border-width:3px;padding:1px 3px}.cke_button_disabled .cke_button_icon{opacity:.3}.cke_hc .cke_button_disabled{opacity:.5}a.cke_button_on:hover,a.cke_button_on:focus,a.cke_button_on:active{box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{box-shadow:0 0 1px rgba(0,0,0,.3) inset;background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5)}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 1px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px -2px 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#c0c0c0;background-color:rgba(0,0,0,.2);margin:5px 2px 0;height:18px;width:1px;box-shadow:1px 0 1px rgba(255,255,255,.5)}.cke_rtl .cke_toolbar_separator{float:right;box-shadow:-1px 0 1px rgba(255,255,255,.1)}.cke_hc .cke_toolbar_separator{width:0;border-left:1px solid;margin:1px 5px 0 0}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}a.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #a6a6a6;border-bottom-color:#979797;border-radius:3px;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_toolbox_collapser:hover{background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border-left:3px solid transparent;border-right:3px solid transparent;border-bottom:3px solid #474747;border-top:3px solid transparent}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#474747}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0;margin-right:2px}.cke_menubutton{display:block}.cke_menuitem span{cursor:default}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#d3d3d3;display:block}.cke_hc .cke_menubutton{padding:2px}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#d7d8d7;opacity:.70;filter:alpha(opacity=70);padding:4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#d0d2d0}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_on{border:1px solid #dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#eff0ef}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d3d3d3;height:1px;filter:alpha(opacity=70);opacity:.70}.cke_menuarrow{background-image:url(images/arrow.png);background-position:0 10px;background-repeat:no-repeat;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:-2px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}a.cke_combo_button{cursor:default;display:inline-block;float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;border-radius:3px;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_combo_off a.cke_combo_button:hover,.cke_combo_off a.cke_combo_button:focus{background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc');outline:0}.cke_combo_off a.cke_combo_button:active,.cke_combo_on a.cke_combo_button{border:1px solid #777;box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;background:#b5b5b5;background-image:linear-gradient(to bottom,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_combo_on a.cke_combo_button:hover,.cke_combo_on a.cke_combo_button:focus,.cke_combo_on a.cke_combo_button:active{box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}.cke_rtl .cke_combo_button{float:right;margin-left:5px;margin-right:0}.cke_hc a.cke_combo_button{padding:3px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border-width:3px;padding:1px}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5);width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 7px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{cursor:default;margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}a.cke_path_item,span.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#4c4c4c;text-shadow:0 1px 0 #fff;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#bfbfbf;color:#333;text-shadow:0 1px 0 rgba(255,255,255,.5);border-radius:2px;box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5)}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combo__fontsize .cke_combo_text{width:30px}.cke_combopanel__fontsize{width:120px}textarea.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre-wrap;border:0;padding:0;margin:0;display:block}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_notifications_area{pointer-events:none}.cke_notification{pointer-events:auto;position:relative;margin:10px;width:300px;color:white;border-radius:3px;text-align:center;opacity:.95;filter:alpha(opacity = 95);box-shadow:2px 2px 3px 0 rgba(50,50,50,0.3);-webkit-animation:fadeIn .7s;animation:fadeIn .7s}.cke_notification_message a{color:#12306f}@-webkit-keyframes fadeIn{from{opacity:.4}to{opacity:.95}}@keyframes fadeIn{from{opacity:.4}to{opacity:.95}}.cke_notification_success{background:#72b572;border:1px solid #63a563}.cke_notification_warning{background:#c83939;border:1px solid #902b2b}.cke_notification_info{background:#2e9ad0;border:1px solid #0f74a8}.cke_notification_info span.cke_notification_progress{background-color:#0f74a8;display:block;padding:0;margin:0;height:100%;overflow:hidden;position:absolute;z-index:1}.cke_notification_message{position:relative;margin:4px 23px 3px;font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:18px;z-index:4;text-overflow:ellipsis;overflow:hidden}.cke_notification_close{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:1px;right:1px;padding:0;margin:0;z-index:5;opacity:.6;filter:alpha(opacity = 60)}.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_notification_close span{display:none}.cke_notification_warning a.cke_notification_close{opacity:.8;filter:alpha(opacity = 80)}.cke_notification_warning a.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}.cke_bottom{padding-bottom:3px}.cke_combo_text{margin-bottom:-1px;margin-top:1px}.cke_button__bold_icon {background: url(icons.png) no-repeat 0 -0px !important;}.cke_button__italic_icon {background: url(icons.png) no-repeat 0 -24px !important;}.cke_button__strike_icon {background: url(icons.png) no-repeat 0 -48px !important;}.cke_button__subscript_icon {background: url(icons.png) no-repeat 0 -72px !important;}.cke_button__superscript_icon {background: url(icons.png) no-repeat 0 -96px !important;}.cke_button__underline_icon {background: url(icons.png) no-repeat 0 -120px !important;}.cke_button__horizontalrule_icon {background: url(icons.png) no-repeat 0 -144px !important;}.cke_button__iframe_icon {background: url(icons.png) no-repeat 0 -168px !important;}.cke_button__image_icon {background: url(icons.png) no-repeat 0 -192px !important;}.cke_rtl .cke_button__indent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons.png) no-repeat 0 -216px !important;}.cke_ltr .cke_button__indent_icon {background: url(icons.png) no-repeat 0 -240px !important;}.cke_rtl .cke_button__outdent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons.png) no-repeat 0 -264px !important;}.cke_ltr .cke_button__outdent_icon {background: url(icons.png) no-repeat 0 -288px !important;}.cke_button__justifyblock_icon {background: url(icons.png) no-repeat 0 -312px !important;}.cke_button__justifycenter_icon {background: url(icons.png) no-repeat 0 -336px !important;}.cke_button__justifyleft_icon {background: url(icons.png) no-repeat 0 -360px !important;}.cke_button__justifyright_icon {background: url(icons.png) no-repeat 0 -384px !important;}.cke_rtl .cke_button__anchor_icon, .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons.png) no-repeat 0 -408px !important;}.cke_ltr .cke_button__anchor_icon {background: url(icons.png) no-repeat 0 -432px !important;}.cke_button__link_icon {background: url(icons.png) no-repeat 0 -456px !important;}.cke_button__unlink_icon {background: url(icons.png) no-repeat 0 -480px !important;}.cke_rtl .cke_button__bulletedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons.png) no-repeat 0 -504px !important;}.cke_ltr .cke_button__bulletedlist_icon {background: url(icons.png) no-repeat 0 -528px !important;}.cke_rtl .cke_button__numberedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons.png) no-repeat 0 -552px !important;}.cke_ltr .cke_button__numberedlist_icon {background: url(icons.png) no-repeat 0 -576px !important;}.cke_button__maximize_icon {background: url(icons.png) no-repeat 0 -600px !important;}.cke_button__removeformat_icon {background: url(icons.png) no-repeat 0 -624px !important;}.cke_rtl .cke_button__source_icon, .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons.png) no-repeat 0 -648px !important;}.cke_ltr .cke_button__source_icon {background: url(icons.png) no-repeat 0 -672px !important;}.cke_hidpi .cke_button__bold_icon {background: url(icons_hidpi.png) no-repeat 0 -0px !important;background-size: 16px !important;}.cke_hidpi .cke_button__italic_icon {background: url(icons_hidpi.png) no-repeat 0 -24px !important;background-size: 16px !important;}.cke_hidpi .cke_button__strike_icon {background: url(icons_hidpi.png) no-repeat 0 -48px !important;background-size: 16px !important;}.cke_hidpi .cke_button__subscript_icon {background: url(icons_hidpi.png) no-repeat 0 -72px !important;background-size: 16px !important;}.cke_hidpi .cke_button__superscript_icon {background: url(icons_hidpi.png) no-repeat 0 -96px !important;background-size: 16px !important;}.cke_hidpi .cke_button__underline_icon {background: url(icons_hidpi.png) no-repeat 0 -120px !important;background-size: 16px !important;}.cke_hidpi .cke_button__horizontalrule_icon {background: url(icons_hidpi.png) no-repeat 0 -144px !important;background-size: 16px !important;}.cke_hidpi .cke_button__iframe_icon {background: url(icons_hidpi.png) no-repeat 0 -168px !important;background-size: 16px !important;}.cke_hidpi .cke_button__image_icon {background: url(icons_hidpi.png) no-repeat 0 -192px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__indent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons_hidpi.png) no-repeat 0 -216px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__indent_icon,.cke_ltr.cke_hidpi .cke_button__indent_icon {background: url(icons_hidpi.png) no-repeat 0 -240px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__outdent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons_hidpi.png) no-repeat 0 -264px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__outdent_icon,.cke_ltr.cke_hidpi .cke_button__outdent_icon {background: url(icons_hidpi.png) no-repeat 0 -288px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyblock_icon {background: url(icons_hidpi.png) no-repeat 0 -312px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifycenter_icon {background: url(icons_hidpi.png) no-repeat 0 -336px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyleft_icon {background: url(icons_hidpi.png) no-repeat 0 -360px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyright_icon {background: url(icons_hidpi.png) no-repeat 0 -384px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__anchor_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons_hidpi.png) no-repeat 0 -408px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__anchor_icon,.cke_ltr.cke_hidpi .cke_button__anchor_icon {background: url(icons_hidpi.png) no-repeat 0 -432px !important;background-size: 16px !important;}.cke_hidpi .cke_button__link_icon {background: url(icons_hidpi.png) no-repeat 0 -456px !important;background-size: 16px !important;}.cke_hidpi .cke_button__unlink_icon {background: url(icons_hidpi.png) no-repeat 0 -480px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__bulletedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -504px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__bulletedlist_icon,.cke_ltr.cke_hidpi .cke_button__bulletedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -528px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__numberedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -552px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__numberedlist_icon,.cke_ltr.cke_hidpi .cke_button__numberedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -576px !important;background-size: 16px !important;}.cke_hidpi .cke_button__maximize_icon {background: url(icons_hidpi.png) no-repeat 0 -600px !important;background-size: 16px !important;}.cke_hidpi .cke_button__removeformat_icon {background: url(icons_hidpi.png) no-repeat 0 -624px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__source_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons_hidpi.png) no-repeat 0 -648px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__source_icon,.cke_ltr.cke_hidpi .cke_button__source_icon {background: url(icons_hidpi.png) no-repeat 0 -672px !important;background-size: 16px !important;} \ No newline at end of file 5.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none}.cke_reset_all,.cke_reset_all *,.cke_reset_all a,.cke_reset_all textarea{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre-wrap}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;border:1px solid #b6b6b6;padding:0;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_inner{display:block;-webkit-touch-callout:none;background:#fff;padding:0}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #b6b6b6;padding:6px 8px 2px;white-space:normal;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_float .cke_top{border:1px solid #b6b6b6;border-bottom-color:#999}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #bfbfbf;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #666 transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px;box-shadow:0 1px 0 rgba(255,255,255,.3)}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #a5a5a5;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #b6b6b6;border-bottom-color:#999;border-radius:3px;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap}.cke_panel_listItem{margin:0;padding-bottom:1px}.cke_panel_listItem a{padding:3px 4px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;border-radius:2px}* html .cke_panel_listItem a{width:100%;color:#000}*:first-child+html .cke_panel_listItem a{color:#000}.cke_panel_listItem.cke_selected a{border:1px solid #dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_hc .cke_panel_listItem a{border-style:none}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:1px 2px}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:4px 6px;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #b6b6b6;border-radius:2px 2px 0 0;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_colorblock{padding:3px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}span.cke_colorbox{width:10px;height:10px;border:#808080 1px solid;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorbox{border:#fff 1px solid;padding:2px;float:left;width:12px;height:12px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{border:#b6b6b6 1px solid;background-color:#e5e5e5}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:2px;display:block;cursor:pointer}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{border:#b6b6b6 1px solid;background-color:#e5e5e5}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;border-radius:3px;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_hc .cke_toolgroup{border:0;margin-right:10px;margin-bottom:10px}.cke_rtl .cke_toolgroup{float:right;margin-left:6px;margin-right:0}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0}.cke_ltr .cke_button:last-child,.cke_rtl .cke_button:first-child{border-radius:0 2px 2px 0}.cke_ltr .cke_button:first-child,.cke_rtl .cke_button:last-child{border-radius:2px 0 0 2px}.cke_rtl .cke_button{float:right}.cke_hc .cke_button{border:1px solid black;padding:3px 5px;margin:-2px 4px 0 -2px}a.cke_button_on{box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);background:#b5b5b5;background-image:linear-gradient(to bottom,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border-width:3px;padding:1px 3px}.cke_button_disabled .cke_button_icon{opacity:.3}.cke_hc .cke_button_disabled{opacity:.5}a.cke_button_on:hover,a.cke_button_on:focus,a.cke_button_on:active{box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{box-shadow:0 0 1px rgba(0,0,0,.3) inset;background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5)}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 1px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px -2px 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#c0c0c0;background-color:rgba(0,0,0,.2);margin:5px 2px 0;height:18px;width:1px;box-shadow:1px 0 1px rgba(255,255,255,.5)}.cke_rtl .cke_toolbar_separator{float:right;box-shadow:-1px 0 1px rgba(255,255,255,.1)}.cke_hc .cke_toolbar_separator{width:0;border-left:1px solid;margin:1px 5px 0 0}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}a.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #a6a6a6;border-bottom-color:#979797;border-radius:3px;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_toolbox_collapser:hover{background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border-left:3px solid transparent;border-right:3px solid transparent;border-bottom:3px solid #474747;border-top:3px solid transparent}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#474747}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0;margin-right:2px}.cke_menubutton{display:block}.cke_menuitem span{cursor:default}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#d3d3d3;display:block}.cke_hc .cke_menubutton{padding:2px}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#d7d8d7;opacity:.70;filter:alpha(opacity=70);padding:4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#d0d2d0}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_shortcut{color:#979797}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_on{border:1px solid #dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#eff0ef}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d3d3d3;height:1px;filter:alpha(opacity=70);opacity:.70}.cke_menuarrow{background-image:url(images/arrow.png);background-position:0 10px;background-repeat:no-repeat;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:-2px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}a.cke_combo_button{cursor:default;display:inline-block;float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;border-radius:3px;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_combo_off a.cke_combo_button:hover,.cke_combo_off a.cke_combo_button:focus{background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc');outline:0}.cke_combo_off a.cke_combo_button:active,.cke_combo_on a.cke_combo_button{border:1px solid #777;box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;background:#b5b5b5;background-image:linear-gradient(to bottom,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_combo_on a.cke_combo_button:hover,.cke_combo_on a.cke_combo_button:focus,.cke_combo_on a.cke_combo_button:active{box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}.cke_rtl .cke_combo_button{float:right;margin-left:5px;margin-right:0}.cke_hc a.cke_combo_button{padding:3px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border-width:3px;padding:1px}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5);width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 7px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{cursor:default;margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}a.cke_path_item,span.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#4c4c4c;text-shadow:0 1px 0 #fff;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#bfbfbf;color:#333;text-shadow:0 1px 0 rgba(255,255,255,.5);border-radius:2px;box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5)}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combo__fontsize .cke_combo_text{width:30px}.cke_combopanel__fontsize{width:120px}textarea.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre-wrap;border:0;padding:0;margin:0;display:block}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_notifications_area{pointer-events:none}.cke_notification{pointer-events:auto;position:relative;margin:10px;width:300px;color:white;border-radius:3px;text-align:center;opacity:.95;filter:alpha(opacity = 95);box-shadow:2px 2px 3px 0 rgba(50,50,50,0.3);-webkit-animation:fadeIn .7s;animation:fadeIn .7s}.cke_notification_message a{color:#12306f}@-webkit-keyframes fadeIn{from{opacity:.4}to{opacity:.95}}@keyframes fadeIn{from{opacity:.4}to{opacity:.95}}.cke_notification_success{background:#72b572;border:1px solid #63a563}.cke_notification_warning{background:#c83939;border:1px solid #902b2b}.cke_notification_info{background:#2e9ad0;border:1px solid #0f74a8}.cke_notification_info span.cke_notification_progress{background-color:#0f74a8;display:block;padding:0;margin:0;height:100%;overflow:hidden;position:absolute;z-index:1}.cke_notification_message{position:relative;margin:4px 23px 3px;font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:18px;z-index:4;text-overflow:ellipsis;overflow:hidden}.cke_notification_close{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:1px;right:1px;padding:0;margin:0;z-index:5;opacity:.6;filter:alpha(opacity = 60)}.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_notification_close span{display:none}.cke_notification_warning a.cke_notification_close{opacity:.8;filter:alpha(opacity = 80)}.cke_notification_warning a.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}.cke_bottom{padding-bottom:3px}.cke_combo_text{margin-bottom:-1px;margin-top:1px}.cke_button__bold_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -0px !important;}.cke_button__italic_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -24px !important;}.cke_button__strike_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -48px !important;}.cke_button__subscript_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -72px !important;}.cke_button__superscript_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -96px !important;}.cke_button__underline_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -120px !important;}.cke_button__horizontalrule_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -144px !important;}.cke_button__iframe_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -168px !important;}.cke_button__image_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -192px !important;}.cke_rtl .cke_button__indent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -216px !important;}.cke_ltr .cke_button__indent_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -240px !important;}.cke_rtl .cke_button__outdent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -264px !important;}.cke_ltr .cke_button__outdent_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -288px !important;}.cke_button__justifyblock_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -312px !important;}.cke_button__justifycenter_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -336px !important;}.cke_button__justifyleft_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -360px !important;}.cke_button__justifyright_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -384px !important;}.cke_rtl .cke_button__anchor_icon, .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -408px !important;}.cke_ltr .cke_button__anchor_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -432px !important;}.cke_button__link_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -456px !important;}.cke_button__unlink_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -480px !important;}.cke_rtl .cke_button__bulletedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -504px !important;}.cke_ltr .cke_button__bulletedlist_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -528px !important;}.cke_rtl .cke_button__numberedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -552px !important;}.cke_ltr .cke_button__numberedlist_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -576px !important;}.cke_button__maximize_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -600px !important;}.cke_button__removeformat_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -624px !important;}.cke_rtl .cke_button__source_icon, .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -648px !important;}.cke_ltr .cke_button__source_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -672px !important;}.cke_rtl .cke_button__copy_icon, .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -696px !important;}.cke_ltr .cke_button__copy_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -720px !important;}.cke_rtl .cke_button__cut_icon, .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -744px !important;}.cke_ltr .cke_button__cut_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -768px !important;}.cke_rtl .cke_button__paste_icon, .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -792px !important;}.cke_ltr .cke_button__paste_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -816px !important;}.cke_button__oembed_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -840px !important;}.cke_button__html5video_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -864px !important;}.cke_hidpi .cke_button__bold_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -0px !important;background-size: 16px !important;}.cke_hidpi .cke_button__italic_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -24px !important;background-size: 16px !important;}.cke_hidpi .cke_button__strike_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -48px !important;background-size: 16px !important;}.cke_hidpi .cke_button__subscript_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -72px !important;background-size: 16px !important;}.cke_hidpi .cke_button__superscript_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -96px !important;background-size: 16px !important;}.cke_hidpi .cke_button__underline_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -120px !important;background-size: 16px !important;}.cke_hidpi .cke_button__horizontalrule_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -144px !important;background-size: 16px !important;}.cke_hidpi .cke_button__iframe_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -168px !important;background-size: 16px !important;}.cke_hidpi .cke_button__image_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -192px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__indent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -216px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__indent_icon,.cke_ltr.cke_hidpi .cke_button__indent_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -240px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__outdent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -264px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__outdent_icon,.cke_ltr.cke_hidpi .cke_button__outdent_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -288px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyblock_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -312px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifycenter_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -336px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyleft_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -360px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyright_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -384px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__anchor_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -408px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__anchor_icon,.cke_ltr.cke_hidpi .cke_button__anchor_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -432px !important;background-size: 16px !important;}.cke_hidpi .cke_button__link_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -456px !important;background-size: 16px !important;}.cke_hidpi .cke_button__unlink_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -480px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__bulletedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -504px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__bulletedlist_icon,.cke_ltr.cke_hidpi .cke_button__bulletedlist_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -528px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__numberedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -552px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__numberedlist_icon,.cke_ltr.cke_hidpi .cke_button__numberedlist_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -576px !important;background-size: 16px !important;}.cke_hidpi .cke_button__maximize_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -600px !important;background-size: 16px !important;}.cke_hidpi .cke_button__removeformat_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -624px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__source_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -648px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__source_icon,.cke_ltr.cke_hidpi .cke_button__source_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -672px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__copy_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -696px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__copy_icon,.cke_ltr.cke_hidpi .cke_button__copy_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -720px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__cut_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -744px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__cut_icon,.cke_ltr.cke_hidpi .cke_button__cut_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -768px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__paste_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -792px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__paste_icon,.cke_ltr.cke_hidpi .cke_button__paste_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -816px !important;background-size: 16px !important;}.cke_hidpi .cke_button__oembed_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -840px !important;background-size: 16px !important;}.cke_hidpi .cke_button__html5video_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -1728px !important;} \ No newline at end of file
diff --git a/release/skins/moono/editor_ie.css b/release/skins/moono/editor_ie.css
index 04ab0d8..0c93719 100644
--- a/release/skins/moono/editor_ie.css
+++ b/release/skins/moono/editor_ie.css
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none}.cke_reset_all,.cke_reset_all *,.cke_reset_all a,.cke_reset_all textarea{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre-wrap}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;border:1px solid #b6b6b6;padding:0;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_inner{display:block;-webkit-touch-callout:none;background:#fff;padding:0}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #b6b6b6;padding:6px 8px 2px;white-space:normal;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_float .cke_top{border:1px solid #b6b6b6;border-bottom-color:#999}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #bfbfbf;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #666 transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px;box-shadow:0 1px 0 rgba(255,255,255,.3)}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #a5a5a5;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #b6b6b6;border-bottom-color:#999;border-radius:3px;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap}.cke_panel_listItem{margin:0;padding-bottom:1px}.cke_panel_listItem a{padding:3px 4px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;border-radius:2px}* html .cke_panel_listItem a{width:100%;color:#000}*:first-child+html .cke_panel_listItem a{color:#000}.cke_panel_listItem.cke_selected a{border:1px solid #dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_hc .cke_panel_listItem a{border-style:none}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:1px 2px}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:4px 6px;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #b6b6b6;border-radius:2px 2px 0 0;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_colorblock{padding:3px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}span.cke_colorbox{width:10px;height:10px;border:#808080 1px solid;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorbox{border:#fff 1px solid;padding:2px;float:left;width:12px;height:12px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{border:#b6b6b6 1px solid;background-color:#e5e5e5}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:2px;display:block;cursor:pointer}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{border:#b6b6b6 1px solid;background-color:#e5e5e5}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;border-radius:3px;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_hc .cke_toolgroup{border:0;margin-right:10px;margin-bottom:10px}.cke_rtl .cke_toolgroup{float:right;margin-left:6px;margin-right:0}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0}.cke_ltr .cke_button:last-child,.cke_rtl .cke_button:first-child{border-radius:0 2px 2px 0}.cke_ltr .cke_button:first-child,.cke_rtl .cke_button:last-child{border-radius:2px 0 0 2px}.cke_rtl .cke_button{float:right}.cke_hc .cke_button{border:1px solid black;padding:3px 5px;margin:-2px 4px 0 -2px}a.cke_button_on{box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);background:#b5b5b5;background-image:linear-gradient(to bottom,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border-width:3px;padding:1px 3px}.cke_button_disabled .cke_button_icon{opacity:.3}.cke_hc .cke_button_disabled{opacity:.5}a.cke_button_on:hover,a.cke_button_on:focus,a.cke_button_on:active{box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{box-shadow:0 0 1px rgba(0,0,0,.3) inset;background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5)}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 1px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px -2px 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#c0c0c0;background-color:rgba(0,0,0,.2);margin:5px 2px 0;height:18px;width:1px;box-shadow:1px 0 1px rgba(255,255,255,.5)}.cke_rtl .cke_toolbar_separator{float:right;box-shadow:-1px 0 1px rgba(255,255,255,.1)}.cke_hc .cke_toolbar_separator{width:0;border-left:1px solid;margin:1px 5px 0 0}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}a.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #a6a6a6;border-bottom-color:#979797;border-radius:3px;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_toolbox_collapser:hover{background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border-left:3px solid transparent;border-right:3px solid transparent;border-bottom:3px solid #474747;border-top:3px solid transparent}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#474747}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0;margin-right:2px}.cke_menubutton{display:block}.cke_menuitem span{cursor:default}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#d3d3d3;display:block}.cke_hc .cke_menubutton{padding:2px}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#d7d8d7;opacity:.70;filter:alpha(opacity=70);padding:4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#d0d2d0}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_on{border:1px solid #dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#eff0ef}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d3d3d3;height:1px;filter:alpha(opacity=70);opacity:.70}.cke_menuarrow{background-image:url(images/arrow.png);background-position:0 10px;background-repeat:no-repeat;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:-2px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}a.cke_combo_button{cursor:default;display:inline-block;float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;border-radius:3px;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_combo_off a.cke_combo_button:hover,.cke_combo_off a.cke_combo_button:focus{background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc');outline:0}.cke_combo_off a.cke_combo_button:active,.cke_combo_on a.cke_combo_button{border:1px solid #777;box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;background:#b5b5b5;background-image:linear-gradient(to bottom,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_combo_on a.cke_combo_button:hover,.cke_combo_on a.cke_combo_button:focus,.cke_combo_on a.cke_combo_button:active{box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}.cke_rtl .cke_combo_button{float:right;margin-left:5px;margin-right:0}.cke_hc a.cke_combo_button{padding:3px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border-width:3px;padding:1px}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5);width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 7px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{cursor:default;margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}a.cke_path_item,span.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#4c4c4c;text-shadow:0 1px 0 #fff;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#bfbfbf;color:#333;text-shadow:0 1px 0 rgba(255,255,255,.5);border-radius:2px;box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5)}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combo__fontsize .cke_combo_text{width:30px}.cke_combopanel__fontsize{width:120px}textarea.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre-wrap;border:0;padding:0;margin:0;display:block}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_notifications_area{pointer-events:none}.cke_notification{pointer-events:auto;position:relative;margin:10px;width:300px;color:white;border-radius:3px;text-align:center;opacity:.95;filter:alpha(opacity = 95);box-shadow:2px 2px 3px 0 rgba(50,50,50,0.3);-webkit-animation:fadeIn .7s;animation:fadeIn .7s}.cke_notification_message a{color:#12306f}@-webkit-keyframes fadeIn{from{opacity:.4}to{opacity:.95}}@keyframes fadeIn{from{opacity:.4}to{opacity:.95}}.cke_notification_success{background:#72b572;border:1px solid #63a563}.cke_notification_warning{background:#c83939;border:1px solid #902b2b}.cke_notification_info{background:#2e9ad0;border:1px solid #0f74a8}.cke_notification_info span.cke_notification_progress{background-color:#0f74a8;display:block;padding:0;margin:0;height:100%;overflow:hidden;position:absolute;z-index:1}.cke_notification_message{position:relative;margin:4px 23px 3px;font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:18px;z-index:4;text-overflow:ellipsis;overflow:hidden}.cke_notification_close{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:1px;right:1px;padding:0;margin:0;z-index:5;opacity:.6;filter:alpha(opacity = 60)}.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_notification_close span{display:none}.cke_notification_warning a.cke_notification_close{opacity:.8;filter:alpha(opacity = 80)}.cke_notification_warning a.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}a.cke_button_disabled,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{filter:alpha(opacity = 30)}.cke_button_disabled .cke_button_icon{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#00ffffff,endColorstr=#00ffffff)}.cke_button_off:hover,.cke_button_off:focus,.cke_button_off:active{filter:alpha(opacity = 100)}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{filter:alpha(opacity = 30)}.cke_toolbox_collapser{border:1px solid #a6a6a6}.cke_toolbox_collapser .cke_arrow{margin-top:1px}.cke_hc .cke_top,.cke_hc .cke_bottom,.cke_hc .cke_combo_button,.cke_hc a.cke_combo_button:hover,.cke_hc a.cke_combo_button:focus,.cke_hc .cke_toolgroup,.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc .cke_toolbox_collapser,.cke_hc .cke_toolbox_collapser:hover,.cke_hc .cke_panel_grouptitle{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_button__bold_icon {background: url(icons.png) no-repeat 0 -0px !important;}.cke_button__italic_icon {background: url(icons.png) no-repeat 0 -24px !important;}.cke_button__strike_icon {background: url(icons.png) no-repeat 0 -48px !important;}.cke_button__subscript_icon {background: url(icons.png) no-repeat 0 -72px !important;}.cke_button__superscript_icon {background: url(icons.png) no-repeat 0 -96px !important;}.cke_button__underline_icon {background: url(icons.png) no-repeat 0 -120px !important;}.cke_button__horizontalrule_icon {background: url(icons.png) no-repeat 0 -144px !important;}.cke_button__iframe_icon {background: url(icons.png) no-repeat 0 -168px !important;}.cke_button__image_icon {background: url(icons.png) no-repeat 0 -192px !important;}.cke_rtl .cke_button__indent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons.png) no-repeat 0 -216px !important;}.cke_ltr .cke_button__indent_icon {background: url(icons.png) no-repeat 0 -240px !important;}.cke_rtl .cke_button__outdent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons.png) no-repeat 0 -264px !important;}.cke_ltr .cke_button__outdent_icon {background: url(icons.png) no-repeat 0 -288px !important;}.cke_button__justifyblock_icon {background: url(icons.png) no-repeat 0 -312px !important;}.cke_button__justifycenter_icon {background: url(icons.png) no-repeat 0 -336px !important;}.cke_button__justifyleft_icon {background: url(icons.png) no-repeat 0 -360px !important;}.cke_button__justifyright_icon {background: url(icons.png) no-repeat 0 -384px !important;}.cke_rtl .cke_button__anchor_icon, .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons.png) no-repeat 0 -408px !important;}.cke_ltr .cke_button__anchor_icon {background: url(icons.png) no-repeat 0 -432px !important;}.cke_button__link_icon {background: url(icons.png) no-repeat 0 -456px !important;}.cke_button__unlink_icon {background: url(icons.png) no-repeat 0 -480px !important;}.cke_rtl .cke_button__bulletedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons.png) no-repeat 0 -504px !important;}.cke_ltr .cke_button__bulletedlist_icon {background: url(icons.png) no-repeat 0 -528px !important;}.cke_rtl .cke_button__numberedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons.png) no-repeat 0 -552px !important;}.cke_ltr .cke_button__numberedlist_icon {background: url(icons.png) no-repeat 0 -576px !important;}.cke_button__maximize_icon {background: url(icons.png) no-repeat 0 -600px !important;}.cke_button__removeformat_icon {background: url(icons.png) no-repeat 0 -624px !important;}.cke_rtl .cke_button__source_icon, .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons.png) no-repeat 0 -648px !important;}.cke_ltr .cke_button__source_icon {background: url(icons.png) no-repeat 0 -672px !important;}.cke_hidpi .cke_button__bold_icon {background: url(icons_hidpi.png) no-repeat 0 -0px !important;background-size: 16px !important;}.cke_hidpi .cke_button__italic_icon {background: url(icons_hidpi.png) no-repeat 0 -24px !important;background-size: 16px !important;}.cke_hidpi .cke_button__strike_icon {background: url(icons_hidpi.png) no-repeat 0 -48px !important;background-size: 16px !important;}.cke_hidpi .cke_button__subscript_icon {background: url(icons_hidpi.png) no-repeat 0 -72px !important;background-size: 16px !important;}.cke_hidpi .cke_button__superscript_icon {background: url(icons_hidpi.png) no-repeat 0 -96px !important;background-size: 16px !important;}.cke_hidpi .cke_button__underline_icon {background: url(icons_hidpi.png) no-repeat 0 -120px !important;background-size: 16px !important;}.cke_hidpi .cke_button__horizontalrule_icon {background: url(icons_hidpi.png) no-repeat 0 -144px !important;background-size: 16px !important;}.cke_hidpi .cke_button__iframe_icon {background: url(icons_hidpi.png) no-repeat 0 -168px !important;background-size: 16px !important;}.cke_hidpi .cke_button__image_icon {background: url(icons_hidpi.png) no-repeat 0 -192px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__indent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons_hidpi.png) no-repeat 0 -216px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__indent_icon,.cke_ltr.cke_hidpi .cke_button__indent_icon {background: url(icons_hidpi.png) no-repeat 0 -240px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__outdent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons_hidpi.png) no-repeat 0 -264px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__outdent_icon,.cke_ltr.cke_hidpi .cke_button__outdent_icon {background: url(icons_hidpi.png) no-repeat 0 -288px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyblock_icon {background: url(icons_hidpi.png) no-repeat 0 -312px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifycenter_icon {background: url(icons_hidpi.png) no-repeat 0 -336px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyleft_icon {background: url(icons_hidpi.png) no-repeat 0 -360px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyright_icon {background: url(icons_hidpi.png) no-repeat 0 -384px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__anchor_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons_hidpi.png) no-repeat 0 -408px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__anchor_icon,.cke_ltr.cke_hidpi .cke_button__anchor_icon {background: url(icons_hidpi.png) no-repeat 0 -432px !important;background-size: 16px !important;}.cke_hidpi .cke_button__link_icon {background: url(icons_hidpi.png) no-repeat 0 -456px !important;background-size: 16px !important;}.cke_hidpi .cke_button__unlink_icon {background: url(icons_hidpi.png) no-repeat 0 -480px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__bulletedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -504px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__bulletedlist_icon,.cke_ltr.cke_hidpi .cke_button__bulletedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -528px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__numberedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -552px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__numberedlist_icon,.cke_ltr.cke_hidpi .cke_button__numberedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -576px !important;background-size: 16px !important;}.cke_hidpi .cke_button__maximize_icon {background: url(icons_hidpi.png) no-repeat 0 -600px !important;background-size: 16px !important;}.cke_hidpi .cke_button__removeformat_icon {background: url(icons_hidpi.png) no-repeat 0 -624px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__source_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons_hidpi.png) no-repeat 0 -648px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__source_icon,.cke_ltr.cke_hidpi .cke_button__source_icon {background: url(icons_hidpi.png) no-repeat 0 -672px !important;background-size: 16px !important;} \ No newline at end of file 5.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none}.cke_reset_all,.cke_reset_all *,.cke_reset_all a,.cke_reset_all textarea{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre-wrap}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;border:1px solid #b6b6b6;padding:0;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_inner{display:block;-webkit-touch-callout:none;background:#fff;padding:0}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #b6b6b6;padding:6px 8px 2px;white-space:normal;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_float .cke_top{border:1px solid #b6b6b6;border-bottom-color:#999}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #bfbfbf;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #666 transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px;box-shadow:0 1px 0 rgba(255,255,255,.3)}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #a5a5a5;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #b6b6b6;border-bottom-color:#999;border-radius:3px;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap}.cke_panel_listItem{margin:0;padding-bottom:1px}.cke_panel_listItem a{padding:3px 4px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;border-radius:2px}* html .cke_panel_listItem a{width:100%;color:#000}*:first-child+html .cke_panel_listItem a{color:#000}.cke_panel_listItem.cke_selected a{border:1px solid #dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_hc .cke_panel_listItem a{border-style:none}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:1px 2px}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:4px 6px;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #b6b6b6;border-radius:2px 2px 0 0;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_colorblock{padding:3px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}span.cke_colorbox{width:10px;height:10px;border:#808080 1px solid;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorbox{border:#fff 1px solid;padding:2px;float:left;width:12px;height:12px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{border:#b6b6b6 1px solid;background-color:#e5e5e5}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:2px;display:block;cursor:pointer}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{border:#b6b6b6 1px solid;background-color:#e5e5e5}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;border-radius:3px;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_hc .cke_toolgroup{border:0;margin-right:10px;margin-bottom:10px}.cke_rtl .cke_toolgroup{float:right;margin-left:6px;margin-right:0}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0}.cke_ltr .cke_button:last-child,.cke_rtl .cke_button:first-child{border-radius:0 2px 2px 0}.cke_ltr .cke_button:first-child,.cke_rtl .cke_button:last-child{border-radius:2px 0 0 2px}.cke_rtl .cke_button{float:right}.cke_hc .cke_button{border:1px solid black;padding:3px 5px;margin:-2px 4px 0 -2px}a.cke_button_on{box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);background:#b5b5b5;background-image:linear-gradient(to bottom,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border-width:3px;padding:1px 3px}.cke_button_disabled .cke_button_icon{opacity:.3}.cke_hc .cke_button_disabled{opacity:.5}a.cke_button_on:hover,a.cke_button_on:focus,a.cke_button_on:active{box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{box-shadow:0 0 1px rgba(0,0,0,.3) inset;background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5)}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 1px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px -2px 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#c0c0c0;background-color:rgba(0,0,0,.2);margin:5px 2px 0;height:18px;width:1px;box-shadow:1px 0 1px rgba(255,255,255,.5)}.cke_rtl .cke_toolbar_separator{float:right;box-shadow:-1px 0 1px rgba(255,255,255,.1)}.cke_hc .cke_toolbar_separator{width:0;border-left:1px solid;margin:1px 5px 0 0}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}a.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #a6a6a6;border-bottom-color:#979797;border-radius:3px;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_toolbox_collapser:hover{background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border-left:3px solid transparent;border-right:3px solid transparent;border-bottom:3px solid #474747;border-top:3px solid transparent}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#474747}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0;margin-right:2px}.cke_menubutton{display:block}.cke_menuitem span{cursor:default}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#d3d3d3;display:block}.cke_hc .cke_menubutton{padding:2px}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#d7d8d7;opacity:.70;filter:alpha(opacity=70);padding:4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#d0d2d0}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_shortcut{color:#979797}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_on{border:1px solid #dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#eff0ef}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d3d3d3;height:1px;filter:alpha(opacity=70);opacity:.70}.cke_menuarrow{background-image:url(images/arrow.png);background-position:0 10px;background-repeat:no-repeat;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:-2px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}a.cke_combo_button{cursor:default;display:inline-block;float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;border-radius:3px;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_combo_off a.cke_combo_button:hover,.cke_combo_off a.cke_combo_button:focus{background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc');outline:0}.cke_combo_off a.cke_combo_button:active,.cke_combo_on a.cke_combo_button{border:1px solid #777;box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;background:#b5b5b5;background-image:linear-gradient(to bottom,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_combo_on a.cke_combo_button:hover,.cke_combo_on a.cke_combo_button:focus,.cke_combo_on a.cke_combo_button:active{box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}.cke_rtl .cke_combo_button{float:right;margin-left:5px;margin-right:0}.cke_hc a.cke_combo_button{padding:3px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border-width:3px;padding:1px}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5);width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 7px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{cursor:default;margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}a.cke_path_item,span.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#4c4c4c;text-shadow:0 1px 0 #fff;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#bfbfbf;color:#333;text-shadow:0 1px 0 rgba(255,255,255,.5);border-radius:2px;box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5)}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combo__fontsize .cke_combo_text{width:30px}.cke_combopanel__fontsize{width:120px}textarea.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre-wrap;border:0;padding:0;margin:0;display:block}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_notifications_area{pointer-events:none}.cke_notification{pointer-events:auto;position:relative;margin:10px;width:300px;color:white;border-radius:3px;text-align:center;opacity:.95;filter:alpha(opacity = 95);box-shadow:2px 2px 3px 0 rgba(50,50,50,0.3);-webkit-animation:fadeIn .7s;animation:fadeIn .7s}.cke_notification_message a{color:#12306f}@-webkit-keyframes fadeIn{from{opacity:.4}to{opacity:.95}}@keyframes fadeIn{from{opacity:.4}to{opacity:.95}}.cke_notification_success{background:#72b572;border:1px solid #63a563}.cke_notification_warning{background:#c83939;border:1px solid #902b2b}.cke_notification_info{background:#2e9ad0;border:1px solid #0f74a8}.cke_notification_info span.cke_notification_progress{background-color:#0f74a8;display:block;padding:0;margin:0;height:100%;overflow:hidden;position:absolute;z-index:1}.cke_notification_message{position:relative;margin:4px 23px 3px;font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:18px;z-index:4;text-overflow:ellipsis;overflow:hidden}.cke_notification_close{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:1px;right:1px;padding:0;margin:0;z-index:5;opacity:.6;filter:alpha(opacity = 60)}.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_notification_close span{display:none}.cke_notification_warning a.cke_notification_close{opacity:.8;filter:alpha(opacity = 80)}.cke_notification_warning a.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}a.cke_button_disabled,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{filter:alpha(opacity = 30)}.cke_button_disabled .cke_button_icon{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#00ffffff,endColorstr=#00ffffff)}.cke_button_off:hover,.cke_button_off:focus,.cke_button_off:active{filter:alpha(opacity = 100)}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{filter:alpha(opacity = 30)}.cke_toolbox_collapser{border:1px solid #a6a6a6}.cke_toolbox_collapser .cke_arrow{margin-top:1px}.cke_hc .cke_top,.cke_hc .cke_bottom,.cke_hc .cke_combo_button,.cke_hc a.cke_combo_button:hover,.cke_hc a.cke_combo_button:focus,.cke_hc .cke_toolgroup,.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc .cke_toolbox_collapser,.cke_hc .cke_toolbox_collapser:hover,.cke_hc .cke_panel_grouptitle{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_button__bold_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -0px !important;}.cke_button__italic_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -24px !important;}.cke_button__strike_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -48px !important;}.cke_button__subscript_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -72px !important;}.cke_button__superscript_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -96px !important;}.cke_button__underline_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -120px !important;}.cke_button__horizontalrule_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -144px !important;}.cke_button__iframe_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -168px !important;}.cke_button__image_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -192px !important;}.cke_rtl .cke_button__indent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -216px !important;}.cke_ltr .cke_button__indent_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -240px !important;}.cke_rtl .cke_button__outdent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -264px !important;}.cke_ltr .cke_button__outdent_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -288px !important;}.cke_button__justifyblock_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -312px !important;}.cke_button__justifycenter_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -336px !important;}.cke_button__justifyleft_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -360px !important;}.cke_button__justifyright_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -384px !important;}.cke_rtl .cke_button__anchor_icon, .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -408px !important;}.cke_ltr .cke_button__anchor_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -432px !important;}.cke_button__link_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -456px !important;}.cke_button__unlink_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -480px !important;}.cke_rtl .cke_button__bulletedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -504px !important;}.cke_ltr .cke_button__bulletedlist_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -528px !important;}.cke_rtl .cke_button__numberedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -552px !important;}.cke_ltr .cke_button__numberedlist_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -576px !important;}.cke_button__maximize_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -600px !important;}.cke_button__removeformat_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -624px !important;}.cke_rtl .cke_button__source_icon, .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -648px !important;}.cke_ltr .cke_button__source_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -672px !important;}.cke_rtl .cke_button__copy_icon, .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -696px !important;}.cke_ltr .cke_button__copy_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -720px !important;}.cke_rtl .cke_button__cut_icon, .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -744px !important;}.cke_ltr .cke_button__cut_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -768px !important;}.cke_rtl .cke_button__paste_icon, .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -792px !important;}.cke_ltr .cke_button__paste_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -816px !important;}.cke_button__oembed_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -840px !important;}.cke_button__html5video_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -864px !important;}.cke_hidpi .cke_button__bold_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -0px !important;background-size: 16px !important;}.cke_hidpi .cke_button__italic_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -24px !important;background-size: 16px !important;}.cke_hidpi .cke_button__strike_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -48px !important;background-size: 16px !important;}.cke_hidpi .cke_button__subscript_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -72px !important;background-size: 16px !important;}.cke_hidpi .cke_button__superscript_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -96px !important;background-size: 16px !important;}.cke_hidpi .cke_button__underline_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -120px !important;background-size: 16px !important;}.cke_hidpi .cke_button__horizontalrule_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -144px !important;background-size: 16px !important;}.cke_hidpi .cke_button__iframe_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -168px !important;background-size: 16px !important;}.cke_hidpi .cke_button__image_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -192px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__indent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -216px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__indent_icon,.cke_ltr.cke_hidpi .cke_button__indent_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -240px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__outdent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -264px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__outdent_icon,.cke_ltr.cke_hidpi .cke_button__outdent_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -288px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyblock_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -312px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifycenter_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -336px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyleft_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -360px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyright_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -384px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__anchor_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -408px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__anchor_icon,.cke_ltr.cke_hidpi .cke_button__anchor_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -432px !important;background-size: 16px !important;}.cke_hidpi .cke_button__link_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -456px !important;background-size: 16px !important;}.cke_hidpi .cke_button__unlink_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -480px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__bulletedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -504px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__bulletedlist_icon,.cke_ltr.cke_hidpi .cke_button__bulletedlist_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -528px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__numberedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -552px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__numberedlist_icon,.cke_ltr.cke_hidpi .cke_button__numberedlist_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -576px !important;background-size: 16px !important;}.cke_hidpi .cke_button__maximize_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -600px !important;background-size: 16px !important;}.cke_hidpi .cke_button__removeformat_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -624px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__source_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -648px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__source_icon,.cke_ltr.cke_hidpi .cke_button__source_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -672px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__copy_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -696px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__copy_icon,.cke_ltr.cke_hidpi .cke_button__copy_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -720px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__cut_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -744px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__cut_icon,.cke_ltr.cke_hidpi .cke_button__cut_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -768px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__paste_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -792px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__paste_icon,.cke_ltr.cke_hidpi .cke_button__paste_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -816px !important;background-size: 16px !important;}.cke_hidpi .cke_button__oembed_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -840px !important;background-size: 16px !important;}.cke_hidpi .cke_button__html5video_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -1728px !important;} \ No newline at end of file
diff --git a/release/skins/moono/editor_ie7.css b/release/skins/moono/editor_ie7.css
index bcb9e3d..1a305f7 100644
--- a/release/skins/moono/editor_ie7.css
+++ b/release/skins/moono/editor_ie7.css
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none}.cke_reset_all,.cke_reset_all *,.cke_reset_all a,.cke_reset_all textarea{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre-wrap}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;border:1px solid #b6b6b6;padding:0;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_inner{display:block;-webkit-touch-callout:none;background:#fff;padding:0}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #b6b6b6;padding:6px 8px 2px;white-space:normal;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_float .cke_top{border:1px solid #b6b6b6;border-bottom-color:#999}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #bfbfbf;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #666 transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px;box-shadow:0 1px 0 rgba(255,255,255,.3)}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #a5a5a5;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #b6b6b6;border-bottom-color:#999;border-radius:3px;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap}.cke_panel_listItem{margin:0;padding-bottom:1px}.cke_panel_listItem a{padding:3px 4px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;border-radius:2px}* html .cke_panel_listItem a{width:100%;color:#000}*:first-child+html .cke_panel_listItem a{color:#000}.cke_panel_listItem.cke_selected a{border:1px solid #dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_hc .cke_panel_listItem a{border-style:none}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:1px 2px}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:4px 6px;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #b6b6b6;border-radius:2px 2px 0 0;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_colorblock{padding:3px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}span.cke_colorbox{width:10px;height:10px;border:#808080 1px solid;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorbox{border:#fff 1px solid;padding:2px;float:left;width:12px;height:12px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{border:#b6b6b6 1px solid;background-color:#e5e5e5}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:2px;display:block;cursor:pointer}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{border:#b6b6b6 1px solid;background-color:#e5e5e5}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;border-radius:3px;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_hc .cke_toolgroup{border:0;margin-right:10px;margin-bottom:10px}.cke_rtl .cke_toolgroup{float:right;margin-left:6px;margin-right:0}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0}.cke_ltr .cke_button:last-child,.cke_rtl .cke_button:first-child{border-radius:0 2px 2px 0}.cke_ltr .cke_button:first-child,.cke_rtl .cke_button:last-child{border-radius:2px 0 0 2px}.cke_rtl .cke_button{float:right}.cke_hc .cke_button{border:1px solid black;padding:3px 5px;margin:-2px 4px 0 -2px}a.cke_button_on{box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);background:#b5b5b5;background-image:linear-gradient(to bottom,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border-width:3px;padding:1px 3px}.cke_button_disabled .cke_button_icon{opacity:.3}.cke_hc .cke_button_disabled{opacity:.5}a.cke_button_on:hover,a.cke_button_on:focus,a.cke_button_on:active{box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{box-shadow:0 0 1px rgba(0,0,0,.3) inset;background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5)}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 1px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px -2px 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#c0c0c0;background-color:rgba(0,0,0,.2);margin:5px 2px 0;height:18px;width:1px;box-shadow:1px 0 1px rgba(255,255,255,.5)}.cke_rtl .cke_toolbar_separator{float:right;box-shadow:-1px 0 1px rgba(255,255,255,.1)}.cke_hc .cke_toolbar_separator{width:0;border-left:1px solid;margin:1px 5px 0 0}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}a.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #a6a6a6;border-bottom-color:#979797;border-radius:3px;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_toolbox_collapser:hover{background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border-left:3px solid transparent;border-right:3px solid transparent;border-bottom:3px solid #474747;border-top:3px solid transparent}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#474747}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0;margin-right:2px}.cke_menubutton{display:block}.cke_menuitem span{cursor:default}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#d3d3d3;display:block}.cke_hc .cke_menubutton{padding:2px}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#d7d8d7;opacity:.70;filter:alpha(opacity=70);padding:4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#d0d2d0}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_on{border:1px solid #dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#eff0ef}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d3d3d3;height:1px;filter:alpha(opacity=70);opacity:.70}.cke_menuarrow{background-image:url(images/arrow.png);background-position:0 10px;background-repeat:no-repeat;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:-2px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}a.cke_combo_button{cursor:default;display:inline-block;float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;border-radius:3px;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_combo_off a.cke_combo_button:hover,.cke_combo_off a.cke_combo_button:focus{background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc');outline:0}.cke_combo_off a.cke_combo_button:active,.cke_combo_on a.cke_combo_button{border:1px solid #777;box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;background:#b5b5b5;background-image:linear-gradient(to bottom,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_combo_on a.cke_combo_button:hover,.cke_combo_on a.cke_combo_button:focus,.cke_combo_on a.cke_combo_button:active{box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}.cke_rtl .cke_combo_button{float:right;margin-left:5px;margin-right:0}.cke_hc a.cke_combo_button{padding:3px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border-width:3px;padding:1px}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5);width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 7px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{cursor:default;margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}a.cke_path_item,span.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#4c4c4c;text-shadow:0 1px 0 #fff;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#bfbfbf;color:#333;text-shadow:0 1px 0 rgba(255,255,255,.5);border-radius:2px;box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5)}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combo__fontsize .cke_combo_text{width:30px}.cke_combopanel__fontsize{width:120px}textarea.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre-wrap;border:0;padding:0;margin:0;display:block}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_notifications_area{pointer-events:none}.cke_notification{pointer-events:auto;position:relative;margin:10px;width:300px;color:white;border-radius:3px;text-align:center;opacity:.95;filter:alpha(opacity = 95);box-shadow:2px 2px 3px 0 rgba(50,50,50,0.3);-webkit-animation:fadeIn .7s;animation:fadeIn .7s}.cke_notification_message a{color:#12306f}@-webkit-keyframes fadeIn{from{opacity:.4}to{opacity:.95}}@keyframes fadeIn{from{opacity:.4}to{opacity:.95}}.cke_notification_success{background:#72b572;border:1px solid #63a563}.cke_notification_warning{background:#c83939;border:1px solid #902b2b}.cke_notification_info{background:#2e9ad0;border:1px solid #0f74a8}.cke_notification_info span.cke_notification_progress{background-color:#0f74a8;display:block;padding:0;margin:0;height:100%;overflow:hidden;position:absolute;z-index:1}.cke_notification_message{position:relative;margin:4px 23px 3px;font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:18px;z-index:4;text-overflow:ellipsis;overflow:hidden}.cke_notification_close{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:1px;right:1px;padding:0;margin:0;z-index:5;opacity:.6;filter:alpha(opacity = 60)}.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_notification_close span{display:none}.cke_notification_warning a.cke_notification_close{opacity:.8;filter:alpha(opacity = 80)}.cke_notification_warning a.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}a.cke_button_disabled,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{filter:alpha(opacity = 30)}.cke_button_disabled .cke_button_icon{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#00ffffff,endColorstr=#00ffffff)}.cke_button_off:hover,.cke_button_off:focus,.cke_button_off:active{filter:alpha(opacity = 100)}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{filter:alpha(opacity = 30)}.cke_toolbox_collapser{border:1px solid #a6a6a6}.cke_toolbox_collapser .cke_arrow{margin-top:1px}.cke_hc .cke_top,.cke_hc .cke_bottom,.cke_hc .cke_combo_button,.cke_hc a.cke_combo_button:hover,.cke_hc a.cke_combo_button:focus,.cke_hc .cke_toolgroup,.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc .cke_toolbox_collapser,.cke_hc .cke_toolbox_collapser:hover,.cke_hc .cke_panel_grouptitle{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_rtl .cke_toolgroup,.cke_rtl .cke_toolbar_separator,.cke_rtl .cke_button,.cke_rtl .cke_button *,.cke_rtl .cke_combo,.cke_rtl .cke_combo *,.cke_rtl .cke_path_item,.cke_rtl .cke_path_item *,.cke_rtl .cke_path_empty{float:none}.cke_rtl .cke_toolgroup,.cke_rtl .cke_toolbar_separator,.cke_rtl .cke_combo_button,.cke_rtl .cke_combo_button *,.cke_rtl .cke_button,.cke_rtl .cke_button_icon{display:inline-block;vertical-align:top}.cke_toolbox{display:inline-block;padding-bottom:5px;height:100%}.cke_rtl .cke_toolbox{padding-bottom:0}.cke_toolbar{margin-bottom:5px}.cke_rtl .cke_toolbar{margin-bottom:0}.cke_toolgroup{height:26px}.cke_toolgroup,.cke_combo{position:relative}a.cke_button{float:none;vertical-align:top}.cke_toolbar_separator{display:inline-block;float:none;vertical-align:top;background-color:#c0c0c0}.cke_toolbox_collapser .cke_arrow{margin-top:0}.cke_toolbox_collapser .cke_arrow{border-width:4px}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{border-width:3px}.cke_rtl .cke_button_arrow{padding-top:8px;margin-right:2px}.cke_rtl .cke_combo_inlinelabel{display:table-cell;vertical-align:middle}.cke_menubutton{display:block;height:24px}.cke_menubutton_inner{display:block;position:relative}.cke_menubutton_icon{height:16px;width:16px}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:inline-block}.cke_menubutton_label{width:auto;vertical-align:top;line-height:24px;height:24px;margin:0 10px 0 0}.cke_menuarrow{width:5px;height:6px;padding:0;position:absolute;right:8px;top:10px;background-position:0 0}.cke_rtl .cke_menubutton_icon{position:absolute;right:0;top:0}.cke_rtl .cke_menubutton_label{float:right;clear:both;margin:0 24px 0 10px}.cke_hc .cke_rtl .cke_menubutton_label{margin-right:0}.cke_rtl .cke_menuarrow{left:8px;right:auto;background-position:0 -24px}.cke_hc .cke_menuarrow{top:5px;padding:0 5px}.cke_rtl input.cke_dialog_ui_input_text,.cke_rtl input.cke_dialog_ui_input_password{position:relative}.cke_wysiwyg_div{padding-top:0!important;padding-bottom:0!important}.cke_button__bold_icon {background: url(icons.png) no-repeat 0 -0px !important;}.cke_button__italic_icon {background: url(icons.png) no-repeat 0 -24px !important;}.cke_button__strike_icon {background: url(icons.png) no-repeat 0 -48px !important;}.cke_button__subscript_icon {background: url(icons.png) no-repeat 0 -72px !important;}.cke_button__superscript_icon {background: url(icons.png) no-repeat 0 -96px !important;}.cke_button__underline_icon {background: url(icons.png) no-repeat 0 -120px !important;}.cke_button__horizontalrule_icon {background: url(icons.png) no-repeat 0 -144px !important;}.cke_button__iframe_icon {background: url(icons.png) no-repeat 0 -168px !important;}.cke_button__image_icon {background: url(icons.png) no-repeat 0 -192px !important;}.cke_rtl .cke_button__indent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons.png) no-repeat 0 -216px !important;}.cke_ltr .cke_button__indent_icon {background: url(icons.png) no-repeat 0 -240px !important;}.cke_rtl .cke_button__outdent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons.png) no-repeat 0 -264px !important;}.cke_ltr .cke_button__outdent_icon {background: url(icons.png) no-repeat 0 -288px !important;}.cke_button__justifyblock_icon {background: url(icons.png) no-repeat 0 -312px !important;}.cke_button__justifycenter_icon {background: url(icons.png) no-repeat 0 -336px !important;}.cke_button__justifyleft_icon {background: url(icons.png) no-repeat 0 -360px !important;}.cke_button__justifyright_icon {background: url(icons.png) no-repeat 0 -384px !important;}.cke_rtl .cke_button__anchor_icon, .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons.png) no-repeat 0 -408px !important;}.cke_ltr .cke_button__anchor_icon {background: url(icons.png) no-repeat 0 -432px !important;}.cke_button__link_icon {background: url(icons.png) no-repeat 0 -456px !important;}.cke_button__unlink_icon {background: url(icons.png) no-repeat 0 -480px !important;}.cke_rtl .cke_button__bulletedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons.png) no-repeat 0 -504px !important;}.cke_ltr .cke_button__bulletedlist_icon {background: url(icons.png) no-repeat 0 -528px !important;}.cke_rtl .cke_button__numberedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons.png) no-repeat 0 -552px !important;}.cke_ltr .cke_button__numberedlist_icon {background: url(icons.png) no-repeat 0 -576px !important;}.cke_button__maximize_icon {background: url(icons.png) no-repeat 0 -600px !important;}.cke_button__removeformat_icon {background: url(icons.png) no-repeat 0 -624px !important;}.cke_rtl .cke_button__source_icon, .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons.png) no-repeat 0 -648px !important;}.cke_ltr .cke_button__source_icon {background: url(icons.png) no-repeat 0 -672px !important;}.cke_hidpi .cke_button__bold_icon {background: url(icons_hidpi.png) no-repeat 0 -0px !important;background-size: 16px !important;}.cke_hidpi .cke_button__italic_icon {background: url(icons_hidpi.png) no-repeat 0 -24px !important;background-size: 16px !important;}.cke_hidpi .cke_button__strike_icon {background: url(icons_hidpi.png) no-repeat 0 -48px !important;background-size: 16px !important;}.cke_hidpi .cke_button__subscript_icon {background: url(icons_hidpi.png) no-repeat 0 -72px !important;background-size: 16px !important;}.cke_hidpi .cke_button__superscript_icon {background: url(icons_hidpi.png) no-repeat 0 -96px !important;background-size: 16px !important;}.cke_hidpi .cke_button__underline_icon {background: url(icons_hidpi.png) no-repeat 0 -120px !important;background-size: 16px !important;}.cke_hidpi .cke_button__horizontalrule_icon {background: url(icons_hidpi.png) no-repeat 0 -144px !important;background-size: 16px !important;}.cke_hidpi .cke_button__iframe_icon {background: url(icons_hidpi.png) no-repeat 0 -168px !important;background-size: 16px !important;}.cke_hidpi .cke_button__image_icon {background: url(icons_hidpi.png) no-repeat 0 -192px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__indent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons_hidpi.png) no-repeat 0 -216px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__indent_icon,.cke_ltr.cke_hidpi .cke_button__indent_icon {background: url(icons_hidpi.png) no-repeat 0 -240px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__outdent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons_hidpi.png) no-repeat 0 -264px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__outdent_icon,.cke_ltr.cke_hidpi .cke_button__outdent_icon {background: url(icons_hidpi.png) no-repeat 0 -288px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyblock_icon {background: url(icons_hidpi.png) no-repeat 0 -312px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifycenter_icon {background: url(icons_hidpi.png) no-repeat 0 -336px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyleft_icon {background: url(icons_hidpi.png) no-repeat 0 -360px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyright_icon {background: url(icons_hidpi.png) no-repeat 0 -384px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__anchor_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons_hidpi.png) no-repeat 0 -408px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__anchor_icon,.cke_ltr.cke_hidpi .cke_button__anchor_icon {background: url(icons_hidpi.png) no-repeat 0 -432px !important;background-size: 16px !important;}.cke_hidpi .cke_button__link_icon {background: url(icons_hidpi.png) no-repeat 0 -456px !important;background-size: 16px !important;}.cke_hidpi .cke_button__unlink_icon {background: url(icons_hidpi.png) no-repeat 0 -480px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__bulletedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -504px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__bulletedlist_icon,.cke_ltr.cke_hidpi .cke_button__bulletedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -528px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__numberedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -552px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__numberedlist_icon,.cke_ltr.cke_hidpi .cke_button__numberedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -576px !important;background-size: 16px !important;}.cke_hidpi .cke_button__maximize_icon {background: url(icons_hidpi.png) no-repeat 0 -600px !important;background-size: 16px !important;}.cke_hidpi .cke_button__removeformat_icon {background: url(icons_hidpi.png) no-repeat 0 -624px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__source_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons_hidpi.png) no-repeat 0 -648px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__source_icon,.cke_ltr.cke_hidpi .cke_button__source_icon {background: url(icons_hidpi.png) no-repeat 0 -672px !important;background-size: 16px !important;} \ No newline at end of file 5.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none}.cke_reset_all,.cke_reset_all *,.cke_reset_all a,.cke_reset_all textarea{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre-wrap}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;border:1px solid #b6b6b6;padding:0;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_inner{display:block;-webkit-touch-callout:none;background:#fff;padding:0}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #b6b6b6;padding:6px 8px 2px;white-space:normal;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_float .cke_top{border:1px solid #b6b6b6;border-bottom-color:#999}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #bfbfbf;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #666 transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px;box-shadow:0 1px 0 rgba(255,255,255,.3)}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #a5a5a5;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #b6b6b6;border-bottom-color:#999;border-radius:3px;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap}.cke_panel_listItem{margin:0;padding-bottom:1px}.cke_panel_listItem a{padding:3px 4px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;border-radius:2px}* html .cke_panel_listItem a{width:100%;color:#000}*:first-child+html .cke_panel_listItem a{color:#000}.cke_panel_listItem.cke_selected a{border:1px solid #dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_hc .cke_panel_listItem a{border-style:none}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:1px 2px}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:4px 6px;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #b6b6b6;border-radius:2px 2px 0 0;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_colorblock{padding:3px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}span.cke_colorbox{width:10px;height:10px;border:#808080 1px solid;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorbox{border:#fff 1px solid;padding:2px;float:left;width:12px;height:12px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{border:#b6b6b6 1px solid;background-color:#e5e5e5}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:2px;display:block;cursor:pointer}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{border:#b6b6b6 1px solid;background-color:#e5e5e5}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;border-radius:3px;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_hc .cke_toolgroup{border:0;margin-right:10px;margin-bottom:10px}.cke_rtl .cke_toolgroup{float:right;margin-left:6px;margin-right:0}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0}.cke_ltr .cke_button:last-child,.cke_rtl .cke_button:first-child{border-radius:0 2px 2px 0}.cke_ltr .cke_button:first-child,.cke_rtl .cke_button:last-child{border-radius:2px 0 0 2px}.cke_rtl .cke_button{float:right}.cke_hc .cke_button{border:1px solid black;padding:3px 5px;margin:-2px 4px 0 -2px}a.cke_button_on{box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);background:#b5b5b5;background-image:linear-gradient(to bottom,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border-width:3px;padding:1px 3px}.cke_button_disabled .cke_button_icon{opacity:.3}.cke_hc .cke_button_disabled{opacity:.5}a.cke_button_on:hover,a.cke_button_on:focus,a.cke_button_on:active{box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{box-shadow:0 0 1px rgba(0,0,0,.3) inset;background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5)}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 1px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px -2px 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#c0c0c0;background-color:rgba(0,0,0,.2);margin:5px 2px 0;height:18px;width:1px;box-shadow:1px 0 1px rgba(255,255,255,.5)}.cke_rtl .cke_toolbar_separator{float:right;box-shadow:-1px 0 1px rgba(255,255,255,.1)}.cke_hc .cke_toolbar_separator{width:0;border-left:1px solid;margin:1px 5px 0 0}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}a.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #a6a6a6;border-bottom-color:#979797;border-radius:3px;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_toolbox_collapser:hover{background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border-left:3px solid transparent;border-right:3px solid transparent;border-bottom:3px solid #474747;border-top:3px solid transparent}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#474747}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0;margin-right:2px}.cke_menubutton{display:block}.cke_menuitem span{cursor:default}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#d3d3d3;display:block}.cke_hc .cke_menubutton{padding:2px}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#d7d8d7;opacity:.70;filter:alpha(opacity=70);padding:4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#d0d2d0}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_shortcut{color:#979797}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_on{border:1px solid #dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#eff0ef}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d3d3d3;height:1px;filter:alpha(opacity=70);opacity:.70}.cke_menuarrow{background-image:url(images/arrow.png);background-position:0 10px;background-repeat:no-repeat;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:-2px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}a.cke_combo_button{cursor:default;display:inline-block;float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;border-radius:3px;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_combo_off a.cke_combo_button:hover,.cke_combo_off a.cke_combo_button:focus{background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc');outline:0}.cke_combo_off a.cke_combo_button:active,.cke_combo_on a.cke_combo_button{border:1px solid #777;box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;background:#b5b5b5;background-image:linear-gradient(to bottom,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_combo_on a.cke_combo_button:hover,.cke_combo_on a.cke_combo_button:focus,.cke_combo_on a.cke_combo_button:active{box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}.cke_rtl .cke_combo_button{float:right;margin-left:5px;margin-right:0}.cke_hc a.cke_combo_button{padding:3px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border-width:3px;padding:1px}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5);width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 7px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{cursor:default;margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}a.cke_path_item,span.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#4c4c4c;text-shadow:0 1px 0 #fff;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#bfbfbf;color:#333;text-shadow:0 1px 0 rgba(255,255,255,.5);border-radius:2px;box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5)}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combo__fontsize .cke_combo_text{width:30px}.cke_combopanel__fontsize{width:120px}textarea.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre-wrap;border:0;padding:0;margin:0;display:block}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_notifications_area{pointer-events:none}.cke_notification{pointer-events:auto;position:relative;margin:10px;width:300px;color:white;border-radius:3px;text-align:center;opacity:.95;filter:alpha(opacity = 95);box-shadow:2px 2px 3px 0 rgba(50,50,50,0.3);-webkit-animation:fadeIn .7s;animation:fadeIn .7s}.cke_notification_message a{color:#12306f}@-webkit-keyframes fadeIn{from{opacity:.4}to{opacity:.95}}@keyframes fadeIn{from{opacity:.4}to{opacity:.95}}.cke_notification_success{background:#72b572;border:1px solid #63a563}.cke_notification_warning{background:#c83939;border:1px solid #902b2b}.cke_notification_info{background:#2e9ad0;border:1px solid #0f74a8}.cke_notification_info span.cke_notification_progress{background-color:#0f74a8;display:block;padding:0;margin:0;height:100%;overflow:hidden;position:absolute;z-index:1}.cke_notification_message{position:relative;margin:4px 23px 3px;font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:18px;z-index:4;text-overflow:ellipsis;overflow:hidden}.cke_notification_close{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:1px;right:1px;padding:0;margin:0;z-index:5;opacity:.6;filter:alpha(opacity = 60)}.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_notification_close span{display:none}.cke_notification_warning a.cke_notification_close{opacity:.8;filter:alpha(opacity = 80)}.cke_notification_warning a.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}a.cke_button_disabled,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{filter:alpha(opacity = 30)}.cke_button_disabled .cke_button_icon{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#00ffffff,endColorstr=#00ffffff)}.cke_button_off:hover,.cke_button_off:focus,.cke_button_off:active{filter:alpha(opacity = 100)}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{filter:alpha(opacity = 30)}.cke_toolbox_collapser{border:1px solid #a6a6a6}.cke_toolbox_collapser .cke_arrow{margin-top:1px}.cke_hc .cke_top,.cke_hc .cke_bottom,.cke_hc .cke_combo_button,.cke_hc a.cke_combo_button:hover,.cke_hc a.cke_combo_button:focus,.cke_hc .cke_toolgroup,.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc .cke_toolbox_collapser,.cke_hc .cke_toolbox_collapser:hover,.cke_hc .cke_panel_grouptitle{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_rtl .cke_toolgroup,.cke_rtl .cke_toolbar_separator,.cke_rtl .cke_button,.cke_rtl .cke_button *,.cke_rtl .cke_combo,.cke_rtl .cke_combo *,.cke_rtl .cke_path_item,.cke_rtl .cke_path_item *,.cke_rtl .cke_path_empty{float:none}.cke_rtl .cke_toolgroup,.cke_rtl .cke_toolbar_separator,.cke_rtl .cke_combo_button,.cke_rtl .cke_combo_button *,.cke_rtl .cke_button,.cke_rtl .cke_button_icon{display:inline-block;vertical-align:top}.cke_toolbox{display:inline-block;padding-bottom:5px;height:100%}.cke_rtl .cke_toolbox{padding-bottom:0}.cke_toolbar{margin-bottom:5px}.cke_rtl .cke_toolbar{margin-bottom:0}.cke_toolgroup{height:26px}.cke_toolgroup,.cke_combo{position:relative}a.cke_button{float:none;vertical-align:top}.cke_toolbar_separator{display:inline-block;float:none;vertical-align:top;background-color:#c0c0c0}.cke_toolbox_collapser .cke_arrow{margin-top:0}.cke_toolbox_collapser .cke_arrow{border-width:4px}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{border-width:3px}.cke_rtl .cke_button_arrow{padding-top:8px;margin-right:2px}.cke_rtl .cke_combo_inlinelabel{display:table-cell;vertical-align:middle}.cke_menubutton{display:block;height:24px}.cke_menubutton_inner{display:block;position:relative}.cke_menubutton_icon{height:16px;width:16px}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:inline-block}.cke_menubutton_label{width:auto;vertical-align:top;line-height:24px;height:24px;margin:0 10px 0 0}.cke_menuarrow{width:5px;height:6px;padding:0;position:absolute;right:8px;top:10px;background-position:0 0}.cke_rtl .cke_menubutton_icon{position:absolute;right:0;top:0}.cke_rtl .cke_menubutton_label{float:right;clear:both;margin:0 24px 0 10px}.cke_hc .cke_rtl .cke_menubutton_label{margin-right:0}.cke_rtl .cke_menuarrow{left:8px;right:auto;background-position:0 -24px}.cke_hc .cke_menuarrow{top:5px;padding:0 5px}.cke_rtl input.cke_dialog_ui_input_text,.cke_rtl input.cke_dialog_ui_input_password{position:relative}.cke_wysiwyg_div{padding-top:0!important;padding-bottom:0!important}.cke_button__bold_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -0px !important;}.cke_button__italic_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -24px !important;}.cke_button__strike_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -48px !important;}.cke_button__subscript_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -72px !important;}.cke_button__superscript_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -96px !important;}.cke_button__underline_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -120px !important;}.cke_button__horizontalrule_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -144px !important;}.cke_button__iframe_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -168px !important;}.cke_button__image_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -192px !important;}.cke_rtl .cke_button__indent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -216px !important;}.cke_ltr .cke_button__indent_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -240px !important;}.cke_rtl .cke_button__outdent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -264px !important;}.cke_ltr .cke_button__outdent_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -288px !important;}.cke_button__justifyblock_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -312px !important;}.cke_button__justifycenter_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -336px !important;}.cke_button__justifyleft_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -360px !important;}.cke_button__justifyright_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -384px !important;}.cke_rtl .cke_button__anchor_icon, .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -408px !important;}.cke_ltr .cke_button__anchor_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -432px !important;}.cke_button__link_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -456px !important;}.cke_button__unlink_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -480px !important;}.cke_rtl .cke_button__bulletedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -504px !important;}.cke_ltr .cke_button__bulletedlist_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -528px !important;}.cke_rtl .cke_button__numberedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -552px !important;}.cke_ltr .cke_button__numberedlist_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -576px !important;}.cke_button__maximize_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -600px !important;}.cke_button__removeformat_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -624px !important;}.cke_rtl .cke_button__source_icon, .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -648px !important;}.cke_ltr .cke_button__source_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -672px !important;}.cke_rtl .cke_button__copy_icon, .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -696px !important;}.cke_ltr .cke_button__copy_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -720px !important;}.cke_rtl .cke_button__cut_icon, .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -744px !important;}.cke_ltr .cke_button__cut_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -768px !important;}.cke_rtl .cke_button__paste_icon, .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -792px !important;}.cke_ltr .cke_button__paste_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -816px !important;}.cke_button__oembed_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -840px !important;}.cke_button__html5video_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -864px !important;}.cke_hidpi .cke_button__bold_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -0px !important;background-size: 16px !important;}.cke_hidpi .cke_button__italic_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -24px !important;background-size: 16px !important;}.cke_hidpi .cke_button__strike_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -48px !important;background-size: 16px !important;}.cke_hidpi .cke_button__subscript_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -72px !important;background-size: 16px !important;}.cke_hidpi .cke_button__superscript_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -96px !important;background-size: 16px !important;}.cke_hidpi .cke_button__underline_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -120px !important;background-size: 16px !important;}.cke_hidpi .cke_button__horizontalrule_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -144px !important;background-size: 16px !important;}.cke_hidpi .cke_button__iframe_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -168px !important;background-size: 16px !important;}.cke_hidpi .cke_button__image_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -192px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__indent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -216px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__indent_icon,.cke_ltr.cke_hidpi .cke_button__indent_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -240px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__outdent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -264px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__outdent_icon,.cke_ltr.cke_hidpi .cke_button__outdent_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -288px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyblock_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -312px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifycenter_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -336px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyleft_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -360px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyright_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -384px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__anchor_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -408px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__anchor_icon,.cke_ltr.cke_hidpi .cke_button__anchor_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -432px !important;background-size: 16px !important;}.cke_hidpi .cke_button__link_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -456px !important;background-size: 16px !important;}.cke_hidpi .cke_button__unlink_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -480px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__bulletedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -504px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__bulletedlist_icon,.cke_ltr.cke_hidpi .cke_button__bulletedlist_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -528px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__numberedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -552px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__numberedlist_icon,.cke_ltr.cke_hidpi .cke_button__numberedlist_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -576px !important;background-size: 16px !important;}.cke_hidpi .cke_button__maximize_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -600px !important;background-size: 16px !important;}.cke_hidpi .cke_button__removeformat_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -624px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__source_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -648px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__source_icon,.cke_ltr.cke_hidpi .cke_button__source_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -672px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__copy_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -696px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__copy_icon,.cke_ltr.cke_hidpi .cke_button__copy_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -720px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__cut_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -744px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__cut_icon,.cke_ltr.cke_hidpi .cke_button__cut_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -768px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__paste_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -792px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__paste_icon,.cke_ltr.cke_hidpi .cke_button__paste_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -816px !important;background-size: 16px !important;}.cke_hidpi .cke_button__oembed_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -840px !important;background-size: 16px !important;}.cke_hidpi .cke_button__html5video_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -1728px !important;} \ No newline at end of file
diff --git a/release/skins/moono/editor_ie8.css b/release/skins/moono/editor_ie8.css
index 5e36aeb..4bc5ea5 100644
--- a/release/skins/moono/editor_ie8.css
+++ b/release/skins/moono/editor_ie8.css
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none}.cke_reset_all,.cke_reset_all *,.cke_reset_all a,.cke_reset_all textarea{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre-wrap}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;border:1px solid #b6b6b6;padding:0;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_inner{display:block;-webkit-touch-callout:none;background:#fff;padding:0}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #b6b6b6;padding:6px 8px 2px;white-space:normal;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_float .cke_top{border:1px solid #b6b6b6;border-bottom-color:#999}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #bfbfbf;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #666 transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px;box-shadow:0 1px 0 rgba(255,255,255,.3)}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #a5a5a5;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #b6b6b6;border-bottom-color:#999;border-radius:3px;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap}.cke_panel_listItem{margin:0;padding-bottom:1px}.cke_panel_listItem a{padding:3px 4px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;border-radius:2px}* html .cke_panel_listItem a{width:100%;color:#000}*:first-child+html .cke_panel_listItem a{color:#000}.cke_panel_listItem.cke_selected a{border:1px solid #dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_hc .cke_panel_listItem a{border-style:none}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:1px 2px}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:4px 6px;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #b6b6b6;border-radius:2px 2px 0 0;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_colorblock{padding:3px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}span.cke_colorbox{width:10px;height:10px;border:#808080 1px solid;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorbox{border:#fff 1px solid;padding:2px;float:left;width:12px;height:12px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{border:#b6b6b6 1px solid;background-color:#e5e5e5}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:2px;display:block;cursor:pointer}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{border:#b6b6b6 1px solid;background-color:#e5e5e5}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;border-radius:3px;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_hc .cke_toolgroup{border:0;margin-right:10px;margin-bottom:10px}.cke_rtl .cke_toolgroup{float:right;margin-left:6px;margin-right:0}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0}.cke_ltr .cke_button:last-child,.cke_rtl .cke_button:first-child{border-radius:0 2px 2px 0}.cke_ltr .cke_button:first-child,.cke_rtl .cke_button:last-child{border-radius:2px 0 0 2px}.cke_rtl .cke_button{float:right}.cke_hc .cke_button{border:1px solid black;padding:3px 5px;margin:-2px 4px 0 -2px}a.cke_button_on{box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);background:#b5b5b5;background-image:linear-gradient(to bottom,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border-width:3px;padding:1px 3px}.cke_button_disabled .cke_button_icon{opacity:.3}.cke_hc .cke_button_disabled{opacity:.5}a.cke_button_on:hover,a.cke_button_on:focus,a.cke_button_on:active{box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{box-shadow:0 0 1px rgba(0,0,0,.3) inset;background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5)}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 1px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px -2px 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#c0c0c0;background-color:rgba(0,0,0,.2);margin:5px 2px 0;height:18px;width:1px;box-shadow:1px 0 1px rgba(255,255,255,.5)}.cke_rtl .cke_toolbar_separator{float:right;box-shadow:-1px 0 1px rgba(255,255,255,.1)}.cke_hc .cke_toolbar_separator{width:0;border-left:1px solid;margin:1px 5px 0 0}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}a.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #a6a6a6;border-bottom-color:#979797;border-radius:3px;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_toolbox_collapser:hover{background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border-left:3px solid transparent;border-right:3px solid transparent;border-bottom:3px solid #474747;border-top:3px solid transparent}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#474747}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0;margin-right:2px}.cke_menubutton{display:block}.cke_menuitem span{cursor:default}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#d3d3d3;display:block}.cke_hc .cke_menubutton{padding:2px}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#d7d8d7;opacity:.70;filter:alpha(opacity=70);padding:4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#d0d2d0}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_on{border:1px solid #dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#eff0ef}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d3d3d3;height:1px;filter:alpha(opacity=70);opacity:.70}.cke_menuarrow{background-image:url(images/arrow.png);background-position:0 10px;background-repeat:no-repeat;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:-2px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}a.cke_combo_button{cursor:default;display:inline-block;float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;border-radius:3px;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_combo_off a.cke_combo_button:hover,.cke_combo_off a.cke_combo_button:focus{background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc');outline:0}.cke_combo_off a.cke_combo_button:active,.cke_combo_on a.cke_combo_button{border:1px solid #777;box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;background:#b5b5b5;background-image:linear-gradient(to bottom,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_combo_on a.cke_combo_button:hover,.cke_combo_on a.cke_combo_button:focus,.cke_combo_on a.cke_combo_button:active{box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}.cke_rtl .cke_combo_button{float:right;margin-left:5px;margin-right:0}.cke_hc a.cke_combo_button{padding:3px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border-width:3px;padding:1px}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5);width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 7px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{cursor:default;margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}a.cke_path_item,span.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#4c4c4c;text-shadow:0 1px 0 #fff;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#bfbfbf;color:#333;text-shadow:0 1px 0 rgba(255,255,255,.5);border-radius:2px;box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5)}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combo__fontsize .cke_combo_text{width:30px}.cke_combopanel__fontsize{width:120px}textarea.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre-wrap;border:0;padding:0;margin:0;display:block}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_notifications_area{pointer-events:none}.cke_notification{pointer-events:auto;position:relative;margin:10px;width:300px;color:white;border-radius:3px;text-align:center;opacity:.95;filter:alpha(opacity = 95);box-shadow:2px 2px 3px 0 rgba(50,50,50,0.3);-webkit-animation:fadeIn .7s;animation:fadeIn .7s}.cke_notification_message a{color:#12306f}@-webkit-keyframes fadeIn{from{opacity:.4}to{opacity:.95}}@keyframes fadeIn{from{opacity:.4}to{opacity:.95}}.cke_notification_success{background:#72b572;border:1px solid #63a563}.cke_notification_warning{background:#c83939;border:1px solid #902b2b}.cke_notification_info{background:#2e9ad0;border:1px solid #0f74a8}.cke_notification_info span.cke_notification_progress{background-color:#0f74a8;display:block;padding:0;margin:0;height:100%;overflow:hidden;position:absolute;z-index:1}.cke_notification_message{position:relative;margin:4px 23px 3px;font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:18px;z-index:4;text-overflow:ellipsis;overflow:hidden}.cke_notification_close{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:1px;right:1px;padding:0;margin:0;z-index:5;opacity:.6;filter:alpha(opacity = 60)}.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_notification_close span{display:none}.cke_notification_warning a.cke_notification_close{opacity:.8;filter:alpha(opacity = 80)}.cke_notification_warning a.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}a.cke_button_disabled,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{filter:alpha(opacity = 30)}.cke_button_disabled .cke_button_icon{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#00ffffff,endColorstr=#00ffffff)}.cke_button_off:hover,.cke_button_off:focus,.cke_button_off:active{filter:alpha(opacity = 100)}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{filter:alpha(opacity = 30)}.cke_toolbox_collapser{border:1px solid #a6a6a6}.cke_toolbox_collapser .cke_arrow{margin-top:1px}.cke_hc .cke_top,.cke_hc .cke_bottom,.cke_hc .cke_combo_button,.cke_hc a.cke_combo_button:hover,.cke_hc a.cke_combo_button:focus,.cke_hc .cke_toolgroup,.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc .cke_toolbox_collapser,.cke_hc .cke_toolbox_collapser:hover,.cke_hc .cke_panel_grouptitle{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_toolbox_collapser .cke_arrow{border-width:4px}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{border-width:3px}.cke_toolbox_collapser .cke_arrow{margin-top:0}.cke_button__bold_icon {background: url(icons.png) no-repeat 0 -0px !important;}.cke_button__italic_icon {background: url(icons.png) no-repeat 0 -24px !important;}.cke_button__strike_icon {background: url(icons.png) no-repeat 0 -48px !important;}.cke_button__subscript_icon {background: url(icons.png) no-repeat 0 -72px !important;}.cke_button__superscript_icon {background: url(icons.png) no-repeat 0 -96px !important;}.cke_button__underline_icon {background: url(icons.png) no-repeat 0 -120px !important;}.cke_button__horizontalrule_icon {background: url(icons.png) no-repeat 0 -144px !important;}.cke_button__iframe_icon {background: url(icons.png) no-repeat 0 -168px !important;}.cke_button__image_icon {background: url(icons.png) no-repeat 0 -192px !important;}.cke_rtl .cke_button__indent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons.png) no-repeat 0 -216px !important;}.cke_ltr .cke_button__indent_icon {background: url(icons.png) no-repeat 0 -240px !important;}.cke_rtl .cke_button__outdent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons.png) no-repeat 0 -264px !important;}.cke_ltr .cke_button__outdent_icon {background: url(icons.png) no-repeat 0 -288px !important;}.cke_button__justifyblock_icon {background: url(icons.png) no-repeat 0 -312px !important;}.cke_button__justifycenter_icon {background: url(icons.png) no-repeat 0 -336px !important;}.cke_button__justifyleft_icon {background: url(icons.png) no-repeat 0 -360px !important;}.cke_button__justifyright_icon {background: url(icons.png) no-repeat 0 -384px !important;}.cke_rtl .cke_button__anchor_icon, .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons.png) no-repeat 0 -408px !important;}.cke_ltr .cke_button__anchor_icon {background: url(icons.png) no-repeat 0 -432px !important;}.cke_button__link_icon {background: url(icons.png) no-repeat 0 -456px !important;}.cke_button__unlink_icon {background: url(icons.png) no-repeat 0 -480px !important;}.cke_rtl .cke_button__bulletedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons.png) no-repeat 0 -504px !important;}.cke_ltr .cke_button__bulletedlist_icon {background: url(icons.png) no-repeat 0 -528px !important;}.cke_rtl .cke_button__numberedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons.png) no-repeat 0 -552px !important;}.cke_ltr .cke_button__numberedlist_icon {background: url(icons.png) no-repeat 0 -576px !important;}.cke_button__maximize_icon {background: url(icons.png) no-repeat 0 -600px !important;}.cke_button__removeformat_icon {background: url(icons.png) no-repeat 0 -624px !important;}.cke_rtl .cke_button__source_icon, .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons.png) no-repeat 0 -648px !important;}.cke_ltr .cke_button__source_icon {background: url(icons.png) no-repeat 0 -672px !important;}.cke_hidpi .cke_button__bold_icon {background: url(icons_hidpi.png) no-repeat 0 -0px !important;background-size: 16px !important;}.cke_hidpi .cke_button__italic_icon {background: url(icons_hidpi.png) no-repeat 0 -24px !important;background-size: 16px !important;}.cke_hidpi .cke_button__strike_icon {background: url(icons_hidpi.png) no-repeat 0 -48px !important;background-size: 16px !important;}.cke_hidpi .cke_button__subscript_icon {background: url(icons_hidpi.png) no-repeat 0 -72px !important;background-size: 16px !important;}.cke_hidpi .cke_button__superscript_icon {background: url(icons_hidpi.png) no-repeat 0 -96px !important;background-size: 16px !important;}.cke_hidpi .cke_button__underline_icon {background: url(icons_hidpi.png) no-repeat 0 -120px !important;background-size: 16px !important;}.cke_hidpi .cke_button__horizontalrule_icon {background: url(icons_hidpi.png) no-repeat 0 -144px !important;background-size: 16px !important;}.cke_hidpi .cke_button__iframe_icon {background: url(icons_hidpi.png) no-repeat 0 -168px !important;background-size: 16px !important;}.cke_hidpi .cke_button__image_icon {background: url(icons_hidpi.png) no-repeat 0 -192px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__indent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons_hidpi.png) no-repeat 0 -216px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__indent_icon,.cke_ltr.cke_hidpi .cke_button__indent_icon {background: url(icons_hidpi.png) no-repeat 0 -240px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__outdent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons_hidpi.png) no-repeat 0 -264px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__outdent_icon,.cke_ltr.cke_hidpi .cke_button__outdent_icon {background: url(icons_hidpi.png) no-repeat 0 -288px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyblock_icon {background: url(icons_hidpi.png) no-repeat 0 -312px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifycenter_icon {background: url(icons_hidpi.png) no-repeat 0 -336px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyleft_icon {background: url(icons_hidpi.png) no-repeat 0 -360px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyright_icon {background: url(icons_hidpi.png) no-repeat 0 -384px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__anchor_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons_hidpi.png) no-repeat 0 -408px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__anchor_icon,.cke_ltr.cke_hidpi .cke_button__anchor_icon {background: url(icons_hidpi.png) no-repeat 0 -432px !important;background-size: 16px !important;}.cke_hidpi .cke_button__link_icon {background: url(icons_hidpi.png) no-repeat 0 -456px !important;background-size: 16px !important;}.cke_hidpi .cke_button__unlink_icon {background: url(icons_hidpi.png) no-repeat 0 -480px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__bulletedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -504px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__bulletedlist_icon,.cke_ltr.cke_hidpi .cke_button__bulletedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -528px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__numberedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -552px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__numberedlist_icon,.cke_ltr.cke_hidpi .cke_button__numberedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -576px !important;background-size: 16px !important;}.cke_hidpi .cke_button__maximize_icon {background: url(icons_hidpi.png) no-repeat 0 -600px !important;background-size: 16px !important;}.cke_hidpi .cke_button__removeformat_icon {background: url(icons_hidpi.png) no-repeat 0 -624px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__source_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons_hidpi.png) no-repeat 0 -648px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__source_icon,.cke_ltr.cke_hidpi .cke_button__source_icon {background: url(icons_hidpi.png) no-repeat 0 -672px !important;background-size: 16px !important;} \ No newline at end of file 5.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none}.cke_reset_all,.cke_reset_all *,.cke_reset_all a,.cke_reset_all textarea{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre-wrap}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;border:1px solid #b6b6b6;padding:0;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_inner{display:block;-webkit-touch-callout:none;background:#fff;padding:0}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #b6b6b6;padding:6px 8px 2px;white-space:normal;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_float .cke_top{border:1px solid #b6b6b6;border-bottom-color:#999}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #bfbfbf;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #666 transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px;box-shadow:0 1px 0 rgba(255,255,255,.3)}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #a5a5a5;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #b6b6b6;border-bottom-color:#999;border-radius:3px;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap}.cke_panel_listItem{margin:0;padding-bottom:1px}.cke_panel_listItem a{padding:3px 4px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;border-radius:2px}* html .cke_panel_listItem a{width:100%;color:#000}*:first-child+html .cke_panel_listItem a{color:#000}.cke_panel_listItem.cke_selected a{border:1px solid #dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_hc .cke_panel_listItem a{border-style:none}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:1px 2px}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:4px 6px;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #b6b6b6;border-radius:2px 2px 0 0;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_colorblock{padding:3px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}span.cke_colorbox{width:10px;height:10px;border:#808080 1px solid;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorbox{border:#fff 1px solid;padding:2px;float:left;width:12px;height:12px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{border:#b6b6b6 1px solid;background-color:#e5e5e5}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:2px;display:block;cursor:pointer}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{border:#b6b6b6 1px solid;background-color:#e5e5e5}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;border-radius:3px;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_hc .cke_toolgroup{border:0;margin-right:10px;margin-bottom:10px}.cke_rtl .cke_toolgroup{float:right;margin-left:6px;margin-right:0}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0}.cke_ltr .cke_button:last-child,.cke_rtl .cke_button:first-child{border-radius:0 2px 2px 0}.cke_ltr .cke_button:first-child,.cke_rtl .cke_button:last-child{border-radius:2px 0 0 2px}.cke_rtl .cke_button{float:right}.cke_hc .cke_button{border:1px solid black;padding:3px 5px;margin:-2px 4px 0 -2px}a.cke_button_on{box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);background:#b5b5b5;background-image:linear-gradient(to bottom,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border-width:3px;padding:1px 3px}.cke_button_disabled .cke_button_icon{opacity:.3}.cke_hc .cke_button_disabled{opacity:.5}a.cke_button_on:hover,a.cke_button_on:focus,a.cke_button_on:active{box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{box-shadow:0 0 1px rgba(0,0,0,.3) inset;background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5)}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 1px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px -2px 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#c0c0c0;background-color:rgba(0,0,0,.2);margin:5px 2px 0;height:18px;width:1px;box-shadow:1px 0 1px rgba(255,255,255,.5)}.cke_rtl .cke_toolbar_separator{float:right;box-shadow:-1px 0 1px rgba(255,255,255,.1)}.cke_hc .cke_toolbar_separator{width:0;border-left:1px solid;margin:1px 5px 0 0}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}a.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #a6a6a6;border-bottom-color:#979797;border-radius:3px;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_toolbox_collapser:hover{background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border-left:3px solid transparent;border-right:3px solid transparent;border-bottom:3px solid #474747;border-top:3px solid transparent}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#474747}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0;margin-right:2px}.cke_menubutton{display:block}.cke_menuitem span{cursor:default}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#d3d3d3;display:block}.cke_hc .cke_menubutton{padding:2px}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#d7d8d7;opacity:.70;filter:alpha(opacity=70);padding:4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#d0d2d0}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_shortcut{color:#979797}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_on{border:1px solid #dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#eff0ef}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d3d3d3;height:1px;filter:alpha(opacity=70);opacity:.70}.cke_menuarrow{background-image:url(images/arrow.png);background-position:0 10px;background-repeat:no-repeat;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:-2px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}a.cke_combo_button{cursor:default;display:inline-block;float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;border-radius:3px;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_combo_off a.cke_combo_button:hover,.cke_combo_off a.cke_combo_button:focus{background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc');outline:0}.cke_combo_off a.cke_combo_button:active,.cke_combo_on a.cke_combo_button{border:1px solid #777;box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;background:#b5b5b5;background-image:linear-gradient(to bottom,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_combo_on a.cke_combo_button:hover,.cke_combo_on a.cke_combo_button:focus,.cke_combo_on a.cke_combo_button:active{box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}.cke_rtl .cke_combo_button{float:right;margin-left:5px;margin-right:0}.cke_hc a.cke_combo_button{padding:3px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border-width:3px;padding:1px}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5);width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 7px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{cursor:default;margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}a.cke_path_item,span.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#4c4c4c;text-shadow:0 1px 0 #fff;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#bfbfbf;color:#333;text-shadow:0 1px 0 rgba(255,255,255,.5);border-radius:2px;box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5)}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combo__fontsize .cke_combo_text{width:30px}.cke_combopanel__fontsize{width:120px}textarea.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre-wrap;border:0;padding:0;margin:0;display:block}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_notifications_area{pointer-events:none}.cke_notification{pointer-events:auto;position:relative;margin:10px;width:300px;color:white;border-radius:3px;text-align:center;opacity:.95;filter:alpha(opacity = 95);box-shadow:2px 2px 3px 0 rgba(50,50,50,0.3);-webkit-animation:fadeIn .7s;animation:fadeIn .7s}.cke_notification_message a{color:#12306f}@-webkit-keyframes fadeIn{from{opacity:.4}to{opacity:.95}}@keyframes fadeIn{from{opacity:.4}to{opacity:.95}}.cke_notification_success{background:#72b572;border:1px solid #63a563}.cke_notification_warning{background:#c83939;border:1px solid #902b2b}.cke_notification_info{background:#2e9ad0;border:1px solid #0f74a8}.cke_notification_info span.cke_notification_progress{background-color:#0f74a8;display:block;padding:0;margin:0;height:100%;overflow:hidden;position:absolute;z-index:1}.cke_notification_message{position:relative;margin:4px 23px 3px;font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:18px;z-index:4;text-overflow:ellipsis;overflow:hidden}.cke_notification_close{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:1px;right:1px;padding:0;margin:0;z-index:5;opacity:.6;filter:alpha(opacity = 60)}.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_notification_close span{display:none}.cke_notification_warning a.cke_notification_close{opacity:.8;filter:alpha(opacity = 80)}.cke_notification_warning a.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}a.cke_button_disabled,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{filter:alpha(opacity = 30)}.cke_button_disabled .cke_button_icon{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#00ffffff,endColorstr=#00ffffff)}.cke_button_off:hover,.cke_button_off:focus,.cke_button_off:active{filter:alpha(opacity = 100)}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{filter:alpha(opacity = 30)}.cke_toolbox_collapser{border:1px solid #a6a6a6}.cke_toolbox_collapser .cke_arrow{margin-top:1px}.cke_hc .cke_top,.cke_hc .cke_bottom,.cke_hc .cke_combo_button,.cke_hc a.cke_combo_button:hover,.cke_hc a.cke_combo_button:focus,.cke_hc .cke_toolgroup,.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc .cke_toolbox_collapser,.cke_hc .cke_toolbox_collapser:hover,.cke_hc .cke_panel_grouptitle{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_toolbox_collapser .cke_arrow{border-width:4px}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{border-width:3px}.cke_toolbox_collapser .cke_arrow{margin-top:0}.cke_button__bold_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -0px !important;}.cke_button__italic_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -24px !important;}.cke_button__strike_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -48px !important;}.cke_button__subscript_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -72px !important;}.cke_button__superscript_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -96px !important;}.cke_button__underline_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -120px !important;}.cke_button__horizontalrule_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -144px !important;}.cke_button__iframe_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -168px !important;}.cke_button__image_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -192px !important;}.cke_rtl .cke_button__indent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -216px !important;}.cke_ltr .cke_button__indent_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -240px !important;}.cke_rtl .cke_button__outdent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -264px !important;}.cke_ltr .cke_button__outdent_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -288px !important;}.cke_button__justifyblock_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -312px !important;}.cke_button__justifycenter_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -336px !important;}.cke_button__justifyleft_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -360px !important;}.cke_button__justifyright_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -384px !important;}.cke_rtl .cke_button__anchor_icon, .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -408px !important;}.cke_ltr .cke_button__anchor_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -432px !important;}.cke_button__link_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -456px !important;}.cke_button__unlink_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -480px !important;}.cke_rtl .cke_button__bulletedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -504px !important;}.cke_ltr .cke_button__bulletedlist_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -528px !important;}.cke_rtl .cke_button__numberedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -552px !important;}.cke_ltr .cke_button__numberedlist_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -576px !important;}.cke_button__maximize_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -600px !important;}.cke_button__removeformat_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -624px !important;}.cke_rtl .cke_button__source_icon, .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -648px !important;}.cke_ltr .cke_button__source_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -672px !important;}.cke_rtl .cke_button__copy_icon, .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -696px !important;}.cke_ltr .cke_button__copy_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -720px !important;}.cke_rtl .cke_button__cut_icon, .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -744px !important;}.cke_ltr .cke_button__cut_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -768px !important;}.cke_rtl .cke_button__paste_icon, .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -792px !important;}.cke_ltr .cke_button__paste_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -816px !important;}.cke_button__oembed_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -840px !important;}.cke_button__html5video_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -864px !important;}.cke_hidpi .cke_button__bold_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -0px !important;background-size: 16px !important;}.cke_hidpi .cke_button__italic_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -24px !important;background-size: 16px !important;}.cke_hidpi .cke_button__strike_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -48px !important;background-size: 16px !important;}.cke_hidpi .cke_button__subscript_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -72px !important;background-size: 16px !important;}.cke_hidpi .cke_button__superscript_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -96px !important;background-size: 16px !important;}.cke_hidpi .cke_button__underline_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -120px !important;background-size: 16px !important;}.cke_hidpi .cke_button__horizontalrule_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -144px !important;background-size: 16px !important;}.cke_hidpi .cke_button__iframe_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -168px !important;background-size: 16px !important;}.cke_hidpi .cke_button__image_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -192px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__indent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -216px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__indent_icon,.cke_ltr.cke_hidpi .cke_button__indent_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -240px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__outdent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -264px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__outdent_icon,.cke_ltr.cke_hidpi .cke_button__outdent_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -288px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyblock_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -312px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifycenter_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -336px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyleft_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -360px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyright_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -384px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__anchor_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -408px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__anchor_icon,.cke_ltr.cke_hidpi .cke_button__anchor_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -432px !important;background-size: 16px !important;}.cke_hidpi .cke_button__link_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -456px !important;background-size: 16px !important;}.cke_hidpi .cke_button__unlink_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -480px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__bulletedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -504px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__bulletedlist_icon,.cke_ltr.cke_hidpi .cke_button__bulletedlist_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -528px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__numberedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -552px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__numberedlist_icon,.cke_ltr.cke_hidpi .cke_button__numberedlist_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -576px !important;background-size: 16px !important;}.cke_hidpi .cke_button__maximize_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -600px !important;background-size: 16px !important;}.cke_hidpi .cke_button__removeformat_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -624px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__source_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -648px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__source_icon,.cke_ltr.cke_hidpi .cke_button__source_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -672px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__copy_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -696px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__copy_icon,.cke_ltr.cke_hidpi .cke_button__copy_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -720px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__cut_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -744px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__cut_icon,.cke_ltr.cke_hidpi .cke_button__cut_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -768px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__paste_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -792px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__paste_icon,.cke_ltr.cke_hidpi .cke_button__paste_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -816px !important;background-size: 16px !important;}.cke_hidpi .cke_button__oembed_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -840px !important;background-size: 16px !important;}.cke_hidpi .cke_button__html5video_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -1728px !important;} \ No newline at end of file
diff --git a/release/skins/moono/editor_iequirks.css b/release/skins/moono/editor_iequirks.css
index 4379131..589c149 100644
--- a/release/skins/moono/editor_iequirks.css
+++ b/release/skins/moono/editor_iequirks.css
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none}.cke_reset_all,.cke_reset_all *,.cke_reset_all a,.cke_reset_all textarea{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre-wrap}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;border:1px solid #b6b6b6;padding:0;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_inner{display:block;-webkit-touch-callout:none;background:#fff;padding:0}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #b6b6b6;padding:6px 8px 2px;white-space:normal;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_float .cke_top{border:1px solid #b6b6b6;border-bottom-color:#999}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #bfbfbf;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #666 transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px;box-shadow:0 1px 0 rgba(255,255,255,.3)}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #a5a5a5;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #b6b6b6;border-bottom-color:#999;border-radius:3px;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap}.cke_panel_listItem{margin:0;padding-bottom:1px}.cke_panel_listItem a{padding:3px 4px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;border-radius:2px}* html .cke_panel_listItem a{width:100%;color:#000}*:first-child+html .cke_panel_listItem a{color:#000}.cke_panel_listItem.cke_selected a{border:1px solid #dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_hc .cke_panel_listItem a{border-style:none}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:1px 2px}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:4px 6px;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #b6b6b6;border-radius:2px 2px 0 0;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_colorblock{padding:3px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}span.cke_colorbox{width:10px;height:10px;border:#808080 1px solid;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorbox{border:#fff 1px solid;padding:2px;float:left;width:12px;height:12px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{border:#b6b6b6 1px solid;background-color:#e5e5e5}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:2px;display:block;cursor:pointer}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{border:#b6b6b6 1px solid;background-color:#e5e5e5}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;border-radius:3px;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_hc .cke_toolgroup{border:0;margin-right:10px;margin-bottom:10px}.cke_rtl .cke_toolgroup{float:right;margin-left:6px;margin-right:0}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0}.cke_ltr .cke_button:last-child,.cke_rtl .cke_button:first-child{border-radius:0 2px 2px 0}.cke_ltr .cke_button:first-child,.cke_rtl .cke_button:last-child{border-radius:2px 0 0 2px}.cke_rtl .cke_button{float:right}.cke_hc .cke_button{border:1px solid black;padding:3px 5px;margin:-2px 4px 0 -2px}a.cke_button_on{box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);background:#b5b5b5;background-image:linear-gradient(to bottom,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border-width:3px;padding:1px 3px}.cke_button_disabled .cke_button_icon{opacity:.3}.cke_hc .cke_button_disabled{opacity:.5}a.cke_button_on:hover,a.cke_button_on:focus,a.cke_button_on:active{box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{box-shadow:0 0 1px rgba(0,0,0,.3) inset;background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5)}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 1px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px -2px 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#c0c0c0;background-color:rgba(0,0,0,.2);margin:5px 2px 0;height:18px;width:1px;box-shadow:1px 0 1px rgba(255,255,255,.5)}.cke_rtl .cke_toolbar_separator{float:right;box-shadow:-1px 0 1px rgba(255,255,255,.1)}.cke_hc .cke_toolbar_separator{width:0;border-left:1px solid;margin:1px 5px 0 0}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}a.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #a6a6a6;border-bottom-color:#979797;border-radius:3px;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_toolbox_collapser:hover{background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border-left:3px solid transparent;border-right:3px solid transparent;border-bottom:3px solid #474747;border-top:3px solid transparent}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#474747}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0;margin-right:2px}.cke_menubutton{display:block}.cke_menuitem span{cursor:default}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#d3d3d3;display:block}.cke_hc .cke_menubutton{padding:2px}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#d7d8d7;opacity:.70;filter:alpha(opacity=70);padding:4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#d0d2d0}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_on{border:1px solid #dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#eff0ef}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d3d3d3;height:1px;filter:alpha(opacity=70);opacity:.70}.cke_menuarrow{background-image:url(images/arrow.png);background-position:0 10px;background-repeat:no-repeat;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:-2px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}a.cke_combo_button{cursor:default;display:inline-block;float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;border-radius:3px;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_combo_off a.cke_combo_button:hover,.cke_combo_off a.cke_combo_button:focus{background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc');outline:0}.cke_combo_off a.cke_combo_button:active,.cke_combo_on a.cke_combo_button{border:1px solid #777;box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;background:#b5b5b5;background-image:linear-gradient(to bottom,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_combo_on a.cke_combo_button:hover,.cke_combo_on a.cke_combo_button:focus,.cke_combo_on a.cke_combo_button:active{box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}.cke_rtl .cke_combo_button{float:right;margin-left:5px;margin-right:0}.cke_hc a.cke_combo_button{padding:3px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border-width:3px;padding:1px}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5);width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 7px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{cursor:default;margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}a.cke_path_item,span.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#4c4c4c;text-shadow:0 1px 0 #fff;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#bfbfbf;color:#333;text-shadow:0 1px 0 rgba(255,255,255,.5);border-radius:2px;box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5)}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combo__fontsize .cke_combo_text{width:30px}.cke_combopanel__fontsize{width:120px}textarea.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre-wrap;border:0;padding:0;margin:0;display:block}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_notifications_area{pointer-events:none}.cke_notification{pointer-events:auto;position:relative;margin:10px;width:300px;color:white;border-radius:3px;text-align:center;opacity:.95;filter:alpha(opacity = 95);box-shadow:2px 2px 3px 0 rgba(50,50,50,0.3);-webkit-animation:fadeIn .7s;animation:fadeIn .7s}.cke_notification_message a{color:#12306f}@-webkit-keyframes fadeIn{from{opacity:.4}to{opacity:.95}}@keyframes fadeIn{from{opacity:.4}to{opacity:.95}}.cke_notification_success{background:#72b572;border:1px solid #63a563}.cke_notification_warning{background:#c83939;border:1px solid #902b2b}.cke_notification_info{background:#2e9ad0;border:1px solid #0f74a8}.cke_notification_info span.cke_notification_progress{background-color:#0f74a8;display:block;padding:0;margin:0;height:100%;overflow:hidden;position:absolute;z-index:1}.cke_notification_message{position:relative;margin:4px 23px 3px;font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:18px;z-index:4;text-overflow:ellipsis;overflow:hidden}.cke_notification_close{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:1px;right:1px;padding:0;margin:0;z-index:5;opacity:.6;filter:alpha(opacity = 60)}.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_notification_close span{display:none}.cke_notification_warning a.cke_notification_close{opacity:.8;filter:alpha(opacity = 80)}.cke_notification_warning a.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}a.cke_button_disabled,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{filter:alpha(opacity = 30)}.cke_button_disabled .cke_button_icon{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#00ffffff,endColorstr=#00ffffff)}.cke_button_off:hover,.cke_button_off:focus,.cke_button_off:active{filter:alpha(opacity = 100)}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{filter:alpha(opacity = 30)}.cke_toolbox_collapser{border:1px solid #a6a6a6}.cke_toolbox_collapser .cke_arrow{margin-top:1px}.cke_hc .cke_top,.cke_hc .cke_bottom,.cke_hc .cke_combo_button,.cke_hc a.cke_combo_button:hover,.cke_hc a.cke_combo_button:focus,.cke_hc .cke_toolgroup,.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc .cke_toolbox_collapser,.cke_hc .cke_toolbox_collapser:hover,.cke_hc .cke_panel_grouptitle{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_top,.cke_contents,.cke_bottom{width:100%}.cke_button_arrow{font-size:0}.cke_rtl .cke_toolgroup,.cke_rtl .cke_toolbar_separator,.cke_rtl .cke_button,.cke_rtl .cke_button *,.cke_rtl .cke_combo,.cke_rtl .cke_combo *,.cke_rtl .cke_path_item,.cke_rtl .cke_path_item *,.cke_rtl .cke_path_empty{float:none}.cke_rtl .cke_toolgroup,.cke_rtl .cke_toolbar_separator,.cke_rtl .cke_combo_button,.cke_rtl .cke_combo_button *,.cke_rtl .cke_button,.cke_rtl .cke_button_icon{display:inline-block;vertical-align:top}.cke_rtl .cke_button_icon{float:none}.cke_resizer{width:10px}.cke_source{white-space:normal}.cke_bottom{position:static}.cke_colorbox{font-size:0}.cke_button__bold_icon {background: url(icons.png) no-repeat 0 -0px !important;}.cke_button__italic_icon {background: url(icons.png) no-repeat 0 -24px !important;}.cke_button__strike_icon {background: url(icons.png) no-repeat 0 -48px !important;}.cke_button__subscript_icon {background: url(icons.png) no-repeat 0 -72px !important;}.cke_button__superscript_icon {background: url(icons.png) no-repeat 0 -96px !important;}.cke_button__underline_icon {background: url(icons.png) no-repeat 0 -120px !important;}.cke_button__horizontalrule_icon {background: url(icons.png) no-repeat 0 -144px !important;}.cke_button__iframe_icon {background: url(icons.png) no-repeat 0 -168px !important;}.cke_button__image_icon {background: url(icons.png) no-repeat 0 -192px !important;}.cke_rtl .cke_button__indent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons.png) no-repeat 0 -216px !important;}.cke_ltr .cke_button__indent_icon {background: url(icons.png) no-repeat 0 -240px !important;}.cke_rtl .cke_button__outdent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons.png) no-repeat 0 -264px !important;}.cke_ltr .cke_button__outdent_icon {background: url(icons.png) no-repeat 0 -288px !important;}.cke_button__justifyblock_icon {background: url(icons.png) no-repeat 0 -312px !important;}.cke_button__justifycenter_icon {background: url(icons.png) no-repeat 0 -336px !important;}.cke_button__justifyleft_icon {background: url(icons.png) no-repeat 0 -360px !important;}.cke_button__justifyright_icon {background: url(icons.png) no-repeat 0 -384px !important;}.cke_rtl .cke_button__anchor_icon, .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons.png) no-repeat 0 -408px !important;}.cke_ltr .cke_button__anchor_icon {background: url(icons.png) no-repeat 0 -432px !important;}.cke_button__link_icon {background: url(icons.png) no-repeat 0 -456px !important;}.cke_button__unlink_icon {background: url(icons.png) no-repeat 0 -480px !important;}.cke_rtl .cke_button__bulletedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons.png) no-repeat 0 -504px !important;}.cke_ltr .cke_button__bulletedlist_icon {background: url(icons.png) no-repeat 0 -528px !important;}.cke_rtl .cke_button__numberedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons.png) no-repeat 0 -552px !important;}.cke_ltr .cke_button__numberedlist_icon {background: url(icons.png) no-repeat 0 -576px !important;}.cke_button__maximize_icon {background: url(icons.png) no-repeat 0 -600px !important;}.cke_button__removeformat_icon {background: url(icons.png) no-repeat 0 -624px !important;}.cke_rtl .cke_button__source_icon, .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons.png) no-repeat 0 -648px !important;}.cke_ltr .cke_button__source_icon {background: url(icons.png) no-repeat 0 -672px !important;}.cke_hidpi .cke_button__bold_icon {background: url(icons_hidpi.png) no-repeat 0 -0px !important;background-size: 16px !important;}.cke_hidpi .cke_button__italic_icon {background: url(icons_hidpi.png) no-repeat 0 -24px !important;background-size: 16px !important;}.cke_hidpi .cke_button__strike_icon {background: url(icons_hidpi.png) no-repeat 0 -48px !important;background-size: 16px !important;}.cke_hidpi .cke_button__subscript_icon {background: url(icons_hidpi.png) no-repeat 0 -72px !important;background-size: 16px !important;}.cke_hidpi .cke_button__superscript_icon {background: url(icons_hidpi.png) no-repeat 0 -96px !important;background-size: 16px !important;}.cke_hidpi .cke_button__underline_icon {background: url(icons_hidpi.png) no-repeat 0 -120px !important;background-size: 16px !important;}.cke_hidpi .cke_button__horizontalrule_icon {background: url(icons_hidpi.png) no-repeat 0 -144px !important;background-size: 16px !important;}.cke_hidpi .cke_button__iframe_icon {background: url(icons_hidpi.png) no-repeat 0 -168px !important;background-size: 16px !important;}.cke_hidpi .cke_button__image_icon {background: url(icons_hidpi.png) no-repeat 0 -192px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__indent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons_hidpi.png) no-repeat 0 -216px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__indent_icon,.cke_ltr.cke_hidpi .cke_button__indent_icon {background: url(icons_hidpi.png) no-repeat 0 -240px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__outdent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons_hidpi.png) no-repeat 0 -264px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__outdent_icon,.cke_ltr.cke_hidpi .cke_button__outdent_icon {background: url(icons_hidpi.png) no-repeat 0 -288px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyblock_icon {background: url(icons_hidpi.png) no-repeat 0 -312px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifycenter_icon {background: url(icons_hidpi.png) no-repeat 0 -336px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyleft_icon {background: url(icons_hidpi.png) no-repeat 0 -360px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyright_icon {background: url(icons_hidpi.png) no-repeat 0 -384px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__anchor_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons_hidpi.png) no-repeat 0 -408px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__anchor_icon,.cke_ltr.cke_hidpi .cke_button__anchor_icon {background: url(icons_hidpi.png) no-repeat 0 -432px !important;background-size: 16px !important;}.cke_hidpi .cke_button__link_icon {background: url(icons_hidpi.png) no-repeat 0 -456px !important;background-size: 16px !important;}.cke_hidpi .cke_button__unlink_icon {background: url(icons_hidpi.png) no-repeat 0 -480px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__bulletedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -504px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__bulletedlist_icon,.cke_ltr.cke_hidpi .cke_button__bulletedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -528px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__numberedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -552px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__numberedlist_icon,.cke_ltr.cke_hidpi .cke_button__numberedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -576px !important;background-size: 16px !important;}.cke_hidpi .cke_button__maximize_icon {background: url(icons_hidpi.png) no-repeat 0 -600px !important;background-size: 16px !important;}.cke_hidpi .cke_button__removeformat_icon {background: url(icons_hidpi.png) no-repeat 0 -624px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__source_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons_hidpi.png) no-repeat 0 -648px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__source_icon,.cke_ltr.cke_hidpi .cke_button__source_icon {background: url(icons_hidpi.png) no-repeat 0 -672px !important;background-size: 16px !important;} \ No newline at end of file 5.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none}.cke_reset_all,.cke_reset_all *,.cke_reset_all a,.cke_reset_all textarea{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre-wrap}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;border:1px solid #b6b6b6;padding:0;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_inner{display:block;-webkit-touch-callout:none;background:#fff;padding:0}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #b6b6b6;padding:6px 8px 2px;white-space:normal;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_float .cke_top{border:1px solid #b6b6b6;border-bottom-color:#999}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #bfbfbf;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #666 transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px;box-shadow:0 1px 0 rgba(255,255,255,.3)}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #a5a5a5;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #b6b6b6;border-bottom-color:#999;border-radius:3px;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap}.cke_panel_listItem{margin:0;padding-bottom:1px}.cke_panel_listItem a{padding:3px 4px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;border-radius:2px}* html .cke_panel_listItem a{width:100%;color:#000}*:first-child+html .cke_panel_listItem a{color:#000}.cke_panel_listItem.cke_selected a{border:1px solid #dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_hc .cke_panel_listItem a{border-style:none}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:1px 2px}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:4px 6px;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #b6b6b6;border-radius:2px 2px 0 0;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_colorblock{padding:3px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}span.cke_colorbox{width:10px;height:10px;border:#808080 1px solid;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorbox{border:#fff 1px solid;padding:2px;float:left;width:12px;height:12px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{border:#b6b6b6 1px solid;background-color:#e5e5e5}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:2px;display:block;cursor:pointer}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{border:#b6b6b6 1px solid;background-color:#e5e5e5}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;border-radius:3px;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_hc .cke_toolgroup{border:0;margin-right:10px;margin-bottom:10px}.cke_rtl .cke_toolgroup{float:right;margin-left:6px;margin-right:0}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0}.cke_ltr .cke_button:last-child,.cke_rtl .cke_button:first-child{border-radius:0 2px 2px 0}.cke_ltr .cke_button:first-child,.cke_rtl .cke_button:last-child{border-radius:2px 0 0 2px}.cke_rtl .cke_button{float:right}.cke_hc .cke_button{border:1px solid black;padding:3px 5px;margin:-2px 4px 0 -2px}a.cke_button_on{box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);background:#b5b5b5;background-image:linear-gradient(to bottom,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border-width:3px;padding:1px 3px}.cke_button_disabled .cke_button_icon{opacity:.3}.cke_hc .cke_button_disabled{opacity:.5}a.cke_button_on:hover,a.cke_button_on:focus,a.cke_button_on:active{box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{box-shadow:0 0 1px rgba(0,0,0,.3) inset;background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5)}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 1px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px -2px 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#c0c0c0;background-color:rgba(0,0,0,.2);margin:5px 2px 0;height:18px;width:1px;box-shadow:1px 0 1px rgba(255,255,255,.5)}.cke_rtl .cke_toolbar_separator{float:right;box-shadow:-1px 0 1px rgba(255,255,255,.1)}.cke_hc .cke_toolbar_separator{width:0;border-left:1px solid;margin:1px 5px 0 0}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}a.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #a6a6a6;border-bottom-color:#979797;border-radius:3px;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_toolbox_collapser:hover{background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border-left:3px solid transparent;border-right:3px solid transparent;border-bottom:3px solid #474747;border-top:3px solid transparent}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#474747}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0;margin-right:2px}.cke_menubutton{display:block}.cke_menuitem span{cursor:default}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#d3d3d3;display:block}.cke_hc .cke_menubutton{padding:2px}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#d7d8d7;opacity:.70;filter:alpha(opacity=70);padding:4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#d0d2d0}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_shortcut{color:#979797}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_on{border:1px solid #dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#eff0ef}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d3d3d3;height:1px;filter:alpha(opacity=70);opacity:.70}.cke_menuarrow{background-image:url(images/arrow.png);background-position:0 10px;background-repeat:no-repeat;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:-2px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}a.cke_combo_button{cursor:default;display:inline-block;float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;border-radius:3px;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_combo_off a.cke_combo_button:hover,.cke_combo_off a.cke_combo_button:focus{background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc');outline:0}.cke_combo_off a.cke_combo_button:active,.cke_combo_on a.cke_combo_button{border:1px solid #777;box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;background:#b5b5b5;background-image:linear-gradient(to bottom,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_combo_on a.cke_combo_button:hover,.cke_combo_on a.cke_combo_button:focus,.cke_combo_on a.cke_combo_button:active{box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}.cke_rtl .cke_combo_button{float:right;margin-left:5px;margin-right:0}.cke_hc a.cke_combo_button{padding:3px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border-width:3px;padding:1px}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5);width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 7px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{cursor:default;margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}a.cke_path_item,span.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#4c4c4c;text-shadow:0 1px 0 #fff;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#bfbfbf;color:#333;text-shadow:0 1px 0 rgba(255,255,255,.5);border-radius:2px;box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5)}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combo__fontsize .cke_combo_text{width:30px}.cke_combopanel__fontsize{width:120px}textarea.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre-wrap;border:0;padding:0;margin:0;display:block}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_notifications_area{pointer-events:none}.cke_notification{pointer-events:auto;position:relative;margin:10px;width:300px;color:white;border-radius:3px;text-align:center;opacity:.95;filter:alpha(opacity = 95);box-shadow:2px 2px 3px 0 rgba(50,50,50,0.3);-webkit-animation:fadeIn .7s;animation:fadeIn .7s}.cke_notification_message a{color:#12306f}@-webkit-keyframes fadeIn{from{opacity:.4}to{opacity:.95}}@keyframes fadeIn{from{opacity:.4}to{opacity:.95}}.cke_notification_success{background:#72b572;border:1px solid #63a563}.cke_notification_warning{background:#c83939;border:1px solid #902b2b}.cke_notification_info{background:#2e9ad0;border:1px solid #0f74a8}.cke_notification_info span.cke_notification_progress{background-color:#0f74a8;display:block;padding:0;margin:0;height:100%;overflow:hidden;position:absolute;z-index:1}.cke_notification_message{position:relative;margin:4px 23px 3px;font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:18px;z-index:4;text-overflow:ellipsis;overflow:hidden}.cke_notification_close{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:1px;right:1px;padding:0;margin:0;z-index:5;opacity:.6;filter:alpha(opacity = 60)}.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_notification_close span{display:none}.cke_notification_warning a.cke_notification_close{opacity:.8;filter:alpha(opacity = 80)}.cke_notification_warning a.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}a.cke_button_disabled,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{filter:alpha(opacity = 30)}.cke_button_disabled .cke_button_icon{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#00ffffff,endColorstr=#00ffffff)}.cke_button_off:hover,.cke_button_off:focus,.cke_button_off:active{filter:alpha(opacity = 100)}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{filter:alpha(opacity = 30)}.cke_toolbox_collapser{border:1px solid #a6a6a6}.cke_toolbox_collapser .cke_arrow{margin-top:1px}.cke_hc .cke_top,.cke_hc .cke_bottom,.cke_hc .cke_combo_button,.cke_hc a.cke_combo_button:hover,.cke_hc a.cke_combo_button:focus,.cke_hc .cke_toolgroup,.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc .cke_toolbox_collapser,.cke_hc .cke_toolbox_collapser:hover,.cke_hc .cke_panel_grouptitle{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_top,.cke_contents,.cke_bottom{width:100%}.cke_button_arrow{font-size:0}.cke_rtl .cke_toolgroup,.cke_rtl .cke_toolbar_separator,.cke_rtl .cke_button,.cke_rtl .cke_button *,.cke_rtl .cke_combo,.cke_rtl .cke_combo *,.cke_rtl .cke_path_item,.cke_rtl .cke_path_item *,.cke_rtl .cke_path_empty{float:none}.cke_rtl .cke_toolgroup,.cke_rtl .cke_toolbar_separator,.cke_rtl .cke_combo_button,.cke_rtl .cke_combo_button *,.cke_rtl .cke_button,.cke_rtl .cke_button_icon{display:inline-block;vertical-align:top}.cke_rtl .cke_button_icon{float:none}.cke_resizer{width:10px}.cke_source{white-space:normal}.cke_bottom{position:static}.cke_colorbox{font-size:0}.cke_button__bold_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -0px !important;}.cke_button__italic_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -24px !important;}.cke_button__strike_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -48px !important;}.cke_button__subscript_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -72px !important;}.cke_button__superscript_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -96px !important;}.cke_button__underline_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -120px !important;}.cke_button__horizontalrule_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -144px !important;}.cke_button__iframe_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -168px !important;}.cke_button__image_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -192px !important;}.cke_rtl .cke_button__indent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -216px !important;}.cke_ltr .cke_button__indent_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -240px !important;}.cke_rtl .cke_button__outdent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -264px !important;}.cke_ltr .cke_button__outdent_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -288px !important;}.cke_button__justifyblock_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -312px !important;}.cke_button__justifycenter_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -336px !important;}.cke_button__justifyleft_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -360px !important;}.cke_button__justifyright_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -384px !important;}.cke_rtl .cke_button__anchor_icon, .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -408px !important;}.cke_ltr .cke_button__anchor_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -432px !important;}.cke_button__link_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -456px !important;}.cke_button__unlink_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -480px !important;}.cke_rtl .cke_button__bulletedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -504px !important;}.cke_ltr .cke_button__bulletedlist_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -528px !important;}.cke_rtl .cke_button__numberedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -552px !important;}.cke_ltr .cke_button__numberedlist_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -576px !important;}.cke_button__maximize_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -600px !important;}.cke_button__removeformat_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -624px !important;}.cke_rtl .cke_button__source_icon, .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -648px !important;}.cke_ltr .cke_button__source_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -672px !important;}.cke_rtl .cke_button__copy_icon, .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -696px !important;}.cke_ltr .cke_button__copy_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -720px !important;}.cke_rtl .cke_button__cut_icon, .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -744px !important;}.cke_ltr .cke_button__cut_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -768px !important;}.cke_rtl .cke_button__paste_icon, .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -792px !important;}.cke_ltr .cke_button__paste_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -816px !important;}.cke_button__oembed_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -840px !important;}.cke_button__html5video_icon {background: url(icons.png?t=dee99e2) no-repeat 0 -864px !important;}.cke_hidpi .cke_button__bold_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -0px !important;background-size: 16px !important;}.cke_hidpi .cke_button__italic_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -24px !important;background-size: 16px !important;}.cke_hidpi .cke_button__strike_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -48px !important;background-size: 16px !important;}.cke_hidpi .cke_button__subscript_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -72px !important;background-size: 16px !important;}.cke_hidpi .cke_button__superscript_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -96px !important;background-size: 16px !important;}.cke_hidpi .cke_button__underline_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -120px !important;background-size: 16px !important;}.cke_hidpi .cke_button__horizontalrule_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -144px !important;background-size: 16px !important;}.cke_hidpi .cke_button__iframe_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -168px !important;background-size: 16px !important;}.cke_hidpi .cke_button__image_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -192px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__indent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -216px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__indent_icon,.cke_ltr.cke_hidpi .cke_button__indent_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -240px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__outdent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -264px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__outdent_icon,.cke_ltr.cke_hidpi .cke_button__outdent_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -288px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyblock_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -312px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifycenter_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -336px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyleft_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -360px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyright_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -384px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__anchor_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -408px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__anchor_icon,.cke_ltr.cke_hidpi .cke_button__anchor_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -432px !important;background-size: 16px !important;}.cke_hidpi .cke_button__link_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -456px !important;background-size: 16px !important;}.cke_hidpi .cke_button__unlink_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -480px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__bulletedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -504px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__bulletedlist_icon,.cke_ltr.cke_hidpi .cke_button__bulletedlist_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -528px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__numberedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -552px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__numberedlist_icon,.cke_ltr.cke_hidpi .cke_button__numberedlist_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -576px !important;background-size: 16px !important;}.cke_hidpi .cke_button__maximize_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -600px !important;background-size: 16px !important;}.cke_hidpi .cke_button__removeformat_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -624px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__source_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -648px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__source_icon,.cke_ltr.cke_hidpi .cke_button__source_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -672px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__copy_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -696px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__copy_icon,.cke_ltr.cke_hidpi .cke_button__copy_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -720px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__cut_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -744px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__cut_icon,.cke_ltr.cke_hidpi .cke_button__cut_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -768px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__paste_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -792px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__paste_icon,.cke_ltr.cke_hidpi .cke_button__paste_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -816px !important;background-size: 16px !important;}.cke_hidpi .cke_button__oembed_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -840px !important;background-size: 16px !important;}.cke_hidpi .cke_button__html5video_icon {background: url(icons_hidpi.png?t=dee99e2) no-repeat 0 -1728px !important;} \ No newline at end of file
diff --git a/release/skins/moono/icons.png b/release/skins/moono/icons.png
index 6b315f9..f538d21 100644
--- a/release/skins/moono/icons.png
+++ b/release/skins/moono/icons.png
Binary files differ
diff --git a/release/skins/moono/icons_hidpi.png b/release/skins/moono/icons_hidpi.png
index 4f3073d..73478be 100644
--- a/release/skins/moono/icons_hidpi.png
+++ b/release/skins/moono/icons_hidpi.png
Binary files differ
diff --git a/release/skins/moono/images/anchor.png b/release/skins/moono/images/anchor.png
new file mode 100644
index 0000000..1c802f5
--- /dev/null
+++ b/release/skins/moono/images/anchor.png
Binary files differ
diff --git a/release/skins/moono/images/close.png b/release/skins/moono/images/close.png
index 6a04ab5..2d02977 100644
--- a/release/skins/moono/images/close.png
+++ b/release/skins/moono/images/close.png
Binary files differ
diff --git a/release/skins/moono/images/hidpi/anchor.png b/release/skins/moono/images/hidpi/anchor.png
new file mode 100644
index 0000000..17cca97
--- /dev/null
+++ b/release/skins/moono/images/hidpi/anchor.png
Binary files differ
diff --git a/release/skins/moono/images/hidpi/close.png b/release/skins/moono/images/hidpi/close.png
index e406c2c..de4eedf 100644
--- a/release/skins/moono/images/hidpi/close.png
+++ b/release/skins/moono/images/hidpi/close.png
Binary files differ
diff --git a/release/skins/moono/images/hidpi/lock-open.png b/release/skins/moono/images/hidpi/lock-open.png
index edbd12f..594f0d3 100644
--- a/release/skins/moono/images/hidpi/lock-open.png
+++ b/release/skins/moono/images/hidpi/lock-open.png
Binary files differ
diff --git a/release/skins/moono/images/hidpi/lock.png b/release/skins/moono/images/hidpi/lock.png
index 1b87bbb..1e23a0b 100644
--- a/release/skins/moono/images/hidpi/lock.png
+++ b/release/skins/moono/images/hidpi/lock.png
Binary files differ
diff --git a/release/skins/moono/images/hidpi/refresh.png b/release/skins/moono/images/hidpi/refresh.png
index c6c2b86..42d94a9 100644
--- a/release/skins/moono/images/hidpi/refresh.png
+++ b/release/skins/moono/images/hidpi/refresh.png
Binary files differ
diff --git a/release/skins/moono/images/lock-open.png b/release/skins/moono/images/lock-open.png
index 0476987..7d24c5f 100644
--- a/release/skins/moono/images/lock-open.png
+++ b/release/skins/moono/images/lock-open.png
Binary files differ
diff --git a/release/skins/moono/images/lock.png b/release/skins/moono/images/lock.png
index c5a1440..8baeaa4 100644
--- a/release/skins/moono/images/lock.png
+++ b/release/skins/moono/images/lock.png
Binary files differ
diff --git a/release/skins/moono/images/refresh.png b/release/skins/moono/images/refresh.png
index 1ff63c3..d8106b0 100644
--- a/release/skins/moono/images/refresh.png
+++ b/release/skins/moono/images/refresh.png
Binary files differ
diff --git a/release/skins/moono/readme.md b/release/skins/moono/readme.md
index fc9a544..4a4ed6b 100644
--- a/release/skins/moono/readme.md
+++ b/release/skins/moono/readme.md
@@ -1,8 +1,8 @@
1"Moono" Skin 1"Moono" Skin
2==================== 2====================
3 3
4This skin has been chosen for the **default skin** of CKEditor 4.x, elected from the CKEditor 4This skin has been chosen for the **default skin** of CKEditor 4.x (replaced by "Moono-lisa" skin since CKEditor 4.6.0),
5[skin contest](http://ckeditor.com/blog/new_ckeditor_4_skin) and further shaped by 5elected from the CKEditor [skin contest](http://ckeditor.com/blog/new_ckeditor_4_skin) and further shaped by
6the CKEditor team. "Moono" is maintained by the core developers. 6the CKEditor team. "Moono" is maintained by the core developers.
7 7
8For more information about skins, please check the [CKEditor Skin SDK](http://docs.cksource.com/CKEditor_4.x/Skin_SDK) 8For more information about skins, please check the [CKEditor Skin SDK](http://docs.cksource.com/CKEditor_4.x/Skin_SDK)
@@ -44,6 +44,6 @@ Other parts:
44License 44License
45------- 45-------
46 46
47Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 47Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
48 48
49For licensing, see LICENSE.md or [http://ckeditor.com/license](http://ckeditor.com/license) 49For licensing, see LICENSE.md or [http://ckeditor.com/license](http://ckeditor.com/license)
diff --git a/release/styles.js b/release/styles.js
index 1f9ac0b..025715e 100644
--- a/release/styles.js
+++ b/release/styles.js
@@ -1,22 +1,24 @@
1/** 1/**
2 * Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
6// This file contains style definitions that can be used by CKEditor plugins. 6// This file contains style definitions that can be used by CKEditor plugins.
7// 7//
8// The most common use for it is the "stylescombo" plugin, which shows a combo 8// The most common use for it is the "stylescombo" plugin which shows the Styles drop-down
9// in the editor toolbar, containing all styles. Other plugins instead, like 9// list containing all styles in the editor toolbar. Other plugins, like
10// the div plugin, use a subset of the styles on their feature. 10// the "div" plugin, use a subset of the styles for their features.
11// 11//
12// If you don't have plugins that depend on this file, you can simply ignore it. 12// If you do not have plugins that depend on this file in your editor build, you can simply
13// Otherwise it is strongly recommended to customize this file to match your 13// ignore it. Otherwise it is strongly recommended to customize this file to match your
14// website requirements and design properly. 14// website requirements and design properly.
15//
16// For more information refer to: http://docs.ckeditor.com/#!/guide/dev_styles-section-style-rules
15 17
16CKEDITOR.stylesSet.add( 'default', [ 18CKEDITOR.stylesSet.add( 'default', [
17 /* Block Styles */ 19 /* Block styles */
18 20
19 // These styles are already available in the "Format" combo ("format" plugin), 21 // These styles are already available in the "Format" drop-down list ("format" plugin),
20 // so they are not needed here by default. You may enable them to avoid 22 // so they are not needed here by default. You may enable them to avoid
21 // placing the "Format" combo in the toolbar, maintaining the same features. 23 // placing the "Format" combo in the toolbar, maintaining the same features.
22 /* 24 /*
@@ -43,11 +45,11 @@ CKEDITOR.stylesSet.add( 'default', [
43 } 45 }
44 }, 46 },
45 47
46 /* Inline Styles */ 48 /* Inline styles */
47 49
48 // These are core styles available as toolbar buttons. You may opt enabling 50 // These are core styles available as toolbar buttons. You may opt enabling
49 // some of them in the Styles combo, removing them from the toolbar. 51 // some of them in the Styles drop-down list, removing them from the toolbar.
50 // (This requires the "stylescombo" plugin) 52 // (This requires the "stylescombo" plugin.)
51 /* 53 /*
52 { name: 'Strong', element: 'strong', overrides: 'b' }, 54 { name: 'Strong', element: 'strong', overrides: 'b' },
53 { name: 'Emphasis', element: 'em' , overrides: 'i' }, 55 { name: 'Emphasis', element: 'em' , overrides: 'i' },
@@ -77,22 +79,22 @@ CKEDITOR.stylesSet.add( 'default', [
77 { name: 'Language: RTL', element: 'span', attributes: { 'dir': 'rtl' } }, 79 { name: 'Language: RTL', element: 'span', attributes: { 'dir': 'rtl' } },
78 { name: 'Language: LTR', element: 'span', attributes: { 'dir': 'ltr' } }, 80 { name: 'Language: LTR', element: 'span', attributes: { 'dir': 'ltr' } },
79 81
80 /* Object Styles */ 82 /* Object styles */
81 83
82 { 84 {
83 name: 'Styled image (left)', 85 name: 'Styled Image (left)',
84 element: 'img', 86 element: 'img',
85 attributes: { 'class': 'left' } 87 attributes: { 'class': 'left' }
86 }, 88 },
87 89
88 { 90 {
89 name: 'Styled image (right)', 91 name: 'Styled Image (right)',
90 element: 'img', 92 element: 'img',
91 attributes: { 'class': 'right' } 93 attributes: { 'class': 'right' }
92 }, 94 },
93 95
94 { 96 {
95 name: 'Compact table', 97 name: 'Compact Table',
96 element: 'table', 98 element: 'table',
97 attributes: { 99 attributes: {
98 cellpadding: '5', 100 cellpadding: '5',
@@ -106,6 +108,30 @@ CKEDITOR.stylesSet.add( 'default', [
106 }, 108 },
107 109
108 { name: 'Borderless Table', element: 'table', styles: { 'border-style': 'hidden', 'background-color': '#E6E6FA' } }, 110 { name: 'Borderless Table', element: 'table', styles: { 'border-style': 'hidden', 'background-color': '#E6E6FA' } },
109 { name: 'Square Bulleted List', element: 'ul', styles: { 'list-style-type': 'square' } } 111 { name: 'Square Bulleted List', element: 'ul', styles: { 'list-style-type': 'square' } },
112
113 /* Widget styles */
114
115 { name: 'Clean Image', type: 'widget', widget: 'image', attributes: { 'class': 'image-clean' } },
116 { name: 'Grayscale Image', type: 'widget', widget: 'image', attributes: { 'class': 'image-grayscale' } },
117
118 { name: 'Featured Snippet', type: 'widget', widget: 'codeSnippet', attributes: { 'class': 'code-featured' } },
119
120 { name: 'Featured Formula', type: 'widget', widget: 'mathjax', attributes: { 'class': 'math-featured' } },
121
122 { name: '240p', type: 'widget', widget: 'embedSemantic', attributes: { 'class': 'embed-240p' }, group: 'size' },
123 { name: '360p', type: 'widget', widget: 'embedSemantic', attributes: { 'class': 'embed-360p' }, group: 'size' },
124 { name: '480p', type: 'widget', widget: 'embedSemantic', attributes: { 'class': 'embed-480p' }, group: 'size' },
125 { name: '720p', type: 'widget', widget: 'embedSemantic', attributes: { 'class': 'embed-720p' }, group: 'size' },
126 { name: '1080p', type: 'widget', widget: 'embedSemantic', attributes: { 'class': 'embed-1080p' }, group: 'size' },
127
128 // Adding space after the style name is an intended workaround. For now, there
129 // is no option to create two styles with the same name for different widget types. See http://dev.ckeditor.com/ticket/16664.
130 { name: '240p ', type: 'widget', widget: 'embed', attributes: { 'class': 'embed-240p' }, group: 'size' },
131 { name: '360p ', type: 'widget', widget: 'embed', attributes: { 'class': 'embed-360p' }, group: 'size' },
132 { name: '480p ', type: 'widget', widget: 'embed', attributes: { 'class': 'embed-480p' }, group: 'size' },
133 { name: '720p ', type: 'widget', widget: 'embed', attributes: { 'class': 'embed-720p' }, group: 'size' },
134 { name: '1080p ', type: 'widget', widget: 'embed', attributes: { 'class': 'embed-1080p' }, group: 'size' }
135
110] ); 136] );
111 137
diff --git a/sources/CHANGES.md b/sources/CHANGES.md
index f751de9..31a6299 100644
--- a/sources/CHANGES.md
+++ b/sources/CHANGES.md
@@ -1,6 +1,299 @@
1CKEditor 4 Changelog 1CKEditor 4 Changelog
2==================== 2====================
3 3
4## CKEditor 4.7.3
5
6New Features:
7
8* [#568](https://github.com/ckeditor/ckeditor-dev/issues/568): Added possibility to adjust nested editables' filters using the [`CKEDITOR.filter.disallowedContent`](https://docs.ckeditor.com/#!/api/CKEDITOR.filter-property-disallowedContent) property.
9
10Fixed Issues:
11
12* [#554](https://github.com/ckeditor/ckeditor-dev/issues/554): Fixed: [`change`](https://docs.ckeditor.com/#!/api/CKEDITOR.editor-event-change) event not fired when typing the first character after pasting into the editor. Thanks to [Daniel Miller](https://github.com/millerdev)!
13* [#566](https://github.com/ckeditor/ckeditor-dev/issues/566): Fixed: The CSS `border` shorthand property with zero width (`border: 0px solid #000;`) causes the table to have the border attribute set to 1.
14* [#779](https://github.com/ckeditor/ckeditor-dev/issues/779): Fixed: The [Remove Format](https://ckeditor.com/addon/removeformat) plugin removes elements with language definition inserted by the [Language](https://ckeditor.com/addon/language) plugin.
15* [#423](https://github.com/ckeditor/ckeditor-dev/issues/423): Fixed: The [Paste from Word](https://ckeditor.com/addon/pastefromword) plugin pastes paragraphs into the editor even if [`CKEDITOR.config.enterMode`](https://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-enterMode) is set to `CKEDITOR.ENTER_BR`.
16* [#719](https://github.com/ckeditor/ckeditor-dev/issues/719): Fixed: Image inserted using the [Enhanced Image](https://ckeditor.com/addon/image2) plugin can be resized when the editor is in [read-only mode](https://docs.ckeditor.com/#!/guide/dev_readonly).
17* [#577](https://github.com/ckeditor/ckeditor-dev/issues/577): Fixed: The "Delete Columns" command provided by the [Table Tools](https://ckeditor.com/addon/tabletools) plugin throws an error when trying to delete columns.
18* [#867](https://github.com/ckeditor/ckeditor-dev/issues/867): Fixed: Typing into a selected table throws an error.
19* [#817](https://github.com/ckeditor/ckeditor-dev/issues/817): Fixed: The [Save](https://ckeditor.com/addon/save) plugin does not work in [Source Mode](https://ckeditor.com/addon/sourcearea).
20
21Other Changes:
22
23* Updated the [WebSpellChecker](http://ckeditor.com/addon/wsc) plugin:
24 * [#40](https://github.com/WebSpellChecker/ckeditor-plugin-wsc/issues/40): Fixed: IE10 throws an error when spell checking is started.
25* [#800](https://github.com/ckeditor/ckeditor-dev/issues/800): Added the [`CKEDITOR.dom.selection.isCollapsed`](https://docs.ckeditor.com/#!/api/CKEDITOR.dom.selection-method-isCollapsed) method which is a simpler way to check if the selection is collapsed.
26* [#830](https://github.com/ckeditor/ckeditor-dev/issues/830): Added an option to define which dialog tab should be shown by default when creating [`CKEDITOR.dialogCommand`](https://docs.ckeditor.com/#!/api/CKEDITOR.dialogCommand).
27
28## CKEditor 4.7.2
29
30New Features:
31
32* [#455](https://github.com/ckeditor/ckeditor-dev/issues/455): Added [Advanced Content Filter](https://docs.ckeditor.com/#!/guide/dev_acf) integration with the [Justify](http://ckeditor.com/addon/justify) plugin.
33
34Fixed Issues:
35
36* [#663](https://github.com/ckeditor/ckeditor-dev/issues/663): [Chrome] Fixed: Clicking the scrollbar throws an `Uncaught TypeError: element.is is not a function` error.
37* [#694](https://github.com/ckeditor/ckeditor-dev/pull/694): Refactoring in the [Table Selection](http://ckeditor.com/addon/tableselection) plugin:
38 * [#520](https://github.com/ckeditor/ckeditor-dev/issues/520): Fixed: Widgets cannot be properly pasted into a table cell.
39 * [#460](https://github.com/ckeditor/ckeditor-dev/issues/460): Fixed: Editor gone after pasting into an editor within a table.
40* [#579](https://github.com/ckeditor/ckeditor-dev/issues/579): Fixed: Internal `cke_table-faked-selection-table` class is visible in the Stylesheet Classes field of the [Table Properties](http://ckeditor.com/addon/table) dialog.
41* [#545](https://github.com/ckeditor/ckeditor-dev/issues/545): [Edge] Fixed: Error thrown when pressing the [Select All](https://ckeditor.com/addon/selectall) button in [Source Mode](http://ckeditor.com/addon/sourcearea).
42* [#582](https://github.com/ckeditor/ckeditor-dev/issues/582): Fixed: Double slash in the path to stylesheet needed by the [Table Selection](http://ckeditor.com/addon/tableselection) plugin. Thanks to [Marius Dumitru Florea](https://github.com/mflorea)!
43* [#491](https://github.com/ckeditor/ckeditor-dev/issues/491): Fixed: Unnecessary dependency on the [Editor Toolbar](http://ckeditor.com/addon/toolbar) plugin inside the [Notification](http://ckeditor.com/addon/notification) plugin.
44* [#646](https://github.com/ckeditor/ckeditor-dev/issues/646): Fixed: Error thrown into the browser console after opening the [Styles Combo](http://ckeditor.com/addon/stylescombo) plugin menu in the editor without any selection.
45* [#501](https://github.com/ckeditor/ckeditor-dev/issues/501): Fixed: Double click does not open the dialog for modifying anchors inserted via the [Link](http://ckeditor.com/addon/link) plugin.
46* [#9780](https://dev.ckeditor.com/ticket/9780): [IE8-9] Fixed: Clicking inside an empty [read-only](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-property-readOnly) editor throws an error.
47* [#16820](https://dev.ckeditor.com/ticket/16820): [IE10] Fixed: Clicking below a single horizontal rule throws an error.
48* [#426](https://github.com/ckeditor/ckeditor-dev/issues/426): Fixed: The [`range.cloneContents`](http://docs.ckeditor.com/#!/api/CKEDITOR.dom.range-method-cloneContents) method selects the whole element when the selection starts at the beginning of that element.
49* [#644](https://github.com/ckeditor/ckeditor-dev/issues/644): Fixed: The [`range.extractContents`](http://docs.ckeditor.com/#!/api/CKEDITOR.dom.range-method-extractContents) method returns an incorrect result when multiple nodes are selected.
50* [#684](https://github.com/ckeditor/ckeditor-dev/issues/684): Fixed: The [`elementPath.contains`](http://docs.ckeditor.com/#!/api/CKEDITOR.dom.elementPath-method-contains) method incorrectly excludes the last element instead of root when the `fromTop` parameter is set to `true`.
51
52Other Changes:
53
54* Updated the [SCAYT](http://ckeditor.com/addon/scayt) (Spell Check As You Type) plugin:
55 * [#148](https://github.com/WebSpellChecker/ckeditor-plugin-scayt/issues/148): Fixed: SCAYT leaves underlined word after the CKEditor Replace dialog corrects it.
56* [#751](https://github.com/ckeditor/ckeditor-dev/issues/751): Added the [`CKEDITOR.dom.nodeList.toArray`](https://docs.ckeditor.com/#!/api/CKEDITOR.dom.nodeList-method-toArray) method which returns an array representation of a [node list](https://docs.ckeditor.com/#!/api/CKEDITOR.dom.nodeList).
57
58## CKEditor 4.7.1
59
60New Features:
61
62* Added a new Mexican Spanish localization. Thanks to [David Alexandro Rodriguez](https://www.transifex.com/user/profile/darsco16/)!
63* [#413](https://github.com/ckeditor/ckeditor-dev/issues/413): Added Paste as Plain Text keyboard shortcut to the [Accessibility Help](http://ckeditor.com/addon/a11yhelp) instructions.
64
65Fixed Issues:
66
67* [#515](https://github.com/ckeditor/ckeditor-dev/issues/515): [Chrome] Fixed: Mouse actions on CKEditor scrollbar throw an exception when the [Table Selection](http://ckeditor.com/addon/tableselection) plugin is loaded.
68* [#493](https://github.com/ckeditor/ckeditor-dev/issues/493): Fixed: Selection started from a nested table causes an error in the browser while scrolling down.
69* [#415](https://github.com/ckeditor/ckeditor-dev/issues/415): [Firefox] Fixed: <kbd>Enter</kbd> key breaks the table structure when pressed in a table selection.
70* [#457](https://github.com/ckeditor/ckeditor-dev/issues/457): Fixed: Error thrown when deleting content from the editor with no selection.
71* [#478](https://github.com/ckeditor/ckeditor-dev/issues/478): [Chrome] Fixed: Error thrown by the [Enter Key](http://ckeditor.com/addon/enterkey) plugin when pressing <kbd>Enter</kbd> with no selection.
72* [#424](https://github.com/ckeditor/ckeditor-dev/issues/424): Fixed: Error thrown by [Tab Key Handling](http://ckeditor.com/addon/tab) and [Indent List](http://ckeditor.com/addon/indentlist) plugins when pressing <kbd>Tab</kbd> with no selection in inline editor.
73* [#476](https://github.com/ckeditor/ckeditor-dev/issues/476): Fixed: Anchors inserted with the [Link](http://ckeditor.com/addon/link) plugin on collapsed selection cannot be edited.
74* [#417](https://github.com/ckeditor/ckeditor-dev/issues/417): Fixed: The [Table Resize](http://ckeditor.com/addon/tableresize) plugin throws an error when used with a table with only header or footer rows.
75* [#523](https://github.com/ckeditor/ckeditor-dev/issues/523): Fixed: The [`editor.getCommandKeystroke`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-getCommandKeystroke) method does not obtain the correct keystroke.
76* [#534](https://github.com/ckeditor/ckeditor-dev/issues/534): [IE] Fixed: [Paste from Word](http://ckeditor.com/addon/pastefromword) does not work in Quirks Mode.
77* [#450](https://github.com/ckeditor/ckeditor-dev/issues/450): Fixed: [`CKEDITOR.filter`](http://docs.ckeditor.com/#!/api/CKEDITOR.filter) incorrectly transforms the `margin` CSS property.
78
79## CKEditor 4.7
80
81**Important Notes:**
82
83* [#13793](http://dev.ckeditor.com/ticket/13793): The [`embed_provider`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-embed_provider) configuration option for the [Media Embed](http://ckeditor.com/addon/embed) and [Semantic Media Embed](http://ckeditor.com/addon/embedsemantic) plugins is no longer preset by default.
84* The [UI Color](http://ckeditor.com/addon/uicolor) plugin now uses a custom color picker instead of the `YUI 2.7.0` library which has some known vulnerabilities (it's a security precaution, there was no security issue in CKEditor due to the way it was used).
85
86New Features:
87
88* [#16755](http://dev.ckeditor.com/ticket/16755): Added the [Table Selection](http://ckeditor.com/addon/tableselection) plugin that lets you select and manipulate an arbitrary rectangular table fragment (a few cells, a row or a column).
89* [#16961](http://dev.ckeditor.com/ticket/16961): Added support for pasting from Microsoft Excel.
90* [#13381](http://dev.ckeditor.com/ticket/13381): Dynamic code evaluation call in [`CKEDITOR.template`](http://docs.ckeditor.com/#!/api/CKEDITOR.template) removed. CKEditor can now be used without the `unsafe-eval` Content Security Policy. Thanks to [Caridy Patiño](http://caridy.name)!
91* [#16971](http://dev.ckeditor.com/ticket/16971): Added support for color in the `background` property containing also other styles for table cells in the [Table Tools](http://ckeditor.com/addon/tabletools) plugin.
92* [#16847](http://dev.ckeditor.com/ticket/16847): Added support for parsing and inlining any formatting created using the Microsoft Word style system to the [Paste from Word](http://ckeditor.com/addon/pastefromword) plugin.
93* [#16818](http://dev.ckeditor.com/ticket/16818): Added table cell height parsing in the [Paste from Word](http://ckeditor.com/addon/pastefromword) plugin.
94* [#16850](http://dev.ckeditor.com/ticket/16850): Added a new [`config.enableContextMenu`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-enableContextMenu) configuration option for enabling and disabling the [context menu](http://ckeditor.com/addon/contextmenu).
95* [#16937](http://dev.ckeditor.com/ticket/16937): The `command` parameter in [CKEDITOR.editor.getCommandKeystroke](http://docs.ckeditor.dev/#!/api/CKEDITOR.editor-method-getCommandKeystroke) now also accepts a command name as an argument.
96* [#17010](http://dev.ckeditor.com/ticket/17010): The [`CKEDITOR.dom.range.shrink`](http://docs.ckeditor.com/#!/api/CKEDITOR.dom.range-method-shrink) method now allows for skipping bogus `<br>` elements.
97
98Fixed Issues:
99
100* [#16935](http://dev.ckeditor.com/ticket/16935): [Chrome] Fixed: Blurring the editor in [Source Mode](http://ckeditor.com/addon/sourcearea) throws an error.
101* [#16825](http://dev.ckeditor.com/ticket/16825): [Chrome] Fixed: Error thrown when destroying a focused inline editor.
102* [#16857](http://dev.ckeditor.com/ticket/16857): Fixed: <kbd>Ctrl+Shift+V</kbd> blocked by [Copy Formatting](http://ckeditor.com/addon/copyformatting).
103* [#16845](https://dev.ckeditor.com/ticket/16845): [IE] Fixed: Cursor jumps to the top of the scrolled editor after focusing it when the [Copy Formatting](http://ckeditor.com/addon/copyformatting) plugin is enabled.
104* [#16786](http://dev.ckeditor.com/ticket/16786): Fixed: Added missing translations for the [Copy Formatting](http://ckeditor.com/addon/copyformatting) plugin.
105* [#14714](http://dev.ckeditor.com/ticket/14714): [WebKit/Blink] Fixed: Exception thrown on refocusing a blurred inline editor.
106* [#16913](http://dev.ckeditor.com/ticket/16913): [Firefox, IE] Fixed: [Paste as Plain Text](http://ckeditor.com/addon/pastetext) keystroke does not work.
107* [#16968](http://dev.ckeditor.com/ticket/16968): Fixed: [Safari] [Paste as Plain Text](http://ckeditor.com/addon/pastetext) is not handled by the editor.
108* [#16912](http://dev.ckeditor.com/ticket/16912): Fixed: Exception thrown when a single image is pasted using [Paste from Word](http://ckeditor.com/addon/pastefromword).
109* [#16821](http://dev.ckeditor.com/ticket/16821): Fixed: Extraneous `<span>` elements with `height` style stacked when [pasting from Word](http://ckeditor.com/addon/pastefromword).
110* [#16866](http://dev.ckeditor.com/ticket/16866): [IE, Edge] Fixed: Whitespaces not preserved when [pasting from Word](http://ckeditor.com/addon/pastefromword).
111* [#16860](http://dev.ckeditor.com/ticket/16860): Fixed: Paragraphs which only look like lists incorrectly transformed into them when [pasting from Word](http://ckeditor.com/addon/pastefromword).
112* [#16817](http://dev.ckeditor.com/ticket/16817): Fixed: When [pasting from Word](http://ckeditor.com/addon/pastefromword), paragraphs are transformed into lists with some corrupted data.
113* [#16833](http://dev.ckeditor.com/ticket/16833): [IE11] Fixed: Malformed list with headers [pasted from Word](http://ckeditor.com/addon/pastefromword).
114* [#16826](http://dev.ckeditor.com/ticket/16826): [IE] Fixed: Superfluous paragraphs within lists [pasted from Word](http://ckeditor.com/addon/pastefromword).
115* [#12465](http://dev.ckeditor.com/ticket/12465): Fixed: Cannot change the state of checkboxes or radio buttons if the properties dialog was invoked with a double-click.
116* [#13062](http://dev.ckeditor.com/ticket/13062): Fixed: Impossible to unlink when the caret is at the edge of the link.
117* [#13585](http://dev.ckeditor.com/ticket/13585): Fixed: Error when wrapping two adjacent `<div>` elements with a `<div>`.
118* [#16811](http://dev.ckeditor.com/ticket/16811): Fixed: Table alignment is not preserved by the [Paste from Word](http://ckeditor.com/addon/pastefromword) plugin.
119* [#16810](http://dev.ckeditor.com/ticket/16810): Fixed: Vertical align in tables is not supported by the [Paste from Word](http://ckeditor.com/addon/pastefromword) plugin.
120* [#11956](http://dev.ckeditor.com/ticket/11956): [Blink, IE] Fixed: [Link](http://ckeditor.com/addon/link) dialog does not open on a double click on the second word of the link with a background color or other styles.
121* [#10472](http://dev.ckeditor.com/ticket/10472): Fixed: Unable to use [Table Resize](http://ckeditor.com/addon/tableresize) on table header and footer.
122* [#14762](http://dev.ckeditor.com/ticket/14762): Fixed: Hovering over an empty table (without rows or cells) throws an error when the [Table Resize](http://ckeditor.com/addon/tableresize) plugin is active.
123* [#16777](https://dev.ckeditor.com/ticket/16777): [Edge] Fixed: The [Clipboard](http://ckeditor.com/addon/clipboard) plugin does not allow to drop widgets into the editor.
124* [#14894](https://dev.ckeditor.com/ticket/14894): [Chrome] Fixed: The editor scrolls to the top after focusing or when a dialog is opened.
125* [#14769](https://dev.ckeditor.com/ticket/14769): Fixed: URLs with '-' in host are not detected by the [Auto Link](http://ckeditor.com/addon/autolink) plugin.
126* [#16804](https://dev.ckeditor.com/ticket/16804): Fixed: Focus is not on the first menu item when the user opens a context menu or a drop-down list from the editor toolbar.
127* [#14407](https://dev.ckeditor.com/ticket/14407): [IE] Fixed: Non-editable widgets can be edited.
128* [#16927](https://dev.ckeditor.com/ticket/16927): Fixed: An error thrown if a bundle containing the [Color Button](http://ckeditor.com/addon/colorbutton) plugin is run in ES5 strict mode. Thanks to [Igor Rubinovich](https://github.com/IgorRubinovich)!
129* [#16920](http://dev.ckeditor.com/ticket/16920): Fixed: Several plugins not using the [Dialog](http://ckeditor.com/addon/dialog) plugin as a direct dependency.
130* [PR#336](https://github.com/ckeditor/ckeditor-dev/pull/336): Fixed: Typo in [`CKEDITOR.getCss`](http://docs.ckeditor.com/#!/api/CKEDITOR-method-getCss) API documentation. Thanks to [knusperpixel](https://github.com/knusperpixel)!
131* [#17027](http://dev.ckeditor.com/ticket/17027): Fixed: Command event data should be initialized as an empty object.
132* Fixed the behavior of HTML parser when parsing `src`/`srcdoc` attributes of the `<iframe>` element in a CKEditor setup with ACF turned off and without the [Iframe Dialog](http://ckeditor.com/addon/iframe) plugin. The issue was originally reported as a security issue by [Sriramk21](https://twitter.com/sriramk21) from Pegasystems and was later downgraded by the security team into a normal issue due to the requirement of having ACF turned off. Disabling [Advanced Content Filter](http://docs.ckeditor.com/#!/guide/dev_advanced_content_filter) is against [security best practices](http://docs.ckeditor.com/#!/guide/dev_best_practices-section-security), so the problem described above has not been considered a security issue as such.
133
134Other Changes:
135
136* Updated [SCAYT](http://ckeditor.com/addon/scayt) (Spell Check As You Type) and [WebSpellChecker](http://ckeditor.com/addon/wsc) plugins:
137 * Fixed: DOM Exception after clicking "Remove Language" on a selected word with enabled [Language](http://ckeditor.com/addon/language) plugin in SCAYT.
138* [#16958](http://dev.ckeditor.com/ticket/16958): Switched the default MathJax CDN provider for the [Mathematical Formulas](http://ckeditor.com/addon/mathjax) plugin from `cdn.mathjax.org` to [cdnjs](https://cdnjs.com/), due to closing of `cdn.mathjax.org` scheduled for April 30, 2017.
139* [#16954](http://dev.ckeditor.com/ticket/16954): Removed the paste dialog.
140* [#16982](http://dev.ckeditor.com/ticket/16982): Latest Safari now supports enhanced Clipboard API introduced in CKEditor 4.5.0.
141* [#17025](http://dev.ckeditor.com/ticket/17025): Updated [Bender.js](https://github.com/benderjs/benderjs) to 0.4.2.
142
143## CKEditor 4.6.2
144
145New Features:
146
147* [#16733](http://dev.ckeditor.com/ticket/16733): Added a new pastel color palette for the [Color Button](http://ckeditor.com/addon/colorbutton) plugin and a new [`config.colorButton_colorsPerRow`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-colorButton_colorsPerRow) configuration option for setting the number of rows in the color selector.
148* [#16752](http://dev.ckeditor.com/ticket/16752): Added a new Azerbaijani localization. Thanks to the [Azerbaijani language team](https://www.transifex.com/ckeditor/teams/11143/az/)!
149* [#13818](http://dev.ckeditor.com/ticket/13818): It is now possible to group [Widget](http://ckeditor.com/addon/widget) [style definitions](http://docs.ckeditor.com/#!/guide/dev_styles-section-widget-styles), so applying one style disables the other.
150
151Fixed Issues:
152
153* [#13446](http://dev.ckeditor.com/ticket/13446): [Chrome] Fixed: It is possible to type in an unfocused inline editor.
154* [#14856](http://dev.ckeditor.com/ticket/14856): Fixed: [Font size and font family](http://ckeditor.com/addon/font) reset each other when modified at certain positions.
155* [#16745](http://dev.ckeditor.com/ticket/16745): [Edge] Fixed: List items are lost when [pasted from Word](http://ckeditor.com/addon/pastefromword).
156* [#16682](http://dev.ckeditor.com/ticket/16682): [Edge] Fixed: A list gets [pasted from Word](http://ckeditor.com/addon/pastefromword) as a set of paragraphs. Added the [`config.pasteFromWord_heuristicsEdgeList`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-pasteFromWord_heuristicsEdgeList) configuration option.
157* [#10373](http://dev.ckeditor.com/ticket/10373): Fixed: Context menu items can be dragged into the editor.
158* [#16728](http://dev.ckeditor.com/ticket/16728): [IE] Fixed: [Copy Formatting](http://ckeditor.com/addon/copyformatting) breaks the editor in Quirks Mode.
159* [#16795](http://dev.ckeditor.com/ticket/16795): [IE] Fixed: [Copy Formatting](http://ckeditor.com/addon/copyformatting) breaks the editor in Compatibility Mode.
160* [#16675](http://dev.ckeditor.com/ticket/16675): Fixed: Styles applied with [Copy Formatting](http://ckeditor.com/addon/copyformatting) to a single table cell are applied to the whole table.
161* [#16753](http://dev.ckeditor.com/ticket/16753): Fixed: [`element.setSize`](http://docs.ckeditor.com/#!/api/CKEDITOR.dom.element-method-setSize) sets incorrect editor dimensions if the border width is represented as a fraction of pixels.
162* [#16705](http://dev.ckeditor.com/ticket/16705): [Firefox] Fixed: Unable to paste images as Base64 strings when using [Clipboard](http://ckeditor.com/addon/clipboard).
163* [#14869](http://dev.ckeditor.com/ticket/14869): Fixed: JavaScript error is thrown when trying to use [Find](http://ckeditor.com/addon/find) in a [`<div>`-based editor](http://ckeditor.com/addon/divarea).
164
165## CKEditor 4.6.1
166
167New Features:
168
169* [#16639](http://dev.ckeditor.com/ticket/16639): The `callback` parameter in the [CKEDITOR.ajax.post](http://docs.ckeditor.com/#!/api/CKEDITOR.ajax-method-post) method became optional.
170
171Fixed Issues:
172
173* [#11064](http://dev.ckeditor.com/ticket/11064): [Blink, WebKit] Fixed: Cannot select all editor content when a widget or a non-editable element is the first or last element of the content. Also fixes this issue in the [Select All](http://ckeditor.com/addon/selectall) plugin.
174* [#14755](http://dev.ckeditor.com/ticket/14755): [Blink, WebKit, IE8] Fixed: Browser hangs when a table is inserted in the place of a selected list with an empty last item.
175* [#16624](http://dev.ckeditor.com/ticket/16624): Fixed: Improved the [Color Button](http://ckeditor.com/addon/colorbutton) plugin which will now normalize the CSS `background` property if it only contains a color value. This fixes missing background colors when using [Paste from Word](http://ckeditor.com/addon/pastefromword).
176* [#16600](http://dev.ckeditor.com/ticket/16600): [Blink, WebKit] Fixed: Error thrown occasionally by an uninitialized editable for multiple CKEditor instances on the same page.
177
178## CKEditor 4.6
179
180New Features:
181
182* [#14569](http://dev.ckeditor.com/ticket/14569): Added a new, flat, default CKEditor skin called [Moono-Lisa](http://ckeditor.com/addon/moono-lisa). Refreshed default colors available in the [Color Button](http://ckeditor.com/addon/colorbutton) plugin ([Text Color and Background Color](http://docs.ckeditor.com/#!/guide/dev_colorbutton) feature).
183* [#14707](http://dev.ckeditor.com/ticket/14707): Added a new [Copy Formatting](http://ckeditor.com/addon/copyformatting) feature to enable easy copying of styles between your document parts.
184* Introduced the completely rewritten [Paste from Word](http://ckeditor.com/addon/pastefromword) plugin:
185 * Backward incompatibility: The [`config.pasteFromWordRemoveFontStyles`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-pasteFromWordRemoveFontStyles) option now defaults to `false`. This option will be deprecated in the future. Use [Advanced Content Filter](http://docs.ckeditor.com/#!/guide/dev_acf) to replicate the effect of setting it to `true`.
186 * Backward incompatibility: The [`config.pasteFromWordNumberedHeadingToList`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-pasteFromWordNumberedHeadingToList) and [`config.pasteFromWordRemoveStyles`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-pasteFromWordRemoveStyles) options were dropped and no longer have any effect on pasted content.
187 * Major improvements in preservation of list numbering, styling and indentation (nested lists with multiple levels).
188 * Major improvements in document structure parsing that fix plenty of issues with distorted or missing content after paste.
189* Added new translation: Occitan. Thanks to [Cédric Valmary](https://totenoc.eu/)!
190* [#10015](http://dev.ckeditor.com/ticket/10015): Keyboard shortcuts (relevant to the operating system in use) will now be displayed in tooltips and context menus.
191* [#13794](http://dev.ckeditor.com/ticket/13794): The [Upload Image](http://ckeditor.com/addon/uploadimage) feature now uses `uploaded.width/height` if set.
192* [#12541](http://dev.ckeditor.com/ticket/12541): Added the [Upload File](http://ckeditor.com/addon/uploadfile) plugin that lets you upload a file by drag&amp;dropping it into the editor content.
193* [#14449](http://dev.ckeditor.com/ticket/14449): Introduced the [Balloon Panel](http://ckeditor.com/addon/balloonpanel) plugin that lets you create stylish floating UI elements for the editor.
194* [#12077](https://dev.ckeditor.com/ticket/12077): Added support for the HTML5 `download` attribute in link (`<a>`) elements. Selecting the "Force Download" checkbox in the [Link](http://ckeditor.com/addon/link) dialog will cause the linked file to be downloaded automatically. Thanks to [sbusse](https://github.com/sbusse)!
195* [#13518](http://dev.ckeditor.com/ticket/13518): Introduced the [`additionalRequestParameters`](http://docs.ckeditor.com/#!/api/CKEDITOR.fileTools.uploadWidgetDefinition-property-additionalRequestParameters) property for file uploads to make it possible to send additional information about the uploaded file to the server.
196* [#14889](http://dev.ckeditor.com/ticket/14889): Added the [`config.image2_altRequired`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-image2_altRequired) option for the [Enhanced Image](http://ckeditor.com/addon/image2) plugin to allow making alternative text a mandatory field. Thanks to [Andrey Fedoseev](https://github.com/andreyfedoseev)!
197
198Fixed Issues:
199
200* [#9991](http://dev.ckeditor.com/ticket/9991): Fixed: [Paste from Word](http://ckeditor.com/addon/pastefromword) should only normalize input data.
201* [#7209](http://dev.ckeditor.com/ticket/7209): Fixed: Lists with 3 levels not [pasted from Word](http://ckeditor.com/addon/pastefromword) correctly.
202* [#14335](http://dev.ckeditor.com/ticket/14335): Fixed: Pasting a numbered list starting with a value different from "1" from Microsoft Word does not work correctly.
203* [#14542](http://dev.ckeditor.com/ticket/14542): Fixed: Copying a numbered list from Microsoft Word does not preserve list formatting.
204* [#14544](http://dev.ckeditor.com/ticket/14544): Fixed: Copying a nested list from Microsoft Word results in an empty list.
205* [#14660](http://dev.ckeditor.com/ticket/14660): Fixed: [Pasting text from Word](http://ckeditor.com/addon/pastefromword) breaks the styling in some cases.
206* [#14867](http://dev.ckeditor.com/ticket/14867): [Firefox] Fixed: Text gets stripped when [pasting content from Word](http://ckeditor.com/addon/pastefromword).
207* [#2507](http://dev.ckeditor.com/ticket/2507): Fixed: [Paste from Word](http://ckeditor.com/addon/pastefromword) does not detect pasting a part of a paragraph.
208* [#3336](http://dev.ckeditor.com/ticket/3336): Fixed: Extra blank row added on top of the content [pasted from Word](http://ckeditor.com/addon/pastefromword).
209* [#6115](http://dev.ckeditor.com/ticket/6115): Fixed: When Right-to-Left text direction is applied to a table [pasted from Word](http://ckeditor.com/addon/pastefromword), borders are missing on one side.
210* [#6342](http://dev.ckeditor.com/ticket/6342): Fixed: [Paste from Word](http://ckeditor.com/addon/pastefromword) filters out a basic text style when it is [configured to use attributes](http://docs.ckeditor.com/#!/guide/dev_basicstyles-section-custom-basic-text-style-definition).
211* [#6457](http://dev.ckeditor.com/ticket/6457): [IE] Fixed: [Pasting from Word](http://ckeditor.com/addon/pastefromword) is extremely slow.
212* [#6789](http://dev.ckeditor.com/ticket/6789): Fixed: The `mso-list: ignore` style is not handled properly when [pasting from Word](http://ckeditor.com/addon/pastefromword).
213* [#7262](http://dev.ckeditor.com/ticket/7262): Fixed: Lists in preformatted body disappear when [pasting from Word](http://ckeditor.com/addon/pastefromword).
214* [#7662](http://dev.ckeditor.com/ticket/7662): [Opera] Fixed: Extra empty number/bullet shown in the editor body when editing a multi-level list [pasted from Word](http://ckeditor.com/addon/pastefromword).
215* [#7807](http://dev.ckeditor.com/ticket/7807): Fixed: Last item in a list not converted to a `<li>` element after [pasting from Word](http://ckeditor.com/addon/pastefromword).
216* [#7950](http://dev.ckeditor.com/ticket/7950): [IE] Fixed: Content [from Word pasted](http://ckeditor.com/addon/pastefromword) differently than in other browsers.
217* [#7982](http://dev.ckeditor.com/ticket/7982): Fixed: Multi-level lists get split into smaller ones when [pasting from Word](http://ckeditor.com/addon/pastefromword).
218* [#8231](http://dev.ckeditor.com/ticket/8231): [WebKit, Opera] Fixed: [Paste from Word](http://ckeditor.com/addon/pastefromword) inserts empty paragraphs.
219* [#8266](http://dev.ckeditor.com/ticket/8266): Fixed: [Paste from Word](http://ckeditor.com/addon/pastefromword) inserts a blank line at the top.
220* [#8341](http://dev.ckeditor.com/ticket/8341), [#7646](http://dev.ckeditor.com/ticket/7646): Fixed: Faulty removal of empty `<span>` elements in [Paste from Word](http://ckeditor.com/addon/pastefromword) content cleanup breaking content formatting.
221* [#8754](http://dev.ckeditor.com/ticket/8754): [Firefox] Fixed: Incorrect pasting of multiple nested lists in [Paste from Word](http://ckeditor.com/addon/pastefromword).
222* [#8983](http://dev.ckeditor.com/ticket/8983): Fixed: Alignment lost when [pasting from Word](http://ckeditor.com/addon/pastefromword) with [`config.enterMode`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-enterMode) set to [`CKEDITOR.ENTER_BR`](http://docs.ckeditor.com/#!/api/CKEDITOR-property-ENTER_BR).
223* [#9331](http://dev.ckeditor.com/ticket/9331): [IE] Fixed: [Pasting text from Word](http://ckeditor.com/addon/pastefromword) creates a simple Caesar cipher.
224* [#9422](http://dev.ckeditor.com/ticket/9422): Fixed: [Paste from Word](http://ckeditor.com/addon/pastefromword) leaves an unwanted `color:windowtext` style.
225* [#10011](http://dev.ckeditor.com/ticket/10011): [IE9-10] Fixed: [`config.pasteFromWordRemoveFontStyles`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-pasteFromWordRemoveFontStyles) is ignored under certain conditions.
226* [#10643](http://dev.ckeditor.com/ticket/10643): Fixed: Differences between using <kbd>Ctrl+V</kbd> and pasting from the [Paste from Word](http://ckeditor.com/addon/pastefromword) dialog.
227* [#10784](http://dev.ckeditor.com/ticket/10784): Fixed: Lines missing when [pasting from Word](http://ckeditor.com/addon/pastefromword).
228* [#11294](http://dev.ckeditor.com/ticket/11294): [IE10] Fixed: Font size is not preserved when [pasting from Word](http://ckeditor.com/addon/pastefromword).
229* [#11627](http://dev.ckeditor.com/ticket/11627): Fixed: Missing words when [pasting from Word](http://ckeditor.com/addon/pastefromword).
230* [#12784](http://dev.ckeditor.com/ticket/12784): Fixed: Bulleted list with custom bullets gets changed to a numbered list when [pasting from Word](http://ckeditor.com/addon/pastefromword).
231* [#13174](http://dev.ckeditor.com/ticket/13174): Fixed: Data loss after [pasting from Word](http://ckeditor.com/addon/pastefromword).
232* [#13828](http://dev.ckeditor.com/ticket/13828): Fixed: Widget classes should be added to the wrapper rather than the widget element.
233* [#13829](http://dev.ckeditor.com/ticket/13829): Fixed: No class in [Widget](http://ckeditor.com/addon/widget) wrapper to identify the widget type.
234* [#13519](http://dev.ckeditor.com/ticket/13519): Server response received when uploading files should be more flexible.
235
236Other Changes:
237
238* Updated [SCAYT](http://ckeditor.com/addon/scayt) (Spell Check As You Type) and [WebSpellChecker](http://ckeditor.com/addon/wsc) plugins:
239 * Support for the new default Moono-Lisa skin.
240 * [#121](https://github.com/WebSpellChecker/ckeditor-plugin-scayt/issues/121): Fixed: [Basic Styles](http://ckeditor.com/addon/basicstyles) do not work when SCAYT is enabled.
241 * [#125](https://github.com/WebSpellChecker/ckeditor-plugin-scayt/issues/125): Fixed: Inline styles are not continued when writing multiple lines of styled text with SCAYT enabled.
242 * [#127](https://github.com/WebSpellChecker/ckeditor-plugin-scayt/issues/127): Fixed: Uncaught TypeError after enabling SCAYT in the CKEditor `<div>` element.
243 * [#128](https://github.com/WebSpellChecker/ckeditor-plugin-scayt/issues/128): Fixed: Error thrown after enabling SCAYT caused by conflicts with RequireJS.
244
245## CKEditor 4.5.11
246
247**Security Updates:**
248
249* [Severity: minor] Fixed the `target="_blank"` vulnerability reported by James Gaskell.
250
251 Issue summary: If a victim had access to a spoofed version of ckeditor.com via HTTP (e.g. due to DNS spoofing, using a hacked public network or mailicious hotspot), then when using a link to the ckeditor.com website it was possible for the attacker to change the current URL of the opening page, even if the opening page was protected with SSL.
252
253 An upgrade is recommended.
254
255New Features:
256
257* [#14747](http://dev.ckeditor.com/ticket/14747): The [Enhanced Image](http://ckeditor.com/addon/image2) caption now supports the link `target` attribute.
258* [#7154](http://dev.ckeditor.com/ticket/7154): Added support for the "Display Text" field to the [Link](http://ckeditor.com/addon/link) dialog. Thanks to [Ryan Guill](https://github.com/ryanguill)!
259
260Fixed Issues:
261
262* [#13362](http://dev.ckeditor.com/ticket/13362): [Blink, WebKit] Fixed: Active widget element is not cached when it is losing focus and it is inside an editable element.
263* [#13755](http://dev.ckeditor.com/ticket/13755): [Edge] Fixed: Pasting images does not work.
264* [#13548](http://dev.ckeditor.com/ticket/13548): [IE] Fixed: Clicking the [elements path](http://ckeditor.com/addon/elementspath) disables Cut and Copy icons.
265* [#13812](http://dev.ckeditor.com/ticket/13812): Fixed: When aborting file upload the placeholder for image is left.
266* [#14659](http://dev.ckeditor.com/ticket/14659): [Blink] Fixed: Content scrolled to the top after closing the dialog in a [`<div>`-based editor](http://ckeditor.com/addon/divarea).
267* [#14825](http://dev.ckeditor.com/ticket/14825): [Edge] Fixed: Focusing the editor causes unwanted scrolling due to dropped support for the `setActive` method.
268
269## CKEditor 4.5.10
270
271Fixed Issues:
272
273* [#10750](http://dev.ckeditor.com/ticket/10750): Fixed: The editor does not escape the `font-style` family property correctly, removing quotes and whitespace from font names.
274* [#14413](http://dev.ckeditor.com/ticket/14413): Fixed: The [Auto Grow](http://ckeditor.com/addon/autogrow) plugin with the [`config.autoGrow_onStartup`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-autoGrow_onStartup) option set to `true` does not work properly for an editor that is not visible.
275* [#14451](http://dev.ckeditor.com/ticket/14451): Fixed: Numeric element ID not escaped properly. Thanks to [Jakub Chalupa](https://github.com/chaluja7)!
276* [#14590](http://dev.ckeditor.com/ticket/14590): Fixed: Additional line break appearing after inline elements when switching modes. Thanks to [dpidcock](https://github.com/dpidcock)!
277* [#14539](https://dev.ckeditor.com/ticket/14539): Fixed: JAWS reads "selected Blank" instead of "selected <widget name>" when selecting a widget.
278* [#14701](http://dev.ckeditor.com/ticket/14701): Fixed: More precise labels for [Enhanced Image](http://ckeditor.com/addon/image2) and [Placeholder](http://ckeditor.com/addon/placeholder) widgets.
279* [#14667](http://dev.ckeditor.com/ticket/14667): [IE] Fixed: Removing background color from selected text removes background color from the whole paragraph.
280* [#14252](http://dev.ckeditor.com/ticket/14252): [IE] Fixed: Styles drop-down list does not always reflect the current style of the text line.
281* [#14275](http://dev.ckeditor.com/ticket/14275): [IE9+] Fixed: `onerror` and `onload` events are not used in browsers it could have been used when loading scripts dynamically.
282
283## CKEditor 4.5.9
284
285Fixed Issues:
286
287* [#10685](http://dev.ckeditor.com/ticket/10685): Fixed: Unreadable toolbar icons after updating to the new editor version. Fixed with [6876179](https://github.com/ckeditor/ckeditor-dev/commit/6876179db4ee97e786b07b8fd72e6b4120732185) in [ckeditor-dev](https://github.com/ckeditor/ckeditor-dev) and [6c9189f4](https://github.com/ckeditor/ckeditor-presets/commit/6c9189f46392d2c126854fe8889b820b8c76d291) in [ckeditor-presets](https://github.com/ckeditor/ckeditor-presets).
288* [#14573](https://dev.ckeditor.com/ticket/14573): Fixed: Missing [Widget](http://ckeditor.com/addon/widget) drag handler CSS when there are multiple editor instances.
289* [#14620](https://dev.ckeditor.com/ticket/14620): Fixed: Setting both the `min-height` style for the `<body>` element and the `height` style for the `<html>` element breaks the [Auto Grow](http://ckeditor.com/addon/autogrow) plugin.
290* [#14538](http://dev.ckeditor.com/ticket/14538): Fixed: Keyboard focus goes into an embedded `<iframe>` element.
291* [#14602](http://dev.ckeditor.com/ticket/14602): Fixed: The [`dom.element.removeAttribute()`](http://docs.ckeditor.com/#!/api/CKEDITOR.dom.element-method-removeAttribute) method does not remove all attributes if no parameter is given.
292* [#8679](http://dev.ckeditor.com/ticket/8679): Fixed: Better focus indication and ability to style the selected color in the [color picker dialog](http://ckeditor.com/addon/colordialog).
293* [#11697](http://dev.ckeditor.com/ticket/11697): Fixed: Content is replaced ignoring the letter case setting in the [Find and Replace](http://ckeditor.com/addon/find) dialog window.
294* [#13886](http://dev.ckeditor.com/ticket/13886): Fixed: Invalid handling of the [`CKEDITOR.style`](http://docs.ckeditor.com/#!/api/CKEDITOR.style) instance with the `styles` property by [`CKEDITOR.filter`](http://docs.ckeditor.com/#!/api/CKEDITOR.filter).
295* [#14535](http://dev.ckeditor.com/ticket/14535): Fixed: CSS syntax corrections. Thanks to [mdjdenormandie](https://github.com/mdjdenormandie)!
296
4## CKEditor 4.5.8 297## CKEditor 4.5.8
5 298
6New Features: 299New Features:
@@ -274,7 +567,7 @@ New Features:
274* Notification system: 567* Notification system:
275 * [#11580](http://dev.ckeditor.com/ticket/11580): Introduced the [notification system](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.notification). 568 * [#11580](http://dev.ckeditor.com/ticket/11580): Introduced the [notification system](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.notification).
276 * [#12810](http://dev.ckeditor.com/ticket/12810): Introduced a [notification aggregator](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.notificationAggregator) for the [notification system](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.notification) which simplifies displaying progress of many concurrent tasks. 569 * [#12810](http://dev.ckeditor.com/ticket/12810): Introduced a [notification aggregator](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.notificationAggregator) for the [notification system](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.notification) which simplifies displaying progress of many concurrent tasks.
277* [#11636](http://dev.ckeditor.com/ticket/11636): Introduced new, UX-focused, methods for getting selected HTML and deleting it &mdash; [`editor.getSelectedHtml()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-getSelectedHtml) and [`editor.deleteSelectedHtml()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-getSelectedHtml). 570* [#11636](http://dev.ckeditor.com/ticket/11636): Introduced new, UX-focused, methods for getting selected HTML and deleting it &mdash; [`editor.getSelectedHtml()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-getSelectedHtml) and [`editor.extractSelectedHtml()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-extractSelectedHtml).
278* [#12416](http://dev.ckeditor.com/ticket/12416): Added the [`widget.definition.upcastPriority`](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.widget.definition-property-upcastPriority) property which gives more control over widget upcasting order to the widget author. 571* [#12416](http://dev.ckeditor.com/ticket/12416): Added the [`widget.definition.upcastPriority`](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.widget.definition-property-upcastPriority) property which gives more control over widget upcasting order to the widget author.
279* [#12036](http://dev.ckeditor.com/ticket/12036): Initialize the editor in [read-only](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-property-readOnly) mode when the `<textarea>` element has a `readonly` attribute. 572* [#12036](http://dev.ckeditor.com/ticket/12036): Initialize the editor in [read-only](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-property-readOnly) mode when the `<textarea>` element has a `readonly` attribute.
280* [#11905](http://dev.ckeditor.com/ticket/11905): The [`resize` event](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-event-resize) passes the current dimensions in its data. 573* [#11905](http://dev.ckeditor.com/ticket/11905): The [`resize` event](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-event-resize) passes the current dimensions in its data.
diff --git a/sources/LICENSE.md b/sources/LICENSE.md
index f596f1b..0f50a9e 100644
--- a/sources/LICENSE.md
+++ b/sources/LICENSE.md
@@ -2,7 +2,7 @@ Software License Agreement
2========================== 2==========================
3 3
4CKEditor - The text editor for Internet - http://ckeditor.com 4CKEditor - The text editor for Internet - http://ckeditor.com
5Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 5Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
6 6
7Licensed under the terms of any of the following licenses at your 7Licensed under the terms of any of the following licenses at your
8choice: 8choice:
@@ -37,7 +37,7 @@ done by developers outside of CKSource with their express permission.
37 37
38The following libraries are included in CKEditor under the MIT license (see Appendix D): 38The following libraries are included in CKEditor under the MIT license (see Appendix D):
39 39
40* CKSource Samples Framework (included in the samples) - Copyright (c) 2014-2016, CKSource - Frederico Knabben. 40* CKSource Samples Framework (included in the samples) - Copyright (c) 2014-2017, CKSource - Frederico Knabben.
41* PicoModal (included in `samples/js/sf.js`) - Copyright (c) 2012 James Frasca. 41* PicoModal (included in `samples/js/sf.js`) - Copyright (c) 2012 James Frasca.
42* CodeMirror (included in the samples) - Copyright (C) 2014 by Marijn Haverbeke <marijnh@gmail.com> and others. 42* CodeMirror (included in the samples) - Copyright (C) 2014 by Marijn Haverbeke <marijnh@gmail.com> and others.
43 43
@@ -58,17 +58,17 @@ The following libraries are included in CKEditor under the BSD-3 License (see Ap
58 58
59The following libraries are included only in the development version of CKEditor under the MIT license (see Appendix D): 59The following libraries are included only in the development version of CKEditor under the MIT license (see Appendix D):
60 60
61* CKBuilder - Copyright (c) 2012-2016, CKSource - Frederico Knabben. 61* CKBuilder - Copyright (c) 2012-2017, CKSource - Frederico Knabben.
62* CKLangTool - Copyright (c) 2012-2016, CKSource - Frederico Knabben. 62* CKLangTool - Copyright (c) 2012-2017, CKSource - Frederico Knabben.
63* Optimist - Copyright 2010 James Halliday (mail@substack.net). 63* Optimist - Copyright 2010 James Halliday (mail@substack.net).
64* Q - Copyright 2009–2014 Kristopher Michael Kowal. 64* Q - Copyright 2009–2014 Kristopher Michael Kowal.
65* Tmp - Copyright (c) 2014 KARASZI István. 65* Tmp - Copyright (c) 2014 KARASZI István.
66* Mkdirp - Copyright 2010 James Halliday (mail@substack.net). 66* Mkdirp - Copyright 2010 James Halliday (mail@substack.net).
67* Bender.js - Copyright (c) 2014-2016, CKSource - Frederico Knabben. 67* Bender.js - Copyright (c) 2014-2017, CKSource - Frederico Knabben.
68* benderjs-coverage - Copyright (c) 2014-2016, CKSource - Frederico Knabben. 68* benderjs-coverage - Copyright (c) 2014-2017, CKSource - Frederico Knabben.
69* benderjs-jquery - Copyright (c) 2014-2016, CKSource - Frederico Knabben. 69* benderjs-jquery - Copyright (c) 2014-2017, CKSource - Frederico Knabben.
70* benderjs-sinon - Copyright (c) 2014-2016, CKSource - Frederico Knabben. 70* benderjs-sinon - Copyright (c) 2014-2017, CKSource - Frederico Knabben.
71* benderjs-yui - Copyright (c) 2014-2016, CKSource - Frederico Knabben. 71* benderjs-yui - Copyright (c) 2014-2017, CKSource - Frederico Knabben.
72* Grunt - Copyright (c) 2015 "Cowboy" Ben Alman. 72* Grunt - Copyright (c) 2015 "Cowboy" Ben Alman.
73* grunt-contrib-imagemin - Copyright (c) 2014 Sindre Sorhus, contributors. 73* grunt-contrib-imagemin - Copyright (c) 2014 Sindre Sorhus, contributors.
74* grunt-jscs - Copyright (c) 2014 Gustavo Henke, contributors. 74* grunt-jscs - Copyright (c) 2014 Gustavo Henke, contributors.
diff --git a/sources/README.md b/sources/README.md
index 5257b29..d18d4a1 100644
--- a/sources/README.md
+++ b/sources/README.md
@@ -1,7 +1,7 @@
1CKEditor 4 1CKEditor 4
2========== 2==========
3 3
4Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. 4Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
5http://ckeditor.com - See LICENSE.md for license information. 5http://ckeditor.com - See LICENSE.md for license information.
6 6
7CKEditor is a text editor to be used inside web pages. It's not a replacement 7CKEditor is a text editor to be used inside web pages. It's not a replacement
diff --git a/sources/adapters/jquery.js b/sources/adapters/jquery.js
new file mode 100644
index 0000000..4a7796b
--- /dev/null
+++ b/sources/adapters/jquery.js
@@ -0,0 +1,379 @@
1/**
2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */
5
6/**
7 * @fileOverview Defines the {@link CKEDITOR_Adapters.jQuery jQuery Adapter}.
8 */
9
10/**
11 * @class CKEDITOR_Adapters.jQuery
12 * @singleton
13 *
14 * The jQuery Adapter allows for easy use of basic CKEditor functions and access to the internal API.
15 * To find more information about the jQuery Adapter, go to the [jQuery Adapter section](#!/guide/dev_jquery)
16 * of the Developer's Guide or see the "Create Editors with jQuery" sample.
17 *
18 * @aside guide dev_jquery
19 */
20
21( function( $ ) {
22 if ( typeof $ == 'undefined' ) {
23 throw new Error( 'jQuery should be loaded before CKEditor jQuery adapter.' );
24 }
25
26 if ( typeof CKEDITOR == 'undefined' ) {
27 throw new Error( 'CKEditor should be loaded before CKEditor jQuery adapter.' );
28 }
29
30 /**
31 * Allows CKEditor to override `jQuery.fn.val()`. When set to `true`, the `val()` function
32 * used on textarea elements replaced with CKEditor uses the CKEditor API.
33 *
34 * This configuration option is global and is executed during the loading of the jQuery Adapter.
35 * It cannot be customized across editor instances.
36 *
37 * Read more in the [documentation](#!/guide/dev_jquery).
38 *
39 * <script>
40 * CKEDITOR.config.jqueryOverrideVal = true;
41 * </script>
42 *
43 * <!-- Important: The jQuery Adapter is loaded *after* setting jqueryOverrideVal. -->
44 * <script src="/ckeditor/adapters/jquery.js"></script>
45 *
46 * <script>
47 * $( 'textarea' ).ckeditor();
48 * // ...
49 * $( 'textarea' ).val( 'New content' );
50 * </script>
51 *
52 * @cfg {Boolean} [jqueryOverrideVal=true]
53 * @member CKEDITOR.config
54 */
55 CKEDITOR.config.jqueryOverrideVal =
56 typeof CKEDITOR.config.jqueryOverrideVal == 'undefined' ? true : CKEDITOR.config.jqueryOverrideVal;
57
58 // jQuery object methods.
59 $.extend( $.fn, {
60 /**
61 * Returns an existing CKEditor instance for the first matched element.
62 * Allows to easily use the internal API. Does not return a jQuery object.
63 *
64 * Raises an exception if the editor does not exist or is not ready yet.
65 *
66 * @returns CKEDITOR.editor
67 * @deprecated Use {@link #editor editor property} instead.
68 */
69 ckeditorGet: function() {
70 var instance = this.eq( 0 ).data( 'ckeditorInstance' );
71
72 if ( !instance )
73 throw 'CKEditor is not initialized yet, use ckeditor() with a callback.';
74
75 return instance;
76 },
77
78 /**
79 * A jQuery function which triggers the creation of CKEditor with `<textarea>` and
80 * {@link CKEDITOR.dtd#$editable editable} elements.
81 * Every `<textarea>` element will be converted to a classic (`iframe`-based) editor,
82 * while any other supported element will be converted to an inline editor.
83 * This method binds the callback to the `instanceReady` event of all instances.
84 * If the editor has already been created, the callback is fired straightaway.
85 * You can also create multiple editors at once by using `$( '.className' ).ckeditor();`.
86 *
87 * **Note**: jQuery chaining and mixed parameter order is allowed.
88 *
89 * @param {Function} callback
90 * Function to be run on the editor instance. Callback takes the source element as a parameter.
91 *
92 * $( 'textarea' ).ckeditor( function( textarea ) {
93 * // Callback function code.
94 * } );
95 *
96 * @param {Object} config
97 * Configuration options for new instance(s) if not already created.
98 *
99 * $( 'textarea' ).ckeditor( {
100 * uiColor: '#9AB8F3'
101 * } );
102 *
103 * @returns jQuery.fn
104 */
105 ckeditor: function( callback, config ) {
106 if ( !CKEDITOR.env.isCompatible )
107 throw new Error( 'The environment is incompatible.' );
108
109 // Reverse the order of arguments if the first one isn't a function.
110 if ( !$.isFunction( callback ) ) {
111 var tmp = config;
112 config = callback;
113 callback = tmp;
114 }
115
116 // An array of instanceReady callback promises.
117 var promises = [];
118
119 config = config || {};
120
121 // Iterate over the collection.
122 this.each( function() {
123 var $element = $( this ),
124 editor = $element.data( 'ckeditorInstance' ),
125 instanceLock = $element.data( '_ckeditorInstanceLock' ),
126 element = this,
127 dfd = new $.Deferred();
128
129 promises.push( dfd.promise() );
130
131 if ( editor && !instanceLock ) {
132 if ( callback )
133 callback.apply( editor, [ this ] );
134
135 dfd.resolve();
136 } else if ( !instanceLock ) {
137 // CREATE NEW INSTANCE
138
139 // Handle config.autoUpdateElement inside this plugin if desired.
140 if ( config.autoUpdateElement || ( typeof config.autoUpdateElement == 'undefined' && CKEDITOR.config.autoUpdateElement ) ) {
141 config.autoUpdateElementJquery = true;
142 }
143
144 // Always disable config.autoUpdateElement.
145 config.autoUpdateElement = false;
146 $element.data( '_ckeditorInstanceLock', true );
147
148 // Set instance reference in element's data.
149 if ( $( this ).is( 'textarea' ) )
150 editor = CKEDITOR.replace( element, config );
151 else
152 editor = CKEDITOR.inline( element, config );
153
154 $element.data( 'ckeditorInstance', editor );
155
156 // Register callback.
157 editor.on( 'instanceReady', function( evt ) {
158 var editor = evt.editor;
159
160 setTimeout( function() {
161 // Delay bit more if editor is still not ready.
162 if ( !editor.element ) {
163 setTimeout( arguments.callee, 100 );
164 return;
165 }
166
167 // Remove this listener. Triggered when new instance is ready.
168 evt.removeListener();
169
170 /**
171 * Forwards the CKEditor {@link CKEDITOR.editor#event-dataReady dataReady event} as a jQuery event.
172 *
173 * @event dataReady
174 * @param {CKEDITOR.editor} editor Editor instance.
175 */
176 editor.on( 'dataReady', function() {
177 $element.trigger( 'dataReady.ckeditor', [ editor ] );
178 } );
179
180 /**
181 * Forwards the CKEditor {@link CKEDITOR.editor#event-setData setData event} as a jQuery event.
182 *
183 * @event setData
184 * @param {CKEDITOR.editor} editor Editor instance.
185 * @param data
186 * @param {String} data.dataValue The data that will be used.
187 */
188 editor.on( 'setData', function( evt ) {
189 $element.trigger( 'setData.ckeditor', [ editor, evt.data ] );
190 } );
191
192 /**
193 * Forwards the CKEditor {@link CKEDITOR.editor#event-getData getData event} as a jQuery event.
194 *
195 * @event getData
196 * @param {CKEDITOR.editor} editor Editor instance.
197 * @param data
198 * @param {String} data.dataValue The data that will be returned.
199 */
200 editor.on( 'getData', function( evt ) {
201 $element.trigger( 'getData.ckeditor', [ editor, evt.data ] );
202 }, 999 );
203
204 /**
205 * Forwards the CKEditor {@link CKEDITOR.editor#event-destroy destroy event} as a jQuery event.
206 *
207 * @event destroy
208 * @param {CKEDITOR.editor} editor Editor instance.
209 */
210 editor.on( 'destroy', function() {
211 $element.trigger( 'destroy.ckeditor', [ editor ] );
212 } );
213
214 // Overwrite save button to call jQuery submit instead of javascript submit.
215 // Otherwise jQuery.forms does not work properly
216 editor.on( 'save', function() {
217 $( element.form ).submit();
218 return false;
219 }, null, null, 20 );
220
221 // Integrate with form submit.
222 if ( editor.config.autoUpdateElementJquery && $element.is( 'textarea' ) && $( element.form ).length ) {
223 var onSubmit = function() {
224 $element.ckeditor( function() {
225 editor.updateElement();
226 } );
227 };
228
229 // Bind to submit event.
230 $( element.form ).submit( onSubmit );
231
232 // Bind to form-pre-serialize from jQuery Forms plugin.
233 $( element.form ).bind( 'form-pre-serialize', onSubmit );
234
235 // Unbind when editor destroyed.
236 $element.bind( 'destroy.ckeditor', function() {
237 $( element.form ).unbind( 'submit', onSubmit );
238 $( element.form ).unbind( 'form-pre-serialize', onSubmit );
239 } );
240 }
241
242 // Garbage collect on destroy.
243 editor.on( 'destroy', function() {
244 $element.removeData( 'ckeditorInstance' );
245 } );
246
247 // Remove lock.
248 $element.removeData( '_ckeditorInstanceLock' );
249
250 /**
251 * Forwards the CKEditor {@link CKEDITOR.editor#event-instanceReady instanceReady event} as a jQuery event.
252 *
253 * @event instanceReady
254 * @param {CKEDITOR.editor} editor Editor instance.
255 */
256 $element.trigger( 'instanceReady.ckeditor', [ editor ] );
257
258 // Run given (first) code.
259 if ( callback )
260 callback.apply( editor, [ element ] );
261
262 dfd.resolve();
263 }, 0 );
264 }, null, null, 9999 );
265 } else {
266 // Editor is already during creation process, bind our code to the event.
267 editor.once( 'instanceReady', function() {
268 setTimeout( function() {
269 // Delay bit more if editor is still not ready.
270 if ( !editor.element ) {
271 setTimeout( arguments.callee, 100 );
272 return;
273 }
274
275 // Run given code.
276 if ( editor.element.$ == element && callback )
277 callback.apply( editor, [ element ] );
278
279 dfd.resolve();
280 }, 0 );
281 }, null, null, 9999 );
282 }
283 } );
284
285 /**
286 * The [jQuery Promise object]((http://api.jquery.com/promise/)) that handles the asynchronous constructor.
287 * This promise will be resolved after **all** of the constructors.
288 *
289 * @property {Function} promise
290 */
291 var dfd = new $.Deferred();
292
293 this.promise = dfd.promise();
294
295 $.when.apply( this, promises ).then( function() {
296 dfd.resolve();
297 } );
298
299 /**
300 * Existing CKEditor instance. Allows to easily use the internal API.
301 *
302 * **Note**: This is not a jQuery object.
303 *
304 * var editor = $( 'textarea' ).ckeditor().editor;
305 *
306 * @property {CKEDITOR.editor} editor
307 */
308 this.editor = this.eq( 0 ).data( 'ckeditorInstance' );
309
310 return this;
311 }
312 } );
313
314 /**
315 * Overwritten jQuery `val()` method for `<textarea>` elements that have bound CKEditor instances.
316 * This method gets or sets editor content by using the {@link CKEDITOR.editor#method-getData editor.getData()}
317 * or {@link CKEDITOR.editor#method-setData editor.setData()} methods. To handle
318 * the {@link CKEDITOR.editor#method-setData editor.setData()} callback (as `setData` is asynchronous),
319 * `val( 'some data' )` will return a [jQuery Promise object](http://api.jquery.com/promise/).
320 *
321 * @method val
322 * @returns String|Number|Array|jQuery.fn|function(jQuery Promise)
323 */
324 if ( CKEDITOR.config.jqueryOverrideVal ) {
325 $.fn.val = CKEDITOR.tools.override( $.fn.val, function( oldValMethod ) {
326 return function( value ) {
327 // Setter, i.e. .val( "some data" );
328 if ( arguments.length ) {
329 var _this = this,
330 promises = [], //use promise to handle setData callback
331
332 result = this.each( function() {
333 var $elem = $( this ),
334 editor = $elem.data( 'ckeditorInstance' );
335
336 // Handle .val for CKEditor.
337 if ( $elem.is( 'textarea' ) && editor ) {
338 var dfd = new $.Deferred();
339
340 editor.setData( value, function() {
341 dfd.resolve();
342 } );
343
344 promises.push( dfd.promise() );
345 return true;
346 // Call default .val function for rest of elements
347 } else {
348 return oldValMethod.call( $elem, value );
349 }
350 } );
351
352 // If there is no promise return default result (jQuery object of chaining).
353 if ( !promises.length )
354 return result;
355 // Create one promise which will be resolved when all of promises will be done.
356 else {
357 var dfd = new $.Deferred();
358
359 $.when.apply( this, promises ).done( function() {
360 dfd.resolveWith( _this );
361 } );
362
363 return dfd.promise();
364 }
365 }
366 // Getter .val();
367 else {
368 var $elem = $( this ).eq( 0 ),
369 editor = $elem.data( 'ckeditorInstance' );
370
371 if ( $elem.is( 'textarea' ) && editor )
372 return editor.getData();
373 else
374 return oldValMethod.call( $elem );
375 }
376 };
377 } );
378 }
379} )( window.jQuery );
diff --git a/sources/build-config.js b/sources/build-config.js
new file mode 100644
index 0000000..207d280
--- /dev/null
+++ b/sources/build-config.js
@@ -0,0 +1,91 @@
1/**
2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */
5
6/**
7 * This file was added automatically by CKEditor builder.
8 * You may re-use it at any time to build CKEditor again.
9 *
10 * If you would like to build CKEditor online again
11 * (for example to upgrade), visit one the following links:
12 *
13 * (1) http://ckeditor.com/builder
14 * Visit online builder to build CKEditor from scratch.
15 *
16 * (2) http://ckeditor.com/builder/9323150a85589a6899021c19376669e6
17 * Visit online builder to build CKEditor, starting with the same setup as before.
18 *
19 * (3) http://ckeditor.com/builder/download/9323150a85589a6899021c19376669e6
20 * Straight download link to the latest version of CKEditor (Optimized) with the same setup as before.
21 *
22 * NOTE:
23 * This file is not used by CKEditor, you may remove it.
24 * Changing this file will not change your CKEditor configuration.
25 */
26
27var CKBUILDER_CONFIG = {
28 skin: 'moono',
29 preset: 'full',
30 ignore: [
31 '.DS_Store',
32 '.bender',
33 '.editorconfig',
34 '.gitattributes',
35 '.gitignore',
36 '.idea',
37 '.jscsrc',
38 '.jshintignore',
39 '.jshintrc',
40 '.mailmap',
41 '.travis.yml',
42 'bender-err.log',
43 'bender-out.log',
44 'bender.ci.js',
45 'bender.js',
46 'dev',
47 'gruntfile.js',
48 'less',
49 'node_modules',
50 'package.json',
51 'tests'
52 ],
53 plugins : {
54 'Audio' : 1,
55 'a11yhelp' : 1,
56 'basicstyles' : 1,
57 'contextmenu' : 1,
58 'dialogadvtab' : 1,
59 'elementspath' : 1,
60 'enterkey' : 1,
61 'entities' : 1,
62 'filebrowser' : 1,
63 'floatingspace' : 1,
64 'format' : 1,
65 'horizontalrule' : 1,
66 'html5video' : 1,
67 'htmlwriter' : 1,
68 'iframe' : 1,
69 'image' : 1,
70 'indentblock' : 1,
71 'indentlist' : 1,
72 'justify' : 1,
73 'link' : 1,
74 'list' : 1,
75 'liststyle' : 1,
76 'magicline' : 1,
77 'maximize' : 1,
78 'oembed' : 1,
79 'removeformat' : 1,
80 'resize' : 1,
81 'showborders' : 1,
82 'sourcearea' : 1,
83 'tab' : 1,
84 'toolbar' : 1,
85 'wysiwygarea' : 1
86 },
87 languages : {
88 'en' : 1,
89 'fr' : 1
90 }
91}; \ No newline at end of file
diff --git a/sources/ckeditor.js b/sources/ckeditor.js
index e9912d6..8dc999b 100644
--- a/sources/ckeditor.js
+++ b/sources/ckeditor.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -42,7 +42,7 @@ else {
42 * 42 *
43 * CKEDITOR.skinName = 'myskin,/customstuff/myskin/'; 43 * CKEDITOR.skinName = 'myskin,/customstuff/myskin/';
44 * 44 *
45 * @cfg {String} [skinName='moono'] 45 * @cfg {String} [skinName='moono-lisa']
46 * @member CKEDITOR 46 * @member CKEDITOR
47 */ 47 */
48CKEDITOR.skinName = 'moono'; 48CKEDITOR.skinName = 'moono-lisa';
diff --git a/sources/config.js b/sources/config.js
index 3653a22..049b0d9 100644
--- a/sources/config.js
+++ b/sources/config.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -7,7 +7,7 @@ CKEDITOR.editorConfig = function( config ) {
7 7
8 // %REMOVE_START% 8 // %REMOVE_START%
9 // The configuration options below are needed when running CKEditor from source files. 9 // The configuration options below are needed when running CKEditor from source files.
10 config.plugins = 'dialogui,dialog,a11yhelp,basicstyles,panel,floatpanel,menu,contextmenu,dialogadvtab,elementspath,enterkey,entities,popup,filebrowser,floatingspace,listblock,button,richcombo,format,horizontalrule,htmlwriter,fakeobjects,iframe,image,indent,indentblock,indentlist,justify,link,list,liststyle,magicline,maximize,removeformat,resize,showborders,sourcearea,tab,toolbar,wysiwygarea'; 10 config.plugins = 'dialogui,dialog,a11yhelp,dialogadvtab,basicstyles,panel,floatpanel,menu,contextmenu,resize,button,toolbar,elementspath,enterkey,entities,popup,filebrowser,floatingspace,listblock,richcombo,format,horizontalrule,htmlwriter,fakeobjects,iframe,wysiwygarea,image,indent,indentblock,indentlist,justify,link,list,liststyle,magicline,maximize,removeformat,showborders,sourcearea,tab,lineutils,notification,clipboard,widgetselection,widget,oembed,Audio,html5video';
11 config.skin = 'moono'; 11 config.skin = 'moono';
12 // %REMOVE_END% 12 // %REMOVE_END%
13 13
diff --git a/sources/contents.css b/sources/contents.css
index bef3ebc..8571059 100644
--- a/sources/contents.css
+++ b/sources/contents.css
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5 5
@@ -133,3 +133,76 @@ a > img {
133 border: none; 133 border: none;
134 outline: 1px solid #0782C1; 134 outline: 1px solid #0782C1;
135} 135}
136
137/* Widget Styles */
138.code-featured
139{
140 border: 5px solid red;
141}
142
143.math-featured
144{
145 padding: 20px;
146 box-shadow: 0 0 2px rgba(200, 0, 0, 1);
147 background-color: rgba(255, 0, 0, 0.05);
148 margin: 10px;
149}
150
151.image-clean
152{
153 border: 0;
154 background: none;
155 padding: 0;
156}
157
158.image-clean > figcaption
159{
160 font-size: .9em;
161 text-align: right;
162}
163
164.image-grayscale
165{
166 background-color: white;
167 color: #666;
168}
169
170.image-grayscale img, img.image-grayscale
171{
172 filter: grayscale(100%);
173}
174
175.embed-240p
176{
177 max-width: 426px;
178 max-height: 240px;
179 margin:0 auto;
180}
181
182.embed-360p
183{
184 max-width: 640px;
185 max-height: 360px;
186 margin:0 auto;
187}
188
189.embed-480p
190{
191 max-width: 854px;
192 max-height: 480px;
193 margin:0 auto;
194}
195
196.embed-720p
197{
198 max-width: 1280px;
199 max-height: 720px;
200 margin:0 auto;
201}
202
203.embed-1080p
204{
205 max-width: 1920px;
206 max-height: 1080px;
207 margin:0 auto;
208}
diff --git a/sources/core/_bootstrap.js b/sources/core/_bootstrap.js
index 9fcbe25..cc7fb38 100644
--- a/sources/core/_bootstrap.js
+++ b/sources/core/_bootstrap.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -8,7 +8,7 @@
8 */ 8 */
9 9
10( function() { 10( function() {
11 // Disable HC detection in WebKit. (#5429) 11 // Disable HC detection in WebKit. (http://dev.ckeditor.com/ticket/5429)
12 if ( CKEDITOR.env.webkit ) 12 if ( CKEDITOR.env.webkit )
13 CKEDITOR.env.hc = false; 13 CKEDITOR.env.hc = false;
14 else { 14 else {
@@ -19,13 +19,13 @@
19 hcDetect.appendTo( CKEDITOR.document.getHead() ); 19 hcDetect.appendTo( CKEDITOR.document.getHead() );
20 20
21 // Update CKEDITOR.env. 21 // Update CKEDITOR.env.
22 // Catch exception needed sometimes for FF. (#4230) 22 // Catch exception needed sometimes for FF. (http://dev.ckeditor.com/ticket/4230)
23 try { 23 try {
24 var top = hcDetect.getComputedStyle( 'border-top-color' ), 24 var top = hcDetect.getComputedStyle( 'border-top-color' ),
25 right = hcDetect.getComputedStyle( 'border-right-color' ); 25 right = hcDetect.getComputedStyle( 'border-right-color' );
26 26
27 // We need to check if getComputedStyle returned any value, because on FF 27 // We need to check if getComputedStyle returned any value, because on FF
28 // it returnes empty string if CKEditor is loaded in hidden iframe. (#11121) 28 // it returnes empty string if CKEditor is loaded in hidden iframe. (http://dev.ckeditor.com/ticket/11121)
29 CKEDITOR.env.hc = !!( top && top == right ); 29 CKEDITOR.env.hc = !!( top && top == right );
30 } catch ( e ) { 30 } catch ( e ) {
31 CKEDITOR.env.hc = false; 31 CKEDITOR.env.hc = false;
diff --git a/sources/core/ckeditor.js b/sources/core/ckeditor.js
index 2b3e5cd..95dd67a 100644
--- a/sources/core/ckeditor.js
+++ b/sources/core/ckeditor.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -126,7 +126,7 @@ CKEDITOR.remove = function( editor ) {
126 }; 126 };
127 127
128 /** 128 /**
129 * Returns a string will all CSS rules passed to the {@link CKEDITOR#addCss} method. 129 * Returns a string with all CSS rules passed to the {@link CKEDITOR#addCss} method.
130 * 130 *
131 * @returns {String} A string containing CSS rules. 131 * @returns {String} A string containing CSS rules.
132 */ 132 */
diff --git a/sources/core/ckeditor_base.js b/sources/core/ckeditor_base.js
index 1e90d72..8c36b11 100644
--- a/sources/core/ckeditor_base.js
+++ b/sources/core/ckeditor_base.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -33,6 +33,10 @@ if ( !window.CKEDITOR ) {
33 * by the editor code, guaranteeing clean cache results when 33 * by the editor code, guaranteeing clean cache results when
34 * upgrading. 34 * upgrading.
35 * 35 *
36 * **Note:** There is [a known issue where "icons.png" does not include
37 * timestamp](http://dev.ckeditor.com/ticket/10685) and might get cached.
38 * We are working on having it fixed.
39 *
36 * alert( CKEDITOR.timestamp ); // e.g. '87dm' 40 * alert( CKEDITOR.timestamp ); // e.g. '87dm'
37 */ 41 */
38 timestamp: '', // %REMOVE_LINE% 42 timestamp: '', // %REMOVE_LINE%
diff --git a/sources/core/ckeditor_basic.js b/sources/core/ckeditor_basic.js
index 847d661..c07e4d9 100644
--- a/sources/core/ckeditor_basic.js
+++ b/sources/core/ckeditor_basic.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/core/command.js b/sources/core/command.js
index a0e07b5..128cea4 100644
--- a/sources/core/command.js
+++ b/sources/core/command.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -47,7 +47,7 @@ CKEDITOR.command = function( editor, commandDefinition ) {
47 if ( this.state == CKEDITOR.TRISTATE_DISABLED || !this.checkAllowed() ) 47 if ( this.state == CKEDITOR.TRISTATE_DISABLED || !this.checkAllowed() )
48 return false; 48 return false;
49 49
50 if ( this.editorFocus ) // Give editor focus if necessary (#4355). 50 if ( this.editorFocus ) // Give editor focus if necessary (http://dev.ckeditor.com/ticket/4355).
51 editor.focus(); 51 editor.focus();
52 52
53 if ( this.fire( 'exec' ) === false ) 53 if ( this.fire( 'exec' ) === false )
diff --git a/sources/core/commanddefinition.js b/sources/core/commanddefinition.js
index 68b2253..10a040f 100644
--- a/sources/core/commanddefinition.js
+++ b/sources/core/commanddefinition.js
@@ -1,10 +1,10 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
6/** 6/**
7 * @fileOverview Defines the "virtual" {@link CKEDITOR.commandDefinition} class, 7 * @fileOverview Defines the "virtual" {@link CKEDITOR.commandDefinition} class
8 * which contains the defintion of a command. This file is for 8 * which contains the defintion of a command. This file is for
9 * documentation purposes only. 9 * documentation purposes only.
10 */ 10 */
@@ -27,14 +27,14 @@
27 * } ); 27 * } );
28 * 28 *
29 * @method exec 29 * @method exec
30 * @param {CKEDITOR.editor} editor The editor within which run the command. 30 * @param {CKEDITOR.editor} editor The editor within which to run the command.
31 * @param {Object} [data] Additional data to be used to execute the command. 31 * @param {Object} [data] Additional data to be used to execute the command.
32 * @returns {Boolean} Whether the command has been successfully executed. 32 * @returns {Boolean} Whether the command has been successfully executed.
33 * Defaults to `true`, if nothing is returned. 33 * Defaults to `true` if nothing is returned.
34 */ 34 */
35 35
36/** 36/**
37 * Whether the command need to be hooked into the redo/undo system. 37 * Whether the command needs to be hooked into the redo/undo system.
38 * 38 *
39 * editorInstance.addCommand( 'alertName', { 39 * editorInstance.addCommand( 'alertName', {
40 * exec: function( editor ) { 40 * exec: function( editor ) {
@@ -52,14 +52,18 @@
52 * command itself manually, and that the return value of this command is not to 52 * command itself manually, and that the return value of this command is not to
53 * be returned by the {@link #exec} function. 53 * be returned by the {@link #exec} function.
54 * 54 *
55 * editorInstance.addCommand( 'loadOptions', { 55 * editorInstance.addCommand( 'loadoptions', {
56 * exec: function( editor ) { 56 * exec: function( editor ) {
57 * var cmd = this;
57 * // Asynchronous operation below. 58 * // Asynchronous operation below.
58 * CKEDITOR.ajax.loadXml( 'data.xml', function() { 59 * CKEDITOR.ajax.loadXml( 'data.xml', function() {
59 * editor.fire( 'afterCommandExec' ); 60 * editor.fire( 'afterCommandExec', {
61 * name: 'loadoptions',
62 * command: cmd
63 * } );
60 * } ); 64 * } );
61 * }, 65 * },
62 * async: true // The command need some time to complete after exec function returns. 66 * async: true // The command needs some time to complete after the exec function returns.
63 * } ); 67 * } );
64 * 68 *
65 * @property {Boolean} [async=false] 69 * @property {Boolean} [async=false]
@@ -72,7 +76,7 @@
72 * exec: function( editor ) { 76 * exec: function( editor ) {
73 * // ... 77 * // ...
74 * }, 78 * },
75 * editorFocus: false // The command doesn't require focusing the editing document. 79 * editorFocus: false // The command does not require focusing the editing document.
76 * } ); 80 * } );
77 * 81 *
78 * See also {@link CKEDITOR.command#editorFocus}. 82 * See also {@link CKEDITOR.command#editorFocus}.
@@ -88,14 +92,14 @@
88 * exec: function( editor ) { 92 * exec: function( editor ) {
89 * // ... 93 * // ...
90 * }, 94 * },
91 * startDisabled: true // Command is unavailable until selection is inside a link. 95 * startDisabled: true // The command is unavailable until the selection is inside a link.
92 * } ); 96 * } );
93 * 97 *
94 * @property {Boolean} [startDisabled=false] 98 * @property {Boolean} [startDisabled=false]
95 */ 99 */
96 100
97/** 101/**
98 * Indicates that this command is sensible to the selection context. 102 * Indicates that this command is sensitive to the selection context.
99 * If `true`, the {@link CKEDITOR.command#method-refresh} method will be 103 * If `true`, the {@link CKEDITOR.command#method-refresh} method will be
100 * called for this command on selection changes, with a single parameter 104 * called for this command on selection changes, with a single parameter
101 * representing the current elements path. 105 * representing the current elements path.
@@ -104,10 +108,10 @@
104 */ 108 */
105 109
106/** 110/**
107 * Defined by command definition a function to determinate the command state, it will be invoked 111 * Defined by the command definition, a function to determine the command state. It will be invoked
108 * when editor has it's `states` or `selection` changed. 112 * when the editor has its `states` or `selection` changed.
109 * 113 *
110 * **Note:** The function provided must be calling {@link CKEDITOR.command#setState} in all circumstance, 114 * **Note:** The function provided must be calling {@link CKEDITOR.command#setState} in all circumstances
111 * if it is intended to update the command state. 115 * if it is intended to update the command state.
112 * 116 *
113 * @method refresh 117 * @method refresh
@@ -132,7 +136,7 @@
132 * exec: function( editor ) { 136 * exec: function( editor ) {
133 * // ... 137 * // ...
134 * }, 138 * },
135 * modes: { wysiwyg:1 } // Command is available in wysiwyg mode only. 139 * modes: { wysiwyg:1 } // The command is available in wysiwyg mode only.
136 * } ); 140 * } );
137 * 141 *
138 * See also {@link CKEDITOR.command#modes}. 142 * See also {@link CKEDITOR.command#modes}.
@@ -146,3 +150,13 @@
146 * @since 4.0 150 * @since 4.0
147 * @property {Boolean} [readOnly=false] 151 * @property {Boolean} [readOnly=false]
148 */ 152 */
153
154/**
155 * A property that should be set when a command has no keystroke assigned by {@link CKEDITOR.editor#setKeystroke}, but
156 * the keystroke is still supported. For example: `cut`, `copy` and `paste` commands are handled that way.
157 * This property is used when displaying keystroke information in tooltips and context menus. It is used by
158 * {@link CKEDITOR.editor#getCommandKeystroke}.
159 *
160 * @since 4.6.0
161 * @property {Number} fakeKeystroke
162 */
diff --git a/sources/core/config.js b/sources/core/config.js
index 4ce98d7..f0f4aec 100644
--- a/sources/core/config.js
+++ b/sources/core/config.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/core/creators/inline.js b/sources/core/creators/inline.js
index a1a653c..adb402f 100644
--- a/sources/core/creators/inline.js
+++ b/sources/core/creators/inline.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/core/creators/themedui.js b/sources/core/creators/themedui.js
index c87d079..4e7a93e 100644
--- a/sources/core/creators/themedui.js
+++ b/sources/core/creators/themedui.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -20,7 +20,7 @@ CKEDITOR.replaceClass = 'ckeditor';
20 * Replaces a `<textarea>` or a DOM element (`<div>`) with a CKEditor 20 * Replaces a `<textarea>` or a DOM element (`<div>`) with a CKEditor
21 * instance. For textareas, the initial value in the editor will be the 21 * instance. For textareas, the initial value in the editor will be the
22 * textarea value. For DOM elements, their `innerHTML` will be used 22 * textarea value. For DOM elements, their `innerHTML` will be used
23 * instead. We recommend using `<textarea>` and `<div>` elements only. 23 * instead. It is recommended to use `<textarea>` and `<div>` elements only.
24 * 24 *
25 * <textarea id="myfield" name="myfield"></textarea> 25 * <textarea id="myfield" name="myfield"></textarea>
26 * ... 26 * ...
@@ -79,10 +79,10 @@ CKEDITOR.replaceClass = 'ckeditor';
79 * // Replace all <textarea class="myClassName"> elements in the page. 79 * // Replace all <textarea class="myClassName"> elements in the page.
80 * CKEDITOR.replaceAll( 'myClassName' ); 80 * CKEDITOR.replaceAll( 'myClassName' );
81 * 81 *
82 * // Selectively replace <textarea> elements, based on custom assertions. 82 * // Selectively replace <textarea> elements, based on a custom evaluation function.
83 * CKEDITOR.replaceAll( function( textarea, config ) { 83 * CKEDITOR.replaceAll( function( textarea, config ) {
84 * // An assertion function that needs to be evaluated for the <textarea> 84 * // A function that needs to be evaluated for the <textarea>
85 * // to be replaced. It must explicitely return "false" to ignore a 85 * // to be replaced. It must explicitly return "false" to ignore a
86 * // specific <textarea>. 86 * // specific <textarea>.
87 * // You can also customize the editor instance by having the function 87 * // You can also customize the editor instance by having the function
88 * // modify the "config" parameter. 88 * // modify the "config" parameter.
@@ -109,7 +109,7 @@ CKEDITOR.replaceClass = 'ckeditor';
109 * </html> 109 * </html>
110 * 110 *
111 * @param {String} [className] The `<textarea>` class name. 111 * @param {String} [className] The `<textarea>` class name.
112 * @param {Function} [function] An assertion function that must return `true` for a `<textarea>` 112 * @param {Function} [evaluator] An evaluation function that must return `true` for a `<textarea>`
113 * to be replaced with the editor. If the function returns `false`, the `<textarea>` element 113 * to be replaced with the editor. If the function returns `false`, the `<textarea>` element
114 * will not be replaced. 114 * will not be replaced.
115 */ 115 */
@@ -133,7 +133,7 @@ CKEDITOR.replaceClass = 'ckeditor';
133 if ( !classRegex.test( textarea.className ) ) 133 if ( !classRegex.test( textarea.className ) )
134 continue; 134 continue;
135 } else if ( typeof arguments[ 0 ] == 'function' ) { 135 } else if ( typeof arguments[ 0 ] == 'function' ) {
136 // An assertion function could be passed as the function parameter. 136 // An evaluation function could be passed as the function parameter.
137 // It must explicitly return "false" to ignore a specific <textarea>. 137 // It must explicitly return "false" to ignore a specific <textarea>.
138 config = {}; 138 config = {};
139 if ( arguments[ 0 ]( textarea, config ) === false ) 139 if ( arguments[ 0 ]( textarea, config ) === false )
@@ -280,10 +280,10 @@ CKEDITOR.replaceClass = 'ckeditor';
280 outer = container; 280 outer = container;
281 } 281 }
282 282
283 // Set as border box width. (#5353) 283 // Set as border box width. (http://dev.ckeditor.com/ticket/5353)
284 outer.setSize( 'width', width, true ); 284 outer.setSize( 'width', width, true );
285 285
286 // WebKit needs to refresh the iframe size to avoid rendering issues. (1/2) (#8348) 286 // WebKit needs to refresh the iframe size to avoid rendering issues. (1/2) (http://dev.ckeditor.com/ticket/8348)
287 contentsFrame && ( contentsFrame.style.width = '1%' ); 287 contentsFrame && ( contentsFrame.style.width = '1%' );
288 288
289 // Get the height delta between the outer table and the content area. 289 // Get the height delta between the outer table and the content area.
@@ -295,7 +295,7 @@ CKEDITOR.replaceClass = 'ckeditor';
295 295
296 contents.setStyle( 'height', resultContentsHeight + 'px' ); 296 contents.setStyle( 'height', resultContentsHeight + 'px' );
297 297
298 // WebKit needs to refresh the iframe size to avoid rendering issues. (2/2) (#8348) 298 // WebKit needs to refresh the iframe size to avoid rendering issues. (2/2) (http://dev.ckeditor.com/ticket/8348)
299 contentsFrame && ( contentsFrame.style.width = '100%' ); 299 contentsFrame && ( contentsFrame.style.width = '100%' );
300 300
301 // Emit a resize event. 301 // Emit a resize event.
@@ -309,8 +309,8 @@ CKEDITOR.replaceClass = 'ckeditor';
309 309
310 /** 310 /**
311 * Gets the element that can be used to check the editor size. This method 311 * Gets the element that can be used to check the editor size. This method
312 * is mainly used by the `resize` plugin, which adds a UI handle that can be used 312 * is mainly used by the [Editor Resize](http://ckeditor.com/addon/resize) plugin, which adds
313 * to resize the editor. 313 * a UI handle that can be used to resize the editor.
314 * 314 *
315 * @param {Boolean} forContents Whether to return the "contents" part of the theme instead of the container. 315 * @param {Boolean} forContents Whether to return the "contents" part of the theme instead of the container.
316 * @returns {CKEDITOR.dom.element} The resizable element. 316 * @returns {CKEDITOR.dom.element} The resizable element.
@@ -337,7 +337,7 @@ CKEDITOR.replaceClass = 'ckeditor';
337 // replacement will be done later in the editor creation lifecycle. 337 // replacement will be done later in the editor creation lifecycle.
338 element.setStyle( 'visibility', 'hidden' ); 338 element.setStyle( 'visibility', 'hidden' );
339 339
340 // #8031 Remember if textarea was required and remove the attribute. 340 // http://dev.ckeditor.com/ticket/8031 Remember if textarea was required and remove the attribute.
341 editor._.required = element.hasAttribute( 'required' ); 341 editor._.required = element.hasAttribute( 'required' );
342 element.removeAttribute( 'required' ); 342 element.removeAttribute( 'required' );
343 } 343 }
@@ -422,7 +422,7 @@ CKEDITOR.replaceClass = 'ckeditor';
422 topHtml: topHtml ? '<span id="' + editor.ui.spaceId( 'top' ) + '" class="cke_top cke_reset_all" role="presentation" style="height:auto">' + topHtml + '</span>' : '', 422 topHtml: topHtml ? '<span id="' + editor.ui.spaceId( 'top' ) + '" class="cke_top cke_reset_all" role="presentation" style="height:auto">' + topHtml + '</span>' : '',
423 contentId: editor.ui.spaceId( 'contents' ), 423 contentId: editor.ui.spaceId( 'contents' ),
424 bottomHtml: bottomHtml ? '<span id="' + editor.ui.spaceId( 'bottom' ) + '" class="cke_bottom cke_reset_all" role="presentation">' + bottomHtml + '</span>' : '', 424 bottomHtml: bottomHtml ? '<span id="' + editor.ui.spaceId( 'bottom' ) + '" class="cke_bottom cke_reset_all" role="presentation">' + bottomHtml + '</span>' : '',
425 outerEl: CKEDITOR.env.ie ? 'span' : 'div' // #9571 425 outerEl: CKEDITOR.env.ie ? 'span' : 'div' // http://dev.ckeditor.com/ticket/9571
426 } ) ); 426 } ) );
427 427
428 if ( elementMode == CKEDITOR.ELEMENT_MODE_REPLACE ) { 428 if ( elementMode == CKEDITOR.ELEMENT_MODE_REPLACE ) {
@@ -451,7 +451,7 @@ CKEDITOR.replaceClass = 'ckeditor';
451 // Disable browser context menu for editor's chrome. 451 // Disable browser context menu for editor's chrome.
452 container.disableContextMenu(); 452 container.disableContextMenu();
453 453
454 // Redirect the focus into editor for webkit. (#5713) 454 // Redirect the focus into editor for webkit. (http://dev.ckeditor.com/ticket/5713)
455 CKEDITOR.env.webkit && container.on( 'focus', function() { 455 CKEDITOR.env.webkit && container.on( 'focus', function() {
456 editor.focus(); 456 editor.focus();
457 } ); 457 } );
@@ -467,7 +467,7 @@ CKEDITOR.replaceClass = 'ckeditor';
467 467
468/** 468/**
469 * The current editing mode. An editing mode basically provides 469 * The current editing mode. An editing mode basically provides
470 * different ways of editing or viewing the contents. 470 * different ways of editing or viewing the editor content.
471 * 471 *
472 * alert( CKEDITOR.instances.editor1.mode ); // (e.g.) 'wysiwyg' 472 * alert( CKEDITOR.instances.editor1.mode ); // (e.g.) 'wysiwyg'
473 * 473 *
diff --git a/sources/core/dataprocessor.js b/sources/core/dataprocessor.js
index ebc4d1c..c42eab4 100644
--- a/sources/core/dataprocessor.js
+++ b/sources/core/dataprocessor.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/core/dom.js b/sources/core/dom.js
index a806a74..84aa21d 100644
--- a/sources/core/dom.js
+++ b/sources/core/dom.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/core/dom/comment.js b/sources/core/dom/comment.js
index 69828c2..4abb453 100644
--- a/sources/core/dom/comment.js
+++ b/sources/core/dom/comment.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/core/dom/document.js b/sources/core/dom/document.js
index f287245..ebf0bab 100644
--- a/sources/core/dom/document.js
+++ b/sources/core/dom/document.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -262,7 +262,7 @@ CKEDITOR.tools.extend( CKEDITOR.dom.document.prototype, {
262 * @param {String} html The HTML defining the document content. 262 * @param {String} html The HTML defining the document content.
263 */ 263 */
264 write: function( html ) { 264 write: function( html ) {
265 // Don't leave any history log in IE. (#5657) 265 // Don't leave any history log in IE. (http://dev.ckeditor.com/ticket/5657)
266 this.$.open( 'text/html', 'replace' ); 266 this.$.open( 'text/html', 'replace' );
267 267
268 // Support for custom document.domain in IE. 268 // Support for custom document.domain in IE.
diff --git a/sources/core/dom/documentfragment.js b/sources/core/dom/documentfragment.js
index ffca9e5..1058144 100644
--- a/sources/core/dom/documentfragment.js
+++ b/sources/core/dom/documentfragment.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/core/dom/domobject.js b/sources/core/dom/domobject.js
index 607e9f3..f4e258a 100644
--- a/sources/core/dom/domobject.js
+++ b/sources/core/dom/domobject.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -41,7 +41,7 @@ CKEDITOR.dom.domObject.prototype = ( function() {
41 return function( domEvent ) { 41 return function( domEvent ) {
42 // In FF, when reloading the page with the editor focused, it may 42 // In FF, when reloading the page with the editor focused, it may
43 // throw an error because the CKEDITOR global is not anymore 43 // throw an error because the CKEDITOR global is not anymore
44 // available. So, we check it here first. (#2923) 44 // available. So, we check it here first. (http://dev.ckeditor.com/ticket/2923)
45 if ( typeof CKEDITOR != 'undefined' ) 45 if ( typeof CKEDITOR != 'undefined' )
46 domObject.fire( eventName, new CKEDITOR.dom.event( domEvent ) ); 46 domObject.fire( eventName, new CKEDITOR.dom.event( domEvent ) );
47 }; 47 };
@@ -138,7 +138,7 @@ CKEDITOR.dom.domObject.prototype = ( function() {
138 } 138 }
139 139
140 // Remove events from events object so fire() method will not call 140 // Remove events from events object so fire() method will not call
141 // listeners (#11400). 141 // listeners (http://dev.ckeditor.com/ticket/11400).
142 CKEDITOR.event.prototype.removeAllListeners.call( this ); 142 CKEDITOR.event.prototype.removeAllListeners.call( this );
143 } 143 }
144 }; 144 };
diff --git a/sources/core/dom/element.js b/sources/core/dom/element.js
index b586b02..31451f9 100644
--- a/sources/core/dom/element.js
+++ b/sources/core/dom/element.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -308,7 +308,7 @@ CKEDITOR.dom.element.clearMarkers = function( database, element, removeFromDatab
308 */ 308 */
309 appendText: function( text ) { 309 appendText: function( text ) {
310 // On IE8 it is impossible to append node to script tag, so we use its text. 310 // On IE8 it is impossible to append node to script tag, so we use its text.
311 // On the contrary, on Safari the text property is unpredictable in links. (#13232) 311 // On the contrary, on Safari the text property is unpredictable in links. (http://dev.ckeditor.com/ticket/13232)
312 if ( this.$.text != null && CKEDITOR.env.ie && CKEDITOR.env.version < 9 ) 312 if ( this.$.text != null && CKEDITOR.env.ie && CKEDITOR.env.version < 9 )
313 this.$.text += text; 313 this.$.text += text;
314 else 314 else
@@ -368,13 +368,36 @@ CKEDITOR.dom.element.clearMarkers = function( database, element, removeFromDatab
368 range.setEndAfter( parent ); 368 range.setEndAfter( parent );
369 369
370 // Extract it. 370 // Extract it.
371 var docFrag = range.extractContents( false, cloneId || false ); 371 var docFrag = range.extractContents( false, cloneId || false ),
372 tmpElement,
373 current;
372 374
373 // Move the element outside the broken element. 375 // Move the element outside the broken element.
374 range.insertNode( this.remove() ); 376 range.insertNode( this.remove() );
375 377
376 // Re-insert the extracted piece after the element. 378 // In case of Internet Explorer, we must check if there is no background-color
377 docFrag.insertAfterNode( this ); 379 // added to the element. In such case, we have to overwrite it to prevent "switching it off"
380 // by a browser (http://dev.ckeditor.com/ticket/14667).
381 if ( CKEDITOR.env.ie && !CKEDITOR.env.edge ) {
382 tmpElement = new CKEDITOR.dom.element( 'div' );
383
384 while ( current = docFrag.getFirst() ) {
385 if ( current.$.style.backgroundColor ) {
386 // This is a necessary hack to make sure that IE will track backgroundColor CSS property, see
387 // http://dev.ckeditor.com/ticket/14667#comment:8 for more details.
388 current.$.style.backgroundColor = current.$.style.backgroundColor;
389 }
390
391 tmpElement.append( current );
392 }
393
394 // Re-insert the extracted piece after the element.
395 tmpElement.insertAfter( this );
396 tmpElement.remove( true );
397 } else {
398 // Re-insert the extracted piece after the element.
399 docFrag.insertAfterNode( this );
400 }
378 }, 401 },
379 402
380 /** 403 /**
@@ -429,7 +452,7 @@ CKEDITOR.dom.element.clearMarkers = function( database, element, removeFromDatab
429 */ 452 */
430 getHtml: function() { 453 getHtml: function() {
431 var retval = this.$.innerHTML; 454 var retval = this.$.innerHTML;
432 // Strip <?xml:namespace> tags in IE. (#3341). 455 // Strip <?xml:namespace> tags in IE. (http://dev.ckeditor.com/ticket/3341).
433 return CKEDITOR.env.ie ? retval.replace( /<\?[^>]*>/g, '' ) : retval; 456 return CKEDITOR.env.ie ? retval.replace( /<\?[^>]*>/g, '' ) : retval;
434 }, 457 },
435 458
@@ -444,7 +467,7 @@ CKEDITOR.dom.element.clearMarkers = function( database, element, removeFromDatab
444 getOuterHtml: function() { 467 getOuterHtml: function() {
445 if ( this.$.outerHTML ) { 468 if ( this.$.outerHTML ) {
446 // IE includes the <?xml:namespace> tag in the outerHTML of 469 // IE includes the <?xml:namespace> tag in the outerHTML of
447 // namespaced element. So, we must strip it here. (#3341) 470 // namespaced element. So, we must strip it here. (http://dev.ckeditor.com/ticket/3341)
448 return this.$.outerHTML.replace( /<\?[^>]*>/, '' ); 471 return this.$.outerHTML.replace( /<\?[^>]*>/, '' );
449 } 472 }
450 473
@@ -595,7 +618,7 @@ CKEDITOR.dom.element.clearMarkers = function( database, element, removeFromDatab
595 return this.$[ name ]; 618 return this.$[ name ];
596 619
597 case 'style': 620 case 'style':
598 // IE does not return inline styles via getAttribute(). See #2947. 621 // IE does not return inline styles via getAttribute(). See http://dev.ckeditor.com/ticket/2947.
599 return this.$.style.cssText; 622 return this.$.style.cssText;
600 623
601 case 'contenteditable': 624 case 'contenteditable':
@@ -611,6 +634,28 @@ CKEDITOR.dom.element.clearMarkers = function( database, element, removeFromDatab
611 } )(), 634 } )(),
612 635
613 /** 636 /**
637 * Gets the values of all element attributes.
638 *
639 * @param {Array} exclude The names of attributes to be excluded from the returned object.
640 * @return {Object} An object containing all element attributes with their values.
641 */
642 getAttributes: function( exclude ) {
643 var attributes = {},
644 attrDefs = this.$.attributes,
645 i;
646
647 exclude = CKEDITOR.tools.isArray( exclude ) ? exclude : [];
648
649 for ( i = 0; i < attrDefs.length; i++ ) {
650 if ( CKEDITOR.tools.indexOf( exclude, attrDefs[ i ].name ) === -1 ) {
651 attributes[ attrDefs[ i ].name ] = attrDefs[ i ].value;
652 }
653 }
654
655 return attributes;
656 },
657
658 /**
614 * Gets the nodes list containing all children of this element. 659 * Gets the nodes list containing all children of this element.
615 * 660 *
616 * @returns {CKEDITOR.dom.nodeList} 661 * @returns {CKEDITOR.dom.nodeList}
@@ -634,7 +679,7 @@ CKEDITOR.dom.element.clearMarkers = function( database, element, removeFromDatab
634 function( propertyName ) { 679 function( propertyName ) {
635 var style = this.getWindow().$.getComputedStyle( this.$, null ); 680 var style = this.getWindow().$.getComputedStyle( this.$, null );
636 681
637 // Firefox may return null if we call the above on a hidden iframe. (#9117) 682 // Firefox may return null if we call the above on a hidden iframe. (http://dev.ckeditor.com/ticket/9117)
638 return style ? style.getPropertyValue( propertyName ) : ''; 683 return style ? style.getPropertyValue( propertyName ) : '';
639 } : function( propertyName ) { 684 } : function( propertyName ) {
640 return this.$.currentStyle[ CKEDITOR.tools.cssStyleToDomStyle( propertyName ) ]; 685 return this.$.currentStyle[ CKEDITOR.tools.cssStyleToDomStyle( propertyName ) ];
@@ -927,7 +972,7 @@ CKEDITOR.dom.element.clearMarkers = function( database, element, removeFromDatab
927 elementWindow, elementWindowFrame; 972 elementWindow, elementWindowFrame;
928 973
929 // Webkit and Opera report non-zero offsetHeight despite that 974 // Webkit and Opera report non-zero offsetHeight despite that
930 // element is inside an invisible iframe. (#4542) 975 // element is inside an invisible iframe. (http://dev.ckeditor.com/ticket/4542)
931 if ( isVisible && CKEDITOR.env.webkit ) { 976 if ( isVisible && CKEDITOR.env.webkit ) {
932 elementWindow = this.getWindow(); 977 elementWindow = this.getWindow();
933 978
@@ -988,7 +1033,7 @@ CKEDITOR.dom.element.clearMarkers = function( database, element, removeFromDatab
988 // attribute, which will be marked as "specified", even if the 1033 // attribute, which will be marked as "specified", even if the
989 // outerHTML of the element is not displaying the class attribute. 1034 // outerHTML of the element is not displaying the class attribute.
990 // Note : I was not able to reproduce it outside the editor, 1035 // Note : I was not able to reproduce it outside the editor,
991 // but I've faced it while working on the TC of #1391. 1036 // but I've faced it while working on the TC of http://dev.ckeditor.com/ticket/1391.
992 if ( this.getAttribute( 'class' ) ) { 1037 if ( this.getAttribute( 'class' ) ) {
993 return true; 1038 return true;
994 } 1039 }
@@ -1012,7 +1057,7 @@ CKEDITOR.dom.element.clearMarkers = function( database, element, removeFromDatab
1012 var attrs = this.$.attributes, 1057 var attrs = this.$.attributes,
1013 attrsNum = attrs.length; 1058 attrsNum = attrs.length;
1014 1059
1015 // The _moz_dirty attribute might get into the element after pasting (#5455) 1060 // The _moz_dirty attribute might get into the element after pasting (http://dev.ckeditor.com/ticket/5455)
1016 var execludeAttrs = { 'data-cke-expando': 1, _moz_dirty: 1 }; 1061 var execludeAttrs = { 'data-cke-expando': 1, _moz_dirty: 1 };
1017 1062
1018 return attrsNum > 0 && ( attrsNum > 2 || !execludeAttrs[ attrs[ 0 ].nodeName ] || ( attrsNum == 2 && !execludeAttrs[ attrs[ 1 ].nodeName ] ) ); 1063 return attrsNum > 0 && ( attrsNum > 2 || !execludeAttrs[ attrs[ 0 ].nodeName ] || ( attrsNum == 2 && !execludeAttrs[ attrs[ 1 ].nodeName ] ) );
@@ -1119,7 +1164,7 @@ CKEDITOR.dom.element.clearMarkers = function( database, element, removeFromDatab
1119 function mergeElements( element, sibling, isNext ) { 1164 function mergeElements( element, sibling, isNext ) {
1120 if ( sibling && sibling.type == CKEDITOR.NODE_ELEMENT ) { 1165 if ( sibling && sibling.type == CKEDITOR.NODE_ELEMENT ) {
1121 // Jumping over bookmark nodes and empty inline elements, e.g. <b><i></i></b>, 1166 // Jumping over bookmark nodes and empty inline elements, e.g. <b><i></i></b>,
1122 // queuing them to be moved later. (#5567) 1167 // queuing them to be moved later. (http://dev.ckeditor.com/ticket/5567)
1123 var pendingNodes = []; 1168 var pendingNodes = [];
1124 1169
1125 while ( sibling.data( 'cke-bookmark' ) || sibling.isEmptyInlineRemoveable() ) { 1170 while ( sibling.data( 'cke-bookmark' ) || sibling.isEmptyInlineRemoveable() ) {
@@ -1149,7 +1194,7 @@ CKEDITOR.dom.element.clearMarkers = function( database, element, removeFromDatab
1149 } 1194 }
1150 1195
1151 return function( inlineOnly ) { 1196 return function( inlineOnly ) {
1152 // Merge empty links and anchors also. (#5567) 1197 // Merge empty links and anchors also. (http://dev.ckeditor.com/ticket/5567)
1153 if ( !( inlineOnly === false || CKEDITOR.dtd.$removeEmpty[ this.getName() ] || this.is( 'a' ) ) ) { 1198 if ( !( inlineOnly === false || CKEDITOR.dtd.$removeEmpty[ this.getName() ] || this.is( 'a' ) ) ) {
1154 return; 1199 return;
1155 } 1200 }
@@ -1208,7 +1253,7 @@ CKEDITOR.dom.element.clearMarkers = function( database, element, removeFromDatab
1208 }; 1253 };
1209 } else if ( CKEDITOR.env.ie8Compat && CKEDITOR.env.secure ) { 1254 } else if ( CKEDITOR.env.ie8Compat && CKEDITOR.env.secure ) {
1210 return function( name, value ) { 1255 return function( name, value ) {
1211 // IE8 throws error when setting src attribute to non-ssl value. (#7847) 1256 // IE8 throws error when setting src attribute to non-ssl value. (http://dev.ckeditor.com/ticket/7847)
1212 if ( name == 'src' && value.match( /^http:\/\// ) ) { 1257 if ( name == 'src' && value.match( /^http:\/\// ) ) {
1213 try { 1258 try {
1214 standard.apply( this, arguments ); 1259 standard.apply( this, arguments );
@@ -1292,11 +1337,15 @@ CKEDITOR.dom.element.clearMarkers = function( database, element, removeFromDatab
1292 */ 1337 */
1293 removeAttributes: function( attributes ) { 1338 removeAttributes: function( attributes ) {
1294 if ( CKEDITOR.tools.isArray( attributes ) ) { 1339 if ( CKEDITOR.tools.isArray( attributes ) ) {
1295 for ( var i = 0; i < attributes.length; i++ ) 1340 for ( var i = 0; i < attributes.length; i++ ) {
1296 this.removeAttribute( attributes[ i ] ); 1341 this.removeAttribute( attributes[ i ] );
1342 }
1297 } else { 1343 } else {
1298 for ( var attr in attributes ) 1344 attributes = attributes || this.getAttributes();
1345
1346 for ( var attr in attributes ) {
1299 attributes.hasOwnProperty( attr ) && this.removeAttribute( attr ); 1347 attributes.hasOwnProperty( attr ) && this.removeAttribute( attr );
1348 }
1300 } 1349 }
1301 }, 1350 },
1302 1351
@@ -1442,7 +1491,8 @@ CKEDITOR.dom.element.clearMarkers = function( database, element, removeFromDatab
1442 body = doc.getBody(), 1491 body = doc.getBody(),
1443 quirks = doc.$.compatMode == 'BackCompat'; 1492 quirks = doc.$.compatMode == 'BackCompat';
1444 1493
1445 if ( document.documentElement.getBoundingClientRect ) { 1494 if ( document.documentElement.getBoundingClientRect &&
1495 ( CKEDITOR.env.ie ? CKEDITOR.env.version !== 8 : true ) ) {
1446 var box = this.$.getBoundingClientRect(), 1496 var box = this.$.getBoundingClientRect(),
1447 $doc = doc.$, 1497 $doc = doc.$,
1448 $docElem = $doc.documentElement; 1498 $docElem = $doc.documentElement;
@@ -1451,7 +1501,7 @@ CKEDITOR.dom.element.clearMarkers = function( database, element, removeFromDatab
1451 clientLeft = $docElem.clientLeft || body.$.clientLeft || 0, 1501 clientLeft = $docElem.clientLeft || body.$.clientLeft || 0,
1452 needAdjustScrollAndBorders = true; 1502 needAdjustScrollAndBorders = true;
1453 1503
1454 // #3804: getBoundingClientRect() works differently on IE and non-IE 1504 // http://dev.ckeditor.com/ticket/3804: getBoundingClientRect() works differently on IE and non-IE
1455 // browsers, regarding scroll positions. 1505 // browsers, regarding scroll positions.
1456 // 1506 //
1457 // On IE, the top position of the <html> element is always 0, no matter 1507 // On IE, the top position of the <html> element is always 0, no matter
@@ -1466,12 +1516,12 @@ CKEDITOR.dom.element.clearMarkers = function( database, element, removeFromDatab
1466 needAdjustScrollAndBorders = ( quirks && inBody ) || ( !quirks && inDocElem ); 1516 needAdjustScrollAndBorders = ( quirks && inBody ) || ( !quirks && inDocElem );
1467 } 1517 }
1468 1518
1469 // #12747. 1519 // http://dev.ckeditor.com/ticket/12747.
1470 if ( needAdjustScrollAndBorders ) { 1520 if ( needAdjustScrollAndBorders ) {
1471 var scrollRelativeLeft, 1521 var scrollRelativeLeft,
1472 scrollRelativeTop; 1522 scrollRelativeTop;
1473 1523
1474 // See #12758 to know more about document.(documentElement|body).scroll(Left|Top) in Webkit. 1524 // See http://dev.ckeditor.com/ticket/12758 to know more about document.(documentElement|body).scroll(Left|Top) in Webkit.
1475 if ( CKEDITOR.env.webkit || ( CKEDITOR.env.ie && CKEDITOR.env.version >= 12 ) ) { 1525 if ( CKEDITOR.env.webkit || ( CKEDITOR.env.ie && CKEDITOR.env.version >= 12 ) ) {
1476 scrollRelativeLeft = body.$.scrollLeft || $docElem.scrollLeft; 1526 scrollRelativeLeft = body.$.scrollLeft || $docElem.scrollLeft;
1477 scrollRelativeTop = body.$.scrollTop || $docElem.scrollTop; 1527 scrollRelativeTop = body.$.scrollTop || $docElem.scrollTop;
@@ -1553,7 +1603,7 @@ CKEDITOR.dom.element.clearMarkers = function( database, element, removeFromDatab
1553 parent.$.clientHeight && parent.$.clientHeight < parent.$.scrollHeight; 1603 parent.$.clientHeight && parent.$.clientHeight < parent.$.scrollHeight;
1554 1604
1555 // Skip body element, which will report wrong clientHeight when containing 1605 // Skip body element, which will report wrong clientHeight when containing
1556 // floated content. (#9523) 1606 // floated content. (http://dev.ckeditor.com/ticket/9523)
1557 if ( overflowed && !parent.is( 'body' ) ) 1607 if ( overflowed && !parent.is( 'body' ) )
1558 this.scrollIntoParent( parent, alignToTop, 1 ); 1608 this.scrollIntoParent( parent, alignToTop, 1 );
1559 1609
@@ -1626,6 +1676,16 @@ CKEDITOR.dom.element.clearMarkers = function( database, element, removeFromDatab
1626 return parseInt( element.getComputedStyle( 'margin-' + side ) || 0, 10 ) || 0; 1676 return parseInt( element.getComputedStyle( 'margin-' + side ) || 0, 10 ) || 0;
1627 } 1677 }
1628 1678
1679 // [WebKit] Reset stored scrollTop value to not break scrollIntoView() method flow.
1680 // Scrolling breaks when range.select() is used right after element.scrollIntoView(). (http://dev.ckeditor.com/ticket/14659)
1681 if ( CKEDITOR.env.webkit ) {
1682 var editor = this.getEditor( false );
1683
1684 if ( editor ) {
1685 editor._.previousScrollTop = null;
1686 }
1687 }
1688
1629 var win = parent.getWindow(); 1689 var win = parent.getWindow();
1630 1690
1631 var thisPos = screenPos( this, win ), 1691 var thisPos = screenPos( this, win ),
@@ -1797,7 +1857,7 @@ CKEDITOR.dom.element.clearMarkers = function( database, element, removeFromDatab
1797 this.getParent( true ) && this.$.parentNode.replaceChild( newNode.$, this.$ ); 1857 this.getParent( true ) && this.$.parentNode.replaceChild( newNode.$, this.$ );
1798 newNode.$[ 'data-cke-expando' ] = this.$[ 'data-cke-expando' ]; 1858 newNode.$[ 'data-cke-expando' ] = this.$[ 'data-cke-expando' ];
1799 this.$ = newNode.$; 1859 this.$ = newNode.$;
1800 // Bust getName's cache. (#8663) 1860 // Bust getName's cache. (http://dev.ckeditor.com/ticket/8663)
1801 delete this.getName; 1861 delete this.getName;
1802 }, 1862 },
1803 1863
@@ -1905,17 +1965,32 @@ CKEDITOR.dom.element.clearMarkers = function( database, element, removeFromDatab
1905 * CKEDITOR.replace( element ); 1965 * CKEDITOR.replace( element );
1906 * alert( element.getEditor().name ); // 'editor1' 1966 * alert( element.getEditor().name ); // 'editor1'
1907 * 1967 *
1968 * By default this method considers only original DOM elements upon which the editor
1969 * was created. Setting `optimized` parameter to `false` will consider editor editable
1970 * and its children.
1971 *
1972 * @param {Boolean} [optimized=true] If set to `false` it will scan every editor editable.
1908 * @returns {CKEDITOR.editor} An editor instance or null if nothing has been found. 1973 * @returns {CKEDITOR.editor} An editor instance or null if nothing has been found.
1909 */ 1974 */
1910 getEditor: function() { 1975 getEditor: function( optimized ) {
1911 var instances = CKEDITOR.instances, 1976 var instances = CKEDITOR.instances,
1912 name, instance; 1977 name, instance, editable;
1978
1979 optimized = optimized || optimized === undefined;
1913 1980
1914 for ( name in instances ) { 1981 for ( name in instances ) {
1915 instance = instances[ name ]; 1982 instance = instances[ name ];
1916 1983
1917 if ( instance.element.equals( this ) && instance.elementMode != CKEDITOR.ELEMENT_MODE_APPENDTO ) 1984 if ( instance.element.equals( this ) && instance.elementMode != CKEDITOR.ELEMENT_MODE_APPENDTO )
1918 return instance; 1985 return instance;
1986
1987 if ( !optimized ) {
1988 editable = instance.editable();
1989
1990 if ( editable && ( editable.equals( this ) || editable.contains( this ) ) ) {
1991 return instance;
1992 }
1993 }
1919 } 1994 }
1920 1995
1921 return null; 1996 return null;
@@ -2038,7 +2113,8 @@ CKEDITOR.dom.element.clearMarkers = function( database, element, removeFromDatab
2038 } 2113 }
2039 2114
2040 function getContextualizedSelector( element, selector ) { 2115 function getContextualizedSelector( element, selector ) {
2041 return '#' + element.$.id + ' ' + selector.split( /,\s*/ ).join( ', #' + element.$.id + ' ' ); 2116 var id = CKEDITOR.tools.escapeCss( element.$.id );
2117 return '#' + id + ' ' + selector.split( /,\s*/ ).join( ', #' + id + ' ' );
2042 } 2118 }
2043 2119
2044 var sides = { 2120 var sides = {
@@ -2070,7 +2146,7 @@ CKEDITOR.dom.element.clearMarkers = function( database, element, removeFromDatab
2070 function marginAndPaddingSize( type ) { 2146 function marginAndPaddingSize( type ) {
2071 var adjustment = 0; 2147 var adjustment = 0;
2072 for ( var i = 0, len = sides[ type ].length; i < len; i++ ) 2148 for ( var i = 0, len = sides[ type ].length; i < len; i++ )
2073 adjustment += parseInt( this.getComputedStyle( sides[ type ][ i ] ) || 0, 10 ) || 0; 2149 adjustment += parseFloat( this.getComputedStyle( sides[ type ][ i ] ) || 0, 10 ) || 0;
2074 return adjustment; 2150 return adjustment;
2075 } 2151 }
2076 2152
diff --git a/sources/core/dom/elementpath.js b/sources/core/dom/elementpath.js
index 1ee551b..dd50f10 100644
--- a/sources/core/dom/elementpath.js
+++ b/sources/core/dom/elementpath.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -57,6 +57,11 @@
57 // Backward compact. 57 // Backward compact.
58 root = root || startNode.getDocument().getBody(); 58 root = root || startNode.getDocument().getBody();
59 59
60 // Assign root value if startNode is null (#424)(https://dev.ckeditor.com/ticket/17028).
61 if ( !e ) {
62 e = root;
63 }
64
60 do { 65 do {
61 if ( e.type == CKEDITOR.NODE_ELEMENT ) { 66 if ( e.type == CKEDITOR.NODE_ELEMENT ) {
62 elements.push( e ); 67 elements.push( e );
@@ -84,7 +89,7 @@
84 block = e; 89 block = e;
85 90
86 if ( pathBlockLimitElements[ elementName ] ) { 91 if ( pathBlockLimitElements[ elementName ] ) {
87 // End level DIV is considered as the block, if no block is available. (#525) 92 // End level DIV is considered as the block, if no block is available. (http://dev.ckeditor.com/ticket/525)
88 // But it must NOT be the root element (checked above). 93 // But it must NOT be the root element (checked above).
89 if ( !block && elementName == 'div' && !checkHasBlock( e ) ) 94 if ( !block && elementName == 'div' && !checkHasBlock( e ) )
90 block = e; 95 block = e;
@@ -181,7 +186,9 @@ CKEDITOR.dom.elementPath.prototype = {
181 * @returns {CKEDITOR.dom.element} The first matched dom element or `null`. 186 * @returns {CKEDITOR.dom.element} The first matched dom element or `null`.
182 */ 187 */
183 contains: function( query, excludeRoot, fromTop ) { 188 contains: function( query, excludeRoot, fromTop ) {
184 var evaluator; 189 var i = 0,
190 evaluator;
191
185 if ( typeof query == 'string' ) 192 if ( typeof query == 'string' )
186 evaluator = function( node ) { 193 evaluator = function( node ) {
187 return node.getName() == query; 194 return node.getName() == query;
@@ -203,14 +210,21 @@ CKEDITOR.dom.elementPath.prototype = {
203 210
204 var elements = this.elements, 211 var elements = this.elements,
205 length = elements.length; 212 length = elements.length;
206 excludeRoot && length--; 213
214 if ( excludeRoot ) {
215 if ( !fromTop ) {
216 length -= 1;
217 } else {
218 i += 1;
219 }
220 }
207 221
208 if ( fromTop ) { 222 if ( fromTop ) {
209 elements = Array.prototype.slice.call( elements, 0 ); 223 elements = Array.prototype.slice.call( elements, 0 );
210 elements.reverse(); 224 elements.reverse();
211 } 225 }
212 226
213 for ( var i = 0; i < length; i++ ) { 227 for ( ; i < length; i++ ) {
214 if ( evaluator( elements[ i ] ) ) 228 if ( evaluator( elements[ i ] ) )
215 return elements[ i ]; 229 return elements[ i ];
216 } 230 }
diff --git a/sources/core/dom/event.js b/sources/core/dom/event.js
index 7cc1bd8..8b1193a 100644
--- a/sources/core/dom/event.js
+++ b/sources/core/dom/event.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/core/dom/iterator.js b/sources/core/dom/iterator.js
index 1e1b180..9176e33 100644
--- a/sources/core/dom/iterator.js
+++ b/sources/core/dom/iterator.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -45,7 +45,7 @@
45 */ 45 */
46 this.forceBrBreak = 0; 46 this.forceBrBreak = 0;
47 47
48 // (#3730). 48 // (http://dev.ckeditor.com/ticket/3730).
49 /** 49 /**
50 * Whether to include `<br>` elements in the enlarged range. Should be 50 * Whether to include `<br>` elements in the enlarged range. Should be
51 * set to `false` when using the iterator in the {@link CKEDITOR#ENTER_BR} mode. 51 * set to `false` when using the iterator in the {@link CKEDITOR#ENTER_BR} mode.
@@ -85,7 +85,7 @@
85 */ 85 */
86 86
87 var beginWhitespaceRegex = /^[\r\n\t ]+$/, 87 var beginWhitespaceRegex = /^[\r\n\t ]+$/,
88 // Ignore bookmark nodes.(#3783) 88 // Ignore bookmark nodes.(http://dev.ckeditor.com/ticket/3783)
89 bookmarkGuard = CKEDITOR.dom.walker.bookmark( false, true ), 89 bookmarkGuard = CKEDITOR.dom.walker.bookmark( false, true ),
90 whitespacesGuard = CKEDITOR.dom.walker.whitespaces( true ), 90 whitespacesGuard = CKEDITOR.dom.walker.whitespaces( true ),
91 skipGuard = function( node ) { 91 skipGuard = function( node ) {
@@ -191,12 +191,12 @@
191 } 191 }
192 192
193 // The range must finish right before the boundary, 193 // The range must finish right before the boundary,
194 // including possibly skipped empty spaces. (#1603) 194 // including possibly skipped empty spaces. (http://dev.ckeditor.com/ticket/1603)
195 if ( range ) { 195 if ( range ) {
196 range.setEndAt( currentNode, CKEDITOR.POSITION_BEFORE_START ); 196 range.setEndAt( currentNode, CKEDITOR.POSITION_BEFORE_START );
197 197
198 // The found boundary must be set as the next one at this 198 // The found boundary must be set as the next one at this
199 // point. (#1717) 199 // point. (http://dev.ckeditor.com/ticket/1717)
200 if ( nodeName != 'br' ) { 200 if ( nodeName != 'br' ) {
201 this._.nextNode = currentNode; 201 this._.nextNode = currentNode;
202 } 202 }
@@ -244,7 +244,7 @@
244 closeRange = 1; 244 closeRange = 1;
245 includeNode = 0; 245 includeNode = 0;
246 isLast = isLast || ( parentNode.equals( lastNode ) ); 246 isLast = isLast || ( parentNode.equals( lastNode ) );
247 // Make sure range includes bookmarks at the end of the block. (#7359) 247 // Make sure range includes bookmarks at the end of the block. (http://dev.ckeditor.com/ticket/7359)
248 range.setEndAt( parentNode, CKEDITOR.POSITION_BEFORE_END ); 248 range.setEndAt( parentNode, CKEDITOR.POSITION_BEFORE_END );
249 break; 249 break;
250 } 250 }
@@ -377,7 +377,7 @@
377 // Here we are checking in guard function whether current element 377 // Here we are checking in guard function whether current element
378 // reach lastNode(default behaviour) and root node to prevent against 378 // reach lastNode(default behaviour) and root node to prevent against
379 // getting out of editor instance root DOM object. 379 // getting out of editor instance root DOM object.
380 // #12484 380 // http://dev.ckeditor.com/ticket/12484
381 function guardFunction( node ) { 381 function guardFunction( node ) {
382 return !( node.equals( lastNode ) || node.equals( rootNode ) ); 382 return !( node.equals( lastNode ) || node.equals( rootNode ) );
383 } 383 }
@@ -397,7 +397,7 @@
397 // Indicate at least one of the range boundaries is inside a preformat block. 397 // Indicate at least one of the range boundaries is inside a preformat block.
398 touchPre, 398 touchPre,
399 399
400 // (#12178) 400 // (http://dev.ckeditor.com/ticket/12178)
401 // Remember if following situation takes place: 401 // Remember if following situation takes place:
402 // * startAtInnerBoundary: <p>foo[</p>... 402 // * startAtInnerBoundary: <p>foo[</p>...
403 // * endAtInnerBoundary: ...<p>]bar</p> 403 // * endAtInnerBoundary: ...<p>]bar</p>
@@ -405,13 +405,13 @@
405 // Note that we test only if path block exist, because we must properly shrink 405 // Note that we test only if path block exist, because we must properly shrink
406 // range containing table and/or table cells. 406 // range containing table and/or table cells.
407 // Note: When range is collapsed there's no way it can be shrinked. 407 // Note: When range is collapsed there's no way it can be shrinked.
408 // By checking if range is collapsed we also prevent #12308. 408 // By checking if range is collapsed we also prevent http://dev.ckeditor.com/ticket/12308.
409 startPath = range.startPath(), 409 startPath = range.startPath(),
410 endPath = range.endPath(), 410 endPath = range.endPath(),
411 startAtInnerBoundary = !range.collapsed && rangeAtInnerBlockBoundary( range, startPath.block ), 411 startAtInnerBoundary = !range.collapsed && rangeAtInnerBlockBoundary( range, startPath.block ),
412 endAtInnerBoundary = !range.collapsed && rangeAtInnerBlockBoundary( range, endPath.block, 1 ); 412 endAtInnerBoundary = !range.collapsed && rangeAtInnerBlockBoundary( range, endPath.block, 1 );
413 413
414 // Shrink the range to exclude harmful "noises" (#4087, #4450, #5435). 414 // Shrink the range to exclude harmful "noises" (http://dev.ckeditor.com/ticket/4087, http://dev.ckeditor.com/ticket/4450, http://dev.ckeditor.com/ticket/5435).
415 range.shrink( CKEDITOR.SHRINK_ELEMENT, true ); 415 range.shrink( CKEDITOR.SHRINK_ELEMENT, true );
416 416
417 if ( startAtInnerBoundary ) 417 if ( startAtInnerBoundary )
@@ -437,7 +437,7 @@
437 437
438 // We may have an empty text node at the end of block due to [3770]. 438 // We may have an empty text node at the end of block due to [3770].
439 // If that node is the lastNode, it would cause our logic to leak to the 439 // If that node is the lastNode, it would cause our logic to leak to the
440 // next block.(#3887) 440 // next block.(http://dev.ckeditor.com/ticket/3887)
441 if ( this._.lastNode && this._.lastNode.type == CKEDITOR.NODE_TEXT && !CKEDITOR.tools.trim( this._.lastNode.getText() ) && this._.lastNode.getParent().isBlockBoundary() ) { 441 if ( this._.lastNode && this._.lastNode.type == CKEDITOR.NODE_TEXT && !CKEDITOR.tools.trim( this._.lastNode.getText() ) && this._.lastNode.getParent().isBlockBoundary() ) {
442 var testRange = this.range.clone(); 442 var testRange = this.range.clone();
443 testRange.moveToPosition( this._.lastNode, CKEDITOR.POSITION_AFTER_END ); 443 testRange.moveToPosition( this._.lastNode, CKEDITOR.POSITION_AFTER_END );
diff --git a/sources/core/dom/node.js b/sources/core/dom/node.js
index 7818b07..69b223e 100644
--- a/sources/core/dom/node.js
+++ b/sources/core/dom/node.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -200,7 +200,7 @@ CKEDITOR.tools.extend( CKEDITOR.dom.node.prototype, {
200 } 200 }
201 201
202 // IE8 rename HTML5 nodes by adding `:` at the begging of the tag name when the node is cloned, 202 // IE8 rename HTML5 nodes by adding `:` at the begging of the tag name when the node is cloned,
203 // so `<figure>` will be `<:figure>` after 'cloneNode'. We need to fix it (#13101). 203 // so `<figure>` will be `<:figure>` after 'cloneNode'. We need to fix it (http://dev.ckeditor.com/ticket/13101).
204 function renameNodes( node ) { 204 function renameNodes( node ) {
205 if ( node.type != CKEDITOR.NODE_ELEMENT && node.type != CKEDITOR.NODE_DOCUMENT_FRAGMENT ) 205 if ( node.type != CKEDITOR.NODE_ELEMENT && node.type != CKEDITOR.NODE_DOCUMENT_FRAGMENT )
206 return; 206 return;
@@ -804,7 +804,7 @@ CKEDITOR.tools.extend( CKEDITOR.dom.node.prototype, {
804 } else if ( trimmed.length < originalLength ) { 804 } else if ( trimmed.length < originalLength ) {
805 child.split( originalLength - trimmed.length ); 805 child.split( originalLength - trimmed.length );
806 806
807 // IE BUG: child.remove() may raise JavaScript errors here. (#81) 807 // IE BUG: child.remove() may raise JavaScript errors here. (http://dev.ckeditor.com/ticket/81)
808 this.$.removeChild( this.$.firstChild ); 808 this.$.removeChild( this.$.firstChild );
809 } 809 }
810 } 810 }
@@ -829,7 +829,7 @@ CKEDITOR.tools.extend( CKEDITOR.dom.node.prototype, {
829 child.split( trimmed.length ); 829 child.split( trimmed.length );
830 830
831 // IE BUG: child.getNext().remove() may raise JavaScript errors here. 831 // IE BUG: child.getNext().remove() may raise JavaScript errors here.
832 // (#81) 832 // (http://dev.ckeditor.com/ticket/81)
833 this.$.lastChild.parentNode.removeChild( this.$.lastChild ); 833 this.$.lastChild.parentNode.removeChild( this.$.lastChild );
834 } 834 }
835 } 835 }
@@ -840,7 +840,7 @@ CKEDITOR.tools.extend( CKEDITOR.dom.node.prototype, {
840 child = this.$.lastChild; 840 child = this.$.lastChild;
841 841
842 if ( child && child.type == 1 && child.nodeName.toLowerCase() == 'br' ) { 842 if ( child && child.type == 1 && child.nodeName.toLowerCase() == 'br' ) {
843 // Use "eChildNode.parentNode" instead of "node" to avoid IE bug (#324). 843 // Use "eChildNode.parentNode" instead of "node" to avoid IE bug (http://dev.ckeditor.com/ticket/324).
844 child.parentNode.removeChild( child ); 844 child.parentNode.removeChild( child );
845 } 845 }
846 } 846 }
@@ -874,7 +874,7 @@ CKEDITOR.tools.extend( CKEDITOR.dom.node.prototype, {
874 if ( this.type != CKEDITOR.NODE_ELEMENT ) 874 if ( this.type != CKEDITOR.NODE_ELEMENT )
875 element = this.getParent(); 875 element = this.getParent();
876 876
877 // Prevent Edge crash (#13609, #13919). 877 // Prevent Edge crash (http://dev.ckeditor.com/ticket/13609, http://dev.ckeditor.com/ticket/13919).
878 if ( CKEDITOR.env.edge && element && element.is( 'textarea', 'input' ) ) { 878 if ( CKEDITOR.env.edge && element && element.is( 'textarea', 'input' ) ) {
879 checkOnlyAttributes = true; 879 checkOnlyAttributes = true;
880 } 880 }
diff --git a/sources/core/dom/nodelist.js b/sources/core/dom/nodelist.js
index 0f91eaa..07af314 100644
--- a/sources/core/dom/nodelist.js
+++ b/sources/core/dom/nodelist.js
@@ -1,11 +1,11 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
6/** 6/**
7 * Represents a list of {@link CKEDITOR.dom.node} objects. 7 * Represents a list of {@link CKEDITOR.dom.node} objects.
8 * It's a wrapper for native nodes list. 8 * It is a wrapper for a native nodes list.
9 * 9 *
10 * var nodeList = CKEDITOR.document.getBody().getChildren(); 10 * var nodeList = CKEDITOR.document.getBody().getChildren();
11 * alert( nodeList.count() ); // number [0;N] 11 * alert( nodeList.count() ); // number [0;N]
@@ -20,7 +20,7 @@ CKEDITOR.dom.nodeList = function( nativeList ) {
20 20
21CKEDITOR.dom.nodeList.prototype = { 21CKEDITOR.dom.nodeList.prototype = {
22 /** 22 /**
23 * Get count of nodes in this list. 23 * Gets the count of nodes in this list.
24 * 24 *
25 * @returns {Number} 25 * @returns {Number}
26 */ 26 */
@@ -29,7 +29,7 @@ CKEDITOR.dom.nodeList.prototype = {
29 }, 29 },
30 30
31 /** 31 /**
32 * Get node from the list. 32 * Gets the node from the list.
33 * 33 *
34 * @returns {CKEDITOR.dom.node} 34 * @returns {CKEDITOR.dom.node}
35 */ 35 */
@@ -39,5 +39,16 @@ CKEDITOR.dom.nodeList.prototype = {
39 39
40 var $node = this.$[ index ]; 40 var $node = this.$[ index ];
41 return $node ? new CKEDITOR.dom.node( $node ) : null; 41 return $node ? new CKEDITOR.dom.node( $node ) : null;
42 },
43
44 /**
45 * Returns a node list as an array.
46 *
47 * @returns {CKEDITOR.dom.node[]}
48 */
49 toArray: function() {
50 return CKEDITOR.tools.array.map( this.$, function( nativeEl ) {
51 return new CKEDITOR.dom.node( nativeEl );
52 } );
42 } 53 }
43}; 54};
diff --git a/sources/core/dom/range.js b/sources/core/dom/range.js
index b5e8736..742c24c 100644
--- a/sources/core/dom/range.js
+++ b/sources/core/dom/range.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -204,9 +204,14 @@ CKEDITOR.dom.range = function( root ) {
204 // This allows us to not think about startNode == endNode case later on. 204 // This allows us to not think about startNode == endNode case later on.
205 // We do that only when cloning, because in other cases we can safely split this text node 205 // We do that only when cloning, because in other cases we can safely split this text node
206 // and hence we can easily handle this case as many others. 206 // and hence we can easily handle this case as many others.
207 if ( isClone && endNode.type == CKEDITOR.NODE_TEXT && startNode.equals( endNode ) ) { 207
208 startNode = range.document.createText( startNode.substring( startOffset, endOffset ) ); 208 // We need to handle situation when selection startNode is type of NODE_ELEMENT (#426).
209 docFrag.append( startNode ); 209 if ( isClone &&
210 endNode.type == CKEDITOR.NODE_TEXT &&
211 ( startNode.equals( endNode ) || ( startNode.type === CKEDITOR.NODE_ELEMENT && startNode.getFirst().equals( endNode ) ) ) ) {
212
213 // Here we should always be inside one text node.
214 docFrag.append( range.document.createText( endNode.substring( startOffset, endOffset ) ) );
210 return; 215 return;
211 } 216 }
212 217
@@ -214,7 +219,7 @@ CKEDITOR.dom.range = function( root ) {
214 // second part. The removal will be handled by the rest of the code. 219 // second part. The removal will be handled by the rest of the code.
215 if ( endNode.type == CKEDITOR.NODE_TEXT ) { 220 if ( endNode.type == CKEDITOR.NODE_TEXT ) {
216 // If Extract or Delete we can split the text node, 221 // If Extract or Delete we can split the text node,
217 // but if Clone (2), then we cannot modify the DOM (#11586) so we mark the text node for cloning. 222 // but if Clone (2), then we cannot modify the DOM (http://dev.ckeditor.com/ticket/11586) so we mark the text node for cloning.
218 if ( !isClone ) { 223 if ( !isClone ) {
219 endNode = endNode.split( endOffset ); 224 endNode = endNode.split( endOffset );
220 } else { 225 } else {
@@ -243,7 +248,7 @@ CKEDITOR.dom.range = function( root ) {
243 // be handled by the rest of the code . 248 // be handled by the rest of the code .
244 if ( startNode.type == CKEDITOR.NODE_TEXT ) { 249 if ( startNode.type == CKEDITOR.NODE_TEXT ) {
245 // If Extract or Delete we can split the text node, 250 // If Extract or Delete we can split the text node,
246 // but if Clone (2), then we cannot modify the DOM (#11586) so we mark 251 // but if Clone (2), then we cannot modify the DOM (http://dev.ckeditor.com/ticket/11586) so we mark
247 // the text node for cloning. 252 // the text node for cloning.
248 if ( !isClone ) { 253 if ( !isClone ) {
249 startNode.split( startOffset ); 254 startNode.split( startOffset );
@@ -373,7 +378,7 @@ CKEDITOR.dom.range = function( root ) {
373 // If we don't do that, in next iterations nodes will be appended to wrong parent. 378 // If we don't do that, in next iterations nodes will be appended to wrong parent.
374 // 379 //
375 // We can just take first child because the algorithm guarantees 380 // We can just take first child because the algorithm guarantees
376 // that this will be the only child on this level. (#13568) 381 // that this will be the only child on this level. (http://dev.ckeditor.com/ticket/13568)
377 levelParent = levelParent.getChild( 0 ); 382 levelParent = levelParent.getChild( 0 );
378 } 383 }
379 } 384 }
@@ -405,7 +410,7 @@ CKEDITOR.dom.range = function( root ) {
405 410
406 // When Extracting, move the removed node to the docFrag. 411 // When Extracting, move the removed node to the docFrag.
407 if ( isExtract ) { 412 if ( isExtract ) {
408 newParent.append( node ); 413 newParent.append( node, toStart );
409 } 414 }
410 } 415 }
411 416
@@ -574,7 +579,7 @@ CKEDITOR.dom.range = function( root ) {
574 // Tolerant bogus br when checking at the end of block. 579 // Tolerant bogus br when checking at the end of block.
575 // Reject any text node unless it's being bookmark 580 // Reject any text node unless it's being bookmark
576 // OR it's spaces. 581 // OR it's spaces.
577 // Reject any element unless it's being invisible empty. (#3883) 582 // Reject any element unless it's being invisible empty. (http://dev.ckeditor.com/ticket/3883)
578 return !checkStart && isBogus( node ) || 583 return !checkStart && isBogus( node ) ||
579 node.type == CKEDITOR.NODE_ELEMENT && 584 node.type == CKEDITOR.NODE_ELEMENT &&
580 node.is( CKEDITOR.dtd.$removeEmpty ); 585 node.is( CKEDITOR.dtd.$removeEmpty );
@@ -1052,7 +1057,7 @@ CKEDITOR.dom.range = function( root ) {
1052 } 1057 }
1053 1058
1054 // Sometimes the endNode will come right before startNode for collapsed 1059 // Sometimes the endNode will come right before startNode for collapsed
1055 // ranges. Fix it. (#3780) 1060 // ranges. Fix it. (http://dev.ckeditor.com/ticket/3780)
1056 if ( startNode.getPosition( endNode ) & CKEDITOR.POSITION_FOLLOWING ) 1061 if ( startNode.getPosition( endNode ) & CKEDITOR.POSITION_FOLLOWING )
1057 startNode = endNode; 1062 startNode = endNode;
1058 1063
@@ -1201,7 +1206,8 @@ CKEDITOR.dom.range = function( root ) {
1201 /** 1206 /**
1202 * Expands the range so that partial units are completely contained. 1207 * Expands the range so that partial units are completely contained.
1203 * 1208 *
1204 * @param unit {Number} The unit type to expand with. 1209 * @param {Number} unit The unit type to expand with. Use one of following values: {@link CKEDITOR#ENLARGE_BLOCK_CONTENTS},
1210 * {@link CKEDITOR#ENLARGE_ELEMENT}, {@link CKEDITOR#ENLARGE_INLINE}, {@link CKEDITOR#ENLARGE_LIST_ITEM_CONTENTS}.
1205 * @param {Boolean} [excludeBrs=false] Whether include line-breaks when expanding. 1211 * @param {Boolean} [excludeBrs=false] Whether include line-breaks when expanding.
1206 */ 1212 */
1207 enlarge: function( unit, excludeBrs ) { 1213 enlarge: function( unit, excludeBrs ) {
@@ -1323,13 +1329,13 @@ CKEDITOR.dom.range = function( root ) {
1323 1329
1324 isWhiteSpace = /[\s\ufeff]$/.test( siblingText ); 1330 isWhiteSpace = /[\s\ufeff]$/.test( siblingText );
1325 } else { 1331 } else {
1326 // #12221 (Chrome) plus #11111 (Safari). 1332 // http://dev.ckeditor.com/ticket/12221 (Chrome) plus http://dev.ckeditor.com/ticket/11111 (Safari).
1327 var offsetWidth0 = CKEDITOR.env.webkit ? 1 : 0; 1333 var offsetWidth0 = CKEDITOR.env.webkit ? 1 : 0;
1328 1334
1329 // If this is a visible element. 1335 // If this is a visible element.
1330 // We need to check for the bookmark attribute because IE insists on 1336 // We need to check for the bookmark attribute because IE insists on
1331 // rendering the display:none nodes we use for bookmarks. (#3363) 1337 // rendering the display:none nodes we use for bookmarks. (http://dev.ckeditor.com/ticket/3363)
1332 // Line-breaks (br) are rendered with zero width, which we don't want to include. (#7041) 1338 // Line-breaks (br) are rendered with zero width, which we don't want to include. (http://dev.ckeditor.com/ticket/7041)
1333 if ( ( sibling.$.offsetWidth > offsetWidth0 || excludeBrs && sibling.is( 'br' ) ) && !sibling.data( 'cke-bookmark' ) ) { 1339 if ( ( sibling.$.offsetWidth > offsetWidth0 || excludeBrs && sibling.is( 'br' ) ) && !sibling.data( 'cke-bookmark' ) ) {
1334 // We'll accept it only if we need 1340 // We'll accept it only if we need
1335 // whitespace, and this is an inline 1341 // whitespace, and this is an inline
@@ -1398,7 +1404,7 @@ CKEDITOR.dom.range = function( root ) {
1398 1404
1399 // Process the end boundary. This is basically the same 1405 // Process the end boundary. This is basically the same
1400 // code used for the start boundary, with small changes to 1406 // code used for the start boundary, with small changes to
1401 // make it work in the oposite side (to the right). This 1407 // make it work in the opposite side (to the right). This
1402 // makes it difficult to reuse the code here. So, fixes to 1408 // makes it difficult to reuse the code here. So, fixes to
1403 // the above code are likely to be replicated here. 1409 // the above code are likely to be replicated here.
1404 1410
@@ -1481,7 +1487,7 @@ CKEDITOR.dom.range = function( root ) {
1481 } 1487 }
1482 } 1488 }
1483 } else { 1489 } else {
1484 // Get the node right after the boudary to be checked 1490 // Get the node right after the boundary to be checked
1485 // first. 1491 // first.
1486 sibling = container.getChild( offset ); 1492 sibling = container.getChild( offset );
1487 1493
@@ -1524,8 +1530,8 @@ CKEDITOR.dom.range = function( root ) {
1524 } else if ( sibling.type == CKEDITOR.NODE_ELEMENT ) { 1530 } else if ( sibling.type == CKEDITOR.NODE_ELEMENT ) {
1525 // If this is a visible element. 1531 // If this is a visible element.
1526 // We need to check for the bookmark attribute because IE insists on 1532 // We need to check for the bookmark attribute because IE insists on
1527 // rendering the display:none nodes we use for bookmarks. (#3363) 1533 // rendering the display:none nodes we use for bookmarks. (http://dev.ckeditor.com/ticket/3363)
1528 // Line-breaks (br) are rendered with zero width, which we don't want to include. (#7041) 1534 // Line-breaks (br) are rendered with zero width, which we don't want to include. (http://dev.ckeditor.com/ticket/7041)
1529 if ( ( sibling.$.offsetWidth > 0 || excludeBrs && sibling.is( 'br' ) ) && !sibling.data( 'cke-bookmark' ) ) { 1535 if ( ( sibling.$.offsetWidth > 0 || excludeBrs && sibling.is( 'br' ) ) && !sibling.data( 'cke-bookmark' ) ) {
1530 // We'll accept it only if we need 1536 // We'll accept it only if we need
1531 // whitespace, and this is an inline 1537 // whitespace, and this is an inline
@@ -1616,7 +1622,7 @@ CKEDITOR.dom.range = function( root ) {
1616 boundaryGuard = function( node ) { 1622 boundaryGuard = function( node ) {
1617 // We should not check contents of non-editable elements. It may happen 1623 // We should not check contents of non-editable elements. It may happen
1618 // that inline widget has display:table child which should not block range#enlarge. 1624 // that inline widget has display:table child which should not block range#enlarge.
1619 // When encoutered non-editable element... 1625 // When encountered non-editable element...
1620 if ( node.type == CKEDITOR.NODE_ELEMENT && node.getAttribute( 'contenteditable' ) == 'false' ) { 1626 if ( node.type == CKEDITOR.NODE_ELEMENT && node.getAttribute( 'contenteditable' ) == 'false' ) {
1621 if ( inNonEditable ) { 1627 if ( inNonEditable ) {
1622 // ... in which we already were, reset it (because we're leaving it) and return. 1628 // ... in which we already were, reset it (because we're leaving it) and return.
@@ -1638,7 +1644,7 @@ CKEDITOR.dom.range = function( root ) {
1638 blockBoundary = node; 1644 blockBoundary = node;
1639 return retval; 1645 return retval;
1640 }, 1646 },
1641 // Record the encounted 'tailBr' for later use. 1647 // Record the encountered 'tailBr' for later use.
1642 tailBrGuard = function( node ) { 1648 tailBrGuard = function( node ) {
1643 var retval = boundaryGuard( node ); 1649 var retval = boundaryGuard( node );
1644 if ( !retval && node.is && node.is( 'br' ) ) 1650 if ( !retval && node.is && node.is( 'br' ) )
@@ -1659,7 +1665,7 @@ CKEDITOR.dom.range = function( root ) {
1659 this.setStartAt( blockBoundary, !blockBoundary.is( 'br' ) && ( !enlargeable && this.checkStartOfBlock() || 1665 this.setStartAt( blockBoundary, !blockBoundary.is( 'br' ) && ( !enlargeable && this.checkStartOfBlock() ||
1660 enlargeable && blockBoundary.contains( enlargeable ) ) ? CKEDITOR.POSITION_AFTER_START : CKEDITOR.POSITION_AFTER_END ); 1666 enlargeable && blockBoundary.contains( enlargeable ) ) ? CKEDITOR.POSITION_AFTER_START : CKEDITOR.POSITION_AFTER_END );
1661 1667
1662 // Avoid enlarging the range further when end boundary spans right after the BR. (#7490) 1668 // Avoid enlarging the range further when end boundary spans right after the BR. (http://dev.ckeditor.com/ticket/7490)
1663 if ( unit == CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS ) { 1669 if ( unit == CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS ) {
1664 var theRange = this.clone(); 1670 var theRange = this.clone();
1665 walker = new CKEDITOR.dom.walker( theRange ); 1671 walker = new CKEDITOR.dom.walker( theRange );
@@ -1714,18 +1720,28 @@ CKEDITOR.dom.range = function( root ) {
1714 }, 1720 },
1715 1721
1716 /** 1722 /**
1717 * Descrease the range to make sure that boundaries 1723 * Decreases the range to make sure that boundaries
1718 * always anchor beside text nodes or innermost element. 1724 * always anchor beside text nodes or the innermost element.
1719 * 1725 *
1720 * @param {Number} mode The shrinking mode ({@link CKEDITOR#SHRINK_ELEMENT} or {@link CKEDITOR#SHRINK_TEXT}). 1726 * @param {Number} mode The shrinking mode ({@link CKEDITOR#SHRINK_ELEMENT} or {@link CKEDITOR#SHRINK_TEXT}).
1721 * 1727 *
1722 * * {@link CKEDITOR#SHRINK_ELEMENT} - Shrink the range boundaries to the edge of the innermost element. 1728 * * {@link CKEDITOR#SHRINK_ELEMENT} &ndash; Shrinks the range boundaries to the edge of the innermost element.
1723 * * {@link CKEDITOR#SHRINK_TEXT} - Shrink the range boudaries to anchor by the side of enclosed text 1729 * * {@link CKEDITOR#SHRINK_TEXT} &ndash; Shrinks the range boundaries to anchor by the side of enclosed text
1724 * node, range remains if there's no text nodes on boundaries at all. 1730 * node. The range remains if there are no text nodes available on boundaries.
1725 * 1731 *
1726 * @param {Boolean} selectContents Whether result range anchors at the inner OR outer boundary of the node. 1732 * @param {Boolean} [selectContents=false] Whether the resulting range anchors at the inner OR outer boundary of the node.
1733 * @param {Boolean/Object} [options=true] If this parameter is of a Boolean type, it is treated as
1734 * `options.shrinkOnBlockBoundary`. This parameter was added in 4.7.0.
1735 * @param {Boolean} [options.shrinkOnBlockBoundary=true] Whether the block boundary should be included in
1736 * the shrunk range.
1737 * @param {Boolean} [options.skipBogus=false] Whether bogus `<br>` elements should be ignored while
1738 * `mode` is set to {@link CKEDITOR#SHRINK_TEXT}. This option was added in 4.7.0.
1727 */ 1739 */
1728 shrink: function( mode, selectContents, shrinkOnBlockBoundary ) { 1740 shrink: function( mode, selectContents, options ) {
1741 var shrinkOnBlockBoundary = typeof options === 'boolean' ? options :
1742 ( options && typeof options.shrinkOnBlockBoundary === 'boolean' ? options.shrinkOnBlockBoundary : true ),
1743 skipBogus = options && options.skipBogus;
1744
1729 // Unable to shrink a collapsed range. 1745 // Unable to shrink a collapsed range.
1730 if ( !this.collapsed ) { 1746 if ( !this.collapsed ) {
1731 mode = mode || CKEDITOR.SHRINK_TEXT; 1747 mode = mode || CKEDITOR.SHRINK_TEXT;
@@ -1748,7 +1764,7 @@ CKEDITOR.dom.range = function( root ) {
1748 walkerRange.setStartAfter( startContainer ); 1764 walkerRange.setStartAfter( startContainer );
1749 else { 1765 else {
1750 // Enlarge the range properly to avoid walker making 1766 // Enlarge the range properly to avoid walker making
1751 // DOM changes caused by triming the text nodes later. 1767 // DOM changes caused by trimming the text nodes later.
1752 walkerRange.setStartBefore( startContainer ); 1768 walkerRange.setStartBefore( startContainer );
1753 moveStart = 0; 1769 moveStart = 0;
1754 } 1770 }
@@ -1766,7 +1782,8 @@ CKEDITOR.dom.range = function( root ) {
1766 } 1782 }
1767 1783
1768 var walker = new CKEDITOR.dom.walker( walkerRange ), 1784 var walker = new CKEDITOR.dom.walker( walkerRange ),
1769 isBookmark = CKEDITOR.dom.walker.bookmark(); 1785 isBookmark = CKEDITOR.dom.walker.bookmark(),
1786 isBogus = CKEDITOR.dom.walker.bogus();
1770 1787
1771 walker.evaluator = function( node ) { 1788 walker.evaluator = function( node ) {
1772 return node.type == ( mode == CKEDITOR.SHRINK_ELEMENT ? CKEDITOR.NODE_ELEMENT : CKEDITOR.NODE_TEXT ); 1789 return node.type == ( mode == CKEDITOR.SHRINK_ELEMENT ? CKEDITOR.NODE_ELEMENT : CKEDITOR.NODE_TEXT );
@@ -1774,6 +1791,11 @@ CKEDITOR.dom.range = function( root ) {
1774 1791
1775 var currentElement; 1792 var currentElement;
1776 walker.guard = function( node, movingOut ) { 1793 walker.guard = function( node, movingOut ) {
1794 // Skipping bogus before other cases (http://dev.ckeditor.com/ticket/17010).
1795 if ( skipBogus && isBogus( node ) ) {
1796 return true;
1797 }
1798
1777 if ( isBookmark( node ) ) 1799 if ( isBookmark( node ) )
1778 return true; 1800 return true;
1779 1801
@@ -1815,7 +1837,7 @@ CKEDITOR.dom.range = function( root ) {
1815 1837
1816 /** 1838 /**
1817 * Inserts a node at the start of the range. The range will be expanded 1839 * Inserts a node at the start of the range. The range will be expanded
1818 * the contain the node. 1840 * to contain the node.
1819 * 1841 *
1820 * @param {CKEDITOR.dom.node} node 1842 * @param {CKEDITOR.dom.node} node
1821 */ 1843 */
@@ -1842,7 +1864,7 @@ CKEDITOR.dom.range = function( root ) {
1842 }, 1864 },
1843 1865
1844 /** 1866 /**
1845 * Moves the range to given position according to specified node. 1867 * Moves the range to a given position according to the specified node.
1846 * 1868 *
1847 * // HTML: <p>Foo <b>bar</b></p> 1869 * // HTML: <p>Foo <b>bar</b></p>
1848 * range.moveToPosition( elB, CKEDITOR.POSITION_BEFORE_START ); 1870 * range.moveToPosition( elB, CKEDITOR.POSITION_BEFORE_START );
@@ -1850,7 +1872,7 @@ CKEDITOR.dom.range = function( root ) {
1850 * 1872 *
1851 * See also {@link #setStartAt} and {@link #setEndAt}. 1873 * See also {@link #setStartAt} and {@link #setEndAt}.
1852 * 1874 *
1853 * @param {CKEDITOR.dom.node} node The node according to which position will be set. 1875 * @param {CKEDITOR.dom.node} node The node according to which the position will be set.
1854 * @param {Number} position One of {@link CKEDITOR#POSITION_BEFORE_START}, 1876 * @param {Number} position One of {@link CKEDITOR#POSITION_BEFORE_START},
1855 * {@link CKEDITOR#POSITION_AFTER_START}, {@link CKEDITOR#POSITION_BEFORE_END}, 1877 * {@link CKEDITOR#POSITION_AFTER_START}, {@link CKEDITOR#POSITION_BEFORE_END},
1856 * {@link CKEDITOR#POSITION_AFTER_END}. 1878 * {@link CKEDITOR#POSITION_AFTER_END}.
@@ -2117,7 +2139,7 @@ CKEDITOR.dom.range = function( root ) {
2117 // So even if the initial range was placed before the bogus <br>, after creating the bookmark it 2139 // So even if the initial range was placed before the bogus <br>, after creating the bookmark it
2118 // is placed before the bookmark. 2140 // is placed before the bookmark.
2119 // Fortunately, getBogus() is able to skip the bookmark so it finds the bogus <br> in this case. 2141 // Fortunately, getBogus() is able to skip the bookmark so it finds the bogus <br> in this case.
2120 // We remove incorrectly placed one and add a brand new one. (#13001) 2142 // We remove incorrectly placed one and add a brand new one. (http://dev.ckeditor.com/ticket/13001)
2121 var bogus = fixedBlock.getBogus(); 2143 var bogus = fixedBlock.getBogus();
2122 if ( bogus ) { 2144 if ( bogus ) {
2123 bogus.remove(); 2145 bogus.remove();
@@ -2339,7 +2361,7 @@ CKEDITOR.dom.range = function( root ) {
2339 this.trim( 0, 1 ); 2361 this.trim( 0, 1 );
2340 } 2362 }
2341 2363
2342 // Antecipate the trim() call here, so the walker will not make 2364 // Anticipate the trim() call here, so the walker will not make
2343 // changes to the DOM, which would not get reflected into this 2365 // changes to the DOM, which would not get reflected into this
2344 // range otherwise. 2366 // range otherwise.
2345 this.trim(); 2367 this.trim();
@@ -2378,7 +2400,7 @@ CKEDITOR.dom.range = function( root ) {
2378 this.trim( 1, 0 ); 2400 this.trim( 1, 0 );
2379 } 2401 }
2380 2402
2381 // Antecipate the trim() call here, so the walker will not make 2403 // Anticipate the trim() call here, so the walker will not make
2382 // changes to the DOM, which would not get reflected into this 2404 // changes to the DOM, which would not get reflected into this
2383 // range otherwise. 2405 // range otherwise.
2384 this.trim(); 2406 this.trim();
@@ -2635,7 +2657,7 @@ CKEDITOR.dom.range = function( root ) {
2635 getEnclosedNode: function() { 2657 getEnclosedNode: function() {
2636 var walkerRange = this.clone(); 2658 var walkerRange = this.clone();
2637 2659
2638 // Optimize and analyze the range to avoid DOM destructive nature of walker. (#5780) 2660 // Optimize and analyze the range to avoid DOM destructive nature of walker. (http://dev.ckeditor.com/ticket/5780)
2639 walkerRange.optimize(); 2661 walkerRange.optimize();
2640 if ( walkerRange.startContainer.type != CKEDITOR.NODE_ELEMENT || walkerRange.endContainer.type != CKEDITOR.NODE_ELEMENT ) 2662 if ( walkerRange.startContainer.type != CKEDITOR.NODE_ELEMENT || walkerRange.endContainer.type != CKEDITOR.NODE_ELEMENT )
2641 return null; 2663 return null;
@@ -2702,6 +2724,53 @@ CKEDITOR.dom.range = function( root ) {
2702 getPreviousEditableNode: getNextEditableNode( 1 ), 2724 getPreviousEditableNode: getNextEditableNode( 1 ),
2703 2725
2704 /** 2726 /**
2727 * Returns any table element, like `td`, `tbody`, `table` etc. from a given range. The element
2728 * is returned only if the range is contained within one table (might be a nested
2729 * table, but it cannot be two different tables on the same DOM level).
2730 *
2731 * @private
2732 * @since 4.7
2733 * @param {Object} [tableElements] Mapping of element names that should be considered.
2734 * @returns {CKEDITOR.dom.element/null}
2735 */
2736 _getTableElement: function( tableElements ) {
2737 tableElements = tableElements || {
2738 td: 1,
2739 th: 1,
2740 tr: 1,
2741 tbody: 1,
2742 thead: 1,
2743 tfoot: 1,
2744 table: 1
2745 };
2746
2747 var start = this.startContainer,
2748 end = this.endContainer,
2749 startTable = start.getAscendant( 'table', true ),
2750 endTable = end.getAscendant( 'table', true );
2751
2752 // Super weird edge case in Safari: if there is a table with only one cell inside and that cell
2753 // is selected, then the end boundary of the table is moved into editor's editable.
2754 // That case is also present when selecting the last cell inside nested table.
2755 if ( CKEDITOR.env.safari && startTable && end.equals( this.root ) ) {
2756 return start.getAscendant( tableElements, true );
2757 }
2758
2759 if ( this.getEnclosedNode() ) {
2760 return this.getEnclosedNode().getAscendant( tableElements, true );
2761 }
2762
2763 // Ensure that selection starts and ends in the same table or one of the table is inside the other.
2764 if ( startTable && endTable && ( startTable.equals( endTable ) || startTable.contains( endTable ) ||
2765 endTable.contains( startTable ) ) ) {
2766
2767 return start.getAscendant( tableElements, true );
2768 }
2769
2770 return null;
2771 },
2772
2773 /**
2705 * Scrolls the start of current range into view. 2774 * Scrolls the start of current range into view.
2706 */ 2775 */
2707 scrollIntoView: function() { 2776 scrollIntoView: function() {
@@ -2783,9 +2852,112 @@ CKEDITOR.dom.range = function( root ) {
2783 } 2852 }
2784 // %REMOVE_END% 2853 // %REMOVE_END%
2785 this.endContainer = endContainer; 2854 this.endContainer = endContainer;
2855 },
2856
2857 /**
2858 * Looks for elements matching the `query` selector within a range.
2859 *
2860 * @since 4.5.11
2861 * @private
2862 * @param {String} query
2863 * @param {Boolean} [includeNonEditables=false] Whether elements with `contenteditable` set to `false` should
2864 * be included.
2865 * @returns {CKEDITOR.dom.element[]}
2866 */
2867 _find: function( query, includeNonEditables ) {
2868 var ancestor = this.getCommonAncestor(),
2869 boundaries = this.getBoundaryNodes(),
2870 // Contrary to CKEDITOR.dom.element#find we're returning array, that's because NodeList is immutable, and we need
2871 // to do some filtering in returned list.
2872 ret = [],
2873 curItem,
2874 i,
2875 initialMatches,
2876 isStartGood,
2877 isEndGood;
2878
2879 if ( ancestor && ancestor.find ) {
2880 initialMatches = ancestor.find( query );
2881
2882 for ( i = 0; i < initialMatches.count(); i++ ) {
2883 curItem = initialMatches.getItem( i );
2884
2885 // Using isReadOnly() method to filterout non editables. It checks isContentEditable including all browser quirks.
2886 if ( !includeNonEditables && curItem.isReadOnly() ) {
2887 continue;
2888 }
2889
2890 // It's not enough to get elements from common ancestor, because it might contain too many matches.
2891 // We need to ensure that returned items are between boundary points.
2892 isStartGood = ( curItem.getPosition( boundaries.startNode ) & CKEDITOR.POSITION_FOLLOWING ) || boundaries.startNode.equals( curItem );
2893 isEndGood = ( curItem.getPosition( boundaries.endNode ) & ( CKEDITOR.POSITION_PRECEDING + CKEDITOR.POSITION_IS_CONTAINED ) ) || boundaries.endNode.equals( curItem );
2894
2895 if ( isStartGood && isEndGood ) {
2896 ret.push( curItem );
2897 }
2898 }
2899 }
2900
2901 return ret;
2786 } 2902 }
2787 }; 2903 };
2788 2904
2905 /**
2906 * Merges every subsequent range in given set, returning a smaller array of ranges.
2907 *
2908 * Note that each range in the returned value will be enlarged with `CKEDITOR.ENLARGE_ELEMENT` value.
2909 *
2910 * @since 4.7.0
2911 * @static
2912 * @param {CKEDITOR.dom.range[]} ranges
2913 * @returns {CKEDITOR.dom.range[]} Set of merged ranges.
2914 * @member CKEDITOR.dom.range
2915 */
2916 CKEDITOR.dom.range.mergeRanges = function( ranges ) {
2917 return CKEDITOR.tools.array.reduce( ranges, function( ret, rng ) {
2918 // Last range ATM.
2919 var lastRange = ret[ ret.length - 1 ],
2920 isContinuation = false;
2921
2922 // Make a clone, we don't want to modify input.
2923 rng = rng.clone();
2924 rng.enlarge( CKEDITOR.ENLARGE_ELEMENT );
2925
2926 if ( lastRange ) {
2927 // The trick is to create a range spanning the gap between the two ranges. Then iterate over
2928 // each node found in this gap. If it contains anything other than whitespace, then it means it
2929 // is not a continuation.
2930 var gapRange = new CKEDITOR.dom.range( rng.root ),
2931 walker = new CKEDITOR.dom.walker( gapRange ),
2932 isWhitespace = CKEDITOR.dom.walker.whitespaces(),
2933 nodeInBetween;
2934
2935 gapRange.setStart( lastRange.endContainer, lastRange.endOffset );
2936 gapRange.setEnd( rng.startContainer, rng.startOffset );
2937
2938 nodeInBetween = walker.next();
2939
2940 while ( isWhitespace( nodeInBetween ) || rng.endContainer.equals( nodeInBetween ) ) {
2941 // We don't care about whitespaces, and range container. Also we skip the endContainer,
2942 // as it will also be provided by the iterator (as it visits it's opening tag).
2943 nodeInBetween = walker.next();
2944 }
2945
2946 // Simply, if anything has been found there's a content in between the two.
2947 isContinuation = !nodeInBetween;
2948 }
2949
2950 if ( isContinuation ) {
2951 // If last range ends, where the current range starts, then let's merge it.
2952 lastRange.setEnd( rng.endContainer, rng.endOffset );
2953 } else {
2954 // In other case just push cur range into the stack.
2955 ret.push( rng );
2956 }
2957
2958 return ret;
2959 }, [] );
2960 };
2789 2961
2790} )(); 2962} )();
2791 2963
@@ -2861,9 +3033,32 @@ CKEDITOR.POSITION_BEFORE_START = 3;
2861 */ 3033 */
2862CKEDITOR.POSITION_AFTER_END = 4; 3034CKEDITOR.POSITION_AFTER_END = 4;
2863 3035
3036/**
3037 * @readonly
3038 * @member CKEDITOR
3039 * @property {Number} [=1]
3040 */
2864CKEDITOR.ENLARGE_ELEMENT = 1; 3041CKEDITOR.ENLARGE_ELEMENT = 1;
3042
3043/**
3044 * @readonly
3045 * @member CKEDITOR
3046 * @property {Number} [=2]
3047 */
2865CKEDITOR.ENLARGE_BLOCK_CONTENTS = 2; 3048CKEDITOR.ENLARGE_BLOCK_CONTENTS = 2;
3049
3050/**
3051 * @readonly
3052 * @member CKEDITOR
3053 * @property {Number} [=3]
3054 */
2866CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS = 3; 3055CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS = 3;
3056
3057/**
3058 * @readonly
3059 * @member CKEDITOR
3060 * @property {Number} [=4]
3061 */
2867CKEDITOR.ENLARGE_INLINE = 4; 3062CKEDITOR.ENLARGE_INLINE = 4;
2868 3063
2869// Check boundary types. 3064// Check boundary types.
diff --git a/sources/core/dom/rangelist.js b/sources/core/dom/rangelist.js
index d02fc03..15ccb88 100644
--- a/sources/core/dom/rangelist.js
+++ b/sources/core/dom/rangelist.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -164,7 +164,7 @@
164 }; 164 };
165 165
166 // Update the specified range which has been mangled by previous insertion of 166 // Update the specified range which has been mangled by previous insertion of
167 // range bookmark nodes.(#3256) 167 // range bookmark nodes.(http://dev.ckeditor.com/ticket/3256)
168 function updateDirtyRange( bookmark, dirtyRange, checkEnd ) { 168 function updateDirtyRange( bookmark, dirtyRange, checkEnd ) {
169 var serializable = bookmark.serializable, 169 var serializable = bookmark.serializable,
170 container = dirtyRange[ checkEnd ? 'endContainer' : 'startContainer' ], 170 container = dirtyRange[ checkEnd ? 'endContainer' : 'startContainer' ],
diff --git a/sources/core/dom/text.js b/sources/core/dom/text.js
index c313259..e77a3d9 100644
--- a/sources/core/dom/text.js
+++ b/sources/core/dom/text.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -106,7 +106,7 @@ CKEDITOR.tools.extend( CKEDITOR.dom.text.prototype, {
106 retval.insertAfter( this ); 106 retval.insertAfter( this );
107 } else { 107 } else {
108 // IE BUG: IE8+ does not update the childNodes array in DOM after splitText(), 108 // IE BUG: IE8+ does not update the childNodes array in DOM after splitText(),
109 // we need to make some DOM changes to make it update. (#3436) 109 // we need to make some DOM changes to make it update. (http://dev.ckeditor.com/ticket/3436)
110 var workaround = doc.createText( '' ); 110 var workaround = doc.createText( '' );
111 workaround.insertAfter( retval ); 111 workaround.insertAfter( retval );
112 workaround.remove(); 112 workaround.remove();
diff --git a/sources/core/dom/walker.js b/sources/core/dom/walker.js
index 746b406..8665909 100644
--- a/sources/core/dom/walker.js
+++ b/sources/core/dom/walker.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -319,7 +319,7 @@
319 */ 319 */
320 CKEDITOR.dom.element.prototype.isBlockBoundary = function( customNodeNames ) { 320 CKEDITOR.dom.element.prototype.isBlockBoundary = function( customNodeNames ) {
321 // Whether element is in normal page flow. Floated or positioned elements are out of page flow. 321 // Whether element is in normal page flow. Floated or positioned elements are out of page flow.
322 // Don't consider floated or positioned formatting as block boundary, fall back to dtd check in that case. (#6297) 322 // Don't consider floated or positioned formatting as block boundary, fall back to dtd check in that case. (http://dev.ckeditor.com/ticket/6297)
323 var inPageFlow = this.getComputedStyle( 'float' ) == 'none' && !( this.getComputedStyle( 'position' ) in outOfFlowPositions ); 323 var inPageFlow = this.getComputedStyle( 'float' ) == 'none' && !( this.getComputedStyle( 'position' ) in outOfFlowPositions );
324 324
325 if ( inPageFlow && blockBoundaryDisplayMatch[ this.getComputedStyle( 'display' ) ] ) 325 if ( inPageFlow && blockBoundaryDisplayMatch[ this.getComputedStyle( 'display' ) ] )
@@ -388,7 +388,7 @@
388 return function( node ) { 388 return function( node ) {
389 var isWhitespace; 389 var isWhitespace;
390 if ( node && node.type == CKEDITOR.NODE_TEXT ) { 390 if ( node && node.type == CKEDITOR.NODE_TEXT ) {
391 // Whitespace, as well as the Filling Char Sequence text node used in Webkit. (#9384, #13816) 391 // Whitespace, as well as the Filling Char Sequence text node used in Webkit. (http://dev.ckeditor.com/ticket/9384, http://dev.ckeditor.com/ticket/13816)
392 isWhitespace = !CKEDITOR.tools.trim( node.getText() ) || 392 isWhitespace = !CKEDITOR.tools.trim( node.getText() ) ||
393 CKEDITOR.env.webkit && node.getText() == CKEDITOR.dom.selection.FILLING_CHAR_SEQUENCE; 393 CKEDITOR.env.webkit && node.getText() == CKEDITOR.dom.selection.FILLING_CHAR_SEQUENCE;
394 } 394 }
@@ -406,7 +406,7 @@
406 */ 406 */
407 CKEDITOR.dom.walker.invisible = function( isReject ) { 407 CKEDITOR.dom.walker.invisible = function( isReject ) {
408 var whitespace = CKEDITOR.dom.walker.whitespaces(), 408 var whitespace = CKEDITOR.dom.walker.whitespaces(),
409 // #12221 (Chrome) plus #11111 (Safari). 409 // http://dev.ckeditor.com/ticket/12221 (Chrome) plus http://dev.ckeditor.com/ticket/11111 (Safari).
410 offsetWidth0 = CKEDITOR.env.webkit ? 1 : 0; 410 offsetWidth0 = CKEDITOR.env.webkit ? 1 : 0;
411 411
412 return function( node ) { 412 return function( node ) {
@@ -422,7 +422,7 @@
422 // Nodes that take no spaces in wysiwyg: 422 // Nodes that take no spaces in wysiwyg:
423 // 1. White-spaces but not including NBSP. 423 // 1. White-spaces but not including NBSP.
424 // 2. Empty inline elements, e.g. <b></b>. 424 // 2. Empty inline elements, e.g. <b></b>.
425 // 3. <br> elements (bogus, surrounded by text) (#12423). 425 // 3. <br> elements (bogus, surrounded by text) (http://dev.ckeditor.com/ticket/12423).
426 invisible = node.$.offsetWidth <= offsetWidth0; 426 invisible = node.$.offsetWidth <= offsetWidth0;
427 } 427 }
428 428
@@ -636,7 +636,7 @@
636 * @returns {CKEDITOR.dom.node/Boolean} Bogus node or `false`. 636 * @returns {CKEDITOR.dom.node/Boolean} Bogus node or `false`.
637 */ 637 */
638 CKEDITOR.dom.element.prototype.getBogus = function() { 638 CKEDITOR.dom.element.prototype.getBogus = function() {
639 // Bogus are not always at the end, e.g. <p><a>text<br /></a></p> (#7070). 639 // Bogus are not always at the end, e.g. <p><a>text<br /></a></p> (http://dev.ckeditor.com/ticket/7070).
640 var tail = this; 640 var tail = this;
641 do { 641 do {
642 tail = tail.getPreviousSourceNode(); 642 tail = tail.getPreviousSourceNode();
diff --git a/sources/core/dom/window.js b/sources/core/dom/window.js
index edfeb84..ceeaeff 100644
--- a/sources/core/dom/window.js
+++ b/sources/core/dom/window.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/core/dtd.js b/sources/core/dtd.js
index d6dc5a6..6059d48 100644
--- a/sources/core/dtd.js
+++ b/sources/core/dtd.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/core/editable.js b/sources/core/editable.js
index b9b0270..6b3fa9f 100644
--- a/sources/core/editable.js
+++ b/sources/core/editable.js
@@ -1,9 +1,12 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
6( function() { 6( function() {
7 var isNotWhitespace, isNotBookmark, isEmpty, isBogus, emptyParagraphRegexp,
8 insert, fixTableAfterContentsDeletion, fixListAfterContentsDelete, getHtmlFromRangeHelpers, extractHtmlFromRangeHelpers;
9
7 /** 10 /**
8 * Editable class which provides all editing related activities by 11 * Editable class which provides all editing related activities by
9 * the `contenteditable` element, dynamically get attached to editor instance. 12 * the `contenteditable` element, dynamically get attached to editor instance.
@@ -71,17 +74,36 @@
71 } 74 }
72 } 75 }
73 76
74 // [IE] Use instead "setActive" method to focus the editable if it belongs to 77 // [Edge] Starting from EdgeHTML 14.14393, it does not support `setActive`. We need to use focus which
75 // the host page document, to avoid bringing an unexpected scroll. 78 // causes unexpected scroll. Store scrollTop value so it can be restored after focusing editor.
79 // Scroll only happens if the editor is focused for the first time. (http://dev.ckeditor.com/ticket/14825)
80 if ( CKEDITOR.env.edge && CKEDITOR.env.version > 14 && !this.hasFocus && this.getDocument().equals( CKEDITOR.document ) ) {
81 this.editor._.previousScrollTop = this.$.scrollTop;
82 }
83
84 // [IE] Use instead "setActive" method to focus the editable if it belongs to the host page document,
85 // to avoid bringing an unexpected scroll.
76 try { 86 try {
77 this.$[ CKEDITOR.env.ie && this.getDocument().equals( CKEDITOR.document ) ? 'setActive' : 'focus' ](); 87 if ( CKEDITOR.env.ie && !( CKEDITOR.env.edge && CKEDITOR.env.version > 14 ) && this.getDocument().equals( CKEDITOR.document ) ) {
88 this.$.setActive();
89 } else {
90 // We have no control over exactly what happens when the native `focus` method is called,
91 // so save the scroll position and restore it later.
92 if ( CKEDITOR.env.chrome ) {
93 var scrollPos = this.$.scrollTop;
94 this.$.focus();
95 this.$.scrollTop = scrollPos;
96 } else {
97 this.$.focus();
98 }
99 }
78 } catch ( e ) { 100 } catch ( e ) {
79 // IE throws unspecified error when focusing editable after closing dialog opened on nested editable. 101 // IE throws unspecified error when focusing editable after closing dialog opened on nested editable.
80 if ( !CKEDITOR.env.ie ) 102 if ( !CKEDITOR.env.ie )
81 throw e; 103 throw e;
82 } 104 }
83 105
84 // Remedy if Safari doens't applies focus properly. (#279) 106 // Remedy if Safari doens't applies focus properly. (http://dev.ckeditor.com/ticket/279)
85 if ( CKEDITOR.env.safari && !this.isInline() ) { 107 if ( CKEDITOR.env.safari && !this.isInline() ) {
86 active = CKEDITOR.document.getActive(); 108 active = CKEDITOR.document.getActive();
87 if ( !active.equals( this.getWindow().getFrame() ) ) 109 if ( !active.equals( this.getWindow().getFrame() ) )
@@ -103,7 +125,7 @@
103 125
104 // The "focusin/focusout" events bubbled, e.g. If there are elements with layout 126 // The "focusin/focusout" events bubbled, e.g. If there are elements with layout
105 // they fire this event when clicking in to edit them but it must be ignored 127 // they fire this event when clicking in to edit them but it must be ignored
106 // to allow edit their contents. (#4682) 128 // to allow edit their contents. (http://dev.ckeditor.com/ticket/4682)
107 fn = isNotBubbling( fn, this ); 129 fn = isNotBubbling( fn, this );
108 args[ 0 ] = name; 130 args[ 0 ] = name;
109 args[ 1 ] = fn; 131 args[ 1 ] = fn;
@@ -238,7 +260,7 @@
238 * @param {String} text 260 * @param {String} text
239 */ 261 */
240 insertText: function( text ) { 262 insertText: function( text ) {
241 // Focus the editor before calling transformPlainTextToHtml. (#12726) 263 // Focus the editor before calling transformPlainTextToHtml. (http://dev.ckeditor.com/ticket/12726)
242 this.editor.focus(); 264 this.editor.focus();
243 this.insertHtml( this.transformPlainTextToHtml( text ), 'text' ); 265 this.insertHtml( this.transformPlainTextToHtml( text ), 'text' );
244 }, 266 },
@@ -336,7 +358,7 @@
336 insertElement: function( element, range ) { 358 insertElement: function( element, range ) {
337 var editor = this.editor; 359 var editor = this.editor;
338 360
339 // Prepare for the insertion. For example - focus editor (#11848). 361 // Prepare for the insertion. For example - focus editor (http://dev.ckeditor.com/ticket/11848).
340 editor.focus(); 362 editor.focus();
341 editor.fire( 'saveSnapshot' ); 363 editor.fire( 'saveSnapshot' );
342 364
@@ -349,12 +371,12 @@
349 range = selection.getRanges()[ 0 ]; 371 range = selection.getRanges()[ 0 ];
350 } 372 }
351 373
352 // Insert element into first range only and ignore the rest (#11183). 374 // Insert element into first range only and ignore the rest (http://dev.ckeditor.com/ticket/11183).
353 if ( this.insertElementIntoRange( element, range ) ) { 375 if ( this.insertElementIntoRange( element, range ) ) {
354 range.moveToPosition( element, CKEDITOR.POSITION_AFTER_END ); 376 range.moveToPosition( element, CKEDITOR.POSITION_AFTER_END );
355 377
356 // If we're inserting a block element, the new cursor position must be 378 // If we're inserting a block element, the new cursor position must be
357 // optimized. (#3100,#5436,#8950) 379 // optimized. (http://dev.ckeditor.com/ticket/3100,http://dev.ckeditor.com/ticket/5436,http://dev.ckeditor.com/ticket/8950)
358 if ( isBlock ) { 380 if ( isBlock ) {
359 // Find next, meaningful element. 381 // Find next, meaningful element.
360 var next = element.getNext( function( node ) { 382 var next = element.getNext( function( node ) {
@@ -415,12 +437,19 @@
415 // Remove the original contents, merge split nodes. 437 // Remove the original contents, merge split nodes.
416 range.deleteContents( 1 ); 438 range.deleteContents( 1 );
417 439
418 // If range is placed in inermediate element (not td or th), we need to do three things: 440 if ( range.startContainer.type == CKEDITOR.NODE_ELEMENT ) {
419 // * fill emptied <td/th>s with if browser needs them, 441 // If range is placed in intermediate element (not td or th), we need to do three things:
420 // * remove empty text nodes so IE8 won't crash (http://dev.ckeditor.com/ticket/11183#comment:8), 442 // * fill emptied <td/th>s with if browser needs them,
421 // * fix structure and move range into the <td/th> element. 443 // * remove empty text nodes so IE8 won't crash
422 if ( range.startContainer.type == CKEDITOR.NODE_ELEMENT && range.startContainer.is( { tr: 1, table: 1, tbody: 1, thead: 1, tfoot: 1 } ) ) 444 // (http://dev.ckeditor.com/ticket/11183#comment:8),
423 fixTableAfterContentsDeletion( range ); 445 // * fix structure and move range into the <td/th> element.
446 if ( range.startContainer.is( { tr: 1, table: 1, tbody: 1, thead: 1, tfoot: 1 } ) ) {
447 fixTableAfterContentsDeletion( range );
448 } else if ( range.startContainer.is( CKEDITOR.dtd.$list ) ) {
449 // Similarly there's a need for lists.
450 fixListAfterContentsDelete( range );
451 }
452 }
424 453
425 // If we're inserting a block at dtd-violated position, split 454 // If we're inserting a block at dtd-violated position, split
426 // the parent blocks until we reach blockLimit. 455 // the parent blocks until we reach blockLimit.
@@ -435,7 +464,7 @@
435 range.splitElement( current ); 464 range.splitElement( current );
436 465
437 // If we're in an empty block which indicate a new paragraph, 466 // If we're in an empty block which indicate a new paragraph,
438 // simply replace it with the inserting block.(#3664) 467 // simply replace it with the inserting block.(http://dev.ckeditor.com/ticket/3664)
439 else if ( range.checkStartOfBlock() && range.checkEndOfBlock() ) { 468 else if ( range.checkStartOfBlock() && range.checkEndOfBlock() ) {
440 range.setStartBefore( current ); 469 range.setStartBefore( current );
441 range.collapse( true ); 470 range.collapse( true );
@@ -749,7 +778,7 @@
749 range.checkEndOfBlock() && 778 range.checkEndOfBlock() &&
750 path.block && 779 path.block &&
751 !range.root.equals( path.block ) && 780 !range.root.equals( path.block ) &&
752 // Do not remove a block with bookmarks. (#13465) 781 // Do not remove a block with bookmarks. (http://dev.ckeditor.com/ticket/13465)
753 !hasBookmarks( path.block ) ) { 782 !hasBookmarks( path.block ) ) {
754 range.moveToPosition( path.block, CKEDITOR.POSITION_BEFORE_START ); 783 range.moveToPosition( path.block, CKEDITOR.POSITION_BEFORE_START );
755 path.block.remove(); 784 path.block.remove();
@@ -811,7 +840,7 @@
811 840
812 // IE considers control-type element as separate 841 // IE considers control-type element as separate
813 // focus host when selected, avoid destroying the 842 // focus host when selected, avoid destroying the
814 // selection in such case. (#5812) (#8949) 843 // selection in such case. (http://dev.ckeditor.com/ticket/5812) (http://dev.ckeditor.com/ticket/8949)
815 if ( ieSel && ieSel.type == 'Control' ) 844 if ( ieSel && ieSel.type == 'Control' )
816 return; 845 return;
817 846
@@ -862,6 +891,30 @@
862 this.hasFocus = true; 891 this.hasFocus = true;
863 }, null, null, -1 ); 892 }, null, null, -1 );
864 893
894 if ( CKEDITOR.env.webkit ) {
895 // [WebKit] Save scrollTop value so it can be used when restoring locked selection. (http://dev.ckeditor.com/ticket/14659)
896 this.on( 'scroll', function() {
897 editor._.previousScrollTop = editor.editable().$.scrollTop;
898 }, null, null, -1 );
899 }
900
901 // [Edge] This is the other part of the workaround for Edge which restores saved
902 // scrollTop value and removes listener which is not needed anymore. (http://dev.ckeditor.com/ticket/14825)
903 if ( CKEDITOR.env.edge && CKEDITOR.env.version > 14 ) {
904
905 var fixScrollOnFocus = function() {
906 var editable = editor.editable();
907
908 if ( editor._.previousScrollTop != null && editable.getDocument().equals( CKEDITOR.document ) ) {
909 editable.$.scrollTop = editor._.previousScrollTop;
910 editor._.previousScrollTop = null;
911 this.removeListener( 'scroll', fixScrollOnFocus );
912 }
913 };
914
915 this.on( 'scroll', fixScrollOnFocus );
916 }
917
865 // Register to focus manager. 918 // Register to focus manager.
866 editor.focusManager.add( this ); 919 editor.focusManager.add( this );
867 920
@@ -902,12 +955,16 @@
902 // Create the content stylesheet for this document. 955 // Create the content stylesheet for this document.
903 var styles = CKEDITOR.getCss(); 956 var styles = CKEDITOR.getCss();
904 if ( styles ) { 957 if ( styles ) {
905 var head = doc.getHead(); 958 var head = doc.getHead(),
906 if ( !head.getCustomData( 'stylesheet' ) ) { 959 stylesElement = head.getCustomData( 'stylesheet' );
960
961 if ( !stylesElement ) {
907 var sheet = doc.appendStyleText( styles ); 962 var sheet = doc.appendStyleText( styles );
908 sheet = new CKEDITOR.dom.element( sheet.ownerNode || sheet.owningElement ); 963 sheet = new CKEDITOR.dom.element( sheet.ownerNode || sheet.owningElement );
909 head.setCustomData( 'stylesheet', sheet ); 964 head.setCustomData( 'stylesheet', sheet );
910 sheet.data( 'cke-temp', 1 ); 965 sheet.data( 'cke-temp', 1 );
966 } else if ( styles != stylesElement.getText() ) {
967 CKEDITOR.env.ie && CKEDITOR.env.version < 9 ? stylesElement.$.styleSheet.cssText = styles : stylesElement.setText( styles );
911 } 968 }
912 } 969 }
913 970
@@ -918,7 +975,7 @@
918 // Pass this configuration to styles system. 975 // Pass this configuration to styles system.
919 this.setCustomData( 'cke_includeReadonly', !editor.config.disableReadonlyStyling ); 976 this.setCustomData( 'cke_includeReadonly', !editor.config.disableReadonlyStyling );
920 977
921 // Prevent the browser opening read-only links. (#6032 & #10912) 978 // Prevent the browser opening read-only links. (http://dev.ckeditor.com/ticket/6032 & http://dev.ckeditor.com/ticket/10912)
922 this.attachListener( this, 'click', function( evt ) { 979 this.attachListener( this, 'click', function( evt ) {
923 evt = evt.data; 980 evt = evt.data;
924 981
@@ -931,7 +988,7 @@
931 var backspaceOrDelete = { 8: 1, 46: 1 }; 988 var backspaceOrDelete = { 8: 1, 46: 1 };
932 989
933 // Override keystrokes which should have deletion behavior 990 // Override keystrokes which should have deletion behavior
934 // on fully selected element . (#4047) (#7645) 991 // on fully selected element . (http://dev.ckeditor.com/ticket/4047) (http://dev.ckeditor.com/ticket/7645)
935 this.attachListener( editor, 'key', function( evt ) { 992 this.attachListener( editor, 'key', function( evt ) {
936 if ( editor.readOnly ) 993 if ( editor.readOnly )
937 return true; 994 return true;
@@ -941,10 +998,15 @@
941 var keyCode = evt.data.domEvent.getKey(), 998 var keyCode = evt.data.domEvent.getKey(),
942 isHandled; 999 isHandled;
943 1000
1001 // Prevent of reading path of empty range (http://dev.ckeditor.com/ticket/13096, #457).
1002 var sel = editor.getSelection();
1003 if ( sel.getRanges().length === 0 ) {
1004 return;
1005 }
1006
944 // Backspace OR Delete. 1007 // Backspace OR Delete.
945 if ( keyCode in backspaceOrDelete ) { 1008 if ( keyCode in backspaceOrDelete ) {
946 var sel = editor.getSelection(), 1009 var selected,
947 selected,
948 range = sel.getRanges()[ 0 ], 1010 range = sel.getRanges()[ 0 ],
949 path = range.startPath(), 1011 path = range.startPath(),
950 block, 1012 block,
@@ -952,16 +1014,17 @@
952 next, 1014 next,
953 rtl = keyCode == 8; 1015 rtl = keyCode == 8;
954 1016
1017
955 if ( 1018 if (
956 // [IE<11] Remove selected image/anchor/etc here to avoid going back in history. (#10055) 1019 // [IE<11] Remove selected image/anchor/etc here to avoid going back in history. (http://dev.ckeditor.com/ticket/10055)
957 ( CKEDITOR.env.ie && CKEDITOR.env.version < 11 && ( selected = sel.getSelectedElement() ) ) || 1020 ( CKEDITOR.env.ie && CKEDITOR.env.version < 11 && ( selected = sel.getSelectedElement() ) ) ||
958 // Remove the entire list/table on fully selected content. (#7645) 1021 // Remove the entire list/table on fully selected content. (http://dev.ckeditor.com/ticket/7645)
959 ( selected = getSelectedTableList( sel ) ) ) { 1022 ( selected = getSelectedTableList( sel ) ) ) {
960 // Make undo snapshot. 1023 // Make undo snapshot.
961 editor.fire( 'saveSnapshot' ); 1024 editor.fire( 'saveSnapshot' );
962 1025
963 // Delete any element that 'hasLayout' (e.g. hr,table) in IE8 will 1026 // Delete any element that 'hasLayout' (e.g. hr,table) in IE8 will
964 // break up the selection, safely manage it here. (#4795) 1027 // break up the selection, safely manage it here. (http://dev.ckeditor.com/ticket/4795)
965 range.moveToPosition( selected, CKEDITOR.POSITION_BEFORE_START ); 1028 range.moveToPosition( selected, CKEDITOR.POSITION_BEFORE_START );
966 // Remove the control manually. 1029 // Remove the control manually.
967 selected.remove(); 1030 selected.remove();
@@ -971,7 +1034,7 @@
971 1034
972 isHandled = 1; 1035 isHandled = 1;
973 } else if ( range.collapsed ) { 1036 } else if ( range.collapsed ) {
974 // Handle the following special cases: (#6217) 1037 // Handle the following special cases: (http://dev.ckeditor.com/ticket/6217)
975 // 1. Del/Backspace key before/after table; 1038 // 1. Del/Backspace key before/after table;
976 // 2. Backspace Key after start of table. 1039 // 2. Backspace Key after start of table.
977 if ( ( block = path.block ) && 1040 if ( ( block = path.block ) &&
@@ -1046,28 +1109,28 @@
1046 editor.fire( 'doubleclick', data ); 1109 editor.fire( 'doubleclick', data );
1047 } ); 1110 } );
1048 1111
1049 // Prevent automatic submission in IE #6336 1112 // Prevent automatic submission in IE http://dev.ckeditor.com/ticket/6336
1050 CKEDITOR.env.ie && this.attachListener( this, 'click', blockInputClick ); 1113 CKEDITOR.env.ie && this.attachListener( this, 'click', blockInputClick );
1051 1114
1052 // Gecko/Webkit need some help when selecting control type elements. (#3448) 1115 // Gecko/Webkit need some help when selecting control type elements. (http://dev.ckeditor.com/ticket/3448)
1053 // We apply same behavior for IE Edge. (#13386) 1116 // We apply same behavior for IE Edge. (http://dev.ckeditor.com/ticket/13386)
1054 if ( !CKEDITOR.env.ie || CKEDITOR.env.edge ) { 1117 if ( !CKEDITOR.env.ie || CKEDITOR.env.edge ) {
1055 this.attachListener( this, 'mousedown', function( ev ) { 1118 this.attachListener( this, 'mousedown', function( ev ) {
1056 var control = ev.data.getTarget(); 1119 var control = ev.data.getTarget();
1057 // #11727. Note: htmlDP assures that input/textarea/select have contenteditable=false 1120 // http://dev.ckeditor.com/ticket/11727. Note: htmlDP assures that input/textarea/select have contenteditable=false
1058 // attributes. However, they also have data-cke-editable attribute, so isReadOnly() returns false, 1121 // attributes. However, they also have data-cke-editable attribute, so isReadOnly() returns false,
1059 // and therefore those elements are correctly selected by this code. 1122 // and therefore those elements are correctly selected by this code.
1060 if ( control.is( 'img', 'hr', 'input', 'textarea', 'select' ) && !control.isReadOnly() ) { 1123 if ( control.is( 'img', 'hr', 'input', 'textarea', 'select' ) && !control.isReadOnly() ) {
1061 editor.getSelection().selectElement( control ); 1124 editor.getSelection().selectElement( control );
1062 1125
1063 // Prevent focus from stealing from the editable. (#9515) 1126 // Prevent focus from stealing from the editable. (http://dev.ckeditor.com/ticket/9515)
1064 if ( control.is( 'input', 'textarea', 'select' ) ) 1127 if ( control.is( 'input', 'textarea', 'select' ) )
1065 ev.data.preventDefault(); 1128 ev.data.preventDefault();
1066 } 1129 }
1067 } ); 1130 } );
1068 } 1131 }
1069 1132
1070 // For some reason, after click event is done, IE Edge loses focus on the selected element. (#13386) 1133 // For some reason, after click event is done, IE Edge loses focus on the selected element. (http://dev.ckeditor.com/ticket/13386)
1071 if ( CKEDITOR.env.edge ) { 1134 if ( CKEDITOR.env.edge ) {
1072 this.attachListener( this, 'mouseup', function( ev ) { 1135 this.attachListener( this, 'mouseup', function( ev ) {
1073 var selectedElement = ev.data.getTarget(); 1136 var selectedElement = ev.data.getTarget();
@@ -1078,7 +1141,7 @@
1078 } 1141 }
1079 1142
1080 // Prevent right click from selecting an empty block even 1143 // Prevent right click from selecting an empty block even
1081 // when selection is anchored inside it. (#5845) 1144 // when selection is anchored inside it. (http://dev.ckeditor.com/ticket/5845)
1082 if ( CKEDITOR.env.gecko ) { 1145 if ( CKEDITOR.env.gecko ) {
1083 this.attachListener( this, 'mouseup', function( ev ) { 1146 this.attachListener( this, 'mouseup', function( ev ) {
1084 if ( ev.data.$.button == 2 ) { 1147 if ( ev.data.$.button == 2 ) {
@@ -1109,7 +1172,7 @@
1109 } 1172 }
1110 1173
1111 // Prevent Webkit/Blink from going rogue when joining 1174 // Prevent Webkit/Blink from going rogue when joining
1112 // blocks on BACKSPACE/DEL (#11861,#9998). 1175 // blocks on BACKSPACE/DEL (http://dev.ckeditor.com/ticket/11861,http://dev.ckeditor.com/ticket/9998).
1113 if ( CKEDITOR.env.webkit ) { 1176 if ( CKEDITOR.env.webkit ) {
1114 this.attachListener( editor, 'key', function( evt ) { 1177 this.attachListener( editor, 'key', function( evt ) {
1115 if ( editor.readOnly ) { 1178 if ( editor.readOnly ) {
@@ -1123,8 +1186,14 @@
1123 if ( !( key in backspaceOrDelete ) ) 1186 if ( !( key in backspaceOrDelete ) )
1124 return; 1187 return;
1125 1188
1189 // Prevent of reading path of empty range (http://dev.ckeditor.com/ticket/13096, #457).
1190 var sel = editor.getSelection();
1191 if ( sel.getRanges().length === 0 ) {
1192 return;
1193 }
1194
1126 var backspace = key == 8, 1195 var backspace = key == 8,
1127 range = editor.getSelection().getRanges()[ 0 ], 1196 range = sel.getRanges()[ 0 ],
1128 startPath = range.startPath(); 1197 startPath = range.startPath();
1129 1198
1130 if ( range.collapsed ) { 1199 if ( range.collapsed ) {
@@ -1135,7 +1204,7 @@
1135 return; 1204 return;
1136 } 1205 }
1137 1206
1138 // Scroll to the new position of the caret (#11960). 1207 // Scroll to the new position of the caret (http://dev.ckeditor.com/ticket/11960).
1139 editor.getSelection().scrollIntoView(); 1208 editor.getSelection().scrollIntoView();
1140 editor.fire( 'saveSnapshot' ); 1209 editor.fire( 'saveSnapshot' );
1141 1210
@@ -1190,8 +1259,9 @@
1190 * 1259 *
1191 * @method editable 1260 * @method editable
1192 * @member CKEDITOR.editor 1261 * @member CKEDITOR.editor
1193 * @param {CKEDITOR.dom.element/CKEDITOR.editable} elementOrEditable The 1262 * @param {CKEDITOR.dom.element/CKEDITOR.editable} [elementOrEditable] The
1194 * DOM element to become the editable or a {@link CKEDITOR.editable} object. 1263 * DOM element to become the editable or a {@link CKEDITOR.editable} object.
1264 * @returns {CKEDITOR.dom.element/null} The editor's editable element, or `null` if not available.
1195 */ 1265 */
1196 CKEDITOR.editor.prototype.editable = function( element ) { 1266 CKEDITOR.editor.prototype.editable = function( element ) {
1197 var editable = this._.editable; 1267 var editable = this._.editable;
@@ -1214,7 +1284,7 @@
1214 CKEDITOR.on( 'instanceLoaded', function( evt ) { 1284 CKEDITOR.on( 'instanceLoaded', function( evt ) {
1215 var editor = evt.editor; 1285 var editor = evt.editor;
1216 1286
1217 // and flag that the element was locked by our code so it'll be editable by the editor functions (#6046). 1287 // and flag that the element was locked by our code so it'll be editable by the editor functions (http://dev.ckeditor.com/ticket/6046).
1218 editor.on( 'insertElement', function( evt ) { 1288 editor.on( 'insertElement', function( evt ) {
1219 var element = evt.data; 1289 var element = evt.data;
1220 if ( element.type == CKEDITOR.NODE_ELEMENT && ( element.is( 'input' ) || element.is( 'textarea' ) ) ) { 1290 if ( element.type == CKEDITOR.NODE_ELEMENT && ( element.is( 'input' ) || element.is( 'textarea' ) ) ) {
@@ -1229,9 +1299,9 @@
1229 if ( editor.readOnly ) 1299 if ( editor.readOnly )
1230 return; 1300 return;
1231 1301
1232 // Auto fixing on some document structure weakness to enhance usabilities. (#3190 and #3189) 1302 // Auto fixing on some document structure weakness to enhance usabilities. (http://dev.ckeditor.com/ticket/3190 and http://dev.ckeditor.com/ticket/3189)
1233 var sel = editor.getSelection(); 1303 var sel = editor.getSelection();
1234 // Do it only when selection is not locked. (#8222) 1304 // Do it only when selection is not locked. (http://dev.ckeditor.com/ticket/8222)
1235 if ( sel && !sel.isLocked ) { 1305 if ( sel && !sel.isLocked ) {
1236 var isDirty = editor.checkDirty(); 1306 var isDirty = editor.checkDirty();
1237 1307
@@ -1281,7 +1351,7 @@
1281 } ); 1351 } );
1282 } ); 1352 } );
1283 1353
1284 // #9222: Show text cursor in Gecko. 1354 // http://dev.ckeditor.com/ticket/9222: Show text cursor in Gecko.
1285 // Show default cursor over control elements on all non-IEs. 1355 // Show default cursor over control elements on all non-IEs.
1286 CKEDITOR.addCss( '.cke_editable{cursor:text}.cke_editable img,.cke_editable input,.cke_editable textarea{cursor:default}' ); 1356 CKEDITOR.addCss( '.cke_editable{cursor:text}.cke_editable img,.cke_editable input,.cke_editable textarea{cursor:default}' );
1287 1357
@@ -1291,15 +1361,15 @@
1291 // 1361 //
1292 // 1362 //
1293 1363
1294 var isNotWhitespace = CKEDITOR.dom.walker.whitespaces( true ), 1364 isNotWhitespace = CKEDITOR.dom.walker.whitespaces( true ),
1295 isNotBookmark = CKEDITOR.dom.walker.bookmark( false, true ), 1365 isNotBookmark = CKEDITOR.dom.walker.bookmark( false, true ),
1296 isEmpty = CKEDITOR.dom.walker.empty(), 1366 isEmpty = CKEDITOR.dom.walker.empty(),
1297 isBogus = CKEDITOR.dom.walker.bogus(), 1367 isBogus = CKEDITOR.dom.walker.bogus(),
1298 // Matching an empty paragraph at the end of document. 1368 // Matching an empty paragraph at the end of document.
1299 emptyParagraphRegexp = /(^|<body\b[^>]*>)\s*<(p|div|address|h\d|center|pre)[^>]*>\s*(?:<br[^>]*>|&nbsp;|\u00A0|&#160;)?\s*(:?<\/\2>)?\s*(?=$|<\/body>)/gi; 1369 emptyParagraphRegexp = /(^|<body\b[^>]*>)\s*<(p|div|address|h\d|center|pre)[^>]*>\s*(?:<br[^>]*>|&nbsp;|\u00A0|&#160;)?\s*(:?<\/\2>)?\s*(?=$|<\/body>)/gi;
1300 1370
1301 // Auto-fixing block-less content by wrapping paragraph (#3190), prevent 1371 // Auto-fixing block-less content by wrapping paragraph (http://dev.ckeditor.com/ticket/3190), prevent
1302 // non-exitable-block by padding extra br.(#3189) 1372 // non-exitable-block by padding extra br.(http://dev.ckeditor.com/ticket/3189)
1303 // Returns truly value when dom was changed, falsy otherwise. 1373 // Returns truly value when dom was changed, falsy otherwise.
1304 function fixDom( evt ) { 1374 function fixDom( evt ) {
1305 var editor = evt.editor, 1375 var editor = evt.editor,
@@ -1320,7 +1390,7 @@
1320 } 1390 }
1321 1391
1322 // When we're in block enter mode, a new paragraph will be established 1392 // When we're in block enter mode, a new paragraph will be established
1323 // to encapsulate inline contents inside editable. (#3657) 1393 // to encapsulate inline contents inside editable. (http://dev.ckeditor.com/ticket/3657)
1324 // Don't autoparagraph if browser (namely - IE) incorrectly anchored selection 1394 // Don't autoparagraph if browser (namely - IE) incorrectly anchored selection
1325 // inside non-editable content. This happens e.g. if non-editable block is the only 1395 // inside non-editable content. This happens e.g. if non-editable block is the only
1326 // content of editable. 1396 // content of editable.
@@ -1348,7 +1418,7 @@
1348 1418
1349 selectionUpdateNeeded = 1; 1419 selectionUpdateNeeded = 1;
1350 1420
1351 // Cancel this selection change in favor of the next (correct). (#6811) 1421 // Cancel this selection change in favor of the next (correct). (http://dev.ckeditor.com/ticket/6811)
1352 evt.cancel(); 1422 evt.cancel();
1353 } 1423 }
1354 } 1424 }
@@ -1364,13 +1434,13 @@
1364 if ( selection.isFake ) 1434 if ( selection.isFake )
1365 return 0; 1435 return 0;
1366 1436
1367 // Ensure bogus br could help to move cursor (out of styles) to the end of block. (#7041) 1437 // Ensure bogus br could help to move cursor (out of styles) to the end of block. (http://dev.ckeditor.com/ticket/7041)
1368 var pathBlock = path.block || path.blockLimit, 1438 var pathBlock = path.block || path.blockLimit,
1369 lastNode = pathBlock && pathBlock.getLast( isNotEmpty ); 1439 lastNode = pathBlock && pathBlock.getLast( isNotEmpty );
1370 1440
1371 // Check some specialities of the current path block: 1441 // Check some specialities of the current path block:
1372 // 1. It is really displayed as block; (#7221) 1442 // 1. It is really displayed as block; (http://dev.ckeditor.com/ticket/7221)
1373 // 2. It doesn't end with one inner block; (#7467) 1443 // 2. It doesn't end with one inner block; (http://dev.ckeditor.com/ticket/7467)
1374 // 3. It doesn't have bogus br yet. 1444 // 3. It doesn't have bogus br yet.
1375 if ( 1445 if (
1376 pathBlock && pathBlock.isBlockBoundary() && 1446 pathBlock && pathBlock.isBlockBoundary() &&
@@ -1507,7 +1577,7 @@
1507 // Whether in given context (pathBlock, pathBlockLimit and editor settings) 1577 // Whether in given context (pathBlock, pathBlockLimit and editor settings)
1508 // editor should automatically wrap inline contents with blocks. 1578 // editor should automatically wrap inline contents with blocks.
1509 function shouldAutoParagraph( editor, pathBlock, pathBlockLimit ) { 1579 function shouldAutoParagraph( editor, pathBlock, pathBlockLimit ) {
1510 // Check whether pathBlock equals pathBlockLimit to support nested editable (#12162). 1580 // Check whether pathBlock equals pathBlockLimit to support nested editable (http://dev.ckeditor.com/ticket/12162).
1511 return editor.config.autoParagraph !== false && 1581 return editor.config.autoParagraph !== false &&
1512 editor.activeEnterMode != CKEDITOR.ENTER_BR && 1582 editor.activeEnterMode != CKEDITOR.ENTER_BR &&
1513 ( 1583 (
@@ -1523,7 +1593,7 @@
1523 // 1593 //
1524 // Functions related to insertXXX methods 1594 // Functions related to insertXXX methods
1525 // 1595 //
1526 var insert = ( function() { 1596 insert = ( function() {
1527 'use strict'; 1597 'use strict';
1528 1598
1529 var DTD = CKEDITOR.dtd; 1599 var DTD = CKEDITOR.dtd;
@@ -1574,7 +1644,7 @@
1574 1644
1575 // Select range and stop execution. 1645 // Select range and stop execution.
1576 // If data has been totally emptied after the filtering, 1646 // If data has been totally emptied after the filtering,
1577 // any insertion is pointless (#10339). 1647 // any insertion is pointless (http://dev.ckeditor.com/ticket/10339).
1578 if ( data && processDataForInsertion( that, data ) ) { 1648 if ( data && processDataForInsertion( that, data ) ) {
1579 // DATA INSERTION 1649 // DATA INSERTION
1580 insertDataIntoRange( that ); 1650 insertDataIntoRange( that );
@@ -1959,7 +2029,7 @@
1959 nodeName = node.getName(); 2029 nodeName = node.getName();
1960 2030
1961 // Extract only the list items, when insertion happens 2031 // Extract only the list items, when insertion happens
1962 // inside of a list, reads as rearrange list items. (#7957) 2032 // inside of a list, reads as rearrange list items. (http://dev.ckeditor.com/ticket/7957)
1963 if ( insideOfList && nodeName in CKEDITOR.dtd.$list ) { 2033 if ( insideOfList && nodeName in CKEDITOR.dtd.$list ) {
1964 nodesData = nodesData.concat( extractNodesData( node, that ) ); 2034 nodesData = nodesData.concat( extractNodesData( node, that ) );
1965 continue; 2035 continue;
@@ -2207,7 +2277,7 @@
2207 } 2277 }
2208 2278
2209 // Don't use String.replace because it fails in IE7 if special replacement 2279 // Don't use String.replace because it fails in IE7 if special replacement
2210 // characters ($$, $&, etc.) are in data (#10367). 2280 // characters ($$, $&, etc.) are in data (http://dev.ckeditor.com/ticket/10367).
2211 return wrapper.getOuterHtml().split( '{cke-peak}' ).join( data ); 2281 return wrapper.getOuterHtml().split( '{cke-peak}' ).join( data );
2212 } 2282 }
2213 2283
@@ -2232,7 +2302,7 @@
2232 // 1. Fixes a range which is a result of deleteContents() and is placed in an intermediate element (see dtd.$intermediate), 2302 // 1. Fixes a range which is a result of deleteContents() and is placed in an intermediate element (see dtd.$intermediate),
2233 // inside a table. A goal is to find a closest <td> or <th> element and when this fails, recreate the structure of the table. 2303 // inside a table. A goal is to find a closest <td> or <th> element and when this fails, recreate the structure of the table.
2234 // 2. Fixes empty cells by appending bogus <br>s or deleting empty text nodes in IE<=8 case. 2304 // 2. Fixes empty cells by appending bogus <br>s or deleting empty text nodes in IE<=8 case.
2235 var fixTableAfterContentsDeletion = ( function() { 2305 fixTableAfterContentsDeletion = ( function() {
2236 // Creates an element walker which can only "go deeper". It won't 2306 // Creates an element walker which can only "go deeper". It won't
2237 // move out from any element. Therefore it can be used to find <td>x</td> in cases like: 2307 // move out from any element. Therefore it can be used to find <td>x</td> in cases like:
2238 // <table><tbody><tr><td>x</td></tr></tbody>^<tfoot>... 2308 // <table><tbody><tr><td>x</td></tr></tbody>^<tfoot>...
@@ -2330,6 +2400,65 @@
2330 }; 2400 };
2331 } )(); 2401 } )();
2332 2402
2403 fixListAfterContentsDelete = ( function() {
2404 // Creates an element walker which operates only within lists.
2405 function getFixListSelectionWalker( testRange ) {
2406 var walker = new CKEDITOR.dom.walker( testRange );
2407 walker.guard = function( node, isMovingOut ) {
2408 if ( isMovingOut )
2409 return false;
2410 if ( node.type == CKEDITOR.NODE_ELEMENT )
2411 return node.is( CKEDITOR.dtd.$list ) || node.is( CKEDITOR.dtd.$listItem );
2412 };
2413 walker.evaluator = function( node ) {
2414 return node.type == CKEDITOR.NODE_ELEMENT && node.is( CKEDITOR.dtd.$listItem );
2415 };
2416
2417 return walker;
2418 }
2419
2420 return function( range ) {
2421 var container = range.startContainer,
2422 appendToStart = false,
2423 testRange,
2424 deeperSibling;
2425
2426 // Look left.
2427 testRange = range.clone();
2428 testRange.setStart( container, 0 );
2429 deeperSibling = getFixListSelectionWalker( testRange ).lastBackward();
2430
2431 // If left is empty, look right.
2432 if ( !deeperSibling ) {
2433 testRange = range.clone();
2434 testRange.setEndAt( container, CKEDITOR.POSITION_BEFORE_END );
2435 deeperSibling = getFixListSelectionWalker( testRange ).lastForward();
2436 appendToStart = true;
2437 }
2438
2439 // If there's no deeper nested element in both direction - container is empty - we'll use it then.
2440 if ( !deeperSibling )
2441 deeperSibling = container;
2442
2443 // We found a list what means that it's empty - remove it completely.
2444 if ( deeperSibling.is( CKEDITOR.dtd.$list ) ) {
2445 range.setStartAt( deeperSibling, CKEDITOR.POSITION_BEFORE_START );
2446 range.collapse( true );
2447 deeperSibling.remove();
2448 return;
2449 }
2450
2451 // To avoid setting selection after bogus, remove it from the target list item.
2452 // We can safely do that, because we'll insert element into that cell.
2453 var bogus = deeperSibling.getBogus();
2454 if ( bogus )
2455 bogus.remove();
2456
2457 range.moveToPosition( deeperSibling, appendToStart ? CKEDITOR.POSITION_AFTER_START : CKEDITOR.POSITION_BEFORE_END );
2458 range.select();
2459 };
2460 } )();
2461
2333 function mergeBlocksCollapsedSelection( editor, range, backspace, startPath ) { 2462 function mergeBlocksCollapsedSelection( editor, range, backspace, startPath ) {
2334 var startBlock = startPath.block; 2463 var startBlock = startPath.block;
2335 2464
@@ -2409,7 +2538,7 @@
2409 if ( ( bogus = startBlock.getBogus() ) ) 2538 if ( ( bogus = startBlock.getBogus() ) )
2410 bogus.remove(); 2539 bogus.remove();
2411 2540
2412 // Changing end container to element from text node (#12503). 2541 // Changing end container to element from text node (http://dev.ckeditor.com/ticket/12503).
2413 range.enlarge( CKEDITOR.ENLARGE_INLINE ); 2542 range.enlarge( CKEDITOR.ENLARGE_INLINE );
2414 2543
2415 // Delete range contents. Do NOT merge. Merging is weird. 2544 // Delete range contents. Do NOT merge. Merging is weird.
@@ -2432,7 +2561,7 @@
2432 range = editor.getSelection().getRanges()[ 0 ]; 2561 range = editor.getSelection().getRanges()[ 0 ];
2433 range.collapse( 1 ); 2562 range.collapse( 1 );
2434 2563
2435 // Optimizing range containers from text nodes to elements (#12503). 2564 // Optimizing range containers from text nodes to elements (http://dev.ckeditor.com/ticket/12503).
2436 range.optimize(); 2565 range.optimize();
2437 if ( range.startContainer.getHtml() === '' ) { 2566 if ( range.startContainer.getHtml() === '' ) {
2438 range.startContainer.appendBogus(); 2567 range.startContainer.appendBogus();
@@ -2473,7 +2602,7 @@
2473 // 2602 //
2474 // Helpers for editable.getHtmlFromRange. 2603 // Helpers for editable.getHtmlFromRange.
2475 // 2604 //
2476 var getHtmlFromRangeHelpers = { 2605 getHtmlFromRangeHelpers = {
2477 eol: { 2606 eol: {
2478 detect: function( that, editable ) { 2607 detect: function( that, editable ) {
2479 var range = that.range, 2608 var range = that.range,
@@ -2638,7 +2767,7 @@
2638 // 2767 //
2639 // Helpers for editable.extractHtmlFromRange. 2768 // Helpers for editable.extractHtmlFromRange.
2640 // 2769 //
2641 var extractHtmlFromRangeHelpers = ( function() { 2770 extractHtmlFromRangeHelpers = ( function() {
2642 function optimizeBookmarkNode( node, toStart ) { 2771 function optimizeBookmarkNode( node, toStart ) {
2643 var parent = node.getParent(); 2772 var parent = node.getParent();
2644 2773
@@ -2654,7 +2783,7 @@
2654 while ( ( next = endBookmark.getNext() ) ) { 2783 while ( ( next = endBookmark.getNext() ) ) {
2655 next.insertAfter( startBookmark ); 2784 next.insertAfter( startBookmark );
2656 2785
2657 // Update startBookmark after insertion to avoid the reversal of nodes (#13449). 2786 // Update startBookmark after insertion to avoid the reversal of nodes (http://dev.ckeditor.com/ticket/13449).
2658 startBookmark = next; 2787 startBookmark = next;
2659 } 2788 }
2660 2789
@@ -2805,7 +2934,7 @@
2805 2934
2806 walker.guard = function( node, leaving ) { 2935 walker.guard = function( node, leaving ) {
2807 // Guard may be executed on some node boundaries multiple times, 2936 // Guard may be executed on some node boundaries multiple times,
2808 // what results in creating more than one range for each selected cell. (#12964) 2937 // what results in creating more than one range for each selected cell. (http://dev.ckeditor.com/ticket/12964)
2809 if ( node.type == CKEDITOR.NODE_ELEMENT ) { 2938 if ( node.type == CKEDITOR.NODE_ELEMENT ) {
2810 var key = 'visited_' + ( leaving ? 'out' : 'in' ); 2939 var key = 'visited_' + ( leaving ? 'out' : 'in' );
2811 if ( node.getCustomData( key ) ) { 2940 if ( node.getCustomData( key ) ) {
diff --git a/sources/core/editor.js b/sources/core/editor.js
index 31188d2..640cec0 100644
--- a/sources/core/editor.js
+++ b/sources/core/editor.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -29,7 +29,7 @@
29 // Call the CKEDITOR.event constructor to initialize this instance. 29 // Call the CKEDITOR.event constructor to initialize this instance.
30 CKEDITOR.event.call( this ); 30 CKEDITOR.event.call( this );
31 31
32 // Make a clone of the config object, to avoid having it touched by our code. (#9636) 32 // Make a clone of the config object, to avoid having it touched by our code. (http://dev.ckeditor.com/ticket/9636)
33 instanceConfig = instanceConfig && CKEDITOR.tools.clone( instanceConfig ); 33 instanceConfig = instanceConfig && CKEDITOR.tools.clone( instanceConfig );
34 34
35 // if editor is created off one page element. 35 // if editor is created off one page element.
@@ -223,7 +223,7 @@
223 function updateCommandsContext( editor, path, forceRefresh ) { 223 function updateCommandsContext( editor, path, forceRefresh ) {
224 // Commands cannot be refreshed without a path. In edge cases 224 // Commands cannot be refreshed without a path. In edge cases
225 // it may happen that there's no selection when this function is executed. 225 // it may happen that there's no selection when this function is executed.
226 // For example when active filter is changed in #10877. 226 // For example when active filter is changed in http://dev.ckeditor.com/ticket/10877.
227 if ( !path ) 227 if ( !path )
228 return; 228 return;
229 229
@@ -270,7 +270,7 @@
270 } else { 270 } else {
271 // Load the custom configuration file. 271 // Load the custom configuration file.
272 // To resolve customConfig race conflicts, use scriptLoader#queue 272 // To resolve customConfig race conflicts, use scriptLoader#queue
273 // instead of scriptLoader#load (#6504). 273 // instead of scriptLoader#load (http://dev.ckeditor.com/ticket/6504).
274 CKEDITOR.scriptLoader.queue( customConfig, function() { 274 CKEDITOR.scriptLoader.queue( customConfig, function() {
275 // If the CKEDITOR.editorConfig function has been properly 275 // If the CKEDITOR.editorConfig function has been properly
276 // defined in the custom configuration file, cache it. 276 // defined in the custom configuration file, cache it.
@@ -654,24 +654,49 @@
654 return editor.blockless ? CKEDITOR.ENTER_BR : enterMode; 654 return editor.blockless ? CKEDITOR.ENTER_BR : enterMode;
655 } 655 }
656 656
657 // Create DocumentFragment from specified ranges. For now it handles only tables in Firefox 657 // Create DocumentFragment from specified ranges. For now it handles only tables
658 // and returns DocumentFragment from the 1. range for other cases. (#13884) 658 // and returns DocumentFragment from the 1. range for other cases. (http://dev.ckeditor.com/ticket/13884)
659 function createDocumentFragmentFromRanges( ranges, editable ) { 659 function createDocumentFragmentFromRanges( ranges, editable ) {
660 var docFragment = new CKEDITOR.dom.documentFragment(), 660 var docFragment = new CKEDITOR.dom.documentFragment(),
661 tableClone, 661 tableClone,
662 currentRow, 662 currentRow,
663 currentRowClone; 663 currentRowClone;
664 664
665 // We must handle two cases here:
666 // 1. <tr>[<td>Cell</td>]</tr> (IE9+, Edge, Chrome, Firefox)
667 // 2. <td>[Cell]</td> (IE8-, Safari)
668 function isSelectedCell( range ) {
669 var start = range.startContainer,
670 end = range.endContainer;
671
672 if ( start.is && ( start.is( 'tr' ) ||
673 ( start.is( 'td' ) && start.equals( end ) && range.endOffset === start.getChildCount() ) ) ) {
674 return true;
675 }
676
677 return false;
678 }
679
680 function cloneCell( range ) {
681 var start = range.startContainer;
682
683 if ( start.is( 'tr' ) ) {
684 return range.cloneContents();
685 }
686
687 return start.clone( true );
688 }
689
665 for ( var i = 0; i < ranges.length; i++ ) { 690 for ( var i = 0; i < ranges.length; i++ ) {
666 var range = ranges[ i ], 691 var range = ranges[ i ],
667 container = range.startContainer; 692 container = range.startContainer.getAscendant( 'tr', true );
668 693
669 if ( container.getName && container.getName() == 'tr' ) { 694 if ( isSelectedCell( range ) ) {
670 if ( !tableClone ) { 695 if ( !tableClone ) {
671 tableClone = container.getAscendant( 'table' ).clone(); 696 tableClone = container.getAscendant( 'table' ).clone();
672 tableClone.append( container.getAscendant( 'tbody' ).clone() ); 697 tableClone.append( container.getAscendant( { thead: 1, tbody: 1, tfoot: 1 } ).clone() );
673 docFragment.append( tableClone ); 698 docFragment.append( tableClone );
674 tableClone = tableClone.findOne( 'tbody' ); 699 tableClone = tableClone.findOne( 'thead, tbody, tfoot' );
675 } 700 }
676 701
677 if ( !( currentRow && currentRow.equals( container ) ) ) { 702 if ( !( currentRow && currentRow.equals( container ) ) ) {
@@ -680,7 +705,7 @@
680 tableClone.append( currentRowClone ); 705 tableClone.append( currentRowClone );
681 } 706 }
682 707
683 currentRowClone.append( range.cloneContents() ); 708 currentRowClone.append( cloneCell( range ) );
684 } else { 709 } else {
685 // If there was something else copied with table, 710 // If there was something else copied with table,
686 // append it to DocumentFragment. 711 // append it to DocumentFragment.
@@ -717,7 +742,7 @@
717 // This guarantees that commands added before first editor#mode 742 // This guarantees that commands added before first editor#mode
718 // aren't immediately updated, but waits for editor#mode and that 743 // aren't immediately updated, but waits for editor#mode and that
719 // commands added later are immediately refreshed, even when added 744 // commands added later are immediately refreshed, even when added
720 // before instanceReady. #10103, #10249 745 // before instanceReady. http://dev.ckeditor.com/ticket/10103, http://dev.ckeditor.com/ticket/10249
721 if ( this.mode ) 746 if ( this.mode )
722 updateCommand( this, cmd ); 747 updateCommand( this, cmd );
723 748
@@ -761,7 +786,7 @@
761 } ); 786 } );
762 } 787 }
763 788
764 // Remove 'submit' events registered on form element before destroying.(#3988) 789 // Remove 'submit' events registered on form element before destroying.(http://dev.ckeditor.com/ticket/3988)
765 editor.on( 'destroy', function() { 790 editor.on( 'destroy', function() {
766 form.removeListener( 'submit', onSubmit ); 791 form.removeListener( 'submit', onSubmit );
767 } ); 792 } );
@@ -771,7 +796,7 @@
771 function onSubmit( evt ) { 796 function onSubmit( evt ) {
772 editor.updateElement(); 797 editor.updateElement();
773 798
774 // #8031 If textarea had required attribute and editor is empty fire 'required' event and if 799 // http://dev.ckeditor.com/ticket/8031 If textarea had required attribute and editor is empty fire 'required' event and if
775 // it was cancelled, prevent submitting the form. 800 // it was cancelled, prevent submitting the form.
776 if ( editor._.required && !element.getValue() && editor.fire( 'required' ) === false ) { 801 if ( editor._.required && !element.getValue() && editor.fire( 'required' ) === false ) {
777 // When user press save button event (evt) is undefined (see save plugin). 802 // When user press save button event (evt) is undefined (see save plugin).
@@ -860,10 +885,10 @@
860 * 885 *
861 * editorInstance.execCommand( 'bold' ); 886 * editorInstance.execCommand( 'bold' );
862 * 887 *
863 * @param {String} commandName The indentifier name of the command. 888 * @param {String} commandName The identifier name of the command.
864 * @param {Object} [data] The data to be passed to the command. 889 * @param {Object} [data] The data to be passed to the command. It defaults to
865 * @returns {Boolean} `true` if the command was executed 890 * an empty object starting from 4.7.0.
866 * successfully, otherwise `false`. 891 * @returns {Boolean} `true` if the command was executed successfully, `false` otherwise.
867 * @see CKEDITOR.editor#addCommand 892 * @see CKEDITOR.editor#addCommand
868 */ 893 */
869 execCommand: function( commandName, data ) { 894 execCommand: function( commandName, data ) {
@@ -871,7 +896,7 @@
871 896
872 var eventData = { 897 var eventData = {
873 name: commandName, 898 name: commandName,
874 commandData: data, 899 commandData: data || {},
875 command: command 900 command: command
876 }; 901 };
877 902
@@ -967,7 +992,7 @@
967 } 992 }
968 else { 993 else {
969 // If we don't have a proper element, set data to an empty string, 994 // If we don't have a proper element, set data to an empty string,
970 // as this method is expected to return a string. (#13385) 995 // as this method is expected to return a string. (http://dev.ckeditor.com/ticket/13385)
971 data = ''; 996 data = '';
972 } 997 }
973 } 998 }
@@ -1069,7 +1094,7 @@
1069 this.readOnly = isReadOnly; 1094 this.readOnly = isReadOnly;
1070 1095
1071 // Block or release BACKSPACE key according to current read-only 1096 // Block or release BACKSPACE key according to current read-only
1072 // state to prevent browser's history navigation (#9761). 1097 // state to prevent browser's history navigation (http://dev.ckeditor.com/ticket/9761).
1073 this.keystrokeHandler.blockedKeystrokes[ 8 ] = +isReadOnly; 1098 this.keystrokeHandler.blockedKeystrokes[ 8 ] = +isReadOnly;
1074 1099
1075 this.editable().setReadOnly( isReadOnly ); 1100 this.editable().setReadOnly( isReadOnly );
@@ -1198,17 +1223,20 @@
1198 */ 1223 */
1199 extractSelectedHtml: function( toString, removeEmptyBlock ) { 1224 extractSelectedHtml: function( toString, removeEmptyBlock ) {
1200 var editable = this.editable(), 1225 var editable = this.editable(),
1201 ranges = this.getSelection().getRanges(); 1226 ranges = this.getSelection().getRanges(),
1227 docFragment = new CKEDITOR.dom.documentFragment(),
1228 i;
1202 1229
1203 if ( !editable || ranges.length === 0 ) { 1230 if ( !editable || ranges.length === 0 ) {
1204 return null; 1231 return null;
1205 } 1232 }
1206 1233
1207 var range = ranges[ 0 ], 1234 for ( i = 0; i < ranges.length; i++ ) {
1208 docFragment = editable.extractHtmlFromRange( range, removeEmptyBlock ); 1235 docFragment.append( editable.extractHtmlFromRange( ranges[ i ], removeEmptyBlock ) );
1236 }
1209 1237
1210 if ( !removeEmptyBlock ) { 1238 if ( !removeEmptyBlock ) {
1211 this.getSelection().selectRanges( [ range ] ); 1239 this.getSelection().selectRanges( [ ranges[ 0 ] ] );
1212 } 1240 }
1213 1241
1214 return toString ? docFragment.getHtml() : docFragment; 1242 return toString ? docFragment.getHtml() : docFragment;
@@ -1324,6 +1352,38 @@
1324 }, 1352 },
1325 1353
1326 /** 1354 /**
1355 * Returns the keystroke that is assigned to a specified {@link CKEDITOR.command}. If no keystroke is assigned,
1356 * it returns `null`.
1357 *
1358 * Since version 4.7.0 this function also accepts a `command` parameter as a string.
1359 *
1360 * @since 4.6.0
1361 * @param {CKEDITOR.command/String} command The {@link CKEDITOR.command} instance or a string with the command name.
1362 * @returns {Number/null} The keystroke assigned to the provided command or `null` if there is no keystroke.
1363 */
1364 getCommandKeystroke: function( command ) {
1365 var commandInstance = ( typeof command === 'string' ? this.getCommand( command ) : command );
1366
1367 if ( commandInstance ) {
1368 var commandName = CKEDITOR.tools.object.findKey( this.commands, commandInstance ),
1369 keystrokes = this.keystrokeHandler.keystrokes,
1370 key;
1371
1372 // Some commands have a fake keystroke - for example CUT/COPY/PASTE commands are handled natively.
1373 if ( commandInstance.fakeKeystroke ) {
1374 return commandInstance.fakeKeystroke;
1375 }
1376
1377 for ( key in keystrokes ) {
1378 if ( keystrokes.hasOwnProperty( key ) && keystrokes[ key ] == commandName ) {
1379 return key;
1380 }
1381 }
1382 }
1383 return null;
1384 },
1385
1386 /**
1327 * Shorthand for {@link CKEDITOR.filter#addFeature}. 1387 * Shorthand for {@link CKEDITOR.filter#addFeature}.
1328 * 1388 *
1329 * @since 4.1 1389 * @since 4.1
@@ -1512,7 +1572,7 @@ CKEDITOR.ELEMENT_MODE_INLINE = 3;
1512 * @member CKEDITOR.config 1572 * @member CKEDITOR.config
1513 */ 1573 */
1514 1574
1515 /** 1575/**
1516 * Customizes the {@link CKEDITOR.editor#title human-readable title} of this editor. This title is displayed in 1576 * Customizes the {@link CKEDITOR.editor#title human-readable title} of this editor. This title is displayed in
1517 * tooltips and impacts various [accessibility aspects](#!/guide/dev_a11y-section-announcing-the-editor-on-the-page), 1577 * tooltips and impacts various [accessibility aspects](#!/guide/dev_a11y-section-announcing-the-editor-on-the-page),
1518 * e.g. it is commonly used by screen readers for distinguishing editor instances and for navigation. 1578 * e.g. it is commonly used by screen readers for distinguishing editor instances and for navigation.
@@ -1811,6 +1871,14 @@ CKEDITOR.ELEMENT_MODE_INLINE = 3;
1811 */ 1871 */
1812 1872
1813/** 1873/**
1874 * Event fired when the {@link #method-destroy} method is called,
1875 * but before destroying the editor.
1876 *
1877 * @event beforeDestroy
1878 * @param {CKEDITOR.editor} editor This editor instance.
1879 */
1880
1881/**
1814 * Internal event to get the current data. 1882 * Internal event to get the current data.
1815 * 1883 *
1816 * @event beforeGetData 1884 * @event beforeGetData
diff --git a/sources/core/editor_basic.js b/sources/core/editor_basic.js
index 14f3446..b7ab577 100644
--- a/sources/core/editor_basic.js
+++ b/sources/core/editor_basic.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/core/env.js b/sources/core/env.js
index 4410ce9..cbf089c 100644
--- a/sources/core/env.js
+++ b/sources/core/env.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -136,7 +136,7 @@ if ( !CKEDITOR.env ) {
136 var domain = document.domain, 136 var domain = document.domain,
137 hostname = window.location.hostname; 137 hostname = window.location.hostname;
138 138
139 return domain != hostname && domain != ( '[' + hostname + ']' ); // IPv6 IP support (#5434) 139 return domain != hostname && domain != ( '[' + hostname + ']' ); // IPv6 IP support (http://dev.ckeditor.com/ticket/5434)
140 }, 140 },
141 141
142 /** 142 /**
diff --git a/sources/core/event.js b/sources/core/event.js
index 0dd1f41..89444b5 100644
--- a/sources/core/event.js
+++ b/sources/core/event.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/core/eventInfo.js b/sources/core/eventInfo.js
index e1cd65a..ea62ac9 100644
--- a/sources/core/eventInfo.js
+++ b/sources/core/eventInfo.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/core/filter.js b/sources/core/filter.js
index e9d5a37..3e64fc5 100644
--- a/sources/core/filter.js
+++ b/sources/core/filter.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -158,7 +158,8 @@
158 }, 158 },
159 // Object: element name => array of transformations groups. 159 // Object: element name => array of transformations groups.
160 transformations: {}, 160 transformations: {},
161 cachedTests: {} 161 cachedTests: {},
162 cachedChecks: {}
162 }; 163 };
163 164
164 // Register filter instance. 165 // Register filter instance.
@@ -299,7 +300,7 @@
299 if ( el.attributes[ 'data-cke-filter' ] == 'off' ) 300 if ( el.attributes[ 'data-cke-filter' ] == 'off' )
300 return false; 301 return false;
301 302
302 // (#10260) Don't touch elements like spans with data-cke-* attribute since they're 303 // (http://dev.ckeditor.com/ticket/10260) Don't touch elements like spans with data-cke-* attribute since they're
303 // responsible e.g. for placing markers, bookmarks, odds and stuff. 304 // responsible e.g. for placing markers, bookmarks, odds and stuff.
304 // We love 'em and we don't wanna lose anything during the filtering. 305 // We love 'em and we don't wanna lose anything during the filtering.
305 // '|' is to avoid tricky joints like data-="foo" + cke-="bar". Yes, they're possible. 306 // '|' is to avoid tricky joints like data-="foo" + cke-="bar". Yes, they're possible.
@@ -346,7 +347,7 @@
346 if ( !element.parent ) 347 if ( !element.parent )
347 continue; 348 continue;
348 349
349 // Handle custom elements as inline elements (#12683). 350 // Handle custom elements as inline elements (http://dev.ckeditor.com/ticket/12683).
350 parentDtd = DTD[ element.parent.name ] || DTD.span; 351 parentDtd = DTD[ element.parent.name ] || DTD.span;
351 352
352 switch ( check.check ) { 353 switch ( check.check ) {
@@ -806,6 +807,32 @@
806 } )(), 807 } )(),
807 808
808 /** 809 /**
810 * Returns a clone of this filter instance.
811 *
812 * @since 4.7.3
813 * @returns {CKEDITOR.filter}
814 */
815 clone: function() {
816 var ret = new CKEDITOR.filter(),
817 clone = CKEDITOR.tools.clone;
818
819 // Cloning allowed content related things.
820 ret.allowedContent = clone( this.allowedContent );
821 ret._.allowedRules = clone( this._.allowedRules );
822
823 // Disallowed content rules.
824 ret.disallowedContent = clone( this.disallowedContent );
825 ret._.disallowedRules = clone( this._.disallowedRules );
826
827 ret._.transformations = clone( this._.transformations );
828
829 ret.disabled = this.disabled;
830 ret.editor = this.editor;
831
832 return ret;
833 },
834
835 /**
809 * Destroys the filter instance and removes it from the global {@link CKEDITOR.filter#instances} object. 836 * Destroys the filter instance and removes it from the global {@link CKEDITOR.filter#instances} object.
810 * 837 *
811 * @since 4.4.5 838 * @since 4.4.5
@@ -1248,22 +1275,20 @@
1248 styles = styleDef.styles, 1275 styles = styleDef.styles,
1249 attrs = styleDef.attributes || {}; 1276 attrs = styleDef.attributes || {};
1250 1277
1251 if ( styles ) { 1278 if ( styles && !CKEDITOR.tools.isEmpty( styles ) ) {
1252 styles = copy( styles ); 1279 styles = copy( styles );
1253 attrs.style = CKEDITOR.tools.writeCssText( styles, true ); 1280 attrs.style = CKEDITOR.tools.writeCssText( styles, true );
1254 } else { 1281 } else {
1255 styles = {}; 1282 styles = {};
1256 } 1283 }
1257 1284
1258 var el = { 1285 return {
1259 name: styleDef.element, 1286 name: styleDef.element,
1260 attributes: attrs, 1287 attributes: attrs,
1261 classes: attrs[ 'class' ] ? attrs[ 'class' ].split( /\s+/ ) : [], 1288 classes: attrs[ 'class' ] ? attrs[ 'class' ].split( /\s+/ ) : [],
1262 styles: styles, 1289 styles: styles,
1263 children: [] 1290 children: []
1264 }; 1291 };
1265
1266 return el;
1267 } 1292 }
1268 1293
1269 // Mock hash based on string. 1294 // Mock hash based on string.
@@ -1873,6 +1898,7 @@
1873 // 1898 //
1874 // TRANSFORMATIONS -------------------------------------------------------- 1899 // TRANSFORMATIONS --------------------------------------------------------
1875 // 1900 //
1901 var transformationsTools;
1876 1902
1877 // Apply given transformations group to the element. 1903 // Apply given transformations group to the element.
1878 function applyTransformationsGroup( filter, element, group ) { 1904 function applyTransformationsGroup( filter, element, group ) {
@@ -2021,7 +2047,7 @@
2021 * @class CKEDITOR.filter.transformationsTools 2047 * @class CKEDITOR.filter.transformationsTools
2022 * @singleton 2048 * @singleton
2023 */ 2049 */
2024 var transformationsTools = CKEDITOR.filter.transformationsTools = { 2050 transformationsTools = CKEDITOR.filter.transformationsTools = {
2025 /** 2051 /**
2026 * Converts `width` and `height` attributes to styles. 2052 * Converts `width` and `height` attributes to styles.
2027 * 2053 *
@@ -2070,8 +2096,8 @@
2070 * Converts length in the `styleName` style to a valid length attribute (like `width` or `height`). 2096 * Converts length in the `styleName` style to a valid length attribute (like `width` or `height`).
2071 * 2097 *
2072 * @param {CKEDITOR.htmlParser.element} element 2098 * @param {CKEDITOR.htmlParser.element} element
2073 * @param {String} styleName Name of the style that will be converted. 2099 * @param {String} styleName The name of the style that will be converted.
2074 * @param {String} [attrName=styleName] Name of the attribute into which the style will be converted. 2100 * @param {String} [attrName=styleName] The name of the attribute into which the style will be converted.
2075 */ 2101 */
2076 lengthToAttribute: function( element, styleName, attrName ) { 2102 lengthToAttribute: function( element, styleName, attrName ) {
2077 attrName = attrName || styleName; 2103 attrName = attrName || styleName;
@@ -2091,7 +2117,7 @@
2091 }, 2117 },
2092 2118
2093 /** 2119 /**
2094 * Converts the `align` attribute to the `float` style if not set. Attribute 2120 * Converts the `align` attribute to the `float` style if not set. The attribute
2095 * is always removed. 2121 * is always removed.
2096 * 2122 *
2097 * @param {CKEDITOR.htmlParser.element} element 2123 * @param {CKEDITOR.htmlParser.element} element
@@ -2109,7 +2135,7 @@
2109 2135
2110 /** 2136 /**
2111 * Converts the `float` style to the `align` attribute if not set. 2137 * Converts the `float` style to the `align` attribute if not set.
2112 * Style is always removed. 2138 * The style is always removed.
2113 * 2139 *
2114 * @param {CKEDITOR.htmlParser.element} element 2140 * @param {CKEDITOR.htmlParser.element} element
2115 */ 2141 */
@@ -2125,6 +2151,107 @@
2125 }, 2151 },
2126 2152
2127 /** 2153 /**
2154 * Converts the shorthand form of the `border` style to seperate styles.
2155 *
2156 * @param {CKEDITOR.htmlParser.element} element
2157 */
2158 splitBorderShorthand: function( element ) {
2159 if ( !element.styles.border ) {
2160 return;
2161 }
2162
2163 var widths = element.styles.border.match( /([\.\d]+\w+)/g ) || [ '0px' ];
2164 switch ( widths.length ) {
2165 case 1:
2166 element.styles[ 'border-width' ] = widths[0];
2167 break;
2168 case 2:
2169 mapStyles( [ 0, 1, 0, 1 ] );
2170 break;
2171 case 3:
2172 mapStyles( [ 0, 1, 2, 1 ] );
2173 break;
2174 case 4:
2175 mapStyles( [ 0, 1, 2, 3 ] );
2176 break;
2177 }
2178
2179 element.styles[ 'border-style' ] = element.styles[ 'border-style' ] ||
2180 ( element.styles.border.match( /(none|hidden|dotted|dashed|solid|double|groove|ridge|inset|outset|initial|inherit)/ ) || [] )[ 0 ];
2181 if ( !element.styles[ 'border-style' ] )
2182 delete element.styles[ 'border-style' ];
2183
2184 delete element.styles.border;
2185
2186 function mapStyles( map ) {
2187 element.styles['border-top-width'] = widths[ map[0] ];
2188 element.styles['border-right-width'] = widths[ map[1] ];
2189 element.styles['border-bottom-width'] = widths[ map[2] ];
2190 element.styles['border-left-width'] = widths[ map[3] ];
2191 }
2192 },
2193
2194 listTypeToStyle: function( element ) {
2195 if ( element.attributes.type ) {
2196 switch ( element.attributes.type ) {
2197 case 'a':
2198 element.styles[ 'list-style-type' ] = 'lower-alpha';
2199 break;
2200 case 'A':
2201 element.styles[ 'list-style-type' ] = 'upper-alpha';
2202 break;
2203 case 'i':
2204 element.styles[ 'list-style-type' ] = 'lower-roman';
2205 break;
2206 case 'I':
2207 element.styles[ 'list-style-type' ] = 'upper-roman';
2208 break;
2209 case '1':
2210 element.styles[ 'list-style-type' ] = 'decimal';
2211 break;
2212 default:
2213 element.styles[ 'list-style-type' ] = element.attributes.type;
2214 }
2215 }
2216 },
2217
2218 /**
2219 * Converts the shorthand form of the `margin` style to seperate styles.
2220 *
2221 * @param {CKEDITOR.htmlParser.element} element
2222 */
2223 splitMarginShorthand: function( element ) {
2224 if ( !element.styles.margin ) {
2225 return;
2226 }
2227
2228 var widths = element.styles.margin.match( /(\-?[\.\d]+\w+)/g ) || [ '0px' ];
2229 switch ( widths.length ) {
2230 case 1:
2231 mapStyles( [ 0, 0, 0, 0 ] );
2232 break;
2233 case 2:
2234 mapStyles( [ 0, 1, 0, 1 ] );
2235 break;
2236 case 3:
2237 mapStyles( [ 0, 1, 2, 1 ] );
2238 break;
2239 case 4:
2240 mapStyles( [ 0, 1, 2, 3 ] );
2241 break;
2242 }
2243
2244 delete element.styles.margin;
2245
2246 function mapStyles( map ) {
2247 element.styles['margin-top'] = widths[ map[0] ];
2248 element.styles['margin-right'] = widths[ map[1] ];
2249 element.styles['margin-bottom'] = widths[ map[2] ];
2250 element.styles['margin-left'] = widths[ map[3] ];
2251 }
2252 },
2253
2254 /**
2128 * Checks whether an element matches a given {@link CKEDITOR.style}. 2255 * Checks whether an element matches a given {@link CKEDITOR.style}.
2129 * The element can be a "superset" of a style, e.g. it may have 2256 * The element can be a "superset" of a style, e.g. it may have
2130 * more classes, but needs to have at least those defined in the style. 2257 * more classes, but needs to have at least those defined in the style.
@@ -2135,12 +2262,12 @@
2135 matchesStyle: elementMatchesStyle, 2262 matchesStyle: elementMatchesStyle,
2136 2263
2137 /** 2264 /**
2138 * Transforms element to given form. 2265 * Transforms an element to a given form.
2139 * 2266 *
2140 * Form may be a: 2267 * Form may be a:
2141 * 2268 *
2142 * * {@link CKEDITOR.style}, 2269 * * {@link CKEDITOR.style},
2143 * * string &ndash; the new name of an element. 2270 * * string &ndash; the new name of the element.
2144 * 2271 *
2145 * @param {CKEDITOR.htmlParser.element} el 2272 * @param {CKEDITOR.htmlParser.element} el
2146 * @param {CKEDITOR.style/String} form 2273 * @param {CKEDITOR.style/String} form
@@ -2191,7 +2318,7 @@
2191 * * {@link CKEDITOR.filter.allowedContentRules} &ndash; defined rules will be added 2318 * * {@link CKEDITOR.filter.allowedContentRules} &ndash; defined rules will be added
2192 * to the {@link CKEDITOR.editor#filter}. 2319 * to the {@link CKEDITOR.editor#filter}.
2193 * * `true` &ndash; will disable the filter (data will not be filtered, 2320 * * `true` &ndash; will disable the filter (data will not be filtered,
2194 * all features will be activated). 2321 * all features will be activated). Reading [security best practices](#!/guide/dev_best_practices) before setting `true` is recommended.
2195 * * default &ndash; the filter will be configured by loaded features 2322 * * default &ndash; the filter will be configured by loaded features
2196 * (toolbar items, commands, etc.). 2323 * (toolbar items, commands, etc.).
2197 * 2324 *
diff --git a/sources/core/focusmanager.js b/sources/core/focusmanager.js
index ee1bc39..45c3137 100644
--- a/sources/core/focusmanager.js
+++ b/sources/core/focusmanager.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -147,8 +147,9 @@
147 * @member CKEDITOR.focusManager 147 * @member CKEDITOR.focusManager
148 */ 148 */
149 blur: function( noDelay ) { 149 blur: function( noDelay ) {
150 if ( this._.locked ) 150 if ( this._.locked ) {
151 return; 151 return;
152 }
152 153
153 function doBlur() { 154 function doBlur() {
154 if ( this.hasFocus ) { 155 if ( this.hasFocus ) {
@@ -160,13 +161,14 @@
160 } 161 }
161 } 162 }
162 163
163 if ( this._.timer ) 164 if ( this._.timer ) {
164 clearTimeout( this._.timer ); 165 clearTimeout( this._.timer );
166 }
165 167
166 var delay = CKEDITOR.focusManager._.blurDelay; 168 var delay = CKEDITOR.focusManager._.blurDelay;
167 if ( noDelay || !delay ) 169 if ( noDelay || !delay ) {
168 doBlur.call( this ); 170 doBlur.call( this );
169 else { 171 } else {
170 this._.timer = CKEDITOR.tools.setTimeout( function() { 172 this._.timer = CKEDITOR.tools.setTimeout( function() {
171 delete this._.timer; 173 delete this._.timer;
172 doBlur.call( this ); 174 doBlur.call( this );
diff --git a/sources/core/htmldataprocessor.js b/sources/core/htmldataprocessor.js
index d079e4d..79e996b 100644
--- a/sources/core/htmldataprocessor.js
+++ b/sources/core/htmldataprocessor.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -56,7 +56,7 @@
56 // it up and apply the filter. 56 // it up and apply the filter.
57 data = protectSource( data, editor ); 57 data = protectSource( data, editor );
58 58
59 // Protect content of textareas. (#9995) 59 // Protect content of textareas. (http://dev.ckeditor.com/ticket/9995)
60 // Do this before protecting attributes to avoid breaking: 60 // Do this before protecting attributes to avoid breaking:
61 // <textarea><img src="..." /></textarea> 61 // <textarea><img src="..." /></textarea>
62 data = protectElements( data, protectTextareaRegex ); 62 data = protectElements( data, protectTextareaRegex );
@@ -67,23 +67,23 @@
67 data = protectAttributes( data ); 67 data = protectAttributes( data );
68 68
69 // Protect elements than can't be set inside a DIV. E.g. IE removes 69 // Protect elements than can't be set inside a DIV. E.g. IE removes
70 // style tags from innerHTML. (#3710) 70 // style tags from innerHTML. (http://dev.ckeditor.com/ticket/3710)
71 data = protectElements( data, protectElementsRegex ); 71 data = protectElements( data, protectElementsRegex );
72 72
73 // Certain elements has problem to go through DOM operation, protect 73 // Certain elements has problem to go through DOM operation, protect
74 // them by prefixing 'cke' namespace. (#3591) 74 // them by prefixing 'cke' namespace. (http://dev.ckeditor.com/ticket/3591)
75 data = protectElementsNames( data ); 75 data = protectElementsNames( data );
76 76
77 // All none-IE browsers ignore self-closed custom elements, 77 // All none-IE browsers ignore self-closed custom elements,
78 // protecting them into open-close. (#3591) 78 // protecting them into open-close. (http://dev.ckeditor.com/ticket/3591)
79 data = protectSelfClosingElements( data ); 79 data = protectSelfClosingElements( data );
80 80
81 // Compensate one leading line break after <pre> open as browsers 81 // Compensate one leading line break after <pre> open as browsers
82 // eat it up. (#5789) 82 // eat it up. (http://dev.ckeditor.com/ticket/5789)
83 data = protectPreFormatted( data ); 83 data = protectPreFormatted( data );
84 84
85 // There are attributes which may execute JavaScript code inside fixBin. 85 // There are attributes which may execute JavaScript code inside fixBin.
86 // Encode them greedily. They will be unprotected right after getting HTML from fixBin. (#10) 86 // Encode them greedily. They will be unprotected right after getting HTML from fixBin. (http://dev.ckeditor.com/ticket/10)
87 data = protectInsecureAttributes( data ); 87 data = protectInsecureAttributes( data );
88 88
89 var fixBin = evtData.context || editor.editable().getName(), 89 var fixBin = evtData.context || editor.editable().getName(),
@@ -99,7 +99,7 @@
99 // Call the browser to help us fixing a possibly invalid HTML 99 // Call the browser to help us fixing a possibly invalid HTML
100 // structure. 100 // structure.
101 var el = editor.document.createElement( fixBin ); 101 var el = editor.document.createElement( fixBin );
102 // Add fake character to workaround IE comments bug. (#3801) 102 // Add fake character to workaround IE comments bug. (http://dev.ckeditor.com/ticket/3801)
103 el.setHtml( 'a' + data ); 103 el.setHtml( 'a' + data );
104 data = el.getHtml().substr( 1 ); 104 data = el.getHtml().substr( 1 );
105 105
@@ -128,7 +128,7 @@
128 data = CKEDITOR.htmlParser.fragment.fromHtml( data, evtData.context, fixBodyTag ); 128 data = CKEDITOR.htmlParser.fragment.fromHtml( data, evtData.context, fixBodyTag );
129 129
130 // The empty root element needs to be fixed by adding 'p' or 'div' into it. 130 // The empty root element needs to be fixed by adding 'p' or 'div' into it.
131 // This avoids the need to create that element on the first focus (#12630). 131 // This avoids the need to create that element on the first focus (http://dev.ckeditor.com/ticket/12630).
132 if ( fixBodyTag ) { 132 if ( fixBodyTag ) {
133 fixEmptyRoot( data, fixBodyTag ); 133 fixEmptyRoot( data, fixBodyTag );
134 } 134 }
@@ -163,7 +163,7 @@
163 editor.on( 'toDataFormat', function( evt ) { 163 editor.on( 'toDataFormat', function( evt ) {
164 var data = evt.data.dataValue; 164 var data = evt.data.dataValue;
165 165
166 // #10854 - we need to strip leading blockless <br> which FF adds 166 // http://dev.ckeditor.com/ticket/10854 - we need to strip leading blockless <br> which FF adds
167 // automatically when editable contains only non-editable content. 167 // automatically when editable contains only non-editable content.
168 // We do that for every browser (so it's a constant behavior) and 168 // We do that for every browser (so it's a constant behavior) and
169 // not in BR mode, in which chance of valid leading blockless <br> is higher. 169 // not in BR mode, in which chance of valid leading blockless <br> is higher.
@@ -192,7 +192,7 @@
192 data.writeChildrenHtml( writer ); 192 data.writeChildrenHtml( writer );
193 data = writer.getHtml( true ); 193 data = writer.getHtml( true );
194 194
195 // Restore those non-HTML protected source. (#4475,#4880) 195 // Restore those non-HTML protected source. (http://dev.ckeditor.com/ticket/4475,http://dev.ckeditor.com/ticket/4880)
196 data = unprotectRealComments( data ); 196 data = unprotectRealComments( data );
197 data = unprotectSource( data, editor ); 197 data = unprotectSource( data, editor );
198 198
@@ -448,7 +448,7 @@
448 return false; 448 return false;
449 449
450 // 1. For IE version >=8, empty blocks are displayed correctly themself in wysiwiyg; 450 // 1. For IE version >=8, empty blocks are displayed correctly themself in wysiwiyg;
451 // 2. For the rest, at least table cell and list item need no filler space. (#6248) 451 // 2. For the rest, at least table cell and list item need no filler space. (http://dev.ckeditor.com/ticket/6248)
452 if ( !isOutput && !CKEDITOR.env.needsBrFiller && 452 if ( !isOutput && !CKEDITOR.env.needsBrFiller &&
453 ( document.documentMode > 7 || 453 ( document.documentMode > 7 ||
454 block.name in CKEDITOR.dtd.tr || 454 block.name in CKEDITOR.dtd.tr ||
@@ -484,7 +484,7 @@
484 } 484 }
485 485
486 // Regex to scan for &nbsp; at the end of blocks, which are actually placeholders. 486 // Regex to scan for &nbsp; at the end of blocks, which are actually placeholders.
487 // Safari transforms the &nbsp; to \xa0. (#4172) 487 // Safari transforms the &nbsp; to \xa0. (http://dev.ckeditor.com/ticket/4172)
488 var tailNbspRegex = /(?:&nbsp;|\xa0)$/; 488 var tailNbspRegex = /(?:&nbsp;|\xa0)$/;
489 489
490 var protectedSourceMarker = '{cke_protected}'; 490 var protectedSourceMarker = '{cke_protected}';
@@ -563,18 +563,35 @@
563 // active in the editing area (IE|WebKit). 563 // active in the editing area (IE|WebKit).
564 [ ( /^on/ ), 'data-cke-pa-on' ], 564 [ ( /^on/ ), 'data-cke-pa-on' ],
565 565
566 // Prevent iframe's srcdoc attribute from being evaluated in the editable.
567 [ ( /^srcdoc/ ), 'data-cke-pa-srcdoc' ],
568
566 // Don't let some old expando enter editor. Concerns only IE8, 569 // Don't let some old expando enter editor. Concerns only IE8,
567 // but for consistency remove on all browsers. 570 // but for consistency remove on all browsers.
568 [ ( /^data-cke-expando$/ ), '' ] 571 [ ( /^data-cke-expando$/ ), '' ]
569 ] 572 ],
573
574 elements: {
575 // Prevent iframe's src attribute with javascript code or data protocol from being evaluated in the editable.
576 iframe: function( element ) {
577 if ( element.attributes && element.attributes.src ) {
578
579 var src = element.attributes.src.toLowerCase().replace( /[^a-z]/gi, '' );
580 if ( src.indexOf( 'javascript' ) === 0 || src.indexOf( 'data' ) === 0 ) {
581 element.attributes[ 'data-cke-pa-src' ] = element.attributes.src;
582 delete element.attributes.src;
583 }
584 }
585 }
586 }
570 }; 587 };
571 588
572 // Disable form elements editing mode provided by some browsers. (#5746) 589 // Disable form elements editing mode provided by some browsers. (http://dev.ckeditor.com/ticket/5746)
573 function protectReadOnly( element ) { 590 function protectReadOnly( element ) {
574 var attrs = element.attributes; 591 var attrs = element.attributes;
575 592
576 // We should flag that the element was locked by our code so 593 // We should flag that the element was locked by our code so
577 // it'll be editable by the editor functions (#6046). 594 // it'll be editable by the editor functions (http://dev.ckeditor.com/ticket/6046).
578 if ( attrs.contenteditable != 'false' ) 595 if ( attrs.contenteditable != 'false' )
579 attrs[ 'data-cke-editable' ] = attrs.contenteditable ? 'true' : 1; 596 attrs[ 'data-cke-editable' ] = attrs.contenteditable ? 'true' : 1;
580 597
@@ -602,7 +619,7 @@
602 } 619 }
603 }, 620 },
604 621
605 // Remove empty link but not empty anchor. (#3829, #13516) 622 // Remove empty link but not empty anchor. (http://dev.ckeditor.com/ticket/3829, http://dev.ckeditor.com/ticket/13516)
606 a: function( element ) { 623 a: function( element ) {
607 var attrs = element.attributes; 624 var attrs = element.attributes;
608 625
@@ -641,7 +658,7 @@
641 if ( attribs[ 'data-cke-temp' ] ) 658 if ( attribs[ 'data-cke-temp' ] )
642 return false; 659 return false;
643 660
644 // Remove duplicated attributes - #3789. 661 // Remove duplicated attributes - http://dev.ckeditor.com/ticket/3789.
645 var attributeNames = [ 'name', 'href', 'src' ], 662 var attributeNames = [ 'name', 'href', 'src' ],
646 savedAttributeName; 663 savedAttributeName;
647 for ( var i = 0; i < attributeNames.length; i++ ) { 664 for ( var i = 0; i < attributeNames.length; i++ ) {
@@ -653,7 +670,7 @@
653 return element; 670 return element;
654 }, 671 },
655 672
656 // The contents of table should be in correct order (#4809). 673 // The contents of table should be in correct order (http://dev.ckeditor.com/ticket/4809).
657 table: function( element ) { 674 table: function( element ) {
658 // Clone the array as it would become empty during the sort call. 675 // Clone the array as it would become empty during the sort call.
659 var children = element.children.slice( 0 ); 676 var children = element.children.slice( 0 );
@@ -712,7 +729,7 @@
712 title: function( element ) { 729 title: function( element ) {
713 var titleText = element.children[ 0 ]; 730 var titleText = element.children[ 0 ];
714 731
715 // Append text-node to title tag if not present (i.e. non-IEs) (#9882). 732 // Append text-node to title tag if not present (i.e. non-IEs) (http://dev.ckeditor.com/ticket/9882).
716 !titleText && append( element, titleText = new CKEDITOR.htmlParser.text() ); 733 !titleText && append( element, titleText = new CKEDITOR.htmlParser.text() );
717 734
718 // Transfer data-saved title to title tag. 735 // Transfer data-saved title to title tag.
@@ -733,7 +750,7 @@
733 750
734 if ( CKEDITOR.env.ie ) { 751 if ( CKEDITOR.env.ie ) {
735 // IE outputs style attribute in capital letters. We should convert 752 // IE outputs style attribute in capital letters. We should convert
736 // them back to lower case, while not hurting the values (#5930) 753 // them back to lower case, while not hurting the values (http://dev.ckeditor.com/ticket/5930)
737 defaultHtmlFilterRulesForAll.attributes.style = function( value ) { 754 defaultHtmlFilterRulesForAll.attributes.style = function( value ) {
738 return value.replace( /(^|;)([^\:]+)/g, function( match ) { 755 return value.replace( /(^|;)([^\:]+)/g, function( match ) {
739 return match.toLowerCase(); 756 return match.toLowerCase();
@@ -741,7 +758,7 @@
741 }; 758 };
742 } 759 }
743 760
744 // Disable form elements editing mode provided by some browsers. (#5746) 761 // Disable form elements editing mode provided by some browsers. (http://dev.ckeditor.com/ticket/5746)
745 function unprotectReadyOnly( element ) { 762 function unprotectReadyOnly( element ) {
746 var attrs = element.attributes; 763 var attrs = element.attributes;
747 switch ( attrs[ 'data-cke-editable' ] ) { 764 switch ( attrs[ 'data-cke-editable' ] ) {
@@ -773,7 +790,7 @@
773 // 790 //
774 // 'data-x' => '&lt;a href=&quot;X&quot;' 791 // 'data-x' => '&lt;a href=&quot;X&quot;'
775 // 792 //
776 // which, can be easily filtered out (#11508). 793 // which, can be easily filtered out (http://dev.ckeditor.com/ticket/11508).
777 protectAttributeRegex = /([\w-:]+)\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|(?:[^ "'>]+))/gi, 794 protectAttributeRegex = /([\w-:]+)\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|(?:[^ "'>]+))/gi,
778 protectAttributeNameRegex = /^(href|src|name)$/i; 795 protectAttributeNameRegex = /^(href|src|name)$/i;
779 796
@@ -790,8 +807,8 @@
790 function protectAttributes( html ) { 807 function protectAttributes( html ) {
791 return html.replace( protectElementRegex, function( element, tag, attributes ) { 808 return html.replace( protectElementRegex, function( element, tag, attributes ) {
792 return '<' + tag + attributes.replace( protectAttributeRegex, function( fullAttr, attrName ) { 809 return '<' + tag + attributes.replace( protectAttributeRegex, function( fullAttr, attrName ) {
793 // Avoid corrupting the inline event attributes (#7243). 810 // Avoid corrupting the inline event attributes (http://dev.ckeditor.com/ticket/7243).
794 // We should not rewrite the existed protected attributes, e.g. clipboard content from editor. (#5218) 811 // We should not rewrite the existed protected attributes, e.g. clipboard content from editor. (http://dev.ckeditor.com/ticket/5218)
795 if ( protectAttributeNameRegex.test( attrName ) && attributes.indexOf( 'data-cke-saved-' + attrName ) == -1 ) 812 if ( protectAttributeNameRegex.test( attrName ) && attributes.indexOf( 'data-cke-saved-' + attrName ) == -1 )
796 return ' data-cke-saved-' + fullAttr + ' data-cke-' + CKEDITOR.rnd + '-' + fullAttr; 813 return ' data-cke-saved-' + fullAttr + ' data-cke-' + CKEDITOR.rnd + '-' + fullAttr;
797 814
@@ -880,7 +897,7 @@
880 // <noscript> tags (get lost in IE and messed up in FF). 897 // <noscript> tags (get lost in IE and messed up in FF).
881 /<noscript[\s\S]*?<\/noscript>/gi, 898 /<noscript[\s\S]*?<\/noscript>/gi,
882 899
883 // Avoid meta tags being stripped (#8117). 900 // Avoid meta tags being stripped (http://dev.ckeditor.com/ticket/8117).
884 /<meta[\s\S]*?\/?>/gi 901 /<meta[\s\S]*?\/?>/gi
885 ].concat( protectRegexes ); 902 ].concat( protectRegexes );
886 903
@@ -894,7 +911,7 @@
894 911
895 for ( var i = 0; i < regexes.length; i++ ) { 912 for ( var i = 0; i < regexes.length; i++ ) {
896 data = data.replace( regexes[ i ], function( match ) { 913 data = data.replace( regexes[ i ], function( match ) {
897 match = match.replace( tempRegex, // There could be protected source inside another one. (#3869). 914 match = match.replace( tempRegex, // There could be protected source inside another one. (http://dev.ckeditor.com/ticket/3869).
898 function( $, isComment, id ) { 915 function( $, isComment, id ) {
899 return protectedHtml[ id ]; 916 return protectedHtml[ id ];
900 } ); 917 } );
@@ -912,7 +929,7 @@
912 929
913 // Different protection pattern is used for those that 930 // Different protection pattern is used for those that
914 // live in attributes to avoid from being HTML encoded. 931 // live in attributes to avoid from being HTML encoded.
915 // Why so serious? See #9205, #8216, #7805, #11754, #11846. 932 // Why so serious? See http://dev.ckeditor.com/ticket/9205, http://dev.ckeditor.com/ticket/8216, http://dev.ckeditor.com/ticket/7805, http://dev.ckeditor.com/ticket/11754, http://dev.ckeditor.com/ticket/11846.
916 data = data.replace( /<\w+(?:\s+(?:(?:[^\s=>]+\s*=\s*(?:[^'"\s>]+|'[^']*'|"[^"]*"))|[^\s=\/>]+))+\s*\/?>/g, function( match ) { 933 data = data.replace( /<\w+(?:\s+(?:(?:[^\s=>]+\s*=\s*(?:[^'"\s>]+|'[^']*'|"[^"]*"))|[^\s=\/>]+))+\s*\/?>/g, function( match ) {
917 return match.replace( /<!--\{cke_protected\}([^>]*)-->/g, function( match, data ) { 934 return match.replace( /<!--\{cke_protected\}([^>]*)-->/g, function( match, data ) {
918 store[ store.id ] = decodeURIComponent( data ); 935 store[ store.id ] = decodeURIComponent( data );
@@ -922,7 +939,7 @@
922 939
923 // This RegExp searches for innerText in all the title/iframe/textarea elements. 940 // This RegExp searches for innerText in all the title/iframe/textarea elements.
924 // This is because browser doesn't allow HTML in these elements, that's why we can't 941 // This is because browser doesn't allow HTML in these elements, that's why we can't
925 // nest comments in there. (#11223) 942 // nest comments in there. (http://dev.ckeditor.com/ticket/11223)
926 data = data.replace( /<(title|iframe|textarea)([^>]*)>([\s\S]*?)<\/\1>/g, function( match, tagName, tagAttributes, innerText ) { 943 data = data.replace( /<(title|iframe|textarea)([^>]*)>([\s\S]*?)<\/\1>/g, function( match, tagName, tagAttributes, innerText ) {
927 return '<' + tagName + tagAttributes + '>' + unprotectSource( unprotectRealComments( innerText ), editor ) + '</' + tagName + '>'; 944 return '<' + tagName + tagAttributes + '>' + unprotectSource( unprotectRealComments( innerText ), editor ) + '</' + tagName + '>';
928 } ); 945 } );
@@ -971,7 +988,7 @@
971 * {@link CKEDITOR.htmlParser.fragment} {@link CKEDITOR.htmlParser.element}. 988 * {@link CKEDITOR.htmlParser.fragment} {@link CKEDITOR.htmlParser.element}.
972 * * 5-9: Data is available in the parsed format, but {@link CKEDITOR.htmlDataProcessor#dataFilter} 989 * * 5-9: Data is available in the parsed format, but {@link CKEDITOR.htmlDataProcessor#dataFilter}
973 * is not applied yet. 990 * is not applied yet.
974 * * 6: Data is filtered with the {CKEDITOR.filter content filter}. 991 * * 6: Data is filtered with the {@link CKEDITOR.filter content filter}.
975 * * 10: Data is processed with {@link CKEDITOR.htmlDataProcessor#dataFilter}. 992 * * 10: Data is processed with {@link CKEDITOR.htmlDataProcessor#dataFilter}.
976 * * 10-14: Data is available in the parsed format and {@link CKEDITOR.htmlDataProcessor#dataFilter} 993 * * 10-14: Data is available in the parsed format and {@link CKEDITOR.htmlDataProcessor#dataFilter}
977 * has already been applied. 994 * has already been applied.
diff --git a/sources/core/htmlparser.js b/sources/core/htmlparser.js
index dffde95..c95257c 100644
--- a/sources/core/htmlparser.js
+++ b/sources/core/htmlparser.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -163,7 +163,7 @@ CKEDITOR.htmlParser = function() {
163 tagName = tagName.toLowerCase(); 163 tagName = tagName.toLowerCase();
164 164
165 // There are some tag names that can break things, so let's 165 // There are some tag names that can break things, so let's
166 // simply ignore them when parsing. (#5224) 166 // simply ignore them when parsing. (http://dev.ckeditor.com/ticket/5224)
167 if ( /="/.test( tagName ) ) 167 if ( /="/.test( tagName ) )
168 continue; 168 continue;
169 169
diff --git a/sources/core/htmlparser/basicwriter.js b/sources/core/htmlparser/basicwriter.js
index 62a97ef..61447f0 100644
--- a/sources/core/htmlparser/basicwriter.js
+++ b/sources/core/htmlparser/basicwriter.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -67,7 +67,7 @@ CKEDITOR.htmlParser.basicWriter = CKEDITOR.tools.createClass( {
67 * @param {String} attValue The attribute value. 67 * @param {String} attValue The attribute value.
68 */ 68 */
69 attribute: function( attName, attValue ) { 69 attribute: function( attName, attValue ) {
70 // Browsers don't always escape special character in attribute values. (#4683, #4719). 70 // Browsers don't always escape special character in attribute values. (http://dev.ckeditor.com/ticket/4683, http://dev.ckeditor.com/ticket/4719).
71 if ( typeof attValue == 'string' ) 71 if ( typeof attValue == 'string' )
72 attValue = CKEDITOR.tools.htmlEncodeAttr( attValue ); 72 attValue = CKEDITOR.tools.htmlEncodeAttr( attValue );
73 73
diff --git a/sources/core/htmlparser/cdata.js b/sources/core/htmlparser/cdata.js
index 4ece2b7..be8c5cf 100644
--- a/sources/core/htmlparser/cdata.js
+++ b/sources/core/htmlparser/cdata.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/core/htmlparser/comment.js b/sources/core/htmlparser/comment.js
index 171c62e..14a38f3 100644
--- a/sources/core/htmlparser/comment.js
+++ b/sources/core/htmlparser/comment.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/core/htmlparser/element.js b/sources/core/htmlparser/element.js
index 3654322..224d3e6 100644
--- a/sources/core/htmlparser/element.js
+++ b/sources/core/htmlparser/element.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -35,7 +35,7 @@ CKEDITOR.htmlParser.element = function( name, attributes ) {
35 */ 35 */
36 this.children = []; 36 this.children = [];
37 37
38 // Reveal the real semantic of our internal custom tag name (#6639), 38 // Reveal the real semantic of our internal custom tag name (http://dev.ckeditor.com/ticket/6639),
39 // when resolving whether it's block like. 39 // when resolving whether it's block like.
40 var realName = name || '', 40 var realName = name || '',
41 prefixed = realName.match( /^cke:(.*)/ ); 41 prefixed = realName.match( /^cke:(.*)/ );
@@ -56,7 +56,7 @@ CKEDITOR.htmlParser.element = function( name, attributes ) {
56}; 56};
57 57
58/** 58/**
59 * Object presentation of CSS style declaration text. 59 * Object presentation of the CSS style declaration text.
60 * 60 *
61 * @class 61 * @class
62 * @constructor Creates a `cssStyle` class instance. 62 * @constructor Creates a `cssStyle` class instance.
@@ -419,7 +419,7 @@ CKEDITOR.htmlParser.cssStyle = function() {
419 * 419 *
420 * @since 4.3 420 * @since 4.3
421 * @param {Number} index Index at which the element will be split &mdash; `0` means the beginning, 421 * @param {Number} index Index at which the element will be split &mdash; `0` means the beginning,
422 * `1` after first child node, etc. 422 * `1` after the first child node, etc.
423 * @returns {CKEDITOR.htmlParser.element} The new element following this one. 423 * @returns {CKEDITOR.htmlParser.element} The new element following this one.
424 */ 424 */
425 split: function( index ) { 425 split: function( index ) {
@@ -443,6 +443,38 @@ CKEDITOR.htmlParser.cssStyle = function() {
443 }, 443 },
444 444
445 /** 445 /**
446 * Searches through the current node children to find nodes matching the `criteria`.
447 *
448 * @param {String/Function} criteria Tag name or evaluator function.
449 * @param {Boolean} [recursive=false]
450 * @returns {CKEDITOR.htmlParser.node[]}
451 */
452 find: function( criteria, recursive ) {
453 if ( recursive === undefined ) {
454 recursive = false;
455 }
456
457 var ret = [],
458 i;
459
460 for ( i = 0; i < this.children.length; i++ ) {
461 var curChild = this.children[ i ];
462
463 if ( typeof criteria == 'function' && criteria( curChild ) ) {
464 ret.push( curChild );
465 } else if ( typeof criteria == 'string' && curChild.name === criteria ) {
466 ret.push( curChild );
467 }
468
469 if ( recursive && curChild.find ) {
470 ret = ret.concat( curChild.find( criteria, recursive ) );
471 }
472 }
473
474 return ret;
475 },
476
477 /**
446 * Adds a class name to the list of classes. 478 * Adds a class name to the list of classes.
447 * 479 *
448 * @since 4.4 480 * @since 4.4
@@ -511,8 +543,8 @@ CKEDITOR.htmlParser.cssStyle = function() {
511 543
512 if ( !ctx.nonEditable && this.attributes.contenteditable == 'false' ) 544 if ( !ctx.nonEditable && this.attributes.contenteditable == 'false' )
513 changes.push( 'nonEditable', true ); 545 changes.push( 'nonEditable', true );
514 // A context to be given nestedEditable must be nonEditable first (by inheritance) (#11372, #11698). 546 // A context to be given nestedEditable must be nonEditable first (by inheritance) (http://dev.ckeditor.com/ticket/11372, http://dev.ckeditor.com/ticket/11698).
515 // Special case: #11504 - filter starts on <body contenteditable=true>, 547 // Special case: http://dev.ckeditor.com/ticket/11504 - filter starts on <body contenteditable=true>,
516 // so ctx.nonEditable has not been yet set to true. 548 // so ctx.nonEditable has not been yet set to true.
517 else if ( ctx.nonEditable && !ctx.nestedEditable && this.attributes.contenteditable == 'true' ) 549 else if ( ctx.nonEditable && !ctx.nestedEditable && this.attributes.contenteditable == 'true' )
518 changes.push( 'nestedEditable', true ); 550 changes.push( 'nestedEditable', true );
diff --git a/sources/core/htmlparser/filter.js b/sources/core/htmlparser/filter.js
index 72767b5..db6b91c 100644
--- a/sources/core/htmlparser/filter.js
+++ b/sources/core/htmlparser/filter.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/core/htmlparser/fragment.js b/sources/core/htmlparser/fragment.js
index c062986..7ef915c 100644
--- a/sources/core/htmlparser/fragment.js
+++ b/sources/core/htmlparser/fragment.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -61,7 +61,7 @@ CKEDITOR.htmlParser.fragment = function() {
61 if ( node.attributes[ 'data-cke-survive' ] ) 61 if ( node.attributes[ 'data-cke-survive' ] )
62 return false; 62 return false;
63 63
64 // Empty link is to be removed when empty but not anchor. (#7894) 64 // Empty link is to be removed when empty but not anchor. (http://dev.ckeditor.com/ticket/7894)
65 return node.name == 'a' && node.attributes.href || CKEDITOR.dtd.$removeEmpty[ node.name ]; 65 return node.name == 'a' && node.attributes.href || CKEDITOR.dtd.$removeEmpty[ node.name ];
66 } 66 }
67 67
@@ -130,7 +130,7 @@ CKEDITOR.htmlParser.fragment = function() {
130 i--; 130 i--;
131 } else { 131 } else {
132 // Some element of the same type cannot be nested, flat them, 132 // Some element of the same type cannot be nested, flat them,
133 // e.g. <a href="#">foo<a href="#">bar</a></a>. (#7894) 133 // e.g. <a href="#">foo<a href="#">bar</a></a>. (http://dev.ckeditor.com/ticket/7894)
134 if ( pendingName == currentNode.name ) 134 if ( pendingName == currentNode.name )
135 addElement( currentNode, currentNode.parent, 1 ), i--; 135 addElement( currentNode, currentNode.parent, 1 ), i--;
136 } 136 }
@@ -143,7 +143,7 @@ CKEDITOR.htmlParser.fragment = function() {
143 addElement( pendingBRs.shift(), currentNode ); 143 addElement( pendingBRs.shift(), currentNode );
144 } 144 }
145 145
146 // Rtrim empty spaces on block end boundary. (#3585) 146 // Rtrim empty spaces on block end boundary. (http://dev.ckeditor.com/ticket/3585)
147 function removeTailWhitespace( element ) { 147 function removeTailWhitespace( element ) {
148 if ( element._.isBlockLike && element.name != 'pre' && element.name != 'textarea' ) { 148 if ( element._.isBlockLike && element.name != 'pre' && element.name != 'textarea' ) {
149 149
@@ -275,10 +275,10 @@ CKEDITOR.htmlParser.fragment = function() {
275 // If the element cannot be child of the current element. 275 // If the element cannot be child of the current element.
276 if ( !element.isUnknown && !currentNode.isUnknown && !currentDtd[ tagName ] ) { 276 if ( !element.isUnknown && !currentNode.isUnknown && !currentDtd[ tagName ] ) {
277 // Current node doesn't have a close tag, time for a close 277 // Current node doesn't have a close tag, time for a close
278 // as this element isn't fit in. (#7497) 278 // as this element isn't fit in. (http://dev.ckeditor.com/ticket/7497)
279 if ( currentNode.isOptionalClose ) 279 if ( currentNode.isOptionalClose )
280 parser.onTagClose( currentName ); 280 parser.onTagClose( currentName );
281 // Fixing malformed nested lists by moving it into a previous list item. (#3828) 281 // Fixing malformed nested lists by moving it into a previous list item. (http://dev.ckeditor.com/ticket/3828)
282 else if ( tagName in listBlocks && currentName in listBlocks ) { 282 else if ( tagName in listBlocks && currentName in listBlocks ) {
283 var children = currentNode.children, 283 var children = currentNode.children,
284 lastChild = children[ children.length - 1 ]; 284 lastChild = children[ children.length - 1 ];
@@ -291,7 +291,7 @@ CKEDITOR.htmlParser.fragment = function() {
291 currentNode = lastChild; 291 currentNode = lastChild;
292 } 292 }
293 // Establish new list root for orphan list items, but NOT to create 293 // Establish new list root for orphan list items, but NOT to create
294 // new list for the following ones, fix them instead. (#6975) 294 // new list for the following ones, fix them instead. (http://dev.ckeditor.com/ticket/6975)
295 // <dl><dt>foo<dd>bar</dl> 295 // <dl><dt>foo<dd>bar</dl>
296 // <ul><li>foo<li>bar</ul> 296 // <ul><li>foo<li>bar</ul>
297 else if ( tagName in CKEDITOR.dtd.$listItem && 297 else if ( tagName in CKEDITOR.dtd.$listItem &&
@@ -409,7 +409,7 @@ CKEDITOR.htmlParser.fragment = function() {
409 var currentName = currentNode.name, 409 var currentName = currentNode.name,
410 currentDtd = currentName ? ( CKEDITOR.dtd[ currentName ] || ( currentNode._.isBlockLike ? CKEDITOR.dtd.div : CKEDITOR.dtd.span ) ) : rootDtd; 410 currentDtd = currentName ? ( CKEDITOR.dtd[ currentName ] || ( currentNode._.isBlockLike ? CKEDITOR.dtd.div : CKEDITOR.dtd.span ) ) : rootDtd;
411 411
412 // Fix orphan text in list/table. (#8540) (#8870) 412 // Fix orphan text in list/table. (http://dev.ckeditor.com/ticket/8540) (http://dev.ckeditor.com/ticket/8870)
413 if ( !inTextarea && !currentDtd[ '#' ] && currentName in nonBreakingBlocks ) { 413 if ( !inTextarea && !currentDtd[ '#' ] && currentName in nonBreakingBlocks ) {
414 parser.onTagOpen( structureFixes[ currentName ] || '' ); 414 parser.onTagOpen( structureFixes[ currentName ] || '' );
415 parser.onText( text ); 415 parser.onText( text );
diff --git a/sources/core/htmlparser/node.js b/sources/core/htmlparser/node.js
index 0f1b307..b38c8a8 100644
--- a/sources/core/htmlparser/node.js
+++ b/sources/core/htmlparser/node.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/core/htmlparser/text.js b/sources/core/htmlparser/text.js
index 07cb865..190e85a 100644
--- a/sources/core/htmlparser/text.js
+++ b/sources/core/htmlparser/text.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/core/keystrokehandler.js b/sources/core/keystrokehandler.js
index e2a6bcd..c84089b 100644
--- a/sources/core/keystrokehandler.js
+++ b/sources/core/keystrokehandler.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/core/lang.js b/sources/core/lang.js
index 3519923..06f3a2a 100644
--- a/sources/core/lang.js
+++ b/sources/core/lang.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -17,10 +17,10 @@
17 * alert( CKEDITOR.lang.languages.en ); // 1 17 * alert( CKEDITOR.lang.languages.en ); // 1
18 */ 18 */
19 languages: { 19 languages: {
20 af: 1, ar: 1, bg: 1, bn: 1, bs: 1, ca: 1, cs: 1, cy: 1, da: 1, de: 1, 'de-ch': 1, el: 1, 20 af: 1, ar: 1, az: 1, bg: 1, bn: 1, bs: 1, ca: 1, cs: 1, cy: 1, da: 1, de: 1, 'de-ch': 1, el: 1,
21 'en-au': 1, 'en-ca': 1, 'en-gb': 1, en: 1, eo: 1, es: 1, et: 1, eu: 1, fa: 1, fi: 1, fo: 1, 21 'en-au': 1, 'en-ca': 1, 'en-gb': 1, en: 1, eo: 1, es: 1, 'es-mx':1, et: 1, eu: 1, fa: 1, fi: 1, fo: 1,
22 'fr-ca': 1, fr: 1, gl: 1, gu: 1, he: 1, hi: 1, hr: 1, hu: 1, id: 1, is: 1, it: 1, ja: 1, ka: 1, 22 'fr-ca': 1, fr: 1, gl: 1, gu: 1, he: 1, hi: 1, hr: 1, hu: 1, id: 1, is: 1, it: 1, ja: 1, ka: 1,
23 km: 1, ko: 1, ku: 1, lt: 1, lv: 1, mk: 1, mn: 1, ms: 1, nb: 1, nl: 1, no: 1, pl: 1, 'pt-br': 1, 23 km: 1, ko: 1, ku: 1, lt: 1, lv: 1, mk: 1, mn: 1, ms: 1, nb: 1, nl: 1, no: 1, oc: 1, pl: 1, 'pt-br': 1,
24 pt: 1, ro: 1, ru: 1, si: 1, sk: 1, sl: 1, sq: 1, 'sr-latn': 1, sr: 1, sv: 1, th: 1, tr: 1, tt: 1, ug: 1, 24 pt: 1, ro: 1, ru: 1, si: 1, sk: 1, sl: 1, sq: 1, 'sr-latn': 1, sr: 1, sv: 1, th: 1, tr: 1, tt: 1, ug: 1,
25 uk: 1, vi: 1, 'zh-cn': 1, zh: 1 25 uk: 1, vi: 1, 'zh-cn': 1, zh: 1
26 }, 26 },
diff --git a/sources/core/loader.js b/sources/core/loader.js
index 5a108df..dc02511 100644
--- a/sources/core/loader.js
+++ b/sources/core/loader.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -142,7 +142,7 @@ if ( !CKEDITOR.loader ) {
142 } 142 }
143 143
144 // We must guarantee the execution order of the scripts, so we 144 // We must guarantee the execution order of the scripts, so we
145 // need to load them one by one. (#4145) 145 // need to load them one by one. (http://dev.ckeditor.com/ticket/4145)
146 // The following if/else block has been taken from the scriptloader core code. 146 // The following if/else block has been taken from the scriptloader core code.
147 if ( typeof script.onreadystatechange !== 'undefined' ) { 147 if ( typeof script.onreadystatechange !== 'undefined' ) {
148 /** @ignore */ 148 /** @ignore */
@@ -156,7 +156,7 @@ if ( !CKEDITOR.loader ) {
156 /** @ignore */ 156 /** @ignore */
157 script.onload = function() { 157 script.onload = function() {
158 // Some browsers, such as Safari, may call the onLoad function 158 // Some browsers, such as Safari, may call the onLoad function
159 // immediately. Which will break the loading sequence. (#3661) 159 // immediately. Which will break the loading sequence. (http://dev.ckeditor.com/ticket/3661)
160 setTimeout( function() { 160 setTimeout( function() {
161 onScriptLoaded( scriptName ); 161 onScriptLoaded( scriptName );
162 }, 0 ); 162 }, 0 );
diff --git a/sources/core/log.js b/sources/core/log.js
index 6981612..228789e 100644
--- a/sources/core/log.js
+++ b/sources/core/log.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/core/plugindefinition.js b/sources/core/plugindefinition.js
index caff957..9ff7683 100644
--- a/sources/core/plugindefinition.js
+++ b/sources/core/plugindefinition.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/core/plugins.js b/sources/core/plugins.js
index 8e6c952..75cc41e 100644
--- a/sources/core/plugins.js
+++ b/sources/core/plugins.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/core/resourcemanager.js b/sources/core/resourcemanager.js
index 7ba88a8..c33c0f8 100644
--- a/sources/core/resourcemanager.js
+++ b/sources/core/resourcemanager.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -124,13 +124,13 @@ CKEDITOR.resourceManager.prototype = {
124 * Registers one or more resources to be loaded from an external path 124 * Registers one or more resources to be loaded from an external path
125 * instead of the core base path. 125 * instead of the core base path.
126 * 126 *
127 * // Loads a plugin from '/myplugin/samples/plugin.js'. 127 * // Loads a plugin from '/myplugins/sample/plugin.js'.
128 * CKEDITOR.plugins.addExternal( 'sample', '/myplugins/sample/' ); 128 * CKEDITOR.plugins.addExternal( 'sample', '/myplugins/sample/' );
129 * 129 *
130 * // Loads a plugin from '/myplugin/samples/my_plugin.js'. 130 * // Loads a plugin from '/myplugins/sample/my_plugin.js'.
131 * CKEDITOR.plugins.addExternal( 'sample', '/myplugins/sample/', 'my_plugin.js' ); 131 * CKEDITOR.plugins.addExternal( 'sample', '/myplugins/sample/', 'my_plugin.js' );
132 * 132 *
133 * // Loads a plugin from '/myplugin/samples/my_plugin.js'. 133 * // Loads a plugin from '/myplugins/sample/my_plugin.js'.
134 * CKEDITOR.plugins.addExternal( 'sample', '/myplugins/sample/my_plugin.js', '' ); 134 * CKEDITOR.plugins.addExternal( 'sample', '/myplugins/sample/my_plugin.js', '' );
135 * 135 *
136 * @param {String} names The resource names, separated by commas. 136 * @param {String} names The resource names, separated by commas.
diff --git a/sources/core/scriptloader.js b/sources/core/scriptloader.js
index 9ad536e..356996f 100644
--- a/sources/core/scriptloader.js
+++ b/sources/core/scriptloader.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -119,8 +119,8 @@ CKEDITOR.scriptLoader = ( function() {
119 } ); 119 } );
120 120
121 if ( callback ) { 121 if ( callback ) {
122 if ( CKEDITOR.env.ie && CKEDITOR.env.version < 11 ) { 122 // The onload or onerror event does not fire in IE8 and IE9 Quirks Mode (http://dev.ckeditor.com/ticket/14849).
123 // FIXME: For IE, we are not able to return false on error (like 404). 123 if ( CKEDITOR.env.ie && ( CKEDITOR.env.version <= 8 || CKEDITOR.env.ie9Compat ) ) {
124 script.$.onreadystatechange = function() { 124 script.$.onreadystatechange = function() {
125 if ( script.$.readyState == 'loaded' || script.$.readyState == 'complete' ) { 125 if ( script.$.readyState == 'loaded' || script.$.readyState == 'complete' ) {
126 script.$.onreadystatechange = null; 126 script.$.onreadystatechange = null;
@@ -130,13 +130,12 @@ CKEDITOR.scriptLoader = ( function() {
130 } else { 130 } else {
131 script.$.onload = function() { 131 script.$.onload = function() {
132 // Some browsers, such as Safari, may call the onLoad function 132 // Some browsers, such as Safari, may call the onLoad function
133 // immediately. Which will break the loading sequence. (#3661) 133 // immediately. Which will break the loading sequence. (http://dev.ckeditor.com/ticket/3661)
134 setTimeout( function() { 134 setTimeout( function() {
135 onLoad( url, true ); 135 onLoad( url, true );
136 }, 0 ); 136 }, 0 );
137 }; 137 };
138 138
139 // FIXME: Opera and Safari will not fire onerror.
140 script.$.onerror = function() { 139 script.$.onerror = function() {
141 onLoad( url, false ); 140 onLoad( url, false );
142 }; 141 };
diff --git a/sources/core/selection.js b/sources/core/selection.js
index 573b890..d44db3b 100644
--- a/sources/core/selection.js
+++ b/sources/core/selection.js
@@ -1,9 +1,217 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
6( function() { 6( function() {
7 var isMSSelection = typeof window.getSelection != 'function',
8 nextRev = 1,
9 // http://dev.ckeditor.com/ticket/13816
10 fillingCharSequence = CKEDITOR.tools.repeat( '\u200b', 7 ),
11 fillingCharSequenceRegExp = new RegExp( fillingCharSequence + '( )?', 'g' ),
12 isSelectingTable;
13
14 // #### table selection : START
15 // @param {CKEDITOR.dom.range[]} ranges
16 // @param {Boolean} allowPartially Whether a collapsed selection within table is recognized to be a valid selection.
17 // This happens for WebKits on MacOS, when you right click inside the table.
18 function isTableSelection( ranges, allowPartially ) {
19 if ( ranges.length === 0 ) {
20 return false;
21 }
22
23 var node,
24 i;
25
26 function isPartiallySelected( range ) {
27 var startCell = range.startContainer.getAscendant( { td: 1, th: 1 }, true ),
28 endCell = range.endContainer.getAscendant( { td: 1, th: 1 }, true ),
29 trim = CKEDITOR.tools.trim,
30 selected;
31
32 // Check if the selection is inside one cell and we don't have any nested table contents selected.
33 if ( !startCell || !startCell.equals( endCell ) || startCell.findOne( 'td, th, tr, tbody, table' ) ) {
34 return false;
35 }
36
37 selected = range.cloneContents();
38
39 // Empty selection is still partially selected.
40 if ( !selected.getFirst() ) {
41 return true;
42 }
43
44 return trim( selected.getFirst().getText() ) !== trim( startCell.getText() );
45 }
46
47 // Edge case: partially selected text node inside one table cell or cursor inside cell.
48 if ( !allowPartially && ranges.length === 1 &&
49 ( ranges[ 0 ].collapsed || isPartiallySelected( ranges[ 0 ] ) ) ) {
50 return false;
51 }
52
53 for ( i = 0; i < ranges.length; i++ ) {
54 node = ranges[ i ]._getTableElement();
55
56 if ( !node ) {
57 return false;
58 }
59 }
60
61 return true;
62 }
63
64 // After performing fake table selection, the real selection is limited
65 // to the first selected cell. Therefore to check if the real selection
66 // matches the fake selection, we check if the table cell from fake selection's
67 // first range and real selection's range are the same.
68 // Also if the selection is collapsed, we should check if it's placed inside the table
69 // in which the fake selection is or inside nested table. Such selection occurs after right mouse click.
70 function isRealTableSelection( selection, fakeSelection ) {
71 var ranges = selection.getRanges(),
72 fakeRanges = fakeSelection.getRanges(),
73 table = ranges.length && ranges[ 0 ]._getTableElement() &&
74 ranges[ 0 ]._getTableElement().getAscendant( 'table', true ),
75 fakeTable = fakeRanges.length && fakeRanges[ 0 ]._getTableElement() &&
76 fakeRanges[ 0 ]._getTableElement().getAscendant( 'table', true ),
77 isTableRange = ranges.length === 1 && ranges[ 0 ]._getTableElement() &&
78 ranges[ 0 ]._getTableElement().is( 'table' ),
79 isFakeTableRange = fakeRanges.length === 1 && fakeRanges[ 0 ]._getTableElement() &&
80 fakeRanges[ 0 ]._getTableElement().is( 'table' );
81
82 function isValidTableSelection( table, fakeTable, ranges, fakeRanges ) {
83 var isMenuOpen = ranges.length === 1 && ranges[ 0 ].collapsed,
84 // In case of WebKit on MacOS, when checking real selection, we must allow selection to be partial.
85 // Otherwise the check will fail for table selection with opened context menu.
86 isInTable = isTableSelection( ranges, !!CKEDITOR.env.webkit ) && isTableSelection( fakeRanges );
87
88 return isSameTable( table, fakeTable ) && ( isMenuOpen || isInTable );
89 }
90
91 function isSameTable( table, fakeTable ) {
92 if ( !table || !fakeTable ) {
93 return false;
94 }
95
96 return table.equals( fakeTable ) || fakeTable.contains( table );
97 }
98
99 if ( isValidTableSelection( table, fakeTable, ranges, fakeRanges ) ) {
100 // Edge case: when editor contains only table and that table is selected using selectAll command,
101 // then the selection is not properly refreshed and it must be done manually.
102 if ( isTableRange && !isFakeTableRange ) {
103 fakeSelection.selectRanges( ranges );
104 }
105 return true;
106 }
107
108 return false;
109 }
110
111 function getSelectedCells( ranges ) {
112 var cells = [],
113 node,
114 i;
115
116 function getCellsFromElement( element ) {
117 var cells = element.find( 'td, th' ),
118 cellsArray = [],
119 i;
120
121 for ( i = 0; i < cells.count(); i++ ) {
122 cellsArray.push( cells.getItem( i ) );
123 }
124
125 return cellsArray;
126 }
127
128 for ( i = 0; i < ranges.length; i++ ) {
129 node = ranges[ i ]._getTableElement();
130
131 if ( node.is && node.is( { td: 1, th: 1 } ) ) {
132 cells.push( node );
133 } else {
134 cells = cells.concat( getCellsFromElement( node ) );
135 }
136 }
137
138 return cells;
139 }
140
141 // Cells in the same row are separated by tab and the rows are separated by new line, e.g.
142 // Cell 1.1 Cell 1.2
143 // Cell 2.1 Cell 2.2
144 function getTextFromSelectedCells( ranges ) {
145 var cells = getSelectedCells( ranges ),
146 txt = '',
147 currentRow = [],
148 lastRow,
149 i;
150
151 for ( i = 0; i < cells.length; i++ ) {
152 if ( lastRow && !lastRow.equals( cells[ i ].getAscendant( 'tr' ) ) ) {
153 txt += currentRow.join( '\t' ) + '\n';
154 lastRow = cells[ i ].getAscendant( 'tr' );
155 currentRow = [];
156 } else if ( i === 0 ) {
157 lastRow = cells[ i ].getAscendant( 'tr' );
158 }
159
160 currentRow.push( cells[ i ].getText() );
161 }
162
163 txt += currentRow.join( '\t' );
164
165 return txt;
166 }
167
168 function performFakeTableSelection( ranges ) {
169 var editor = this.root.editor,
170 realSelection = editor.getSelection( 1 ),
171 cache;
172
173 // Cleanup after previous selection - e.g. remove hidden sel container.
174 this.reset();
175
176 // Indicate that the table is being fake-selected to prevent infinite loop
177 // inside `selectRanges`.
178 isSelectingTable = true;
179
180 // Cancel selectionchange for the real selection.
181 realSelection.root.once( 'selectionchange', function( evt ) {
182 evt.cancel();
183 }, null, null, 0 );
184
185 // Move real selection to the first selected range.
186 realSelection.selectRanges( [ ranges[ 0 ] ] );
187
188 cache = this._.cache;
189
190 // Caches given ranges.
191 cache.ranges = new CKEDITOR.dom.rangeList( ranges );
192 cache.type = CKEDITOR.SELECTION_TEXT;
193 cache.selectedElement = ranges[ 0 ]._getTableElement();
194
195 // `selectedText` should contain text from all selected data ("plain text table")
196 // to be compatible with Firefox's implementation.
197 cache.selectedText = getTextFromSelectedCells( ranges );
198
199 // Properties that will not be available when isFake.
200 cache.nativeSel = null;
201
202 this.isFake = 1;
203 this.rev = nextRev++;
204
205 // Save this selection, so it can be returned by editor.getSelection().
206 editor._.fakeSelection = this;
207
208 isSelectingTable = false;
209
210 // Fire selectionchange, just like a normal selection.
211 this.root.fire( 'selectionchange' );
212 }
213 // #### table selection : END
214
7 // #### checkSelectionChange : START 215 // #### checkSelectionChange : START
8 216
9 // The selection change check basically saves the element parent tree of 217 // The selection change check basically saves the element parent tree of
@@ -16,10 +224,9 @@
16 224
17 if ( sel ) { 225 if ( sel ) {
18 realSel = this.getSelection( 1 ); 226 realSel = this.getSelection( 1 );
19 227 // If real (not locked/stored) selection was moved from hidden container
20 // If real (not locked/stored) selection was moved from hidden container, 228 // or is not a table one, then the fake-selection must be invalidated.
21 // then the fake-selection must be invalidated. 229 if ( !realSel || ( !realSel.isHidden() && !isRealTableSelection( realSel, sel ) ) ) {
22 if ( !realSel || !realSel.isHidden() ) {
23 // Remove the cache from fake-selection references in use elsewhere. 230 // Remove the cache from fake-selection references in use elsewhere.
24 sel.reset(); 231 sel.reset();
25 232
@@ -41,8 +248,10 @@
41 248
42 var currentPath = this.elementPath(); 249 var currentPath = this.elementPath();
43 if ( !currentPath.compare( this._.selectionPreviousPath ) ) { 250 if ( !currentPath.compare( this._.selectionPreviousPath ) ) {
251 // Handle case when dialog inserts new element but parent block and path (so also focus context) does not change. (http://dev.ckeditor.com/ticket/13362)
252 var sameBlockParent = this._.selectionPreviousPath && this._.selectionPreviousPath.blockLimit.equals( currentPath.blockLimit );
44 // Cache the active element, which we'll eventually lose on Webkit. 253 // Cache the active element, which we'll eventually lose on Webkit.
45 if ( CKEDITOR.env.webkit ) 254 if ( CKEDITOR.env.webkit && !sameBlockParent )
46 this._.previousActive = this.document.getActive(); 255 this._.previousActive = this.document.getActive();
47 256
48 this._.selectionPreviousPath = currentPath; 257 this._.selectionPreviousPath = currentPath;
@@ -89,7 +298,7 @@
89 // * is a visible node, 298 // * is a visible node,
90 // * is a non-empty element (this rule will accept elements like <strong></strong> because they 299 // * is a non-empty element (this rule will accept elements like <strong></strong> because they
91 // they were not accepted by the isVisible() check, not not <br> which cannot absorb the caret). 300 // they were not accepted by the isVisible() check, not not <br> which cannot absorb the caret).
92 // See #12621. 301 // See http://dev.ckeditor.com/ticket/12621.
93 function mayAbsorbCaret( node ) { 302 function mayAbsorbCaret( node ) {
94 if ( isVisible( node ) ) 303 if ( isVisible( node ) )
95 return true; 304 return true;
@@ -130,8 +339,8 @@
130 if ( ctxRequiresFix( previous ) || ctxRequiresFix( next, 1 ) ) 339 if ( ctxRequiresFix( previous ) || ctxRequiresFix( next, 1 ) )
131 return true; 340 return true;
132 341
133 // Empty block/inline element is also affected. <span>^</span>, <p>^</p> (#7222) 342 // Empty block/inline element is also affected. <span>^</span>, <p>^</p> (http://dev.ckeditor.com/ticket/7222)
134 // If you found this line confusing check #12655. 343 // If you found this line confusing check http://dev.ckeditor.com/ticket/12655.
135 if ( !( previous || next ) && !( ct.type == CKEDITOR.NODE_ELEMENT && ct.isBlockBoundary() && ct.getBogus() ) ) 344 if ( !( previous || next ) && !( ct.type == CKEDITOR.NODE_ELEMENT && ct.isBlockBoundary() && ct.getBogus() ) )
136 return true; 345 return true;
137 346
@@ -147,7 +356,7 @@
147 return fillingChar; 356 return fillingChar;
148 } 357 }
149 358
150 // Checks if a filling char has been used, eventualy removing it (#1272). 359 // Checks if a filling char has been used, eventually removing it (http://dev.ckeditor.com/ticket/1272).
151 function checkFillingCharSequenceNodeReady( editable ) { 360 function checkFillingCharSequenceNodeReady( editable ) {
152 var fillingChar = editable.getCustomData( 'cke-fillingChar' ); 361 var fillingChar = editable.getCustomData( 'cke-fillingChar' );
153 362
@@ -156,6 +365,7 @@
156 // creating it. 365 // creating it.
157 if ( fillingChar.getCustomData( 'ready' ) ) { 366 if ( fillingChar.getCustomData( 'ready' ) ) {
158 removeFillingCharSequenceNode( editable ); 367 removeFillingCharSequenceNode( editable );
368 editable.editor.fire( 'selectionCheck' );
159 } else { 369 } else {
160 fillingChar.setCustomData( 'ready', 1 ); 370 fillingChar.setCustomData( 'ready', 1 );
161 } 371 }
@@ -167,7 +377,7 @@
167 377
168 if ( fillingChar ) { 378 if ( fillingChar ) {
169 // Text selection position might get mangled by 379 // Text selection position might get mangled by
170 // subsequent dom modification, save it now for restoring. (#8617) 380 // subsequent dom modification, save it now for restoring. (http://dev.ckeditor.com/ticket/8617)
171 if ( keepSelection !== false ) { 381 if ( keepSelection !== false ) {
172 var sel = editable.getDocument().getSelection().getNative(), 382 var sel = editable.getDocument().getSelection().getNative(),
173 // Be error proof. 383 // Be error proof.
@@ -203,11 +413,11 @@
203 } 413 }
204 } 414 }
205 415
206 // #13816 416 // http://dev.ckeditor.com/ticket/13816
207 function removeFillingCharSequenceString( str, nbspAware ) { 417 function removeFillingCharSequenceString( str, nbspAware ) {
208 if ( nbspAware ) { 418 if ( nbspAware ) {
209 return str.replace( fillingCharSequenceRegExp, function( m, p ) { 419 return str.replace( fillingCharSequenceRegExp, function( m, p ) {
210 // #10291 if filling char is followed by a space replace it with NBSP. 420 // http://dev.ckeditor.com/ticket/10291 if filling char is followed by a space replace it with NBSP.
211 return p ? '\xa0' : ''; 421 return p ? '\xa0' : '';
212 } ); 422 } );
213 } else { 423 } else {
@@ -234,10 +444,11 @@
234 } 444 }
235 445
236 // Creates cke_hidden_sel container and puts real selection there. 446 // Creates cke_hidden_sel container and puts real selection there.
237 function hideSelection( editor ) { 447 function hideSelection( editor, ariaLabel ) {
238 var style = CKEDITOR.env.ie ? 'display:none' : 'position:fixed;top:0;left:-1000px', 448 var content = ariaLabel || '&nbsp;',
449 style = CKEDITOR.env.ie && CKEDITOR.env.version < 14 ? 'display:none' : 'position:fixed;top:0;left:-1000px',
239 hiddenEl = CKEDITOR.dom.element.createFromHtml( 450 hiddenEl = CKEDITOR.dom.element.createFromHtml(
240 '<div data-cke-hidden-sel="1" data-cke-temp="1" style="' + style + '">&nbsp;</div>', 451 '<div data-cke-hidden-sel="1" data-cke-temp="1" style="' + style + '">' + content + '</div>',
241 editor.document ); 452 editor.document );
242 453
243 editor.fire( 'lockSnapshot' ); 454 editor.fire( 'lockSnapshot' );
@@ -382,7 +593,7 @@
382 ( enclosedNode = range.getEnclosedNode() ) && enclosedNode.type == CKEDITOR.NODE_ELEMENT ) { 593 ( enclosedNode = range.getEnclosedNode() ) && enclosedNode.type == CKEDITOR.NODE_ELEMENT ) {
383 // So far we can't say that enclosed element is non-editable. Before checking, 594 // So far we can't say that enclosed element is non-editable. Before checking,
384 // we'll shrink range (clone). Shrinking will stop on non-editable range, or 595 // we'll shrink range (clone). Shrinking will stop on non-editable range, or
385 // innermost element (#11114). 596 // innermost element (http://dev.ckeditor.com/ticket/11114).
386 clone = range.clone(); 597 clone = range.clone();
387 clone.shrink( CKEDITOR.SHRINK_ELEMENT, true ); 598 clone.shrink( CKEDITOR.SHRINK_ELEMENT, true );
388 599
@@ -516,7 +727,7 @@
516 727
517 // Give the editable an initial selection on first focus, 728 // Give the editable an initial selection on first focus,
518 // put selection at a consistent position at the start 729 // put selection at a consistent position at the start
519 // of the contents. (#9507) 730 // of the contents. (http://dev.ckeditor.com/ticket/9507)
520 if ( CKEDITOR.env.gecko ) { 731 if ( CKEDITOR.env.gecko ) {
521 editable.attachListener( editable, 'focus', function( evt ) { 732 editable.attachListener( editable, 'focus', function( evt ) {
522 evt.removeListener(); 733 evt.removeListener();
@@ -524,7 +735,7 @@
524 if ( restoreSel !== 0 ) { 735 if ( restoreSel !== 0 ) {
525 var nativ = editor.getSelection().getNative(); 736 var nativ = editor.getSelection().getNative();
526 // Do it only if the native selection is at an unwanted 737 // Do it only if the native selection is at an unwanted
527 // place (at the very start of the editable). #10119 738 // place (at the very start of the editable). http://dev.ckeditor.com/ticket/10119
528 if ( nativ && nativ.isCollapsed && nativ.anchorNode == editable.$ ) { 739 if ( nativ && nativ.isCollapsed && nativ.anchorNode == editable.$ ) {
529 var rng = editor.createRange(); 740 var rng = editor.createRange();
530 rng.moveToElementEditStart( editable ); 741 rng.moveToElementEditStart( editable );
@@ -539,9 +750,17 @@
539 // On Webkit we use DOMFocusIn which is fired more often than focus - e.g. when moving from main editable 750 // On Webkit we use DOMFocusIn which is fired more often than focus - e.g. when moving from main editable
540 // to nested editable (or the opposite). Unlock selection all, but restore only when it was locked 751 // to nested editable (or the opposite). Unlock selection all, but restore only when it was locked
541 // for the same active element, what will e.g. mean restoring after displaying dialog. 752 // for the same active element, what will e.g. mean restoring after displaying dialog.
542 if ( restoreSel && CKEDITOR.env.webkit ) 753 if ( restoreSel && CKEDITOR.env.webkit ) {
543 restoreSel = editor._.previousActive && editor._.previousActive.equals( doc.getActive() ); 754 restoreSel = editor._.previousActive && editor._.previousActive.equals( doc.getActive() );
544 755
756 // On Webkit when editor uses divarea, native focus causes editable viewport to scroll
757 // to the top (when there is no active selection inside while focusing) so the scroll
758 // position should be restored after focusing back editable area. (http://dev.ckeditor.com/ticket/14659)
759 if ( restoreSel && editor._.previousScrollTop != null && editor._.previousScrollTop != editable.$.scrollTop ) {
760 editable.$.scrollTop = editor._.previousScrollTop;
761 }
762 }
763
545 editor.unlockSelection( restoreSel ); 764 editor.unlockSelection( restoreSel );
546 restoreSel = 0; 765 restoreSel = 0;
547 }, null, null, -1 ); 766 }, null, null, -1 );
@@ -588,7 +807,7 @@
588 editable.attachListener( editable, 'mousedown', function( evt ) { 807 editable.attachListener( editable, 'mousedown', function( evt ) {
589 // IE scrolls document to top on right mousedown 808 // IE scrolls document to top on right mousedown
590 // when editor has no focus, remember this scroll 809 // when editor has no focus, remember this scroll
591 // position and revert it before context menu opens. (#5778) 810 // position and revert it before context menu opens. (http://dev.ckeditor.com/ticket/5778)
592 if ( evt.data.$.button == 2 ) { 811 if ( evt.data.$.button == 2 ) {
593 var sel = editor.document.getSelection(); 812 var sel = editor.document.getSelection();
594 if ( !sel || sel.getType() == CKEDITOR.SELECTION_NONE ) 813 if ( !sel || sel.getType() == CKEDITOR.SELECTION_NONE )
@@ -607,9 +826,12 @@
607 826
608 // When content doc is in standards mode, IE doesn't focus the editor when 827 // When content doc is in standards mode, IE doesn't focus the editor when
609 // clicking at the region below body (on html element) content, we emulate 828 // clicking at the region below body (on html element) content, we emulate
610 // the normal behavior on old IEs. (#1659, #7932) 829 // the normal behavior on old IEs. (http://dev.ckeditor.com/ticket/1659, http://dev.ckeditor.com/ticket/7932)
611 if ( doc.$.compatMode != 'BackCompat' ) { 830 if ( doc.$.compatMode != 'BackCompat' ) {
612 if ( CKEDITOR.env.ie7Compat || CKEDITOR.env.ie6Compat ) { 831 if ( CKEDITOR.env.ie7Compat || CKEDITOR.env.ie6Compat ) {
832 var textRng,
833 startRng;
834
613 html.on( 'mousedown', function( evt ) { 835 html.on( 'mousedown', function( evt ) {
614 evt = evt.data; 836 evt = evt.data;
615 837
@@ -641,7 +863,7 @@
641 html.removeListener( 'mousemove', onHover ); 863 html.removeListener( 'mousemove', onHover );
642 removeListeners(); 864 removeListeners();
643 865
644 // Make it in effect on mouse up. (#9022) 866 // Make it in effect on mouse up. (http://dev.ckeditor.com/ticket/9022)
645 textRng.select(); 867 textRng.select();
646 } 868 }
647 869
@@ -652,11 +874,11 @@
652 evt.$.y < html.$.clientHeight && 874 evt.$.y < html.$.clientHeight &&
653 evt.$.x < html.$.clientWidth ) { 875 evt.$.x < html.$.clientWidth ) {
654 // Start to build the text range. 876 // Start to build the text range.
655 var textRng = body.$.createTextRange(); 877 textRng = body.$.createTextRange();
656 moveRangeToPoint( textRng, evt.$.clientX, evt.$.clientY ); 878 moveRangeToPoint( textRng, evt.$.clientX, evt.$.clientY );
657 879
658 // Records the dragging start of the above text range. 880 // Records the dragging start of the above text range.
659 var startRng = textRng.duplicate(); 881 startRng = textRng.duplicate();
660 882
661 html.on( 'mousemove', onHover ); 883 html.on( 'mousemove', onHover );
662 outerDoc.on( 'mouseup', onSelectEnd ); 884 outerDoc.on( 'mouseup', onSelectEnd );
@@ -670,7 +892,7 @@
670 if ( CKEDITOR.env.version > 7 && CKEDITOR.env.version < 11 ) { 892 if ( CKEDITOR.env.version > 7 && CKEDITOR.env.version < 11 ) {
671 html.on( 'mousedown', function( evt ) { 893 html.on( 'mousedown', function( evt ) {
672 if ( evt.data.getTarget().is( 'html' ) ) { 894 if ( evt.data.getTarget().is( 'html' ) ) {
673 // Limit the text selection mouse move inside of editable. (#9715) 895 // Limit the text selection mouse move inside of editable. (http://dev.ckeditor.com/ticket/9715)
674 outerDoc.on( 'mouseup', onSelectEnd ); 896 outerDoc.on( 'mouseup', onSelectEnd );
675 html.on( 'mouseup', onSelectEnd ); 897 html.on( 'mouseup', onSelectEnd );
676 } 898 }
@@ -684,6 +906,14 @@
684 // 2. After the accomplish of keyboard and mouse events. 906 // 2. After the accomplish of keyboard and mouse events.
685 editable.attachListener( editable, 'selectionchange', checkSelectionChange, editor ); 907 editable.attachListener( editable, 'selectionchange', checkSelectionChange, editor );
686 editable.attachListener( editable, 'keyup', checkSelectionChangeTimeout, editor ); 908 editable.attachListener( editable, 'keyup', checkSelectionChangeTimeout, editor );
909 // http://dev.ckeditor.com/ticket/14407 - Don't even let anything happen if the selection is in a non-editable element.
910 editable.attachListener( editable, 'keydown', function( evt ) {
911 var sel = this.getSelection( 1 );
912 if ( nonEditableAscendant( sel ) ) {
913 sel.selectElement( nonEditableAscendant( sel ) );
914 evt.data.preventDefault();
915 }
916 }, editor );
687 // Always fire the selection change on focus gain. 917 // Always fire the selection change on focus gain.
688 // On Webkit do this on DOMFocusIn, because the selection is unlocked on it too and 918 // On Webkit do this on DOMFocusIn, because the selection is unlocked on it too and
689 // we need synchronization between those listeners to not lost cached editor._.previousActive property 919 // we need synchronization between those listeners to not lost cached editor._.previousActive property
@@ -693,7 +923,7 @@
693 editor.selectionChange( 1 ); 923 editor.selectionChange( 1 );
694 } ); 924 } );
695 925
696 // #9699: On Webkit&Gecko in inline editor we have to check selection when it was changed 926 // http://dev.ckeditor.com/ticket/9699: On Webkit&Gecko in inline editor we have to check selection when it was changed
697 // by dragging and releasing mouse button outside editable. Dragging (mousedown) 927 // by dragging and releasing mouse button outside editable. Dragging (mousedown)
698 // has to be initialized in editable, but for mouseup we listen on document element. 928 // has to be initialized in editable, but for mouseup we listen on document element.
699 if ( isInline && ( CKEDITOR.env.webkit || CKEDITOR.env.gecko ) ) { 929 if ( isInline && ( CKEDITOR.env.webkit || CKEDITOR.env.gecko ) ) {
@@ -707,11 +937,11 @@
707 mouseDown = 0; 937 mouseDown = 0;
708 } ); 938 } );
709 } 939 }
710 // In all other cases listen on simple mouseup over editable, as we did before #9699. 940 // In all other cases listen on simple mouseup over editable, as we did before http://dev.ckeditor.com/ticket/9699.
711 // 941 //
712 // Use document instead of editable in non-IEs for observing mouseup 942 // Use document instead of editable in non-IEs for observing mouseup
713 // since editable won't fire the event if selection process started within iframe and ended out 943 // since editable won't fire the event if selection process started within iframe and ended out
714 // of the editor (#9851). 944 // of the editor (http://dev.ckeditor.com/ticket/9851).
715 else { 945 else {
716 editable.attachListener( CKEDITOR.env.ie ? editable : doc.getDocumentElement(), 'mouseup', checkSelectionChangeTimeout, editor ); 946 editable.attachListener( CKEDITOR.env.ie ? editable : doc.getDocumentElement(), 'mouseup', checkSelectionChangeTimeout, editor );
717 } 947 }
@@ -733,18 +963,18 @@
733 case 8: // BACKSPACE 963 case 8: // BACKSPACE
734 case 45: // INS 964 case 45: // INS
735 case 46: // DEl 965 case 46: // DEl
736 removeFillingCharSequenceNode( editable ); 966 if ( editable.hasFocus ) {
967 removeFillingCharSequenceNode( editable );
968 }
737 } 969 }
738 970
739 }, null, null, -1 ); 971 }, null, null, -1 );
740 } 972 }
741 973
742 // Automatically select non-editable element when navigating into
743 // it by left/right or backspace/del keys.
744 editable.attachListener( editable, 'keydown', getOnKeyDownListener( editor ), null, null, -1 ); 974 editable.attachListener( editable, 'keydown', getOnKeyDownListener( editor ), null, null, -1 );
745 975
746 function moveRangeToPoint( range, x, y ) { 976 function moveRangeToPoint( range, x, y ) {
747 // Error prune in IE7. (#9034, #9110) 977 // Error prune in IE7. (http://dev.ckeditor.com/ticket/9034, http://dev.ckeditor.com/ticket/9110)
748 try { 978 try {
749 range.moveToPoint( x, y ); 979 range.moveToPoint( x, y );
750 } catch ( e ) {} 980 } catch ( e ) {}
@@ -765,14 +995,27 @@
765 range = sel.createRange(); 995 range = sel.createRange();
766 996
767 // The selection range is reported on host, but actually it should applies to the content doc. 997 // The selection range is reported on host, but actually it should applies to the content doc.
768 if ( sel.type != 'None' && range.parentElement().ownerDocument == doc.$ ) 998 // The parentElement may be null for read only mode in IE10 and below (http://dev.ckeditor.com/ticket/9780).
999 if ( sel.type != 'None' && range.parentElement() && range.parentElement().ownerDocument == doc.$ )
769 range.select(); 1000 range.select();
770 } 1001 }
1002
1003 function nonEditableAscendant( sel ) {
1004 if ( CKEDITOR.env.ie ) {
1005 var range = sel.getRanges()[ 0 ],
1006 ascendant = range ? range.startContainer.getAscendant( function( parent ) {
1007 return parent.type == CKEDITOR.NODE_ELEMENT &&
1008 ( parent.getAttribute( 'contenteditable' ) == 'false' || parent.getAttribute( 'contenteditable' ) == 'true' );
1009 }, true ) : null ;
1010
1011 return range && ascendant.getAttribute( 'contenteditable' ) == 'false' && ascendant;
1012 }
1013 }
771 } ); 1014 } );
772 1015
773 editor.on( 'setData', function() { 1016 editor.on( 'setData', function() {
774 // Invalidate locked selection when unloading DOM. 1017 // Invalidate locked selection when unloading DOM.
775 // (#9521, #5217#comment:32 and #11500#comment:11) 1018 // (http://dev.ckeditor.com/ticket/9521, http://dev.ckeditor.com/ticket/5217#comment:32 and http://dev.ckeditor.com/ticket/11500#comment:11)
776 editor.unlockSelection(); 1019 editor.unlockSelection();
777 1020
778 // Webkit's selection will mess up after the data loading. 1021 // Webkit's selection will mess up after the data loading.
@@ -786,7 +1029,7 @@
786 editor.unlockSelection(); 1029 editor.unlockSelection();
787 } ); 1030 } );
788 1031
789 // IE9 might cease to work if there's an object selection inside the iframe (#7639). 1032 // IE9 might cease to work if there's an object selection inside the iframe (http://dev.ckeditor.com/ticket/7639).
790 if ( CKEDITOR.env.ie9Compat ) 1033 if ( CKEDITOR.env.ie9Compat )
791 editor.on( 'beforeDestroy', clearSelection, null, null, 9 ); 1034 editor.on( 'beforeDestroy', clearSelection, null, null, 9 );
792 1035
@@ -802,7 +1045,7 @@
802 // When loaded data are ready check whether hidden selection container was not loaded. 1045 // When loaded data are ready check whether hidden selection container was not loaded.
803 editor.on( 'loadSnapshot', function() { 1046 editor.on( 'loadSnapshot', function() {
804 var isElement = CKEDITOR.dom.walker.nodeType( CKEDITOR.NODE_ELEMENT ), 1047 var isElement = CKEDITOR.dom.walker.nodeType( CKEDITOR.NODE_ELEMENT ),
805 // TODO replace with el.find() which will be introduced in #9764, 1048 // TODO replace with el.find() which will be introduced in http://dev.ckeditor.com/ticket/9764,
806 // because it may happen that hidden sel container won't be the last element. 1049 // because it may happen that hidden sel container won't be the last element.
807 last = editor.editable().getLast( isElement ); 1050 last = editor.editable().getLast( isElement );
808 1051
@@ -849,7 +1092,7 @@
849 } ); 1092 } );
850 1093
851 // On WebKit only, we need a special "filling" char on some situations 1094 // On WebKit only, we need a special "filling" char on some situations
852 // (#1272). Here we set the events that should invalidate that char. 1095 // (http://dev.ckeditor.com/ticket/1272). Here we set the events that should invalidate that char.
853 if ( CKEDITOR.env.webkit ) { 1096 if ( CKEDITOR.env.webkit ) {
854 CKEDITOR.on( 'instanceReady', function( evt ) { 1097 CKEDITOR.on( 'instanceReady', function( evt ) {
855 var editor = evt.editor; 1098 var editor = evt.editor;
@@ -864,7 +1107,7 @@
864 1107
865 // Filter Undo snapshot's HTML to get rid of Filling Char Sequence. 1108 // Filter Undo snapshot's HTML to get rid of Filling Char Sequence.
866 // Note: CKEDITOR.dom.range.createBookmark2() normalizes snapshot's 1109 // Note: CKEDITOR.dom.range.createBookmark2() normalizes snapshot's
867 // bookmarks to anticipate the removal of FCSeq from the snapshot's HTML (#13816). 1110 // bookmarks to anticipate the removal of FCSeq from the snapshot's HTML (http://dev.ckeditor.com/ticket/13816).
868 editor.on( 'getSnapshot', function( evt ) { 1111 editor.on( 'getSnapshot', function( evt ) {
869 if ( evt.data ) { 1112 if ( evt.data ) {
870 evt.data = removeFillingCharSequenceString( evt.data ); 1113 evt.data = removeFillingCharSequenceString( evt.data );
@@ -873,7 +1116,7 @@
873 1116
874 // Filter data to get rid of Filling Char Sequence. Filter on #toDataFormat 1117 // Filter data to get rid of Filling Char Sequence. Filter on #toDataFormat
875 // instead of #getData because once removed, FCSeq may leave an empty element, 1118 // instead of #getData because once removed, FCSeq may leave an empty element,
876 // which should be pruned by the dataProcessor (#13816). 1119 // which should be pruned by the dataProcessor (http://dev.ckeditor.com/ticket/13816).
877 // Note: Used low priority to filter when dataProcessor works on strings, 1120 // Note: Used low priority to filter when dataProcessor works on strings,
878 // not pseudo–DOM. 1121 // not pseudo–DOM.
879 editor.on( 'toDataFormat', function( evt ) { 1122 editor.on( 'toDataFormat', function( evt ) {
@@ -1039,9 +1282,6 @@
1039 */ 1282 */
1040 CKEDITOR.SELECTION_ELEMENT = 3; 1283 CKEDITOR.SELECTION_ELEMENT = 3;
1041 1284
1042 var isMSSelection = typeof window.getSelection != 'function',
1043 nextRev = 1;
1044
1045 /** 1285 /**
1046 * Manipulates the selection within a DOM element. If the current browser selection 1286 * Manipulates the selection within a DOM element. If the current browser selection
1047 * spans outside of the element, an empty selection object is returned. 1287 * spans outside of the element, an empty selection object is returned.
@@ -1121,7 +1361,7 @@
1121 1361
1122 // Selection out of concerned range, empty the selection. 1362 // Selection out of concerned range, empty the selection.
1123 // TODO check whether this condition cannot be reverted to its old 1363 // TODO check whether this condition cannot be reverted to its old
1124 // form (commented out) after we closed #10438. 1364 // form (commented out) after we closed http://dev.ckeditor.com/ticket/10438.
1125 //if ( !( rangeParent && ( root.equals( rangeParent ) || root.contains( rangeParent ) ) ) ) { 1365 //if ( !( rangeParent && ( root.equals( rangeParent ) || root.contains( rangeParent ) ) ) ) {
1126 if ( !( 1366 if ( !(
1127 rangeParent && 1367 rangeParent &&
@@ -1142,10 +1382,6 @@
1142 var styleObjectElements = { img: 1, hr: 1, li: 1, table: 1, tr: 1, td: 1, th: 1, embed: 1, object: 1, ol: 1, ul: 1, 1382 var styleObjectElements = { img: 1, hr: 1, li: 1, table: 1, tr: 1, td: 1, th: 1, embed: 1, object: 1, ol: 1, ul: 1,
1143 a: 1, input: 1, form: 1, select: 1, textarea: 1, button: 1, fieldset: 1, thead: 1, tfoot: 1 }; 1383 a: 1, input: 1, form: 1, select: 1, textarea: 1, button: 1, fieldset: 1, thead: 1, tfoot: 1 };
1144 1384
1145 // #13816
1146 var fillingCharSequence = CKEDITOR.tools.repeat( '\u200b', 7 ),
1147 fillingCharSequenceRegExp = new RegExp( fillingCharSequence + '( )?', 'g' );
1148
1149 CKEDITOR.tools.extend( CKEDITOR.dom.selection, { 1385 CKEDITOR.tools.extend( CKEDITOR.dom.selection, {
1150 _removeFillingCharSequenceString: removeFillingCharSequenceString, 1386 _removeFillingCharSequenceString: removeFillingCharSequenceString,
1151 _createFillingCharSequenceNode: createFillingCharSequenceNode, 1387 _createFillingCharSequenceNode: createFillingCharSequenceNode,
@@ -1167,7 +1403,7 @@
1167 * 1403 *
1168 * var selection = editor.getSelection().getNative(); 1404 * var selection = editor.getSelection().getNative();
1169 * 1405 *
1170 * @returns {Object} The native browser selection object. 1406 * @returns {Object} The native browser selection object or null if this is a fake selection.
1171 */ 1407 */
1172 getNative: function() { 1408 getNative: function() {
1173 if ( this._.cache.nativeSel !== undefined ) 1409 if ( this._.cache.nativeSel !== undefined )
@@ -1259,7 +1495,7 @@
1259 * alert( ranges.length ); 1495 * alert( ranges.length );
1260 * 1496 *
1261 * @method 1497 * @method
1262 * @param {Boolean} [onlyEditables] If set to `true`, this function retrives editable ranges only. 1498 * @param {Boolean} [onlyEditables] If set to `true`, this function retrieves editable ranges only.
1263 * @returns {Array} Range instances that represent the current selection. 1499 * @returns {Array} Range instances that represent the current selection.
1264 */ 1500 */
1265 getRanges: ( function() { 1501 getRanges: ( function() {
@@ -1290,7 +1526,7 @@
1290 index = -1, 1526 index = -1,
1291 position, distance, container; 1527 position, distance, container;
1292 1528
1293 // Binary search over all element childs to test the range to see whether 1529 // Binary search over all element children to test the range to see whether
1294 // range is right on the boundary of one element. 1530 // range is right on the boundary of one element.
1295 while ( startIndex <= endIndex ) { 1531 while ( startIndex <= endIndex ) {
1296 index = Math.floor( ( startIndex + endIndex ) / 2 ); 1532 index = Math.floor( ( startIndex + endIndex ) / 2 );
@@ -1306,8 +1542,8 @@
1306 return { container: parent, offset: getNodeIndex( child ) }; 1542 return { container: parent, offset: getNodeIndex( child ) };
1307 } 1543 }
1308 1544
1309 // All childs are text nodes, 1545 // All children are text nodes,
1310 // or to the right hand of test range are all text nodes. (#6992) 1546 // or to the right hand of test range are all text nodes. (http://dev.ckeditor.com/ticket/6992)
1311 if ( index == -1 || index == siblings.length - 1 && position < 0 ) { 1547 if ( index == -1 || index == siblings.length - 1 && position < 0 ) {
1312 // Adapt test range to embrace the entire parent contents. 1548 // Adapt test range to embrace the entire parent contents.
1313 testRange.moveToElementText( parent ); 1549 testRange.moveToElementText( parent );
@@ -1315,7 +1551,7 @@
1315 1551
1316 // IE report line break as CRLF with range.text but 1552 // IE report line break as CRLF with range.text but
1317 // only LF with textnode.nodeValue, normalize them to avoid 1553 // only LF with textnode.nodeValue, normalize them to avoid
1318 // breaking character counting logic below. (#3949) 1554 // breaking character counting logic below. (http://dev.ckeditor.com/ticket/3949)
1319 distance = testRange.text.replace( /(\r\n|\r)/g, '\n' ).length; 1555 distance = testRange.text.replace( /(\r\n|\r)/g, '\n' ).length;
1320 1556
1321 siblings = parent.childNodes; 1557 siblings = parent.childNodes;
@@ -1351,7 +1587,7 @@
1351 1587
1352 // IE report line break as CRLF with range.text but 1588 // IE report line break as CRLF with range.text but
1353 // only LF with textnode.nodeValue, normalize them to avoid 1589 // only LF with textnode.nodeValue, normalize them to avoid
1354 // breaking character counting logic below. (#3949) 1590 // breaking character counting logic below. (http://dev.ckeditor.com/ticket/3949)
1355 distance = testRange.text.replace( /(\r\n|\r)/g, '\n' ).length; 1591 distance = testRange.text.replace( /(\r\n|\r)/g, '\n' ).length;
1356 1592
1357 // Actual range anchor right beside test range at the inner boundary of text node. 1593 // Actual range anchor right beside test range at the inner boundary of text node.
@@ -1368,7 +1604,7 @@
1368 } 1604 }
1369 child = sibling; 1605 child = sibling;
1370 } 1606 }
1371 // Measurement in IE could be somtimes wrong because of <select> element. (#4611) 1607 // Measurement in IE could be sometimes wrong because of <select> element. (http://dev.ckeditor.com/ticket/4611)
1372 catch ( e ) { 1608 catch ( e ) {
1373 return { container: parent, offset: getNodeIndex( child ) }; 1609 return { container: parent, offset: getNodeIndex( child ) };
1374 } 1610 }
@@ -1400,7 +1636,7 @@
1400 boundaryInfo = getBoundaryInformation( nativeRange ); 1636 boundaryInfo = getBoundaryInformation( nativeRange );
1401 range.setEnd( new CKEDITOR.dom.node( boundaryInfo.container ), boundaryInfo.offset ); 1637 range.setEnd( new CKEDITOR.dom.node( boundaryInfo.container ), boundaryInfo.offset );
1402 1638
1403 // Correct an invalid IE range case on empty list item. (#5850) 1639 // Correct an invalid IE range case on empty list item. (http://dev.ckeditor.com/ticket/5850)
1404 if ( range.endContainer.getPosition( range.startContainer ) & CKEDITOR.POSITION_PRECEDING && range.endOffset <= range.startContainer.getIndex() ) 1640 if ( range.endContainer.getPosition( range.startContainer ) & CKEDITOR.POSITION_PRECEDING && range.endOffset <= range.startContainer.getIndex() )
1405 range.collapse(); 1641 range.collapse();
1406 1642
@@ -1432,7 +1668,7 @@
1432 } )() : 1668 } )() :
1433 function() { 1669 function() {
1434 // On browsers implementing the W3C range, we simply 1670 // On browsers implementing the W3C range, we simply
1435 // tranform the native ranges in CKEDITOR.dom.range 1671 // transform the native ranges in CKEDITOR.dom.range
1436 // instances. 1672 // instances.
1437 1673
1438 var ranges = [], 1674 var ranges = [],
@@ -1465,7 +1701,7 @@
1465 return ranges; 1701 return ranges;
1466 1702
1467 // Split range into multiple by read-only nodes. 1703 // Split range into multiple by read-only nodes.
1468 // Clone ranges array to avoid changing cached ranges (#11493). 1704 // Clone ranges array to avoid changing cached ranges (http://dev.ckeditor.com/ticket/11493).
1469 return extractEditableRanges( new CKEDITOR.dom.rangeList( ranges.slice() ) ); 1705 return extractEditableRanges( new CKEDITOR.dom.rangeList( ranges.slice() ) );
1470 }; 1706 };
1471 } )(), 1707 } )(),
@@ -1499,11 +1735,11 @@
1499 1735
1500 // Decrease the range content to exclude particial 1736 // Decrease the range content to exclude particial
1501 // selected node on the start which doesn't have 1737 // selected node on the start which doesn't have
1502 // visual impact. ( #3231 ) 1738 // visual impact. ( http://dev.ckeditor.com/ticket/3231 )
1503 while ( 1 ) { 1739 while ( 1 ) {
1504 var startContainer = range.startContainer, 1740 var startContainer = range.startContainer,
1505 startOffset = range.startOffset; 1741 startOffset = range.startOffset;
1506 // Limit the fix only to non-block elements.(#3950) 1742 // Limit the fix only to non-block elements.(http://dev.ckeditor.com/ticket/3950)
1507 if ( startOffset == ( startContainer.getChildCount ? startContainer.getChildCount() : startContainer.getLength() ) && !startContainer.isBlockBoundary() ) 1743 if ( startOffset == ( startContainer.getChildCount ? startContainer.getChildCount() : startContainer.getLength() ) && !startContainer.isBlockBoundary() )
1508 range.setStartAfter( startContainer ); 1744 range.setStartAfter( startContainer );
1509 else 1745 else
@@ -1545,7 +1781,7 @@
1545 * var element = editor.getSelection().getSelectedElement(); 1781 * var element = editor.getSelection().getSelectedElement();
1546 * alert( element.getName() ); 1782 * alert( element.getName() );
1547 * 1783 *
1548 * @returns {CKEDITOR.dom.element} The selected element. Null if no 1784 * @returns {CKEDITOR.dom.element/null} The selected element. `null` if no
1549 * selection is available or the selection type is not {@link CKEDITOR#SELECTION_ELEMENT}. 1785 * selection is available or the selection type is not {@link CKEDITOR#SELECTION_ELEMENT}.
1550 */ 1786 */
1551 getSelectedElement: function() { 1787 getSelectedElement: function() {
@@ -1628,7 +1864,7 @@
1628 1864
1629 if ( restore ) { 1865 if ( restore ) {
1630 var selectedElement = this.getSelectedElement(), 1866 var selectedElement = this.getSelectedElement(),
1631 ranges = !selectedElement && this.getRanges(), 1867 ranges = this.getRanges(),
1632 faked = this.isFake; 1868 faked = this.isFake;
1633 } 1869 }
1634 1870
@@ -1642,7 +1878,10 @@
1642 if ( !( common && common.getAscendant( 'body', 1 ) ) ) 1878 if ( !( common && common.getAscendant( 'body', 1 ) ) )
1643 return; 1879 return;
1644 1880
1645 if ( faked ) 1881 if ( isTableSelection( ranges ) ) {
1882 // Tables have it's own selection method.
1883 performFakeTableSelection.call( this, ranges );
1884 } else if ( faked )
1646 this.fake( selectedElement ); 1885 this.fake( selectedElement );
1647 else if ( selectedElement ) 1886 else if ( selectedElement )
1648 this.selectElement( selectedElement ); 1887 this.selectElement( selectedElement );
@@ -1714,7 +1953,7 @@
1714 // Check if there's a hiddenSelectionContainer in editable at some index. 1953 // Check if there's a hiddenSelectionContainer in editable at some index.
1715 // Some ranges may be anchored after the hiddenSelectionContainer and, 1954 // Some ranges may be anchored after the hiddenSelectionContainer and,
1716 // once the container is removed while resetting the selection, they 1955 // once the container is removed while resetting the selection, they
1717 // may need new endOffset (one element less within the range) (#11021 #11393). 1956 // may need new endOffset (one element less within the range) (http://dev.ckeditor.com/ticket/11021 http://dev.ckeditor.com/ticket/11393).
1718 if ( hadHiddenSelectionContainer ) 1957 if ( hadHiddenSelectionContainer )
1719 fixRangesAfterHiddenSelectionContainer( ranges, this.root ); 1958 fixRangesAfterHiddenSelectionContainer( ranges, this.root );
1720 1959
@@ -1742,6 +1981,15 @@
1742 return; 1981 return;
1743 } 1982 }
1744 1983
1984 // Handle special case - fake selection of table cells.
1985 if ( editor && editor.plugins.tableselection &&
1986 CKEDITOR.plugins.tableselection.isSupportedEnvironment &&
1987 isTableSelection( ranges ) && !isSelectingTable
1988 ) {
1989 performFakeTableSelection.call( this, ranges );
1990 return;
1991 }
1992
1745 if ( isMSSelection ) { 1993 if ( isMSSelection ) {
1746 var notWhitespaces = CKEDITOR.dom.walker.whitespaces( true ), 1994 var notWhitespaces = CKEDITOR.dom.walker.whitespaces( true ),
1747 fillerTextRegex = /\ufeff|\u00a0/, 1995 fillerTextRegex = /\ufeff|\u00a0/,
@@ -1775,7 +2023,7 @@
1775 if ( range.startContainer.type == CKEDITOR.NODE_ELEMENT && range.startContainer.getName() in nonCells || 2023 if ( range.startContainer.type == CKEDITOR.NODE_ELEMENT && range.startContainer.getName() in nonCells ||
1776 range.endContainer.type == CKEDITOR.NODE_ELEMENT && range.endContainer.getName() in nonCells ) { 2024 range.endContainer.type == CKEDITOR.NODE_ELEMENT && range.endContainer.getName() in nonCells ) {
1777 range.shrink( CKEDITOR.NODE_ELEMENT, true ); 2025 range.shrink( CKEDITOR.NODE_ELEMENT, true );
1778 // The range might get collapsed (#7975). Update cached variable. 2026 // The range might get collapsed (http://dev.ckeditor.com/ticket/7975). Update cached variable.
1779 collapsed = range.collapsed; 2027 collapsed = range.collapsed;
1780 } 2028 }
1781 2029
@@ -1817,18 +2065,18 @@
1817 2065
1818 // Append a temporary <span>&#65279;</span> before the selection. 2066 // Append a temporary <span>&#65279;</span> before the selection.
1819 // This is needed to avoid IE destroying selections inside empty 2067 // This is needed to avoid IE destroying selections inside empty
1820 // inline elements, like <b></b> (#253). 2068 // inline elements, like <b></b> (http://dev.ckeditor.com/ticket/253).
1821 // It is also needed when placing the selection right after an inline 2069 // It is also needed when placing the selection right after an inline
1822 // element to avoid the selection moving inside of it. 2070 // element to avoid the selection moving inside of it.
1823 dummySpan = range.document.createElement( 'span' ); 2071 dummySpan = range.document.createElement( 'span' );
1824 dummySpan.setHtml( '&#65279;' ); // Zero Width No-Break Space (U+FEFF). See #1359. 2072 dummySpan.setHtml( '&#65279;' ); // Zero Width No-Break Space (U+FEFF). See http://dev.ckeditor.com/ticket/1359.
1825 dummySpan.insertBefore( startNode ); 2073 dummySpan.insertBefore( startNode );
1826 2074
1827 if ( isStartMarkerAlone ) { 2075 if ( isStartMarkerAlone ) {
1828 // To expand empty blocks or line spaces after <br>, we need 2076 // To expand empty blocks or line spaces after <br>, we need
1829 // instead to have any char, which will be later deleted using the 2077 // instead to have any char, which will be later deleted using the
1830 // selection. 2078 // selection.
1831 // \ufeff = Zero Width No-Break Space (U+FEFF). (#1359) 2079 // \ufeff = Zero Width No-Break Space (U+FEFF). (http://dev.ckeditor.com/ticket/1359)
1832 range.document.createText( '\ufeff' ).insertBefore( startNode ); 2080 range.document.createText( '\ufeff' ).insertBefore( startNode );
1833 } 2081 }
1834 } 2082 }
@@ -1860,7 +2108,7 @@
1860 } else { 2108 } else {
1861 var sel = this.getNative(); 2109 var sel = this.getNative();
1862 2110
1863 // getNative() returns null if iframe is "display:none" in FF. (#6577) 2111 // getNative() returns null if iframe is "display:none" in FF. (http://dev.ckeditor.com/ticket/6577)
1864 if ( !sel ) 2112 if ( !sel )
1865 return; 2113 return;
1866 2114
@@ -1876,7 +2124,7 @@
1876 between.setStart( left.endContainer, left.endOffset ); 2124 between.setStart( left.endContainer, left.endOffset );
1877 between.setEnd( right.startContainer, right.startOffset ); 2125 between.setEnd( right.startContainer, right.startOffset );
1878 2126
1879 // Don't confused by Firefox adjancent multi-ranges 2127 // Don't confused by Firefox adjacent multi-ranges
1880 // introduced by table cells selection. 2128 // introduced by table cells selection.
1881 if ( !between.collapsed ) { 2129 if ( !between.collapsed ) {
1882 between.shrink( CKEDITOR.NODE_ELEMENT, true ); 2130 between.shrink( CKEDITOR.NODE_ELEMENT, true );
@@ -1885,7 +2133,7 @@
1885 2133
1886 // The following cases has to be considered: 2134 // The following cases has to be considered:
1887 // 1. <span contenteditable="false">[placeholder]</span> 2135 // 1. <span contenteditable="false">[placeholder]</span>
1888 // 2. <input contenteditable="false" type="radio"/> (#6621) 2136 // 2. <input contenteditable="false" type="radio"/> (http://dev.ckeditor.com/ticket/6621)
1889 if ( ancestor.isReadOnly() || enclosed && enclosed.isReadOnly() ) { 2137 if ( ancestor.isReadOnly() || enclosed && enclosed.isReadOnly() ) {
1890 right.setStart( left.startContainer, left.startOffset ); 2138 right.setStart( left.startContainer, left.startOffset );
1891 ranges.splice( i--, 1 ); 2139 ranges.splice( i--, 1 );
@@ -1900,7 +2148,7 @@
1900 2148
1901 if ( range.collapsed && CKEDITOR.env.webkit && rangeRequiresFix( range ) ) { 2149 if ( range.collapsed && CKEDITOR.env.webkit && rangeRequiresFix( range ) ) {
1902 // Append a zero-width space so WebKit will not try to 2150 // Append a zero-width space so WebKit will not try to
1903 // move the selection by itself (#1272). 2151 // move the selection by itself (http://dev.ckeditor.com/ticket/1272).
1904 var fillingChar = createFillingCharSequenceNode( this.root ); 2152 var fillingChar = createFillingCharSequenceNode( this.root );
1905 range.insertNode( fillingChar ); 2153 range.insertNode( fillingChar );
1906 2154
@@ -1954,14 +2202,20 @@
1954 * displayed to the user. 2202 * displayed to the user.
1955 * 2203 *
1956 * @param {CKEDITOR.dom.element} element The element to be "selected". 2204 * @param {CKEDITOR.dom.element} element The element to be "selected".
2205 * @param {String} [ariaLabel] A string to be used by the screen reader to describe the selection.
1957 */ 2206 */
1958 fake: function( element ) { 2207 fake: function( element, ariaLabel ) {
1959 var editor = this.root.editor; 2208 var editor = this.root.editor;
1960 2209
2210 // Attempt to retrieve aria-label if possible (http://dev.ckeditor.com/ticket/14539).
2211 if ( ariaLabel === undefined && element.hasAttribute( 'aria-label' ) ) {
2212 ariaLabel = element.getAttribute( 'aria-label' );
2213 }
2214
1961 // Cleanup after previous selection - e.g. remove hidden sel container. 2215 // Cleanup after previous selection - e.g. remove hidden sel container.
1962 this.reset(); 2216 this.reset();
1963 2217
1964 hideSelection( editor ); 2218 hideSelection( editor, ariaLabel );
1965 2219
1966 // Set this value after executing hiseSelection, because it may 2220 // Set this value after executing hiseSelection, because it may
1967 // cause reset() which overwrites cache. 2221 // cause reset() which overwrites cache.
@@ -2012,6 +2266,38 @@
2012 }, 2266 },
2013 2267
2014 /** 2268 /**
2269 * Checks if the selection contains an HTML element inside a table.
2270 * Returns `false` for text selection inside a table (e.g. it will return `false`
2271 * for text selected in one cell).
2272 *
2273 * editor.getSelection().isInTable();
2274 *
2275 * @since 4.7.0
2276 * @param {Boolean} [allowPartialSelection=false] Whether a partial cell selection should be included.
2277 * Added in 4.7.2.
2278 * @returns {Boolean}
2279 */
2280 isInTable: function( allowPartialSelection ) {
2281 return isTableSelection( this.getRanges(), allowPartialSelection );
2282 },
2283
2284 /**
2285 * Checks if the selection contains only one range which is collapsed.
2286 *
2287 * if ( editor.getSelection().isCollapsed() ) {
2288 * // Do something when the selection is collapsed.
2289 * }
2290 *
2291 * @since 4.7.3
2292 * @returns {Boolean}
2293 */
2294 isCollapsed: function() {
2295 var ranges = this.getRanges();
2296
2297 return ranges.length === 1 && ranges[ 0 ].collapsed;
2298 },
2299
2300 /**
2015 * Creates a bookmark for each range of this selection (from {@link #getRanges}) 2301 * Creates a bookmark for each range of this selection (from {@link #getRanges})
2016 * by calling the {@link CKEDITOR.dom.range#createBookmark} method, 2302 * by calling the {@link CKEDITOR.dom.range#createBookmark} method,
2017 * with extra care taken to avoid interference among those ranges. The arguments 2303 * with extra care taken to avoid interference among those ranges. The arguments
@@ -2064,17 +2350,19 @@
2064 2350
2065 // It may happen that the content change during loading, before selection is set so bookmark leads to text node. 2351 // It may happen that the content change during loading, before selection is set so bookmark leads to text node.
2066 if ( bookmarks.isFake ) { 2352 if ( bookmarks.isFake ) {
2067 node = ranges[ 0 ].getEnclosedNode(); 2353 node = isTableSelection( ranges ) ? ranges[ 0 ]._getTableElement() : ranges[ 0 ].getEnclosedNode();
2354
2068 if ( !node || node.type != CKEDITOR.NODE_ELEMENT ) { 2355 if ( !node || node.type != CKEDITOR.NODE_ELEMENT ) {
2069 CKEDITOR.warn( 'selection-not-fake' ); 2356 CKEDITOR.warn( 'selection-not-fake' );
2070 bookmarks.isFake = 0; 2357 bookmarks.isFake = 0;
2071 } 2358 }
2072 } 2359 }
2073 2360
2074 if ( bookmarks.isFake ) 2361 if ( bookmarks.isFake && !isTableSelection( ranges ) ) {
2075 this.fake( node ); 2362 this.fake( node );
2076 else 2363 } else {
2077 this.selectRanges( ranges ); 2364 this.selectRanges( ranges );
2365 }
2078 2366
2079 return this; 2367 return this;
2080 }, 2368 },
@@ -2111,7 +2399,7 @@
2111 * Remove all the selection ranges from the document. 2399 * Remove all the selection ranges from the document.
2112 */ 2400 */
2113 removeAllRanges: function() { 2401 removeAllRanges: function() {
2114 // Don't clear selection outside this selection's root (#11500). 2402 // Don't clear selection outside this selection's root (http://dev.ckeditor.com/ticket/11500).
2115 if ( this.getType() == CKEDITOR.SELECTION_NONE ) 2403 if ( this.getType() == CKEDITOR.SELECTION_NONE )
2116 return; 2404 return;
2117 2405
diff --git a/sources/core/skin.js b/sources/core/skin.js
index 98b8536..290157d 100644
--- a/sources/core/skin.js
+++ b/sources/core/skin.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -125,7 +125,7 @@
125 offset = overrideOffset || ( icon && icon.offset ); 125 offset = overrideOffset || ( icon && icon.offset );
126 bgsize = overrideBgsize || ( icon && icon.bgsize ) || '16px'; 126 bgsize = overrideBgsize || ( icon && icon.bgsize ) || '16px';
127 127
128 // If we use apostrophes in background-image, we must escape apostrophes in path (just to be sure). (#13361) 128 // If we use apostrophes in background-image, we must escape apostrophes in path (just to be sure). (http://dev.ckeditor.com/ticket/13361)
129 if ( path ) 129 if ( path )
130 path = path.replace( /'/g, '\\\'' ); 130 path = path.replace( /'/g, '\\\'' );
131 131
diff --git a/sources/core/style.js b/sources/core/style.js
index 09b117b..b3cf0bc 100644
--- a/sources/core/style.js
+++ b/sources/core/style.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -235,7 +235,7 @@ CKEDITOR.STYLE_OBJECT = 3;
235 var initialEnterMode = this._.enterMode; 235 var initialEnterMode = this._.enterMode;
236 236
237 // Before CKEditor 4.4 style knew nothing about editor, so in order to provide enterMode 237 // Before CKEditor 4.4 style knew nothing about editor, so in order to provide enterMode
238 // which should be used developers were forced to hack the style object (see #10190). 238 // which should be used developers were forced to hack the style object (see http://dev.ckeditor.com/ticket/10190).
239 // Since CKEditor 4.4 style knows about editor (at least when it's being applied/removed), but we 239 // Since CKEditor 4.4 style knows about editor (at least when it's being applied/removed), but we
240 // use _.enterMode for backward compatibility with those hacks. 240 // use _.enterMode for backward compatibility with those hacks.
241 // Note: we should not change style's enter mode if it was already set. 241 // Note: we should not change style's enter mode if it was already set.
@@ -569,7 +569,7 @@ CKEDITOR.STYLE_OBJECT = 3;
569 var styleVal = stylesDef[ style ], 569 var styleVal = stylesDef[ style ],
570 text = ( style + ':' + styleVal ).replace( semicolonFixRegex, ';' ); 570 text = ( style + ':' + styleVal ).replace( semicolonFixRegex, ';' );
571 571
572 // Some browsers don't support 'inherit' property value, leave them intact. (#5242) 572 // Some browsers don't support 'inherit' property value, leave them intact. (http://dev.ckeditor.com/ticket/5242)
573 if ( styleVal == 'inherit' ) 573 if ( styleVal == 'inherit' )
574 specialStylesText += text; 574 specialStylesText += text;
575 else 575 else
@@ -1024,7 +1024,7 @@ CKEDITOR.STYLE_OBJECT = 3;
1024 if ( !CKEDITOR.env.ie ) 1024 if ( !CKEDITOR.env.ie )
1025 styleNode.$.normalize(); 1025 styleNode.$.normalize();
1026 } 1026 }
1027 // Style already inherit from parents, left just to clear up any internal overrides. (#5931) 1027 // Style already inherit from parents, left just to clear up any internal overrides. (http://dev.ckeditor.com/ticket/5931)
1028 else { 1028 else {
1029 styleNode = new CKEDITOR.dom.element( 'span' ); 1029 styleNode = new CKEDITOR.dom.element( 'span' );
1030 styleRange.extractContents().appendTo( styleNode ); 1030 styleRange.extractContents().appendTo( styleNode );
@@ -1042,7 +1042,7 @@ CKEDITOR.STYLE_OBJECT = 3;
1042 // Remove the bookmark nodes. 1042 // Remove the bookmark nodes.
1043 range.moveToBookmark( boundaryNodes ); 1043 range.moveToBookmark( boundaryNodes );
1044 1044
1045 // Minimize the result range to exclude empty text nodes. (#5374) 1045 // Minimize the result range to exclude empty text nodes. (http://dev.ckeditor.com/ticket/5374)
1046 range.shrink( CKEDITOR.SHRINK_TEXT ); 1046 range.shrink( CKEDITOR.SHRINK_TEXT );
1047 1047
1048 // Get inside the remaining element if range.shrink( TEXT ) has failed because of non-editable elements inside. 1048 // Get inside the remaining element if range.shrink( TEXT ) has failed because of non-editable elements inside.
@@ -1058,27 +1058,31 @@ CKEDITOR.STYLE_OBJECT = 3;
1058 range.enlarge( CKEDITOR.ENLARGE_INLINE, 1 ); 1058 range.enlarge( CKEDITOR.ENLARGE_INLINE, 1 );
1059 1059
1060 var bookmark = range.createBookmark(), 1060 var bookmark = range.createBookmark(),
1061 startNode = bookmark.startNode; 1061 startNode = bookmark.startNode,
1062 alwaysRemoveElement = this._.definition.alwaysRemoveElement;
1062 1063
1063 if ( range.collapsed ) { 1064 if ( range.collapsed ) {
1064 var startPath = new CKEDITOR.dom.elementPath( startNode.getParent(), range.root ), 1065 var startPath = new CKEDITOR.dom.elementPath( startNode.getParent(), range.root ),
1065 // The topmost element in elementspatch which we should jump out of. 1066 // The topmost element in elements path which we should jump out of.
1066 boundaryElement; 1067 boundaryElement;
1067 1068
1068
1069 for ( var i = 0, element; i < startPath.elements.length && ( element = startPath.elements[ i ] ); i++ ) { 1069 for ( var i = 0, element; i < startPath.elements.length && ( element = startPath.elements[ i ] ); i++ ) {
1070 // 1. If it's collaped inside text nodes, try to remove the style from the whole element. 1070 // 1. If it's collaped inside text nodes, try to remove the style from the whole element.
1071 // 1071 //
1072 // 2. Otherwise if it's collapsed on element boundaries, moving the selection 1072 // 2. Otherwise if it's collapsed on element boundaries, moving the selection
1073 // outside the styles instead of removing the whole tag, 1073 // outside the styles instead of removing the whole tag,
1074 // also make sure other inner styles were well preserverd.(#3309) 1074 // also make sure other inner styles were well preserved.(http://dev.ckeditor.com/ticket/3309)
1075 if ( element == startPath.block || element == startPath.blockLimit ) 1075 //
1076 // 3. Force removing the element even if it's an boundary element when alwaysRemoveElement is true.
1077 // Without it, the links won't be unlinked if the cursor is placed right before/after it. (http://dev.ckeditor.com/ticket/13062)
1078 if ( element == startPath.block || element == startPath.blockLimit ) {
1076 break; 1079 break;
1080 }
1077 1081
1078 if ( this.checkElementRemovable( element ) ) { 1082 if ( this.checkElementRemovable( element ) ) {
1079 var isStart; 1083 var isStart;
1080 1084
1081 if ( range.collapsed && ( range.checkBoundaryOfElement( element, CKEDITOR.END ) || ( isStart = range.checkBoundaryOfElement( element, CKEDITOR.START ) ) ) ) { 1085 if ( !alwaysRemoveElement && range.collapsed && ( range.checkBoundaryOfElement( element, CKEDITOR.END ) || ( isStart = range.checkBoundaryOfElement( element, CKEDITOR.START ) ) ) ) {
1082 boundaryElement = element; 1086 boundaryElement = element;
1083 boundaryElement.match = isStart ? 'start' : 'end'; 1087 boundaryElement.match = isStart ? 'start' : 'end';
1084 } else { 1088 } else {
@@ -1087,10 +1091,11 @@ CKEDITOR.STYLE_OBJECT = 3;
1087 // no difference that they're separate entities in the DOM tree. So, merge 1091 // no difference that they're separate entities in the DOM tree. So, merge
1088 // them before removal. 1092 // them before removal.
1089 element.mergeSiblings(); 1093 element.mergeSiblings();
1090 if ( element.is( this.element ) ) 1094 if ( element.is( this.element ) ) {
1091 removeFromElement.call( this, element ); 1095 removeFromElement.call( this, element );
1092 else 1096 } else {
1093 removeOverrides( element, getOverrides( this )[ element.getName() ] ); 1097 removeOverrides( element, getOverrides( this )[ element.getName() ] );
1098 }
1094 } 1099 }
1095 } 1100 }
1096 } 1101 }
@@ -1235,7 +1240,7 @@ CKEDITOR.STYLE_OBJECT = 3;
1235 } 1240 }
1236 1241
1237 function applyObjectStyle( range ) { 1242 function applyObjectStyle( range ) {
1238 // Selected or parent element. (#9651) 1243 // Selected or parent element. (http://dev.ckeditor.com/ticket/9651)
1239 var start = range.getEnclosedNode() || range.getCommonAncestor( false, true ), 1244 var start = range.getEnclosedNode() || range.getCommonAncestor( false, true ),
1240 element = new CKEDITOR.dom.elementPath( start, range.root ).contains( this.element, 1 ); 1245 element = new CKEDITOR.dom.elementPath( start, range.root ).contains( this.element, 1 );
1241 1246
@@ -1276,7 +1281,7 @@ CKEDITOR.STYLE_OBJECT = 3;
1276 var iterator = range.createIterator(); 1281 var iterator = range.createIterator();
1277 iterator.enforceRealBlocks = true; 1282 iterator.enforceRealBlocks = true;
1278 1283
1279 // make recognize <br /> tag as a separator in ENTER_BR mode (#5121) 1284 // make recognize <br /> tag as a separator in ENTER_BR mode (http://dev.ckeditor.com/ticket/5121)
1280 if ( this._.enterMode ) 1285 if ( this._.enterMode )
1281 iterator.enlargeBr = ( this._.enterMode != CKEDITOR.ENTER_BR ); 1286 iterator.enlargeBr = ( this._.enterMode != CKEDITOR.ENTER_BR );
1282 1287
@@ -1326,7 +1331,7 @@ CKEDITOR.STYLE_OBJECT = 3;
1326 1331
1327 // Replace the original block with new one, with special treatment 1332 // Replace the original block with new one, with special treatment
1328 // for <pre> blocks to make sure content format is well preserved, and merging/splitting adjacent 1333 // for <pre> blocks to make sure content format is well preserved, and merging/splitting adjacent
1329 // when necessary. (#3188) 1334 // when necessary. (http://dev.ckeditor.com/ticket/3188)
1330 function replaceBlock( block, newBlock ) { 1335 function replaceBlock( block, newBlock ) {
1331 // Block is to be removed, create a temp element to 1336 // Block is to be removed, create a temp element to
1332 // save contents. 1337 // save contents.
@@ -1502,11 +1507,11 @@ CKEDITOR.STYLE_OBJECT = 3;
1502 1507
1503 // Remove definition attributes/style from the elemnt. 1508 // Remove definition attributes/style from the elemnt.
1504 for ( var attName in attributes ) { 1509 for ( var attName in attributes ) {
1505 // The 'class' element value must match (#1318). 1510 // The 'class' element value must match (http://dev.ckeditor.com/ticket/1318).
1506 if ( ( attName == 'class' || this._.definition.fullMatch ) && element.getAttribute( attName ) != normalizeProperty( attName, attributes[ attName ] ) ) 1511 if ( ( attName == 'class' || this._.definition.fullMatch ) && element.getAttribute( attName ) != normalizeProperty( attName, attributes[ attName ] ) )
1507 continue; 1512 continue;
1508 1513
1509 // Do not touch data-* attributes (#11011) (#11258). 1514 // Do not touch data-* attributes (http://dev.ckeditor.com/ticket/11011) (http://dev.ckeditor.com/ticket/11258).
1510 if ( keepDataAttrs && attName.slice( 0, 5 ) == 'data-' ) 1515 if ( keepDataAttrs && attName.slice( 0, 5 ) == 'data-' )
1511 continue; 1516 continue;
1512 1517
@@ -1515,7 +1520,7 @@ CKEDITOR.STYLE_OBJECT = 3;
1515 } 1520 }
1516 1521
1517 for ( var styleName in styles ) { 1522 for ( var styleName in styles ) {
1518 // Full match style insist on having fully equivalence. (#5018) 1523 // Full match style insist on having fully equivalence. (http://dev.ckeditor.com/ticket/5018)
1519 if ( this._.definition.fullMatch && element.getStyle( styleName ) != normalizeProperty( styleName, styles[ styleName ], true ) ) 1524 if ( this._.definition.fullMatch && element.getStyle( styleName ) != normalizeProperty( styleName, styles[ styleName ], true ) )
1520 continue; 1525 continue;
1521 1526
@@ -1649,7 +1654,7 @@ CKEDITOR.STYLE_OBJECT = 3;
1649 // Create the element. 1654 // Create the element.
1650 el = new CKEDITOR.dom.element( elementName, targetDocument ); 1655 el = new CKEDITOR.dom.element( elementName, targetDocument );
1651 1656
1652 // #6226: attributes should be copied before the new ones are applied 1657 // http://dev.ckeditor.com/ticket/6226: attributes should be copied before the new ones are applied
1653 if ( element ) 1658 if ( element )
1654 element.copyAttributes( el ); 1659 element.copyAttributes( el );
1655 1660
@@ -1794,15 +1799,28 @@ CKEDITOR.STYLE_OBJECT = 3;
1794 // is treated as a wildcard which will match any value. 1799 // is treated as a wildcard which will match any value.
1795 // @param {Object/String} source 1800 // @param {Object/String} source
1796 // @param {Object/String} target 1801 // @param {Object/String} target
1802 // @returns {Boolean}
1797 function compareCssText( source, target ) { 1803 function compareCssText( source, target ) {
1804 function filter( string, propertyName ) {
1805 // In case of font-families we'll skip quotes. (http://dev.ckeditor.com/ticket/10750)
1806 return propertyName.toLowerCase() == 'font-family' ? string.replace( /["']/g, '' ) : string;
1807 }
1808
1798 if ( typeof source == 'string' ) 1809 if ( typeof source == 'string' )
1799 source = CKEDITOR.tools.parseCssText( source ); 1810 source = CKEDITOR.tools.parseCssText( source );
1800 if ( typeof target == 'string' ) 1811 if ( typeof target == 'string' )
1801 target = CKEDITOR.tools.parseCssText( target, true ); 1812 target = CKEDITOR.tools.parseCssText( target, true );
1802 1813
1803 for ( var name in source ) { 1814 for ( var name in source ) {
1804 if ( !( name in target && ( target[ name ] == source[ name ] || source[ name ] == 'inherit' || target[ name ] == 'inherit' ) ) ) 1815 if ( !( name in target ) ) {
1805 return false; 1816 return false;
1817 }
1818
1819 if ( !( filter( target[ name ], name ) == filter( source[ name ], name ) ||
1820 source[ name ] == 'inherit' ||
1821 target[ name ] == 'inherit' ) ) {
1822 return false;
1823 }
1806 } 1824 }
1807 return true; 1825 return true;
1808 } 1826 }
@@ -1811,13 +1829,25 @@ CKEDITOR.STYLE_OBJECT = 3;
1811 var doc = selection.document, 1829 var doc = selection.document,
1812 ranges = selection.getRanges(), 1830 ranges = selection.getRanges(),
1813 func = remove ? this.removeFromRange : this.applyToRange, 1831 func = remove ? this.removeFromRange : this.applyToRange,
1814 range; 1832 originalRanges,
1833 range,
1834 i;
1835
1836 // In case of fake table selection, we would like to apply all styles and then select
1837 // the original ranges. Otherwise browsers would complain about discontiguous selection.
1838 if ( selection.isFake && selection.isInTable() ) {
1839 originalRanges = [];
1840
1841 for ( i = 0; i < ranges.length; i++ ) {
1842 originalRanges.push( ranges[ i ].clone() );
1843 }
1844 }
1815 1845
1816 var iterator = ranges.createIterator(); 1846 var iterator = ranges.createIterator();
1817 while ( ( range = iterator.getNextRange() ) ) 1847 while ( ( range = iterator.getNextRange() ) )
1818 func.call( this, range, editor ); 1848 func.call( this, range, editor );
1819 1849
1820 selection.selectRanges( ranges ); 1850 selection.selectRanges( originalRanges || ranges );
1821 doc.removeCustomData( 'doc_processing_style' ); 1851 doc.removeCustomData( 'doc_processing_style' );
1822 } 1852 }
1823} )(); 1853} )();
@@ -1888,7 +1918,7 @@ CKEDITOR.styleCommand.prototype.exec = function( editor ) {
1888 */ 1918 */
1889CKEDITOR.stylesSet = new CKEDITOR.resourceManager( '', 'stylesSet' ); 1919CKEDITOR.stylesSet = new CKEDITOR.resourceManager( '', 'stylesSet' );
1890 1920
1891// Backward compatibility (#5025). 1921// Backward compatibility (http://dev.ckeditor.com/ticket/5025).
1892CKEDITOR.addStylesSet = CKEDITOR.tools.bind( CKEDITOR.stylesSet.add, CKEDITOR.stylesSet ); 1922CKEDITOR.addStylesSet = CKEDITOR.tools.bind( CKEDITOR.stylesSet.add, CKEDITOR.stylesSet );
1893CKEDITOR.loadStylesSet = function( name, url, callback ) { 1923CKEDITOR.loadStylesSet = function( name, url, callback ) {
1894 CKEDITOR.stylesSet.addExternal( name, url, '' ); 1924 CKEDITOR.stylesSet.addExternal( name, url, '' );
@@ -1991,7 +2021,7 @@ CKEDITOR.tools.extend( CKEDITOR.editor.prototype, {
1991 return; 2021 return;
1992 } 2022 }
1993 2023
1994 // #5352 Allow to define the styles directly in the config object 2024 // http://dev.ckeditor.com/ticket/5352 Allow to define the styles directly in the config object
1995 if ( configStyleSet instanceof Array ) { 2025 if ( configStyleSet instanceof Array ) {
1996 editor._.stylesDefinitions = configStyleSet; 2026 editor._.stylesDefinitions = configStyleSet;
1997 callback( configStyleSet ); 2027 callback( configStyleSet );
diff --git a/sources/core/template.js b/sources/core/template.js
index a3fe55b..a627c34 100644
--- a/sources/core/template.js
+++ b/sources/core/template.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -9,11 +9,7 @@
9 */ 9 */
10 10
11( function() { 11( function() {
12 var cache = {}, 12 var rePlaceholder = /{([^}]+)}/g;
13 rePlaceholder = /{([^}]+)}/g,
14 reEscapableChars = /([\\'])/g,
15 reNewLine = /\n/g,
16 reCarriageReturn = /\r/g;
17 13
18 /** 14 /**
19 * Lightweight template used to build the output string from variables. 15 * Lightweight template used to build the output string from variables.
@@ -27,42 +23,35 @@
27 * @param {String} source The template source. 23 * @param {String} source The template source.
28 */ 24 */
29 CKEDITOR.template = function( source ) { 25 CKEDITOR.template = function( source ) {
30 // Builds an optimized function body for the output() method, focused on performance. 26 /**
31 // For example, if we have this "source": 27 * The current template source.
32 // '<div style="{style}">{editorName}</div>' 28 *
33 // ... the resulting function body will be (apart from the "buffer" handling): 29 * @readonly
34 // return [ '<div style="', data['style'] == undefined ? '{style}' : data['style'], '">', data['editorName'] == undefined ? '{editorName}' : data['editorName'], '</div>' ].join(''); 30 * @member CKEDITOR.template
31 * @property {String}
32 */
33 this.source = String( source );
34 };
35 35
36 // Try to read from the cache. 36 /**
37 if ( cache[ source ] ) 37 * Processes the template, filling its variables with the provided data.
38 this.output = cache[ source ]; 38 *
39 else { 39 * @method
40 var fn = source 40 * @member CKEDITOR.template
41 // Escape chars like slash "\" or single quote "'". 41 * @param {Object} data An object containing properties whose values will be
42 .replace( reEscapableChars, '\\$1' ) 42 * used to fill the template variables. The property names must match the
43 .replace( reNewLine, '\\n' ) 43 * template variables names. Variables without matching properties will be
44 .replace( reCarriageReturn, '\\r' ) 44 * kept untouched.
45 // Inject the template keys replacement. 45 * @param {Array} [buffer] An array that the output data will be pushed into.
46 .replace( rePlaceholder, function( m, key ) { 46 * The number of entries appended to the array is unknown.
47 return "',data['" + key + "']==undefined?'{" + key + "}':data['" + key + "'],'"; 47 * @returns {String/Number} If `buffer` has not been provided, the processed
48 } ); 48 * template output data; otherwise the new length of `buffer`.
49 */
50 CKEDITOR.template.prototype.output = function( data, buffer ) {
51 var output = this.source.replace( rePlaceholder, function( fullMatch, dataKey ) {
52 return data[ dataKey ] !== undefined ? data[ dataKey ] : fullMatch;
53 } );
49 54
50 fn = "return buffer?buffer.push('" + fn + "'):['" + fn + "'].join('');"; 55 return buffer ? buffer.push( output ) : output;
51 this.output = cache[ source ] = Function( 'data', 'buffer', fn );
52 }
53 }; 56 };
54} )(); 57} )();
55
56/**
57 * Processes the template, filling its variables with the provided data.
58 *
59 * @method output
60 * @param {Object} data An object containing properties which values will be
61 * used to fill the template variables. The property names must match the
62 * template variables names. Variables without matching properties will be
63 * kept untouched.
64 * @param {Array} [buffer] An array into which the output data will be pushed into.
65 * The number of entries appended to the array is unknown.
66 * @returns {String/Number} If `buffer` has not been provided, the processed
67 * template output data, otherwise the new length of `buffer`.
68 */
diff --git a/sources/core/tools.js b/sources/core/tools.js
index ae5b4d0..a4b736d 100644
--- a/sources/core/tools.js
+++ b/sources/core/tools.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -981,6 +981,23 @@
981 }, 981 },
982 982
983 /** 983 /**
984 * Normalizes hexadecimal notation so that the color string is always 6 characters long and lowercase.
985 *
986 * @param {String} styleText The style data (or just a string containing hex colors) to be converted.
987 * @returns {String} The style data with hex colors normalized.
988 */
989 normalizeHex: function( styleText ) {
990 return styleText.replace( /#(([0-9a-f]{3}){1,2})($|;|\s+)/gi, function( match, hexColor, hexColorPart, separator ) {
991 var normalizedHexColor = hexColor.toLowerCase();
992 if ( normalizedHexColor.length == 3 ) {
993 var parts = normalizedHexColor.split( '' );
994 normalizedHexColor = [ parts[ 0 ], parts[ 0 ], parts[ 1 ], parts[ 1 ], parts[ 2 ], parts[ 2 ] ].join( '' );
995 }
996 return '#' + normalizedHexColor + separator;
997 } );
998 },
999
1000 /**
984 * Turns inline style text properties into one hash. 1001 * Turns inline style text properties into one hash.
985 * 1002 *
986 * @param {String} styleText The style data to be parsed. 1003 * @param {String} styleText The style data to be parsed.
@@ -996,21 +1013,24 @@
996 // Injects the style in a temporary span object, so the browser parses it, 1013 // Injects the style in a temporary span object, so the browser parses it,
997 // retrieving its final format. 1014 // retrieving its final format.
998 var temp = new CKEDITOR.dom.element( 'span' ); 1015 var temp = new CKEDITOR.dom.element( 'span' );
999 temp.setAttribute( 'style', styleText ); 1016 styleText = temp.setAttribute( 'style', styleText ).getAttribute( 'style' ) || '';
1000 styleText = CKEDITOR.tools.convertRgbToHex( temp.getAttribute( 'style' ) || '' ); 1017 }
1018
1019 // Normalize colors.
1020 if ( styleText ) {
1021 styleText = CKEDITOR.tools.normalizeHex( CKEDITOR.tools.convertRgbToHex( styleText ) );
1001 } 1022 }
1002 1023
1003 // IE will leave a single semicolon when failed to parse the style text. (#3891) 1024 // IE will leave a single semicolon when failed to parse the style text. (http://dev.ckeditor.com/ticket/3891)
1004 if ( !styleText || styleText == ';' ) 1025 if ( !styleText || styleText == ';' )
1005 return retval; 1026 return retval;
1006 1027
1007 styleText.replace( /&quot;/g, '"' ).replace( /\s*([^:;\s]+)\s*:\s*([^;]+)\s*(?=;|$)/g, function( match, name, value ) { 1028 styleText.replace( /&quot;/g, '"' ).replace( /\s*([^:;\s]+)\s*:\s*([^;]+)\s*(?=;|$)/g, function( match, name, value ) {
1008 if ( normalize ) { 1029 if ( normalize ) {
1009 name = name.toLowerCase(); 1030 name = name.toLowerCase();
1010 // Normalize font-family property, ignore quotes and being case insensitive. (#7322) 1031 // Drop extra whitespacing from font-family.
1011 // http://www.w3.org/TR/css3-fonts/#font-family-the-font-family-property
1012 if ( name == 'font-family' ) 1032 if ( name == 'font-family' )
1013 value = value.toLowerCase().replace( /["']/g, '' ).replace( /\s*,\s*/g, ',' ); 1033 value = value.replace( /\s*,\s*/g, ',' );
1014 value = CKEDITOR.tools.trim( value ); 1034 value = CKEDITOR.tools.trim( value );
1015 } 1035 }
1016 1036
@@ -1293,6 +1313,67 @@
1293 }, 1313 },
1294 1314
1295 /** 1315 /**
1316 * Converts a keystroke to its string representation. Returns an object with two fields:
1317 *
1318 * * `display` &ndash; A string that should be used for visible labels.
1319 * For Mac devices it uses `⌥` for `ALT`, `⇧` for `SHIFT` and `⌘` for `COMMAND`.
1320 * * `aria` &ndash; A string that should be used for ARIA descriptions.
1321 * It does not use special characters such as `⌥`, `⇧` or `⌘`.
1322 *
1323 * var lang = editor.lang.common.keyboard;
1324 * var shortcut = CKEDITOR.tools.keystrokeToString( lang, CKEDITOR.CTRL + 88 );
1325 * console.log( shortcut.display ); // 'CTRL + X', on Mac '⌘ + X'.
1326 * console.log( shortcut.aria ); // 'CTRL + X', on Mac 'COMMAND + X'.
1327 *
1328 * @since 4.6.0
1329 * @param {Object} lang A language object with the key name translation.
1330 * @param {Number} keystroke The keystroke to convert.
1331 * @returns {{display: String, aria: String}}
1332 */
1333 keystrokeToString: function( lang, keystroke ) {
1334 var special = keystroke & 0xFF0000,
1335 key = keystroke & 0x00FFFF,
1336 isMac = CKEDITOR.env.mac,
1337 CTRL = 17,
1338 CMD = 224,
1339 ALT = 18,
1340 SHIFT = 16,
1341 display = [],
1342 aria = [];
1343
1344
1345 if ( special & CKEDITOR.CTRL ) {
1346 display.push( isMac ? '⌘' : lang[ CTRL ] );
1347 aria.push( isMac ? lang[ CMD ] : lang[ CTRL ] );
1348 }
1349
1350 if ( special & CKEDITOR.ALT ) {
1351 display.push( isMac ? '⌥' : lang[ ALT ] );
1352 aria.push( lang[ ALT ] );
1353 }
1354
1355 if ( special & CKEDITOR.SHIFT ) {
1356 display.push( isMac ? '⇧' : lang[ SHIFT ] );
1357 aria.push( lang[ SHIFT ] );
1358 }
1359
1360 if ( key ) {
1361 if ( lang[ key ] ) {
1362 display.push( lang[ key ] );
1363 aria.push( lang[ key ] );
1364 } else {
1365 display.push( String.fromCharCode( key ) );
1366 aria.push( String.fromCharCode( key ) );
1367 }
1368 }
1369
1370 return {
1371 display: display.join( '+' ),
1372 aria: aria.join( '+' )
1373 };
1374 },
1375
1376 /**
1296 * The data URI of a transparent image. May be used e.g. in HTML as an image source or in CSS in `url()`. 1377 * The data URI of a transparent image. May be used e.g. in HTML as an image source or in CSS in `url()`.
1297 * 1378 *
1298 * @since 4.4 1379 * @since 4.4
@@ -1353,6 +1434,540 @@
1353 } 1434 }
1354 1435
1355 return token; 1436 return token;
1437 },
1438
1439 /**
1440 * Returns an escaped CSS selector. `CSS.escape()` is used if defined, leading digit is escaped otherwise.
1441 *
1442 * @since 4.5.10
1443 * @param {String} selector A CSS selector to escape.
1444 * @returns {String} An escaped selector.
1445 */
1446 escapeCss: function( selector ) {
1447 // Invalid input.
1448 if ( !selector ) {
1449 return '';
1450 }
1451
1452 // CSS.escape() can be used.
1453 if ( window.CSS && CSS.escape ) {
1454 return CSS.escape( selector );
1455 }
1456
1457 // Simple leading digit escape.
1458 if ( !isNaN( parseInt( selector.charAt( 0 ), 10 ) ) ) {
1459 return '\\3' + selector.charAt( 0 ) + ' ' + selector.substring( 1, selector.length );
1460 }
1461
1462 return selector;
1463 },
1464
1465 /**
1466 * Detects which mouse button generated a given DOM event.
1467 *
1468 * @since 4.7.3
1469 * @param {CKEDITOR.dom.event} evt DOM event.
1470 * @returns {Number|Boolean} Returns a number indicating the mouse button or `false`
1471 * if the mouse button cannot be determined.
1472 */
1473 getMouseButton: function( evt ) {
1474 var evtData = evt.data,
1475 domEvent = evtData && evtData.$;
1476
1477 if ( !( evtData && domEvent ) ) {
1478 // Added in case when there's no data available. That's the case in some unit test in built version which
1479 // mock event but doesn't put data object.
1480 return false;
1481 }
1482
1483 if ( CKEDITOR.env.ie && CKEDITOR.env.version < 9 ) {
1484 if ( domEvent.button === 4 ) {
1485 return CKEDITOR.MOUSE_BUTTON_MIDDLE;
1486 } else if ( domEvent.button === 1 ) {
1487 return CKEDITOR.MOUSE_BUTTON_LEFT;
1488 } else {
1489 return CKEDITOR.MOUSE_BUTTON_RIGHT;
1490 }
1491 }
1492
1493 return domEvent.button;
1494 },
1495
1496 /**
1497 * A set of functions for operations on styles.
1498 *
1499 * @property {CKEDITOR.tools.style}
1500 */
1501 style: {
1502 /**
1503 * Methods to parse miscellaneous CSS properties.
1504 *
1505 * @property {CKEDITOR.tools.style.parse}
1506 * @member CKEDITOR.tools.style
1507 */
1508 parse: {
1509 // Color list based on https://www.w3.org/TR/css-color-4/#named-colors.
1510 _colors: {
1511 aliceblue: '#F0F8FF',
1512 antiquewhite: '#FAEBD7',
1513 aqua: '#00FFFF',
1514 aquamarine: '#7FFFD4',
1515 azure: '#F0FFFF',
1516 beige: '#F5F5DC',
1517 bisque: '#FFE4C4',
1518 black: '#000000',
1519 blanchedalmond: '#FFEBCD',
1520 blue: '#0000FF',
1521 blueviolet: '#8A2BE2',
1522 brown: '#A52A2A',
1523 burlywood: '#DEB887',
1524 cadetblue: '#5F9EA0',
1525 chartreuse: '#7FFF00',
1526 chocolate: '#D2691E',
1527 coral: '#FF7F50',
1528 cornflowerblue: '#6495ED',
1529 cornsilk: '#FFF8DC',
1530 crimson: '#DC143C',
1531 cyan: '#00FFFF',
1532 darkblue: '#00008B',
1533 darkcyan: '#008B8B',
1534 darkgoldenrod: '#B8860B',
1535 darkgray: '#A9A9A9',
1536 darkgreen: '#006400',
1537 darkgrey: '#A9A9A9',
1538 darkkhaki: '#BDB76B',
1539 darkmagenta: '#8B008B',
1540 darkolivegreen: '#556B2F',
1541 darkorange: '#FF8C00',
1542 darkorchid: '#9932CC',
1543 darkred: '#8B0000',
1544 darksalmon: '#E9967A',
1545 darkseagreen: '#8FBC8F',
1546 darkslateblue: '#483D8B',
1547 darkslategray: '#2F4F4F',
1548 darkslategrey: '#2F4F4F',
1549 darkturquoise: '#00CED1',
1550 darkviolet: '#9400D3',
1551 deeppink: '#FF1493',
1552 deepskyblue: '#00BFFF',
1553 dimgray: '#696969',
1554 dimgrey: '#696969',
1555 dodgerblue: '#1E90FF',
1556 firebrick: '#B22222',
1557 floralwhite: '#FFFAF0',
1558 forestgreen: '#228B22',
1559 fuchsia: '#FF00FF',
1560 gainsboro: '#DCDCDC',
1561 ghostwhite: '#F8F8FF',
1562 gold: '#FFD700',
1563 goldenrod: '#DAA520',
1564 gray: '#808080',
1565 green: '#008000',
1566 greenyellow: '#ADFF2F',
1567 grey: '#808080',
1568 honeydew: '#F0FFF0',
1569 hotpink: '#FF69B4',
1570 indianred: '#CD5C5C',
1571 indigo: '#4B0082',
1572 ivory: '#FFFFF0',
1573 khaki: '#F0E68C',
1574 lavender: '#E6E6FA',
1575 lavenderblush: '#FFF0F5',
1576 lawngreen: '#7CFC00',
1577 lemonchiffon: '#FFFACD',
1578 lightblue: '#ADD8E6',
1579 lightcoral: '#F08080',
1580 lightcyan: '#E0FFFF',
1581 lightgoldenrodyellow: '#FAFAD2',
1582 lightgray: '#D3D3D3',
1583 lightgreen: '#90EE90',
1584 lightgrey: '#D3D3D3',
1585 lightpink: '#FFB6C1',
1586 lightsalmon: '#FFA07A',
1587 lightseagreen: '#20B2AA',
1588 lightskyblue: '#87CEFA',
1589 lightslategray: '#778899',
1590 lightslategrey: '#778899',
1591 lightsteelblue: '#B0C4DE',
1592 lightyellow: '#FFFFE0',
1593 lime: '#00FF00',
1594 limegreen: '#32CD32',
1595 linen: '#FAF0E6',
1596 magenta: '#FF00FF',
1597 maroon: '#800000',
1598 mediumaquamarine: '#66CDAA',
1599 mediumblue: '#0000CD',
1600 mediumorchid: '#BA55D3',
1601 mediumpurple: '#9370DB',
1602 mediumseagreen: '#3CB371',
1603 mediumslateblue: '#7B68EE',
1604 mediumspringgreen: '#00FA9A',
1605 mediumturquoise: '#48D1CC',
1606 mediumvioletred: '#C71585',
1607 midnightblue: '#191970',
1608 mintcream: '#F5FFFA',
1609 mistyrose: '#FFE4E1',
1610 moccasin: '#FFE4B5',
1611 navajowhite: '#FFDEAD',
1612 navy: '#000080',
1613 oldlace: '#FDF5E6',
1614 olive: '#808000',
1615 olivedrab: '#6B8E23',
1616 orange: '#FFA500',
1617 orangered: '#FF4500',
1618 orchid: '#DA70D6',
1619 palegoldenrod: '#EEE8AA',
1620 palegreen: '#98FB98',
1621 paleturquoise: '#AFEEEE',
1622 palevioletred: '#DB7093',
1623 papayawhip: '#FFEFD5',
1624 peachpuff: '#FFDAB9',
1625 peru: '#CD853F',
1626 pink: '#FFC0CB',
1627 plum: '#DDA0DD',
1628 powderblue: '#B0E0E6',
1629 purple: '#800080',
1630 rebeccapurple: '#663399',
1631 red: '#FF0000',
1632 rosybrown: '#BC8F8F',
1633 royalblue: '#4169E1',
1634 saddlebrown: '#8B4513',
1635 salmon: '#FA8072',
1636 sandybrown: '#F4A460',
1637 seagreen: '#2E8B57',
1638 seashell: '#FFF5EE',
1639 sienna: '#A0522D',
1640 silver: '#C0C0C0',
1641 skyblue: '#87CEEB',
1642 slateblue: '#6A5ACD',
1643 slategray: '#708090',
1644 slategrey: '#708090',
1645 snow: '#FFFAFA',
1646 springgreen: '#00FF7F',
1647 steelblue: '#4682B4',
1648 tan: '#D2B48C',
1649 teal: '#008080',
1650 thistle: '#D8BFD8',
1651 tomato: '#FF6347',
1652 turquoise: '#40E0D0',
1653 violet: '#EE82EE',
1654 wheat: '#F5DEB3',
1655 white: '#FFFFFF',
1656 whitesmoke: '#F5F5F5',
1657 yellow: '#FFFF00',
1658 yellowgreen: '#9ACD32'
1659 },
1660
1661 _borderStyle: [
1662 'none',
1663 'hidden',
1664 'dotted',
1665 'dashed',
1666 'solid',
1667 'double',
1668 'groove',
1669 'ridge',
1670 'inset',
1671 'outset'
1672 ],
1673
1674 _widthRegExp: /^(thin|medium|thick|[\+-]?\d+(\.\d+)?[a-z%]+|[\+-]?0+(\.0+)?|\.\d+[a-z%]+)$/,
1675
1676 _rgbaRegExp: /rgba?\(\s*\d+%?\s*,\s*\d+%?\s*,\s*\d+%?\s*(?:,\s*[0-9.]+\s*)?\)/gi,
1677
1678 _hslaRegExp: /hsla?\(\s*[0-9.]+\s*,\s*\d+%\s*,\s*\d+%\s*(?:,\s*[0-9.]+\s*)?\)/gi,
1679
1680 /**
1681 * Parses the `value` used as a `background` property shorthand and returns information as an object.
1682 *
1683 * **Note:** Currently only the `color` property is extracted. Any other parts will go into the `unprocessed` property.
1684 *
1685 * var background = CKEDITOR.tools.style.parse.background( '#0C0 url(foo.png)' );
1686 * console.log( background );
1687 * // Logs: { color: '#0C0', unprocessed: 'url(foo.png)' }
1688 *
1689 * @param {String} value The value of the `background` property.
1690 * @returns {Object} An object with information extracted from the background.
1691 * @returns {String} return.color The **first** color value found. The color format remains the same as in input.
1692 * @returns {String} return.unprocessed The remaining part of the `value` that has not been processed.
1693 * @member CKEDITOR.tools.style.parse
1694 */
1695 background: function( value ) {
1696 var ret = {},
1697 colors = this._findColor( value );
1698
1699 if ( colors.length ) {
1700 ret.color = colors[ 0 ];
1701
1702 CKEDITOR.tools.array.forEach( colors, function( colorToken ) {
1703 value = value.replace( colorToken, '' );
1704 } );
1705 }
1706
1707 value = CKEDITOR.tools.trim( value );
1708
1709 if ( value ) {
1710 // If anything was left unprocessed include it as unprocessed part.
1711 ret.unprocessed = value;
1712 }
1713
1714 return ret;
1715 },
1716
1717 /**
1718 * Parses the `margin` CSS property shorthand format.
1719 *
1720 * console.log( CKEDITOR.tools.parse.margin( '3px 0 2' ) );
1721 * // Logs: { top: "3px", right: "0", bottom: "2", left: "0" }
1722 *
1723 * @param {String} value The `margin` property value.
1724 * @returns {Object}
1725 * @returns {Number} return.top Top margin.
1726 * @returns {Number} return.right Right margin.
1727 * @returns {Number} return.bottom Bottom margin.
1728 * @returns {Number} return.left Left margin.
1729 * @member CKEDITOR.tools.style.parse
1730 */
1731 margin: function( value ) {
1732 var ret = {};
1733
1734 var widths = value.match( /(?:\-?[\.\d]+(?:%|\w*)|auto|inherit|initial|unset)/g ) || [ '0px' ];
1735
1736 switch ( widths.length ) {
1737 case 1:
1738 mapStyles( [ 0, 0, 0, 0 ] );
1739 break;
1740 case 2:
1741 mapStyles( [ 0, 1, 0, 1 ] );
1742 break;
1743 case 3:
1744 mapStyles( [ 0, 1, 2, 1 ] );
1745 break;
1746 case 4:
1747 mapStyles( [ 0, 1, 2, 3 ] );
1748 break;
1749 }
1750
1751 function mapStyles( map ) {
1752 ret.top = widths[ map[ 0 ] ];
1753 ret.right = widths[ map[ 1 ] ];
1754 ret.bottom = widths[ map[ 2 ] ];
1755 ret.left = widths[ map[ 3 ] ];
1756 }
1757
1758 return ret;
1759 },
1760
1761 /**
1762 * Parses the `border` CSS property shorthand format.
1763 * This CSS property does not support inheritance (https://www.w3.org/TR/css3-background/#the-border-shorthands).
1764 *
1765 * console.log( CKEDITOR.tools.style.parse.border( '3px solid #ffeedd' ) );
1766 * // Logs: { width: "3px", style: "solid", color: "#ffeedd" }
1767 *
1768 * @param {String} value The `border` property value.
1769 * @returns {Object}
1770 * @returns {String} return.width The border-width attribute.
1771 * @returns {String} return.style The border-style attribute.
1772 * @returns {String} return.color The border-color attribute.
1773 * @member CKEDITOR.tools.style.parse
1774 */
1775 border: function( value ) {
1776 var ret = {},
1777 input = value.split( /\s+/ );
1778
1779 CKEDITOR.tools.array.forEach( input, function( val ) {
1780 if ( !ret.color ) {
1781 var parseColor = CKEDITOR.tools.style.parse._findColor( val );
1782 if ( parseColor.length ) {
1783 ret.color = parseColor[ 0 ];
1784 return;
1785 }
1786 }
1787
1788 if ( !ret.style ) {
1789 if ( CKEDITOR.tools.indexOf( CKEDITOR.tools.style.parse._borderStyle, val ) !== -1 ) {
1790 ret.style = val;
1791 return;
1792 }
1793 }
1794
1795 if ( !ret.width ) {
1796 if ( CKEDITOR.tools.style.parse._widthRegExp.test( val ) ) {
1797 ret.width = val;
1798 return;
1799 }
1800 }
1801
1802 } );
1803 return ret;
1804 },
1805
1806 /**
1807 * Searches the `value` for any CSS color occurrences and returns it.
1808 *
1809 * @private
1810 * @param {String} value
1811 * @returns {String[]} An array of matched results.
1812 * @member CKEDITOR.tools.style.parse
1813 */
1814 _findColor: function( value ) {
1815 var ret = [],
1816 arrayTools = CKEDITOR.tools.array;
1817
1818
1819 // Check for rgb(a).
1820 ret = ret.concat( value.match( this._rgbaRegExp ) || [] );
1821
1822 // Check for hsl(a).
1823 ret = ret.concat( value.match( this._hslaRegExp ) || [] );
1824
1825 ret = ret.concat( arrayTools.filter( value.split( /\s+/ ), function( colorEntry ) {
1826 // Check for hex format.
1827 if ( colorEntry.match( /^\#[a-f0-9]{3}(?:[a-f0-9]{3})?$/gi ) ) {
1828 return true;
1829 }
1830
1831 // Check for preset names.
1832 return colorEntry.toLowerCase() in CKEDITOR.tools.style.parse._colors;
1833 } ) );
1834
1835 return ret;
1836 }
1837 }
1838 },
1839
1840 /**
1841 * A set of array helpers.
1842 *
1843 * @property {CKEDITOR.tools.array}
1844 * @member CKEDITOR.tools
1845 */
1846 array: {
1847 /**
1848 * Returns a copy of `array` filtered using the `fn` function. Any elements that the `fn` will return `false` for
1849 * will get removed from the returned array.
1850 *
1851 * var filtered = this.array.filter( [ 0, 1, 2, 3 ], function( value ) {
1852 * // Leave only values equal or greater than 2.
1853 * return value >= 2;
1854 * } );
1855 * console.log( filtered );
1856 * // Logs: [ 2, 3 ]
1857 *
1858 * @param {Array} array
1859 * @param {Function} fn A function that gets called with each `array` item. Any item that `fn`
1860 * returned a `false`-alike value for will be filtered out of the `array`.
1861 * @param {Mixed} fn.value The currently iterated array value.
1862 * @param {Number} fn.index The index of the currently iterated value in an array.
1863 * @param {Array} fn.array The original array passed as the `array` variable.
1864 * @param {Mixed} [thisArg=undefined] A context object for `fn`.
1865 * @returns {Array} The filtered array.
1866 * @member CKEDITOR.tools.array
1867 */
1868 filter: function( array, fn, thisArg ) {
1869 var ret = [];
1870
1871 this.forEach( array, function( val, i ) {
1872 if ( fn.call( thisArg, val, i, array ) ) {
1873 ret.push( val );
1874 }
1875 } );
1876
1877 return ret;
1878 },
1879
1880 /**
1881 * Iterates over every element in the `array`.
1882 *
1883 * @param {Array} array An array to be iterated over.
1884 * @param {Function} fn The function called for every `array` element.
1885 * @param {Mixed} fn.value The currently iterated array value.
1886 * @param {Number} fn.index The index of the currently iterated value in an array.
1887 * @param {Array} fn.array The original array passed as an `array` variable.
1888 * @param {Mixed} [thisArg=undefined] The context object for `fn`.
1889 * @member CKEDITOR.tools.array
1890 */
1891 forEach: function( array, fn, thisArg ) {
1892 var len = array.length,
1893 i;
1894
1895 for ( i = 0; i < len; i++ ) {
1896 fn.call( thisArg, array[ i ], i, array );
1897 }
1898 },
1899
1900 /**
1901 * Applies a function to each element of an array and returns the array of results in the same order.
1902 * Note the order of the parameters.
1903 *
1904 * @param {Array} array An array of elements that `fn` is applied on.
1905 * @param {Function} fn A function with the signature `a -> b`.
1906 * @param {Mixed} [thisArg=undefined] The context object for `fn`.
1907 * @returns {Array} An array of mapped elements.
1908 * @member CKEDITOR.tools.array
1909 * @since 4.6.2
1910 */
1911 map: function( array, fn, thisArg ) {
1912 var result = [];
1913 for ( var i = 0; i < array.length; i++ ) {
1914 result.push( fn.call( thisArg, array[ i ], i, array ) );
1915 }
1916 return result;
1917 },
1918
1919 /**
1920 * Applies a function against each value in an array storing the result in an accumulator passed to the next iteration.
1921 * Note the order of the parameters.
1922 *
1923 * @param {Array} array An array of elements that `fn` is applied on.
1924 * @param {Function} fn A function with the signature `(accumulator, a, index, array) -> b`.
1925 * @param {Mixed} initial Initial value of the accumulator.
1926 * @param {Mixed} [thisArg=undefined] The context object for `fn`.
1927 * @returns {Mixed} The final value of the accumulator.
1928 * @member CKEDITOR.tools.array
1929 * @since 4.6.2
1930 */
1931 reduce: function( array, fn, initial, thisArg ) {
1932 var acc = initial;
1933 for ( var i = 0; i < array.length; i++ ) {
1934 acc = fn.call( thisArg, acc, array[ i ], i, array );
1935 }
1936 return acc;
1937 }
1938 },
1939
1940 /**
1941 * A set of object helpers.
1942 *
1943 * @property {CKEDITOR.tools.object}
1944 * @member CKEDITOR.tools
1945 */
1946 object: {
1947 /**
1948 * Returns the first key from `obj` which has a given `value`.
1949 *
1950 * @param {Object} obj An object whose `key` is looked for.
1951 * @param {Mixed} value An object's `value` to be looked for.
1952 * @returns {String/null} Matched `key` or `null` if not found.
1953 * @member CKEDITOR.tools.object
1954 */
1955
1956 findKey: function( obj, value ) {
1957 if ( typeof obj !== 'object' ) {
1958 return null;
1959 }
1960
1961 var key;
1962
1963 for ( key in obj ) {
1964 if ( obj[ key ] === value ) {
1965 return key;
1966 }
1967 }
1968
1969 return null;
1970 }
1356 } 1971 }
1357 }; 1972 };
1358 1973
@@ -1381,6 +1996,78 @@
1381 1996
1382 return result; 1997 return result;
1383 } 1998 }
1999
2000 /**
2001 * @member CKEDITOR.tools.array
2002 * @method indexOf
2003 * @inheritdoc CKEDITOR.tools#indexOf
2004 */
2005 CKEDITOR.tools.array.indexOf = CKEDITOR.tools.indexOf;
2006
2007 /**
2008 * @member CKEDITOR.tools.array
2009 * @method isArray
2010 * @inheritdoc CKEDITOR.tools#isArray
2011 */
2012 CKEDITOR.tools.array.isArray = CKEDITOR.tools.isArray;
2013
2014 /**
2015 * Left mouse button.
2016 *
2017 * @since 4.7.3
2018 * @readonly
2019 * @property {Number} [=0]
2020 * @member CKEDITOR
2021 */
2022 CKEDITOR.MOUSE_BUTTON_LEFT = 0;
2023
2024 /**
2025 * Middle mouse button.
2026 *
2027 * @since 4.7.3
2028 * @readonly
2029 * @property {Number} [=1]
2030 * @member CKEDITOR
2031 */
2032 CKEDITOR.MOUSE_BUTTON_MIDDLE = 1;
2033
2034 /**
2035 * Right mouse button.
2036 *
2037 * @since 4.7.3
2038 * @readonly
2039 * @property {Number} [=2]
2040 * @member CKEDITOR
2041 */
2042 CKEDITOR.MOUSE_BUTTON_RIGHT = 2;
2043
2044 /**
2045 * The namespace containing functions to work on CSS properties.
2046 *
2047 * @since 4.6.1
2048 * @class CKEDITOR.tools.style
2049 */
2050
2051 /**
2052 * The namespace with helper functions to parse some common CSS properties.
2053 *
2054 * @since 4.6.1
2055 * @class CKEDITOR.tools.style.parse
2056 */
2057
2058 /**
2059 * The namespace with helper functions and polyfills for arrays.
2060 *
2061 * @since 4.6.1
2062 * @class CKEDITOR.tools.array
2063 */
2064
2065 /**
2066 * The namespace with helper functions and polyfills for objects.
2067 *
2068 * @since 4.7.1
2069 * @class CKEDITOR.tools.object
2070 */
1384} )(); 2071} )();
1385 2072
1386// PACKAGER_RENAME( CKEDITOR.tools ) 2073// PACKAGER_RENAME( CKEDITOR.tools )
diff --git a/sources/core/ui.js b/sources/core/ui.js
index 29ab0ad..ac5a285 100644
--- a/sources/core/ui.js
+++ b/sources/core/ui.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/lang/_translationstatus.txt b/sources/lang/_translationstatus.txt
index 5573f80..233ed53 100644
--- a/sources/lang/_translationstatus.txt
+++ b/sources/lang/_translationstatus.txt
@@ -1,4 +1,4 @@
1Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 1Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
2For licensing, see LICENSE.md or http://ckeditor.com/license 2For licensing, see LICENSE.md or http://ckeditor.com/license
3 3
4af.js Found: 62 Missing: 4 4af.js Found: 62 Missing: 4
diff --git a/sources/lang/af.js b/sources/lang/af.js
index 2cd440d..ea941be 100644
--- a/sources/lang/af.js
+++ b/sources/lang/af.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -86,7 +86,7 @@ CKEDITOR.lang[ 'af' ] = {
86 alignMiddle: 'Middel', 86 alignMiddle: 'Middel',
87 alignBottom: 'Onder', 87 alignBottom: 'Onder',
88 alignNone: 'Geen', 88 alignNone: 'Geen',
89 invalidValue : 'Ongeldige waarde', 89 invalidValue: 'Ongeldige waarde',
90 invalidHeight: 'Hoogte moet \'n getal wees', 90 invalidHeight: 'Hoogte moet \'n getal wees',
91 invalidWidth: 'Breedte moet \'n getal wees.', 91 invalidWidth: 'Breedte moet \'n getal wees.',
92 invalidCssLength: 'Die waarde vir die "%1" veld moet \'n posetiewe getal wees met of sonder \'n geldige CSS eenheid (px, %, in, cm, mm, em, ex, pt, of pc).', 92 invalidCssLength: 'Die waarde vir die "%1" veld moet \'n posetiewe getal wees met of sonder \'n geldige CSS eenheid (px, %, in, cm, mm, em, ex, pt, of pc).',
@@ -95,6 +95,23 @@ CKEDITOR.lang[ 'af' ] = {
95 cssLengthTooltip: 'Voeg \'n getal wert in pixel in, of \'n waarde met geldige CSS eenheid (px, %, in, cm, mm, em, ex, pt, of pc).', 95 cssLengthTooltip: 'Voeg \'n getal wert in pixel in, of \'n waarde met geldige CSS eenheid (px, %, in, cm, mm, em, ex, pt, of pc).',
96 96
97 // Put the voice-only part of the label in the span. 97 // Put the voice-only part of the label in the span.
98 unavailable: '%1<span class="cke_accessibility">, nie beskikbaar nie</span>' 98 unavailable: '%1<span class="cke_accessibility">, nie beskikbaar nie</span>',
99
100 // Keyboard keys translations used for creating shortcuts descriptions in tooltips, context menus and ARIA labels.
101 keyboard: {
102 8: 'Backspace',
103 13: 'Enter',
104 16: 'Skuif',
105 17: 'Ctrl',
106 18: 'Alt',
107 32: 'Spasie',
108 35: 'Einde',
109 36: 'Tuis',
110 46: 'Verwyder',
111 224: 'Bevel'
112 },
113
114 // Prepended to ARIA labels with shortcuts.
115 keyboardShortcut: 'Sleutel kombenasie'
99 } 116 }
100}; 117};
diff --git a/sources/lang/ar.js b/sources/lang/ar.js
index 4697f91..1412f22 100644
--- a/sources/lang/ar.js
+++ b/sources/lang/ar.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -86,7 +86,7 @@ CKEDITOR.lang[ 'ar' ] = {
86 alignMiddle: 'وسط', 86 alignMiddle: 'وسط',
87 alignBottom: 'أسفل', 87 alignBottom: 'أسفل',
88 alignNone: 'None', // MISSING 88 alignNone: 'None', // MISSING
89 invalidValue : 'قيمة غير مفبولة.', 89 invalidValue: 'قيمة غير مفبولة.',
90 invalidHeight: 'الارتفاع يجب أن يكون عدداً.', 90 invalidHeight: 'الارتفاع يجب أن يكون عدداً.',
91 invalidWidth: 'العرض يجب أن يكون عدداً.', 91 invalidWidth: 'العرض يجب أن يكون عدداً.',
92 invalidCssLength: 'قيمة الخانة المخصصة لـ "%1" يجب أن تكون رقما موجبا، باستخدام أو من غير استخدام وحدة CSS قياس مقبولة (px, %, in, cm, mm, em, ex, pt, or pc).', 92 invalidCssLength: 'قيمة الخانة المخصصة لـ "%1" يجب أن تكون رقما موجبا، باستخدام أو من غير استخدام وحدة CSS قياس مقبولة (px, %, in, cm, mm, em, ex, pt, or pc).',
@@ -95,6 +95,23 @@ CKEDITOR.lang[ 'ar' ] = {
95 cssLengthTooltip: 'أدخل رقما للقيمة بالبكسل أو رقما بوحدة CSS مقبولة (px, %, in, cm, mm, em, ex, pt, or pc).', 95 cssLengthTooltip: 'أدخل رقما للقيمة بالبكسل أو رقما بوحدة CSS مقبولة (px, %, in, cm, mm, em, ex, pt, or pc).',
96 96
97 // Put the voice-only part of the label in the span. 97 // Put the voice-only part of the label in the span.
98 unavailable: '%1<span class="cke_accessibility">, غير متاح</span>' 98 unavailable: '%1<span class="cke_accessibility">, غير متاح</span>',
99
100 // Keyboard keys translations used for creating shortcuts descriptions in tooltips, context menus and ARIA labels.
101 keyboard: {
102 8: 'Backspace', // MISSING
103 13: 'Enter', // MISSING
104 16: 'Shift', // MISSING
105 17: 'Ctrl', // MISSING
106 18: 'Alt', // MISSING
107 32: 'Space', // MISSING
108 35: 'End', // MISSING
109 36: 'Home', // MISSING
110 46: 'Delete', // MISSING
111 224: 'Command' // MISSING
112 },
113
114 // Prepended to ARIA labels with shortcuts.
115 keyboardShortcut: 'Keyboard shortcut' // MISSING
99 } 116 }
100}; 117};
diff --git a/sources/lang/az.js b/sources/lang/az.js
new file mode 100644
index 0000000..796fec7
--- /dev/null
+++ b/sources/lang/az.js
@@ -0,0 +1,117 @@
1/**
2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */
5
6/**
7 * @fileOverview Defines the {@link CKEDITOR.lang} object for the
8 * Azerbaijani language.
9 */
10
11/**#@+
12 @type String
13 @example
14*/
15
16/**
17 * Contains the dictionary of language entries.
18 * @namespace
19 */
20CKEDITOR.lang[ 'az' ] = {
21 // ARIA description.
22 editor: 'Mətn Redaktoru',
23 editorPanel: 'Mətn Redaktorun Paneli',
24
25 // Common messages and labels.
26 common: {
27 // Screenreader titles. Please note that screenreaders are not always capable
28 // of reading non-English words. So be careful while translating it.
29 editorHelp: 'Yardım üçün ALT 0 düymələrini basın',
30
31 browseServer: 'Fayların siyahı',
32 url: 'URL',
33 protocol: 'Protokol',
34 upload: 'Serverə yüklə',
35 uploadSubmit: 'Göndər',
36 image: 'Şəkil',
37 flash: 'Flash',
38 form: 'Forma',
39 checkbox: 'Çekboks',
40 radio: 'Radio düyməsi',
41 textField: 'Mətn xanası',
42 textarea: 'Mətn',
43 hiddenField: 'Gizli xana',
44 button: 'Düymə',
45 select: 'Opsiyaların seçilməsi',
46 imageButton: 'Şəkil tipli düymə',
47 notSet: '<seçilməmiş>',
48 id: 'Id',
49 name: 'Ad',
50 langDir: 'Yaziların istiqaməti',
51 langDirLtr: 'Soldan sağa (LTR)',
52 langDirRtl: 'Sağdan sola (RTL)',
53 langCode: 'Dilin kodu',
54 longDescr: 'URL-ın ətraflı izahı',
55 cssClass: 'CSS klassları',
56 advisoryTitle: 'Başlıq',
57 cssStyle: 'CSS',
58 ok: 'Tədbiq et',
59 cancel: 'İmtina et',
60 close: 'Bağla',
61 preview: 'Baxış',
62 resize: 'Eni dəyiş',
63 generalTab: 'Əsas',
64 advancedTab: 'Əlavə',
65 validateNumberFailed: 'Rəqəm deyil.',
66 confirmNewPage: 'Yadda saxlanılmamış dəyişikliklər itiriləcək. Davam etmək istədiyinizə əminsinizmi?',
67 confirmCancel: 'Dəyişikliklər edilib. Pəncərəni bağlamaq istəyirsizə əminsinizmi?',
68 options: 'Seçimlər',
69 target: 'Hədəf çərçivə',
70 targetNew: 'Yeni pəncərə (_blank)',
71 targetTop: 'Əsas pəncərə (_top)',
72 targetSelf: 'Carı pəncərə (_self)',
73 targetParent: 'Ana pəncərə (_parent)',
74 langDirLTR: 'Soldan sağa (LTR)',
75 langDirRTL: 'Sağdan sola (RTL)',
76 styles: 'Üslub',
77 cssClasses: 'Üslub klası',
78 width: 'En',
79 height: 'Uzunluq',
80 align: 'Yerləşmə',
81 alignLeft: 'Sol',
82 alignRight: 'Sağ',
83 alignCenter: 'Mərkəz',
84 alignJustify: 'Eninə görə',
85 alignTop: 'Yuxarı',
86 alignMiddle: 'Orta',
87 alignBottom: 'Aşağı',
88 alignNone: 'Yoxdur',
89 invalidValue: 'Yanlışdır.',
90 invalidHeight: 'Hündürlük rəqəm olmalıdır.',
91 invalidWidth: 'En rəqəm olmalıdır.',
92 invalidCssLength: '"%1" xanasında göstərilən məzmun tam və müsbət olmalıdır, CSS-də olan ölçü vahidlərin (px, %, in, cm, mm, em, ex, pt, or pc) istifadısinə icazə verilir.',
93 invalidHtmlLength: '"%1" xanasında göstərilən məzmun tam və müsbət olmalıdır HTML-də olan ölçü vahidlərin (px və ya %) istifadısinə icazə verilir.',
94 invalidInlineStyle: 'Teq içində olan üslub "ad : məzmun" şəklidə, nöqtə-verqül işarəsi ilə bitməlidir',
95 cssLengthTooltip: 'Piksel sayı və ya digər CSS ölçü vahidləri (px, %, in, cm, mm, em, ex, pt, or pc) daxil edin.',
96
97 // Put the voice-only part of the label in the span.
98 unavailable: '%1<span class="cke_accessibility">, mövcud deyil</span>',
99
100 // Keyboard keys translations used for creating shortcuts descriptions in tooltips, context menus and ARIA labels.
101 keyboard: {
102 8: 'Backspace',
103 13: 'Enter',
104 16: 'Shift',
105 17: 'Ctrl',
106 18: 'Alt',
107 32: 'Boşluq',
108 35: 'Son',
109 36: 'Evə',
110 46: 'Sil',
111 224: 'Əmr'
112 },
113
114 // Prepended to ARIA labels with shortcuts.
115 keyboardShortcut: 'Qısayol düymələri'
116 }
117};
diff --git a/sources/lang/bg.js b/sources/lang/bg.js
index 4a0097e..84a1d55 100644
--- a/sources/lang/bg.js
+++ b/sources/lang/bg.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -86,7 +86,7 @@ CKEDITOR.lang[ 'bg' ] = {
86 alignMiddle: 'По средата', 86 alignMiddle: 'По средата',
87 alignBottom: 'Долу', 87 alignBottom: 'Долу',
88 alignNone: 'Без подравняване', 88 alignNone: 'Без подравняване',
89 invalidValue : 'Невалидна стойност.', 89 invalidValue: 'Невалидна стойност.',
90 invalidHeight: 'Височината трябва да е число.', 90 invalidHeight: 'Височината трябва да е число.',
91 invalidWidth: 'Ширина требе да е число.', 91 invalidWidth: 'Ширина требе да е число.',
92 invalidCssLength: 'Стойността на полето "%1" трябва да бъде положително число с или без валидна CSS измервателна единица (px, %, in, cm, mm, em, ex, pt, или pc).', 92 invalidCssLength: 'Стойността на полето "%1" трябва да бъде положително число с или без валидна CSS измервателна единица (px, %, in, cm, mm, em, ex, pt, или pc).',
@@ -95,6 +95,23 @@ CKEDITOR.lang[ 'bg' ] = {
95 cssLengthTooltip: 'Въведете числена стойност в пиксели или друга валидна CSS единица (px, %, in, cm, mm, em, ex, pt, или pc).', 95 cssLengthTooltip: 'Въведете числена стойност в пиксели или друга валидна CSS единица (px, %, in, cm, mm, em, ex, pt, или pc).',
96 96
97 // Put the voice-only part of the label in the span. 97 // Put the voice-only part of the label in the span.
98 unavailable: '%1<span class="cke_accessibility">, недостъпно</span>' 98 unavailable: '%1<span class="cke_accessibility">, недостъпно</span>',
99
100 // Keyboard keys translations used for creating shortcuts descriptions in tooltips, context menus and ARIA labels.
101 keyboard: {
102 8: 'Backspace', // MISSING
103 13: 'Enter', // MISSING
104 16: 'Shift', // MISSING
105 17: 'Ctrl', // MISSING
106 18: 'Alt', // MISSING
107 32: 'Space', // MISSING
108 35: 'End', // MISSING
109 36: 'Home', // MISSING
110 46: 'Delete', // MISSING
111 224: 'Command' // MISSING
112 },
113
114 // Prepended to ARIA labels with shortcuts.
115 keyboardShortcut: 'Keyboard shortcut' // MISSING
99 } 116 }
100}; 117};
diff --git a/sources/lang/bn.js b/sources/lang/bn.js
index 9c94383..9c6e69b 100644
--- a/sources/lang/bn.js
+++ b/sources/lang/bn.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -86,7 +86,7 @@ CKEDITOR.lang[ 'bn' ] = {
86 alignMiddle: 'মধ্য', 86 alignMiddle: 'মধ্য',
87 alignBottom: 'নীচে', 87 alignBottom: 'নীচে',
88 alignNone: 'None', // MISSING 88 alignNone: 'None', // MISSING
89 invalidValue : 'Invalid value.', // MISSING 89 invalidValue: 'Invalid value.', // MISSING
90 invalidHeight: 'Height must be a number.', // MISSING 90 invalidHeight: 'Height must be a number.', // MISSING
91 invalidWidth: 'Width must be a number.', // MISSING 91 invalidWidth: 'Width must be a number.', // MISSING
92 invalidCssLength: 'Value specified for the "%1" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).', // MISSING 92 invalidCssLength: 'Value specified for the "%1" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).', // MISSING
@@ -95,6 +95,23 @@ CKEDITOR.lang[ 'bn' ] = {
95 cssLengthTooltip: 'Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).', // MISSING 95 cssLengthTooltip: 'Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).', // MISSING
96 96
97 // Put the voice-only part of the label in the span. 97 // Put the voice-only part of the label in the span.
98 unavailable: '%1<span class="cke_accessibility">, unavailable</span>' // MISSING 98 unavailable: '%1<span class="cke_accessibility">, unavailable</span>', // MISSING
99
100 // Keyboard keys translations used for creating shortcuts descriptions in tooltips, context menus and ARIA labels.
101 keyboard: {
102 8: 'Backspace', // MISSING
103 13: 'Enter', // MISSING
104 16: 'Shift', // MISSING
105 17: 'Ctrl', // MISSING
106 18: 'Alt', // MISSING
107 32: 'Space', // MISSING
108 35: 'End', // MISSING
109 36: 'Home', // MISSING
110 46: 'Delete', // MISSING
111 224: 'Command' // MISSING
112 },
113
114 // Prepended to ARIA labels with shortcuts.
115 keyboardShortcut: 'Keyboard shortcut' // MISSING
99 } 116 }
100}; 117};
diff --git a/sources/lang/bs.js b/sources/lang/bs.js
index 49d794e..f214df8 100644
--- a/sources/lang/bs.js
+++ b/sources/lang/bs.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -86,7 +86,7 @@ CKEDITOR.lang[ 'bs' ] = {
86 alignMiddle: 'Sredina', 86 alignMiddle: 'Sredina',
87 alignBottom: 'Dno', 87 alignBottom: 'Dno',
88 alignNone: 'None', // MISSING 88 alignNone: 'None', // MISSING
89 invalidValue : 'Invalid value.', // MISSING 89 invalidValue: 'Invalid value.', // MISSING
90 invalidHeight: 'Height must be a number.', // MISSING 90 invalidHeight: 'Height must be a number.', // MISSING
91 invalidWidth: 'Width must be a number.', // MISSING 91 invalidWidth: 'Width must be a number.', // MISSING
92 invalidCssLength: 'Value specified for the "%1" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).', // MISSING 92 invalidCssLength: 'Value specified for the "%1" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).', // MISSING
@@ -95,6 +95,23 @@ CKEDITOR.lang[ 'bs' ] = {
95 cssLengthTooltip: 'Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).', // MISSING 95 cssLengthTooltip: 'Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).', // MISSING
96 96
97 // Put the voice-only part of the label in the span. 97 // Put the voice-only part of the label in the span.
98 unavailable: '%1<span class="cke_accessibility">, unavailable</span>' // MISSING 98 unavailable: '%1<span class="cke_accessibility">, unavailable</span>', // MISSING
99
100 // Keyboard keys translations used for creating shortcuts descriptions in tooltips, context menus and ARIA labels.
101 keyboard: {
102 8: 'Backspace', // MISSING
103 13: 'Enter', // MISSING
104 16: 'Shift', // MISSING
105 17: 'Ctrl', // MISSING
106 18: 'Alt', // MISSING
107 32: 'Space', // MISSING
108 35: 'End', // MISSING
109 36: 'Home', // MISSING
110 46: 'Delete', // MISSING
111 224: 'Command' // MISSING
112 },
113
114 // Prepended to ARIA labels with shortcuts.
115 keyboardShortcut: 'Keyboard shortcut' // MISSING
99 } 116 }
100}; 117};
diff --git a/sources/lang/ca.js b/sources/lang/ca.js
index 090c688..5ca9450 100644
--- a/sources/lang/ca.js
+++ b/sources/lang/ca.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -85,8 +85,8 @@ CKEDITOR.lang[ 'ca' ] = {
85 alignTop: 'Superior', 85 alignTop: 'Superior',
86 alignMiddle: 'Centre', 86 alignMiddle: 'Centre',
87 alignBottom: 'Inferior', 87 alignBottom: 'Inferior',
88 alignNone: 'None', // MISSING 88 alignNone: 'Cap',
89 invalidValue : 'Valor no vàlid.', 89 invalidValue: 'Valor no vàlid.',
90 invalidHeight: 'L\'alçada ha de ser un número.', 90 invalidHeight: 'L\'alçada ha de ser un número.',
91 invalidWidth: 'L\'amplada ha de ser un número.', 91 invalidWidth: 'L\'amplada ha de ser un número.',
92 invalidCssLength: 'El valor especificat per als "%1" camps ha de ser un número positiu amb o sense unitat de mesura vàlida de CSS (px, %, in, cm, mm, em, ex, pt o pc).', 92 invalidCssLength: 'El valor especificat per als "%1" camps ha de ser un número positiu amb o sense unitat de mesura vàlida de CSS (px, %, in, cm, mm, em, ex, pt o pc).',
@@ -95,6 +95,23 @@ CKEDITOR.lang[ 'ca' ] = {
95 cssLengthTooltip: 'Introduïu un número per un valor en píxels o un número amb una unitat vàlida de CSS (px, %, in, cm, mm, em, ex, pt o pc).', 95 cssLengthTooltip: 'Introduïu un número per un valor en píxels o un número amb una unitat vàlida de CSS (px, %, in, cm, mm, em, ex, pt o pc).',
96 96
97 // Put the voice-only part of the label in the span. 97 // Put the voice-only part of the label in the span.
98 unavailable: '%1<span class="cke_accessibility">, no disponible</span>' 98 unavailable: '%1<span class="cke_accessibility">, no disponible</span>',
99
100 // Keyboard keys translations used for creating shortcuts descriptions in tooltips, context menus and ARIA labels.
101 keyboard: {
102 8: 'Retrocés',
103 13: 'Intro',
104 16: 'Majúscules',
105 17: 'Ctrl',
106 18: 'Alt',
107 32: 'Space', // MISSING
108 35: 'Fi',
109 36: 'Inici',
110 46: 'Eliminar',
111 224: 'Command' // MISSING
112 },
113
114 // Prepended to ARIA labels with shortcuts.
115 keyboardShortcut: 'Keyboard shortcut' // MISSING
99 } 116 }
100}; 117};
diff --git a/sources/lang/cs.js b/sources/lang/cs.js
index ece4c6b..b5cf226 100644
--- a/sources/lang/cs.js
+++ b/sources/lang/cs.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -86,7 +86,7 @@ CKEDITOR.lang[ 'cs' ] = {
86 alignMiddle: 'Na střed', 86 alignMiddle: 'Na střed',
87 alignBottom: 'Dolů', 87 alignBottom: 'Dolů',
88 alignNone: 'Žádné', 88 alignNone: 'Žádné',
89 invalidValue : 'Neplatná hodnota.', 89 invalidValue: 'Neplatná hodnota.',
90 invalidHeight: 'Zadaná výška musí být číslo.', 90 invalidHeight: 'Zadaná výška musí být číslo.',
91 invalidWidth: 'Šířka musí být číslo.', 91 invalidWidth: 'Šířka musí být číslo.',
92 invalidCssLength: 'Hodnota určená pro pole "%1" musí být kladné číslo bez nebo s platnou jednotkou míry CSS (px, %, in, cm, mm, em, ex, pt, nebo pc).', 92 invalidCssLength: 'Hodnota určená pro pole "%1" musí být kladné číslo bez nebo s platnou jednotkou míry CSS (px, %, in, cm, mm, em, ex, pt, nebo pc).',
@@ -95,6 +95,23 @@ CKEDITOR.lang[ 'cs' ] = {
95 cssLengthTooltip: 'Zadejte číslo jako hodnotu v pixelech nebo číslo s platnou jednotkou CSS (px, %, v cm, mm, em, ex, pt, nebo pc).', 95 cssLengthTooltip: 'Zadejte číslo jako hodnotu v pixelech nebo číslo s platnou jednotkou CSS (px, %, v cm, mm, em, ex, pt, nebo pc).',
96 96
97 // Put the voice-only part of the label in the span. 97 // Put the voice-only part of the label in the span.
98 unavailable: '%1<span class="cke_accessibility">, nedostupné</span>' 98 unavailable: '%1<span class="cke_accessibility">, nedostupné</span>',
99
100 // Keyboard keys translations used for creating shortcuts descriptions in tooltips, context menus and ARIA labels.
101 keyboard: {
102 8: 'Backspace',
103 13: 'Enter',
104 16: 'Shift',
105 17: 'Ctrl',
106 18: 'Alt',
107 32: 'Mezerník',
108 35: 'Konec',
109 36: 'Domů',
110 46: 'Smazat',
111 224: 'Command'
112 },
113
114 // Prepended to ARIA labels with shortcuts.
115 keyboardShortcut: 'Klávesová zkratka'
99 } 116 }
100}; 117};
diff --git a/sources/lang/cy.js b/sources/lang/cy.js
index 916206e..3f075aa 100644
--- a/sources/lang/cy.js
+++ b/sources/lang/cy.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -86,7 +86,7 @@ CKEDITOR.lang[ 'cy' ] = {
86 alignMiddle: 'Canol', 86 alignMiddle: 'Canol',
87 alignBottom: 'Gwaelod', 87 alignBottom: 'Gwaelod',
88 alignNone: 'None', // MISSING 88 alignNone: 'None', // MISSING
89 invalidValue : 'Gwerth annilys.', 89 invalidValue: 'Gwerth annilys.',
90 invalidHeight: 'Mae\'n rhaid i\'r uchder fod yn rhif.', 90 invalidHeight: 'Mae\'n rhaid i\'r uchder fod yn rhif.',
91 invalidWidth: 'Mae\'n rhaid i\'r lled fod yn rhif.', 91 invalidWidth: 'Mae\'n rhaid i\'r lled fod yn rhif.',
92 invalidCssLength: 'Mae\'n rhaid i\'r gwerth ar gyfer maes "%1" fod yn rhif positif gyda neu heb uned fesuriad CSS dilys (px, %, in, cm, mm, em, ex, pt, neu pc).', 92 invalidCssLength: 'Mae\'n rhaid i\'r gwerth ar gyfer maes "%1" fod yn rhif positif gyda neu heb uned fesuriad CSS dilys (px, %, in, cm, mm, em, ex, pt, neu pc).',
@@ -95,6 +95,23 @@ CKEDITOR.lang[ 'cy' ] = {
95 cssLengthTooltip: 'Rhowch rif am werth mewn picsel neu rhif gydag uned CSS dilys (px, %, in, cm, mm, em, pt neu pc).', 95 cssLengthTooltip: 'Rhowch rif am werth mewn picsel neu rhif gydag uned CSS dilys (px, %, in, cm, mm, em, pt neu pc).',
96 96
97 // Put the voice-only part of the label in the span. 97 // Put the voice-only part of the label in the span.
98 unavailable: '%1<span class="cke_accessibility">, ddim ar gael</span>' 98 unavailable: '%1<span class="cke_accessibility">, ddim ar gael</span>',
99
100 // Keyboard keys translations used for creating shortcuts descriptions in tooltips, context menus and ARIA labels.
101 keyboard: {
102 8: 'Backspace', // MISSING
103 13: 'Enter', // MISSING
104 16: 'Shift', // MISSING
105 17: 'Ctrl', // MISSING
106 18: 'Alt', // MISSING
107 32: 'Space', // MISSING
108 35: 'End', // MISSING
109 36: 'Home', // MISSING
110 46: 'Delete', // MISSING
111 224: 'Command' // MISSING
112 },
113
114 // Prepended to ARIA labels with shortcuts.
115 keyboardShortcut: 'Keyboard shortcut' // MISSING
99 } 116 }
100}; 117};
diff --git a/sources/lang/da.js b/sources/lang/da.js
index 46bbe73..9b0a63d 100644
--- a/sources/lang/da.js
+++ b/sources/lang/da.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -86,7 +86,7 @@ CKEDITOR.lang[ 'da' ] = {
86 alignMiddle: 'Centreret', 86 alignMiddle: 'Centreret',
87 alignBottom: 'Nederst', 87 alignBottom: 'Nederst',
88 alignNone: 'Ingen', 88 alignNone: 'Ingen',
89 invalidValue : 'Ugyldig værdi.', 89 invalidValue: 'Ugyldig værdi.',
90 invalidHeight: 'Højde skal være et tal.', 90 invalidHeight: 'Højde skal være et tal.',
91 invalidWidth: 'Bredde skal være et tal.', 91 invalidWidth: 'Bredde skal være et tal.',
92 invalidCssLength: 'Værdien specificeret for "%1" feltet skal være et positivt nummer med eller uden en CSS måleenhed (px, %, in, cm, mm, em, ex, pt, eller pc).', 92 invalidCssLength: 'Værdien specificeret for "%1" feltet skal være et positivt nummer med eller uden en CSS måleenhed (px, %, in, cm, mm, em, ex, pt, eller pc).',
@@ -95,6 +95,23 @@ CKEDITOR.lang[ 'da' ] = {
95 cssLengthTooltip: 'Indsæt en numerisk værdi i pixel eller nummer med en gyldig CSS værdi (px, %, in, cm, mm, em, ex, pt, eller pc).', 95 cssLengthTooltip: 'Indsæt en numerisk værdi i pixel eller nummer med en gyldig CSS værdi (px, %, in, cm, mm, em, ex, pt, eller pc).',
96 96
97 // Put the voice-only part of the label in the span. 97 // Put the voice-only part of the label in the span.
98 unavailable: '%1<span class="cke_accessibility">, ikke tilgængelig</span>' 98 unavailable: '%1<span class="cke_accessibility">, ikke tilgængelig</span>',
99
100 // Keyboard keys translations used for creating shortcuts descriptions in tooltips, context menus and ARIA labels.
101 keyboard: {
102 8: 'Backspace',
103 13: 'Retur',
104 16: 'Shift',
105 17: 'Ctrl',
106 18: 'Alt',
107 32: 'Mellemrum',
108 35: 'End',
109 36: 'Home',
110 46: 'Slet',
111 224: 'Command'
112 },
113
114 // Prepended to ARIA labels with shortcuts.
115 keyboardShortcut: 'Tastatur genvej'
99 } 116 }
100}; 117};
diff --git a/sources/lang/de-ch.js b/sources/lang/de-ch.js
index 5322a81..8f9c196 100644
--- a/sources/lang/de-ch.js
+++ b/sources/lang/de-ch.js
@@ -1,10 +1,10 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
6/** 6/**
7* @fileOverview 7* @fileOverview
8*/ 8*/
9 9
10/**#@+ 10/**#@+
@@ -85,7 +85,7 @@ CKEDITOR.lang[ 'de-ch' ] = {
85 alignMiddle: 'Mitte', 85 alignMiddle: 'Mitte',
86 alignBottom: 'Unten', 86 alignBottom: 'Unten',
87 alignNone: 'Keine', 87 alignNone: 'Keine',
88 invalidValue : 'Ungültiger Wert.', 88 invalidValue: 'Ungültiger Wert.',
89 invalidHeight: 'Höhe muss eine Zahl sein.', 89 invalidHeight: 'Höhe muss eine Zahl sein.',
90 invalidWidth: 'Breite muss eine Zahl sein.', 90 invalidWidth: 'Breite muss eine Zahl sein.',
91 invalidCssLength: 'Wert spezifiziert für "%1" Feld muss ein positiver numerischer Wert sein mit oder ohne korrekte CSS Messeinheit (px, %, in, cm, mm, em, ex, pt oder pc).', 91 invalidCssLength: 'Wert spezifiziert für "%1" Feld muss ein positiver numerischer Wert sein mit oder ohne korrekte CSS Messeinheit (px, %, in, cm, mm, em, ex, pt oder pc).',
@@ -94,6 +94,23 @@ CKEDITOR.lang[ 'de-ch' ] = {
94 cssLengthTooltip: 'Gebe eine Zahl ein für ein Wert in pixels oder eine Zahl mit einer korrekten CSS Messeinheit (px, %, in, cm, mm, em, ex, pt oder pc).', 94 cssLengthTooltip: 'Gebe eine Zahl ein für ein Wert in pixels oder eine Zahl mit einer korrekten CSS Messeinheit (px, %, in, cm, mm, em, ex, pt oder pc).',
95 95
96 // Put the voice-only part of the label in the span. 96 // Put the voice-only part of the label in the span.
97 unavailable: '%1<span class="cke_accessibility">, nicht verfügbar</span>' 97 unavailable: '%1<span class="cke_accessibility">, nicht verfügbar</span>',
98
99 // Keyboard keys translations used for creating shortcuts descriptions in tooltips, context menus and ARIA labels.
100 keyboard: {
101 8: 'Rücktaste',
102 13: 'Eingabe',
103 16: 'Umschalt',
104 17: 'Strg',
105 18: 'Alt',
106 32: 'Space', // MISSING
107 35: 'Ende',
108 36: 'Pos1',
109 46: 'Entfernen',
110 224: 'Command' // MISSING
111 },
112
113 // Prepended to ARIA labels with shortcuts.
114 keyboardShortcut: 'Keyboard shortcut' // MISSING
98 } 115 }
99}; 116};
diff --git a/sources/lang/de.js b/sources/lang/de.js
index 0d895fd..441179a 100644
--- a/sources/lang/de.js
+++ b/sources/lang/de.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -63,7 +63,7 @@ CKEDITOR.lang[ 'de' ] = {
63 generalTab: 'Allgemein', 63 generalTab: 'Allgemein',
64 advancedTab: 'Erweitert', 64 advancedTab: 'Erweitert',
65 validateNumberFailed: 'Dieser Wert ist keine Nummer.', 65 validateNumberFailed: 'Dieser Wert ist keine Nummer.',
66 confirmNewPage: 'Alle nicht gespeicherten Änderungen gehen verlohren. Sind Sie sicher die neue Seite zu laden?', 66 confirmNewPage: 'Alle nicht gespeicherten Änderungen gehen verloren. Sind Sie sicher die neue Seite zu laden?',
67 confirmCancel: 'Einige Optionen wurden geändert. Wollen Sie den Dialog dennoch schließen?', 67 confirmCancel: 'Einige Optionen wurden geändert. Wollen Sie den Dialog dennoch schließen?',
68 options: 'Optionen', 68 options: 'Optionen',
69 target: 'Zielseite', 69 target: 'Zielseite',
@@ -86,7 +86,7 @@ CKEDITOR.lang[ 'de' ] = {
86 alignMiddle: 'Mitte', 86 alignMiddle: 'Mitte',
87 alignBottom: 'Unten', 87 alignBottom: 'Unten',
88 alignNone: 'Keine', 88 alignNone: 'Keine',
89 invalidValue : 'Ungültiger Wert.', 89 invalidValue: 'Ungültiger Wert.',
90 invalidHeight: 'Höhe muss eine Zahl sein.', 90 invalidHeight: 'Höhe muss eine Zahl sein.',
91 invalidWidth: 'Breite muss eine Zahl sein.', 91 invalidWidth: 'Breite muss eine Zahl sein.',
92 invalidCssLength: 'Wert spezifiziert für "%1" Feld muss ein positiver numerischer Wert sein mit oder ohne korrekte CSS Messeinheit (px, %, in, cm, mm, em, ex, pt oder pc).', 92 invalidCssLength: 'Wert spezifiziert für "%1" Feld muss ein positiver numerischer Wert sein mit oder ohne korrekte CSS Messeinheit (px, %, in, cm, mm, em, ex, pt oder pc).',
@@ -95,6 +95,23 @@ CKEDITOR.lang[ 'de' ] = {
95 cssLengthTooltip: 'Gebe eine Zahl ein für ein Wert in pixels oder eine Zahl mit einer korrekten CSS Messeinheit (px, %, in, cm, mm, em, ex, pt oder pc).', 95 cssLengthTooltip: 'Gebe eine Zahl ein für ein Wert in pixels oder eine Zahl mit einer korrekten CSS Messeinheit (px, %, in, cm, mm, em, ex, pt oder pc).',
96 96
97 // Put the voice-only part of the label in the span. 97 // Put the voice-only part of the label in the span.
98 unavailable: '%1<span class="cke_accessibility">, nicht verfügbar</span>' 98 unavailable: '%1<span class="cke_accessibility">, nicht verfügbar</span>',
99
100 // Keyboard keys translations used for creating shortcuts descriptions in tooltips, context menus and ARIA labels.
101 keyboard: {
102 8: 'Rücktaste',
103 13: 'Eingabe',
104 16: 'Umschalt',
105 17: 'Strg',
106 18: 'Alt',
107 32: 'Leer',
108 35: 'Ende',
109 36: 'Pos1',
110 46: 'Entfernen',
111 224: 'Befehl'
112 },
113
114 // Prepended to ARIA labels with shortcuts.
115 keyboardShortcut: 'Tastaturkürzel'
99 } 116 }
100}; 117};
diff --git a/sources/lang/el.js b/sources/lang/el.js
index 255f375..635ce36 100644
--- a/sources/lang/el.js
+++ b/sources/lang/el.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -86,7 +86,7 @@ CKEDITOR.lang[ 'el' ] = {
86 alignMiddle: 'Μέση', 86 alignMiddle: 'Μέση',
87 alignBottom: 'Κάτω', 87 alignBottom: 'Κάτω',
88 alignNone: 'Χωρίς', 88 alignNone: 'Χωρίς',
89 invalidValue : 'Μη έγκυρη τιμή.', 89 invalidValue: 'Μη έγκυρη τιμή.',
90 invalidHeight: 'Το ύψος πρέπει να είναι ένας αριθμός.', 90 invalidHeight: 'Το ύψος πρέπει να είναι ένας αριθμός.',
91 invalidWidth: 'Το πλάτος πρέπει να είναι ένας αριθμός.', 91 invalidWidth: 'Το πλάτος πρέπει να είναι ένας αριθμός.',
92 invalidCssLength: 'Η τιμή που ορίζεται για το πεδίο "%1" πρέπει να είναι ένας θετικός αριθμός με ή χωρίς μια έγκυρη μονάδα μέτρησης CSS (px, %, in, cm, mm, em, ex, pt, ή pc).', 92 invalidCssLength: 'Η τιμή που ορίζεται για το πεδίο "%1" πρέπει να είναι ένας θετικός αριθμός με ή χωρίς μια έγκυρη μονάδα μέτρησης CSS (px, %, in, cm, mm, em, ex, pt, ή pc).',
@@ -95,6 +95,23 @@ CKEDITOR.lang[ 'el' ] = {
95 cssLengthTooltip: 'Εισάγεται μια τιμή σε pixel ή έναν αριθμό μαζί με μια έγκυρη μονάδα μέτρησης CSS (px, %, in, cm, mm, em, ex, pt, ή pc).', 95 cssLengthTooltip: 'Εισάγεται μια τιμή σε pixel ή έναν αριθμό μαζί με μια έγκυρη μονάδα μέτρησης CSS (px, %, in, cm, mm, em, ex, pt, ή pc).',
96 96
97 // Put the voice-only part of the label in the span. 97 // Put the voice-only part of the label in the span.
98 unavailable: '%1<span class="cke_accessibility">, δεν είναι διαθέσιμο</span>' 98 unavailable: '%1<span class="cke_accessibility">, δεν είναι διαθέσιμο</span>',
99
100 // Keyboard keys translations used for creating shortcuts descriptions in tooltips, context menus and ARIA labels.
101 keyboard: {
102 8: 'Backspace',
103 13: 'Enter',
104 16: 'Shift',
105 17: 'Ctrl',
106 18: 'Alt',
107 32: 'Space', // MISSING
108 35: 'End',
109 36: 'Home',
110 46: 'Delete',
111 224: 'Command' // MISSING
112 },
113
114 // Prepended to ARIA labels with shortcuts.
115 keyboardShortcut: 'Συντόμευση πληκτρολογίου'
99 } 116 }
100}; 117};
diff --git a/sources/lang/en-au.js b/sources/lang/en-au.js
index 2d29b51..4fc57f0 100644
--- a/sources/lang/en-au.js
+++ b/sources/lang/en-au.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -86,7 +86,7 @@ CKEDITOR.lang[ 'en-au' ] = {
86 alignMiddle: 'Middle', // MISSING 86 alignMiddle: 'Middle', // MISSING
87 alignBottom: 'Bottom', // MISSING 87 alignBottom: 'Bottom', // MISSING
88 alignNone: 'None', // MISSING 88 alignNone: 'None', // MISSING
89 invalidValue : 'Invalid value.', // MISSING 89 invalidValue: 'Invalid value.', // MISSING
90 invalidHeight: 'Height must be a number.', // MISSING 90 invalidHeight: 'Height must be a number.', // MISSING
91 invalidWidth: 'Width must be a number.', // MISSING 91 invalidWidth: 'Width must be a number.', // MISSING
92 invalidCssLength: 'Value specified for the "%1" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).', // MISSING 92 invalidCssLength: 'Value specified for the "%1" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).', // MISSING
@@ -95,6 +95,23 @@ CKEDITOR.lang[ 'en-au' ] = {
95 cssLengthTooltip: 'Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).', // MISSING 95 cssLengthTooltip: 'Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).', // MISSING
96 96
97 // Put the voice-only part of the label in the span. 97 // Put the voice-only part of the label in the span.
98 unavailable: '%1<span class="cke_accessibility">, unavailable</span>' // MISSING 98 unavailable: '%1<span class="cke_accessibility">, unavailable</span>', // MISSING
99
100 // Keyboard keys translations used for creating shortcuts descriptions in tooltips, context menus and ARIA labels.
101 keyboard: {
102 8: 'Backspace', // MISSING
103 13: 'Enter', // MISSING
104 16: 'Shift', // MISSING
105 17: 'Ctrl', // MISSING
106 18: 'Alt', // MISSING
107 32: 'Space', // MISSING
108 35: 'End', // MISSING
109 36: 'Home', // MISSING
110 46: 'Delete', // MISSING
111 224: 'Command' // MISSING
112 },
113
114 // Prepended to ARIA labels with shortcuts.
115 keyboardShortcut: 'Keyboard shortcut' // MISSING
99 } 116 }
100}; 117};
diff --git a/sources/lang/en-ca.js b/sources/lang/en-ca.js
index 33c6534..42d1aff 100644
--- a/sources/lang/en-ca.js
+++ b/sources/lang/en-ca.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -86,7 +86,7 @@ CKEDITOR.lang[ 'en-ca' ] = {
86 alignMiddle: 'Middle', // MISSING 86 alignMiddle: 'Middle', // MISSING
87 alignBottom: 'Bottom', // MISSING 87 alignBottom: 'Bottom', // MISSING
88 alignNone: 'None', // MISSING 88 alignNone: 'None', // MISSING
89 invalidValue : 'Invalid value.', // MISSING 89 invalidValue: 'Invalid value.', // MISSING
90 invalidHeight: 'Height must be a number.', // MISSING 90 invalidHeight: 'Height must be a number.', // MISSING
91 invalidWidth: 'Width must be a number.', // MISSING 91 invalidWidth: 'Width must be a number.', // MISSING
92 invalidCssLength: 'Value specified for the "%1" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).', // MISSING 92 invalidCssLength: 'Value specified for the "%1" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).', // MISSING
@@ -95,6 +95,23 @@ CKEDITOR.lang[ 'en-ca' ] = {
95 cssLengthTooltip: 'Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).', // MISSING 95 cssLengthTooltip: 'Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).', // MISSING
96 96
97 // Put the voice-only part of the label in the span. 97 // Put the voice-only part of the label in the span.
98 unavailable: '%1<span class="cke_accessibility">, unavailable</span>' // MISSING 98 unavailable: '%1<span class="cke_accessibility">, unavailable</span>', // MISSING
99
100 // Keyboard keys translations used for creating shortcuts descriptions in tooltips, context menus and ARIA labels.
101 keyboard: {
102 8: 'Backspace', // MISSING
103 13: 'Enter', // MISSING
104 16: 'Shift', // MISSING
105 17: 'Ctrl', // MISSING
106 18: 'Alt', // MISSING
107 32: 'Space', // MISSING
108 35: 'End', // MISSING
109 36: 'Home', // MISSING
110 46: 'Delete', // MISSING
111 224: 'Command' // MISSING
112 },
113
114 // Prepended to ARIA labels with shortcuts.
115 keyboardShortcut: 'Keyboard shortcut' // MISSING
99 } 116 }
100}; 117};
diff --git a/sources/lang/en-gb.js b/sources/lang/en-gb.js
index 1cf67a7..04cc61d 100644
--- a/sources/lang/en-gb.js
+++ b/sources/lang/en-gb.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -86,7 +86,7 @@ CKEDITOR.lang[ 'en-gb' ] = {
86 alignMiddle: 'Middle', 86 alignMiddle: 'Middle',
87 alignBottom: 'Bottom', 87 alignBottom: 'Bottom',
88 alignNone: 'None', 88 alignNone: 'None',
89 invalidValue : 'Invalid value.', 89 invalidValue: 'Invalid value.',
90 invalidHeight: 'Height must be a number.', 90 invalidHeight: 'Height must be a number.',
91 invalidWidth: 'Width must be a number.', 91 invalidWidth: 'Width must be a number.',
92 invalidCssLength: 'Value specified for the "%1" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).', 92 invalidCssLength: 'Value specified for the "%1" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).',
@@ -95,6 +95,23 @@ CKEDITOR.lang[ 'en-gb' ] = {
95 cssLengthTooltip: 'Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).', 95 cssLengthTooltip: 'Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).',
96 96
97 // Put the voice-only part of the label in the span. 97 // Put the voice-only part of the label in the span.
98 unavailable: '%1<span class="cke_accessibility">, unavailable</span>' 98 unavailable: '%1<span class="cke_accessibility">, unavailable</span>',
99
100 // Keyboard keys translations used for creating shortcuts descriptions in tooltips, context menus and ARIA labels.
101 keyboard: {
102 8: 'Backspace', // MISSING
103 13: 'Enter', // MISSING
104 16: 'Shift', // MISSING
105 17: 'Ctrl', // MISSING
106 18: 'Alt', // MISSING
107 32: 'Space', // MISSING
108 35: 'End', // MISSING
109 36: 'Home', // MISSING
110 46: 'Delete', // MISSING
111 224: 'Command' // MISSING
112 },
113
114 // Prepended to ARIA labels with shortcuts.
115 keyboardShortcut: 'Keyboard shortcut' // MISSING
99 } 116 }
100}; 117};
diff --git a/sources/lang/en.js b/sources/lang/en.js
index 8d4986d..aa509fe 100644
--- a/sources/lang/en.js
+++ b/sources/lang/en.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -86,7 +86,7 @@ CKEDITOR.lang[ 'en' ] = {
86 alignMiddle: 'Middle', 86 alignMiddle: 'Middle',
87 alignBottom: 'Bottom', 87 alignBottom: 'Bottom',
88 alignNone: 'None', 88 alignNone: 'None',
89 invalidValue : 'Invalid value.', 89 invalidValue: 'Invalid value.',
90 invalidHeight: 'Height must be a number.', 90 invalidHeight: 'Height must be a number.',
91 invalidWidth: 'Width must be a number.', 91 invalidWidth: 'Width must be a number.',
92 invalidCssLength: 'Value specified for the "%1" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).', 92 invalidCssLength: 'Value specified for the "%1" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).',
@@ -95,6 +95,23 @@ CKEDITOR.lang[ 'en' ] = {
95 cssLengthTooltip: 'Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).', 95 cssLengthTooltip: 'Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).',
96 96
97 // Put the voice-only part of the label in the span. 97 // Put the voice-only part of the label in the span.
98 unavailable: '%1<span class="cke_accessibility">, unavailable</span>' 98 unavailable: '%1<span class="cke_accessibility">, unavailable</span>',
99
100 // Keyboard keys translations used for creating shortcuts descriptions in tooltips, context menus and ARIA labels.
101 keyboard: {
102 8: 'Backspace',
103 13: 'Enter',
104 16: 'Shift',
105 17: 'Ctrl',
106 18: 'Alt',
107 32: 'Space',
108 35: 'End',
109 36: 'Home',
110 46: 'Delete',
111 224: 'Command'
112 },
113
114 // Prepended to ARIA labels with shortcuts.
115 keyboardShortcut: 'Keyboard shortcut'
99 } 116 }
100}; 117};
diff --git a/sources/lang/eo.js b/sources/lang/eo.js
index 4a25862..4ea1b84 100644
--- a/sources/lang/eo.js
+++ b/sources/lang/eo.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -86,7 +86,7 @@ CKEDITOR.lang[ 'eo' ] = {
86 alignMiddle: 'Centre', 86 alignMiddle: 'Centre',
87 alignBottom: 'Malsupre', 87 alignBottom: 'Malsupre',
88 alignNone: 'Neniu', 88 alignNone: 'Neniu',
89 invalidValue : 'Nevalida Valoro', 89 invalidValue: 'Nevalida Valoro',
90 invalidHeight: 'Alto devas esti nombro.', 90 invalidHeight: 'Alto devas esti nombro.',
91 invalidWidth: 'Larĝo devas esti nombro.', 91 invalidWidth: 'Larĝo devas esti nombro.',
92 invalidCssLength: 'La valoro indikita por la "%1" kampo devas esti pozitiva nombro kun aŭ sen valida CSSmezurunuo (px, %, in, cm, mm, em, ex, pt, or pc).', 92 invalidCssLength: 'La valoro indikita por la "%1" kampo devas esti pozitiva nombro kun aŭ sen valida CSSmezurunuo (px, %, in, cm, mm, em, ex, pt, or pc).',
@@ -95,6 +95,23 @@ CKEDITOR.lang[ 'eo' ] = {
95 cssLengthTooltip: 'Entajpu nombron por rastrumera valoro aŭ nombron kun valida CSSunuo (px, %, in, cm, mm, em, ex, pt, or pc).', 95 cssLengthTooltip: 'Entajpu nombron por rastrumera valoro aŭ nombron kun valida CSSunuo (px, %, in, cm, mm, em, ex, pt, or pc).',
96 96
97 // Put the voice-only part of the label in the span. 97 // Put the voice-only part of the label in the span.
98 unavailable: '%1<span class="cke_accessibility">, nehavebla</span>' 98 unavailable: '%1<span class="cke_accessibility">, nehavebla</span>',
99
100 // Keyboard keys translations used for creating shortcuts descriptions in tooltips, context menus and ARIA labels.
101 keyboard: {
102 8: 'Retropaŝo',
103 13: 'Enigi',
104 16: 'Registrumo',
105 17: 'Stirklavo',
106 18: 'Alt-klavo',
107 32: 'Spaco',
108 35: 'Fino',
109 36: 'Hejmo',
110 46: 'Forigi',
111 224: 'Komando'
112 },
113
114 // Prepended to ARIA labels with shortcuts.
115 keyboardShortcut: 'Fulmoklavo'
99 } 116 }
100}; 117};
diff --git a/sources/lang/es-mx.js b/sources/lang/es-mx.js
new file mode 100644
index 0000000..3b8c1c3
--- /dev/null
+++ b/sources/lang/es-mx.js
@@ -0,0 +1,116 @@
1/**
2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */
5
6/**
7* @fileOverview
8*/
9
10/**#@+
11 @type String
12 @example
13*/
14
15/**
16 * Contains the dictionary of language entries.
17 * @namespace
18 */
19CKEDITOR.lang[ 'es-mx' ] = {
20 // ARIA description.
21 editor: 'Editor de texto enriquecido',
22 editorPanel: 'Panel del editor de texto',
23
24 // Common messages and labels.
25 common: {
26 // Screenreader titles. Please note that screenreaders are not always capable
27 // of reading non-English words. So be careful while translating it.
28 editorHelp: 'Presiona ALT + 0 para ayuda',
29
30 browseServer: 'Examinar servidor',
31 url: 'URL',
32 protocol: 'Protocolo',
33 upload: 'Subir',
34 uploadSubmit: 'Enviar al servidor',
35 image: 'Imagen',
36 flash: 'Flash',
37 form: 'Formulario',
38 checkbox: 'Casilla de verificación',
39 radio: 'Botón de opción',
40 textField: 'Campo de texto',
41 textarea: 'Área de texto',
42 hiddenField: 'Campo oculto',
43 button: 'Botón',
44 select: 'Campo de selección',
45 imageButton: 'Botón de imagen',
46 notSet: '<not set>',
47 id: 'Id',
48 name: 'Nombre',
49 langDir: 'Dirección de idiomas',
50 langDirLtr: 'Izquierda a derecha (LTR)',
51 langDirRtl: 'Derecha a izquierda (RTL)',
52 langCode: 'Código de lenguaje',
53 longDescr: 'URL descripción larga',
54 cssClass: 'Clases de hoja de estilo',
55 advisoryTitle: 'Título del anuncio',
56 cssStyle: 'Estilo',
57 ok: 'OK',
58 cancel: 'Cancelar',
59 close: 'Cerrar',
60 preview: 'Vista previa',
61 resize: 'Redimensionar',
62 generalTab: 'General',
63 advancedTab: 'Avanzada',
64 validateNumberFailed: 'Este valor no es un número.',
65 confirmNewPage: 'Se perderán todos los cambios no guardados en este contenido. ¿Seguro que quieres cargar nueva página?',
66 confirmCancel: 'Ha cambiado algunas opciones. ¿Está seguro de que desea cerrar la ventana de diálogo?',
67 options: 'Opciones',
68 target: 'Objetivo',
69 targetNew: 'Nueva ventana (_blank)',
70 targetTop: 'Ventana superior (_top)',
71 targetSelf: 'Misma ventana (_self)',
72 targetParent: 'Ventana principal (_parent)',
73 langDirLTR: 'Izquierda a Derecha (LTR)',
74 langDirRTL: 'Derecha a Izquierda (RTL)',
75 styles: 'Estilo',
76 cssClasses: 'Clases de hojas de estilo',
77 width: 'Ancho',
78 height: 'Alto',
79 align: 'Alineación',
80 alignLeft: 'Izquierda',
81 alignRight: 'Derecha',
82 alignCenter: 'Centrado',
83 alignJustify: 'Justificado',
84 alignTop: 'Arriba',
85 alignMiddle: 'En medio',
86 alignBottom: 'Abajo',
87 alignNone: 'Ninguno',
88 invalidValue: 'Valor inválido',
89 invalidHeight: 'La altura debe ser un número.',
90 invalidWidth: 'La anchura debe ser un número.',
91 invalidCssLength: 'El valor especificado para el campo "% 1" debe ser un número positivo con o sin una unidad de medida CSS válida (px, %, in, cm, mm, em, ex, pt, or pc).',
92 invalidHtmlLength: 'El valor especificado para el campo "% 1" debe ser un número positivo con o sin una unidad de medición HTML válida (px or %).',
93 invalidInlineStyle: 'El valor especificado para el estilo en línea debe constar de una o más tuplas con el formato de "nombre: valor", separados por punto y coma',
94 cssLengthTooltip: 'Introduzca un número para un valor en píxeles o un número con una unidad CSS válida (px, %, in, cm, mm, em, ex, pt, or pc).',
95
96 // Put the voice-only part of the label in the span.
97 unavailable: '%1<span class="cke_accessibility">, no disponible</span>',
98
99 // Keyboard keys translations used for creating shortcuts descriptions in tooltips, context menus and ARIA labels.
100 keyboard: {
101 8: 'Retroceso',
102 13: 'Intro',
103 16: 'Shift',
104 17: 'Ctrl',
105 18: 'Alt',
106 32: 'Espacio',
107 35: 'Fin',
108 36: 'Inicio',
109 46: 'Borrar',
110 224: 'Comando'
111 },
112
113 // Prepended to ARIA labels with shortcuts.
114 keyboardShortcut: 'Atajo de teclado'
115 }
116};
diff --git a/sources/lang/es.js b/sources/lang/es.js
index 6446830..40d9ae0 100644
--- a/sources/lang/es.js
+++ b/sources/lang/es.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -86,7 +86,7 @@ CKEDITOR.lang[ 'es' ] = {
86 alignMiddle: 'Centro', 86 alignMiddle: 'Centro',
87 alignBottom: 'Pie', 87 alignBottom: 'Pie',
88 alignNone: 'Ninguno', 88 alignNone: 'Ninguno',
89 invalidValue : 'Valor no válido', 89 invalidValue: 'Valor no válido',
90 invalidHeight: 'Altura debe ser un número.', 90 invalidHeight: 'Altura debe ser un número.',
91 invalidWidth: 'Anchura debe ser un número.', 91 invalidWidth: 'Anchura debe ser un número.',
92 invalidCssLength: 'El valor especificado para el campo "%1" debe ser un número positivo, incluyendo optionalmente una unidad de medida CSS válida (px, %, in, cm, mm, em, ex, pt, o pc).', 92 invalidCssLength: 'El valor especificado para el campo "%1" debe ser un número positivo, incluyendo optionalmente una unidad de medida CSS válida (px, %, in, cm, mm, em, ex, pt, o pc).',
@@ -95,6 +95,23 @@ CKEDITOR.lang[ 'es' ] = {
95 cssLengthTooltip: 'Introduca un número para el valor en pixels o un número con una unidad de medida CSS válida (px, %, in, cm, mm, em, ex, pt, o pc).', 95 cssLengthTooltip: 'Introduca un número para el valor en pixels o un número con una unidad de medida CSS válida (px, %, in, cm, mm, em, ex, pt, o pc).',
96 96
97 // Put the voice-only part of the label in the span. 97 // Put the voice-only part of the label in the span.
98 unavailable: '%1<span class="cke_accessibility">, no disponible</span>' 98 unavailable: '%1<span class="cke_accessibility">, no disponible</span>',
99
100 // Keyboard keys translations used for creating shortcuts descriptions in tooltips, context menus and ARIA labels.
101 keyboard: {
102 8: 'Retroceso',
103 13: 'Ingresar',
104 16: 'Mayús.',
105 17: 'Ctrl',
106 18: 'Alt',
107 32: 'Space', // MISSING
108 35: 'Fin',
109 36: 'Inicio',
110 46: 'Suprimir',
111 224: 'Command' // MISSING
112 },
113
114 // Prepended to ARIA labels with shortcuts.
115 keyboardShortcut: 'Keyboard shortcut' // MISSING
99 } 116 }
100}; 117};
diff --git a/sources/lang/et.js b/sources/lang/et.js
index 2ec5b1c..c98ea81 100644
--- a/sources/lang/et.js
+++ b/sources/lang/et.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -86,7 +86,7 @@ CKEDITOR.lang[ 'et' ] = {
86 alignMiddle: 'Keskele', 86 alignMiddle: 'Keskele',
87 alignBottom: 'Alla', 87 alignBottom: 'Alla',
88 alignNone: 'None', // MISSING 88 alignNone: 'None', // MISSING
89 invalidValue : 'Vigane väärtus.', 89 invalidValue: 'Vigane väärtus.',
90 invalidHeight: 'Kõrgus peab olema number.', 90 invalidHeight: 'Kõrgus peab olema number.',
91 invalidWidth: 'Laius peab olema number.', 91 invalidWidth: 'Laius peab olema number.',
92 invalidCssLength: '"%1" välja jaoks määratud väärtus peab olema positiivne täisarv CSS ühikuga (px, %, in, cm, mm, em, ex, pt või pc) või ilma.', 92 invalidCssLength: '"%1" välja jaoks määratud väärtus peab olema positiivne täisarv CSS ühikuga (px, %, in, cm, mm, em, ex, pt või pc) või ilma.',
@@ -95,6 +95,23 @@ CKEDITOR.lang[ 'et' ] = {
95 cssLengthTooltip: 'Sisesta väärtus pikslites või number koos sobiva CSS-i ühikuga (px, %, in, cm, mm, em, ex, pt või pc).', 95 cssLengthTooltip: 'Sisesta väärtus pikslites või number koos sobiva CSS-i ühikuga (px, %, in, cm, mm, em, ex, pt või pc).',
96 96
97 // Put the voice-only part of the label in the span. 97 // Put the voice-only part of the label in the span.
98 unavailable: '%1<span class="cke_accessibility">, pole saadaval</span>' 98 unavailable: '%1<span class="cke_accessibility">, pole saadaval</span>',
99
100 // Keyboard keys translations used for creating shortcuts descriptions in tooltips, context menus and ARIA labels.
101 keyboard: {
102 8: 'Backspace', // MISSING
103 13: 'Enter', // MISSING
104 16: 'Shift', // MISSING
105 17: 'Ctrl', // MISSING
106 18: 'Alt', // MISSING
107 32: 'Space', // MISSING
108 35: 'End', // MISSING
109 36: 'Home', // MISSING
110 46: 'Delete', // MISSING
111 224: 'Command' // MISSING
112 },
113
114 // Prepended to ARIA labels with shortcuts.
115 keyboardShortcut: 'Keyboard shortcut' // MISSING
99 } 116 }
100}; 117};
diff --git a/sources/lang/eu.js b/sources/lang/eu.js
index c0c0476..98b92ef 100644
--- a/sources/lang/eu.js
+++ b/sources/lang/eu.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -86,7 +86,7 @@ CKEDITOR.lang[ 'eu' ] = {
86 alignMiddle: 'Erdian', 86 alignMiddle: 'Erdian',
87 alignBottom: 'Behean', 87 alignBottom: 'Behean',
88 alignNone: 'Bat ere ez', 88 alignNone: 'Bat ere ez',
89 invalidValue : 'Balio desegokia.', 89 invalidValue: 'Balio desegokia.',
90 invalidHeight: 'Altuera zenbaki bat izan behar da.', 90 invalidHeight: 'Altuera zenbaki bat izan behar da.',
91 invalidWidth: 'Zabalera zenbaki bat izan behar da.', 91 invalidWidth: 'Zabalera zenbaki bat izan behar da.',
92 invalidCssLength: '"%1" eremurako zehaztutako balioak zenbaki positibo bat izan behar du, CSS neurri unitate batekin edo gabe (px, %, in, cm, mm, em, ex, pt edo pc).', 92 invalidCssLength: '"%1" eremurako zehaztutako balioak zenbaki positibo bat izan behar du, CSS neurri unitate batekin edo gabe (px, %, in, cm, mm, em, ex, pt edo pc).',
@@ -95,6 +95,23 @@ CKEDITOR.lang[ 'eu' ] = {
95 cssLengthTooltip: 'Sartu zenbaki bat edo zenbaki bat baliozko CSS unitate batekin (px, %, in, cm, mm, em, ex, pt, edo pc).', 95 cssLengthTooltip: 'Sartu zenbaki bat edo zenbaki bat baliozko CSS unitate batekin (px, %, in, cm, mm, em, ex, pt, edo pc).',
96 96
97 // Put the voice-only part of the label in the span. 97 // Put the voice-only part of the label in the span.
98 unavailable: '%1<span class="cke_accessibility">, erabilezina</span>' 98 unavailable: '%1<span class="cke_accessibility">, erabilezina</span>',
99
100 // Keyboard keys translations used for creating shortcuts descriptions in tooltips, context menus and ARIA labels.
101 keyboard: {
102 8: 'Backspace', // MISSING
103 13: 'Sartu',
104 16: 'Maius',
105 17: 'Ktrl',
106 18: 'Alt',
107 32: 'Space', // MISSING
108 35: 'Buka',
109 36: 'Etxea',
110 46: 'Ezabatu',
111 224: 'Command' // MISSING
112 },
113
114 // Prepended to ARIA labels with shortcuts.
115 keyboardShortcut: 'Keyboard shortcut' // MISSING
99 } 116 }
100}; 117};
diff --git a/sources/lang/fa.js b/sources/lang/fa.js
index 22c5349..3540510 100644
--- a/sources/lang/fa.js
+++ b/sources/lang/fa.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -86,7 +86,7 @@ CKEDITOR.lang[ 'fa' ] = {
86 alignMiddle: 'میانه', 86 alignMiddle: 'میانه',
87 alignBottom: 'پائین', 87 alignBottom: 'پائین',
88 alignNone: 'هیچ', 88 alignNone: 'هیچ',
89 invalidValue : 'مقدار نامعتبر.', 89 invalidValue: 'مقدار نامعتبر.',
90 invalidHeight: 'ارتفاع باید یک عدد باشد.', 90 invalidHeight: 'ارتفاع باید یک عدد باشد.',
91 invalidWidth: 'عرض باید یک عدد باشد.', 91 invalidWidth: 'عرض باید یک عدد باشد.',
92 invalidCssLength: 'عدد تعیین شده برای فیلد "%1" باید یک عدد مثبت با یا بدون یک واحد اندازه گیری CSS معتبر باشد (px, %, in, cm, mm, em, ex, pt, or pc).', 92 invalidCssLength: 'عدد تعیین شده برای فیلد "%1" باید یک عدد مثبت با یا بدون یک واحد اندازه گیری CSS معتبر باشد (px, %, in, cm, mm, em, ex, pt, or pc).',
@@ -95,6 +95,23 @@ CKEDITOR.lang[ 'fa' ] = {
95 cssLengthTooltip: 'یک عدد برای یک مقدار بر حسب پیکسل و یا یک عدد با یک واحد CSS معتبر وارد کنید (px, %, in, cm, mm, em, ex, pt, or pc).', 95 cssLengthTooltip: 'یک عدد برای یک مقدار بر حسب پیکسل و یا یک عدد با یک واحد CSS معتبر وارد کنید (px, %, in, cm, mm, em, ex, pt, or pc).',
96 96
97 // Put the voice-only part of the label in the span. 97 // Put the voice-only part of the label in the span.
98 unavailable: '%1<span class="cke_accessibility">، غیر قابل دسترس</span>' 98 unavailable: '%1<span class="cke_accessibility">، غیر قابل دسترس</span>',
99
100 // Keyboard keys translations used for creating shortcuts descriptions in tooltips, context menus and ARIA labels.
101 keyboard: {
102 8: 'عقبگرد',
103 13: 'ورود',
104 16: 'تعویض',
105 17: 'کنترل',
106 18: 'دگرساز',
107 32: 'Space', // MISSING
108 35: 'پایان',
109 36: 'خانه',
110 46: 'حذف',
111 224: 'Command' // MISSING
112 },
113
114 // Prepended to ARIA labels with shortcuts.
115 keyboardShortcut: 'Keyboard shortcut' // MISSING
99 } 116 }
100}; 117};
diff --git a/sources/lang/fi.js b/sources/lang/fi.js
index b7587ab..d10adab 100644
--- a/sources/lang/fi.js
+++ b/sources/lang/fi.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -86,7 +86,7 @@ CKEDITOR.lang[ 'fi' ] = {
86 alignMiddle: 'Keskelle', 86 alignMiddle: 'Keskelle',
87 alignBottom: 'Alas', 87 alignBottom: 'Alas',
88 alignNone: 'Ei asetettu', 88 alignNone: 'Ei asetettu',
89 invalidValue : 'Virheellinen arvo.', 89 invalidValue: 'Virheellinen arvo.',
90 invalidHeight: 'Korkeuden täytyy olla numero.', 90 invalidHeight: 'Korkeuden täytyy olla numero.',
91 invalidWidth: 'Leveyden täytyy olla numero.', 91 invalidWidth: 'Leveyden täytyy olla numero.',
92 invalidCssLength: 'Kentän "%1" arvon täytyy olla positiivinen luku CSS mittayksikön (px, %, in, cm, mm, em, ex, pt tai pc) kanssa tai ilman.', 92 invalidCssLength: 'Kentän "%1" arvon täytyy olla positiivinen luku CSS mittayksikön (px, %, in, cm, mm, em, ex, pt tai pc) kanssa tai ilman.',
@@ -95,6 +95,23 @@ CKEDITOR.lang[ 'fi' ] = {
95 cssLengthTooltip: 'Anna numeroarvo pikseleinä tai numeroarvo CSS mittayksikön kanssa (px, %, in, cm, mm, em, ex, pt, tai pc).', 95 cssLengthTooltip: 'Anna numeroarvo pikseleinä tai numeroarvo CSS mittayksikön kanssa (px, %, in, cm, mm, em, ex, pt, tai pc).',
96 96
97 // Put the voice-only part of the label in the span. 97 // Put the voice-only part of the label in the span.
98 unavailable: '%1<span class="cke_accessibility">, ei saatavissa</span>' 98 unavailable: '%1<span class="cke_accessibility">, ei saatavissa</span>',
99
100 // Keyboard keys translations used for creating shortcuts descriptions in tooltips, context menus and ARIA labels.
101 keyboard: {
102 8: 'Backspace', // MISSING
103 13: 'Enter', // MISSING
104 16: 'Shift', // MISSING
105 17: 'Ctrl', // MISSING
106 18: 'Alt', // MISSING
107 32: 'Space', // MISSING
108 35: 'End', // MISSING
109 36: 'Home', // MISSING
110 46: 'Delete', // MISSING
111 224: 'Command' // MISSING
112 },
113
114 // Prepended to ARIA labels with shortcuts.
115 keyboardShortcut: 'Keyboard shortcut' // MISSING
99 } 116 }
100}; 117};
diff --git a/sources/lang/fo.js b/sources/lang/fo.js
index 195454f..205b20f 100644
--- a/sources/lang/fo.js
+++ b/sources/lang/fo.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -86,7 +86,7 @@ CKEDITOR.lang[ 'fo' ] = {
86 alignMiddle: 'Miðja', 86 alignMiddle: 'Miðja',
87 alignBottom: 'Botnur', 87 alignBottom: 'Botnur',
88 alignNone: 'Eingin', 88 alignNone: 'Eingin',
89 invalidValue : 'Invalid value.', // MISSING 89 invalidValue: 'Invalid value.', // MISSING
90 invalidHeight: 'Hædd má vera eitt tal.', 90 invalidHeight: 'Hædd má vera eitt tal.',
91 invalidWidth: 'Breidd má vera eitt tal.', 91 invalidWidth: 'Breidd má vera eitt tal.',
92 invalidCssLength: 'Virðið sett í "%1" feltið má vera eitt positivt tal, við ella uttan gyldugum CSS mátieind (px, %, in, cm, mm, em, ex, pt, ella pc).', 92 invalidCssLength: 'Virðið sett í "%1" feltið má vera eitt positivt tal, við ella uttan gyldugum CSS mátieind (px, %, in, cm, mm, em, ex, pt, ella pc).',
@@ -95,6 +95,23 @@ CKEDITOR.lang[ 'fo' ] = {
95 cssLengthTooltip: 'Skriva eitt tal fyri eitt virði í pixels ella eitt tal við gyldigum CSS eind (px, %, in, cm, mm, em, ex, pt, ella pc).', 95 cssLengthTooltip: 'Skriva eitt tal fyri eitt virði í pixels ella eitt tal við gyldigum CSS eind (px, %, in, cm, mm, em, ex, pt, ella pc).',
96 96
97 // Put the voice-only part of the label in the span. 97 // Put the voice-only part of the label in the span.
98 unavailable: '%1<span class="cke_accessibility">, ikki tøkt</span>' 98 unavailable: '%1<span class="cke_accessibility">, ikki tøkt</span>',
99
100 // Keyboard keys translations used for creating shortcuts descriptions in tooltips, context menus and ARIA labels.
101 keyboard: {
102 8: 'Backspace', // MISSING
103 13: 'Enter', // MISSING
104 16: 'Shift', // MISSING
105 17: 'Ctrl', // MISSING
106 18: 'Alt', // MISSING
107 32: 'Space', // MISSING
108 35: 'End', // MISSING
109 36: 'Home', // MISSING
110 46: 'Delete', // MISSING
111 224: 'Command' // MISSING
112 },
113
114 // Prepended to ARIA labels with shortcuts.
115 keyboardShortcut: 'Keyboard shortcut' // MISSING
99 } 116 }
100}; 117};
diff --git a/sources/lang/fr-ca.js b/sources/lang/fr-ca.js
index a5f6279..2702f0c 100644
--- a/sources/lang/fr-ca.js
+++ b/sources/lang/fr-ca.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -86,7 +86,7 @@ CKEDITOR.lang[ 'fr-ca' ] = {
86 alignMiddle: 'Milieu', 86 alignMiddle: 'Milieu',
87 alignBottom: 'Bas', 87 alignBottom: 'Bas',
88 alignNone: 'None', // MISSING 88 alignNone: 'None', // MISSING
89 invalidValue : 'Valeur invalide.', 89 invalidValue: 'Valeur invalide.',
90 invalidHeight: 'La hauteur doit être un nombre.', 90 invalidHeight: 'La hauteur doit être un nombre.',
91 invalidWidth: 'La largeur doit être un nombre.', 91 invalidWidth: 'La largeur doit être un nombre.',
92 invalidCssLength: 'La valeur spécifiée pour le champ "%1" doit être un nombre positif avec ou sans unité de mesure CSS valide (px, %, in, cm, mm, em, ex, pt, ou pc).', 92 invalidCssLength: 'La valeur spécifiée pour le champ "%1" doit être un nombre positif avec ou sans unité de mesure CSS valide (px, %, in, cm, mm, em, ex, pt, ou pc).',
@@ -95,6 +95,23 @@ CKEDITOR.lang[ 'fr-ca' ] = {
95 cssLengthTooltip: 'Entrer un nombre pour la valeur en pixel ou un nombre avec une unité CSS valide (px, %, in, cm, mm, em, ex, pt, ou pc).', 95 cssLengthTooltip: 'Entrer un nombre pour la valeur en pixel ou un nombre avec une unité CSS valide (px, %, in, cm, mm, em, ex, pt, ou pc).',
96 96
97 // Put the voice-only part of the label in the span. 97 // Put the voice-only part of the label in the span.
98 unavailable: '%1<span class="cke_accessibility">, indisponible</span>' 98 unavailable: '%1<span class="cke_accessibility">, indisponible</span>',
99
100 // Keyboard keys translations used for creating shortcuts descriptions in tooltips, context menus and ARIA labels.
101 keyboard: {
102 8: 'Backspace', // MISSING
103 13: 'Enter', // MISSING
104 16: 'Shift', // MISSING
105 17: 'Ctrl', // MISSING
106 18: 'Alt', // MISSING
107 32: 'Space', // MISSING
108 35: 'End', // MISSING
109 36: 'Home', // MISSING
110 46: 'Delete', // MISSING
111 224: 'Command' // MISSING
112 },
113
114 // Prepended to ARIA labels with shortcuts.
115 keyboardShortcut: 'Keyboard shortcut' // MISSING
99 } 116 }
100}; 117};
diff --git a/sources/lang/fr.js b/sources/lang/fr.js
index 416ad76..5cd39b0 100644
--- a/sources/lang/fr.js
+++ b/sources/lang/fr.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -19,16 +19,16 @@
19 */ 19 */
20CKEDITOR.lang[ 'fr' ] = { 20CKEDITOR.lang[ 'fr' ] = {
21 // ARIA description. 21 // ARIA description.
22 editor: 'Éditeur de Texte Enrichi', 22 editor: 'Éditeur de texte enrichi',
23 editorPanel: 'Tableau de bord de l\'éditeur de texte enrichi', 23 editorPanel: 'Tableau de bord de l\'éditeur de texte enrichi',
24 24
25 // Common messages and labels. 25 // Common messages and labels.
26 common: { 26 common: {
27 // Screenreader titles. Please note that screenreaders are not always capable 27 // Screenreader titles. Please note that screenreaders are not always capable
28 // of reading non-English words. So be careful while translating it. 28 // of reading non-English words. So be careful while translating it.
29 editorHelp: 'Appuyez sur ALT-0 pour l\'aide', 29 editorHelp: 'Utilisez le raccourci Alt-0 pour obtenir de l\'aide',
30 30
31 browseServer: 'Explorer le serveur', 31 browseServer: 'Parcourir le serveur',
32 url: 'URL', 32 url: 'URL',
33 protocol: 'Protocole', 33 protocol: 'Protocole',
34 upload: 'Télécharger', 34 upload: 'Télécharger',
@@ -37,42 +37,42 @@ CKEDITOR.lang[ 'fr' ] = {
37 flash: 'Flash', 37 flash: 'Flash',
38 form: 'Formulaire', 38 form: 'Formulaire',
39 checkbox: 'Case à cocher', 39 checkbox: 'Case à cocher',
40 radio: 'Bouton Radio', 40 radio: 'Bouton radio',
41 textField: 'Champ texte', 41 textField: 'Champ texte',
42 textarea: 'Zone de texte', 42 textarea: 'Zone de texte',
43 hiddenField: 'Champ caché', 43 hiddenField: 'Champ invisible',
44 button: 'Bouton', 44 button: 'Bouton',
45 select: 'Liste déroulante', 45 select: 'Liste déroulante',
46 imageButton: 'Bouton image', 46 imageButton: 'Bouton avec image',
47 notSet: '<non défini>', 47 notSet: '<indéfini>',
48 id: 'Id', 48 id: 'ID',
49 name: 'Nom', 49 name: 'Nom',
50 langDir: 'Sens d\'écriture', 50 langDir: 'Sens d\'écriture',
51 langDirLtr: 'Gauche à droite (LTR)', 51 langDirLtr: 'Gauche à droite (LTR)',
52 langDirRtl: 'Droite à gauche (RTL)', 52 langDirRtl: 'Droite à gauche (RTL)',
53 langCode: 'Code de langue', 53 langCode: 'Code de langue',
54 longDescr: 'URL de description longue (longdesc => malvoyant)', 54 longDescr: 'URL de description longue',
55 cssClass: 'Classe CSS', 55 cssClass: 'Classes de style',
56 advisoryTitle: 'Description (title)', 56 advisoryTitle: 'Infobulle',
57 cssStyle: 'Style', 57 cssStyle: 'Style',
58 ok: 'OK', 58 ok: 'OK',
59 cancel: 'Annuler', 59 cancel: 'Annuler',
60 close: 'Fermer', 60 close: 'Fermer',
61 preview: 'Aperçu', 61 preview: 'Aperçu',
62 resize: 'Déplacer pour modifier la taille', 62 resize: 'Redimensionner',
63 generalTab: 'Général', 63 generalTab: 'Général',
64 advancedTab: 'Avancé', 64 advancedTab: 'Avancé',
65 validateNumberFailed: 'Cette valeur n\'est pas un nombre.', 65 validateNumberFailed: 'Cette valeur n\'est pas un nombre.',
66 confirmNewPage: 'Les changements non sauvegardés seront perdus. Êtes-vous sûr de vouloir charger une nouvelle page?', 66 confirmNewPage: 'Les changements non sauvegardés seront perdus. Êtes-vous sûr de vouloir charger une nouvelle page ?',
67 confirmCancel: 'Certaines options ont été modifiées. Êtes-vous sûr de vouloir fermer?', 67 confirmCancel: 'Certaines options ont été modifiées. Êtes-vous sûr de vouloir fermer ?',
68 options: 'Options', 68 options: 'Options',
69 target: 'Cible (Target)', 69 target: 'Cible',
70 targetNew: 'Nouvelle fenêtre (_blank)', 70 targetNew: 'Nouvelle fenêtre (_blank)',
71 targetTop: 'Fenêtre supérieure (_top)', 71 targetTop: 'Fenêtre supérieure (_top)',
72 targetSelf: 'Même fenêtre (_self)', 72 targetSelf: 'Même fenêtre (_self)',
73 targetParent: 'Fenêtre parent (_parent)', 73 targetParent: 'Fenêtre parent (_parent)',
74 langDirLTR: 'Gauche à Droite (LTR)', 74 langDirLTR: 'Gauche à droite (LTR)',
75 langDirRTL: 'Droite à Gauche (RTL)', 75 langDirRTL: 'Droite à gauche (RTL)',
76 styles: 'Style', 76 styles: 'Style',
77 cssClasses: 'Classes de style', 77 cssClasses: 'Classes de style',
78 width: 'Largeur', 78 width: 'Largeur',
@@ -80,21 +80,38 @@ CKEDITOR.lang[ 'fr' ] = {
80 align: 'Alignement', 80 align: 'Alignement',
81 alignLeft: 'Gauche', 81 alignLeft: 'Gauche',
82 alignRight: 'Droite', 82 alignRight: 'Droite',
83 alignCenter: 'Centré', 83 alignCenter: 'Centrer',
84 alignJustify: 'Justifier', 84 alignJustify: 'Justifier',
85 alignTop: 'Haut', 85 alignTop: 'Haut',
86 alignMiddle: 'Milieu', 86 alignMiddle: 'Milieu',
87 alignBottom: 'Bas', 87 alignBottom: 'Bas',
88 alignNone: 'Aucun', 88 alignNone: 'Aucun',
89 invalidValue : 'Valeur incorrecte.', 89 invalidValue: 'Valeur invalide.',
90 invalidHeight: 'La hauteur doit être un nombre.', 90 invalidHeight: 'La hauteur doit être un nombre.',
91 invalidWidth: 'La largeur doit être un nombre.', 91 invalidWidth: 'La largeur doit être un nombre.',
92 invalidCssLength: 'La valeur spécifiée pour le champ "%1" doit être un nombre positif avec ou sans unité de mesure CSS valide (px, %, in, cm, mm, em, ex, pt, ou pc).', 92 invalidCssLength: 'La valeur spécifiée pour le champ « %1 » doit être un nombre positif avec ou sans unité de mesure CSS valide (px, %, in, cm, mm, em, ex, pt, ou pc).',
93 invalidHtmlLength: 'La valeur spécifiée pour le champ "%1" doit être un nombre positif avec ou sans unité de mesure HTML valide (px ou %).', 93 invalidHtmlLength: 'La valeur spécifiée pour le champ « %1 » doit être un nombre positif avec ou sans unité de mesure HTML valide (px ou %).',
94 invalidInlineStyle: 'La valeur spécifiée pour le style inline doit être composée d\'un ou plusieurs couples de valeur au format "nom : valeur", separés par des points-virgules.', 94 invalidInlineStyle: 'La valeur spécifiée pour le style en ligne doit être composée d\'un ou plusieurs couples au format « nom : valeur », séparés par des points-virgules.',
95 cssLengthTooltip: 'Entrer un nombre pour une valeur en pixels ou un nombre avec une unité de mesure CSS valide (px, %, in, cm, mm, em, ex, pt, ou pc).', 95 cssLengthTooltip: 'Entrer un nombre pour une valeur en pixels ou un nombre avec une unité de mesure CSS valide (px, %, in, cm, mm, em, ex, pt, ou pc).',
96 96
97 // Put the voice-only part of the label in the span. 97 // Put the voice-only part of the label in the span.
98 unavailable: '%1<span class="cke_accessibility">, Indisponible</span>' 98 unavailable: '%1<span class="cke_accessibility">, indisponible</span>',
99
100 // Keyboard keys translations used for creating shortcuts descriptions in tooltips, context menus and ARIA labels.
101 keyboard: {
102 8: 'Retour arrière',
103 13: 'Entrée',
104 16: 'Majuscule',
105 17: 'Ctrl',
106 18: 'Alt',
107 32: 'Espace',
108 35: 'Fin',
109 36: 'Origine',
110 46: 'Supprimer',
111 224: 'Commande'
112 },
113
114 // Prepended to ARIA labels with shortcuts.
115 keyboardShortcut: 'Raccourci clavier'
99 } 116 }
100}; 117};
diff --git a/sources/lang/gl.js b/sources/lang/gl.js
index 95e779d..092db98 100644
--- a/sources/lang/gl.js
+++ b/sources/lang/gl.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -86,7 +86,7 @@ CKEDITOR.lang[ 'gl' ] = {
86 alignMiddle: 'Centro', 86 alignMiddle: 'Centro',
87 alignBottom: 'Abaixo', 87 alignBottom: 'Abaixo',
88 alignNone: 'Ningún', 88 alignNone: 'Ningún',
89 invalidValue : 'Valor incorrecto.', 89 invalidValue: 'Valor incorrecto.',
90 invalidHeight: 'O alto debe ser un número.', 90 invalidHeight: 'O alto debe ser un número.',
91 invalidWidth: 'O largo debe ser un número.', 91 invalidWidth: 'O largo debe ser un número.',
92 invalidCssLength: 'O valor especificado para o campo «%1» debe ser un número positivo con ou sen unha unidade de medida CSS correcta (px, %, in, cm, mm, em, ex, pt, ou pc).', 92 invalidCssLength: 'O valor especificado para o campo «%1» debe ser un número positivo con ou sen unha unidade de medida CSS correcta (px, %, in, cm, mm, em, ex, pt, ou pc).',
@@ -95,6 +95,23 @@ CKEDITOR.lang[ 'gl' ] = {
95 cssLengthTooltip: 'Escriba un número para o valor en píxeles ou un número cunha unidade CSS correcta (px, %, in, cm, mm, em, ex, pt, ou pc).', 95 cssLengthTooltip: 'Escriba un número para o valor en píxeles ou un número cunha unidade CSS correcta (px, %, in, cm, mm, em, ex, pt, ou pc).',
96 96
97 // Put the voice-only part of the label in the span. 97 // Put the voice-only part of the label in the span.
98 unavailable: '%1<span class="cke_accessibility">, non dispoñíbel</span>' 98 unavailable: '%1<span class="cke_accessibility">, non dispoñíbel</span>',
99
100 // Keyboard keys translations used for creating shortcuts descriptions in tooltips, context menus and ARIA labels.
101 keyboard: {
102 8: 'Ir atrás',
103 13: 'Intro',
104 16: 'Maiús',
105 17: 'Ctrl',
106 18: 'Alt',
107 32: 'Espazo',
108 35: 'Fin',
109 36: 'Inicio',
110 46: 'Supr',
111 224: 'Orde'
112 },
113
114 // Prepended to ARIA labels with shortcuts.
115 keyboardShortcut: 'Atallo de teclado'
99 } 116 }
100}; 117};
diff --git a/sources/lang/gu.js b/sources/lang/gu.js
index 5e17553..17862d0 100644
--- a/sources/lang/gu.js
+++ b/sources/lang/gu.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -86,7 +86,7 @@ CKEDITOR.lang[ 'gu' ] = {
86 alignMiddle: 'વચ્ચે', 86 alignMiddle: 'વચ્ચે',
87 alignBottom: 'નીચે', 87 alignBottom: 'નીચે',
88 alignNone: 'None', // MISSING 88 alignNone: 'None', // MISSING
89 invalidValue : 'Invalid value.', // MISSING 89 invalidValue: 'Invalid value.', // MISSING
90 invalidHeight: 'ઉંચાઈ એક આંકડો હોવો જોઈએ.', 90 invalidHeight: 'ઉંચાઈ એક આંકડો હોવો જોઈએ.',
91 invalidWidth: 'પોહળ ઈ એક આંકડો હોવો જોઈએ.', 91 invalidWidth: 'પોહળ ઈ એક આંકડો હોવો જોઈએ.',
92 invalidCssLength: '"%1" ની વેલ્યુ એક પોસીટીવ આંકડો હોવો જોઈએ અથવા CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc) વગર.', 92 invalidCssLength: '"%1" ની વેલ્યુ એક પોસીટીવ આંકડો હોવો જોઈએ અથવા CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc) વગર.',
@@ -95,6 +95,23 @@ CKEDITOR.lang[ 'gu' ] = {
95 cssLengthTooltip: 'પિક્ષ્લ્ નો આંકડો CSS unit (px, %, in, cm, mm, em, ex, pt, or pc) માં નાખો.', 95 cssLengthTooltip: 'પિક્ષ્લ્ નો આંકડો CSS unit (px, %, in, cm, mm, em, ex, pt, or pc) માં નાખો.',
96 96
97 // Put the voice-only part of the label in the span. 97 // Put the voice-only part of the label in the span.
98 unavailable: '%1<span class="cke_accessibility">, નથી મળતું</span>' 98 unavailable: '%1<span class="cke_accessibility">, નથી મળતું</span>',
99
100 // Keyboard keys translations used for creating shortcuts descriptions in tooltips, context menus and ARIA labels.
101 keyboard: {
102 8: 'Backspace', // MISSING
103 13: 'Enter', // MISSING
104 16: 'Shift', // MISSING
105 17: 'Ctrl', // MISSING
106 18: 'Alt', // MISSING
107 32: 'Space', // MISSING
108 35: 'End', // MISSING
109 36: 'Home', // MISSING
110 46: 'Delete', // MISSING
111 224: 'Command' // MISSING
112 },
113
114 // Prepended to ARIA labels with shortcuts.
115 keyboardShortcut: 'Keyboard shortcut' // MISSING
99 } 116 }
100}; 117};
diff --git a/sources/lang/he.js b/sources/lang/he.js
index 59e1711..27b57bd 100644
--- a/sources/lang/he.js
+++ b/sources/lang/he.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -86,7 +86,7 @@ CKEDITOR.lang[ 'he' ] = {
86 alignMiddle: 'לאמצע', 86 alignMiddle: 'לאמצע',
87 alignBottom: 'לתחתית', 87 alignBottom: 'לתחתית',
88 alignNone: 'None', // MISSING 88 alignNone: 'None', // MISSING
89 invalidValue : 'ערך לא חוקי.', 89 invalidValue: 'ערך לא חוקי.',
90 invalidHeight: 'הגובה חייב להיות מספר.', 90 invalidHeight: 'הגובה חייב להיות מספר.',
91 invalidWidth: 'הרוחב חייב להיות מספר.', 91 invalidWidth: 'הרוחב חייב להיות מספר.',
92 invalidCssLength: 'הערך שצוין לשדה "%1" חייב להיות מספר חיובי עם או ללא יחידת מידה חוקית של CSS (px, %, in, cm, mm, em, ex, pt, או pc).', 92 invalidCssLength: 'הערך שצוין לשדה "%1" חייב להיות מספר חיובי עם או ללא יחידת מידה חוקית של CSS (px, %, in, cm, mm, em, ex, pt, או pc).',
@@ -95,6 +95,23 @@ CKEDITOR.lang[ 'he' ] = {
95 cssLengthTooltip: 'יש להכניס מספר המייצג פיקסלים או מספר עם יחידת גליונות סגנון תקינה (px, %, in, cm, mm, em, ex, pt, או pc).', 95 cssLengthTooltip: 'יש להכניס מספר המייצג פיקסלים או מספר עם יחידת גליונות סגנון תקינה (px, %, in, cm, mm, em, ex, pt, או pc).',
96 96
97 // Put the voice-only part of the label in the span. 97 // Put the voice-only part of the label in the span.
98 unavailable: '%1<span class="cke_accessibility">, לא זמין</span>' 98 unavailable: '%1<span class="cke_accessibility">, לא זמין</span>',
99
100 // Keyboard keys translations used for creating shortcuts descriptions in tooltips, context menus and ARIA labels.
101 keyboard: {
102 8: 'Backspace',
103 13: 'Enter',
104 16: 'Shift',
105 17: 'Ctrl',
106 18: 'Alt',
107 32: 'Space', // MISSING
108 35: 'End',
109 36: 'Home',
110 46: 'מחק',
111 224: 'Command' // MISSING
112 },
113
114 // Prepended to ARIA labels with shortcuts.
115 keyboardShortcut: 'Keyboard shortcut' // MISSING
99 } 116 }
100}; 117};
diff --git a/sources/lang/hi.js b/sources/lang/hi.js
index bd6ca83..e0b29a3 100644
--- a/sources/lang/hi.js
+++ b/sources/lang/hi.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -86,7 +86,7 @@ CKEDITOR.lang[ 'hi' ] = {
86 alignMiddle: 'मध्य', 86 alignMiddle: 'मध्य',
87 alignBottom: 'नीचे', 87 alignBottom: 'नीचे',
88 alignNone: 'None', // MISSING 88 alignNone: 'None', // MISSING
89 invalidValue : 'Invalid value.', // MISSING 89 invalidValue: 'Invalid value.', // MISSING
90 invalidHeight: 'Height must be a number.', // MISSING 90 invalidHeight: 'Height must be a number.', // MISSING
91 invalidWidth: 'Width must be a number.', // MISSING 91 invalidWidth: 'Width must be a number.', // MISSING
92 invalidCssLength: 'Value specified for the "%1" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).', // MISSING 92 invalidCssLength: 'Value specified for the "%1" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).', // MISSING
@@ -95,6 +95,23 @@ CKEDITOR.lang[ 'hi' ] = {
95 cssLengthTooltip: 'Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).', // MISSING 95 cssLengthTooltip: 'Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).', // MISSING
96 96
97 // Put the voice-only part of the label in the span. 97 // Put the voice-only part of the label in the span.
98 unavailable: '%1<span class="cke_accessibility">, unavailable</span>' // MISSING 98 unavailable: '%1<span class="cke_accessibility">, unavailable</span>', // MISSING
99
100 // Keyboard keys translations used for creating shortcuts descriptions in tooltips, context menus and ARIA labels.
101 keyboard: {
102 8: 'Backspace', // MISSING
103 13: 'Enter', // MISSING
104 16: 'Shift', // MISSING
105 17: 'Ctrl', // MISSING
106 18: 'Alt', // MISSING
107 32: 'Space', // MISSING
108 35: 'End', // MISSING
109 36: 'Home', // MISSING
110 46: 'Delete', // MISSING
111 224: 'Command' // MISSING
112 },
113
114 // Prepended to ARIA labels with shortcuts.
115 keyboardShortcut: 'Keyboard shortcut' // MISSING
99 } 116 }
100}; 117};
diff --git a/sources/lang/hr.js b/sources/lang/hr.js
index 52db970..7bf089e 100644
--- a/sources/lang/hr.js
+++ b/sources/lang/hr.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -85,8 +85,8 @@ CKEDITOR.lang[ 'hr' ] = {
85 alignTop: 'Vrh', 85 alignTop: 'Vrh',
86 alignMiddle: 'Sredina', 86 alignMiddle: 'Sredina',
87 alignBottom: 'Dolje', 87 alignBottom: 'Dolje',
88 alignNone: 'None', // MISSING 88 alignNone: 'Bez poravnanja',
89 invalidValue : 'Neispravna vrijednost.', 89 invalidValue: 'Neispravna vrijednost.',
90 invalidHeight: 'Visina mora biti broj.', 90 invalidHeight: 'Visina mora biti broj.',
91 invalidWidth: 'Širina mora biti broj.', 91 invalidWidth: 'Širina mora biti broj.',
92 invalidCssLength: 'Vrijednost određena za "%1" polje mora biti pozitivni broj sa ili bez važećih CSS mjernih jedinica (px, %, in, cm, mm, em, ex, pt ili pc).', 92 invalidCssLength: 'Vrijednost određena za "%1" polje mora biti pozitivni broj sa ili bez važećih CSS mjernih jedinica (px, %, in, cm, mm, em, ex, pt ili pc).',
@@ -95,6 +95,23 @@ CKEDITOR.lang[ 'hr' ] = {
95 cssLengthTooltip: 'Unesite broj za vrijednost u pikselima ili broj s važećim CSS mjernim jedinicama (px, %, in, cm, mm, em, ex, pt ili pc).', 95 cssLengthTooltip: 'Unesite broj za vrijednost u pikselima ili broj s važećim CSS mjernim jedinicama (px, %, in, cm, mm, em, ex, pt ili pc).',
96 96
97 // Put the voice-only part of the label in the span. 97 // Put the voice-only part of the label in the span.
98 unavailable: '%1<span class="cke_accessibility">, nedostupno</span>' 98 unavailable: '%1<span class="cke_accessibility">, nedostupno</span>',
99
100 // Keyboard keys translations used for creating shortcuts descriptions in tooltips, context menus and ARIA labels.
101 keyboard: {
102 8: 'Backspace',
103 13: 'Enter',
104 16: 'Shift',
105 17: 'Ctrl',
106 18: 'Alt',
107 32: 'Space',
108 35: 'End',
109 36: 'Home',
110 46: 'Delete',
111 224: 'Command'
112 },
113
114 // Prepended to ARIA labels with shortcuts.
115 keyboardShortcut: 'Prečica na tipkovnici'
99 } 116 }
100}; 117};
diff --git a/sources/lang/hu.js b/sources/lang/hu.js
index 91746f1..6f6e91e 100644
--- a/sources/lang/hu.js
+++ b/sources/lang/hu.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -85,8 +85,8 @@ CKEDITOR.lang[ 'hu' ] = {
85 alignTop: 'Tetejére', 85 alignTop: 'Tetejére',
86 alignMiddle: 'Középre', 86 alignMiddle: 'Középre',
87 alignBottom: 'Aljára', 87 alignBottom: 'Aljára',
88 alignNone: 'None', // MISSING 88 alignNone: 'Semmi',
89 invalidValue : 'Érvénytelen érték.', 89 invalidValue: 'Érvénytelen érték.',
90 invalidHeight: 'A magasság mezőbe csak számokat írhat.', 90 invalidHeight: 'A magasság mezőbe csak számokat írhat.',
91 invalidWidth: 'A szélesség mezőbe csak számokat írhat.', 91 invalidWidth: 'A szélesség mezőbe csak számokat írhat.',
92 invalidCssLength: '"%1"-hez megadott érték csakis egy pozitív szám lehet, esetleg egy érvényes CSS egységgel megjelölve(px, %, in, cm, mm, em, ex, pt vagy pc).', 92 invalidCssLength: '"%1"-hez megadott érték csakis egy pozitív szám lehet, esetleg egy érvényes CSS egységgel megjelölve(px, %, in, cm, mm, em, ex, pt vagy pc).',
@@ -95,6 +95,23 @@ CKEDITOR.lang[ 'hu' ] = {
95 cssLengthTooltip: 'Adjon meg egy számot értéknek pixelekben vagy egy számot érvényes CSS mértékegységben (px, %, in, cm, mm, em, ex, pt, vagy pc).', 95 cssLengthTooltip: 'Adjon meg egy számot értéknek pixelekben vagy egy számot érvényes CSS mértékegységben (px, %, in, cm, mm, em, ex, pt, vagy pc).',
96 96
97 // Put the voice-only part of the label in the span. 97 // Put the voice-only part of the label in the span.
98 unavailable: '%1<span class="cke_accessibility">, nem elérhető</span>' 98 unavailable: '%1<span class="cke_accessibility">, nem elérhető</span>',
99
100 // Keyboard keys translations used for creating shortcuts descriptions in tooltips, context menus and ARIA labels.
101 keyboard: {
102 8: 'Backspace',
103 13: 'Enter',
104 16: 'Shift',
105 17: 'Ctrl',
106 18: 'Alt',
107 32: 'Space',
108 35: 'End',
109 36: 'Home',
110 46: 'Delete',
111 224: 'Command'
112 },
113
114 // Prepended to ARIA labels with shortcuts.
115 keyboardShortcut: 'Gyorsbillentyű'
99 } 116 }
100}; 117};
diff --git a/sources/lang/id.js b/sources/lang/id.js
index f48c51b..86e7076 100644
--- a/sources/lang/id.js
+++ b/sources/lang/id.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -19,7 +19,7 @@
19CKEDITOR.lang[ 'id' ] = { 19CKEDITOR.lang[ 'id' ] = {
20 // ARIA description. 20 // ARIA description.
21 editor: 'Rich Text Editor', 21 editor: 'Rich Text Editor',
22 editorPanel: 'Rich Text Editor panel', // MISSING 22 editorPanel: 'Panel Rich Text Editor',
23 23
24 // Common messages and labels. 24 // Common messages and labels.
25 common: { 25 common: {
@@ -60,16 +60,16 @@ CKEDITOR.lang[ 'id' ] = {
60 preview: 'Pratinjau', 60 preview: 'Pratinjau',
61 resize: 'Ubah ukuran', 61 resize: 'Ubah ukuran',
62 generalTab: 'Umum', 62 generalTab: 'Umum',
63 advancedTab: 'Advanced', // MISSING 63 advancedTab: 'Lebih Lanjut',
64 validateNumberFailed: 'Nilai ini tidak sebuah angka', 64 validateNumberFailed: 'Nilai ini tidak sebuah angka',
65 confirmNewPage: 'Semua perubahan yang tidak disimpan di konten ini akan hilang. Apakah anda yakin ingin memuat halaman baru?', 65 confirmNewPage: 'Semua perubahan yang tidak disimpan di konten ini akan hilang. Apakah anda yakin ingin memuat halaman baru?',
66 confirmCancel: 'Beberapa opsi telah berubah. Apakah anda yakin ingin menutup dialog?', 66 confirmCancel: 'Beberapa opsi telah berubah. Apakah anda yakin ingin menutup dialog?',
67 options: 'Opsi', 67 options: 'Opsi',
68 target: 'Sasaran', 68 target: 'Sasaran',
69 targetNew: 'Jendela Baru (_blank)', 69 targetNew: 'Jendela Baru (_blank)',
70 targetTop: 'Topmost Window (_top)', // MISSING 70 targetTop: 'Laman Atas (_top)',
71 targetSelf: 'Jendela yang Sama (_self)', 71 targetSelf: 'Jendela yang Sama (_self)',
72 targetParent: 'Parent Window (_parent)', // MISSING 72 targetParent: 'Jendela Induk (_parent)',
73 langDirLTR: 'Kiri ke Kanan (LTR)', 73 langDirLTR: 'Kiri ke Kanan (LTR)',
74 langDirRTL: 'Kanan ke Kiri (RTL)', 74 langDirRTL: 'Kanan ke Kiri (RTL)',
75 styles: 'Gaya', 75 styles: 'Gaya',
@@ -84,16 +84,33 @@ CKEDITOR.lang[ 'id' ] = {
84 alignTop: 'Atas', 84 alignTop: 'Atas',
85 alignMiddle: 'Tengah', 85 alignMiddle: 'Tengah',
86 alignBottom: 'Bawah', 86 alignBottom: 'Bawah',
87 alignNone: 'None', // MISSING 87 alignNone: 'Tidak ada',
88 invalidValue : 'Nilai tidak sah.', 88 invalidValue: 'Nilai tidak sah.',
89 invalidHeight: 'Tinggi harus sebuah angka.', 89 invalidHeight: 'Tinggi harus sebuah angka.',
90 invalidWidth: 'Lebar harus sebuah angka.', 90 invalidWidth: 'Lebar harus sebuah angka.',
91 invalidCssLength: 'Nilai untuk "%1" harus sebuah angkat positif dengan atau tanpa pengukuran unit CSS yang sah (px, %, in, cm, mm, em, ex, pt, or pc).', 91 invalidCssLength: 'Nilai untuk "%1" harus sebuah angkat positif dengan atau tanpa pengukuran unit CSS yang sah (px, %, in, cm, mm, em, ex, pt, or pc).',
92 invalidHtmlLength: 'Nilai yang dispesifikasian untuk kolom "%1" harus sebuah angka positif dengan atau tanpa sebuah unit pengukuran HTML (px atau %) yang valid.', 92 invalidHtmlLength: 'Nilai yang dispesifikasian untuk kolom "%1" harus sebuah angka positif dengan atau tanpa sebuah unit pengukuran HTML (px atau %) yang valid.',
93 invalidInlineStyle: 'Value specified for the inline style must consist of one or more tuples with the format of "name : value", separated by semi-colons.', // MISSING 93 invalidInlineStyle: 'Nilai pada inline style merupakan pasangan nama dan nilai dengan format "nama : nilai", yang dipisahkan dengan titik dua.',
94 cssLengthTooltip: 'Masukkan sebuah angka untuk sebuah nilai dalam pixel atau sebuah angka dengan unit CSS yang sah (px, %, in, cm, mm, em, ex, pt, or pc).', 94 cssLengthTooltip: 'Masukkan sebuah angka untuk sebuah nilai dalam pixel atau sebuah angka dengan unit CSS yang sah (px, %, in, cm, mm, em, ex, pt, or pc).',
95 95
96 // Put the voice-only part of the label in the span. 96 // Put the voice-only part of the label in the span.
97 unavailable: '%1<span class="cke_accessibility">, tidak tersedia</span>' 97 unavailable: '%1<span class="cke_accessibility">, tidak tersedia</span>',
98
99 // Keyboard keys translations used for creating shortcuts descriptions in tooltips, context menus and ARIA labels.
100 keyboard: {
101 8: 'Backspace',
102 13: 'Enter',
103 16: 'Shift',
104 17: 'Ctrl',
105 18: 'Alt',
106 32: 'Spasi',
107 35: 'End',
108 36: 'Home',
109 46: 'Hapus',
110 224: 'Command'
111 },
112
113 // Prepended to ARIA labels with shortcuts.
114 keyboardShortcut: 'Pintasan Keyboard'
98 } 115 }
99}; 116};
diff --git a/sources/lang/is.js b/sources/lang/is.js
index ecdb318..256b667 100644
--- a/sources/lang/is.js
+++ b/sources/lang/is.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -86,7 +86,7 @@ CKEDITOR.lang[ 'is' ] = {
86 alignMiddle: 'Miðjuð', 86 alignMiddle: 'Miðjuð',
87 alignBottom: 'Neðst', 87 alignBottom: 'Neðst',
88 alignNone: 'None', // MISSING 88 alignNone: 'None', // MISSING
89 invalidValue : 'Invalid value.', // MISSING 89 invalidValue: 'Invalid value.', // MISSING
90 invalidHeight: 'Height must be a number.', // MISSING 90 invalidHeight: 'Height must be a number.', // MISSING
91 invalidWidth: 'Width must be a number.', // MISSING 91 invalidWidth: 'Width must be a number.', // MISSING
92 invalidCssLength: 'Value specified for the "%1" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).', // MISSING 92 invalidCssLength: 'Value specified for the "%1" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).', // MISSING
@@ -95,6 +95,23 @@ CKEDITOR.lang[ 'is' ] = {
95 cssLengthTooltip: 'Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).', // MISSING 95 cssLengthTooltip: 'Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).', // MISSING
96 96
97 // Put the voice-only part of the label in the span. 97 // Put the voice-only part of the label in the span.
98 unavailable: '%1<span class="cke_accessibility">, unavailable</span>' // MISSING 98 unavailable: '%1<span class="cke_accessibility">, unavailable</span>', // MISSING
99
100 // Keyboard keys translations used for creating shortcuts descriptions in tooltips, context menus and ARIA labels.
101 keyboard: {
102 8: 'Backspace', // MISSING
103 13: 'Enter', // MISSING
104 16: 'Shift', // MISSING
105 17: 'Ctrl', // MISSING
106 18: 'Alt', // MISSING
107 32: 'Space', // MISSING
108 35: 'End', // MISSING
109 36: 'Home', // MISSING
110 46: 'Delete', // MISSING
111 224: 'Command' // MISSING
112 },
113
114 // Prepended to ARIA labels with shortcuts.
115 keyboardShortcut: 'Keyboard shortcut' // MISSING
99 } 116 }
100}; 117};
diff --git a/sources/lang/it.js b/sources/lang/it.js
index 5c7863f..8229aad 100644
--- a/sources/lang/it.js
+++ b/sources/lang/it.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -86,7 +86,7 @@ CKEDITOR.lang[ 'it' ] = {
86 alignMiddle: 'Centrato', 86 alignMiddle: 'Centrato',
87 alignBottom: 'In Basso', 87 alignBottom: 'In Basso',
88 alignNone: 'Nessuno', 88 alignNone: 'Nessuno',
89 invalidValue : 'Valore non valido.', 89 invalidValue: 'Valore non valido.',
90 invalidHeight: 'L\'altezza dev\'essere un numero', 90 invalidHeight: 'L\'altezza dev\'essere un numero',
91 invalidWidth: 'La Larghezza dev\'essere un numero', 91 invalidWidth: 'La Larghezza dev\'essere un numero',
92 invalidCssLength: 'Il valore indicato per il campo "%1" deve essere un numero positivo con o senza indicazione di una valida unità di misura per le classi CSS (px, %, in, cm, mm, em, ex, pt, o pc).', 92 invalidCssLength: 'Il valore indicato per il campo "%1" deve essere un numero positivo con o senza indicazione di una valida unità di misura per le classi CSS (px, %, in, cm, mm, em, ex, pt, o pc).',
@@ -95,6 +95,23 @@ CKEDITOR.lang[ 'it' ] = {
95 cssLengthTooltip: 'Inserisci un numero per il valore in pixel oppure un numero con una valida unità CSS (px, %, in, cm, mm, ex, pt, o pc).', 95 cssLengthTooltip: 'Inserisci un numero per il valore in pixel oppure un numero con una valida unità CSS (px, %, in, cm, mm, ex, pt, o pc).',
96 96
97 // Put the voice-only part of the label in the span. 97 // Put the voice-only part of the label in the span.
98 unavailable: '%1<span class="cke_accessibility">, non disponibile</span>' 98 unavailable: '%1<span class="cke_accessibility">, non disponibile</span>',
99
100 // Keyboard keys translations used for creating shortcuts descriptions in tooltips, context menus and ARIA labels.
101 keyboard: {
102 8: 'Backspace',
103 13: 'Invio',
104 16: 'Maiusc',
105 17: 'Ctrl',
106 18: 'Alt',
107 32: 'Spazio',
108 35: 'Fine',
109 36: 'Inizio',
110 46: 'Canc',
111 224: 'Comando'
112 },
113
114 // Prepended to ARIA labels with shortcuts.
115 keyboardShortcut: 'Scorciatoia da tastiera'
99 } 116 }
100}; 117};
diff --git a/sources/lang/ja.js b/sources/lang/ja.js
index 50df2a2..17dcefc 100644
--- a/sources/lang/ja.js
+++ b/sources/lang/ja.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -62,7 +62,7 @@ CKEDITOR.lang[ 'ja' ] = {
62 resize: 'ドラッグしてリサイズ', 62 resize: 'ドラッグしてリサイズ',
63 generalTab: '全般', 63 generalTab: '全般',
64 advancedTab: '高度な設定', 64 advancedTab: '高度な設定',
65 validateNumberFailed: '値が数ではありません', 65 validateNumberFailed: '値が数ではありません',
66 confirmNewPage: '変更内容を保存せず、 新しいページを開いてもよろしいでしょうか?', 66 confirmNewPage: '変更内容を保存せず、 新しいページを開いてもよろしいでしょうか?',
67 confirmCancel: 'オプション設定を変更しました。ダイアログを閉じてもよろしいでしょうか?', 67 confirmCancel: 'オプション設定を変更しました。ダイアログを閉じてもよろしいでしょうか?',
68 options: 'オプション', 68 options: 'オプション',
@@ -86,7 +86,7 @@ CKEDITOR.lang[ 'ja' ] = {
86 alignMiddle: '中央', 86 alignMiddle: '中央',
87 alignBottom: '下', 87 alignBottom: '下',
88 alignNone: 'なし', 88 alignNone: 'なし',
89 invalidValue : '不正な値です。', 89 invalidValue: '不正な値です。',
90 invalidHeight: '高さは数値で入力してください。', 90 invalidHeight: '高さは数値で入力してください。',
91 invalidWidth: '幅は数値で入力してください。', 91 invalidWidth: '幅は数値で入力してください。',
92 invalidCssLength: '入力された "%1" 項目の値は、CSSの大きさ(px, %, in, cm, mm, em, ex, pt, または pc)が正しいものである/ないに関わらず、正の値である必要があります。', 92 invalidCssLength: '入力された "%1" 項目の値は、CSSの大きさ(px, %, in, cm, mm, em, ex, pt, または pc)が正しいものである/ないに関わらず、正の値である必要があります。',
@@ -95,6 +95,23 @@ CKEDITOR.lang[ 'ja' ] = {
95 cssLengthTooltip: 'ピクセル数もしくはCSSにセットできる数値を入力してください。(px,%,in,cm,mm,em,ex,pt,or pc)', 95 cssLengthTooltip: 'ピクセル数もしくはCSSにセットできる数値を入力してください。(px,%,in,cm,mm,em,ex,pt,or pc)',
96 96
97 // Put the voice-only part of the label in the span. 97 // Put the voice-only part of the label in the span.
98 unavailable: '%1<span class="cke_accessibility">, 利用不可能</span>' 98 unavailable: '%1<span class="cke_accessibility">, 利用不可能</span>',
99
100 // Keyboard keys translations used for creating shortcuts descriptions in tooltips, context menus and ARIA labels.
101 keyboard: {
102 8: 'Backspace',
103 13: 'Enter',
104 16: 'Shift',
105 17: 'Ctrl',
106 18: 'Alt',
107 32: 'Space',
108 35: 'End',
109 36: 'Home',
110 46: 'Delete',
111 224: 'Command'
112 },
113
114 // Prepended to ARIA labels with shortcuts.
115 keyboardShortcut: 'キーボードショートカット'
99 } 116 }
100}; 117};
diff --git a/sources/lang/ka.js b/sources/lang/ka.js
index a327959..999132e 100644
--- a/sources/lang/ka.js
+++ b/sources/lang/ka.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -86,7 +86,7 @@ CKEDITOR.lang[ 'ka' ] = {
86 alignMiddle: 'შუა', 86 alignMiddle: 'შუა',
87 alignBottom: 'ქვემოთა', 87 alignBottom: 'ქვემოთა',
88 alignNone: 'None', // MISSING 88 alignNone: 'None', // MISSING
89 invalidValue : 'Invalid value.', // MISSING 89 invalidValue: 'Invalid value.', // MISSING
90 invalidHeight: 'სიმაღლე რიცხვით უნდა იყოს წარმოდგენილი.', 90 invalidHeight: 'სიმაღლე რიცხვით უნდა იყოს წარმოდგენილი.',
91 invalidWidth: 'სიგანე რიცხვით უნდა იყოს წარმოდგენილი.', 91 invalidWidth: 'სიგანე რიცხვით უნდა იყოს წარმოდგენილი.',
92 invalidCssLength: 'Value specified for the "%1" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).', // MISSING 92 invalidCssLength: 'Value specified for the "%1" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).', // MISSING
@@ -95,6 +95,23 @@ CKEDITOR.lang[ 'ka' ] = {
95 cssLengthTooltip: 'Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).', // MISSING 95 cssLengthTooltip: 'Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).', // MISSING
96 96
97 // Put the voice-only part of the label in the span. 97 // Put the voice-only part of the label in the span.
98 unavailable: '%1<span class="cke_accessibility">, მიუწვდომელია</span>' 98 unavailable: '%1<span class="cke_accessibility">, მიუწვდომელია</span>',
99
100 // Keyboard keys translations used for creating shortcuts descriptions in tooltips, context menus and ARIA labels.
101 keyboard: {
102 8: 'Backspace', // MISSING
103 13: 'Enter', // MISSING
104 16: 'Shift', // MISSING
105 17: 'Ctrl', // MISSING
106 18: 'Alt', // MISSING
107 32: 'Space', // MISSING
108 35: 'End', // MISSING
109 36: 'Home', // MISSING
110 46: 'Delete', // MISSING
111 224: 'Command' // MISSING
112 },
113
114 // Prepended to ARIA labels with shortcuts.
115 keyboardShortcut: 'Keyboard shortcut' // MISSING
99 } 116 }
100}; 117};
diff --git a/sources/lang/km.js b/sources/lang/km.js
index 5006686..b9908d9 100644
--- a/sources/lang/km.js
+++ b/sources/lang/km.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -86,7 +86,7 @@ CKEDITOR.lang[ 'km' ] = {
86 alignMiddle: 'កណ្តាល', 86 alignMiddle: 'កណ្តាល',
87 alignBottom: 'ខាងក្រោម', 87 alignBottom: 'ខាងក្រោម',
88 alignNone: 'គ្មាន', 88 alignNone: 'គ្មាន',
89 invalidValue : 'តម្លៃ​មិន​ត្រឹម​ត្រូវ។', 89 invalidValue: 'តម្លៃ​មិន​ត្រឹម​ត្រូវ។',
90 invalidHeight: 'តម្លៃ​កំពស់​ត្រូវ​តែ​ជា​លេខ។', 90 invalidHeight: 'តម្លៃ​កំពស់​ត្រូវ​តែ​ជា​លេខ។',
91 invalidWidth: 'តម្លៃ​ទទឹង​ត្រូវ​តែ​ជា​លេខ។', 91 invalidWidth: 'តម្លៃ​ទទឹង​ត្រូវ​តែ​ជា​លេខ។',
92 invalidCssLength: 'តម្លៃ​កំណត់​សម្រាប់​វាល "%1" ត្រូវ​តែ​ជា​លេខ​វិជ្ជមាន​ ដោយ​ភ្ជាប់ឬ​មិន​ភ្ជាប់​ជាមួយ​នឹង​ឯកតា​រង្វាស់​របស់ CSS (px, %, in, cm, mm, em, ex, pt ឬ pc) ។', 92 invalidCssLength: 'តម្លៃ​កំណត់​សម្រាប់​វាល "%1" ត្រូវ​តែ​ជា​លេខ​វិជ្ជមាន​ ដោយ​ភ្ជាប់ឬ​មិន​ភ្ជាប់​ជាមួយ​នឹង​ឯកតា​រង្វាស់​របស់ CSS (px, %, in, cm, mm, em, ex, pt ឬ pc) ។',
@@ -95,6 +95,23 @@ CKEDITOR.lang[ 'km' ] = {
95 cssLengthTooltip: 'បញ្ចូល​លេខ​សម្រាប់​តម្លៃ​ជា​ភិចសែល ឬ​លេខ​ដែល​មាន​ឯកតា​ត្រឹមត្រូវ​របស់ CSS (px, %, in, cm, mm, em, ex, pt ឬ pc) ។', 95 cssLengthTooltip: 'បញ្ចូល​លេខ​សម្រាប់​តម្លៃ​ជា​ភិចសែល ឬ​លេខ​ដែល​មាន​ឯកតា​ត្រឹមត្រូវ​របស់ CSS (px, %, in, cm, mm, em, ex, pt ឬ pc) ។',
96 96
97 // Put the voice-only part of the label in the span. 97 // Put the voice-only part of the label in the span.
98 unavailable: '%1<span class="cke_accessibility">, មិន​មាន</span>' 98 unavailable: '%1<span class="cke_accessibility">, មិន​មាន</span>',
99
100 // Keyboard keys translations used for creating shortcuts descriptions in tooltips, context menus and ARIA labels.
101 keyboard: {
102 8: 'លុបថយក្រោយ',
103 13: 'Enter', // MISSING
104 16: 'Shift', // MISSING
105 17: 'Ctrl', // MISSING
106 18: 'Alt', // MISSING
107 32: 'Space', // MISSING
108 35: 'ចុង',
109 36: 'ផ្ទះ',
110 46: 'លុប',
111 224: 'Command' // MISSING
112 },
113
114 // Prepended to ARIA labels with shortcuts.
115 keyboardShortcut: 'Keyboard shortcut' // MISSING
99 } 116 }
100}; 117};
diff --git a/sources/lang/ko.js b/sources/lang/ko.js
index 43a6f80..fe575d9 100644
--- a/sources/lang/ko.js
+++ b/sources/lang/ko.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -28,7 +28,7 @@ CKEDITOR.lang[ 'ko' ] = {
28 // of reading non-English words. So be careful while translating it. 28 // of reading non-English words. So be careful while translating it.
29 editorHelp: '도움이 필요하면 ALT 0 을 누르세요', 29 editorHelp: '도움이 필요하면 ALT 0 을 누르세요',
30 30
31 browseServer: '서버 보기', 31 browseServer: '서버 탐색',
32 url: 'URL', 32 url: 'URL',
33 protocol: '프로토콜', 33 protocol: '프로토콜',
34 upload: '업로드', 34 upload: '업로드',
@@ -86,7 +86,7 @@ CKEDITOR.lang[ 'ko' ] = {
86 alignMiddle: '중간', 86 alignMiddle: '중간',
87 alignBottom: '아래', 87 alignBottom: '아래',
88 alignNone: '기본', 88 alignNone: '기본',
89 invalidValue : '잘못된 값.', 89 invalidValue: '잘못된 값.',
90 invalidHeight: '높이는 숫자여야 합니다.', 90 invalidHeight: '높이는 숫자여야 합니다.',
91 invalidWidth: '넓이는 숫자여야 합니다.', 91 invalidWidth: '넓이는 숫자여야 합니다.',
92 invalidCssLength: '"%1" 값은 유효한 CSS 측정 단위(px, %, in, cm, mm, em, ex, pt, or pc)를 포함하거나 포함하지 않은 양수 여야 합니다.', 92 invalidCssLength: '"%1" 값은 유효한 CSS 측정 단위(px, %, in, cm, mm, em, ex, pt, or pc)를 포함하거나 포함하지 않은 양수 여야 합니다.',
@@ -95,6 +95,23 @@ CKEDITOR.lang[ 'ko' ] = {
95 cssLengthTooltip: '픽셀 단위의 숫자만 입력하시거나 유효한 CSS 단위(px, %, in, cm, mm, em, ex, pt, or pc)와 함께 숫자를 입력해주세요.', 95 cssLengthTooltip: '픽셀 단위의 숫자만 입력하시거나 유효한 CSS 단위(px, %, in, cm, mm, em, ex, pt, or pc)와 함께 숫자를 입력해주세요.',
96 96
97 // Put the voice-only part of the label in the span. 97 // Put the voice-only part of the label in the span.
98 unavailable: '%1<span class="cke_accessibility">, 사용불가</span>' 98 unavailable: '%1<span class="cke_accessibility">, 사용불가</span>',
99
100 // Keyboard keys translations used for creating shortcuts descriptions in tooltips, context menus and ARIA labels.
101 keyboard: {
102 8: '백스페이스',
103 13: '엔터',
104 16: '시프트',
105 17: '컨트롤',
106 18: '알트',
107 32: '간격',
108 35: '엔드',
109 36: '홈',
110 46: '딜리트',
111 224: '커맨드'
112 },
113
114 // Prepended to ARIA labels with shortcuts.
115 keyboardShortcut: '키보드 단축키'
99 } 116 }
100}; 117};
diff --git a/sources/lang/ku.js b/sources/lang/ku.js
index 0ed14a4..171059b 100644
--- a/sources/lang/ku.js
+++ b/sources/lang/ku.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -85,7 +85,7 @@ CKEDITOR.lang[ 'ku' ] = {
85 alignMiddle: 'ناوەند', 85 alignMiddle: 'ناوەند',
86 alignBottom: 'ژێرەوە', 86 alignBottom: 'ژێرەوە',
87 alignNone: 'هیچ', 87 alignNone: 'هیچ',
88 invalidValue : 'نرخێکی نادرووست.', 88 invalidValue: 'نرخێکی نادرووست.',
89 invalidHeight: 'درێژی دەبێت ژمارە بێت.', 89 invalidHeight: 'درێژی دەبێت ژمارە بێت.',
90 invalidWidth: 'پانی دەبێت ژمارە بێت.', 90 invalidWidth: 'پانی دەبێت ژمارە بێت.',
91 invalidCssLength: 'ئەم نرخەی دراوە بۆ خانەی "%1" دەبێت ژمارەکی درووست بێت یان بێ ناونیشانی ئامرازی (px, %, in, cm, mm, em, ex, pt, یان pc).', 91 invalidCssLength: 'ئەم نرخەی دراوە بۆ خانەی "%1" دەبێت ژمارەکی درووست بێت یان بێ ناونیشانی ئامرازی (px, %, in, cm, mm, em, ex, pt, یان pc).',
@@ -94,6 +94,23 @@ CKEDITOR.lang[ 'ku' ] = {
94 cssLengthTooltip: 'ژمارەیەك بنووسه‌ بۆ نرخی piksel یان ئامرازێکی درووستی CSS (px, %, in, cm, mm, em, ex, pt, یان pc).', 94 cssLengthTooltip: 'ژمارەیەك بنووسه‌ بۆ نرخی piksel یان ئامرازێکی درووستی CSS (px, %, in, cm, mm, em, ex, pt, یان pc).',
95 95
96 // Put the voice-only part of the label in the span. 96 // Put the voice-only part of the label in the span.
97 unavailable: '%1<span class="cke_accessibility">, ئامادە نیە</span>' 97 unavailable: '%1<span class="cke_accessibility">, ئامادە نیە</span>',
98
99 // Keyboard keys translations used for creating shortcuts descriptions in tooltips, context menus and ARIA labels.
100 keyboard: {
101 8: 'Backspace',
102 13: 'Enter',
103 16: 'Shift',
104 17: 'Ctrl',
105 18: 'Alt',
106 32: 'Space',
107 35: 'End',
108 36: 'Home',
109 46: 'Delete',
110 224: 'فەرمان'
111 },
112
113 // Prepended to ARIA labels with shortcuts.
114 keyboardShortcut: 'کورتبڕی تەختەکلیل'
98 } 115 }
99}; 116};
diff --git a/sources/lang/lt.js b/sources/lang/lt.js
index 9c0c384..e6d9d7f 100644
--- a/sources/lang/lt.js
+++ b/sources/lang/lt.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -86,7 +86,7 @@ CKEDITOR.lang[ 'lt' ] = {
86 alignMiddle: 'Vidurį', 86 alignMiddle: 'Vidurį',
87 alignBottom: 'Apačią', 87 alignBottom: 'Apačią',
88 alignNone: 'Niekas', 88 alignNone: 'Niekas',
89 invalidValue : 'Neteisinga reikšmė.', 89 invalidValue: 'Neteisinga reikšmė.',
90 invalidHeight: 'Aukštis turi būti nurodytas skaičiais.', 90 invalidHeight: 'Aukštis turi būti nurodytas skaičiais.',
91 invalidWidth: 'Plotis turi būti nurodytas skaičiais.', 91 invalidWidth: 'Plotis turi būti nurodytas skaičiais.',
92 invalidCssLength: 'Reikšmė nurodyta "%1" laukui, turi būti teigiamas skaičius su arba be tinkamo CSS matavimo vieneto (px, %, in, cm, mm, em, ex, pt arba pc).', 92 invalidCssLength: 'Reikšmė nurodyta "%1" laukui, turi būti teigiamas skaičius su arba be tinkamo CSS matavimo vieneto (px, %, in, cm, mm, em, ex, pt arba pc).',
@@ -95,6 +95,23 @@ CKEDITOR.lang[ 'lt' ] = {
95 cssLengthTooltip: 'Įveskite reikšmę pikseliais arba skaičiais su tinkamu CSS vienetu (px, %, in, cm, mm, em, ex, pt arba pc).', 95 cssLengthTooltip: 'Įveskite reikšmę pikseliais arba skaičiais su tinkamu CSS vienetu (px, %, in, cm, mm, em, ex, pt arba pc).',
96 96
97 // Put the voice-only part of the label in the span. 97 // Put the voice-only part of the label in the span.
98 unavailable: '%1<span class="cke_accessibility">, netinkamas</span>' 98 unavailable: '%1<span class="cke_accessibility">, netinkamas</span>',
99
100 // Keyboard keys translations used for creating shortcuts descriptions in tooltips, context menus and ARIA labels.
101 keyboard: {
102 8: 'Backspace', // MISSING
103 13: 'Enter', // MISSING
104 16: 'Shift', // MISSING
105 17: 'Ctrl', // MISSING
106 18: 'Alt', // MISSING
107 32: 'Space', // MISSING
108 35: 'End', // MISSING
109 36: 'Home', // MISSING
110 46: 'Delete', // MISSING
111 224: 'Command' // MISSING
112 },
113
114 // Prepended to ARIA labels with shortcuts.
115 keyboardShortcut: 'Keyboard shortcut' // MISSING
99 } 116 }
100}; 117};
diff --git a/sources/lang/lv.js b/sources/lang/lv.js
index e89bf62..1759e6c 100644
--- a/sources/lang/lv.js
+++ b/sources/lang/lv.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -86,7 +86,7 @@ CKEDITOR.lang[ 'lv' ] = {
86 alignMiddle: 'Vertikāli centrēts', 86 alignMiddle: 'Vertikāli centrēts',
87 alignBottom: 'Apakšā', 87 alignBottom: 'Apakšā',
88 alignNone: 'Nekas', 88 alignNone: 'Nekas',
89 invalidValue : 'Nekorekta vērtība', 89 invalidValue: 'Nekorekta vērtība',
90 invalidHeight: 'Augstumam jābūt skaitlim.', 90 invalidHeight: 'Augstumam jābūt skaitlim.',
91 invalidWidth: 'Platumam jābūt skaitlim', 91 invalidWidth: 'Platumam jābūt skaitlim',
92 invalidCssLength: 'Laukam "%1" norādītajai vērtībai jābūt pozitīvam skaitlim ar vai bez korektām CSS mērvienībām (px, %, in, cm, mm, em, ex, pt, vai pc).', 92 invalidCssLength: 'Laukam "%1" norādītajai vērtībai jābūt pozitīvam skaitlim ar vai bez korektām CSS mērvienībām (px, %, in, cm, mm, em, ex, pt, vai pc).',
@@ -95,6 +95,23 @@ CKEDITOR.lang[ 'lv' ] = {
95 cssLengthTooltip: 'Ievadiet vērtību pikseļos vai skaitli ar derīgu CSS mērvienību (px, %, in, cm, mm, em, ex, pt, vai pc).', 95 cssLengthTooltip: 'Ievadiet vērtību pikseļos vai skaitli ar derīgu CSS mērvienību (px, %, in, cm, mm, em, ex, pt, vai pc).',
96 96
97 // Put the voice-only part of the label in the span. 97 // Put the voice-only part of the label in the span.
98 unavailable: '%1<span class="cke_accessibility">, nav pieejams</span>' 98 unavailable: '%1<span class="cke_accessibility">, nav pieejams</span>',
99
100 // Keyboard keys translations used for creating shortcuts descriptions in tooltips, context menus and ARIA labels.
101 keyboard: {
102 8: 'Backspace', // MISSING
103 13: 'Enter', // MISSING
104 16: 'Shift', // MISSING
105 17: 'Ctrl', // MISSING
106 18: 'Alt', // MISSING
107 32: 'Space', // MISSING
108 35: 'End', // MISSING
109 36: 'Home', // MISSING
110 46: 'Delete', // MISSING
111 224: 'Command' // MISSING
112 },
113
114 // Prepended to ARIA labels with shortcuts.
115 keyboardShortcut: 'Keyboard shortcut' // MISSING
99 } 116 }
100}; 117};
diff --git a/sources/lang/mk.js b/sources/lang/mk.js
index bc7b06c..750da11 100644
--- a/sources/lang/mk.js
+++ b/sources/lang/mk.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -85,7 +85,7 @@ CKEDITOR.lang[ 'mk' ] = {
85 alignMiddle: 'Средина', 85 alignMiddle: 'Средина',
86 alignBottom: 'Доле', 86 alignBottom: 'Доле',
87 alignNone: 'Никое', 87 alignNone: 'Никое',
88 invalidValue : 'Невалидна вредност', 88 invalidValue: 'Невалидна вредност',
89 invalidHeight: 'Височината мора да биде број.', 89 invalidHeight: 'Височината мора да биде број.',
90 invalidWidth: 'Широчината мора да биде број.', 90 invalidWidth: 'Широчината мора да биде број.',
91 invalidCssLength: 'Value specified for the "%1" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).', // MISSING 91 invalidCssLength: 'Value specified for the "%1" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).', // MISSING
@@ -94,6 +94,23 @@ CKEDITOR.lang[ 'mk' ] = {
94 cssLengthTooltip: 'Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).', // MISSING 94 cssLengthTooltip: 'Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).', // MISSING
95 95
96 // Put the voice-only part of the label in the span. 96 // Put the voice-only part of the label in the span.
97 unavailable: '%1<span class="cke_accessibility">, unavailable</span>' // MISSING 97 unavailable: '%1<span class="cke_accessibility">, unavailable</span>', // MISSING
98
99 // Keyboard keys translations used for creating shortcuts descriptions in tooltips, context menus and ARIA labels.
100 keyboard: {
101 8: 'Backspace', // MISSING
102 13: 'Enter', // MISSING
103 16: 'Shift', // MISSING
104 17: 'Ctrl', // MISSING
105 18: 'Alt', // MISSING
106 32: 'Space', // MISSING
107 35: 'End', // MISSING
108 36: 'Home', // MISSING
109 46: 'Delete', // MISSING
110 224: 'Command' // MISSING
111 },
112
113 // Prepended to ARIA labels with shortcuts.
114 keyboardShortcut: 'Keyboard shortcut' // MISSING
98 } 115 }
99}; 116};
diff --git a/sources/lang/mn.js b/sources/lang/mn.js
index ca5d749..c5854a1 100644
--- a/sources/lang/mn.js
+++ b/sources/lang/mn.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -86,7 +86,7 @@ CKEDITOR.lang[ 'mn' ] = {
86 alignMiddle: 'Дунд', 86 alignMiddle: 'Дунд',
87 alignBottom: 'Доод талд', 87 alignBottom: 'Доод талд',
88 alignNone: 'None', // MISSING 88 alignNone: 'None', // MISSING
89 invalidValue : 'Invalid value.', // MISSING 89 invalidValue: 'Invalid value.', // MISSING
90 invalidHeight: 'Өндөр нь тоо байх ёстой.', 90 invalidHeight: 'Өндөр нь тоо байх ёстой.',
91 invalidWidth: 'Өргөн нь тоо байх ёстой.', 91 invalidWidth: 'Өргөн нь тоо байх ёстой.',
92 invalidCssLength: 'Value specified for the "%1" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).', // MISSING 92 invalidCssLength: 'Value specified for the "%1" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).', // MISSING
@@ -95,6 +95,23 @@ CKEDITOR.lang[ 'mn' ] = {
95 cssLengthTooltip: 'Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).', // MISSING 95 cssLengthTooltip: 'Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).', // MISSING
96 96
97 // Put the voice-only part of the label in the span. 97 // Put the voice-only part of the label in the span.
98 unavailable: '%1<span class="cke_accessibility">, unavailable</span>' // MISSING 98 unavailable: '%1<span class="cke_accessibility">, unavailable</span>', // MISSING
99
100 // Keyboard keys translations used for creating shortcuts descriptions in tooltips, context menus and ARIA labels.
101 keyboard: {
102 8: 'Backspace', // MISSING
103 13: 'Enter', // MISSING
104 16: 'Shift', // MISSING
105 17: 'Ctrl', // MISSING
106 18: 'Alt', // MISSING
107 32: 'Space', // MISSING
108 35: 'End', // MISSING
109 36: 'Home', // MISSING
110 46: 'Delete', // MISSING
111 224: 'Command' // MISSING
112 },
113
114 // Prepended to ARIA labels with shortcuts.
115 keyboardShortcut: 'Keyboard shortcut' // MISSING
99 } 116 }
100}; 117};
diff --git a/sources/lang/ms.js b/sources/lang/ms.js
index 5267301..764e92f 100644
--- a/sources/lang/ms.js
+++ b/sources/lang/ms.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -86,7 +86,7 @@ CKEDITOR.lang[ 'ms' ] = {
86 alignMiddle: 'Pertengahan', 86 alignMiddle: 'Pertengahan',
87 alignBottom: 'Bawah', 87 alignBottom: 'Bawah',
88 alignNone: 'None', // MISSING 88 alignNone: 'None', // MISSING
89 invalidValue : 'Nilai tidak sah.', 89 invalidValue: 'Nilai tidak sah.',
90 invalidHeight: 'Height must be a number.', // MISSING 90 invalidHeight: 'Height must be a number.', // MISSING
91 invalidWidth: 'Width must be a number.', // MISSING 91 invalidWidth: 'Width must be a number.', // MISSING
92 invalidCssLength: 'Value specified for the "%1" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).', // MISSING 92 invalidCssLength: 'Value specified for the "%1" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).', // MISSING
@@ -95,6 +95,23 @@ CKEDITOR.lang[ 'ms' ] = {
95 cssLengthTooltip: 'Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).', // MISSING 95 cssLengthTooltip: 'Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).', // MISSING
96 96
97 // Put the voice-only part of the label in the span. 97 // Put the voice-only part of the label in the span.
98 unavailable: '%1<span class="cke_accessibility">, unavailable</span>' // MISSING 98 unavailable: '%1<span class="cke_accessibility">, unavailable</span>', // MISSING
99
100 // Keyboard keys translations used for creating shortcuts descriptions in tooltips, context menus and ARIA labels.
101 keyboard: {
102 8: 'Backspace', // MISSING
103 13: 'Enter', // MISSING
104 16: 'Shift', // MISSING
105 17: 'Ctrl', // MISSING
106 18: 'Alt', // MISSING
107 32: 'Space', // MISSING
108 35: 'End', // MISSING
109 36: 'Home', // MISSING
110 46: 'Delete', // MISSING
111 224: 'Command' // MISSING
112 },
113
114 // Prepended to ARIA labels with shortcuts.
115 keyboardShortcut: 'Keyboard shortcut' // MISSING
99 } 116 }
100}; 117};
diff --git a/sources/lang/nb.js b/sources/lang/nb.js
index 6036b2e..e27c582 100644
--- a/sources/lang/nb.js
+++ b/sources/lang/nb.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -48,8 +48,8 @@ CKEDITOR.lang[ 'nb' ] = {
48 id: 'Id', 48 id: 'Id',
49 name: 'Navn', 49 name: 'Navn',
50 langDir: 'Språkretning', 50 langDir: 'Språkretning',
51 langDirLtr: 'Venstre til høyre (VTH)', 51 langDirLtr: 'Venstre til høyre (LTR)',
52 langDirRtl: 'Høyre til venstre (HTV)', 52 langDirRtl: 'Høyre til venstre (RTL)',
53 langCode: 'Språkkode', 53 langCode: 'Språkkode',
54 longDescr: 'Utvidet beskrivelse', 54 longDescr: 'Utvidet beskrivelse',
55 cssClass: 'Stilarkklasser', 55 cssClass: 'Stilarkklasser',
@@ -68,7 +68,7 @@ CKEDITOR.lang[ 'nb' ] = {
68 options: 'Valg', 68 options: 'Valg',
69 target: 'Mål', 69 target: 'Mål',
70 targetNew: 'Nytt vindu (_blank)', 70 targetNew: 'Nytt vindu (_blank)',
71 targetTop: 'Hele vindu (_top)', 71 targetTop: 'Hele vinduet (_top)',
72 targetSelf: 'Samme vindu (_self)', 72 targetSelf: 'Samme vindu (_self)',
73 targetParent: 'Foreldrevindu (_parent)', 73 targetParent: 'Foreldrevindu (_parent)',
74 langDirLTR: 'Venstre til høyre (VTH)', 74 langDirLTR: 'Venstre til høyre (VTH)',
@@ -86,7 +86,7 @@ CKEDITOR.lang[ 'nb' ] = {
86 alignMiddle: 'Midten', 86 alignMiddle: 'Midten',
87 alignBottom: 'Bunn', 87 alignBottom: 'Bunn',
88 alignNone: 'Ingen', 88 alignNone: 'Ingen',
89 invalidValue : 'Ugyldig verdi.', 89 invalidValue: 'Ugyldig verdi.',
90 invalidHeight: 'Høyde må være et tall.', 90 invalidHeight: 'Høyde må være et tall.',
91 invalidWidth: 'Bredde må være et tall.', 91 invalidWidth: 'Bredde må være et tall.',
92 invalidCssLength: 'Den angitte verdien for feltet "%1" må være et positivt tall med eller uten en gyldig CSS-målingsenhet (px, %, in, cm, mm, em, ex, pt, eller pc).', 92 invalidCssLength: 'Den angitte verdien for feltet "%1" må være et positivt tall med eller uten en gyldig CSS-målingsenhet (px, %, in, cm, mm, em, ex, pt, eller pc).',
@@ -95,6 +95,23 @@ CKEDITOR.lang[ 'nb' ] = {
95 cssLengthTooltip: 'Skriv inn et tall for en piksel-verdi eller et tall med en gyldig CSS-enhet (px, %, in, cm, mm, em, ex, pt, eller pc).', 95 cssLengthTooltip: 'Skriv inn et tall for en piksel-verdi eller et tall med en gyldig CSS-enhet (px, %, in, cm, mm, em, ex, pt, eller pc).',
96 96
97 // Put the voice-only part of the label in the span. 97 // Put the voice-only part of the label in the span.
98 unavailable: '%1<span class="cke_accessibility">, utilgjenglig</span>' 98 unavailable: '%1<span class="cke_accessibility">, utilgjenglig</span>',
99
100 // Keyboard keys translations used for creating shortcuts descriptions in tooltips, context menus and ARIA labels.
101 keyboard: {
102 8: 'Backspace',
103 13: 'Enter',
104 16: 'Shift',
105 17: 'Ctrl',
106 18: 'Alt',
107 32: 'Mellomrom',
108 35: 'End',
109 36: 'Home',
110 46: 'Delete',
111 224: 'Command'
112 },
113
114 // Prepended to ARIA labels with shortcuts.
115 keyboardShortcut: 'Tastatursnarvei'
99 } 116 }
100}; 117};
diff --git a/sources/lang/nl.js b/sources/lang/nl.js
index 873d2b8..5f1f251 100644
--- a/sources/lang/nl.js
+++ b/sources/lang/nl.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -86,7 +86,7 @@ CKEDITOR.lang[ 'nl' ] = {
86 alignMiddle: 'Midden', 86 alignMiddle: 'Midden',
87 alignBottom: 'Onder', 87 alignBottom: 'Onder',
88 alignNone: 'Geen', 88 alignNone: 'Geen',
89 invalidValue : 'Ongeldige waarde.', 89 invalidValue: 'Ongeldige waarde.',
90 invalidHeight: 'De hoogte moet een getal zijn.', 90 invalidHeight: 'De hoogte moet een getal zijn.',
91 invalidWidth: 'De breedte moet een getal zijn.', 91 invalidWidth: 'De breedte moet een getal zijn.',
92 invalidCssLength: 'Waarde in veld "%1" moet een positief nummer zijn, met of zonder een geldige CSS meeteenheid (px, %, in, cm, mm, em, ex, pt of pc).', 92 invalidCssLength: 'Waarde in veld "%1" moet een positief nummer zijn, met of zonder een geldige CSS meeteenheid (px, %, in, cm, mm, em, ex, pt of pc).',
@@ -95,6 +95,23 @@ CKEDITOR.lang[ 'nl' ] = {
95 cssLengthTooltip: 'Geef een nummer in voor een waarde in pixels of geef een nummer in met een geldige CSS eenheid (px, %, in, cm, mm, em, ex, pt, of pc).', 95 cssLengthTooltip: 'Geef een nummer in voor een waarde in pixels of geef een nummer in met een geldige CSS eenheid (px, %, in, cm, mm, em, ex, pt, of pc).',
96 96
97 // Put the voice-only part of the label in the span. 97 // Put the voice-only part of the label in the span.
98 unavailable: '%1<span class="cke_accessibility">, niet beschikbaar</span>' 98 unavailable: '%1<span class="cke_accessibility">, niet beschikbaar</span>',
99
100 // Keyboard keys translations used for creating shortcuts descriptions in tooltips, context menus and ARIA labels.
101 keyboard: {
102 8: 'Backspace',
103 13: 'Enter',
104 16: 'Shift',
105 17: 'Ctrl',
106 18: 'Alt',
107 32: 'Spatie',
108 35: 'End',
109 36: 'Home',
110 46: 'Verwijderen',
111 224: 'Command'
112 },
113
114 // Prepended to ARIA labels with shortcuts.
115 keyboardShortcut: 'Sneltoets'
99 } 116 }
100}; 117};
diff --git a/sources/lang/no.js b/sources/lang/no.js
index 5c0e9fb..87691f9 100644
--- a/sources/lang/no.js
+++ b/sources/lang/no.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -86,7 +86,7 @@ CKEDITOR.lang[ 'no' ] = {
86 alignMiddle: 'Midten', 86 alignMiddle: 'Midten',
87 alignBottom: 'Bunn', 87 alignBottom: 'Bunn',
88 alignNone: 'Ingen', 88 alignNone: 'Ingen',
89 invalidValue : 'Ugyldig verdi.', 89 invalidValue: 'Ugyldig verdi.',
90 invalidHeight: 'Høyde må være et tall.', 90 invalidHeight: 'Høyde må være et tall.',
91 invalidWidth: 'Bredde må være et tall.', 91 invalidWidth: 'Bredde må være et tall.',
92 invalidCssLength: 'Den angitte verdien for feltet "%1" må være et positivt tall med eller uten en gyldig CSS-målingsenhet (px, %, in, cm, mm, em, ex, pt, eller pc).', 92 invalidCssLength: 'Den angitte verdien for feltet "%1" må være et positivt tall med eller uten en gyldig CSS-målingsenhet (px, %, in, cm, mm, em, ex, pt, eller pc).',
@@ -95,6 +95,23 @@ CKEDITOR.lang[ 'no' ] = {
95 cssLengthTooltip: 'Skriv inn et tall for en piksel-verdi eller et tall med en gyldig CSS-enhet (px, %, in, cm, mm, em, ex, pt, eller pc).', 95 cssLengthTooltip: 'Skriv inn et tall for en piksel-verdi eller et tall med en gyldig CSS-enhet (px, %, in, cm, mm, em, ex, pt, eller pc).',
96 96
97 // Put the voice-only part of the label in the span. 97 // Put the voice-only part of the label in the span.
98 unavailable: '%1<span class="cke_accessibility">, utilgjenglig</span>' 98 unavailable: '%1<span class="cke_accessibility">, utilgjenglig</span>',
99
100 // Keyboard keys translations used for creating shortcuts descriptions in tooltips, context menus and ARIA labels.
101 keyboard: {
102 8: 'Backspace', // MISSING
103 13: 'Enter', // MISSING
104 16: 'Shift', // MISSING
105 17: 'Ctrl', // MISSING
106 18: 'Alt', // MISSING
107 32: 'Space', // MISSING
108 35: 'End', // MISSING
109 36: 'Home', // MISSING
110 46: 'Delete', // MISSING
111 224: 'Command' // MISSING
112 },
113
114 // Prepended to ARIA labels with shortcuts.
115 keyboardShortcut: 'Keyboard shortcut' // MISSING
99 } 116 }
100}; 117};
diff --git a/sources/lang/oc.js b/sources/lang/oc.js
new file mode 100644
index 0000000..a78420f
--- /dev/null
+++ b/sources/lang/oc.js
@@ -0,0 +1,117 @@
1/**
2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */
5
6/**
7 * @fileOverview Defines the {@link CKEDITOR.lang} object for the Occitan
8 * language.
9 */
10
11/**#@+
12 @type String
13 @example
14*/
15
16/**
17 * Contains the dictionary of language entries.
18 * @namespace
19 */
20CKEDITOR.lang[ 'oc' ] = {
21 // ARIA description.
22 editor: 'Editor de tèxte enriquit',
23 editorPanel: 'Tablèu de bòrd de l\'editor de tèxte enriquit',
24
25 // Common messages and labels.
26 common: {
27 // Screenreader titles. Please note that screenreaders are not always capable
28 // of reading non-English words. So be careful while translating it.
29 editorHelp: 'Utilisatz l\'acorchi Alt-0 per obténer d\'ajuda',
30
31 browseServer: 'Percórrer lo servidor',
32 url: 'URL',
33 protocol: 'Protocòl',
34 upload: 'Mandar',
35 uploadSubmit: 'Mandar sul servidor',
36 image: 'Imatge',
37 flash: 'Flash',
38 form: 'Formulari',
39 checkbox: 'Casa de marcar',
40 radio: 'Boton ràdio',
41 textField: 'Camp tèxte',
42 textarea: 'Zòna de tèxte',
43 hiddenField: 'Camp invisible',
44 button: 'Boton',
45 select: 'Lista desenrotlanta',
46 imageButton: 'Boton amb imatge',
47 notSet: '<indefinit>',
48 id: 'Id',
49 name: 'Nom',
50 langDir: 'Sens d\'escritura',
51 langDirLtr: 'Esquèrra a dreita (LTR)',
52 langDirRtl: 'Dreita a esquèrra (RTL)',
53 langCode: 'Còdi de lenga',
54 longDescr: 'URL de descripcion longa',
55 cssClass: 'Classas d\'estil',
56 advisoryTitle: 'Infobulla',
57 cssStyle: 'Estil',
58 ok: 'D\'acòrdi',
59 cancel: 'Anullar',
60 close: 'Tampar',
61 preview: 'Previsualizar',
62 resize: 'Redimensionar',
63 generalTab: 'General',
64 advancedTab: 'Avançat',
65 validateNumberFailed: 'Aquesta valor es pas un nombre.',
66 confirmNewPage: 'Los cambiaments pas salvats seràn perduts. Sètz segur que volètz cargar una novèla pagina ?',
67 confirmCancel: 'Certanas opcions son estadas modificadas. Sètz segur que volètz tampar ?',
68 options: 'Opcions',
69 target: 'Cibla',
70 targetNew: 'Novèla fenèstra (_blank)',
71 targetTop: 'Fenèstra superiora (_top)',
72 targetSelf: 'Meteissa fenèstra (_self)',
73 targetParent: 'Fenèstra parent (_parent)',
74 langDirLTR: 'Esquèrra a dreita (LTR)',
75 langDirRTL: 'Dreita a esquèrra (RTL)',
76 styles: 'Estil',
77 cssClasses: 'Classas d\'estil',
78 width: 'Largor',
79 height: 'Nautor',
80 align: 'Alinhament',
81 alignLeft: 'Esquèrra',
82 alignRight: 'Dreita',
83 alignCenter: 'Centrar',
84 alignJustify: 'Justificar',
85 alignTop: 'Naut',
86 alignMiddle: 'Mitan',
87 alignBottom: 'Bas',
88 alignNone: 'Pas cap',
89 invalidValue: 'Valor invalida.',
90 invalidHeight: 'La nautor deu èsser un nombre.',
91 invalidWidth: 'La largor deu èsser un nombre.',
92 invalidCssLength: 'La valor especificada pel camp « %1 » deu èsser un nombre positiu amb o sens unitat de mesura CSS valid (px, %, in, cm, mm, em, ex, pt, o pc).',
93 invalidHtmlLength: 'La valor especificada pel camp « %1 » deu èsser un nombre positiu amb o sens unitat de mesura HTML valid (px o %).',
94 invalidInlineStyle: 'La valor especificada per l\'estil en linha deu èsser compausada d\'un o mantun parelh al format « nom : valor », separats per de punts-virgulas.',
95 cssLengthTooltip: 'Entrar un nombre per una valor en pixèls o un nombre amb una unitat de mesura CSS valida (px, %, in, cm, mm, em, ex, pt, o pc).',
96
97 // Put the voice-only part of the label in the span.
98 unavailable: '%1<span class="cke_accessibility">, indisponible</span>',
99
100 // Keyboard keys translations used for creating shortcuts descriptions in tooltips, context menus and ARIA labels.
101 keyboard: {
102 8: 'Retorn',
103 13: 'Entrada',
104 16: 'Majuscula',
105 17: 'Ctrl',
106 18: 'Alt',
107 32: 'Espaci',
108 35: 'Fin',
109 36: 'Origina',
110 46: 'Suprimir',
111 224: 'Comanda'
112 },
113
114 // Prepended to ARIA labels with shortcuts.
115 keyboardShortcut: 'Acorchi de clavièr'
116 }
117};
diff --git a/sources/lang/pl.js b/sources/lang/pl.js
index 7fdd920..3290a6b 100644
--- a/sources/lang/pl.js
+++ b/sources/lang/pl.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -86,7 +86,7 @@ CKEDITOR.lang[ 'pl' ] = {
86 alignMiddle: 'Do środka', 86 alignMiddle: 'Do środka',
87 alignBottom: 'Do dołu', 87 alignBottom: 'Do dołu',
88 alignNone: 'Brak', 88 alignNone: 'Brak',
89 invalidValue : 'Nieprawidłowa wartość.', 89 invalidValue: 'Nieprawidłowa wartość.',
90 invalidHeight: 'Wysokość musi być liczbą.', 90 invalidHeight: 'Wysokość musi być liczbą.',
91 invalidWidth: 'Szerokość musi być liczbą.', 91 invalidWidth: 'Szerokość musi być liczbą.',
92 invalidCssLength: 'Wartość podana dla pola "%1" musi być liczbą dodatnią bez jednostki lub z poprawną jednostką długości zgodną z CSS (px, %, in, cm, mm, em, ex, pt lub pc).', 92 invalidCssLength: 'Wartość podana dla pola "%1" musi być liczbą dodatnią bez jednostki lub z poprawną jednostką długości zgodną z CSS (px, %, in, cm, mm, em, ex, pt lub pc).',
@@ -95,6 +95,23 @@ CKEDITOR.lang[ 'pl' ] = {
95 cssLengthTooltip: 'Wpisz liczbę dla wartości w pikselach lub liczbę wraz z jednostką długości zgodną z CSS (px, %, in, cm, mm, em, ex, pt lub pc).', 95 cssLengthTooltip: 'Wpisz liczbę dla wartości w pikselach lub liczbę wraz z jednostką długości zgodną z CSS (px, %, in, cm, mm, em, ex, pt lub pc).',
96 96
97 // Put the voice-only part of the label in the span. 97 // Put the voice-only part of the label in the span.
98 unavailable: '%1<span class="cke_accessibility">, niedostępne</span>' 98 unavailable: '%1<span class="cke_accessibility">, niedostępne</span>',
99
100 // Keyboard keys translations used for creating shortcuts descriptions in tooltips, context menus and ARIA labels.
101 keyboard: {
102 8: 'Backspace',
103 13: 'Enter',
104 16: 'Shift',
105 17: 'Ctrl',
106 18: 'Alt',
107 32: 'spacja',
108 35: 'End',
109 36: 'Home',
110 46: 'Delete',
111 224: 'Command'
112 },
113
114 // Prepended to ARIA labels with shortcuts.
115 keyboardShortcut: 'Skrót klawiszowy'
99 } 116 }
100}; 117};
diff --git a/sources/lang/pt-br.js b/sources/lang/pt-br.js
index e1d7116..a6bc34f 100644
--- a/sources/lang/pt-br.js
+++ b/sources/lang/pt-br.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -85,7 +85,7 @@ CKEDITOR.lang[ 'pt-br' ] = {
85 alignMiddle: 'Centralizado', 85 alignMiddle: 'Centralizado',
86 alignBottom: 'Inferior', 86 alignBottom: 'Inferior',
87 alignNone: 'Nenhum', 87 alignNone: 'Nenhum',
88 invalidValue : 'Valor inválido.', 88 invalidValue: 'Valor inválido.',
89 invalidHeight: 'A altura tem que ser um número', 89 invalidHeight: 'A altura tem que ser um número',
90 invalidWidth: 'A largura tem que ser um número.', 90 invalidWidth: 'A largura tem que ser um número.',
91 invalidCssLength: 'O valor do campo "%1" deve ser um número positivo opcionalmente seguido por uma válida unidade de medida de CSS (px, %, in, cm, mm, em, ex, pt ou pc).', 91 invalidCssLength: 'O valor do campo "%1" deve ser um número positivo opcionalmente seguido por uma válida unidade de medida de CSS (px, %, in, cm, mm, em, ex, pt ou pc).',
@@ -94,6 +94,23 @@ CKEDITOR.lang[ 'pt-br' ] = {
94 cssLengthTooltip: 'Insira um número para valor em pixels ou um número seguido de uma válida unidade de medida de CSS (px, %, in, cm, mm, em, ex, pt ou pc).', 94 cssLengthTooltip: 'Insira um número para valor em pixels ou um número seguido de uma válida unidade de medida de CSS (px, %, in, cm, mm, em, ex, pt ou pc).',
95 95
96 // Put the voice-only part of the label in the span. 96 // Put the voice-only part of the label in the span.
97 unavailable: '%1<span class="cke_accessibility">, indisponível</span>' 97 unavailable: '%1<span class="cke_accessibility">, indisponível</span>',
98
99 // Keyboard keys translations used for creating shortcuts descriptions in tooltips, context menus and ARIA labels.
100 keyboard: {
101 8: 'Tecla Retroceder',
102 13: 'Enter',
103 16: 'Shift',
104 17: 'Ctrl',
105 18: 'Alt',
106 32: 'Tecla Espaço',
107 35: 'End',
108 36: 'Home',
109 46: 'Delete',
110 224: 'Comando'
111 },
112
113 // Prepended to ARIA labels with shortcuts.
114 keyboardShortcut: 'Atalho do teclado'
98 } 115 }
99}; 116};
diff --git a/sources/lang/pt.js b/sources/lang/pt.js
index fbace5b..cfc1ced 100644
--- a/sources/lang/pt.js
+++ b/sources/lang/pt.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -31,29 +31,29 @@ CKEDITOR.lang[ 'pt' ] = {
31 browseServer: 'Navegar no servidor', 31 browseServer: 'Navegar no servidor',
32 url: 'URL', 32 url: 'URL',
33 protocol: 'Protocolo', 33 protocol: 'Protocolo',
34 upload: 'Enviar', 34 upload: 'Carregar',
35 uploadSubmit: 'Enviar para o servidor', 35 uploadSubmit: 'Enviar para o servidor',
36 image: 'Imagem', 36 image: 'Imagem',
37 flash: 'Flash', 37 flash: 'Flash',
38 form: 'Formulário', 38 form: 'Formulário',
39 checkbox: 'Caixa de Seleção', 39 checkbox: 'Caixa de verificação',
40 radio: 'Botão', 40 radio: 'Botão',
41 textField: 'Campo do Texto', 41 textField: 'Campo de texto',
42 textarea: 'Área do Texto', 42 textarea: 'Área de texto',
43 hiddenField: 'Campo oculto', 43 hiddenField: 'Campo oculto',
44 button: 'Botão', 44 button: 'Botão',
45 select: 'Campo da Seleção', 45 select: 'Campo de seleção',
46 imageButton: 'Botão da Imagem', 46 imageButton: 'Botão da imagem',
47 notSet: '<Não definido>', 47 notSet: '<Não definido>',
48 id: 'Id.', 48 id: 'ID',
49 name: 'Nome', 49 name: 'Nome',
50 langDir: 'Direção do Idioma', 50 langDir: 'Direção do idioma',
51 langDirLtr: 'Esquerda para a Direita (EPD)', 51 langDirLtr: 'Esquerda para a Direita (EPD)',
52 langDirRtl: 'Direita para a Esquerda (DPE)', 52 langDirRtl: 'Direita para a Esquerda (DPE)',
53 langCode: 'Código do Idioma', 53 langCode: 'Código do idioma',
54 longDescr: 'Descrição Completa do URL', 54 longDescr: 'Descrição completa do URL',
55 cssClass: 'Classes de Estilo das Folhas', 55 cssClass: 'Classes de estilo das folhas',
56 advisoryTitle: 'Título Consultivo', 56 advisoryTitle: 'Título consultivo',
57 cssStyle: 'Estilo', 57 cssStyle: 'Estilo',
58 ok: 'CONFIRMAR', 58 ok: 'CONFIRMAR',
59 cancel: 'Cancelar', 59 cancel: 'Cancelar',
@@ -67,10 +67,10 @@ CKEDITOR.lang[ 'pt' ] = {
67 confirmCancel: 'Foram alteradas algumas das opções. Tem a certeza que deseja fechar a janela?', 67 confirmCancel: 'Foram alteradas algumas das opções. Tem a certeza que deseja fechar a janela?',
68 options: 'Opções', 68 options: 'Opções',
69 target: 'Destino', 69 target: 'Destino',
70 targetNew: 'Nova Janela (_blank)', 70 targetNew: 'Nova janela (_blank)',
71 targetTop: 'Janela Superior (_top)', 71 targetTop: 'Janela superior (_top)',
72 targetSelf: 'Mesma Janela (_self)', 72 targetSelf: 'Mesma janela (_self)',
73 targetParent: 'Janela Parente (_parent)', 73 targetParent: 'Janela dependente (_parent)',
74 langDirLTR: 'Esquerda para a Direita (EPD)', 74 langDirLTR: 'Esquerda para a Direita (EPD)',
75 langDirRTL: 'Direita para a Esquerda (DPE)', 75 langDirRTL: 'Direita para a Esquerda (DPE)',
76 styles: 'Estilo', 76 styles: 'Estilo',
@@ -86,7 +86,7 @@ CKEDITOR.lang[ 'pt' ] = {
86 alignMiddle: 'Centro', 86 alignMiddle: 'Centro',
87 alignBottom: 'Base', 87 alignBottom: 'Base',
88 alignNone: 'Nenhum', 88 alignNone: 'Nenhum',
89 invalidValue : 'Valor inválido.', 89 invalidValue: 'Valor inválido.',
90 invalidHeight: 'A altura deve ser um número.', 90 invalidHeight: 'A altura deve ser um número.',
91 invalidWidth: 'A largura deve ser um número. ', 91 invalidWidth: 'A largura deve ser um número. ',
92 invalidCssLength: 'O valor especificado para o campo "1%" deve ser um número positivo, com ou sem uma unidade de medida CSS válida (px, %, in, cm, mm, em, ex, pt, ou pc).', 92 invalidCssLength: 'O valor especificado para o campo "1%" deve ser um número positivo, com ou sem uma unidade de medida CSS válida (px, %, in, cm, mm, em, ex, pt, ou pc).',
@@ -95,6 +95,23 @@ CKEDITOR.lang[ 'pt' ] = {
95 cssLengthTooltip: 'Insira um número para um valor em pontos ou um número com uma unidade CSS válida (px, %, in, cm, mm, em, ex, pt, ou pc).', 95 cssLengthTooltip: 'Insira um número para um valor em pontos ou um número com uma unidade CSS válida (px, %, in, cm, mm, em, ex, pt, ou pc).',
96 96
97 // Put the voice-only part of the label in the span. 97 // Put the voice-only part of the label in the span.
98 unavailable: '%1<span class="cke_accessibility">, indisponível</span>' 98 unavailable: '%1<span class="cke_accessibility">, indisponível</span>',
99
100 // Keyboard keys translations used for creating shortcuts descriptions in tooltips, context menus and ARIA labels.
101 keyboard: {
102 8: 'Backspace', // MISSING
103 13: 'Enter',
104 16: 'Shift',
105 17: 'Ctrl',
106 18: 'Alt',
107 32: 'Espaço',
108 35: 'Fim',
109 36: 'Entrada',
110 46: 'Eliminar',
111 224: 'Comando'
112 },
113
114 // Prepended to ARIA labels with shortcuts.
115 keyboardShortcut: 'Keyboard shortcut' // MISSING
99 } 116 }
100}; 117};
diff --git a/sources/lang/ro.js b/sources/lang/ro.js
index 9120e56..d118aba 100644
--- a/sources/lang/ro.js
+++ b/sources/lang/ro.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -86,7 +86,7 @@ CKEDITOR.lang[ 'ro' ] = {
86 alignMiddle: 'Mijloc', 86 alignMiddle: 'Mijloc',
87 alignBottom: 'Jos', 87 alignBottom: 'Jos',
88 alignNone: 'None', // MISSING 88 alignNone: 'None', // MISSING
89 invalidValue : 'Valoare invalidă', 89 invalidValue: 'Valoare invalidă',
90 invalidHeight: 'Înălțimea trebuie să fie un număr.', 90 invalidHeight: 'Înălțimea trebuie să fie un număr.',
91 invalidWidth: 'Lățimea trebuie să fie un număr.', 91 invalidWidth: 'Lățimea trebuie să fie un număr.',
92 invalidCssLength: 'Valoarea specificată pentru câmpul "%1" trebuie să fie un număr pozitiv cu sau fără o unitate de măsură CSS (px, %, in, cm, mm, em, ex, pt, sau pc).', 92 invalidCssLength: 'Valoarea specificată pentru câmpul "%1" trebuie să fie un număr pozitiv cu sau fără o unitate de măsură CSS (px, %, in, cm, mm, em, ex, pt, sau pc).',
@@ -95,6 +95,23 @@ CKEDITOR.lang[ 'ro' ] = {
95 cssLengthTooltip: 'Introduceți un număr în pixeli sau un număr cu o unitate de măsură CSS (px, %, in, cm, mm, em, ex, pt, sau pc).', 95 cssLengthTooltip: 'Introduceți un număr în pixeli sau un număr cu o unitate de măsură CSS (px, %, in, cm, mm, em, ex, pt, sau pc).',
96 96
97 // Put the voice-only part of the label in the span. 97 // Put the voice-only part of the label in the span.
98 unavailable: '%1<span class="cke_accessibility">, nu este disponibil</span>' 98 unavailable: '%1<span class="cke_accessibility">, nu este disponibil</span>',
99
100 // Keyboard keys translations used for creating shortcuts descriptions in tooltips, context menus and ARIA labels.
101 keyboard: {
102 8: 'Backspace', // MISSING
103 13: 'Enter', // MISSING
104 16: 'Shift', // MISSING
105 17: 'Ctrl', // MISSING
106 18: 'Alt', // MISSING
107 32: 'Space', // MISSING
108 35: 'End', // MISSING
109 36: 'Home', // MISSING
110 46: 'Delete', // MISSING
111 224: 'Command' // MISSING
112 },
113
114 // Prepended to ARIA labels with shortcuts.
115 keyboardShortcut: 'Keyboard shortcut' // MISSING
99 } 116 }
100}; 117};
diff --git a/sources/lang/ru.js b/sources/lang/ru.js
index a4aac48..1ccc052 100644
--- a/sources/lang/ru.js
+++ b/sources/lang/ru.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -86,7 +86,7 @@ CKEDITOR.lang[ 'ru' ] = {
86 alignMiddle: 'Посередине', 86 alignMiddle: 'Посередине',
87 alignBottom: 'Понизу', 87 alignBottom: 'Понизу',
88 alignNone: 'Нет', 88 alignNone: 'Нет',
89 invalidValue : 'Недопустимое значение.', 89 invalidValue: 'Недопустимое значение.',
90 invalidHeight: 'Высота задается числом.', 90 invalidHeight: 'Высота задается числом.',
91 invalidWidth: 'Ширина задается числом.', 91 invalidWidth: 'Ширина задается числом.',
92 invalidCssLength: 'Значение, указанное в поле "%1", должно быть положительным целым числом. Допускается указание единиц меры CSS (px, %, in, cm, mm, em, ex, pt или pc).', 92 invalidCssLength: 'Значение, указанное в поле "%1", должно быть положительным целым числом. Допускается указание единиц меры CSS (px, %, in, cm, mm, em, ex, pt или pc).',
@@ -95,6 +95,23 @@ CKEDITOR.lang[ 'ru' ] = {
95 cssLengthTooltip: 'Введите значение в пикселях, либо число с корректной единицей меры CSS (px, %, in, cm, mm, em, ex, pt или pc).', 95 cssLengthTooltip: 'Введите значение в пикселях, либо число с корректной единицей меры CSS (px, %, in, cm, mm, em, ex, pt или pc).',
96 96
97 // Put the voice-only part of the label in the span. 97 // Put the voice-only part of the label in the span.
98 unavailable: '%1<span class="cke_accessibility">, недоступно</span>' 98 unavailable: '%1<span class="cke_accessibility">, недоступно</span>',
99
100 // Keyboard keys translations used for creating shortcuts descriptions in tooltips, context menus and ARIA labels.
101 keyboard: {
102 8: 'Backspace', // MISSING
103 13: 'Enter', // MISSING
104 16: 'Shift', // MISSING
105 17: 'Ctrl', // MISSING
106 18: 'Alt', // MISSING
107 32: 'Пробел',
108 35: 'End', // MISSING
109 36: 'Home', // MISSING
110 46: 'Delete', // MISSING
111 224: 'Command' // MISSING
112 },
113
114 // Prepended to ARIA labels with shortcuts.
115 keyboardShortcut: 'Комбинация клавиш'
99 } 116 }
100}; 117};
diff --git a/sources/lang/si.js b/sources/lang/si.js
index c039733..df0d734 100644
--- a/sources/lang/si.js
+++ b/sources/lang/si.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -85,7 +85,7 @@ CKEDITOR.lang[ 'si' ] = {
85 alignMiddle: 'මැද', 85 alignMiddle: 'මැද',
86 alignBottom: 'පහල', 86 alignBottom: 'පහල',
87 alignNone: 'None', // MISSING 87 alignNone: 'None', // MISSING
88 invalidValue : 'වැරදී වටිනාකමකි', 88 invalidValue: 'වැරදී වටිනාකමකි',
89 invalidHeight: 'උස අංකයක් විය යුතුය', 89 invalidHeight: 'උස අංකයක් විය යුතුය',
90 invalidWidth: 'පළල අංකයක් විය යුතුය', 90 invalidWidth: 'පළල අංකයක් විය යුතුය',
91 invalidCssLength: 'වටිනාකමක් නිරූපණය කිරීම "%1" ප්‍රදේශය ධන සංක්‍යාත්මක වටිනාකමක් හෝ නිවරදි නොවන CSS මිනුම් එකක(px, %, in, cm, mm, em, ex, pt, pc)', 91 invalidCssLength: 'වටිනාකමක් නිරූපණය කිරීම "%1" ප්‍රදේශය ධන සංක්‍යාත්මක වටිනාකමක් හෝ නිවරදි නොවන CSS මිනුම් එකක(px, %, in, cm, mm, em, ex, pt, pc)',
@@ -94,6 +94,23 @@ CKEDITOR.lang[ 'si' ] = {
94 cssLengthTooltip: 'සංක්‍යා ඇතුලත් කිරීමේදී වටිනාකම තිත් ප්‍රමාණය නිවරදි CSS ඒකක(තිත්, %, අඟල්,සෙමි, mm, em, ex, pt, pc)', 94 cssLengthTooltip: 'සංක්‍යා ඇතුලත් කිරීමේදී වටිනාකම තිත් ප්‍රමාණය නිවරදි CSS ඒකක(තිත්, %, අඟල්,සෙමි, mm, em, ex, pt, pc)',
95 95
96 // Put the voice-only part of the label in the span. 96 // Put the voice-only part of the label in the span.
97 unavailable: '%1<span පන්තිය="ළඟා වියහැකි ද බලන්න">, නොමැතිනම්</span>' 97 unavailable: '%1<span පන්තිය="ළඟා වියහැකි ද බලන්න">, නොමැතිනම්</span>',
98
99 // Keyboard keys translations used for creating shortcuts descriptions in tooltips, context menus and ARIA labels.
100 keyboard: {
101 8: 'Backspace', // MISSING
102 13: 'Enter', // MISSING
103 16: 'Shift', // MISSING
104 17: 'Ctrl', // MISSING
105 18: 'Alt', // MISSING
106 32: 'Space', // MISSING
107 35: 'End', // MISSING
108 36: 'Home', // MISSING
109 46: 'Delete', // MISSING
110 224: 'Command' // MISSING
111 },
112
113 // Prepended to ARIA labels with shortcuts.
114 keyboardShortcut: 'Keyboard shortcut' // MISSING
98 } 115 }
99}; 116};
diff --git a/sources/lang/sk.js b/sources/lang/sk.js
index 337dbed..e473cc6 100644
--- a/sources/lang/sk.js
+++ b/sources/lang/sk.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -86,7 +86,7 @@ CKEDITOR.lang[ 'sk' ] = {
86 alignMiddle: 'Na stred', 86 alignMiddle: 'Na stred',
87 alignBottom: 'Dole', 87 alignBottom: 'Dole',
88 alignNone: 'Žiadne', 88 alignNone: 'Žiadne',
89 invalidValue : 'Neplatná hodnota.', 89 invalidValue: 'Neplatná hodnota.',
90 invalidHeight: 'Výška musí byť číslo.', 90 invalidHeight: 'Výška musí byť číslo.',
91 invalidWidth: 'Šírka musí byť číslo.', 91 invalidWidth: 'Šírka musí byť číslo.',
92 invalidCssLength: 'Špecifikovaná hodnota pre pole "%1" musí byť kladné číslo s alebo bez platnej CSS mernej jednotky (px, %, in, cm, mm, em, ex, pt alebo pc).', 92 invalidCssLength: 'Špecifikovaná hodnota pre pole "%1" musí byť kladné číslo s alebo bez platnej CSS mernej jednotky (px, %, in, cm, mm, em, ex, pt alebo pc).',
@@ -95,6 +95,23 @@ CKEDITOR.lang[ 'sk' ] = {
95 cssLengthTooltip: 'Vložte číslo pre hodnotu v pixeloch alebo číslo so správnou CSS jednotou (px, %, in, cm, mm, em, ex, pt alebo pc).', 95 cssLengthTooltip: 'Vložte číslo pre hodnotu v pixeloch alebo číslo so správnou CSS jednotou (px, %, in, cm, mm, em, ex, pt alebo pc).',
96 96
97 // Put the voice-only part of the label in the span. 97 // Put the voice-only part of the label in the span.
98 unavailable: '%1<span class="cke_accessibility">, nedostupný</span>' 98 unavailable: '%1<span class="cke_accessibility">, nedostupný</span>',
99
100 // Keyboard keys translations used for creating shortcuts descriptions in tooltips, context menus and ARIA labels.
101 keyboard: {
102 8: 'Backspace',
103 13: 'Enter',
104 16: 'Shift',
105 17: 'Ctrl',
106 18: 'Alt',
107 32: 'Medzerník',
108 35: 'End',
109 36: 'Home',
110 46: 'Delete',
111 224: 'Command'
112 },
113
114 // Prepended to ARIA labels with shortcuts.
115 keyboardShortcut: 'Klávesová skratka'
99 } 116 }
100}; 117};
diff --git a/sources/lang/sl.js b/sources/lang/sl.js
index ee9897c..bbaa5ea 100644
--- a/sources/lang/sl.js
+++ b/sources/lang/sl.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -19,8 +19,8 @@
19 */ 19 */
20CKEDITOR.lang[ 'sl' ] = { 20CKEDITOR.lang[ 'sl' ] = {
21 // ARIA description. 21 // ARIA description.
22 editor: 'Bogat Urejevalnik Besedila', 22 editor: 'Urejevalnik obogatenega besedila',
23 editorPanel: 'Rich Text Editor plošča', 23 editorPanel: 'Plošča urejevalnika obogatenega besedila',
24 24
25 // Common messages and labels. 25 // Common messages and labels.
26 common: { 26 common: {
@@ -38,21 +38,21 @@ CKEDITOR.lang[ 'sl' ] = {
38 form: 'Obrazec', 38 form: 'Obrazec',
39 checkbox: 'Potrditveno polje', 39 checkbox: 'Potrditveno polje',
40 radio: 'Izbirno polje', 40 radio: 'Izbirno polje',
41 textField: 'Vnosno polje', 41 textField: 'Besedilno polje',
42 textarea: 'Vnosno območje', 42 textarea: 'Besedilno območje',
43 hiddenField: 'Skrito polje', 43 hiddenField: 'Skrito polje',
44 button: 'Gumb', 44 button: 'Gumb',
45 select: 'Spustno Polje', 45 select: 'Spustno polje',
46 imageButton: 'Slikovni Gumb', 46 imageButton: 'Slikovni gumb',
47 notSet: '<ni določen>', 47 notSet: '<ni določen>',
48 id: 'Id', 48 id: 'Id',
49 name: 'Ime', 49 name: 'Ime',
50 langDir: 'Smer jezika', 50 langDir: 'Smer jezika',
51 langDirLtr: 'Od leve proti desni (LTR)', 51 langDirLtr: 'Od leve proti desni (LTR)',
52 langDirRtl: 'Od desne proti levi (RTL)', 52 langDirRtl: 'Od desne proti levi (RTL)',
53 langCode: 'Koda Jezika', 53 langCode: 'Koda jezika',
54 longDescr: 'Dolg opis URL-ja', 54 longDescr: 'Dolg opis URL-ja',
55 cssClass: 'Razred stilne predloge', 55 cssClass: 'Razredi slogovne predloge',
56 advisoryTitle: 'Predlagani naslov', 56 advisoryTitle: 'Predlagani naslov',
57 cssStyle: 'Slog', 57 cssStyle: 'Slog',
58 ok: 'V redu', 58 ok: 'V redu',
@@ -62,19 +62,19 @@ CKEDITOR.lang[ 'sl' ] = {
62 resize: 'Potegni za spremembo velikosti', 62 resize: 'Potegni za spremembo velikosti',
63 generalTab: 'Splošno', 63 generalTab: 'Splošno',
64 advancedTab: 'Napredno', 64 advancedTab: 'Napredno',
65 validateNumberFailed: 'Ta vrednost ni število.', 65 validateNumberFailed: 'Vrednost ni število.',
66 confirmNewPage: 'Vse neshranjene spremembe te vsebine bodo izgubljene. Ali res želite naložiti novo stran?', 66 confirmNewPage: 'Vse neshranjene spremembe vsebine bodo izgubljene. Ali res želite naložiti novo stran?',
67 confirmCancel: 'Nekaj možnosti je bilo spremenjenih. Ali res želite zapreti okno?', 67 confirmCancel: 'Spremenili ste nekaj možnosti. Ali res želite zapreti okno?',
68 options: 'Možnosti', 68 options: 'Možnosti',
69 target: 'Cilj', 69 target: 'Cilj',
70 targetNew: 'Novo Okno (_blank)', 70 targetNew: 'Novo okno (_blank)',
71 targetTop: 'Vrhovno Okno (_top)', 71 targetTop: 'Vrhovno okno (_top)',
72 targetSelf: 'Enako Okno (_self)', 72 targetSelf: 'Isto okno (_self)',
73 targetParent: 'Matično Okno (_parent)', 73 targetParent: 'Starševsko okno (_parent)',
74 langDirLTR: 'Od leve proti desni (LTR)', 74 langDirLTR: 'Od leve proti desni (LTR)',
75 langDirRTL: 'Od desne proti levi (RTL)', 75 langDirRTL: 'Od desne proti levi (RTL)',
76 styles: 'Slog', 76 styles: 'Slog',
77 cssClasses: 'Razred stilne predloge', 77 cssClasses: 'Razredi slogovne predloge',
78 width: 'Širina', 78 width: 'Širina',
79 height: 'Višina', 79 height: 'Višina',
80 align: 'Poravnava', 80 align: 'Poravnava',
@@ -86,15 +86,32 @@ CKEDITOR.lang[ 'sl' ] = {
86 alignMiddle: 'V sredino', 86 alignMiddle: 'V sredino',
87 alignBottom: 'Na dno', 87 alignBottom: 'Na dno',
88 alignNone: 'Brez poravnave', 88 alignNone: 'Brez poravnave',
89 invalidValue : 'Neveljavna vrednost.', 89 invalidValue: 'Neveljavna vrednost.',
90 invalidHeight: 'Višina mora biti število.', 90 invalidHeight: 'Višina mora biti število.',
91 invalidWidth: 'Širina mora biti število.', 91 invalidWidth: 'Širina mora biti število.',
92 invalidCssLength: 'Vrednost določena za "%1" polje mora biti pozitivna številka z ali brez veljavne CSS enote za merjenje (px, %, in, cm, mm, em, ex, pt, ali pc).', 92 invalidCssLength: 'Vrednost, določena za polje »%1«, mora biti pozitivno število z ali brez veljavne CSS-enote za merjenje (px, %, in, cm, mm, em, ex, pt ali pc).',
93 invalidHtmlLength: 'Vrednost določena za "%1" polje mora biti pozitivna številka z ali brez veljavne HTML enote za merjenje (px ali %).', 93 invalidHtmlLength: 'Vrednost, določena za polje »%1«, mora biti pozitivno število z ali brez veljavne HTML-enote za merjenje (px ali %).',
94 invalidInlineStyle: 'Vrednost določena za inline slog mora biti sestavljena iz ene ali več tork (tuples) z obliko "ime : vrednost", ločenih z podpičji.', 94 invalidInlineStyle: 'Vrednost, določena za slog v vrstici, mora biti sestavljena iz ene ali več dvojic oblike »ime : vrednost«, ločenih s podpičji.',
95 cssLengthTooltip: 'Vnesite številko za vrednost v slikovnih pikah (pixels) ali številko z veljavno CSS enoto (px, %, in, cm, mm, em, ex, pt, ali pc).', 95 cssLengthTooltip: 'Vnesite število za vrednost v slikovnih pikah ali število z veljavno CSS-enoto (px, %, in, cm, mm, em, ex, pt ali pc).',
96 96
97 // Put the voice-only part of the label in the span. 97 // Put the voice-only part of the label in the span.
98 unavailable: '%1<span class="cke_accessibility">, nedosegljiv</span>' 98 unavailable: '%1<span class="cke_accessibility">, nedosegljiv</span>',
99
100 // Keyboard keys translations used for creating shortcuts descriptions in tooltips, context menus and ARIA labels.
101 keyboard: {
102 8: 'Backspace', // MISSING
103 13: 'Enter', // MISSING
104 16: 'Shift', // MISSING
105 17: 'Ctrl', // MISSING
106 18: 'Alt', // MISSING
107 32: 'Space', // MISSING
108 35: 'End', // MISSING
109 36: 'Home', // MISSING
110 46: 'Delete', // MISSING
111 224: 'Command' // MISSING
112 },
113
114 // Prepended to ARIA labels with shortcuts.
115 keyboardShortcut: 'Keyboard shortcut' // MISSING
99 } 116 }
100}; 117};
diff --git a/sources/lang/sq.js b/sources/lang/sq.js
index 7e885a3..d5812ea 100644
--- a/sources/lang/sq.js
+++ b/sources/lang/sq.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -85,7 +85,7 @@ CKEDITOR.lang[ 'sq' ] = {
85 alignMiddle: 'Në mes', 85 alignMiddle: 'Në mes',
86 alignBottom: 'Poshtë', 86 alignBottom: 'Poshtë',
87 alignNone: 'Asnjë', 87 alignNone: 'Asnjë',
88 invalidValue : 'Vlerë e pavlefshme', 88 invalidValue: 'Vlerë e pavlefshme',
89 invalidHeight: 'Lartësia duhet të jetë një numër', 89 invalidHeight: 'Lartësia duhet të jetë një numër',
90 invalidWidth: 'Gjerësia duhet të jetë një numër', 90 invalidWidth: 'Gjerësia duhet të jetë një numër',
91 invalidCssLength: 'Vlera e fushës "%1" duhet të jetë një numër pozitiv me apo pa njësi matëse të vlefshme CSS (px, %, in, cm, mm, em, ex, pt ose pc).', 91 invalidCssLength: 'Vlera e fushës "%1" duhet të jetë një numër pozitiv me apo pa njësi matëse të vlefshme CSS (px, %, in, cm, mm, em, ex, pt ose pc).',
@@ -94,6 +94,23 @@ CKEDITOR.lang[ 'sq' ] = {
94 cssLengthTooltip: 'Fut një numër për vlerën në pixel apo një numër me një njësi të vlefshme CSS (px, %, in, cm, mm, ex, pt, ose pc).', 94 cssLengthTooltip: 'Fut një numër për vlerën në pixel apo një numër me një njësi të vlefshme CSS (px, %, in, cm, mm, ex, pt, ose pc).',
95 95
96 // Put the voice-only part of the label in the span. 96 // Put the voice-only part of the label in the span.
97 unavailable: '%1<span class="cke_accessibility">, i padisponueshëm</span>' 97 unavailable: '%1<span class="cke_accessibility">, i padisponueshëm</span>',
98
99 // Keyboard keys translations used for creating shortcuts descriptions in tooltips, context menus and ARIA labels.
100 keyboard: {
101 8: 'Prapa',
102 13: 'Enter',
103 16: 'Shift',
104 17: 'Ctrl',
105 18: 'Alt',
106 32: 'Space', // MISSING
107 35: 'End',
108 36: 'Home',
109 46: 'Grise',
110 224: 'Command' // MISSING
111 },
112
113 // Prepended to ARIA labels with shortcuts.
114 keyboardShortcut: 'Keyboard shortcut' // MISSING
98 } 115 }
99}; 116};
diff --git a/sources/lang/sr-latn.js b/sources/lang/sr-latn.js
index 78cce5a..9994a0a 100644
--- a/sources/lang/sr-latn.js
+++ b/sources/lang/sr-latn.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -86,7 +86,7 @@ CKEDITOR.lang[ 'sr-latn' ] = {
86 alignMiddle: 'Sredina', 86 alignMiddle: 'Sredina',
87 alignBottom: 'Dole', 87 alignBottom: 'Dole',
88 alignNone: 'None', // MISSING 88 alignNone: 'None', // MISSING
89 invalidValue : 'Invalid value.', // MISSING 89 invalidValue: 'Invalid value.', // MISSING
90 invalidHeight: 'Visina mora biti broj.', 90 invalidHeight: 'Visina mora biti broj.',
91 invalidWidth: 'Širina mora biti broj.', 91 invalidWidth: 'Širina mora biti broj.',
92 invalidCssLength: 'Value specified for the "%1" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).', // MISSING 92 invalidCssLength: 'Value specified for the "%1" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).', // MISSING
@@ -95,6 +95,23 @@ CKEDITOR.lang[ 'sr-latn' ] = {
95 cssLengthTooltip: 'Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).', // MISSING 95 cssLengthTooltip: 'Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).', // MISSING
96 96
97 // Put the voice-only part of the label in the span. 97 // Put the voice-only part of the label in the span.
98 unavailable: '%1<span class="cke_accessibility">, unavailable</span>' // MISSING 98 unavailable: '%1<span class="cke_accessibility">, unavailable</span>', // MISSING
99
100 // Keyboard keys translations used for creating shortcuts descriptions in tooltips, context menus and ARIA labels.
101 keyboard: {
102 8: 'Backspace', // MISSING
103 13: 'Enter', // MISSING
104 16: 'Shift', // MISSING
105 17: 'Ctrl', // MISSING
106 18: 'Alt', // MISSING
107 32: 'Space', // MISSING
108 35: 'End', // MISSING
109 36: 'Home', // MISSING
110 46: 'Delete', // MISSING
111 224: 'Command' // MISSING
112 },
113
114 // Prepended to ARIA labels with shortcuts.
115 keyboardShortcut: 'Keyboard shortcut' // MISSING
99 } 116 }
100}; 117};
diff --git a/sources/lang/sr.js b/sources/lang/sr.js
index cd2bf56..341bf7a 100644
--- a/sources/lang/sr.js
+++ b/sources/lang/sr.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -86,7 +86,7 @@ CKEDITOR.lang[ 'sr' ] = {
86 alignMiddle: 'Средина', 86 alignMiddle: 'Средина',
87 alignBottom: 'Доле', 87 alignBottom: 'Доле',
88 alignNone: 'None', // MISSING 88 alignNone: 'None', // MISSING
89 invalidValue : 'Invalid value.', // MISSING 89 invalidValue: 'Invalid value.', // MISSING
90 invalidHeight: 'Height must be a number.', // MISSING 90 invalidHeight: 'Height must be a number.', // MISSING
91 invalidWidth: 'Width must be a number.', // MISSING 91 invalidWidth: 'Width must be a number.', // MISSING
92 invalidCssLength: 'Value specified for the "%1" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).', // MISSING 92 invalidCssLength: 'Value specified for the "%1" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).', // MISSING
@@ -95,6 +95,23 @@ CKEDITOR.lang[ 'sr' ] = {
95 cssLengthTooltip: 'Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).', // MISSING 95 cssLengthTooltip: 'Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).', // MISSING
96 96
97 // Put the voice-only part of the label in the span. 97 // Put the voice-only part of the label in the span.
98 unavailable: '%1<span class="cke_accessibility">, unavailable</span>' // MISSING 98 unavailable: '%1<span class="cke_accessibility">, unavailable</span>', // MISSING
99
100 // Keyboard keys translations used for creating shortcuts descriptions in tooltips, context menus and ARIA labels.
101 keyboard: {
102 8: 'Backspace', // MISSING
103 13: 'Enter', // MISSING
104 16: 'Shift', // MISSING
105 17: 'Ctrl', // MISSING
106 18: 'Alt', // MISSING
107 32: 'Space', // MISSING
108 35: 'End', // MISSING
109 36: 'Home', // MISSING
110 46: 'Delete', // MISSING
111 224: 'Command' // MISSING
112 },
113
114 // Prepended to ARIA labels with shortcuts.
115 keyboardShortcut: 'Keyboard shortcut' // MISSING
99 } 116 }
100}; 117};
diff --git a/sources/lang/sv.js b/sources/lang/sv.js
index afd1a46..3074d46 100644
--- a/sources/lang/sv.js
+++ b/sources/lang/sv.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -18,8 +18,8 @@
18 */ 18 */
19CKEDITOR.lang[ 'sv' ] = { 19CKEDITOR.lang[ 'sv' ] = {
20 // ARIA description. 20 // ARIA description.
21 editor: 'Rich Text Editor', 21 editor: 'Rich Text-editor',
22 editorPanel: 'Rich Text Editor panel', 22 editorPanel: 'Panel till Rich Text-editor',
23 23
24 // Common messages and labels. 24 // Common messages and labels.
25 common: { 25 common: {
@@ -85,7 +85,7 @@ CKEDITOR.lang[ 'sv' ] = {
85 alignMiddle: 'Mitten', 85 alignMiddle: 'Mitten',
86 alignBottom: 'Nederkant', 86 alignBottom: 'Nederkant',
87 alignNone: 'Ingen', 87 alignNone: 'Ingen',
88 invalidValue : 'Felaktigt värde.', 88 invalidValue: 'Felaktigt värde.',
89 invalidHeight: 'Höjd måste vara ett nummer.', 89 invalidHeight: 'Höjd måste vara ett nummer.',
90 invalidWidth: 'Bredd måste vara ett nummer.', 90 invalidWidth: 'Bredd måste vara ett nummer.',
91 invalidCssLength: 'Värdet för fältet "%1" måste vara ett positivt nummer med eller utan CSS-mätenheter (px, %, in, cm, mm, em, ex, pt, eller pc).', 91 invalidCssLength: 'Värdet för fältet "%1" måste vara ett positivt nummer med eller utan CSS-mätenheter (px, %, in, cm, mm, em, ex, pt, eller pc).',
@@ -94,6 +94,23 @@ CKEDITOR.lang[ 'sv' ] = {
94 cssLengthTooltip: 'Ange ett nummer i pixlar eller ett nummer men godkänd CSS-mätenhet (px, %, in, cm, mm, em, ex, pt, eller pc).', 94 cssLengthTooltip: 'Ange ett nummer i pixlar eller ett nummer men godkänd CSS-mätenhet (px, %, in, cm, mm, em, ex, pt, eller pc).',
95 95
96 // Put the voice-only part of the label in the span. 96 // Put the voice-only part of the label in the span.
97 unavailable: '%1<span class="cke_accessibility">, Ej tillgänglig</span>' 97 unavailable: '%1<span class="cke_accessibility">, Ej tillgänglig</span>',
98
99 // Keyboard keys translations used for creating shortcuts descriptions in tooltips, context menus and ARIA labels.
100 keyboard: {
101 8: 'Backsteg',
102 13: 'Retur',
103 16: 'Skift',
104 17: 'Ctrl',
105 18: 'Alt',
106 32: 'Mellanslag',
107 35: 'Slut',
108 36: 'Hem',
109 46: 'Radera',
110 224: 'Kommando'
111 },
112
113 // Prepended to ARIA labels with shortcuts.
114 keyboardShortcut: 'Kortkommando'
98 } 115 }
99}; 116};
diff --git a/sources/lang/th.js b/sources/lang/th.js
index 91b53cc..6dc918e 100644
--- a/sources/lang/th.js
+++ b/sources/lang/th.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -86,7 +86,7 @@ CKEDITOR.lang[ 'th' ] = {
86 alignMiddle: 'กึ่งกลางแนวตั้ง', 86 alignMiddle: 'กึ่งกลางแนวตั้ง',
87 alignBottom: 'ชิดด้านล่าง', 87 alignBottom: 'ชิดด้านล่าง',
88 alignNone: 'None', // MISSING 88 alignNone: 'None', // MISSING
89 invalidValue : 'ค่าไม่ถูกต้อง', 89 invalidValue: 'ค่าไม่ถูกต้อง',
90 invalidHeight: 'ความสูงต้องเป็นตัวเลข', 90 invalidHeight: 'ความสูงต้องเป็นตัวเลข',
91 invalidWidth: 'ความกว้างต้องเป็นตัวเลข', 91 invalidWidth: 'ความกว้างต้องเป็นตัวเลข',
92 invalidCssLength: 'Value specified for the "%1" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).', // MISSING 92 invalidCssLength: 'Value specified for the "%1" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).', // MISSING
@@ -95,6 +95,23 @@ CKEDITOR.lang[ 'th' ] = {
95 cssLengthTooltip: 'Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).', // MISSING 95 cssLengthTooltip: 'Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).', // MISSING
96 96
97 // Put the voice-only part of the label in the span. 97 // Put the voice-only part of the label in the span.
98 unavailable: '%1<span class="cke_accessibility">, unavailable</span>' // MISSING 98 unavailable: '%1<span class="cke_accessibility">, unavailable</span>', // MISSING
99
100 // Keyboard keys translations used for creating shortcuts descriptions in tooltips, context menus and ARIA labels.
101 keyboard: {
102 8: 'Backspace', // MISSING
103 13: 'Enter', // MISSING
104 16: 'Shift', // MISSING
105 17: 'Ctrl', // MISSING
106 18: 'Alt', // MISSING
107 32: 'Space', // MISSING
108 35: 'End', // MISSING
109 36: 'Home', // MISSING
110 46: 'Delete', // MISSING
111 224: 'Command' // MISSING
112 },
113
114 // Prepended to ARIA labels with shortcuts.
115 keyboardShortcut: 'Keyboard shortcut' // MISSING
99 } 116 }
100}; 117};
diff --git a/sources/lang/tr.js b/sources/lang/tr.js
index 00cafca..0cbd57c 100644
--- a/sources/lang/tr.js
+++ b/sources/lang/tr.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -85,7 +85,7 @@ CKEDITOR.lang[ 'tr' ] = {
85 alignMiddle: 'Orta', 85 alignMiddle: 'Orta',
86 alignBottom: 'Alt', 86 alignBottom: 'Alt',
87 alignNone: 'Hiçbiri', 87 alignNone: 'Hiçbiri',
88 invalidValue : 'Geçersiz değer.', 88 invalidValue: 'Geçersiz değer.',
89 invalidHeight: 'Yükseklik değeri bir sayı olmalıdır.', 89 invalidHeight: 'Yükseklik değeri bir sayı olmalıdır.',
90 invalidWidth: 'Genişlik değeri bir sayı olmalıdır.', 90 invalidWidth: 'Genişlik değeri bir sayı olmalıdır.',
91 invalidCssLength: '"%1" alanı için verilen değer, geçerli bir CSS ölçü birimi (px, %, in, cm, mm, em, ex, pt, veya pc) içeren veya içermeyen pozitif bir sayı olmalıdır.', 91 invalidCssLength: '"%1" alanı için verilen değer, geçerli bir CSS ölçü birimi (px, %, in, cm, mm, em, ex, pt, veya pc) içeren veya içermeyen pozitif bir sayı olmalıdır.',
@@ -94,6 +94,23 @@ CKEDITOR.lang[ 'tr' ] = {
94 cssLengthTooltip: 'Piksel türünde bir sayı veya geçerli bir CSS ölçü birimi (px, %, in, cm, mm, em, ex, pt veya pc) içeren bir sayı girin.', 94 cssLengthTooltip: 'Piksel türünde bir sayı veya geçerli bir CSS ölçü birimi (px, %, in, cm, mm, em, ex, pt veya pc) içeren bir sayı girin.',
95 95
96 // Put the voice-only part of the label in the span. 96 // Put the voice-only part of the label in the span.
97 unavailable: '%1<span class="cke_accessibility">, kullanılamaz</span>' 97 unavailable: '%1<span class="cke_accessibility">, kullanılamaz</span>',
98
99 // Keyboard keys translations used for creating shortcuts descriptions in tooltips, context menus and ARIA labels.
100 keyboard: {
101 8: 'Silme Tuşu',
102 13: 'Giriş Tuşu',
103 16: 'Üst Karater Tuşu',
104 17: 'Kontrol Tuşu',
105 18: 'Alt Tuşu',
106 32: 'Boşluk Tuşu',
107 35: 'En Sona Tuşu',
108 36: 'En Başa Tuşu',
109 46: 'Silme Tuşu',
110 224: 'Komut Tuşu'
111 },
112
113 // Prepended to ARIA labels with shortcuts.
114 keyboardShortcut: 'Klavye Kısayolu'
98 } 115 }
99}; 116};
diff --git a/sources/lang/tt.js b/sources/lang/tt.js
index 2035446..c63170b 100644
--- a/sources/lang/tt.js
+++ b/sources/lang/tt.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -86,7 +86,7 @@ CKEDITOR.lang[ 'tt' ] = {
86 alignMiddle: 'Уртага', 86 alignMiddle: 'Уртага',
87 alignBottom: 'Аска', 87 alignBottom: 'Аска',
88 alignNone: 'Һичбер', 88 alignNone: 'Һичбер',
89 invalidValue : 'Дөрес булмаган кыйммәт.', 89 invalidValue: 'Дөрес булмаган кыйммәт.',
90 invalidHeight: 'Биеклек сан булырга тиеш.', 90 invalidHeight: 'Биеклек сан булырга тиеш.',
91 invalidWidth: 'Киңлек сан булырга тиеш.', 91 invalidWidth: 'Киңлек сан булырга тиеш.',
92 invalidCssLength: 'Value specified for the "%1" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).', // MISSING 92 invalidCssLength: 'Value specified for the "%1" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).', // MISSING
@@ -95,6 +95,23 @@ CKEDITOR.lang[ 'tt' ] = {
95 cssLengthTooltip: 'Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).', // MISSING 95 cssLengthTooltip: 'Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).', // MISSING
96 96
97 // Put the voice-only part of the label in the span. 97 // Put the voice-only part of the label in the span.
98 unavailable: '%1<span class="cke_accessibility">, unavailable</span>' // MISSING 98 unavailable: '%1<span class="cke_accessibility">, unavailable</span>', // MISSING
99
100 // Keyboard keys translations used for creating shortcuts descriptions in tooltips, context menus and ARIA labels.
101 keyboard: {
102 8: 'Кайтару',
103 13: 'Enter',
104 16: 'Shift',
105 17: 'Ctrl',
106 18: 'Alt',
107 32: 'Space', // MISSING
108 35: 'End',
109 36: 'Home',
110 46: 'Бетерү',
111 224: 'Command' // MISSING
112 },
113
114 // Prepended to ARIA labels with shortcuts.
115 keyboardShortcut: 'Keyboard shortcut' // MISSING
99 } 116 }
100}; 117};
diff --git a/sources/lang/ug.js b/sources/lang/ug.js
index f7d3283..13a256d 100644
--- a/sources/lang/ug.js
+++ b/sources/lang/ug.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -85,7 +85,7 @@ CKEDITOR.lang[ 'ug' ] = {
85 alignMiddle: 'ئوتتۇرا', 85 alignMiddle: 'ئوتتۇرا',
86 alignBottom: 'ئاستى', 86 alignBottom: 'ئاستى',
87 alignNone: 'يوق', 87 alignNone: 'يوق',
88 invalidValue : 'ئىناۋەتسىز قىممەت.', 88 invalidValue: 'ئىناۋەتسىز قىممەت.',
89 invalidHeight: 'ئېگىزلىك چوقۇم رەقەم پىچىمىدا بولۇشى زۆرۈر', 89 invalidHeight: 'ئېگىزلىك چوقۇم رەقەم پىچىمىدا بولۇشى زۆرۈر',
90 invalidWidth: 'كەڭلىك چوقۇم رەقەم پىچىمىدا بولۇشى زۆرۈر', 90 invalidWidth: 'كەڭلىك چوقۇم رەقەم پىچىمىدا بولۇشى زۆرۈر',
91 invalidCssLength: 'بۇ سۆز بۆلىكى چوقۇم مۇۋاپىق بولغان CSS ئۇزۇنلۇق قىممىتى بولۇشى زۆرۈر، بىرلىكى (px, %, in, cm, mm, em, ex, pt ياكى pc)', 91 invalidCssLength: 'بۇ سۆز بۆلىكى چوقۇم مۇۋاپىق بولغان CSS ئۇزۇنلۇق قىممىتى بولۇشى زۆرۈر، بىرلىكى (px, %, in, cm, mm, em, ex, pt ياكى pc)',
@@ -94,6 +94,23 @@ CKEDITOR.lang[ 'ug' ] = {
94 cssLengthTooltip: 'بۇ سۆز بۆلىكى بىرىكمە CSS ئۇزۇنلۇق قىممىتى بولۇشى كېرەك. ئۆز ئىچىگە ئالىدىغان بىرلىك (px, %, in, cm, mm, em, ex, pt ياكى pc)', 94 cssLengthTooltip: 'بۇ سۆز بۆلىكى بىرىكمە CSS ئۇزۇنلۇق قىممىتى بولۇشى كېرەك. ئۆز ئىچىگە ئالىدىغان بىرلىك (px, %, in, cm, mm, em, ex, pt ياكى pc)',
95 95
96 // Put the voice-only part of the label in the span. 96 // Put the voice-only part of the label in the span.
97 unavailable: '%1<span class=\\\\"cke_accessibility\\\\">، ئىشلەتكىلى بولمايدۇ</span>' 97 unavailable: '%1<span class=\\\\"cke_accessibility\\\\">، ئىشلەتكىلى بولمايدۇ</span>',
98
99 // Keyboard keys translations used for creating shortcuts descriptions in tooltips, context menus and ARIA labels.
100 keyboard: {
101 8: 'Backspace',
102 13: 'Enter',
103 16: 'Shift',
104 17: 'Ctrl',
105 18: 'Alt',
106 32: 'Space', // MISSING
107 35: 'End',
108 36: 'Home',
109 46: 'ئۆچۈر',
110 224: 'Command' // MISSING
111 },
112
113 // Prepended to ARIA labels with shortcuts.
114 keyboardShortcut: 'Keyboard shortcut' // MISSING
98 } 115 }
99}; 116};
diff --git a/sources/lang/uk.js b/sources/lang/uk.js
index 18f8d52..3fbc52d 100644
--- a/sources/lang/uk.js
+++ b/sources/lang/uk.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -20,7 +20,7 @@
20CKEDITOR.lang[ 'uk' ] = { 20CKEDITOR.lang[ 'uk' ] = {
21 // ARIA description. 21 // ARIA description.
22 editor: 'Текстовий редактор', 22 editor: 'Текстовий редактор',
23 editorPanel: 'Панель текстового редактора', 23 editorPanel: 'Панель озширеного екстового редактора',
24 24
25 // Common messages and labels. 25 // Common messages and labels.
26 common: { 26 common: {
@@ -86,7 +86,7 @@ CKEDITOR.lang[ 'uk' ] = {
86 alignMiddle: 'По середині', 86 alignMiddle: 'По середині',
87 alignBottom: 'По нижньому краю', 87 alignBottom: 'По нижньому краю',
88 alignNone: 'Нема', 88 alignNone: 'Нема',
89 invalidValue : 'Невірне значення.', 89 invalidValue: 'Невірне значення.',
90 invalidHeight: 'Висота повинна бути цілим числом.', 90 invalidHeight: 'Висота повинна бути цілим числом.',
91 invalidWidth: 'Ширина повинна бути цілим числом.', 91 invalidWidth: 'Ширина повинна бути цілим числом.',
92 invalidCssLength: 'Значення, вказане для "%1" в полі повинно бути позитивним числом або без дійсного виміру CSS блоку (px, %, in, cm, mm, em, ex, pt або pc).', 92 invalidCssLength: 'Значення, вказане для "%1" в полі повинно бути позитивним числом або без дійсного виміру CSS блоку (px, %, in, cm, mm, em, ex, pt або pc).',
@@ -95,6 +95,23 @@ CKEDITOR.lang[ 'uk' ] = {
95 cssLengthTooltip: 'Введіть номер значення в пікселях або число з дійсною одиниці CSS (px, %, in, cm, mm, em, ex, pt або pc).', 95 cssLengthTooltip: 'Введіть номер значення в пікселях або число з дійсною одиниці CSS (px, %, in, cm, mm, em, ex, pt або pc).',
96 96
97 // Put the voice-only part of the label in the span. 97 // Put the voice-only part of the label in the span.
98 unavailable: '%1<span class="cke_accessibility">, не доступне</span>' 98 unavailable: '%1<span class="cke_accessibility">, не доступне</span>',
99
100 // Keyboard keys translations used for creating shortcuts descriptions in tooltips, context menus and ARIA labels.
101 keyboard: {
102 8: 'Backspace',
103 13: 'Enter',
104 16: 'Shift',
105 17: 'Ctrl',
106 18: 'Alt',
107 32: 'Space', // MISSING
108 35: 'End',
109 36: 'Home',
110 46: 'Видалити',
111 224: 'Command' // MISSING
112 },
113
114 // Prepended to ARIA labels with shortcuts.
115 keyboardShortcut: 'Keyboard shortcut' // MISSING
99 } 116 }
100}; 117};
diff --git a/sources/lang/vi.js b/sources/lang/vi.js
index d1b5dc4..45d3d30 100644
--- a/sources/lang/vi.js
+++ b/sources/lang/vi.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -86,7 +86,7 @@ CKEDITOR.lang[ 'vi' ] = {
86 alignMiddle: 'Giữa', 86 alignMiddle: 'Giữa',
87 alignBottom: 'Dưới', 87 alignBottom: 'Dưới',
88 alignNone: 'Không', 88 alignNone: 'Không',
89 invalidValue : 'Giá trị không hợp lệ.', 89 invalidValue: 'Giá trị không hợp lệ.',
90 invalidHeight: 'Chiều cao phải là số nguyên.', 90 invalidHeight: 'Chiều cao phải là số nguyên.',
91 invalidWidth: 'Chiều rộng phải là số nguyên.', 91 invalidWidth: 'Chiều rộng phải là số nguyên.',
92 invalidCssLength: 'Giá trị quy định cho trường "%1" phải là một số dương có hoặc không có một đơn vị đo CSS hợp lệ (px, %, in, cm, mm, em, ex, pt, hoặc pc).', 92 invalidCssLength: 'Giá trị quy định cho trường "%1" phải là một số dương có hoặc không có một đơn vị đo CSS hợp lệ (px, %, in, cm, mm, em, ex, pt, hoặc pc).',
@@ -95,6 +95,23 @@ CKEDITOR.lang[ 'vi' ] = {
95 cssLengthTooltip: 'Nhập một giá trị theo pixel hoặc một số với một đơn vị CSS hợp lệ (px, %, in, cm, mm, em, ex, pt, hoặc pc).', 95 cssLengthTooltip: 'Nhập một giá trị theo pixel hoặc một số với một đơn vị CSS hợp lệ (px, %, in, cm, mm, em, ex, pt, hoặc pc).',
96 96
97 // Put the voice-only part of the label in the span. 97 // Put the voice-only part of the label in the span.
98 unavailable: '%1<span class="cke_accessibility">, không có</span>' 98 unavailable: '%1<span class="cke_accessibility">, không có</span>',
99
100 // Keyboard keys translations used for creating shortcuts descriptions in tooltips, context menus and ARIA labels.
101 keyboard: {
102 8: 'Phím Backspace',
103 13: 'Enter',
104 16: 'Shift', // MISSING
105 17: 'Ctrl', // MISSING
106 18: 'Alt', // MISSING
107 32: 'Space', // MISSING
108 35: 'End', // MISSING
109 36: 'Home', // MISSING
110 46: 'Xóa',
111 224: 'Command' // MISSING
112 },
113
114 // Prepended to ARIA labels with shortcuts.
115 keyboardShortcut: 'Keyboard shortcut' // MISSING
99 } 116 }
100}; 117};
diff --git a/sources/lang/zh-cn.js b/sources/lang/zh-cn.js
index c3b01a5..b89c0c9 100644
--- a/sources/lang/zh-cn.js
+++ b/sources/lang/zh-cn.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -86,7 +86,7 @@ CKEDITOR.lang[ 'zh-cn' ] = {
86 alignMiddle: '居中', 86 alignMiddle: '居中',
87 alignBottom: '底部', 87 alignBottom: '底部',
88 alignNone: '无', 88 alignNone: '无',
89 invalidValue : '无效的值。', 89 invalidValue: '无效的值。',
90 invalidHeight: '高度必须为数字格式', 90 invalidHeight: '高度必须为数字格式',
91 invalidWidth: '宽度必须为数字格式', 91 invalidWidth: '宽度必须为数字格式',
92 invalidCssLength: '此“%1”字段的值必须为正数,可以包含或不包含一个有效的 CSS 长度单位(px, %, in, cm, mm, em, ex, pt 或 pc)', 92 invalidCssLength: '此“%1”字段的值必须为正数,可以包含或不包含一个有效的 CSS 长度单位(px, %, in, cm, mm, em, ex, pt 或 pc)',
@@ -95,6 +95,23 @@ CKEDITOR.lang[ 'zh-cn' ] = {
95 cssLengthTooltip: '输入一个表示像素值的数字,或加上一个有效的 CSS 长度单位(px, %, in, cm, mm, em, ex, pt 或 pc)。', 95 cssLengthTooltip: '输入一个表示像素值的数字,或加上一个有效的 CSS 长度单位(px, %, in, cm, mm, em, ex, pt 或 pc)。',
96 96
97 // Put the voice-only part of the label in the span. 97 // Put the voice-only part of the label in the span.
98 unavailable: '%1<span class="cke_accessibility">,不可用</span>' 98 unavailable: '%1<span class="cke_accessibility">,不可用</span>',
99
100 // Keyboard keys translations used for creating shortcuts descriptions in tooltips, context menus and ARIA labels.
101 keyboard: {
102 8: '退格键',
103 13: '回车键',
104 16: 'Shift',
105 17: 'Ctrl',
106 18: 'Alt',
107 32: '空格键',
108 35: '行尾键',
109 36: '行首键',
110 46: '删除键',
111 224: 'Command'
112 },
113
114 // Prepended to ARIA labels with shortcuts.
115 keyboardShortcut: '快捷键'
99 } 116 }
100}; 117};
diff --git a/sources/lang/zh.js b/sources/lang/zh.js
index a5124e2..c8a0548 100644
--- a/sources/lang/zh.js
+++ b/sources/lang/zh.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -86,7 +86,7 @@ CKEDITOR.lang[ 'zh' ] = {
86 alignMiddle: '中間對齊', 86 alignMiddle: '中間對齊',
87 alignBottom: '底端', 87 alignBottom: '底端',
88 alignNone: '無', 88 alignNone: '無',
89 invalidValue : '無效值。', 89 invalidValue: '無效值。',
90 invalidHeight: '高度必須為數字。', 90 invalidHeight: '高度必須為數字。',
91 invalidWidth: '寬度必須為數字。', 91 invalidWidth: '寬度必須為數字。',
92 invalidCssLength: '「%1」的值應為正數,並可包含有效的 CSS 單位 (px, %, in, cm, mm, em, ex, pt, 或 pc)。', 92 invalidCssLength: '「%1」的值應為正數,並可包含有效的 CSS 單位 (px, %, in, cm, mm, em, ex, pt, 或 pc)。',
@@ -95,6 +95,23 @@ CKEDITOR.lang[ 'zh' ] = {
95 cssLengthTooltip: '請輸入數值,單位是像素或有效的 CSS 單位 (px, %, in, cm, mm, em, ex, pt, 或 pc)。', 95 cssLengthTooltip: '請輸入數值,單位是像素或有效的 CSS 單位 (px, %, in, cm, mm, em, ex, pt, 或 pc)。',
96 96
97 // Put the voice-only part of the label in the span. 97 // Put the voice-only part of the label in the span.
98 unavailable: '%1<span class="cke_accessibility">,無法使用</span>' 98 unavailable: '%1<span class="cke_accessibility">,無法使用</span>',
99
100 // Keyboard keys translations used for creating shortcuts descriptions in tooltips, context menus and ARIA labels.
101 keyboard: {
102 8: '退格鍵',
103 13: 'Enter',
104 16: 'Shift',
105 17: 'Ctrl',
106 18: 'Alt',
107 32: '空白鍵',
108 35: 'End',
109 36: 'Home',
110 46: '刪除',
111 224: 'Command 鍵'
112 },
113
114 // Prepended to ARIA labels with shortcuts.
115 keyboardShortcut: '鍵盤快捷鍵'
99 } 116 }
100}; 117};
diff --git a/sources/plugins/Audio/dialogs/audio.js b/sources/plugins/Audio/dialogs/audio.js
new file mode 100644
index 0000000..5b72af9
--- /dev/null
+++ b/sources/plugins/Audio/dialogs/audio.js
@@ -0,0 +1,350 @@
1CKEDITOR.dialog.add( 'audio', function ( editor )
2{
3 var lang = editor.lang.audio;
4
5 function commitValue( audioNode, extraStyles )
6 {
7 var value=this.getValue();
8
9 if ( !value && this.id=='id' )
10 value = generateId();
11
12 audioNode.setAttribute( this.id, value);
13
14 if ( !value )
15 return;
16 switch( this.id )
17 {
18 case 'poster':
19 extraStyles.backgroundImage = 'url(' + value + ')';
20 break;
21 case 'width':
22 extraStyles.width = value + 'px';
23 break;
24 case 'height':
25 extraStyles.height = value + 'px';
26 break;
27 }
28 }
29
30 function commitSrc( audioNode, extraStyles, audios )
31 {
32 var match = this.id.match(/(\w+)(\d)/),
33 id = match[1],
34 number = parseInt(match[2], 10);
35
36 var audio = audios[number] || (audios[number]={});
37 audio[id] = this.getValue();
38 }
39
40 function loadValue( audioNode )
41 {
42 if ( audioNode )
43 this.setValue( audioNode.getAttribute( this.id ) );
44 else
45 {
46 if ( this.id == 'id')
47 this.setValue( generateId() );
48 }
49 }
50
51 function loadSrc( audioNode, audios )
52 {
53 var match = this.id.match(/(\w+)(\d)/),
54 id = match[1],
55 number = parseInt(match[2], 10);
56
57 var audio = audios[number];
58 if (!audio)
59 return;
60 this.setValue( audio[ id ] );
61 }
62
63 function generateId()
64 {
65 var now = new Date();
66 return 'audio' + now.getFullYear() + now.getMonth() + now.getDate() + now.getHours() + now.getMinutes() + now.getSeconds();
67 }
68
69 // To automatically get the dimensions of the poster image
70 var onImgLoadEvent = function()
71 {
72 // Image is ready.
73 var preview = this.previewImage;
74 preview.removeListener( 'load', onImgLoadEvent );
75 preview.removeListener( 'error', onImgLoadErrorEvent );
76 preview.removeListener( 'abort', onImgLoadErrorEvent );
77
78 this.setValueOf( 'info', 'width', preview.$.width );
79 this.setValueOf( 'info', 'height', preview.$.height );
80 };
81
82 var onImgLoadErrorEvent = function()
83 {
84 // Error. Image is not loaded.
85 var preview = this.previewImage;
86 preview.removeListener( 'load', onImgLoadEvent );
87 preview.removeListener( 'error', onImgLoadErrorEvent );
88 preview.removeListener( 'abort', onImgLoadErrorEvent );
89 };
90
91 return {
92 title : lang.dialogTitle,
93 minWidth : 400,
94 minHeight : 200,
95
96 onShow : function()
97 {
98 // Clear previously saved elements.
99 this.fakeImage = this.audioNode = null;
100 // To get dimensions of poster image
101 this.previewImage = editor.document.createElement( 'img' );
102
103 var fakeImage = this.getSelectedElement();
104 if ( fakeImage && fakeImage.data( 'cke-real-element-type' ) && fakeImage.data( 'cke-real-element-type' ) == 'audio' )
105 {
106 this.fakeImage = fakeImage;
107
108 var audioNode = editor.restoreRealElement( fakeImage ),
109 audios = [],
110 sourceList = audioNode.getElementsByTag( 'source', '' );
111 if (sourceList.count()==0)
112 sourceList = audioNode.getElementsByTag( 'source', 'cke' );
113
114 for ( var i = 0, length = sourceList.count() ; i < length ; i++ )
115 {
116 var item = sourceList.getItem( i );
117 audios.push( {src : item.getAttribute( 'src' ), type: item.getAttribute( 'type' )} );
118 }
119
120 this.audioNode = audioNode;
121
122 this.setupContent( audioNode, audios );
123 }
124 else
125 this.setupContent( null, [] );
126 },
127
128 onOk : function()
129 {
130 // If there's no selected element create one. Otherwise, reuse it
131 var audioNode = null;
132 if ( !this.fakeImage )
133 {
134 audioNode = CKEDITOR.dom.element.createFromHtml( '<cke:audio></cke:audio>', editor.document );
135 audioNode.setAttributes(
136 {
137 controls : 'controls'
138 } );
139 }
140 else
141 {
142 audioNode = this.audioNode;
143 }
144
145 var extraStyles = {}, audios = [];
146 this.commitContent( audioNode, extraStyles, audios );
147
148 var innerHtml = '', links = '',
149 link = lang.linkTemplate || '',
150 fallbackTemplate = lang.fallbackTemplate || '';
151 for(var i=0; i<audios.length; i++)
152 {
153 var audio = audios[i];
154 if ( !audio || !audio.src )
155 continue;
156 innerHtml += '<cke:source src="' + audio.src + '" type="' + audio.type + '" />';
157 links += link.replace('%src%', audio.src).replace('%type%', audio.type);
158 }
159 audioNode.setHtml( innerHtml + fallbackTemplate.replace( '%links%', links ) );
160
161 // Refresh the fake image.
162 var newFakeImage = editor.createFakeElement( audioNode, 'cke_audio', 'audio', false );
163 newFakeImage.setStyles( extraStyles );
164 if ( this.fakeImage )
165 {
166 newFakeImage.replace( this.fakeImage );
167 editor.getSelection().selectElement( newFakeImage );
168 }
169 else
170 {
171 // Insert it in a div
172 var div = new CKEDITOR.dom.element( 'DIV', editor.document );
173 editor.insertElement( div );
174 div.append( newFakeImage );
175 }
176 },
177 onHide : function()
178 {
179 if ( this.previewImage )
180 {
181 this.previewImage.removeListener( 'load', onImgLoadEvent );
182 this.previewImage.removeListener( 'error', onImgLoadErrorEvent );
183 this.previewImage.removeListener( 'abort', onImgLoadErrorEvent );
184 this.previewImage.remove();
185 this.previewImage = null; // Dialog is closed.
186 }
187 },
188
189 contents :
190 [
191 {
192 id : 'info',
193 elements :
194 [
195 {
196 type : 'hbox',
197 widths: [ '', '100px'],
198 children : [
199 {
200 type : 'text',
201 id : 'poster',
202 label : lang.poster,
203 commit : commitValue,
204 setup : loadValue,
205 onChange : function()
206 {
207 var dialog = this.getDialog(),
208 newUrl = this.getValue();
209
210 //Update preview image
211 if ( newUrl.length > 0 ) //Prevent from load before onShow
212 {
213 dialog = this.getDialog();
214 var preview = dialog.previewImage;
215
216 preview.on( 'load', onImgLoadEvent, dialog );
217 preview.on( 'error', onImgLoadErrorEvent, dialog );
218 preview.on( 'abort', onImgLoadErrorEvent, dialog );
219 preview.setAttribute( 'src', newUrl );
220 }
221 }
222 },
223 {
224 type : 'button',
225 id : 'browse',
226 hidden : 'true',
227 style : 'display:inline-block;margin-top:10px;',
228 filebrowser :
229 {
230 action : 'Browse',
231 target: 'info:poster',
232 url: editor.config.filebrowserImageBrowseUrl || editor.config.filebrowserBrowseUrl
233 },
234 label : editor.lang.common.browseServer
235 }]
236 },
237 {
238 type : 'hbox',
239 widths: [ '33%', '33%', '33%'],
240 children : [
241 {
242 type : 'text',
243 id : 'width',
244 label : editor.lang.common.width,
245 'default' : 400,
246 validate : CKEDITOR.dialog.validate.notEmpty( lang.widthRequired ),
247 commit : commitValue,
248 setup : loadValue
249 },
250 {
251 type : 'text',
252 id : 'height',
253 label : editor.lang.common.height,
254 'default' : 300,
255 validate : CKEDITOR.dialog.validate.notEmpty(lang.heightRequired ),
256 commit : commitValue,
257 setup : loadValue
258 },
259 {
260 type : 'text',
261 id : 'id',
262 label : 'Id',
263 commit : commitValue,
264 setup : loadValue
265 }
266 ]
267 },
268 {
269 type : 'hbox',
270 widths: [ '', '100px', '75px'],
271 children : [
272 {
273 type : 'text',
274 id : 'src0',
275 label : lang.sourceaudio,
276 commit : commitSrc,
277 setup : loadSrc
278 },
279 {
280 type : 'button',
281 id : 'browse',
282 hidden : 'true',
283 style : 'display:inline-block;margin-top:10px;',
284 filebrowser :
285 {
286 action : 'Browse',
287 target: 'info:src0',
288 url: editor.config.filebrowserAudioBrowseUrl || editor.config.filebrowserBrowseUrl
289 },
290 label : editor.lang.common.browseServer
291 },
292 {
293 id : 'type0',
294 label : lang.sourceType,
295 type : 'select',
296 'default' : 'audio/mp3',
297 items :
298 [
299 [ 'MP3', 'audio/mp3' ],
300 [ 'WAV', 'audio/wav' ]
301 ],
302 commit : commitSrc,
303 setup : loadSrc
304 }]
305 },
306
307 {
308 type : 'hbox',
309 widths: [ '', '100px', '75px'],
310 children : [
311 {
312 type : 'text',
313 id : 'src1',
314 label : lang.sourceaudio,
315 commit : commitSrc,
316 setup : loadSrc
317 },
318 {
319 type : 'button',
320 id : 'browse',
321 hidden : 'true',
322 style : 'display:inline-block;margin-top:10px;',
323 filebrowser :
324 {
325 action : 'Browse',
326 target: 'info:src1',
327 url: editor.config.filebrowserAudioBrowseUrl || editor.config.filebrowserBrowseUrl
328 },
329 label : editor.lang.common.browseServer
330 },
331 {
332 id : 'type1',
333 label : lang.sourceType,
334 type : 'select',
335 'default':'audio/wav',
336 items :
337 [
338 [ 'MP3', 'audio/mp3' ],
339 [ 'WAV', 'audio/wav' ]
340 ],
341 commit : commitSrc,
342 setup : loadSrc
343 }]
344 }
345 ]
346 }
347
348 ]
349 };
350} );
diff --git a/sources/plugins/Audio/docs/install.html b/sources/plugins/Audio/docs/install.html
new file mode 100644
index 0000000..3fbf30e
--- /dev/null
+++ b/sources/plugins/Audio/docs/install.html
@@ -0,0 +1,69 @@
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
2 "http://www.w3.org/TR/html4/loose.dtd">
3<html lang="en">
4<head>
5<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
6<title>Audio plugin</title>
7<link href="styles.css" rel="stylesheet" type="text/css">
8</head>
9
10<body>
11<h1>Audio Plugin for CKEditor</h1>
12
13<h2>Introduction</h2>
14<p>This is a plugin to create HTML5 &lt;audio&gt; elements in <a href="http://www.ckeditor.com">CKEditor</a>.</p>
15<h3>Version history: </h3>
16<ol>
17 <li>1.0: 10-July-2015. First version.</li>
18</ol>
19
20<h2>Installation</h2>
21<h3>1. Copying the files</h3>
22<p>Extract the contents of the zip in you plugins directory, so it ends up like
23 this<br>
24 <!--<img src="installation.png" alt="Screenshot of installation" width="311" height="346" longdesc="#install">-->
25 </p>
26<pre id="--install">
27ckeditor\
28 ...
29 images\
30 lang\
31 plugins\
32 ...
33 audio\
34 plugin.js
35 dialogs\
36 audio.js
37 docs\
38 install.html
39 images\
40 icon.png
41 placeholder.png
42 ...
43 skins\
44 themes\
45</pre>
46<h3>2. Adding it to CKEditor</h3>
47<p>Now add the plugin in your <em>config.js</em> or custom js configuration
48file:
49<code>config.extraPlugins='audio'; </code>
50</p>
51
52<h3>3. Add it to your toolbar</h3>
53<p>In your toolbar configuration, add a new 'Audio' item in the place where you want the button to show up.</p>
54
55<h3>4. Configure server browser for audio</h3>
56<p>You can use the <code>config.filebrowserAudioBrowseUrl</code> entry to specify a url so the file browser shows just audio elements (as long as your configure properly your file browser).</p>
57
58<h3>5. Use it</h3>
59<p>Now empty the cache of your browser and reload the editor, the new button should show up and you can add &lt;audio&gt; elements into the content.</p>
60
61<h2>Final notes</h2>
62<p>Please, note that only newer browsers support the Audio element, in older ones a simple text linking to the source audios is provided, you might want to
63use some javascript or css to customize the final behavior of these elements.</p>
64
65
66<h2>Disclaimers</h2>
67<p>CKEditor is &copy; CKSource.com</p>
68</body>
69</html>
diff --git a/sources/plugins/Audio/docs/styles.css b/sources/plugins/Audio/docs/styles.css
new file mode 100644
index 0000000..5eba91e
--- /dev/null
+++ b/sources/plugins/Audio/docs/styles.css
@@ -0,0 +1,67 @@
1body {
2 font-family: Arial, Helvetica, sans-serif;
3 font-size: 90%;
4}
5h1 {
6 text-align:center;
7 font-size:180%;
8}
9h2 {
10 border-bottom:2px solid #CCC;
11 margin:1em 0 0.4em 0;
12}
13h3 {
14 margin-bottom:0.4em;
15}
16p {
17 margin:0 0 1em 1em;
18 text-align:justify;
19}
20ol {
21 margin:0 0 1.2em 1em;
22 padding:0;
23 list-style-type:none;
24}
25ol li {
26 margin:0.2em 0;
27}
28pre {
29 font-size:100%;
30 font-family:"Courier New", Courier, mono;
31 background-color: #CCCCCC;
32 border:1px solid #999;
33 padding:0.2em 1em;
34 margin: 0.4em 0;
35 display:block;
36 white-space: pre;
37 overflow: auto;
38}
39code {
40 font-size:100%;
41 font-family:"Courier New", Courier, mono;
42 background-color: #CCCCCC;
43 border:1px solid #999;
44 padding:0.2em;
45 white-space: pre;
46}
47form {
48 margin:0 0 0 1em;
49}
50span.key {
51 color: #006600;
52}
53#install {
54 display:none
55}
56#languages ul {
57 display:inline;
58 list-style-type:none;
59 margin:0;
60 padding:0;
61}
62#languages li {
63 display:inline;
64 margin:0;
65 padding:0;
66 vertical-align:bottom;
67}
diff --git a/sources/plugins/Audio/images/audio.png b/sources/plugins/Audio/images/audio.png
new file mode 100644
index 0000000..b4a4ef7
--- /dev/null
+++ b/sources/plugins/Audio/images/audio.png
Binary files differ
diff --git a/sources/plugins/Audio/images/icon.png b/sources/plugins/Audio/images/icon.png
new file mode 100644
index 0000000..1ec7ecc
--- /dev/null
+++ b/sources/plugins/Audio/images/icon.png
Binary files differ
diff --git a/sources/plugins/Audio/images/placeholder.png b/sources/plugins/Audio/images/placeholder.png
new file mode 100644
index 0000000..1456cac
--- /dev/null
+++ b/sources/plugins/Audio/images/placeholder.png
Binary files differ
diff --git a/sources/plugins/Audio/plugin.js b/sources/plugins/Audio/plugin.js
new file mode 100644
index 0000000..ee618f6
--- /dev/null
+++ b/sources/plugins/Audio/plugin.js
@@ -0,0 +1,211 @@
1/*
2 * @file audio plugin for CKEditor
3 * Copyright (C) 2011 Alfonso Martínez de Lizarrondo
4 *
5 * == BEGIN LICENSE ==
6 *
7 * Licensed under the terms of any of the following licenses at your
8 * choice:
9 *
10 * - GNU General Public License Version 2 or later (the "GPL")
11 * http://www.gnu.org/licenses/gpl.html
12 *
13 * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
14 * http://www.gnu.org/licenses/lgpl.html
15 *
16 * - Mozilla Public License Version 1.1 or later (the "MPL")
17 * http://www.mozilla.org/MPL/MPL-1.1.html
18 *
19 * == END LICENSE ==
20 *
21 */
22
23( function() {
24
25CKEDITOR.plugins.add( 'Audio',
26{
27 // Translations, available at the end of this file, without extra requests
28 lang : [ 'en', 'es' ],
29
30 getPlaceholderCss : function()
31 {
32 return 'img.cke_audio' +
33 '{' +
34 'background-image: url(' + CKEDITOR.getUrl( this.path + 'images/placeholder.png' ) + ');' +
35 'background-position: center center;' +
36 'background-repeat: no-repeat;' +
37 'background-color:gray;'+
38 'border: 1px solid #a9a9a9;' +
39 'width: 80px;' +
40 'height: 80px;' +
41 '}';
42 },
43
44 onLoad : function()
45 {
46 // v4
47 if (CKEDITOR.addCss)
48 CKEDITOR.addCss( this.getPlaceholderCss() );
49
50 },
51
52 init : function( editor )
53 {
54 var lang = editor.lang.audio;
55
56 // Check for CKEditor 3.5
57 if (typeof editor.element.data == 'undefined')
58 {
59 alert('The "audio" plugin requires CKEditor 3.5 or newer');
60 return;
61 }
62
63 CKEDITOR.dialog.add( 'audio', this.path + 'dialogs/audio.js' );
64
65 editor.addCommand( 'Audio', new CKEDITOR.dialogCommand( 'audio' ) );
66 editor.ui.addButton( 'Audio',
67 {
68 label : lang.toolbar,
69 command : 'Audio',
70 icon : this.path + 'images/icon.png'
71 } );
72
73 // v3
74 if (editor.addCss)
75 editor.addCss( this.getPlaceholderCss() );
76
77
78 // If the "menu" plugin is loaded, register the menu items.
79 if ( editor.addMenuItems )
80 {
81 editor.addMenuItems(
82 {
83 audio :
84 {
85 label : lang.properties,
86 command : 'Audio',
87 group : 'flash'
88 }
89 });
90 }
91
92 editor.on( 'doubleclick', function( evt )
93 {
94 var element = evt.data.element;
95
96 if ( element.is( 'img' ) && element.data( 'cke-real-element-type' ) == 'audio' )
97 evt.data.dialog = 'audio';
98 });
99
100 // If the "contextmenu" plugin is loaded, register the listeners.
101 if ( editor.contextMenu )
102 {
103 editor.contextMenu.addListener( function( element, selection )
104 {
105 if ( element && element.is( 'img' ) && !element.isReadOnly()
106 && element.data( 'cke-real-element-type' ) == 'audio' )
107 return { audio : CKEDITOR.TRISTATE_OFF };
108 });
109 }
110
111 // Add special handling for these items
112 CKEDITOR.dtd.$empty['cke:source']=1;
113 CKEDITOR.dtd.$empty['source']=1;
114
115 editor.lang.fakeobjects.audio = lang.fakeObject;
116
117
118 }, //Init
119
120 afterInit: function( editor )
121 {
122 var dataProcessor = editor.dataProcessor,
123 htmlFilter = dataProcessor && dataProcessor.htmlFilter,
124 dataFilter = dataProcessor && dataProcessor.dataFilter;
125
126 // dataFilter : conversion from html input to internal data
127 dataFilter.addRules(
128 {
129
130 elements : {
131 $ : function( realElement )
132 {
133 if ( realElement.name == 'audio' )
134 {
135 realElement.name = 'cke:audio';
136 for( var i=0; i < realElement.children.length; i++)
137 {
138 if ( realElement.children[ i ].name == 'source' )
139 realElement.children[ i ].name = 'cke:source'
140 }
141
142 var fakeElement = editor.createFakeParserElement( realElement, 'cke_audio', 'audio', false ),
143 fakeStyle = fakeElement.attributes.style || '';
144
145 var width = realElement.attributes.width,
146 height = realElement.attributes.height,
147 poster = realElement.attributes.poster;
148
149 if ( typeof width != 'undefined' )
150 fakeStyle = fakeElement.attributes.style = fakeStyle + 'width:' + CKEDITOR.tools.cssLength( width ) + ';';
151
152 if ( typeof height != 'undefined' )
153 fakeStyle = fakeElement.attributes.style = fakeStyle + 'height:' + CKEDITOR.tools.cssLength( height ) + ';';
154
155 if ( poster )
156 fakeStyle = fakeElement.attributes.style = fakeStyle + 'background-image:url(' + poster + ');';
157
158 return fakeElement;
159 }
160 }
161 }
162
163 }
164 );
165
166 } // afterInit
167
168} ); // plugins.add
169
170
171var en = {
172 toolbar : 'Audio',
173 dialogTitle : 'Audio properties',
174 fakeObject : 'Audio',
175 properties : 'Edit audio',
176 widthRequired : 'Width field cannot be empty',
177 heightRequired : 'Height field cannot be empty',
178 poster: 'Poster image',
179 sourceaudio: 'Source audio',
180 sourceType : 'Audio type',
181 linkTemplate : '<a href="%src%">%type%</a> ',
182 fallbackTemplate : 'Your browser doesn\'t support audio.<br>Please download the file: %links%'
183 };
184
185var es = {
186 toolbar : 'Audio',
187 dialogTitle : 'Propiedades de audio',
188 fakeObject : 'Audio',
189 properties : 'Editar el audio',
190 widthRequired : 'La anchura no se puede dejar en blanco',
191 heightRequired : 'La altura no se puede dejar en blanco',
192 poster: 'Imagen de presentación',
193 sourceaudio: 'Archivo de audio',
194 sourceType : 'Tipo',
195 linkTemplate : '<a href="%src%">%type%</a> ',
196 fallbackTemplate : 'Su navegador no soporta audio.<br>Por favor, descargue el fichero: %links%'
197 };
198
199 // v3
200 if (CKEDITOR.skins)
201 {
202 en = { audio : en} ;
203 es = { audio : es} ;
204 }
205
206// Translations
207CKEDITOR.plugins.setLang( 'audio', 'en', en );
208
209CKEDITOR.plugins.setLang( 'audio', 'es', es );
210
211})();
diff --git a/sources/plugins/a11yhelp/dialogs/a11yhelp.js b/sources/plugins/a11yhelp/dialogs/a11yhelp.js
index 3936e43..eb12d4c 100644
--- a/sources/plugins/a11yhelp/dialogs/a11yhelp.js
+++ b/sources/plugins/a11yhelp/dialogs/a11yhelp.js
@@ -1,33 +1,34 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
6CKEDITOR.dialog.add( 'a11yHelp', function( editor ) { 6CKEDITOR.dialog.add( 'a11yHelp', function( editor ) {
7 var lang = editor.lang.a11yhelp, 7 var lang = editor.lang.a11yhelp,
8 coreLang = editor.lang.common.keyboard,
8 id = CKEDITOR.tools.getNextId(); 9 id = CKEDITOR.tools.getNextId();
9 10
10 // CharCode <-> KeyChar. 11 // CharCode <-> KeyChar.
11 var keyMap = { 12 var keyMap = {
12 8: lang.backspace, 13 8: coreLang[ 8 ],
13 9: lang.tab, 14 9: lang.tab,
14 13: lang.enter, 15 13: coreLang[ 13 ],
15 16: lang.shift, 16 16: coreLang[ 16 ],
16 17: lang.ctrl, 17 17: coreLang[ 17 ],
17 18: lang.alt, 18 18: coreLang[ 18 ],
18 19: lang.pause, 19 19: lang.pause,
19 20: lang.capslock, 20 20: lang.capslock,
20 27: lang.escape, 21 27: lang.escape,
21 33: lang.pageUp, 22 33: lang.pageUp,
22 34: lang.pageDown, 23 34: lang.pageDown,
23 35: lang.end, 24 35: coreLang[ 35 ],
24 36: lang.home, 25 36: coreLang[ 36 ],
25 37: lang.leftArrow, 26 37: lang.leftArrow,
26 38: lang.upArrow, 27 38: lang.upArrow,
27 39: lang.rightArrow, 28 39: lang.rightArrow,
28 40: lang.downArrow, 29 40: lang.downArrow,
29 45: lang.insert, 30 45: lang.insert,
30 46: lang[ 'delete' ], 31 46: coreLang[ 46 ],
31 91: lang.leftWindowKey, 32 91: lang.leftWindowKey,
32 92: lang.rightWindowKey, 33 92: lang.rightWindowKey,
33 93: lang.selectKey, 34 93: lang.selectKey,
@@ -74,9 +75,9 @@ CKEDITOR.dialog.add( 'a11yHelp', function( editor ) {
74 }; 75 };
75 76
76 // Modifier keys override. 77 // Modifier keys override.
77 keyMap[ CKEDITOR.ALT ] = lang.alt; 78 keyMap[ CKEDITOR.ALT ] = coreLang[ 18 ];
78 keyMap[ CKEDITOR.SHIFT ] = lang.shift; 79 keyMap[ CKEDITOR.SHIFT ] = coreLang[ 16 ];
79 keyMap[ CKEDITOR.CTRL ] = lang.ctrl; 80 keyMap[ CKEDITOR.CTRL ] = CKEDITOR.env.mac ? coreLang[ 224 ] : coreLang[ 17 ];
80 81
81 // Sort in desc. 82 // Sort in desc.
82 var modifiers = [ CKEDITOR.ALT, CKEDITOR.SHIFT, CKEDITOR.CTRL ]; 83 var modifiers = [ CKEDITOR.ALT, CKEDITOR.SHIFT, CKEDITOR.CTRL ];
@@ -84,7 +85,6 @@ CKEDITOR.dialog.add( 'a11yHelp', function( editor ) {
84 function representKeyStroke( keystroke ) { 85 function representKeyStroke( keystroke ) {
85 var quotient, modifier, 86 var quotient, modifier,
86 presentation = []; 87 presentation = [];
87
88 for ( var i = 0; i < modifiers.length; i++ ) { 88 for ( var i = 0; i < modifiers.length; i++ ) {
89 modifier = modifiers[ i ]; 89 modifier = modifiers[ i ];
90 quotient = keystroke / modifiers[ i ]; 90 quotient = keystroke / modifiers[ i ];
@@ -99,23 +99,14 @@ CKEDITOR.dialog.add( 'a11yHelp', function( editor ) {
99 return presentation.join( '+' ); 99 return presentation.join( '+' );
100 } 100 }
101 101
102 var variablesPattern = /\$\{(.*?)\}/g; 102 var variablesPattern = /\$\{(.*?)\}/g,
103 103 replaceVariables = function( match, name ) {
104 var replaceVariables = ( function() { 104 var keystrokeCode = editor.getCommandKeystroke( name );
105 // Swaps keystrokes with their commands in object literal.
106 // This makes searching keystrokes by command much easier.
107 var keystrokesByCode = editor.keystrokeHandler.keystrokes,
108 keystrokesByName = {};
109
110 for ( var i in keystrokesByCode )
111 keystrokesByName[ keystrokesByCode[ i ] ] = i;
112 105
113 return function( match, name ) {
114 // Return the keystroke representation or leave match untouched 106 // Return the keystroke representation or leave match untouched
115 // if there's no keystroke for such command. 107 // if there's no keystroke for such command.
116 return keystrokesByName[ name ] ? representKeyStroke( keystrokesByName[ name ] ) : match; 108 return keystrokeCode ? representKeyStroke( keystrokeCode ) : match;
117 }; 109 };
118 } )();
119 110
120 // Create the help list directly from lang file entries. 111 // Create the help list directly from lang file entries.
121 function buildHelpContents() { 112 function buildHelpContents() {
@@ -136,13 +127,17 @@ CKEDITOR.dialog.add( 'a11yHelp', function( editor ) {
136 127
137 for ( var j = 0; j < itemsLength; j++ ) { 128 for ( var j = 0; j < itemsLength; j++ ) {
138 var item = items[ j ], 129 var item = items[ j ],
139 itemLegend = item.legend.replace( variablesPattern, replaceVariables ); 130 // (http://dev.ckeditor.com/ticket/16980) There should be a different hotkey shown in Commands on Edge browser.
131 itemLegend = CKEDITOR.env.edge && item.legendEdge ? item.legendEdge : item.legend;
140 132
141 // (#9765) If some commands haven't been replaced in the legend, 133 itemLegend = itemLegend.replace( variablesPattern, replaceVariables );
134
135 // (http://dev.ckeditor.com/ticket/9765) If some commands haven't been replaced in the legend,
142 // most likely their keystrokes are unavailable and we shouldn't include 136 // most likely their keystrokes are unavailable and we shouldn't include
143 // them in our help list. 137 // them in our help list.
144 if ( itemLegend.match( variablesPattern ) ) 138 if ( itemLegend.match( variablesPattern ) ) {
145 continue; 139 continue;
140 }
146 141
147 sectionHtml.push( itemTpl.replace( '%1', item.name ).replace( '%2', itemLegend ) ); 142 sectionHtml.push( itemTpl.replace( '%1', item.name ).replace( '%2', itemLegend ) );
148 } 143 }
@@ -178,7 +173,7 @@ CKEDITOR.dialog.add( 'a11yHelp', function( editor ) {
178 'overflow-y:auto;' + 173 'overflow-y:auto;' +
179 'overflow-x:hidden;' + 174 'overflow-x:hidden;' +
180 '}' + 175 '}' +
181 // Some adjustments are to be done for Quirks to work "properly" (#5757) 176 // Some adjustments are to be done for Quirks to work "properly" (http://dev.ckeditor.com/ticket/5757)
182 '.cke_browser_quirks .cke_accessibility_legend,' + 177 '.cke_browser_quirks .cke_accessibility_legend,' +
183 '{' + 178 '{' +
184 'height:390px' + 179 'height:390px' +
diff --git a/sources/plugins/a11yhelp/dialogs/lang/_translationstatus.txt b/sources/plugins/a11yhelp/dialogs/lang/_translationstatus.txt
index 4c59097..28e8dae 100644
--- a/sources/plugins/a11yhelp/dialogs/lang/_translationstatus.txt
+++ b/sources/plugins/a11yhelp/dialogs/lang/_translationstatus.txt
@@ -1,4 +1,4 @@
1Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 1Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
2For licensing, see LICENSE.md or http://ckeditor.com/license 2For licensing, see LICENSE.md or http://ckeditor.com/license
3 3
4cs.js Found: 30 Missing: 0 4cs.js Found: 30 Missing: 0
diff --git a/sources/plugins/a11yhelp/dialogs/lang/af.js b/sources/plugins/a11yhelp/dialogs/lang/af.js
index 600dec5..f1062a9 100644
--- a/sources/plugins/a11yhelp/dialogs/lang/af.js
+++ b/sources/plugins/a11yhelp/dialogs/lang/af.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -79,29 +79,26 @@ CKEDITOR.plugins.setLang( 'a11yhelp', 'af', {
79 { 79 {
80 name: ' Accessibility Help', // MISSING 80 name: ' Accessibility Help', // MISSING
81 legend: 'Press ${a11yHelp}' // MISSING 81 legend: 'Press ${a11yHelp}' // MISSING
82 },
83 {
84 name: ' Paste as plain text', // MISSING
85 legend: 'Press ${pastetext}', // MISSING
86 legendEdge: 'Press ${pastetext}, followed by ${paste}' // MISSING
82 } 87 }
83 ] 88 ]
84 } 89 }
85 ], 90 ],
86 backspace: 'Backspace', // MISSING
87 tab: 'Tab', // MISSING 91 tab: 'Tab', // MISSING
88 enter: 'Enter', // MISSING
89 shift: 'Shift', // MISSING
90 ctrl: 'Ctrl',
91 alt: 'Alt',
92 pause: 'Pouse', 92 pause: 'Pouse',
93 capslock: 'Hoofletterslot', 93 capslock: 'Hoofletterslot',
94 escape: 'Ontsnap', 94 escape: 'Ontsnap',
95 pageUp: 'Blaaiop', 95 pageUp: 'Blaaiop',
96 pageDown: 'Blaaiaf', 96 pageDown: 'Blaaiaf',
97 end: 'Einde',
98 home: 'Tuis',
99 leftArrow: 'Linkspyl', 97 leftArrow: 'Linkspyl',
100 upArrow: 'Oppyl', 98 upArrow: 'Oppyl',
101 rightArrow: 'Regterpyl', 99 rightArrow: 'Regterpyl',
102 downArrow: 'Afpyl', 100 downArrow: 'Afpyl',
103 insert: 'Toevoeg', 101 insert: 'Toevoeg',
104 'delete': 'Verwyder',
105 leftWindowKey: 'Left Windows key', // MISSING 102 leftWindowKey: 'Left Windows key', // MISSING
106 rightWindowKey: 'Right Windows key', // MISSING 103 rightWindowKey: 'Right Windows key', // MISSING
107 selectKey: 'Select key', // MISSING 104 selectKey: 'Select key', // MISSING
diff --git a/sources/plugins/a11yhelp/dialogs/lang/ar.js b/sources/plugins/a11yhelp/dialogs/lang/ar.js
index edb58df..870d60d 100644
--- a/sources/plugins/a11yhelp/dialogs/lang/ar.js
+++ b/sources/plugins/a11yhelp/dialogs/lang/ar.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -79,29 +79,26 @@ CKEDITOR.plugins.setLang( 'a11yhelp', 'ar', {
79 { 79 {
80 name: ' Accessibility Help', // MISSING 80 name: ' Accessibility Help', // MISSING
81 legend: 'Press ${a11yHelp}' // MISSING 81 legend: 'Press ${a11yHelp}' // MISSING
82 },
83 {
84 name: ' Paste as plain text', // MISSING
85 legend: 'Press ${pastetext}', // MISSING
86 legendEdge: 'Press ${pastetext}, followed by ${paste}' // MISSING
82 } 87 }
83 ] 88 ]
84 } 89 }
85 ], 90 ],
86 backspace: 'Backspace', // MISSING
87 tab: 'Tab', // MISSING 91 tab: 'Tab', // MISSING
88 enter: 'Enter', // MISSING
89 shift: 'Shift', // MISSING
90 ctrl: 'Ctrl', // MISSING
91 alt: 'Alt', // MISSING
92 pause: 'Pause', // MISSING 92 pause: 'Pause', // MISSING
93 capslock: 'Caps Lock', // MISSING 93 capslock: 'Caps Lock', // MISSING
94 escape: 'Escape', // MISSING 94 escape: 'Escape', // MISSING
95 pageUp: 'Page Up', // MISSING 95 pageUp: 'Page Up', // MISSING
96 pageDown: 'Page Down', // MISSING 96 pageDown: 'Page Down', // MISSING
97 end: 'End', // MISSING
98 home: 'Home', // MISSING
99 leftArrow: 'Left Arrow', // MISSING 97 leftArrow: 'Left Arrow', // MISSING
100 upArrow: 'Up Arrow', // MISSING 98 upArrow: 'Up Arrow', // MISSING
101 rightArrow: 'Right Arrow', // MISSING 99 rightArrow: 'Right Arrow', // MISSING
102 downArrow: 'Down Arrow', // MISSING 100 downArrow: 'Down Arrow', // MISSING
103 insert: 'Insert', // MISSING 101 insert: 'Insert', // MISSING
104 'delete': 'Delete', // MISSING
105 leftWindowKey: 'Left Windows key', // MISSING 102 leftWindowKey: 'Left Windows key', // MISSING
106 rightWindowKey: 'Right Windows key', // MISSING 103 rightWindowKey: 'Right Windows key', // MISSING
107 selectKey: 'Select key', // MISSING 104 selectKey: 'Select key', // MISSING
diff --git a/sources/plugins/a11yhelp/dialogs/lang/az.js b/sources/plugins/a11yhelp/dialogs/lang/az.js
new file mode 100644
index 0000000..bda91a4
--- /dev/null
+++ b/sources/plugins/a11yhelp/dialogs/lang/az.js
@@ -0,0 +1,145 @@
1/**
2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */
5
6CKEDITOR.plugins.setLang( 'a11yhelp', 'az', {
7 title: 'Əlillərə dəstək üzrə təlimat',
8 contents: 'Kömək. Pəncərəni bağlamaq üçün ESC basın.',
9 legend: [
10 {
11 name: 'Əsas',
12 items: [
13 {
14 name: 'Düzəliş edənin alətlər çubuğu',
15 legend: 'Panelə keçmək üçün ${toolbarFocus} basın. Növbəti panelə TAB, əvvəlki panelə isə SHIFT+TAB düyməsi vasitəsi ilə keçə bilərsiz. Paneldəki düymələr arasında sol və sağ ox düyməsi ilə keçid edə bilərsiz. Seçilmiş düyməsi SPACE və ya ENTER ilə işlədə bilərsiniz.'
16 },
17
18 {
19 name: 'Redaktorun pəncərəsi',
20 legend:
21 'Pəncərə içində növbəti element seçmək üçün TAB düyməni basın, əvvəlki isə - SHIFT+TAB. Təsdiq edilməsi üçün ENTER, imtina edilməsi isə ESC diymələri istifadə edin. Pəncərədə bir neçə vərəq olanda olnarın siyahı ALT+F10 ilə aça bilərsiz. Vərəqlərin siyahı fokus altında olanda ox düymələr vasitəsi ilə onların arasında keçid edə bilərsiz.'
22 },
23
24 {
25 name: 'Redaktorun seçimlərin menyusu',
26 legend: 'Seçimləri redaktə etmək üçün ${contextMenu} ya da APPLICATION KEY basın. Növbəti seçimə keçmək üçün TAB ya AŞAĞI OX düyməsini basın, əvvəlki isə - SHIFT+TAB ya YUXARI OX. Seçimi arımaq SPACE ya ENTER düymələri istifadə edin. Alt menyunu açmaq üçün SPACE, ENTER ya SAĞA OX basın. ESC ya SOLA OX ilə geriyə qayıda bilərsiz. Bütün menyunu ESC ilə bağlıyın.'
27 },
28
29 {
30 name: 'Düzəliş edənin siyahı qutusu',
31 legend: 'Siyahı qutusu içində növbəti bənd seçmək üçün TAB ya AŞAĞI OX, əvvəlki isə SHIFT+TAB ya YUXARI OX basın. Seçimi arımaq SPACE ya ENTER düymələri istifadə edin. Siyahı qutusu ESC ilə bağlıyın.'
32 },
33
34 {
35 name: 'Redaktor elementin cığır paneli',
36 legend: 'Elementin cığır paneli seçmək üçün ${elementsPathFocus} basın. Növbəti element seçmək üçün TAB ya SAĞA OX, əvvəlki isə SHIFT+TAB ya SOLA OX istifadə edin. Elementi arımaq SPACE ya ENTER düymələri mövcuddur.'
37 }
38 ]
39 },
40 {
41 name: 'Əmrlər',
42 items: [
43 {
44 name: 'Əmri geri qaytar',
45 legend: '${undo} basın'
46 },
47 {
48 name: 'Geri əmri',
49 legend: '${redo} basın'
50 },
51 {
52 name: 'Qalın əmri',
53 legend: '${bold} basın'
54 },
55 {
56 name: 'Kursiv əmri',
57 legend: '${italic} basın'
58 },
59 {
60 name: 'Altdan xətt əmri',
61 legend: '${underline} basın'
62 },
63 {
64 name: 'Link əmri',
65 legend: '${link} basın'
66 },
67 {
68 name: 'Paneli gizlət əmri',
69 legend: '${toolbarCollapse} basın'
70 },
71 {
72 name: 'Əvvəlki fokus sahəsi seç əmrı',
73 legend: 'Kursordan əvvəl ən yaxın əlçatmaz yerə dəymək üçün ${accessPreviousSpace} basın, misal üçün: iki dal-badal HR teg. Uzaq yerlərə dəymək üçün bir neçə dəfə basın.'
74 },
75 {
76 name: 'Növbəti fokus sahəsi seç əmrı',
77 legend: 'Kursordan sonra ən yaxın əlçatmaz yerə dəymək üçün ${accessNextSpace} basın, misal üçün: iki dal-badal HR teg. Uzaq yerlərə dəymək üçün bir neçə dəfə basın.'
78 },
79 {
80 name: 'Hərtərəfli Kömək',
81 legend: '${a11yHelp} basın'
82 },
83 {
84 name: ' Paste as plain text', // MISSING
85 legend: 'Press ${pastetext}', // MISSING
86 legendEdge: 'Press ${pastetext}, followed by ${paste}' // MISSING
87 }
88 ]
89 }
90 ],
91 tab: 'Tab',
92 pause: 'Pause',
93 capslock: 'Caps Lock',
94 escape: 'Escape',
95 pageUp: 'Page Up',
96 pageDown: 'Page Down',
97 leftArrow: 'Sola ox işarəsi',
98 upArrow: 'Yuxarı ox işarəsi',
99 rightArrow: 'Sağa ox işarəsi',
100 downArrow: 'Aşağı ox işarəsi',
101 insert: 'Insert',
102 leftWindowKey: 'Soldaki Windows düyməsi',
103 rightWindowKey: 'Sağdaki Windows düyməsi',
104 selectKey: 'Düyməni seçin',
105 numpad0: 'Numpad 0',
106 numpad1: 'Numpad 1',
107 numpad2: 'Numpad 2',
108 numpad3: 'Numpad 3',
109 numpad4: 'Numpad 4',
110 numpad5: 'Numpad 5',
111 numpad6: 'Numpad 6',
112 numpad7: 'Numpad 7',
113 numpad8: 'Numpad 8',
114 numpad9: 'Numpad 9',
115 multiply: 'Vurma',
116 add: 'Əlavə et',
117 subtract: 'Çıxma',
118 decimalPoint: 'Onluq kəsri tam ədəddən ayıran nöqtə',
119 divide: 'Bölüşdürmə',
120 f1: 'F1',
121 f2: 'F2',
122 f3: 'F3',
123 f4: 'F4',
124 f5: 'F5',
125 f6: 'F6',
126 f7: 'F7',
127 f8: 'F8',
128 f9: 'F9',
129 f10: 'F10',
130 f11: 'F11',
131 f12: 'F12',
132 numLock: 'Num Lock',
133 scrollLock: 'Scroll Lock',
134 semiColon: 'Nöqtəli verqül',
135 equalSign: 'Barəbərlik işarəsi',
136 comma: 'Vergül',
137 dash: 'Defis',
138 period: 'Nöqtə',
139 forwardSlash: 'Çəp xətt',
140 graveAccent: 'Vurğu işarəsi',
141 openBracket: 'Açılan mötərizə',
142 backSlash: 'Tərs çəpəki xətt',
143 closeBracket: 'Bağlanan mötərizə',
144 singleQuote: 'Tək dırnaq'
145} );
diff --git a/sources/plugins/a11yhelp/dialogs/lang/bg.js b/sources/plugins/a11yhelp/dialogs/lang/bg.js
index 4ebdaad..9a809ff 100644
--- a/sources/plugins/a11yhelp/dialogs/lang/bg.js
+++ b/sources/plugins/a11yhelp/dialogs/lang/bg.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -79,29 +79,26 @@ CKEDITOR.plugins.setLang( 'a11yhelp', 'bg', {
79 { 79 {
80 name: ' Accessibility Help', // MISSING 80 name: ' Accessibility Help', // MISSING
81 legend: 'Press ${a11yHelp}' // MISSING 81 legend: 'Press ${a11yHelp}' // MISSING
82 },
83 {
84 name: ' Paste as plain text', // MISSING
85 legend: 'Press ${pastetext}', // MISSING
86 legendEdge: 'Press ${pastetext}, followed by ${paste}' // MISSING
82 } 87 }
83 ] 88 ]
84 } 89 }
85 ], 90 ],
86 backspace: 'Backspace', // MISSING
87 tab: 'Tab', // MISSING 91 tab: 'Tab', // MISSING
88 enter: 'Enter', // MISSING
89 shift: 'Shift', // MISSING
90 ctrl: 'Ctrl', // MISSING
91 alt: 'Alt', // MISSING
92 pause: 'Pause', // MISSING 92 pause: 'Pause', // MISSING
93 capslock: 'Caps Lock', // MISSING 93 capslock: 'Caps Lock', // MISSING
94 escape: 'Escape', // MISSING 94 escape: 'Escape', // MISSING
95 pageUp: 'Page Up', // MISSING 95 pageUp: 'Page Up', // MISSING
96 pageDown: 'Page Down', // MISSING 96 pageDown: 'Page Down', // MISSING
97 end: 'End', // MISSING
98 home: 'Home', // MISSING
99 leftArrow: 'Left Arrow', // MISSING 97 leftArrow: 'Left Arrow', // MISSING
100 upArrow: 'Up Arrow', // MISSING 98 upArrow: 'Up Arrow', // MISSING
101 rightArrow: 'Right Arrow', // MISSING 99 rightArrow: 'Right Arrow', // MISSING
102 downArrow: 'Down Arrow', // MISSING 100 downArrow: 'Down Arrow', // MISSING
103 insert: 'Insert', // MISSING 101 insert: 'Insert', // MISSING
104 'delete': 'Delete', // MISSING
105 leftWindowKey: 'Left Windows key', // MISSING 102 leftWindowKey: 'Left Windows key', // MISSING
106 rightWindowKey: 'Right Windows key', // MISSING 103 rightWindowKey: 'Right Windows key', // MISSING
107 selectKey: 'Select key', // MISSING 104 selectKey: 'Select key', // MISSING
diff --git a/sources/plugins/a11yhelp/dialogs/lang/ca.js b/sources/plugins/a11yhelp/dialogs/lang/ca.js
index b739c4e..5bbaced 100644
--- a/sources/plugins/a11yhelp/dialogs/lang/ca.js
+++ b/sources/plugins/a11yhelp/dialogs/lang/ca.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -18,7 +18,7 @@ CKEDITOR.plugins.setLang( 'a11yhelp', 'ca', {
18 { 18 {
19 name: 'Editor de quadre de diàleg', 19 name: 'Editor de quadre de diàleg',
20 legend: 20 legend:
21 'Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively.' // MISSING 21 'Dins d\'un quadre de diàleg, premi la tecla TAB per desplaçar-se fins al següent element del quadre de diàleg, premi la tecla Shift + TAB per desplaçar-se a l\'anterior element del quadre de diàleg, premi la tecla ENTER per confirmar el quadre de diàleg, premi la tecla ESC per cancel·lar el quadre de diàleg. Quan un quadre de diàleg té diverses pestanyes, la llista de pestanyes pot ser assolit ja sigui amb ALT + F10 o TAB, com a part de l\'ordre de tabulació del quadre de diàleg. Amb la llista de pestanyes seleccionada, pot anar a la fitxa següent i anterior amb la tecla FLETXA DRETA i ESQUERRA, respectivament.'
22 }, 22 },
23 23
24 { 24 {
@@ -79,29 +79,26 @@ CKEDITOR.plugins.setLang( 'a11yhelp', 'ca', {
79 { 79 {
80 name: 'Ajuda d\'accessibilitat', 80 name: 'Ajuda d\'accessibilitat',
81 legend: 'Premi ${a11yHelp}' 81 legend: 'Premi ${a11yHelp}'
82 },
83 {
84 name: ' Paste as plain text', // MISSING
85 legend: 'Press ${pastetext}', // MISSING
86 legendEdge: 'Press ${pastetext}, followed by ${paste}' // MISSING
82 } 87 }
83 ] 88 ]
84 } 89 }
85 ], 90 ],
86 backspace: 'Retrocés',
87 tab: 'Tabulació', 91 tab: 'Tabulació',
88 enter: 'Intro',
89 shift: 'Majúscules',
90 ctrl: 'Ctrl',
91 alt: 'Alt',
92 pause: 'Pausa', 92 pause: 'Pausa',
93 capslock: 'Bloqueig de majúscules', 93 capslock: 'Bloqueig de majúscules',
94 escape: 'Escape', 94 escape: 'Escape',
95 pageUp: 'Pàgina Amunt', 95 pageUp: 'Pàgina Amunt',
96 pageDown: 'Pàgina Avall', 96 pageDown: 'Pàgina Avall',
97 end: 'Fi',
98 home: 'Inici',
99 leftArrow: 'Fletxa Esquerra', 97 leftArrow: 'Fletxa Esquerra',
100 upArrow: 'Fletxa Amunt', 98 upArrow: 'Fletxa Amunt',
101 rightArrow: 'Fletxa Dreta', 99 rightArrow: 'Fletxa Dreta',
102 downArrow: 'Fletxa Avall', 100 downArrow: 'Fletxa Avall',
103 insert: 'Inserir', 101 insert: 'Inserir',
104 'delete': 'Eliminar',
105 leftWindowKey: 'Tecla Windows Esquerra', 102 leftWindowKey: 'Tecla Windows Esquerra',
106 rightWindowKey: 'Tecla Windows Dreta', 103 rightWindowKey: 'Tecla Windows Dreta',
107 selectKey: 'Tecla Seleccionar', 104 selectKey: 'Tecla Seleccionar',
diff --git a/sources/plugins/a11yhelp/dialogs/lang/cs.js b/sources/plugins/a11yhelp/dialogs/lang/cs.js
index 6386a35..f792c46 100644
--- a/sources/plugins/a11yhelp/dialogs/lang/cs.js
+++ b/sources/plugins/a11yhelp/dialogs/lang/cs.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -79,29 +79,26 @@ CKEDITOR.plugins.setLang( 'a11yhelp', 'cs', {
79 { 79 {
80 name: ' Nápověda přístupnosti', 80 name: ' Nápověda přístupnosti',
81 legend: 'Stiskněte ${a11yHelp}' 81 legend: 'Stiskněte ${a11yHelp}'
82 },
83 {
84 name: ' Paste as plain text', // MISSING
85 legend: 'Press ${pastetext}', // MISSING
86 legendEdge: 'Press ${pastetext}, followed by ${paste}' // MISSING
82 } 87 }
83 ] 88 ]
84 } 89 }
85 ], 90 ],
86 backspace: 'Backspace',
87 tab: 'Tabulátor', 91 tab: 'Tabulátor',
88 enter: 'Enter',
89 shift: 'Shift',
90 ctrl: 'Ctrl',
91 alt: 'Alt',
92 pause: 'Pauza', 92 pause: 'Pauza',
93 capslock: 'Caps lock', 93 capslock: 'Caps lock',
94 escape: 'Escape', 94 escape: 'Escape',
95 pageUp: 'Stránka nahoru', 95 pageUp: 'Stránka nahoru',
96 pageDown: 'Stránka dolů', 96 pageDown: 'Stránka dolů',
97 end: 'Konec',
98 home: 'Domů',
99 leftArrow: 'Šipka vlevo', 97 leftArrow: 'Šipka vlevo',
100 upArrow: 'Šipka nahoru', 98 upArrow: 'Šipka nahoru',
101 rightArrow: 'Šipka vpravo', 99 rightArrow: 'Šipka vpravo',
102 downArrow: 'Šipka dolů', 100 downArrow: 'Šipka dolů',
103 insert: 'Vložit', 101 insert: 'Vložit',
104 'delete': 'Smazat',
105 leftWindowKey: 'Levá klávesa Windows', 102 leftWindowKey: 'Levá klávesa Windows',
106 rightWindowKey: 'Pravá klávesa Windows', 103 rightWindowKey: 'Pravá klávesa Windows',
107 selectKey: 'Vyberte klávesu', 104 selectKey: 'Vyberte klávesu',
diff --git a/sources/plugins/a11yhelp/dialogs/lang/cy.js b/sources/plugins/a11yhelp/dialogs/lang/cy.js
index f47ff93..e0cc0ba 100644
--- a/sources/plugins/a11yhelp/dialogs/lang/cy.js
+++ b/sources/plugins/a11yhelp/dialogs/lang/cy.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -79,29 +79,26 @@ CKEDITOR.plugins.setLang( 'a11yhelp', 'cy', {
79 { 79 {
80 name: 'Cymorth Hygyrchedd', 80 name: 'Cymorth Hygyrchedd',
81 legend: 'Pwyswch ${a11yHelp}' 81 legend: 'Pwyswch ${a11yHelp}'
82 },
83 {
84 name: ' Paste as plain text', // MISSING
85 legend: 'Press ${pastetext}', // MISSING
86 legendEdge: 'Press ${pastetext}, followed by ${paste}' // MISSING
82 } 87 }
83 ] 88 ]
84 } 89 }
85 ], 90 ],
86 backspace: 'Backspace', // MISSING
87 tab: 'Tab', 91 tab: 'Tab',
88 enter: 'Enter',
89 shift: 'Shift',
90 ctrl: 'Ctrl',
91 alt: 'Alt',
92 pause: 'Pause', // MISSING 92 pause: 'Pause', // MISSING
93 capslock: 'Caps Lock', // MISSING 93 capslock: 'Caps Lock', // MISSING
94 escape: 'Escape', 94 escape: 'Escape',
95 pageUp: 'Page Up', // MISSING 95 pageUp: 'Page Up', // MISSING
96 pageDown: 'Page Down', // MISSING 96 pageDown: 'Page Down', // MISSING
97 end: 'End', // MISSING
98 home: 'Home', // MISSING
99 leftArrow: 'Left Arrow', // MISSING 97 leftArrow: 'Left Arrow', // MISSING
100 upArrow: 'Up Arrow', // MISSING 98 upArrow: 'Up Arrow', // MISSING
101 rightArrow: 'Right Arrow', // MISSING 99 rightArrow: 'Right Arrow', // MISSING
102 downArrow: 'Down Arrow', // MISSING 100 downArrow: 'Down Arrow', // MISSING
103 insert: 'Insert', // MISSING 101 insert: 'Insert', // MISSING
104 'delete': 'Delete', // MISSING
105 leftWindowKey: 'Left Windows key', // MISSING 102 leftWindowKey: 'Left Windows key', // MISSING
106 rightWindowKey: 'Right Windows key', // MISSING 103 rightWindowKey: 'Right Windows key', // MISSING
107 selectKey: 'Select key', // MISSING 104 selectKey: 'Select key', // MISSING
diff --git a/sources/plugins/a11yhelp/dialogs/lang/da.js b/sources/plugins/a11yhelp/dialogs/lang/da.js
index 8ec3f61..ae21300 100644
--- a/sources/plugins/a11yhelp/dialogs/lang/da.js
+++ b/sources/plugins/a11yhelp/dialogs/lang/da.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -22,18 +22,18 @@ CKEDITOR.plugins.setLang( 'a11yhelp', 'da', {
22 }, 22 },
23 23
24 { 24 {
25 name: 'Editor Context Menu', // MISSING 25 name: 'Redaktør kontekstmenu',
26 legend: 'Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC.' // MISSING 26 legend: 'Tryk ${contextMenu} eller APPLICATION KEY for at åbne kontekstmenuen. Flyt derefter til næste menuvalg med TAB eller PIL NED. Flyt til forrige valg med SHIFT+TAB eller PIL OP. Tryk MELLEMRUM eller RETUR for at vælge menu-muligheder. Åben under-menu af aktuelle valg med MELLEMRUM eller RETUR eller HØJRE PIL. Gå tilbage til overliggende menu-emne med ESC eller VENSTRE PIL. Luk kontekstmenu med ESC.'
27 }, 27 },
28 28
29 { 29 {
30 name: 'Editor List Box', // MISSING 30 name: 'Redaktør listeboks',
31 legend: 'Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box.' // MISSING 31 legend: 'Flyt til næste emne med TAB eller PIL NED inde i en listeboks. Flyt til forrige listeemne med SHIFT+TAB eller PIL OP. Tryk MELLEMRUM eller RETUR for at vælge liste-muligheder. Tryk ESC for at lukke liste-boksen.'
32 }, 32 },
33 33
34 { 34 {
35 name: 'Editor Element Path Bar', // MISSING 35 name: 'Redaktør elementsti-bar',
36 legend: 'Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor.' // MISSING 36 legend: 'Tryk ${elementsPathFocus} for at navigere til elementernes sti-bar. Flyt til næste element-knap med TAB eller HØJRE PIL. Flyt til forrige knap med SHIFT+TAB eller VENSTRE PIL. Klik MELLEMRUM eller RETUR for at vælge element i editoren.'
37 } 37 }
38 ] 38 ]
39 }, 39 },
@@ -65,11 +65,11 @@ CKEDITOR.plugins.setLang( 'a11yhelp', 'da', {
65 legend: 'Klik ${link}' 65 legend: 'Klik ${link}'
66 }, 66 },
67 { 67 {
68 name: ' Toolbar Collapse command', // MISSING 68 name: 'Klap værktøjslinje sammen kommando ',
69 legend: 'Klik ${toolbarCollapse}' 69 legend: 'Klik ${toolbarCollapse}'
70 }, 70 },
71 { 71 {
72 name: ' Access previous focus space command', // MISSING 72 name: 'Adgang til forrige fokusområde kommando',
73 legend: 'Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces.' // MISSING 73 legend: 'Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces.' // MISSING
74 }, 74 },
75 { 75 {
@@ -79,29 +79,26 @@ CKEDITOR.plugins.setLang( 'a11yhelp', 'da', {
79 { 79 {
80 name: 'Tilgængelighedshjælp', 80 name: 'Tilgængelighedshjælp',
81 legend: 'Kilk ${a11yHelp}' 81 legend: 'Kilk ${a11yHelp}'
82 },
83 {
84 name: ' Paste as plain text', // MISSING
85 legend: 'Press ${pastetext}', // MISSING
86 legendEdge: 'Press ${pastetext}, followed by ${paste}' // MISSING
82 } 87 }
83 ] 88 ]
84 } 89 }
85 ], 90 ],
86 backspace: 'Backspace',
87 tab: 'Tab', 91 tab: 'Tab',
88 enter: 'Enter',
89 shift: 'Shift',
90 ctrl: 'Ctrl',
91 alt: 'Alt',
92 pause: 'Pause', 92 pause: 'Pause',
93 capslock: 'Caps Lock', 93 capslock: 'Caps Lock',
94 escape: 'Escape', 94 escape: 'Escape',
95 pageUp: 'Page Up', 95 pageUp: 'Page Up',
96 pageDown: 'Page Down', 96 pageDown: 'Page Down',
97 end: 'End',
98 home: 'Home',
99 leftArrow: 'Venstre pil', 97 leftArrow: 'Venstre pil',
100 upArrow: 'Pil op', 98 upArrow: 'Pil op',
101 rightArrow: 'Højre pil', 99 rightArrow: 'Højre pil',
102 downArrow: 'Pil ned', 100 downArrow: 'Pil ned',
103 insert: 'Insert', 101 insert: 'Insert',
104 'delete': 'Delete',
105 leftWindowKey: 'Venstre Windows tast', 102 leftWindowKey: 'Venstre Windows tast',
106 rightWindowKey: 'Højre Windows tast', 103 rightWindowKey: 'Højre Windows tast',
107 selectKey: 'Select-knap', 104 selectKey: 'Select-knap',
diff --git a/sources/plugins/a11yhelp/dialogs/lang/de-ch.js b/sources/plugins/a11yhelp/dialogs/lang/de-ch.js
index afa4021..206bbf6 100644
--- a/sources/plugins/a11yhelp/dialogs/lang/de-ch.js
+++ b/sources/plugins/a11yhelp/dialogs/lang/de-ch.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -79,29 +79,26 @@ CKEDITOR.plugins.setLang( 'a11yhelp', 'de-ch', {
79 { 79 {
80 name: 'Eingabehilfen', 80 name: 'Eingabehilfen',
81 legend: 'Drücken Sie ${a11yHelp}' 81 legend: 'Drücken Sie ${a11yHelp}'
82 },
83 {
84 name: ' Paste as plain text', // MISSING
85 legend: 'Press ${pastetext}', // MISSING
86 legendEdge: 'Press ${pastetext}, followed by ${paste}' // MISSING
82 } 87 }
83 ] 88 ]
84 } 89 }
85 ], 90 ],
86 backspace: 'Rücktaste',
87 tab: 'Tab', 91 tab: 'Tab',
88 enter: 'Eingabe',
89 shift: 'Umschalt',
90 ctrl: 'Strg',
91 alt: 'Alt',
92 pause: 'Pause', 92 pause: 'Pause',
93 capslock: 'Feststell', 93 capslock: 'Feststell',
94 escape: 'Escape', 94 escape: 'Escape',
95 pageUp: 'Bild auf', 95 pageUp: 'Bild auf',
96 pageDown: 'Bild ab', 96 pageDown: 'Bild ab',
97 end: 'Ende',
98 home: 'Pos1',
99 leftArrow: 'Linke Pfeiltaste', 97 leftArrow: 'Linke Pfeiltaste',
100 upArrow: 'Obere Pfeiltaste', 98 upArrow: 'Obere Pfeiltaste',
101 rightArrow: 'Rechte Pfeiltaste', 99 rightArrow: 'Rechte Pfeiltaste',
102 downArrow: 'Untere Pfeiltaste', 100 downArrow: 'Untere Pfeiltaste',
103 insert: 'Einfügen', 101 insert: 'Einfügen',
104 'delete': 'Entfernen',
105 leftWindowKey: 'Linke Windowstaste', 102 leftWindowKey: 'Linke Windowstaste',
106 rightWindowKey: 'Rechte Windowstaste', 103 rightWindowKey: 'Rechte Windowstaste',
107 selectKey: 'Taste auswählen', 104 selectKey: 'Taste auswählen',
diff --git a/sources/plugins/a11yhelp/dialogs/lang/de.js b/sources/plugins/a11yhelp/dialogs/lang/de.js
index 5d3fd04..5e798cb 100644
--- a/sources/plugins/a11yhelp/dialogs/lang/de.js
+++ b/sources/plugins/a11yhelp/dialogs/lang/de.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -18,7 +18,7 @@ CKEDITOR.plugins.setLang( 'a11yhelp', 'de', {
18 { 18 {
19 name: 'Editordialog', 19 name: 'Editordialog',
20 legend: 20 legend:
21 'Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively.' // MISSING 21 'Drücke innerhalb eines Dialogs TAB, um zum nächsten Element zu springen. Drücke SHIFT+TAB, um zum vorigen Element zu springen, drücke ENTER um das Formular im Dialog abzusenden, drücke ESC, um den Dialog zu schließen. Hat der Dialog mehrere Tabs, dann kannst du durch ALT+F10 die Tab-Liste aufrufen or mittels TAB als Teil der Dialog-Tab-Reihenfolge. Ist die Tab-Liste fokussiert, dann mithilfe der Pfeiltasten (LINKS und RECHTS) zwischen den Tabs gewechselt werden.'
22 }, 22 },
23 23
24 { 24 {
@@ -79,29 +79,26 @@ CKEDITOR.plugins.setLang( 'a11yhelp', 'de', {
79 { 79 {
80 name: 'Eingabehilfen', 80 name: 'Eingabehilfen',
81 legend: 'Drücken Sie ${a11yHelp}' 81 legend: 'Drücken Sie ${a11yHelp}'
82 },
83 {
84 name: 'Einfügen als unformatierter Text. ',
85 legend: 'Drücke ${pastetext}',
86 legendEdge: 'Drücke ${pastetext} und anschließend ${paste}'
82 } 87 }
83 ] 88 ]
84 } 89 }
85 ], 90 ],
86 backspace: 'Rücktaste',
87 tab: 'Tab', 91 tab: 'Tab',
88 enter: 'Eingabe',
89 shift: 'Umschalt',
90 ctrl: 'Strg',
91 alt: 'Alt',
92 pause: 'Pause', 92 pause: 'Pause',
93 capslock: 'Feststell', 93 capslock: 'Feststell',
94 escape: 'Escape', 94 escape: 'Escape',
95 pageUp: 'Bild auf', 95 pageUp: 'Bild auf',
96 pageDown: 'Bild ab', 96 pageDown: 'Bild ab',
97 end: 'Ende',
98 home: 'Pos1',
99 leftArrow: 'Linke Pfeiltaste', 97 leftArrow: 'Linke Pfeiltaste',
100 upArrow: 'Obere Pfeiltaste', 98 upArrow: 'Obere Pfeiltaste',
101 rightArrow: 'Rechte Pfeiltaste', 99 rightArrow: 'Rechte Pfeiltaste',
102 downArrow: 'Untere Pfeiltaste', 100 downArrow: 'Untere Pfeiltaste',
103 insert: 'Einfügen', 101 insert: 'Einfügen',
104 'delete': 'Entfernen',
105 leftWindowKey: 'Linke Windowstaste', 102 leftWindowKey: 'Linke Windowstaste',
106 rightWindowKey: 'Rechte Windowstaste', 103 rightWindowKey: 'Rechte Windowstaste',
107 selectKey: 'Taste auswählen', 104 selectKey: 'Taste auswählen',
diff --git a/sources/plugins/a11yhelp/dialogs/lang/el.js b/sources/plugins/a11yhelp/dialogs/lang/el.js
index ec61ce5..f3e598f 100644
--- a/sources/plugins/a11yhelp/dialogs/lang/el.js
+++ b/sources/plugins/a11yhelp/dialogs/lang/el.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -79,29 +79,26 @@ CKEDITOR.plugins.setLang( 'a11yhelp', 'el', {
79 { 79 {
80 name: 'Βοήθεια Προσβασιμότητας', 80 name: 'Βοήθεια Προσβασιμότητας',
81 legend: 'Πατήστε ${a11yHelp}' 81 legend: 'Πατήστε ${a11yHelp}'
82 },
83 {
84 name: ' Paste as plain text', // MISSING
85 legend: 'Press ${pastetext}', // MISSING
86 legendEdge: 'Press ${pastetext}, followed by ${paste}' // MISSING
82 } 87 }
83 ] 88 ]
84 } 89 }
85 ], 90 ],
86 backspace: 'Backspace',
87 tab: 'Tab', 91 tab: 'Tab',
88 enter: 'Enter',
89 shift: 'Shift',
90 ctrl: 'Ctrl',
91 alt: 'Alt',
92 pause: 'Pause', 92 pause: 'Pause',
93 capslock: 'Caps Lock', 93 capslock: 'Caps Lock',
94 escape: 'Escape', 94 escape: 'Escape',
95 pageUp: 'Page Up', 95 pageUp: 'Page Up',
96 pageDown: 'Page Down', 96 pageDown: 'Page Down',
97 end: 'End',
98 home: 'Home',
99 leftArrow: 'Αριστερό Βέλος', 97 leftArrow: 'Αριστερό Βέλος',
100 upArrow: 'Πάνω Βέλος', 98 upArrow: 'Πάνω Βέλος',
101 rightArrow: 'Δεξί Βέλος', 99 rightArrow: 'Δεξί Βέλος',
102 downArrow: 'Κάτω Βέλος', 100 downArrow: 'Κάτω Βέλος',
103 insert: 'Insert ', 101 insert: 'Insert ',
104 'delete': 'Delete',
105 leftWindowKey: 'Αριστερό Πλήκτρο Windows', 102 leftWindowKey: 'Αριστερό Πλήκτρο Windows',
106 rightWindowKey: 'Δεξί Πλήκτρο Windows', 103 rightWindowKey: 'Δεξί Πλήκτρο Windows',
107 selectKey: 'Πλήκτρο Select', 104 selectKey: 'Πλήκτρο Select',
diff --git a/sources/plugins/a11yhelp/dialogs/lang/en-gb.js b/sources/plugins/a11yhelp/dialogs/lang/en-gb.js
index 27dbff8..6fa41b3 100644
--- a/sources/plugins/a11yhelp/dialogs/lang/en-gb.js
+++ b/sources/plugins/a11yhelp/dialogs/lang/en-gb.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -79,29 +79,26 @@ CKEDITOR.plugins.setLang( 'a11yhelp', 'en-gb', {
79 { 79 {
80 name: ' Accessibility Help', 80 name: ' Accessibility Help',
81 legend: 'Press ${a11yHelp}' 81 legend: 'Press ${a11yHelp}'
82 },
83 {
84 name: ' Paste as plain text', // MISSING
85 legend: 'Press ${pastetext}', // MISSING
86 legendEdge: 'Press ${pastetext}, followed by ${paste}' // MISSING
82 } 87 }
83 ] 88 ]
84 } 89 }
85 ], 90 ],
86 backspace: 'Backspace',
87 tab: 'Tab', 91 tab: 'Tab',
88 enter: 'Enter',
89 shift: 'Shift',
90 ctrl: 'Ctrl',
91 alt: 'Alt',
92 pause: 'Pause', 92 pause: 'Pause',
93 capslock: 'Caps Lock', 93 capslock: 'Caps Lock',
94 escape: 'Escape', 94 escape: 'Escape',
95 pageUp: 'Page Up', 95 pageUp: 'Page Up',
96 pageDown: 'Page Down', 96 pageDown: 'Page Down',
97 end: 'End',
98 home: 'Home',
99 leftArrow: 'Left Arrow', 97 leftArrow: 'Left Arrow',
100 upArrow: 'Up Arrow', 98 upArrow: 'Up Arrow',
101 rightArrow: 'Right Arrow', 99 rightArrow: 'Right Arrow',
102 downArrow: 'Down Arrow', 100 downArrow: 'Down Arrow',
103 insert: 'Insert', 101 insert: 'Insert',
104 'delete': 'Delete',
105 leftWindowKey: 'Left Windows key', 102 leftWindowKey: 'Left Windows key',
106 rightWindowKey: 'Right Windows key', 103 rightWindowKey: 'Right Windows key',
107 selectKey: 'Select key', 104 selectKey: 'Select key',
diff --git a/sources/plugins/a11yhelp/dialogs/lang/en.js b/sources/plugins/a11yhelp/dialogs/lang/en.js
index 47823d7..a9ea5bd 100644
--- a/sources/plugins/a11yhelp/dialogs/lang/en.js
+++ b/sources/plugins/a11yhelp/dialogs/lang/en.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -98,29 +98,26 @@ CKEDITOR.plugins.setLang( 'a11yhelp', 'en', {
98 { 98 {
99 name: ' Accessibility Help', 99 name: ' Accessibility Help',
100 legend: 'Press ${a11yHelp}' 100 legend: 'Press ${a11yHelp}'
101 },
102 {
103 name: ' Paste as plain text',
104 legend: 'Press ${pastetext}',
105 legendEdge: 'Press ${pastetext}, followed by ${paste}'
101 } 106 }
102 ] 107 ]
103 } 108 }
104 ], 109 ],
105 backspace: 'Backspace',
106 tab: 'Tab', 110 tab: 'Tab',
107 enter: 'Enter',
108 shift: 'Shift',
109 ctrl: 'Ctrl',
110 alt: 'Alt',
111 pause: 'Pause', 111 pause: 'Pause',
112 capslock: 'Caps Lock', 112 capslock: 'Caps Lock',
113 escape: 'Escape', 113 escape: 'Escape',
114 pageUp: 'Page Up', 114 pageUp: 'Page Up',
115 pageDown: 'Page Down', 115 pageDown: 'Page Down',
116 end: 'End',
117 home: 'Home',
118 leftArrow: 'Left Arrow', 116 leftArrow: 'Left Arrow',
119 upArrow: 'Up Arrow', 117 upArrow: 'Up Arrow',
120 rightArrow: 'Right Arrow', 118 rightArrow: 'Right Arrow',
121 downArrow: 'Down Arrow', 119 downArrow: 'Down Arrow',
122 insert: 'Insert', 120 insert: 'Insert',
123 'delete': 'Delete',
124 leftWindowKey: 'Left Windows key', 121 leftWindowKey: 'Left Windows key',
125 rightWindowKey: 'Right Windows key', 122 rightWindowKey: 'Right Windows key',
126 selectKey: 'Select key', 123 selectKey: 'Select key',
diff --git a/sources/plugins/a11yhelp/dialogs/lang/eo.js b/sources/plugins/a11yhelp/dialogs/lang/eo.js
index 104cdc4..061e7b5 100644
--- a/sources/plugins/a11yhelp/dialogs/lang/eo.js
+++ b/sources/plugins/a11yhelp/dialogs/lang/eo.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -79,29 +79,26 @@ CKEDITOR.plugins.setLang( 'a11yhelp', 'eo', {
79 { 79 {
80 name: 'Helpilo pri atingeblo', 80 name: 'Helpilo pri atingeblo',
81 legend: 'Premu ${a11yHelp}' 81 legend: 'Premu ${a11yHelp}'
82 },
83 {
84 name: ' Paste as plain text', // MISSING
85 legend: 'Press ${pastetext}', // MISSING
86 legendEdge: 'Press ${pastetext}, followed by ${paste}' // MISSING
82 } 87 }
83 ] 88 ]
84 } 89 }
85 ], 90 ],
86 backspace: 'Retropaŝo',
87 tab: 'Tabo', 91 tab: 'Tabo',
88 enter: 'Enigi',
89 shift: 'Registrumo',
90 ctrl: 'Stirklavo',
91 alt: 'Alt-klavo',
92 pause: 'Paŭzo', 92 pause: 'Paŭzo',
93 capslock: 'Majuskla baskulo', 93 capslock: 'Majuskla baskulo',
94 escape: 'Eskapa klavo', 94 escape: 'Eskapa klavo',
95 pageUp: 'Antaŭa Paĝo', 95 pageUp: 'Antaŭa Paĝo',
96 pageDown: 'Sekva Paĝo', 96 pageDown: 'Sekva Paĝo',
97 end: 'Fino',
98 home: 'Hejmo',
99 leftArrow: 'Sago Maldekstren', 97 leftArrow: 'Sago Maldekstren',
100 upArrow: 'Sago Supren', 98 upArrow: 'Sago Supren',
101 rightArrow: 'Sago Dekstren', 99 rightArrow: 'Sago Dekstren',
102 downArrow: 'Sago Suben', 100 downArrow: 'Sago Suben',
103 insert: 'Enmeti', 101 insert: 'Enmeti',
104 'delete': 'Forigi',
105 leftWindowKey: 'Maldekstra Windows-klavo', 102 leftWindowKey: 'Maldekstra Windows-klavo',
106 rightWindowKey: 'Dekstra Windows-klavo', 103 rightWindowKey: 'Dekstra Windows-klavo',
107 selectKey: 'Selektklavo', 104 selectKey: 'Selektklavo',
diff --git a/sources/plugins/a11yhelp/dialogs/lang/es-mx.js b/sources/plugins/a11yhelp/dialogs/lang/es-mx.js
new file mode 100644
index 0000000..7ef6a4c
--- /dev/null
+++ b/sources/plugins/a11yhelp/dialogs/lang/es-mx.js
@@ -0,0 +1,145 @@
1/**
2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */
5
6CKEDITOR.plugins.setLang( 'a11yhelp', 'es-mx', {
7 title: 'Instrucciones de accesibilidad',
8 contents: 'Contenidos de ayuda. Para cerrar este cuadro de diálogo presione ESC.',
9 legend: [
10 {
11 name: 'General',
12 items: [
13 {
14 name: 'Barra de herramientas del editor',
15 legend: 'Presione ${toolbarFocus} para navegar a la barra de herramientas. Desplácese al grupo de barras de herramientas siguiente y anterior con SHIFT + TAB. Desplácese al botón siguiente y anterior de la barra de herramientas con FLECHA DERECHA o FLECHA IZQUIERDA. Presione SPACE o ENTER para activar el botón de la barra de herramientas.'
16 },
17
18 {
19 name: 'Editor de diálogo',
20 legend:
21 'Dentro de un cuadro de diálogo, pulse TAB para desplazarse hasta el siguiente elemento de diálogo, pulse MAYÚS + TAB para desplazarse al elemento de diálogo anterior, pulse ENTER para enviar el diálogo, pulse ESC para cancelar el diálogo. Cuando un cuadro de diálogo tiene varias pestañas, se puede acceder a la lista de pestañas con ALT + F10 o con TAB como parte del orden de tabulación del diálogo. Con la lista de tabuladores enfocada, mueva a la pestaña siguiente y anterior con las flechas DERECHA y IZQUIERDA, respectivamente.'
22 },
23
24 {
25 name: 'Menú contextual del editor',
26 legend: 'Presione ${contextMenu} o CLAVE DE APLICACIÓN para abrir el menú contextual. A continuación, vaya a la siguiente opción del menú con TAB o DOWN ARROW. Desplácese a la opción anterior con SHIFT + TAB o FLECHA ARRIBA. Presione SPACE o ENTER para seleccionar la opción del menú. Abra el submenú de la opción actual con ESPACIO o ENTER o FLECHA DERECHA. Vuelva al elemento de menú principal con ESC o FLECHA IZQUIERDA. Cerrar el menú contextual con ESC.'
27 },
28
29 {
30 name: 'Editor de cuadro de lista',
31 legend: 'Dentro de un cuadro de lista, mueva al siguiente elemento de lista con TAB O FLECHA ABAJO. Mueva al elemento anterior de la lista con MAYÚS + TAB o FLECHA ARRIBA. Presione SPACE o ENTER para seleccionar la opción de lista. Presione ESC para cerrar el cuadro de lista.'
32 },
33
34 {
35 name: 'Barra de ruta del elemento del editor',
36 legend: 'Presione ${elementsPathFocus} para navegar a la barra de ruta de elementos. Desplácese al siguiente botón de elemento con TAB o FLECHA DERECHA. Desplácese al botón anterior con SHIFT + TAB o FLECHA IZQUIERDA. Presione SPACE o ENTER para seleccionar el elemento en el editor.'
37 }
38 ]
39 },
40 {
41 name: 'Comandos',
42 items: [
43 {
44 name: 'Comando deshacer',
45 legend: 'Presiona ${undo}'
46 },
47 {
48 name: 'Comando rehacer',
49 legend: 'Presiona ${redo}'
50 },
51 {
52 name: 'Comando negrita',
53 legend: 'Presiona ${bold}'
54 },
55 {
56 name: 'Comando cursiva',
57 legend: 'Presiona {italic}'
58 },
59 {
60 name: 'Comando subrayado',
61 legend: 'Presiona ${underline}'
62 },
63 {
64 name: 'Comando enlace',
65 legend: 'Presiona ${link}'
66 },
67 {
68 name: 'Comando colapsar barra de herramientas',
69 legend: 'Presiona ${toolbarCollapse}'
70 },
71 {
72 name: 'Acceda al comando de espacio de enfoque anterior',
73 legend: 'Presione ${accessPreviousSpace} para acceder al espacio de enfoque inaccesible más cercano antes del cursor, por ejemplo: dos elementos HR adyacentes. Repita la combinación de teclas para alcanzar los espacios de enfoque distantes.'
74 },
75 {
76 name: 'Acceder al siguiente comando de espacio de enfoque',
77 legend: 'Pulse ${accessNextSpace} para acceder al espacio de enfoque más cercano inaccesible después del cursor, por ejemplo: dos elementos HR adyacentes. Repita la combinación de teclas para alcanzar los espacios de enfoque distantes.'
78 },
79 {
80 name: 'Ayuda de accesibilidad',
81 legend: 'Presiona ${a11yHelp}'
82 },
83 {
84 name: ' Paste as plain text', // MISSING
85 legend: 'Press ${pastetext}', // MISSING
86 legendEdge: 'Press ${pastetext}, followed by ${paste}' // MISSING
87 }
88 ]
89 }
90 ],
91 tab: 'Tabulador',
92 pause: 'Pausa',
93 capslock: 'Mayúsculas',
94 escape: 'Escape',
95 pageUp: 'Página arriba',
96 pageDown: 'Página abajo',
97 leftArrow: 'Flecha izquierda',
98 upArrow: 'Flecha arriba',
99 rightArrow: 'Flecha derecha',
100 downArrow: 'Flecha abajo',
101 insert: 'Insertar',
102 leftWindowKey: 'Tecla izquierda de Windows',
103 rightWindowKey: 'Tecla derecha de Windows',
104 selectKey: 'Tecla de selección',
105 numpad0: 'Teclado numérico 0',
106 numpad1: 'Teclado numérico 1',
107 numpad2: 'Teclado numérico 2',
108 numpad3: 'Teclado numérico 3',
109 numpad4: 'Teclado numérico 4',
110 numpad5: 'Teclado numérico 5',
111 numpad6: 'Teclado numérico 6',
112 numpad7: 'Teclado numérico 7',
113 numpad8: 'Teclado numérico 8',
114 numpad9: 'Teclado numérico 9',
115 multiply: 'Multiplicar',
116 add: 'Sumar',
117 subtract: 'Restar',
118 decimalPoint: 'Punto decimal',
119 divide: 'Dividir',
120 f1: 'F1',
121 f2: 'F2',
122 f3: 'F3',
123 f4: 'F4',
124 f5: 'F5',
125 f6: 'F6',
126 f7: 'F7',
127 f8: 'F8',
128 f9: 'F9',
129 f10: 'F10',
130 f11: 'F11',
131 f12: 'F12',
132 numLock: 'Números',
133 scrollLock: 'Bloqueo de desplazamiento',
134 semiColon: 'punto y coma',
135 equalSign: 'Signo igual',
136 comma: 'Coma',
137 dash: 'Guión',
138 period: 'Espacio',
139 forwardSlash: 'Diagonal',
140 graveAccent: 'Acento grave',
141 openBracket: 'Abrir paréntesis',
142 backSlash: 'Diagonal invertida',
143 closeBracket: 'Cerrar paréntesis',
144 singleQuote: 'Comillas simple'
145} );
diff --git a/sources/plugins/a11yhelp/dialogs/lang/es.js b/sources/plugins/a11yhelp/dialogs/lang/es.js
index 8a1e130..d3b29a2 100644
--- a/sources/plugins/a11yhelp/dialogs/lang/es.js
+++ b/sources/plugins/a11yhelp/dialogs/lang/es.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -18,7 +18,7 @@ CKEDITOR.plugins.setLang( 'a11yhelp', 'es', {
18 { 18 {
19 name: 'Editor de diálogo', 19 name: 'Editor de diálogo',
20 legend: 20 legend:
21 'Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively.' // MISSING 21 'Dentro del diálogo, presione TAB para navegar a los siguientes elementos de diálogo, presione SHIFT+TAB para moverse a los anteriores elementos de diálogo, presione ENTER para enviar el diálogo, presiona ESC para cancelar el diálogo. Cuando el diálogo tiene multiples pestañas, la lista de pestañas puede ser abarcada con ALT + F10 or con TAB como parte del orden de pestañas del diálogo. ECon la pestaña enfocada, puede moverse a la siguiente o anterior pestaña con las FLECHAS IZQUIRDA y DERECHA respectivamente.'
22 }, 22 },
23 23
24 { 24 {
@@ -79,29 +79,26 @@ CKEDITOR.plugins.setLang( 'a11yhelp', 'es', {
79 { 79 {
80 name: 'Ayuda de Accesibilidad', 80 name: 'Ayuda de Accesibilidad',
81 legend: 'Presiona ${a11yHelp}' 81 legend: 'Presiona ${a11yHelp}'
82 },
83 {
84 name: ' Paste as plain text', // MISSING
85 legend: 'Press ${pastetext}', // MISSING
86 legendEdge: 'Press ${pastetext}, followed by ${paste}' // MISSING
82 } 87 }
83 ] 88 ]
84 } 89 }
85 ], 90 ],
86 backspace: 'Retroceso',
87 tab: 'Tabulador', 91 tab: 'Tabulador',
88 enter: 'Ingresar',
89 shift: 'Mayús.',
90 ctrl: 'Ctrl',
91 alt: 'Alt',
92 pause: 'Pausa', 92 pause: 'Pausa',
93 capslock: 'Bloq. Mayús.', 93 capslock: 'Bloq. Mayús.',
94 escape: 'Escape', 94 escape: 'Escape',
95 pageUp: 'Regresar Página', 95 pageUp: 'Regresar Página',
96 pageDown: 'Avanzar Página', 96 pageDown: 'Avanzar Página',
97 end: 'Fin',
98 home: 'Inicio',
99 leftArrow: 'Flecha Izquierda', 97 leftArrow: 'Flecha Izquierda',
100 upArrow: 'Flecha Arriba', 98 upArrow: 'Flecha Arriba',
101 rightArrow: 'Flecha Derecha', 99 rightArrow: 'Flecha Derecha',
102 downArrow: 'Flecha Abajo', 100 downArrow: 'Flecha Abajo',
103 insert: 'Insertar', 101 insert: 'Insertar',
104 'delete': 'Suprimir',
105 leftWindowKey: 'Tecla Windows Izquierda', 102 leftWindowKey: 'Tecla Windows Izquierda',
106 rightWindowKey: 'Tecla Windows Derecha', 103 rightWindowKey: 'Tecla Windows Derecha',
107 selectKey: 'Tecla de Selección', 104 selectKey: 'Tecla de Selección',
diff --git a/sources/plugins/a11yhelp/dialogs/lang/et.js b/sources/plugins/a11yhelp/dialogs/lang/et.js
index 394f0c6..3f6524b 100644
--- a/sources/plugins/a11yhelp/dialogs/lang/et.js
+++ b/sources/plugins/a11yhelp/dialogs/lang/et.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -79,29 +79,26 @@ CKEDITOR.plugins.setLang( 'a11yhelp', 'et', {
79 { 79 {
80 name: ' Accessibility Help', // MISSING 80 name: ' Accessibility Help', // MISSING
81 legend: 'Press ${a11yHelp}' // MISSING 81 legend: 'Press ${a11yHelp}' // MISSING
82 },
83 {
84 name: ' Paste as plain text', // MISSING
85 legend: 'Press ${pastetext}', // MISSING
86 legendEdge: 'Press ${pastetext}, followed by ${paste}' // MISSING
82 } 87 }
83 ] 88 ]
84 } 89 }
85 ], 90 ],
86 backspace: 'Backspace', // MISSING
87 tab: 'Tab', // MISSING 91 tab: 'Tab', // MISSING
88 enter: 'Enter', // MISSING
89 shift: 'Shift', // MISSING
90 ctrl: 'Ctrl', // MISSING
91 alt: 'Alt', // MISSING
92 pause: 'Pause', // MISSING 92 pause: 'Pause', // MISSING
93 capslock: 'Caps Lock', // MISSING 93 capslock: 'Caps Lock', // MISSING
94 escape: 'Escape', // MISSING 94 escape: 'Escape', // MISSING
95 pageUp: 'Page Up', // MISSING 95 pageUp: 'Page Up', // MISSING
96 pageDown: 'Page Down', // MISSING 96 pageDown: 'Page Down', // MISSING
97 end: 'End', // MISSING
98 home: 'Home', // MISSING
99 leftArrow: 'Left Arrow', // MISSING 97 leftArrow: 'Left Arrow', // MISSING
100 upArrow: 'Up Arrow', // MISSING 98 upArrow: 'Up Arrow', // MISSING
101 rightArrow: 'Right Arrow', // MISSING 99 rightArrow: 'Right Arrow', // MISSING
102 downArrow: 'Down Arrow', // MISSING 100 downArrow: 'Down Arrow', // MISSING
103 insert: 'Insert', // MISSING 101 insert: 'Insert', // MISSING
104 'delete': 'Delete', // MISSING
105 leftWindowKey: 'Left Windows key', // MISSING 102 leftWindowKey: 'Left Windows key', // MISSING
106 rightWindowKey: 'Right Windows key', // MISSING 103 rightWindowKey: 'Right Windows key', // MISSING
107 selectKey: 'Select key', // MISSING 104 selectKey: 'Select key', // MISSING
diff --git a/sources/plugins/a11yhelp/dialogs/lang/eu.js b/sources/plugins/a11yhelp/dialogs/lang/eu.js
index 097ad14..80c60db 100644
--- a/sources/plugins/a11yhelp/dialogs/lang/eu.js
+++ b/sources/plugins/a11yhelp/dialogs/lang/eu.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -79,29 +79,26 @@ CKEDITOR.plugins.setLang( 'a11yhelp', 'eu', {
79 { 79 {
80 name: 'Erabilerraztasunaren laguntza', 80 name: 'Erabilerraztasunaren laguntza',
81 legend: 'Sakatu ${a11yHelp}' 81 legend: 'Sakatu ${a11yHelp}'
82 },
83 {
84 name: ' Paste as plain text', // MISSING
85 legend: 'Press ${pastetext}', // MISSING
86 legendEdge: 'Press ${pastetext}, followed by ${paste}' // MISSING
82 } 87 }
83 ] 88 ]
84 } 89 }
85 ], 90 ],
86 backspace: 'Atzera tekla',
87 tab: 'Tabuladorea', 91 tab: 'Tabuladorea',
88 enter: 'Sartu',
89 shift: 'Maius',
90 ctrl: 'Ktrl',
91 alt: 'Alt',
92 pause: 'Pausatu', 92 pause: 'Pausatu',
93 capslock: 'Blok Maius', 93 capslock: 'Blok Maius',
94 escape: 'Ihes', 94 escape: 'Ihes',
95 pageUp: 'Page Up', // MISSING 95 pageUp: 'Page Up', // MISSING
96 pageDown: 'Page Down', // MISSING 96 pageDown: 'Page Down', // MISSING
97 end: 'Buka',
98 home: 'Etxea',
99 leftArrow: 'Ezker-gezia', 97 leftArrow: 'Ezker-gezia',
100 upArrow: 'Gora gezia', 98 upArrow: 'Gora gezia',
101 rightArrow: 'Eskuin-gezia', 99 rightArrow: 'Eskuin-gezia',
102 downArrow: 'Behera gezia', 100 downArrow: 'Behera gezia',
103 insert: 'Txertatu', 101 insert: 'Txertatu',
104 'delete': 'Ezabatu',
105 leftWindowKey: 'Ezkerreko Windows tekla', 102 leftWindowKey: 'Ezkerreko Windows tekla',
106 rightWindowKey: 'Eskuineko Windows tekla', 103 rightWindowKey: 'Eskuineko Windows tekla',
107 selectKey: 'Hautatu tekla', 104 selectKey: 'Hautatu tekla',
diff --git a/sources/plugins/a11yhelp/dialogs/lang/fa.js b/sources/plugins/a11yhelp/dialogs/lang/fa.js
index 7391490..dbe99dc 100644
--- a/sources/plugins/a11yhelp/dialogs/lang/fa.js
+++ b/sources/plugins/a11yhelp/dialogs/lang/fa.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -79,29 +79,26 @@ CKEDITOR.plugins.setLang( 'a11yhelp', 'fa', {
79 { 79 {
80 name: 'راهنمای دسترسی', 80 name: 'راهنمای دسترسی',
81 legend: 'فشردن ${a11yHelp}' 81 legend: 'فشردن ${a11yHelp}'
82 },
83 {
84 name: ' Paste as plain text', // MISSING
85 legend: 'Press ${pastetext}', // MISSING
86 legendEdge: 'Press ${pastetext}, followed by ${paste}' // MISSING
82 } 87 }
83 ] 88 ]
84 } 89 }
85 ], 90 ],
86 backspace: 'عقبگرد',
87 tab: 'برگه', 91 tab: 'برگه',
88 enter: 'ورود',
89 shift: 'تعویض',
90 ctrl: 'کنترل',
91 alt: 'دگرساز',
92 pause: 'توقف', 92 pause: 'توقف',
93 capslock: 'Caps Lock', 93 capslock: 'Caps Lock',
94 escape: 'گریز', 94 escape: 'گریز',
95 pageUp: 'صفحه به بالا', 95 pageUp: 'صفحه به بالا',
96 pageDown: 'صفحه به پایین', 96 pageDown: 'صفحه به پایین',
97 end: 'پایان',
98 home: 'خانه',
99 leftArrow: 'پیکان چپ', 97 leftArrow: 'پیکان چپ',
100 upArrow: 'پیکان بالا', 98 upArrow: 'پیکان بالا',
101 rightArrow: 'پیکان راست', 99 rightArrow: 'پیکان راست',
102 downArrow: 'پیکان پایین', 100 downArrow: 'پیکان پایین',
103 insert: 'ورود', 101 insert: 'ورود',
104 'delete': 'حذف',
105 leftWindowKey: 'کلید چپ ویندوز', 102 leftWindowKey: 'کلید چپ ویندوز',
106 rightWindowKey: 'کلید راست ویندوز', 103 rightWindowKey: 'کلید راست ویندوز',
107 selectKey: 'انتخاب کلید', 104 selectKey: 'انتخاب کلید',
diff --git a/sources/plugins/a11yhelp/dialogs/lang/fi.js b/sources/plugins/a11yhelp/dialogs/lang/fi.js
index 4f4775b..028020c 100644
--- a/sources/plugins/a11yhelp/dialogs/lang/fi.js
+++ b/sources/plugins/a11yhelp/dialogs/lang/fi.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -79,29 +79,26 @@ CKEDITOR.plugins.setLang( 'a11yhelp', 'fi', {
79 { 79 {
80 name: 'Saavutettavuus ohjeet', 80 name: 'Saavutettavuus ohjeet',
81 legend: 'Paina ${a11yHelp}' 81 legend: 'Paina ${a11yHelp}'
82 },
83 {
84 name: ' Paste as plain text', // MISSING
85 legend: 'Press ${pastetext}', // MISSING
86 legendEdge: 'Press ${pastetext}, followed by ${paste}' // MISSING
82 } 87 }
83 ] 88 ]
84 } 89 }
85 ], 90 ],
86 backspace: 'Backspace', // MISSING
87 tab: 'Tab', // MISSING 91 tab: 'Tab', // MISSING
88 enter: 'Enter', // MISSING
89 shift: 'Shift', // MISSING
90 ctrl: 'Ctrl', // MISSING
91 alt: 'Alt', // MISSING
92 pause: 'Pause', // MISSING 92 pause: 'Pause', // MISSING
93 capslock: 'Caps Lock', // MISSING 93 capslock: 'Caps Lock', // MISSING
94 escape: 'Escape', // MISSING 94 escape: 'Escape', // MISSING
95 pageUp: 'Page Up', // MISSING 95 pageUp: 'Page Up', // MISSING
96 pageDown: 'Page Down', // MISSING 96 pageDown: 'Page Down', // MISSING
97 end: 'End', // MISSING
98 home: 'Home', // MISSING
99 leftArrow: 'Left Arrow', // MISSING 97 leftArrow: 'Left Arrow', // MISSING
100 upArrow: 'Up Arrow', // MISSING 98 upArrow: 'Up Arrow', // MISSING
101 rightArrow: 'Right Arrow', // MISSING 99 rightArrow: 'Right Arrow', // MISSING
102 downArrow: 'Down Arrow', // MISSING 100 downArrow: 'Down Arrow', // MISSING
103 insert: 'Insert', // MISSING 101 insert: 'Insert', // MISSING
104 'delete': 'Delete', // MISSING
105 leftWindowKey: 'Left Windows key', // MISSING 102 leftWindowKey: 'Left Windows key', // MISSING
106 rightWindowKey: 'Right Windows key', // MISSING 103 rightWindowKey: 'Right Windows key', // MISSING
107 selectKey: 'Select key', // MISSING 104 selectKey: 'Select key', // MISSING
diff --git a/sources/plugins/a11yhelp/dialogs/lang/fo.js b/sources/plugins/a11yhelp/dialogs/lang/fo.js
index 21bc261..358ca6e 100644
--- a/sources/plugins/a11yhelp/dialogs/lang/fo.js
+++ b/sources/plugins/a11yhelp/dialogs/lang/fo.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -79,29 +79,26 @@ CKEDITOR.plugins.setLang( 'a11yhelp', 'fo', {
79 { 79 {
80 name: ' Accessibility Help', // MISSING 80 name: ' Accessibility Help', // MISSING
81 legend: 'Press ${a11yHelp}' // MISSING 81 legend: 'Press ${a11yHelp}' // MISSING
82 },
83 {
84 name: ' Paste as plain text', // MISSING
85 legend: 'Press ${pastetext}', // MISSING
86 legendEdge: 'Press ${pastetext}, followed by ${paste}' // MISSING
82 } 87 }
83 ] 88 ]
84 } 89 }
85 ], 90 ],
86 backspace: 'Backspace', // MISSING
87 tab: 'Tab', // MISSING 91 tab: 'Tab', // MISSING
88 enter: 'Enter', // MISSING
89 shift: 'Shift', // MISSING
90 ctrl: 'Ctrl', // MISSING
91 alt: 'Alt', // MISSING
92 pause: 'Pause', // MISSING 92 pause: 'Pause', // MISSING
93 capslock: 'Caps Lock', // MISSING 93 capslock: 'Caps Lock', // MISSING
94 escape: 'Escape', // MISSING 94 escape: 'Escape', // MISSING
95 pageUp: 'Page Up', // MISSING 95 pageUp: 'Page Up', // MISSING
96 pageDown: 'Page Down', // MISSING 96 pageDown: 'Page Down', // MISSING
97 end: 'End', // MISSING
98 home: 'Home', // MISSING
99 leftArrow: 'Left Arrow', // MISSING 97 leftArrow: 'Left Arrow', // MISSING
100 upArrow: 'Up Arrow', // MISSING 98 upArrow: 'Up Arrow', // MISSING
101 rightArrow: 'Right Arrow', // MISSING 99 rightArrow: 'Right Arrow', // MISSING
102 downArrow: 'Down Arrow', // MISSING 100 downArrow: 'Down Arrow', // MISSING
103 insert: 'Insert', // MISSING 101 insert: 'Insert', // MISSING
104 'delete': 'Delete', // MISSING
105 leftWindowKey: 'Left Windows key', // MISSING 102 leftWindowKey: 'Left Windows key', // MISSING
106 rightWindowKey: 'Right Windows key', // MISSING 103 rightWindowKey: 'Right Windows key', // MISSING
107 selectKey: 'Select key', // MISSING 104 selectKey: 'Select key', // MISSING
diff --git a/sources/plugins/a11yhelp/dialogs/lang/fr-ca.js b/sources/plugins/a11yhelp/dialogs/lang/fr-ca.js
index b43eeab..88c4a1f 100644
--- a/sources/plugins/a11yhelp/dialogs/lang/fr-ca.js
+++ b/sources/plugins/a11yhelp/dialogs/lang/fr-ca.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -79,29 +79,26 @@ CKEDITOR.plugins.setLang( 'a11yhelp', 'fr-ca', {
79 { 79 {
80 name: 'Aide d\'accessibilité', 80 name: 'Aide d\'accessibilité',
81 legend: 'Appuyer sur ${a11yHelp}' 81 legend: 'Appuyer sur ${a11yHelp}'
82 },
83 {
84 name: ' Paste as plain text', // MISSING
85 legend: 'Press ${pastetext}', // MISSING
86 legendEdge: 'Press ${pastetext}, followed by ${paste}' // MISSING
82 } 87 }
83 ] 88 ]
84 } 89 }
85 ], 90 ],
86 backspace: 'Backspace', // MISSING
87 tab: 'Tab', // MISSING 91 tab: 'Tab', // MISSING
88 enter: 'Enter', // MISSING
89 shift: 'Shift', // MISSING
90 ctrl: 'Ctrl', // MISSING
91 alt: 'Alt', // MISSING
92 pause: 'Pause', // MISSING 92 pause: 'Pause', // MISSING
93 capslock: 'Caps Lock', // MISSING 93 capslock: 'Caps Lock', // MISSING
94 escape: 'Escape', // MISSING 94 escape: 'Escape', // MISSING
95 pageUp: 'Page Up', // MISSING 95 pageUp: 'Page Up', // MISSING
96 pageDown: 'Page Down', // MISSING 96 pageDown: 'Page Down', // MISSING
97 end: 'End', // MISSING
98 home: 'Home', // MISSING
99 leftArrow: 'Left Arrow', // MISSING 97 leftArrow: 'Left Arrow', // MISSING
100 upArrow: 'Up Arrow', // MISSING 98 upArrow: 'Up Arrow', // MISSING
101 rightArrow: 'Right Arrow', // MISSING 99 rightArrow: 'Right Arrow', // MISSING
102 downArrow: 'Down Arrow', // MISSING 100 downArrow: 'Down Arrow', // MISSING
103 insert: 'Insert', // MISSING 101 insert: 'Insert', // MISSING
104 'delete': 'Delete', // MISSING
105 leftWindowKey: 'Left Windows key', // MISSING 102 leftWindowKey: 'Left Windows key', // MISSING
106 rightWindowKey: 'Right Windows key', // MISSING 103 rightWindowKey: 'Right Windows key', // MISSING
107 selectKey: 'Select key', // MISSING 104 selectKey: 'Select key', // MISSING
diff --git a/sources/plugins/a11yhelp/dialogs/lang/fr.js b/sources/plugins/a11yhelp/dialogs/lang/fr.js
index ee41566..a2f4649 100644
--- a/sources/plugins/a11yhelp/dialogs/lang/fr.js
+++ b/sources/plugins/a11yhelp/dialogs/lang/fr.js
@@ -1,39 +1,39 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
6CKEDITOR.plugins.setLang( 'a11yhelp', 'fr', { 6CKEDITOR.plugins.setLang( 'a11yhelp', 'fr', {
7 title: 'Instructions d\'accessibilité', 7 title: 'Instructions d\'accessibilité',
8 contents: 'Contenu de l\'aide. Pour fermer ce dialogue, appuyez sur la touche ÉCHAP (Echappement).', 8 contents: 'Contenu de l\'aide. Pour fermer cette fenêtre, appuyez sur la touche Échap.',
9 legend: [ 9 legend: [
10 { 10 {
11 name: 'Général', 11 name: 'Général',
12 items: [ 12 items: [
13 { 13 {
14 name: 'Barre d\'outils de l\'éditeur', 14 name: 'Barre d\'outils de l\'éditeur',
15 legend: 'Appuyer sur ${toolbarFocus} pour accéder à la barre d\'outils. Se déplacer vers les groupes suivant ou précédent de la barre d\'outil avec les touches MAJ et MAJ+TAB. Se déplacer vers les boutons suivant ou précédent de la barre d\'outils avec les touches FLÈCHE DROITE et FLÈCHE GAUCHE. Appuyer sur la barre d\'espace ou la touche ENTRÉE pour activer le bouton de barre d\'outils.' 15 legend: 'Appuyer sur ${toolbarFocus} pour accéder à la barre d\'outils. Se déplacer vers le groupe suivant ou précédent de la barre d\'outils avec les touches Tab et Maj+Tab. Se déplacer vers le bouton suivant ou précédent de la barre d\'outils avec les touches Flèche droite et Flèche gauche. Appuyer sur la barre d\'espace ou la touche Entrée pour activer le bouton de barre d\'outils.'
16 }, 16 },
17 17
18 { 18 {
19 name: 'Dialogue de l\'éditeur', 19 name: 'Fenêtre de l\'éditeur',
20 legend: 20 legend:
21 'Dans un dialogue, appuyer sur TAB pour aller à l\'élément suivant du dialogue, appuyer sur MAJ+TAB pour aller à l\'élément précédent du dialogue, appuyer sur ECHAP pour annuler le dialogue. Quand un dialogue a de multiples onglets, on peut accéder à la liste des onglets avec ALT+F10 ou avec TAB. Dans la liste des onglets, se déplacer vers le suivant ou le précédent avec les FLECHES DROITE et GAUCHE respectivement.' 21 'Dans une boîte de dialogue, appuyer sur Tab pour passer à l\'élément suivant, appuyer sur Maj+Tab pour passer à l\'élément précédent, appuyer sur Entrée pour valider, appuyer sur Échap pour annuler. Quand une boîte de dialogue possède des onglets, la liste peut être atteinte avec Alt+F10 ou avec Tab. Dans la liste des onglets, se déplacer vers le suivant et le précédent avec les touches Flèche droite et Flèche gauche respectivement.'
22 }, 22 },
23 23
24 { 24 {
25 name: 'Menu contextuel de l\'éditeur', 25 name: 'Menu contextuel de l\'éditeur',
26 legend: 'Appuyer sur ${contextMenu} ou entrer le RACCOURCI CLAVIER pour ouvrir le menu contextuel. Puis se déplacer vers l\'option suivante du menu avec les touches TAB ou FLÈCHE BAS. Se déplacer vers l\'option précédente avec les touches MAJ+TAB ou FLÈCHE HAUT. appuyer sur la BARRE D\'ESPACE ou la touche ENTRÉE pour sélectionner l\'option du menu. Oovrir le sous-menu de l\'option courante avec la BARRE D\'ESPACE ou les touches ENTRÉE ou FLÈCHE DROITE. Revenir à l\'élément de menu parent avec les touches ÉCHAP ou FLÈCHE GAUCHE. Fermer le menu contextuel avec ÉCHAP.' 26 legend: 'Appuyer sur ${contextMenu} ou sur la touche Menu pour ouvrir le menu contextuel. Se déplacer ensuite vers l\'option suivante du menu avec les touches Tab ou Flèche bas. Se déplacer vers l\'option précédente avec les touches Maj+Tab ou Flèche haut. Appuyer sur la barre d\'espace ou la touche Entrée pour sélectionner l\'option du menu. Appuyer sur la barre d\'espace, la touche Entrée ou Flèche droite pour ouvrir le sous-menu de l\'option sélectionnée. Revenir à l\'élément de menu parent avec la touche Échap ou Flèche gauche. Fermer le menu contextuel avec Échap.'
27 }, 27 },
28 28
29 { 29 {
30 name: 'Zone de liste de l\'éditeur', 30 name: 'Zone de liste de l\'éditeur',
31 legend: 'Dans la liste en menu déroulant, se déplacer vers l\'élément suivant de la liste avec les touches TAB ou FLÈCHE BAS. Se déplacer vers l\'élément précédent de la liste avec les touches MAJ+TAB ou FLÈCHE HAUT. Appuyer sur la BARRE D\'ESPACE ou sur ENTRÉE pour sélectionner l\'option dans la liste. Appuyer sur ÉCHAP pour fermer le menu déroulant.' 31 legend: 'Dans une liste en menu déroulant, se déplacer vers l\'élément suivant de la liste avec les touches Tab ou Flèche bas. Se déplacer vers l\'élément précédent de la liste avec les touches Maj+Tab ou Flèche haut. Appuyer sur la barre d\'espace ou sur Entrée pour sélectionner l\'option dans la liste. Appuyer sur Échap pour fermer le menu déroulant.'
32 }, 32 },
33 33
34 { 34 {
35 name: 'Barre d\'emplacement des éléments de l\'éditeur', 35 name: 'Barre du chemin d\'éléments de l\'éditeur',
36 legend: 'Appuyer sur ${elementsPathFocus} pour naviguer vers la barre d\'emplacement des éléments de l\'éditeur. Se déplacer vers le bouton d\'élément suivant avec les touches TAB ou FLÈCHE DROITE. Se déplacer vers le bouton d\'élément précédent avec les touches MAJ+TAB ou FLÈCHE GAUCHE. Appuyer sur la BARRE D\'ESPACE ou sur ENTRÉE pour sélectionner l\'élément dans l\'éditeur.' 36 legend: 'Appuyer sur ${elementsPathFocus} pour naviguer vers la barre du fil d\'Ariane des éléments. Se déplacer vers le bouton de l\'élément suivant avec les touches Tab ou Flèche droite. Se déplacer vers le bouton précédent avec les touches Maj+Tab ou Flèche gauche. Appuyer sur la barre d\'espace ou sur Entrée pour sélectionner l\'élément dans l\'éditeur.'
37 } 37 }
38 ] 38 ]
39 }, 39 },
@@ -45,7 +45,7 @@ CKEDITOR.plugins.setLang( 'a11yhelp', 'fr', {
45 legend: 'Appuyer sur ${undo}' 45 legend: 'Appuyer sur ${undo}'
46 }, 46 },
47 { 47 {
48 name: 'Refaire la commande', 48 name: 'Commande restaurer',
49 legend: 'Appuyer sur ${redo}' 49 legend: 'Appuyer sur ${redo}'
50 }, 50 },
51 { 51 {
@@ -69,55 +69,52 @@ CKEDITOR.plugins.setLang( 'a11yhelp', 'fr', {
69 legend: 'Appuyer sur ${toolbarCollapse}' 69 legend: 'Appuyer sur ${toolbarCollapse}'
70 }, 70 },
71 { 71 {
72 name: 'Accder à la précédente commande d\'espace de mise au point', 72 name: 'Commande d\'accs à l\'élément sélectionnable pcédent',
73 legend: 'Appuyez sur ${accessPreviousSpace} pour accéder à l\'espace hors d\'atteinte le plus proche avant le caret, par exemple: deux éléments HR adjacents. Répétez la combinaison de touches pour atteindre les espaces de mise au point distants.' 73 legend: 'Appuyer sur ${accessNextSpace} pour accéder à l\'élément sélectionnable inatteignable le plus proche avant le curseur, par exemple : deux lignes horizontales adjacentes. Répéter la combinaison de touches pour atteindre les éléments sélectionnables précédents.'
74 }, 74 },
75 { 75 {
76 name: 'Accès à la prochaine commande de l\'espace de mise au point', 76 name: 'Commande d\'accès à l\'élément sélectionnable suivant',
77 legend: 'Appuyez sur ${accessNextSpace} pour accéder au plus proche espace de mise au point hors d\'atteinte après le caret, par exemple: deux éléments HR adjacents. répétez la combinaison de touches pour atteindre les espace de mise au point distants.' 77 legend: 'Appuyer sur ${accessNextSpace} pour accéder à l\'élément sélectionnable inatteignable le plus proche après le curseur, par exemple : deux lignes horizontales adjacentes. Répéter la combinaison de touches pour atteindre les éléments sélectionnables suivants.'
78 }, 78 },
79 { 79 {
80 name: ' Aide Accessibilité', 80 name: ' Aide sur l\'accessibilité',
81 legend: 'Appuyer sur ${a11yHelp}' 81 legend: 'Appuyer sur ${a11yHelp}'
82 },
83 {
84 name: 'Coller comme texte sans mise en forme',
85 legend: 'Appuyer sur ${pastetext}',
86 legendEdge: 'Press ${pastetext}, followed by ${paste}' // MISSING
82 } 87 }
83 ] 88 ]
84 } 89 }
85 ], 90 ],
86 backspace: 'Retour arrière',
87 tab: 'Tabulation', 91 tab: 'Tabulation',
88 enter: 'Entrée',
89 shift: 'Majuscule',
90 ctrl: 'Ctrl',
91 alt: 'Alt',
92 pause: 'Pause', 92 pause: 'Pause',
93 capslock: 'Verr. Maj.', 93 capslock: 'Verr. Maj.',
94 escape: 'Échap', 94 escape: 'Échap',
95 pageUp: 'Page supérieure', 95 pageUp: 'Page supérieure',
96 pageDown: 'Page inférieure', 96 pageDown: 'Page suivante',
97 end: 'Fin',
98 home: 'Retour',
99 leftArrow: 'Flèche gauche', 97 leftArrow: 'Flèche gauche',
100 upArrow: 'Flèche haute', 98 upArrow: 'Flèche haut',
101 rightArrow: 'Flèche droite', 99 rightArrow: 'Flèche droite',
102 downArrow: 'Flèche basse', 100 downArrow: 'Flèche basse',
103 insert: 'Insertion', 101 insert: 'Inser',
104 'delete': 'Supprimer',
105 leftWindowKey: 'Touche Windows gauche', 102 leftWindowKey: 'Touche Windows gauche',
106 rightWindowKey: 'Touche Windows droite', 103 rightWindowKey: 'Touche Windows droite',
107 selectKey: 'Touche menu', 104 selectKey: 'Touche Sélectionner',
108 numpad0: 'Pavé numérique 0', 105 numpad0: '0 du pavé numérique',
109 numpad1: 'Pavé numérique 1', 106 numpad1: '1 du pavé numérique',
110 numpad2: 'Pavé numérique 2', 107 numpad2: '2 du pavé numérique',
111 numpad3: 'Pavé numérique 3', 108 numpad3: '3 du pavé numérique',
112 numpad4: 'Pavé numérique 4', 109 numpad4: '4 du pavé numérique',
113 numpad5: 'Pavé numérique 5', 110 numpad5: '5 du pavé numérique',
114 numpad6: 'Pavé numérique 6', 111 numpad6: '6 du pavé numérique',
115 numpad7: 'Pavé numérique 7', 112 numpad7: '7 du pavé numérique',
116 numpad8: 'Pavé numérique 8', 113 numpad8: 'Pavé numérique 8',
117 numpad9: 'Pavé numérique 9', 114 numpad9: '9 du pavé numérique',
118 multiply: 'Multiplier', 115 multiply: 'Multiplier',
119 add: 'Addition', 116 add: 'Plus',
120 subtract: 'Soustraire', 117 subtract: 'Moins',
121 decimalPoint: 'Point décimal', 118 decimalPoint: 'Point décimal',
122 divide: 'Diviser', 119 divide: 'Diviser',
123 f1: 'F1', 120 f1: 'F1',
@@ -132,9 +129,9 @@ CKEDITOR.plugins.setLang( 'a11yhelp', 'fr', {
132 f10: 'F10', 129 f10: 'F10',
133 f11: 'F11', 130 f11: 'F11',
134 f12: 'F12', 131 f12: 'F12',
135 numLock: 'Verrouillage numérique', 132 numLock: 'Verr. Num.',
136 scrollLock: 'Arrêt défilement', 133 scrollLock: 'Arrêt défil.',
137 semiColon: 'Point virgule', 134 semiColon: 'Point-virgule',
138 equalSign: 'Signe égal', 135 equalSign: 'Signe égal',
139 comma: 'Virgule', 136 comma: 'Virgule',
140 dash: 'Tiret', 137 dash: 'Tiret',
diff --git a/sources/plugins/a11yhelp/dialogs/lang/gl.js b/sources/plugins/a11yhelp/dialogs/lang/gl.js
index f6e6b1c..1bb9595 100644
--- a/sources/plugins/a11yhelp/dialogs/lang/gl.js
+++ b/sources/plugins/a11yhelp/dialogs/lang/gl.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -18,7 +18,7 @@ CKEDITOR.plugins.setLang( 'a11yhelp', 'gl', {
18 { 18 {
19 name: 'Editor de diálogo', 19 name: 'Editor de diálogo',
20 legend: 20 legend:
21 'Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively.' // MISSING 21 'Dentro do diálogo, prema TAB para navegar cara os seguintes elementos de diálogo, prema MAIÚS+TAB para moverse cara os anteriores elementos de diálogo, prema INTRO para enviar o diálogo, prema ESC para cancelar o diálogo. Cando o diálogo ten múltiples lapelas, a lista de lapelas pode cinguirse con ALT+F10 ou con TAB como parte da orde de lapelas do diálogo. Coa lapela en foco, pode moverse cara a seguinte ou a anterior lapela coas FRECHAS ESQUERDA e DEREICHA respectivamente.'
22 }, 22 },
23 23
24 { 24 {
@@ -79,29 +79,26 @@ CKEDITOR.plugins.setLang( 'a11yhelp', 'gl', {
79 { 79 {
80 name: 'Axuda da accesibilidade', 80 name: 'Axuda da accesibilidade',
81 legend: 'Prema ${a11yHelp}' 81 legend: 'Prema ${a11yHelp}'
82 },
83 {
84 name: 'Pegar como texto simple',
85 legend: 'Prema ${pastetext}',
86 legendEdge: 'Prema ${pastetext}, seguido de ${paste}'
82 } 87 }
83 ] 88 ]
84 } 89 }
85 ], 90 ],
86 backspace: 'Ir atrás',
87 tab: 'Tabulador', 91 tab: 'Tabulador',
88 enter: 'Intro',
89 shift: 'Maiús',
90 ctrl: 'Ctrl',
91 alt: 'Alt',
92 pause: 'Pausa', 92 pause: 'Pausa',
93 capslock: 'Bloq. Maiús', 93 capslock: 'Bloq. Maiús',
94 escape: 'Escape', 94 escape: 'Escape',
95 pageUp: 'Páxina arriba', 95 pageUp: 'Páxina arriba',
96 pageDown: 'Páxina abaixo', 96 pageDown: 'Páxina abaixo',
97 end: 'Fin',
98 home: 'Inicio',
99 leftArrow: 'Frecha esquerda', 97 leftArrow: 'Frecha esquerda',
100 upArrow: 'Frecha arriba', 98 upArrow: 'Frecha arriba',
101 rightArrow: 'Frecha dereita', 99 rightArrow: 'Frecha dereita',
102 downArrow: 'Frecha abaixo', 100 downArrow: 'Frecha abaixo',
103 insert: 'Inserir', 101 insert: 'Inserir',
104 'delete': 'Supr',
105 leftWindowKey: 'Tecla Windows esquerda', 102 leftWindowKey: 'Tecla Windows esquerda',
106 rightWindowKey: 'Tecla Windows dereita', 103 rightWindowKey: 'Tecla Windows dereita',
107 selectKey: 'Escolla a tecla', 104 selectKey: 'Escolla a tecla',
diff --git a/sources/plugins/a11yhelp/dialogs/lang/gu.js b/sources/plugins/a11yhelp/dialogs/lang/gu.js
index d8d4957..6fa2b3d 100644
--- a/sources/plugins/a11yhelp/dialogs/lang/gu.js
+++ b/sources/plugins/a11yhelp/dialogs/lang/gu.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -79,29 +79,26 @@ CKEDITOR.plugins.setLang( 'a11yhelp', 'gu', {
79 { 79 {
80 name: ' Accessibility Help', // MISSING 80 name: ' Accessibility Help', // MISSING
81 legend: 'Press ${a11yHelp}' // MISSING 81 legend: 'Press ${a11yHelp}' // MISSING
82 },
83 {
84 name: ' Paste as plain text', // MISSING
85 legend: 'Press ${pastetext}', // MISSING
86 legendEdge: 'Press ${pastetext}, followed by ${paste}' // MISSING
82 } 87 }
83 ] 88 ]
84 } 89 }
85 ], 90 ],
86 backspace: 'Backspace', // MISSING
87 tab: 'Tab', // MISSING 91 tab: 'Tab', // MISSING
88 enter: 'Enter', // MISSING
89 shift: 'Shift', // MISSING
90 ctrl: 'Ctrl', // MISSING
91 alt: 'Alt', // MISSING
92 pause: 'Pause', // MISSING 92 pause: 'Pause', // MISSING
93 capslock: 'Caps Lock', // MISSING 93 capslock: 'Caps Lock', // MISSING
94 escape: 'Escape', // MISSING 94 escape: 'Escape', // MISSING
95 pageUp: 'Page Up', // MISSING 95 pageUp: 'Page Up', // MISSING
96 pageDown: 'Page Down', // MISSING 96 pageDown: 'Page Down', // MISSING
97 end: 'End', // MISSING
98 home: 'Home', // MISSING
99 leftArrow: 'Left Arrow', // MISSING 97 leftArrow: 'Left Arrow', // MISSING
100 upArrow: 'Up Arrow', // MISSING 98 upArrow: 'Up Arrow', // MISSING
101 rightArrow: 'Right Arrow', // MISSING 99 rightArrow: 'Right Arrow', // MISSING
102 downArrow: 'Down Arrow', // MISSING 100 downArrow: 'Down Arrow', // MISSING
103 insert: 'Insert', // MISSING 101 insert: 'Insert', // MISSING
104 'delete': 'Delete', // MISSING
105 leftWindowKey: 'Left Windows key', // MISSING 102 leftWindowKey: 'Left Windows key', // MISSING
106 rightWindowKey: 'Right Windows key', // MISSING 103 rightWindowKey: 'Right Windows key', // MISSING
107 selectKey: 'Select key', // MISSING 104 selectKey: 'Select key', // MISSING
diff --git a/sources/plugins/a11yhelp/dialogs/lang/he.js b/sources/plugins/a11yhelp/dialogs/lang/he.js
index 025cf88..ed668c4 100644
--- a/sources/plugins/a11yhelp/dialogs/lang/he.js
+++ b/sources/plugins/a11yhelp/dialogs/lang/he.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -79,29 +79,26 @@ CKEDITOR.plugins.setLang( 'a11yhelp', 'he', {
79 { 79 {
80 name: ' הוראות נגישות', 80 name: ' הוראות נגישות',
81 legend: 'לחץ ${a11yHelp}' 81 legend: 'לחץ ${a11yHelp}'
82 },
83 {
84 name: ' Paste as plain text', // MISSING
85 legend: 'Press ${pastetext}', // MISSING
86 legendEdge: 'Press ${pastetext}, followed by ${paste}' // MISSING
82 } 87 }
83 ] 88 ]
84 } 89 }
85 ], 90 ],
86 backspace: 'Backspace',
87 tab: 'Tab', 91 tab: 'Tab',
88 enter: 'Enter',
89 shift: 'Shift',
90 ctrl: 'Ctrl',
91 alt: 'Alt',
92 pause: 'Pause', 92 pause: 'Pause',
93 capslock: 'Caps Lock', 93 capslock: 'Caps Lock',
94 escape: 'Escape', 94 escape: 'Escape',
95 pageUp: 'Page Up', 95 pageUp: 'Page Up',
96 pageDown: 'Page Down', 96 pageDown: 'Page Down',
97 end: 'End',
98 home: 'Home',
99 leftArrow: 'חץ שמאלה', 97 leftArrow: 'חץ שמאלה',
100 upArrow: 'חץ למעלה', 98 upArrow: 'חץ למעלה',
101 rightArrow: 'חץ ימינה', 99 rightArrow: 'חץ ימינה',
102 downArrow: 'חץ למטה', 100 downArrow: 'חץ למטה',
103 insert: 'הכנס', 101 insert: 'הכנס',
104 'delete': 'מחק',
105 leftWindowKey: 'Left Windows key', // MISSING 102 leftWindowKey: 'Left Windows key', // MISSING
106 rightWindowKey: 'Right Windows key', // MISSING 103 rightWindowKey: 'Right Windows key', // MISSING
107 selectKey: 'בחר מקש', 104 selectKey: 'בחר מקש',
diff --git a/sources/plugins/a11yhelp/dialogs/lang/hi.js b/sources/plugins/a11yhelp/dialogs/lang/hi.js
index 19fda78..de1e54b 100644
--- a/sources/plugins/a11yhelp/dialogs/lang/hi.js
+++ b/sources/plugins/a11yhelp/dialogs/lang/hi.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -79,29 +79,26 @@ CKEDITOR.plugins.setLang( 'a11yhelp', 'hi', {
79 { 79 {
80 name: ' Accessibility Help', // MISSING 80 name: ' Accessibility Help', // MISSING
81 legend: 'Press ${a11yHelp}' // MISSING 81 legend: 'Press ${a11yHelp}' // MISSING
82 },
83 {
84 name: ' Paste as plain text', // MISSING
85 legend: 'Press ${pastetext}', // MISSING
86 legendEdge: 'Press ${pastetext}, followed by ${paste}' // MISSING
82 } 87 }
83 ] 88 ]
84 } 89 }
85 ], 90 ],
86 backspace: 'Backspace', // MISSING
87 tab: 'Tab', // MISSING 91 tab: 'Tab', // MISSING
88 enter: 'Enter', // MISSING
89 shift: 'Shift', // MISSING
90 ctrl: 'Ctrl', // MISSING
91 alt: 'Alt', // MISSING
92 pause: 'Pause', // MISSING 92 pause: 'Pause', // MISSING
93 capslock: 'Caps Lock', // MISSING 93 capslock: 'Caps Lock', // MISSING
94 escape: 'Escape', // MISSING 94 escape: 'Escape', // MISSING
95 pageUp: 'Page Up', // MISSING 95 pageUp: 'Page Up', // MISSING
96 pageDown: 'Page Down', // MISSING 96 pageDown: 'Page Down', // MISSING
97 end: 'End', // MISSING
98 home: 'Home', // MISSING
99 leftArrow: 'Left Arrow', // MISSING 97 leftArrow: 'Left Arrow', // MISSING
100 upArrow: 'Up Arrow', // MISSING 98 upArrow: 'Up Arrow', // MISSING
101 rightArrow: 'Right Arrow', // MISSING 99 rightArrow: 'Right Arrow', // MISSING
102 downArrow: 'Down Arrow', // MISSING 100 downArrow: 'Down Arrow', // MISSING
103 insert: 'Insert', // MISSING 101 insert: 'Insert', // MISSING
104 'delete': 'Delete', // MISSING
105 leftWindowKey: 'Left Windows key', // MISSING 102 leftWindowKey: 'Left Windows key', // MISSING
106 rightWindowKey: 'Right Windows key', // MISSING 103 rightWindowKey: 'Right Windows key', // MISSING
107 selectKey: 'Select key', // MISSING 104 selectKey: 'Select key', // MISSING
diff --git a/sources/plugins/a11yhelp/dialogs/lang/hr.js b/sources/plugins/a11yhelp/dialogs/lang/hr.js
index f4568a2..ae28062 100644
--- a/sources/plugins/a11yhelp/dialogs/lang/hr.js
+++ b/sources/plugins/a11yhelp/dialogs/lang/hr.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -18,7 +18,7 @@ CKEDITOR.plugins.setLang( 'a11yhelp', 'hr', {
18 { 18 {
19 name: 'Dijalog', 19 name: 'Dijalog',
20 legend: 20 legend:
21 'Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively.' // MISSING 21 'Unutar dijaloga, pritisnite TAB kako bi navigirali do sljedećeg elementa dijaloga, pritisnite SHIFT+TAB kako bi se pomaknuli do prethodnog elementa, pritisnite ENTER kako bi poslali dijalog, pritisnite ESC za gašenje dijaloga. Kada dijalog ima više kartica, listi kartica se može pristupiti pomoću ALT+F10 ili sa TAB. Kada je fokusirana lista kartica, pomaknite se naprijed ili nazad pomoću strelica LIJEVO ili DESNO.'
22 }, 22 },
23 23
24 { 24 {
@@ -69,80 +69,77 @@ CKEDITOR.plugins.setLang( 'a11yhelp', 'hr', {
69 legend: 'Pritisni ${toolbarCollapse}' 69 legend: 'Pritisni ${toolbarCollapse}'
70 }, 70 },
71 { 71 {
72 name: 'Access previous focus space naredba', 72 name: 'Naredba za pristupi prethodnom prostoru fokusa',
73 legend: 'Pritisni ${accessPreviousSpace} za pristup najbližem nedostupnom razmaku prije kursora, npr.: dva spojena HR elementa. Ponovnim pritiskom dohvatiti će se sljedeći nedostupni razmak.' 73 legend: 'Pritisni ${accessPreviousSpace} za pristup najbližem nedostupnom razmaku prije kursora, npr.: dva spojena HR elementa. Ponovnim pritiskom dohvatiti će se sljedeći nedostupni razmak.'
74 }, 74 },
75 { 75 {
76 name: 'Access next focus space naredba', 76 name: 'Naredba za pristup sljedećem prostoru fokusa',
77 legend: 'Pritisni ${accessNextSpace} za pristup najbližem nedostupnom razmaku nakon kursora, npr.: dva spojena HR elementa. Ponovnim pritiskom dohvatiti će se sljedeći nedostupni razmak.' 77 legend: 'Pritisni ${accessNextSpace} za pristup najbližem nedostupnom razmaku nakon kursora, npr.: dva spojena HR elementa. Ponovnim pritiskom dohvatiti će se sljedeći nedostupni razmak.'
78 }, 78 },
79 { 79 {
80 name: 'Pomoć za dostupnost', 80 name: 'Pomoć za dostupnost',
81 legend: 'Pritisni ${a11yHelp}' 81 legend: 'Pritisni ${a11yHelp}'
82 },
83 {
84 name: ' Paste as plain text', // MISSING
85 legend: 'Press ${pastetext}', // MISSING
86 legendEdge: 'Press ${pastetext}, followed by ${paste}' // MISSING
82 } 87 }
83 ] 88 ]
84 } 89 }
85 ], 90 ],
86 backspace: 'Backspace', // MISSING 91 tab: 'Tab',
87 tab: 'Tab', // MISSING 92 pause: 'Pause',
88 enter: 'Enter', // MISSING 93 capslock: 'Caps Lock',
89 shift: 'Shift', // MISSING 94 escape: 'Escape',
90 ctrl: 'Ctrl', // MISSING 95 pageUp: 'Page Up',
91 alt: 'Alt', // MISSING 96 pageDown: 'Page Down',
92 pause: 'Pause', // MISSING 97 leftArrow: 'Lijev strelica',
93 capslock: 'Caps Lock', // MISSING 98 upArrow: 'Strelica gore',
94 escape: 'Escape', // MISSING 99 rightArrow: 'Desna strelica',
95 pageUp: 'Page Up', // MISSING 100 downArrow: 'Strelica dolje',
96 pageDown: 'Page Down', // MISSING 101 insert: 'Insert',
97 end: 'End', // MISSING 102 leftWindowKey: 'Lijeva Windows tipka',
98 home: 'Home', // MISSING 103 rightWindowKey: 'Desna Windows tipka',
99 leftArrow: 'Left Arrow', // MISSING 104 selectKey: 'Tipka Select',
100 upArrow: 'Up Arrow', // MISSING 105 numpad0: 'Numpad 0',
101 rightArrow: 'Right Arrow', // MISSING 106 numpad1: 'Numpad 1',
102 downArrow: 'Down Arrow', // MISSING 107 numpad2: 'Numpad 2',
103 insert: 'Insert', // MISSING 108 numpad3: 'Numpad 3',
104 'delete': 'Delete', // MISSING 109 numpad4: 'Numpad 4',
105 leftWindowKey: 'Left Windows key', // MISSING 110 numpad5: 'Numpad 5',
106 rightWindowKey: 'Right Windows key', // MISSING 111 numpad6: 'Numpad 6',
107 selectKey: 'Select key', // MISSING 112 numpad7: 'Numpad 7',
108 numpad0: 'Numpad 0', // MISSING 113 numpad8: 'umpad 8',
109 numpad1: 'Numpad 1', // MISSING 114 numpad9: 'Numpad 9',
110 numpad2: 'Numpad 2', // MISSING 115 multiply: 'Množenje',
111 numpad3: 'Numpad 3', // MISSING 116 add: 'Zbrajanje',
112 numpad4: 'Numpad 4', // MISSING 117 subtract: 'Oduzimanje',
113 numpad5: 'Numpad 5', // MISSING 118 decimalPoint: 'Decimalna točka',
114 numpad6: 'Numpad 6', // MISSING 119 divide: 'Dijeljenje',
115 numpad7: 'Numpad 7', // MISSING 120 f1: 'F1',
116 numpad8: 'Numpad 8', // MISSING 121 f2: 'F2',
117 numpad9: 'Numpad 9', // MISSING 122 f3: 'F3',
118 multiply: 'Multiply', // MISSING 123 f4: 'F4',
119 add: 'Add', // MISSING 124 f5: 'F5',
120 subtract: 'Subtract', // MISSING 125 f6: 'F6',
121 decimalPoint: 'Decimal Point', // MISSING 126 f7: 'F7',
122 divide: 'Divide', // MISSING 127 f8: 'F8',
123 f1: 'F1', // MISSING 128 f9: 'F9',
124 f2: 'F2', // MISSING 129 f10: 'F10',
125 f3: 'F3', // MISSING 130 f11: 'F11',
126 f4: 'F4', // MISSING 131 f12: 'F12',
127 f5: 'F5', // MISSING 132 numLock: 'Num Lock',
128 f6: 'F6', // MISSING 133 scrollLock: 'Scroll Lock',
129 f7: 'F7', // MISSING 134 semiColon: 'Točka zarez',
130 f8: 'F8', // MISSING 135 equalSign: 'Jednako',
131 f9: 'F9', // MISSING 136 comma: 'Zarez',
132 f10: 'F10', // MISSING 137 dash: 'Crtica',
133 f11: 'F11', // MISSING 138 period: 'Točka',
134 f12: 'F12', // MISSING 139 forwardSlash: 'Kosa crta',
135 numLock: 'Num Lock', // MISSING 140 graveAccent: 'Akcent',
136 scrollLock: 'Scroll Lock', // MISSING 141 openBracket: 'Otvorena uglata zagrada',
137 semiColon: 'Semicolon', // MISSING 142 backSlash: 'Obrnuta kosa crta',
138 equalSign: 'Equal Sign', // MISSING 143 closeBracket: 'Zatvorena uglata zagrada',
139 comma: 'Comma', // MISSING 144 singleQuote: 'Jednostruki navodnik'
140 dash: 'Dash', // MISSING
141 period: 'Period', // MISSING
142 forwardSlash: 'Forward Slash', // MISSING
143 graveAccent: 'Grave Accent', // MISSING
144 openBracket: 'Open Bracket', // MISSING
145 backSlash: 'Backslash', // MISSING
146 closeBracket: 'Close Bracket', // MISSING
147 singleQuote: 'Single Quote' // MISSING
148} ); 145} );
diff --git a/sources/plugins/a11yhelp/dialogs/lang/hu.js b/sources/plugins/a11yhelp/dialogs/lang/hu.js
index 7342cee..1bae59f 100644
--- a/sources/plugins/a11yhelp/dialogs/lang/hu.js
+++ b/sources/plugins/a11yhelp/dialogs/lang/hu.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -18,7 +18,7 @@ CKEDITOR.plugins.setLang( 'a11yhelp', 'hu', {
18 { 18 {
19 name: 'Szerkesző párbeszéd ablak', 19 name: 'Szerkesző párbeszéd ablak',
20 legend: 20 legend:
21 'Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively.' // MISSING 21 'Párbeszédablakban nyomjon TAB-ot a következő párbeszédmezőhöz ugráshoz, nyomjon SHIFT + TAB-ot az előző mezőhöz ugráshoz, nyomjon ENTER-t a párbeszédablak elfogadásához, nyomjon ESC-et a párbeszédablak elvetéséhez. Azokhoz a párbeszédablakokhoz, amik több fület tartalmaznak, nyomjon ALT + F10-et vagy TAB-ot hogy a fülekre ugorjon. Ezután a TAB-al vagy a JOBB NYÍLLAL a következő fülre ugorhat.'
22 }, 22 },
23 23
24 { 24 {
@@ -79,29 +79,26 @@ CKEDITOR.plugins.setLang( 'a11yhelp', 'hu', {
79 { 79 {
80 name: 'Kisegítő súgó', 80 name: 'Kisegítő súgó',
81 legend: 'Nyomjon ${a11yHelp}' 81 legend: 'Nyomjon ${a11yHelp}'
82 },
83 {
84 name: ' Paste as plain text', // MISSING
85 legend: 'Press ${pastetext}', // MISSING
86 legendEdge: 'Press ${pastetext}, followed by ${paste}' // MISSING
82 } 87 }
83 ] 88 ]
84 } 89 }
85 ], 90 ],
86 backspace: 'Backspace',
87 tab: 'Tab', 91 tab: 'Tab',
88 enter: 'Enter',
89 shift: 'Shift',
90 ctrl: 'Ctrl',
91 alt: 'Alt',
92 pause: 'Pause', 92 pause: 'Pause',
93 capslock: 'Caps Lock', 93 capslock: 'Caps Lock',
94 escape: 'Escape', 94 escape: 'Escape',
95 pageUp: 'Page Up', 95 pageUp: 'Page Up',
96 pageDown: 'Page Down', 96 pageDown: 'Page Down',
97 end: 'End',
98 home: 'Home',
99 leftArrow: 'balra nyíl', 97 leftArrow: 'balra nyíl',
100 upArrow: 'felfelé nyíl', 98 upArrow: 'felfelé nyíl',
101 rightArrow: 'jobbra nyíl', 99 rightArrow: 'jobbra nyíl',
102 downArrow: 'lefelé nyíl', 100 downArrow: 'lefelé nyíl',
103 insert: 'Insert', 101 insert: 'Insert',
104 'delete': 'Delete',
105 leftWindowKey: 'bal Windows-billentyű', 102 leftWindowKey: 'bal Windows-billentyű',
106 rightWindowKey: 'jobb Windows-billentyű', 103 rightWindowKey: 'jobb Windows-billentyű',
107 selectKey: 'Billentyű választása', 104 selectKey: 'Billentyű választása',
diff --git a/sources/plugins/a11yhelp/dialogs/lang/id.js b/sources/plugins/a11yhelp/dialogs/lang/id.js
index 2b1675f..89aeee7 100644
--- a/sources/plugins/a11yhelp/dialogs/lang/id.js
+++ b/sources/plugins/a11yhelp/dialogs/lang/id.js
@@ -1,33 +1,33 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
6CKEDITOR.plugins.setLang( 'a11yhelp', 'id', { 6CKEDITOR.plugins.setLang( 'a11yhelp', 'id', {
7 title: 'Accessibility Instructions', // MISSING 7 title: 'Instruksi Accessibility',
8 contents: 'Bantuan. Tekan ESC untuk menutup dialog ini.', 8 contents: 'Bantuan. Tekan ESC untuk menutup dialog ini.',
9 legend: [ 9 legend: [
10 { 10 {
11 name: 'Umum', 11 name: 'Umum',
12 items: [ 12 items: [
13 { 13 {
14 name: 'Editor Toolbar', // MISSING 14 name: 'Toolbar Editor',
15 legend: 'Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button.' // MISSING 15 legend: 'Tekan ${toolbarFocus} untuk berpindah ke toolbar. Untuk berpindah ke group toolbar selanjutnya dan sebelumnya gunakan TAB dan SHIFT+TAB. Untuk berpindah ke tombol toolbar selanjutnya dan sebelumnya gunakan RIGHT ARROW atau LEFT ARROW. Tekan SPASI atau ENTER untuk mengaktifkan tombol toolbar.'
16 }, 16 },
17 17
18 { 18 {
19 name: 'Editor Dialog', // MISSING 19 name: 'Dialog Editor',
20 legend: 20 legend:
21 'Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively.' // MISSING 21 'Pada jendela dialog, tekan TAB untuk berpindah pada elemen dialog selanjutnya, tekan SHIFT+TAB untuk berpindah pada elemen dialog sebelumnya, tekan ENTER untuk submit dialog, tekan ESC untuk membatalkan dialog. Pada dialog dengan multi tab, daftar tab dapat diakses dengan ALT+F10 ataupun dengan tombol TAB sesuai urutan tab pada dialog. Jika daftar tab aktif terpilih, untuk berpindah tab dapat menggunakan RIGHT dan LEFT ARROW.'
22 }, 22 },
23 23
24 { 24 {
25 name: 'Editor Context Menu', // MISSING 25 name: 'Context Menu Editor',
26 legend: 'Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC.' // MISSING 26 legend: 'Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC.' // MISSING
27 }, 27 },
28 28
29 { 29 {
30 name: 'Editor List Box', // MISSING 30 name: 'List Box Editor',
31 legend: 'Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box.' // MISSING 31 legend: 'Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box.' // MISSING
32 }, 32 },
33 33
@@ -79,29 +79,26 @@ CKEDITOR.plugins.setLang( 'a11yhelp', 'id', {
79 { 79 {
80 name: ' Accessibility Help', // MISSING 80 name: ' Accessibility Help', // MISSING
81 legend: 'Press ${a11yHelp}' // MISSING 81 legend: 'Press ${a11yHelp}' // MISSING
82 },
83 {
84 name: ' Paste as plain text', // MISSING
85 legend: 'Press ${pastetext}', // MISSING
86 legendEdge: 'Press ${pastetext}, followed by ${paste}' // MISSING
82 } 87 }
83 ] 88 ]
84 } 89 }
85 ], 90 ],
86 backspace: 'Backspace', // MISSING
87 tab: 'Tab', // MISSING 91 tab: 'Tab', // MISSING
88 enter: 'Enter', // MISSING
89 shift: 'Shift', // MISSING
90 ctrl: 'Ctrl', // MISSING
91 alt: 'Alt', // MISSING
92 pause: 'Pause', // MISSING 92 pause: 'Pause', // MISSING
93 capslock: 'Caps Lock', // MISSING 93 capslock: 'Caps Lock', // MISSING
94 escape: 'Escape', // MISSING 94 escape: 'Escape', // MISSING
95 pageUp: 'Page Up', // MISSING 95 pageUp: 'Page Up', // MISSING
96 pageDown: 'Page Down', // MISSING 96 pageDown: 'Page Down', // MISSING
97 end: 'End', // MISSING
98 home: 'Home', // MISSING
99 leftArrow: 'Left Arrow', // MISSING 97 leftArrow: 'Left Arrow', // MISSING
100 upArrow: 'Up Arrow', // MISSING 98 upArrow: 'Up Arrow', // MISSING
101 rightArrow: 'Right Arrow', // MISSING 99 rightArrow: 'Right Arrow', // MISSING
102 downArrow: 'Down Arrow', // MISSING 100 downArrow: 'Down Arrow', // MISSING
103 insert: 'Insert', // MISSING 101 insert: 'Insert', // MISSING
104 'delete': 'Delete', // MISSING
105 leftWindowKey: 'Left Windows key', // MISSING 102 leftWindowKey: 'Left Windows key', // MISSING
106 rightWindowKey: 'Right Windows key', // MISSING 103 rightWindowKey: 'Right Windows key', // MISSING
107 selectKey: 'Select key', // MISSING 104 selectKey: 'Select key', // MISSING
diff --git a/sources/plugins/a11yhelp/dialogs/lang/it.js b/sources/plugins/a11yhelp/dialogs/lang/it.js
index bc06683..224bd49 100644
--- a/sources/plugins/a11yhelp/dialogs/lang/it.js
+++ b/sources/plugins/a11yhelp/dialogs/lang/it.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -79,29 +79,26 @@ CKEDITOR.plugins.setLang( 'a11yhelp', 'it', {
79 { 79 {
80 name: ' Aiuto Accessibilità', 80 name: ' Aiuto Accessibilità',
81 legend: 'Premi ${a11yHelp}' 81 legend: 'Premi ${a11yHelp}'
82 },
83 {
84 name: 'Incolla come testo semplice',
85 legend: 'Premi ${pastetext}',
86 legendEdge: 'Premi ${pastetext}, seguito da ${paste}'
82 } 87 }
83 ] 88 ]
84 } 89 }
85 ], 90 ],
86 backspace: 'Backspace',
87 tab: 'Tab', 91 tab: 'Tab',
88 enter: 'Invio',
89 shift: 'Maiusc',
90 ctrl: 'Ctrl',
91 alt: 'Alt',
92 pause: 'Pausa', 92 pause: 'Pausa',
93 capslock: 'Bloc Maiusc', 93 capslock: 'Bloc Maiusc',
94 escape: 'Esc', 94 escape: 'Esc',
95 pageUp: 'Pagina sù', 95 pageUp: 'Pagina sù',
96 pageDown: 'Pagina giù', 96 pageDown: 'Pagina giù',
97 end: 'Fine',
98 home: 'Inizio',
99 leftArrow: 'Freccia sinistra', 97 leftArrow: 'Freccia sinistra',
100 upArrow: 'Freccia su', 98 upArrow: 'Freccia su',
101 rightArrow: 'Freccia destra', 99 rightArrow: 'Freccia destra',
102 downArrow: 'Freccia giù', 100 downArrow: 'Freccia giù',
103 insert: 'Ins', 101 insert: 'Ins',
104 'delete': 'Canc',
105 leftWindowKey: 'Tasto di Windows sinistro', 102 leftWindowKey: 'Tasto di Windows sinistro',
106 rightWindowKey: 'Tasto di Windows destro', 103 rightWindowKey: 'Tasto di Windows destro',
107 selectKey: 'Tasto di selezione', 104 selectKey: 'Tasto di selezione',
diff --git a/sources/plugins/a11yhelp/dialogs/lang/ja.js b/sources/plugins/a11yhelp/dialogs/lang/ja.js
index 95f4e4d..b21d740 100644
--- a/sources/plugins/a11yhelp/dialogs/lang/ja.js
+++ b/sources/plugins/a11yhelp/dialogs/lang/ja.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -65,7 +65,7 @@ CKEDITOR.plugins.setLang( 'a11yhelp', 'ja', {
65 legend: '${link} をクリック' 65 legend: '${link} をクリック'
66 }, 66 },
67 { 67 {
68 name: 'ツールバーを', 68 name: 'ツールバーを',
69 legend: '${toolbarCollapse} をクリック' 69 legend: '${toolbarCollapse} をクリック'
70 }, 70 },
71 { 71 {
@@ -73,35 +73,32 @@ CKEDITOR.plugins.setLang( 'a11yhelp', 'ja', {
73 legend: '${accessPreviousSpace} を押すとカーソルより前にあるカーソルキーで入り込めないスペースへ移動できます。例えば、HRエレメントが2つ接している場合などです。離れた場所へは、複数回キーを押します。' 73 legend: '${accessPreviousSpace} を押すとカーソルより前にあるカーソルキーで入り込めないスペースへ移動できます。例えば、HRエレメントが2つ接している場合などです。離れた場所へは、複数回キーを押します。'
74 }, 74 },
75 { 75 {
76 name: '次のカーソル移動できないイントへ', 76 name: '次のカーソルポイントへ移動する',
77 legend: '${accessNextSpace} を押すとカーソルより後ろにあるカーソルキーで入り込めないスペースへ移動できます。例えば、HRエレメントが2つ接している場合などです。離れた場所へは、複数回キーを押します。' 77 legend: '${accessNextSpace} を押すとカーソルより後ろにあるカーソルキーで入り込めないスペースへ移動できます。例えば、HRエレメントが2つ接している場合などです。離れた場所へは、複数回キーを押します。'
78 }, 78 },
79 { 79 {
80 name: 'ユーザー補助ヘルプ', 80 name: 'ユーザー補助ヘルプ',
81 legend: '${a11yHelp} をクリック' 81 legend: '${a11yHelp} をクリック'
82 },
83 {
84 name: ' Paste as plain text', // MISSING
85 legend: 'Press ${pastetext}', // MISSING
86 legendEdge: 'Press ${pastetext}, followed by ${paste}' // MISSING
82 } 87 }
83 ] 88 ]
84 } 89 }
85 ], 90 ],
86 backspace: 'Backspace',
87 tab: 'Tab', 91 tab: 'Tab',
88 enter: 'Enter',
89 shift: 'Shift',
90 ctrl: 'Ctrl',
91 alt: 'Alt',
92 pause: 'Pause', 92 pause: 'Pause',
93 capslock: 'Caps Lock', 93 capslock: 'Caps Lock',
94 escape: 'Escape', 94 escape: 'Escape',
95 pageUp: 'Page Up', 95 pageUp: 'Page Up',
96 pageDown: 'Page Down', 96 pageDown: 'Page Down',
97 end: 'End',
98 home: 'Home',
99 leftArrow: '左矢印', 97 leftArrow: '左矢印',
100 upArrow: '上矢印', 98 upArrow: '上矢印',
101 rightArrow: '右矢印', 99 rightArrow: '右矢印',
102 downArrow: '下矢印', 100 downArrow: '下矢印',
103 insert: 'Insert', 101 insert: 'Insert',
104 'delete': 'Delete',
105 leftWindowKey: '左Windowキー', 102 leftWindowKey: '左Windowキー',
106 rightWindowKey: '右のWindowキー', 103 rightWindowKey: '右のWindowキー',
107 selectKey: 'Select', 104 selectKey: 'Select',
diff --git a/sources/plugins/a11yhelp/dialogs/lang/km.js b/sources/plugins/a11yhelp/dialogs/lang/km.js
index 723a316..91018f5 100644
--- a/sources/plugins/a11yhelp/dialogs/lang/km.js
+++ b/sources/plugins/a11yhelp/dialogs/lang/km.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -79,29 +79,26 @@ CKEDITOR.plugins.setLang( 'a11yhelp', 'km', {
79 { 79 {
80 name: 'ជំនួយ​ពី​ភាព​ងាយស្រួល', 80 name: 'ជំនួយ​ពី​ភាព​ងាយស្រួល',
81 legend: 'ជួយ ${a11yHelp}' 81 legend: 'ជួយ ${a11yHelp}'
82 },
83 {
84 name: ' Paste as plain text', // MISSING
85 legend: 'Press ${pastetext}', // MISSING
86 legendEdge: 'Press ${pastetext}, followed by ${paste}' // MISSING
82 } 87 }
83 ] 88 ]
84 } 89 }
85 ], 90 ],
86 backspace: 'លុបថយក្រោយ',
87 tab: 'Tab', // MISSING 91 tab: 'Tab', // MISSING
88 enter: 'Enter', // MISSING
89 shift: 'Shift', // MISSING
90 ctrl: 'Ctrl', // MISSING
91 alt: 'Alt', // MISSING
92 pause: 'ផ្អាក', 92 pause: 'ផ្អាក',
93 capslock: 'Caps Lock', // MISSING 93 capslock: 'Caps Lock', // MISSING
94 escape: 'ចាកចេញ', 94 escape: 'ចាកចេញ',
95 pageUp: 'ទំព័រ​លើ', 95 pageUp: 'ទំព័រ​លើ',
96 pageDown: 'ទំព័រ​ក្រោម', 96 pageDown: 'ទំព័រ​ក្រោម',
97 end: 'ចុង',
98 home: 'ផ្ទះ',
99 leftArrow: 'ព្រួញ​ឆ្វេង', 97 leftArrow: 'ព្រួញ​ឆ្វេង',
100 upArrow: 'ព្រួញ​លើ', 98 upArrow: 'ព្រួញ​លើ',
101 rightArrow: 'ព្រួញ​ស្ដាំ', 99 rightArrow: 'ព្រួញ​ស្ដាំ',
102 downArrow: 'ព្រួញ​ក្រោម', 100 downArrow: 'ព្រួញ​ក្រោម',
103 insert: 'បញ្ចូល', 101 insert: 'បញ្ចូល',
104 'delete': 'លុប',
105 leftWindowKey: 'Left Windows key', // MISSING 102 leftWindowKey: 'Left Windows key', // MISSING
106 rightWindowKey: 'Right Windows key', // MISSING 103 rightWindowKey: 'Right Windows key', // MISSING
107 selectKey: 'ជ្រើស​គ្រាប់​ចុច', 104 selectKey: 'ជ្រើស​គ្រាប់​ចុច',
diff --git a/sources/plugins/a11yhelp/dialogs/lang/ko.js b/sources/plugins/a11yhelp/dialogs/lang/ko.js
index 9191e13..78fc71c 100644
--- a/sources/plugins/a11yhelp/dialogs/lang/ko.js
+++ b/sources/plugins/a11yhelp/dialogs/lang/ko.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -79,29 +79,26 @@ CKEDITOR.plugins.setLang( 'a11yhelp', 'ko', {
79 { 79 {
80 name: ' 접근성 도움말', 80 name: ' 접근성 도움말',
81 legend: '${a11yHelp} 누르시오' 81 legend: '${a11yHelp} 누르시오'
82 },
83 {
84 name: ' Paste as plain text', // MISSING
85 legend: 'Press ${pastetext}', // MISSING
86 legendEdge: 'Press ${pastetext}, followed by ${paste}' // MISSING
82 } 87 }
83 ] 88 ]
84 } 89 }
85 ], 90 ],
86 backspace: 'Backspace 키',
87 tab: '탭 키', 91 tab: '탭 키',
88 enter: '엔터 키',
89 shift: '시프트 키',
90 ctrl: '컨트롤 키',
91 alt: '알트 키',
92 pause: '일시정지 키', 92 pause: '일시정지 키',
93 capslock: '캡스 록 키', 93 capslock: '캡스 록 키',
94 escape: '이스케이프 키', 94 escape: '이스케이프 키',
95 pageUp: '페이지 업 키', 95 pageUp: '페이지 업 키',
96 pageDown: '페이지 다운 키', 96 pageDown: '페이지 다운 키',
97 end: '엔드 키',
98 home: '홈 키',
99 leftArrow: '왼쪽 화살표 키', 97 leftArrow: '왼쪽 화살표 키',
100 upArrow: '위쪽 화살표 키', 98 upArrow: '위쪽 화살표 키',
101 rightArrow: '오른쪽 화살표 키', 99 rightArrow: '오른쪽 화살표 키',
102 downArrow: '아래쪽 화살표 키', 100 downArrow: '아래쪽 화살표 키',
103 insert: '인서트 키', 101 insert: '인서트 키',
104 'delete': '삭제 키',
105 leftWindowKey: '왼쪽 윈도우 키', 102 leftWindowKey: '왼쪽 윈도우 키',
106 rightWindowKey: '오른쪽 윈도우 키', 103 rightWindowKey: '오른쪽 윈도우 키',
107 selectKey: '셀렉트 키', 104 selectKey: '셀렉트 키',
diff --git a/sources/plugins/a11yhelp/dialogs/lang/ku.js b/sources/plugins/a11yhelp/dialogs/lang/ku.js
index 93f77dc..d293c65 100644
--- a/sources/plugins/a11yhelp/dialogs/lang/ku.js
+++ b/sources/plugins/a11yhelp/dialogs/lang/ku.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -79,29 +79,26 @@ CKEDITOR.plugins.setLang( 'a11yhelp', 'ku', {
79 { 79 {
80 name: 'دەستپێگەیشتنی یارمەتی', 80 name: 'دەستپێگەیشتنی یارمەتی',
81 legend: 'کلیك ${a11yHelp}' 81 legend: 'کلیك ${a11yHelp}'
82 },
83 {
84 name: ' Paste as plain text', // MISSING
85 legend: 'Press ${pastetext}', // MISSING
86 legendEdge: 'Press ${pastetext}, followed by ${paste}' // MISSING
82 } 87 }
83 ] 88 ]
84 } 89 }
85 ], 90 ],
86 backspace: 'Backspace',
87 tab: 'Tab', 91 tab: 'Tab',
88 enter: 'Enter',
89 shift: 'Shift',
90 ctrl: 'Ctrl',
91 alt: 'Alt',
92 pause: 'Pause', 92 pause: 'Pause',
93 capslock: 'Caps Lock', 93 capslock: 'Caps Lock',
94 escape: 'Escape', 94 escape: 'Escape',
95 pageUp: 'Page Up', 95 pageUp: 'Page Up',
96 pageDown: 'Page Down', 96 pageDown: 'Page Down',
97 end: 'End',
98 home: 'Home',
99 leftArrow: 'Left Arrow', 97 leftArrow: 'Left Arrow',
100 upArrow: 'Up Arrow', 98 upArrow: 'Up Arrow',
101 rightArrow: 'Right Arrow', 99 rightArrow: 'Right Arrow',
102 downArrow: 'Down Arrow', 100 downArrow: 'Down Arrow',
103 insert: 'Insert', 101 insert: 'Insert',
104 'delete': 'Delete',
105 leftWindowKey: 'پەنجەرەی چەپ', 102 leftWindowKey: 'پەنجەرەی چەپ',
106 rightWindowKey: 'پەنجەرەی ڕاست', 103 rightWindowKey: 'پەنجەرەی ڕاست',
107 selectKey: 'Select', 104 selectKey: 'Select',
diff --git a/sources/plugins/a11yhelp/dialogs/lang/lt.js b/sources/plugins/a11yhelp/dialogs/lang/lt.js
index d1a21ac..b4095c4 100644
--- a/sources/plugins/a11yhelp/dialogs/lang/lt.js
+++ b/sources/plugins/a11yhelp/dialogs/lang/lt.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -79,29 +79,26 @@ CKEDITOR.plugins.setLang( 'a11yhelp', 'lt', {
79 { 79 {
80 name: ' Accessibility Help', // MISSING 80 name: ' Accessibility Help', // MISSING
81 legend: 'Press ${a11yHelp}' // MISSING 81 legend: 'Press ${a11yHelp}' // MISSING
82 },
83 {
84 name: ' Paste as plain text', // MISSING
85 legend: 'Press ${pastetext}', // MISSING
86 legendEdge: 'Press ${pastetext}, followed by ${paste}' // MISSING
82 } 87 }
83 ] 88 ]
84 } 89 }
85 ], 90 ],
86 backspace: 'Backspace', // MISSING
87 tab: 'Tab', // MISSING 91 tab: 'Tab', // MISSING
88 enter: 'Enter', // MISSING
89 shift: 'Shift', // MISSING
90 ctrl: 'Ctrl', // MISSING
91 alt: 'Alt', // MISSING
92 pause: 'Pause', // MISSING 92 pause: 'Pause', // MISSING
93 capslock: 'Caps Lock', // MISSING 93 capslock: 'Caps Lock', // MISSING
94 escape: 'Escape', // MISSING 94 escape: 'Escape', // MISSING
95 pageUp: 'Page Up', // MISSING 95 pageUp: 'Page Up', // MISSING
96 pageDown: 'Page Down', // MISSING 96 pageDown: 'Page Down', // MISSING
97 end: 'End', // MISSING
98 home: 'Home', // MISSING
99 leftArrow: 'Left Arrow', // MISSING 97 leftArrow: 'Left Arrow', // MISSING
100 upArrow: 'Up Arrow', // MISSING 98 upArrow: 'Up Arrow', // MISSING
101 rightArrow: 'Right Arrow', // MISSING 99 rightArrow: 'Right Arrow', // MISSING
102 downArrow: 'Down Arrow', // MISSING 100 downArrow: 'Down Arrow', // MISSING
103 insert: 'Insert', // MISSING 101 insert: 'Insert', // MISSING
104 'delete': 'Delete', // MISSING
105 leftWindowKey: 'Left Windows key', // MISSING 102 leftWindowKey: 'Left Windows key', // MISSING
106 rightWindowKey: 'Right Windows key', // MISSING 103 rightWindowKey: 'Right Windows key', // MISSING
107 selectKey: 'Select key', // MISSING 104 selectKey: 'Select key', // MISSING
diff --git a/sources/plugins/a11yhelp/dialogs/lang/lv.js b/sources/plugins/a11yhelp/dialogs/lang/lv.js
index ccd13b8..67d0d6e 100644
--- a/sources/plugins/a11yhelp/dialogs/lang/lv.js
+++ b/sources/plugins/a11yhelp/dialogs/lang/lv.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -79,29 +79,26 @@ CKEDITOR.plugins.setLang( 'a11yhelp', 'lv', {
79 { 79 {
80 name: 'Pieejamības palīdzība', 80 name: 'Pieejamības palīdzība',
81 legend: 'Nospiediet ${a11yHelp}' 81 legend: 'Nospiediet ${a11yHelp}'
82 },
83 {
84 name: ' Paste as plain text', // MISSING
85 legend: 'Press ${pastetext}', // MISSING
86 legendEdge: 'Press ${pastetext}, followed by ${paste}' // MISSING
82 } 87 }
83 ] 88 ]
84 } 89 }
85 ], 90 ],
86 backspace: 'Backspace', // MISSING
87 tab: 'Tab', // MISSING 91 tab: 'Tab', // MISSING
88 enter: 'Enter', // MISSING
89 shift: 'Shift', // MISSING
90 ctrl: 'Ctrl', // MISSING
91 alt: 'Alt', // MISSING
92 pause: 'Pause', // MISSING 92 pause: 'Pause', // MISSING
93 capslock: 'Caps Lock', // MISSING 93 capslock: 'Caps Lock', // MISSING
94 escape: 'Escape', // MISSING 94 escape: 'Escape', // MISSING
95 pageUp: 'Page Up', // MISSING 95 pageUp: 'Page Up', // MISSING
96 pageDown: 'Page Down', // MISSING 96 pageDown: 'Page Down', // MISSING
97 end: 'End', // MISSING
98 home: 'Home', // MISSING
99 leftArrow: 'Left Arrow', // MISSING 97 leftArrow: 'Left Arrow', // MISSING
100 upArrow: 'Up Arrow', // MISSING 98 upArrow: 'Up Arrow', // MISSING
101 rightArrow: 'Right Arrow', // MISSING 99 rightArrow: 'Right Arrow', // MISSING
102 downArrow: 'Down Arrow', // MISSING 100 downArrow: 'Down Arrow', // MISSING
103 insert: 'Insert', // MISSING 101 insert: 'Insert', // MISSING
104 'delete': 'Delete', // MISSING
105 leftWindowKey: 'Left Windows key', // MISSING 102 leftWindowKey: 'Left Windows key', // MISSING
106 rightWindowKey: 'Right Windows key', // MISSING 103 rightWindowKey: 'Right Windows key', // MISSING
107 selectKey: 'Select key', // MISSING 104 selectKey: 'Select key', // MISSING
diff --git a/sources/plugins/a11yhelp/dialogs/lang/mk.js b/sources/plugins/a11yhelp/dialogs/lang/mk.js
index 3dca6f7..bd24e38 100644
--- a/sources/plugins/a11yhelp/dialogs/lang/mk.js
+++ b/sources/plugins/a11yhelp/dialogs/lang/mk.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -79,29 +79,26 @@ CKEDITOR.plugins.setLang( 'a11yhelp', 'mk', {
79 { 79 {
80 name: ' Accessibility Help', // MISSING 80 name: ' Accessibility Help', // MISSING
81 legend: 'Press ${a11yHelp}' // MISSING 81 legend: 'Press ${a11yHelp}' // MISSING
82 },
83 {
84 name: ' Paste as plain text', // MISSING
85 legend: 'Press ${pastetext}', // MISSING
86 legendEdge: 'Press ${pastetext}, followed by ${paste}' // MISSING
82 } 87 }
83 ] 88 ]
84 } 89 }
85 ], 90 ],
86 backspace: 'Backspace',
87 tab: 'Tab', 91 tab: 'Tab',
88 enter: 'Enter',
89 shift: 'Shift',
90 ctrl: 'Ctrl',
91 alt: 'Alt',
92 pause: 'Пауза', 92 pause: 'Пауза',
93 capslock: 'Caps Lock', 93 capslock: 'Caps Lock',
94 escape: 'Escape', 94 escape: 'Escape',
95 pageUp: 'Page Up', 95 pageUp: 'Page Up',
96 pageDown: 'Page Up', 96 pageDown: 'Page Up',
97 end: 'End',
98 home: 'Home',
99 leftArrow: 'Стрелка лево', 97 leftArrow: 'Стрелка лево',
100 upArrow: 'Стрелка горе', 98 upArrow: 'Стрелка горе',
101 rightArrow: 'Стрелка десно', 99 rightArrow: 'Стрелка десно',
102 downArrow: 'Стрелка доле', 100 downArrow: 'Стрелка доле',
103 insert: 'Insert', 101 insert: 'Insert',
104 'delete': 'Delete',
105 leftWindowKey: 'Лево Windows копче', 102 leftWindowKey: 'Лево Windows копче',
106 rightWindowKey: 'Десно Windows копче', 103 rightWindowKey: 'Десно Windows копче',
107 selectKey: 'Select копче', 104 selectKey: 'Select копче',
diff --git a/sources/plugins/a11yhelp/dialogs/lang/mn.js b/sources/plugins/a11yhelp/dialogs/lang/mn.js
index 35ae7a7..3037312 100644
--- a/sources/plugins/a11yhelp/dialogs/lang/mn.js
+++ b/sources/plugins/a11yhelp/dialogs/lang/mn.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -79,29 +79,26 @@ CKEDITOR.plugins.setLang( 'a11yhelp', 'mn', {
79 { 79 {
80 name: ' Accessibility Help', // MISSING 80 name: ' Accessibility Help', // MISSING
81 legend: 'Press ${a11yHelp}' // MISSING 81 legend: 'Press ${a11yHelp}' // MISSING
82 },
83 {
84 name: ' Paste as plain text', // MISSING
85 legend: 'Press ${pastetext}', // MISSING
86 legendEdge: 'Press ${pastetext}, followed by ${paste}' // MISSING
82 } 87 }
83 ] 88 ]
84 } 89 }
85 ], 90 ],
86 backspace: 'Backspace', // MISSING
87 tab: 'Tab', // MISSING 91 tab: 'Tab', // MISSING
88 enter: 'Enter', // MISSING
89 shift: 'Shift', // MISSING
90 ctrl: 'Ctrl', // MISSING
91 alt: 'Alt', // MISSING
92 pause: 'Pause', // MISSING 92 pause: 'Pause', // MISSING
93 capslock: 'Caps Lock', // MISSING 93 capslock: 'Caps Lock', // MISSING
94 escape: 'Escape', // MISSING 94 escape: 'Escape', // MISSING
95 pageUp: 'Page Up', // MISSING 95 pageUp: 'Page Up', // MISSING
96 pageDown: 'Page Down', // MISSING 96 pageDown: 'Page Down', // MISSING
97 end: 'End', // MISSING
98 home: 'Home', // MISSING
99 leftArrow: 'Left Arrow', // MISSING 97 leftArrow: 'Left Arrow', // MISSING
100 upArrow: 'Up Arrow', // MISSING 98 upArrow: 'Up Arrow', // MISSING
101 rightArrow: 'Right Arrow', // MISSING 99 rightArrow: 'Right Arrow', // MISSING
102 downArrow: 'Down Arrow', // MISSING 100 downArrow: 'Down Arrow', // MISSING
103 insert: 'Insert', // MISSING 101 insert: 'Insert', // MISSING
104 'delete': 'Delete', // MISSING
105 leftWindowKey: 'Left Windows key', // MISSING 102 leftWindowKey: 'Left Windows key', // MISSING
106 rightWindowKey: 'Right Windows key', // MISSING 103 rightWindowKey: 'Right Windows key', // MISSING
107 selectKey: 'Select key', // MISSING 104 selectKey: 'Select key', // MISSING
diff --git a/sources/plugins/a11yhelp/dialogs/lang/nb.js b/sources/plugins/a11yhelp/dialogs/lang/nb.js
index f8a8774..dc49357 100644
--- a/sources/plugins/a11yhelp/dialogs/lang/nb.js
+++ b/sources/plugins/a11yhelp/dialogs/lang/nb.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -79,29 +79,26 @@ CKEDITOR.plugins.setLang( 'a11yhelp', 'nb', {
79 { 79 {
80 name: 'Hjelp for tilgjengelighet', 80 name: 'Hjelp for tilgjengelighet',
81 legend: 'Trykk ${a11yHelp}' 81 legend: 'Trykk ${a11yHelp}'
82 },
83 {
84 name: 'Lim inn som ren tekst',
85 legend: 'Trykk ${pastetext}',
86 legendEdge: 'Trykk ${pastetext}, etterfulgt av ${past}'
82 } 87 }
83 ] 88 ]
84 } 89 }
85 ], 90 ],
86 backspace: 'Backspace',
87 tab: 'Tabulator', 91 tab: 'Tabulator',
88 enter: 'Enter',
89 shift: 'Shift',
90 ctrl: 'Ctrl',
91 alt: 'Alt',
92 pause: 'Pause', 92 pause: 'Pause',
93 capslock: 'Caps Lock', 93 capslock: 'Caps Lock',
94 escape: 'Escape', 94 escape: 'Escape',
95 pageUp: 'Page Up', 95 pageUp: 'Page Up',
96 pageDown: 'Page Down', 96 pageDown: 'Page Down',
97 end: 'End',
98 home: 'Home',
99 leftArrow: 'Venstre piltast', 97 leftArrow: 'Venstre piltast',
100 upArrow: 'Opp-piltast', 98 upArrow: 'Opp-piltast',
101 rightArrow: 'Høyre piltast', 99 rightArrow: 'Høyre piltast',
102 downArrow: 'Ned-piltast', 100 downArrow: 'Ned-piltast',
103 insert: 'Insert', 101 insert: 'Insert',
104 'delete': 'Delete',
105 leftWindowKey: 'Venstre Windows-tast', 102 leftWindowKey: 'Venstre Windows-tast',
106 rightWindowKey: 'Høyre Windows-tast', 103 rightWindowKey: 'Høyre Windows-tast',
107 selectKey: 'Velg nøkkel', 104 selectKey: 'Velg nøkkel',
diff --git a/sources/plugins/a11yhelp/dialogs/lang/nl.js b/sources/plugins/a11yhelp/dialogs/lang/nl.js
index a123ba4..4ee8799 100644
--- a/sources/plugins/a11yhelp/dialogs/lang/nl.js
+++ b/sources/plugins/a11yhelp/dialogs/lang/nl.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -18,7 +18,7 @@ CKEDITOR.plugins.setLang( 'a11yhelp', 'nl', {
18 { 18 {
19 name: 'Dialoog tekstverwerker', 19 name: 'Dialoog tekstverwerker',
20 legend: 20 legend:
21 'Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively.' // MISSING 21 'In een dialoogvenster, druk op TAB om te navigeren naar het volgende veld. Druk op SHIFT+TAB om naar het vorige veld te navigeren. Druk op ENTER om het dialoogvenster te verzenden. Druk op ESC om het dialoogvenster te sluiten. Bij dialoogvensters met meerdere tabbladen kan de tabset bereikt worden met ALT+F10 of met TAB als onderdeel van de tabvolgorde in het dialoogvenster. Als de tabset focus heeft, kun je schakalen naar het volgende en vorige tabblad met respectievelijk PIJL RECHTS en PIJL LINKS.'
22 }, 22 },
23 23
24 { 24 {
@@ -79,29 +79,26 @@ CKEDITOR.plugins.setLang( 'a11yhelp', 'nl', {
79 { 79 {
80 name: 'Toegankelijkheidshulp', 80 name: 'Toegankelijkheidshulp',
81 legend: 'Druk op ${a11yHelp}' 81 legend: 'Druk op ${a11yHelp}'
82 },
83 {
84 name: ' Paste as plain text', // MISSING
85 legend: 'Press ${pastetext}', // MISSING
86 legendEdge: 'Press ${pastetext}, followed by ${paste}' // MISSING
82 } 87 }
83 ] 88 ]
84 } 89 }
85 ], 90 ],
86 backspace: 'Backspace',
87 tab: 'Tab', 91 tab: 'Tab',
88 enter: 'Enter',
89 shift: 'Shift',
90 ctrl: 'Ctrl',
91 alt: 'Alt',
92 pause: 'Pause', 92 pause: 'Pause',
93 capslock: 'Caps Lock', 93 capslock: 'Caps Lock',
94 escape: 'Escape', 94 escape: 'Escape',
95 pageUp: 'Page Up', 95 pageUp: 'Page Up',
96 pageDown: 'Page Down', 96 pageDown: 'Page Down',
97 end: 'End',
98 home: 'Home',
99 leftArrow: 'Pijl naar links', 97 leftArrow: 'Pijl naar links',
100 upArrow: 'Pijl omhoog', 98 upArrow: 'Pijl omhoog',
101 rightArrow: 'Pijl naar rechts', 99 rightArrow: 'Pijl naar rechts',
102 downArrow: 'Pijl naar beneden', 100 downArrow: 'Pijl naar beneden',
103 insert: 'Invoegen', 101 insert: 'Invoegen',
104 'delete': 'Verwijderen',
105 leftWindowKey: 'Linker Windows-toets', 102 leftWindowKey: 'Linker Windows-toets',
106 rightWindowKey: 'Rechter Windows-toets', 103 rightWindowKey: 'Rechter Windows-toets',
107 selectKey: 'Selecteer toets', 104 selectKey: 'Selecteer toets',
diff --git a/sources/plugins/a11yhelp/dialogs/lang/no.js b/sources/plugins/a11yhelp/dialogs/lang/no.js
index 4fb1163..e015fc3 100644
--- a/sources/plugins/a11yhelp/dialogs/lang/no.js
+++ b/sources/plugins/a11yhelp/dialogs/lang/no.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -79,29 +79,26 @@ CKEDITOR.plugins.setLang( 'a11yhelp', 'no', {
79 { 79 {
80 name: 'Hjelp for tilgjengelighet', 80 name: 'Hjelp for tilgjengelighet',
81 legend: 'Trykk ${a11yHelp}' 81 legend: 'Trykk ${a11yHelp}'
82 },
83 {
84 name: ' Paste as plain text', // MISSING
85 legend: 'Press ${pastetext}', // MISSING
86 legendEdge: 'Press ${pastetext}, followed by ${paste}' // MISSING
82 } 87 }
83 ] 88 ]
84 } 89 }
85 ], 90 ],
86 backspace: 'Backspace', // MISSING
87 tab: 'Tab', // MISSING 91 tab: 'Tab', // MISSING
88 enter: 'Enter', // MISSING
89 shift: 'Shift', // MISSING
90 ctrl: 'Ctrl', // MISSING
91 alt: 'Alt', // MISSING
92 pause: 'Pause', // MISSING 92 pause: 'Pause', // MISSING
93 capslock: 'Caps Lock', // MISSING 93 capslock: 'Caps Lock', // MISSING
94 escape: 'Escape', // MISSING 94 escape: 'Escape', // MISSING
95 pageUp: 'Page Up', // MISSING 95 pageUp: 'Page Up', // MISSING
96 pageDown: 'Page Down', // MISSING 96 pageDown: 'Page Down', // MISSING
97 end: 'End', // MISSING
98 home: 'Home', // MISSING
99 leftArrow: 'Left Arrow', // MISSING 97 leftArrow: 'Left Arrow', // MISSING
100 upArrow: 'Up Arrow', // MISSING 98 upArrow: 'Up Arrow', // MISSING
101 rightArrow: 'Right Arrow', // MISSING 99 rightArrow: 'Right Arrow', // MISSING
102 downArrow: 'Down Arrow', // MISSING 100 downArrow: 'Down Arrow', // MISSING
103 insert: 'Insert', // MISSING 101 insert: 'Insert', // MISSING
104 'delete': 'Delete', // MISSING
105 leftWindowKey: 'Left Windows key', // MISSING 102 leftWindowKey: 'Left Windows key', // MISSING
106 rightWindowKey: 'Right Windows key', // MISSING 103 rightWindowKey: 'Right Windows key', // MISSING
107 selectKey: 'Select key', // MISSING 104 selectKey: 'Select key', // MISSING
diff --git a/sources/plugins/a11yhelp/dialogs/lang/oc.js b/sources/plugins/a11yhelp/dialogs/lang/oc.js
new file mode 100644
index 0000000..fe313f4
--- /dev/null
+++ b/sources/plugins/a11yhelp/dialogs/lang/oc.js
@@ -0,0 +1,145 @@
1/**
2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */
5
6CKEDITOR.plugins.setLang( 'a11yhelp', 'oc', {
7 title: 'Instruccions d\'accessibilitat',
8 contents: 'Contengut de l\'ajuda. Per tampar aquesta fenèstra, quichatz sus la tòca Escap.',
9 legend: [
10 {
11 name: 'General',
12 items: [
13 {
14 name: 'Barra d\'aisinas de l\'editor',
15 legend: 'Quichar sus ${toolbarFocus} per accedir a la barra d\'aisinas. Se desplaçar cap al groupe seguent o precedent de la barra d\'aisinas amb las tòcas Tab e Maj+Tab. Se desplaçar cap al boton seguent o precedent de la barra d\'aisinas amb las tòcas Sageta dreita e Sageta esquèrra. Quichar sus la barra d\'espaci o la tòca Entrada per activer lo boton de barra d\'aisinas.'
16 },
17
18 {
19 name: 'Fenèstra de l\'editor',
20 legend:
21 'Dins una bóstia de dialòg, quichar sus Tab per passar a l\'element seguent, quichar sus Maj+Tab per passar a l\'element precedent, quichar sus Entrada per validar, quichar sus Escap per anullar. Quand una bóstia de dialòg possedís des onglets, la lista pòt èsser atenta amb Alt+F10 o amb Tab. Dins la lista dels onglets, se desplaçar cap al seguent e lo precedent amb las tòcas Sageta dreita e Sageta esquèrra respectivament.'
22 },
23
24 {
25 name: 'Menú contextual de l\'editor',
26 legend: 'Quichar sus ${contextMenu} o sus la tòca Menú per dobrir lo menú contextual. Se desplaçar ensuite cap a l\'opcion seguenta del menú amb las tòcas Tab o Sageta bas. Se desplaçar cap a l\'opcion precedenta amb las tòcas Maj+Tab o Sageta naut. Quichar sus la barra d\'espaci o la tòca Entrada per seleccionar l\'opcion del menu. Quichar sus la barra d\'espaci, la tòca Entrada o Sageta dreita per dobrir lo sosmenú de l\'opcion seleccionada. Tornar a l\'element de menú parent amb la tòca Escap o Sageta esquèrra. Tampar lo menú contextual amb Escap.'
27 },
28
29 {
30 name: 'Zòna de lista de l\'editor',
31 legend: 'Dins una lista en menú desenrotlant, se desplaçar cap a l\'element seguent de la lista amb las tòcas Tab o Sageta bas. Se desplaçar cap a l\'element precedent de la lista amb las tòcas Maj+Tab o Sageta naut. Quichar sus la barra d\'espaci o sus Entrada per seleccionar l\'opcion dins la lista. Quichar sus Escap per tampar lo menú desenrotlant.'
32 },
33
34 {
35 name: 'Barra del camin d\'elements de l\'editor',
36 legend: 'Quichar sus ${elementsPathFocus} per naviguer cap a la barra del fial d\'Ariana dels elements. Se desplaçar cap al boton de l\'element seguent amb las tòcas Tab o Sageta dreita. Se desplaçar cap al boton precedent amb las tòcas Maj+Tab o Sageta esquèrra. Quichar sus la barra d\'espaci o sus Entrada per seleccionar l\'element dins l\'editor.'
37 }
38 ]
39 },
40 {
41 name: 'Comandas',
42 items: [
43 {
44 name: 'Anullar la comanda',
45 legend: 'Quichar sus ${undo}'
46 },
47 {
48 name: 'Comanda restablir',
49 legend: 'Quichar sus ${redo}'
50 },
51 {
52 name: ' Comanda gras',
53 legend: 'Quichar sus ${bold}'
54 },
55 {
56 name: ' Comanda italica',
57 legend: 'Quichar sus ${italic}'
58 },
59 {
60 name: ' Comanda solinhat',
61 legend: 'Quichar sus ${underline}'
62 },
63 {
64 name: ' Comanda ligam',
65 legend: 'Quichar sus ${link}'
66 },
67 {
68 name: 'Comanda enrotlar la barra d\'aisinas',
69 legend: 'Quichar sus ${toolbarCollapse}'
70 },
71 {
72 name: 'Comanda d\'accès a l\'element seleccionable precedent',
73 legend: 'Quichar sus ${accessNextSpace} per accedir a l\'element seleccionable inategnible lo mai pròche abans lo cursor, per exemple : doas linhas orizontalas adjacentas. Repetir la combinason de tòcas per aténher los elements seleccionables precedents.'
74 },
75 {
76 name: 'Comanda d\'accès a l\'element seleccionable seguent',
77 legend: 'Quichar sus ${accessNextSpace} per accedir a l\'element seleccionable inatenhible lo mai pròche aprèp lo cursor, per exemple : doas linhas orizontalas adjacentas. Repetir la combinason de tòcas per aténher los elements seleccionables seguents.'
78 },
79 {
80 name: ' Ajuda sus l\'accessibilitat',
81 legend: 'Quichar sus ${a11yHelp}'
82 },
83 {
84 name: ' Paste as plain text', // MISSING
85 legend: 'Press ${pastetext}', // MISSING
86 legendEdge: 'Press ${pastetext}, followed by ${paste}' // MISSING
87 }
88 ]
89 }
90 ],
91 tab: 'Tabulacion',
92 pause: 'Pausa',
93 capslock: 'Verr. Maj.',
94 escape: 'Escap',
95 pageUp: 'Pagina superiora',
96 pageDown: 'Pagina seguenta',
97 leftArrow: 'Sageta esquèrra',
98 upArrow: 'Sageta naut',
99 rightArrow: 'Sageta dreita',
100 downArrow: 'Sageta bassa',
101 insert: 'Inser',
102 leftWindowKey: 'Tòca Windows esquèrra',
103 rightWindowKey: 'Tòca Windows dreita',
104 selectKey: 'Tòca Seleccionar',
105 numpad0: '0 del pavat numeric',
106 numpad1: '1 del pavat numeric',
107 numpad2: '2 del pavat numeric',
108 numpad3: '3 del pavat numeric',
109 numpad4: '4 del pavat numeric',
110 numpad5: '5 del pavat numeric',
111 numpad6: '6 del pavat numeric',
112 numpad7: '7 del pavat numeric',
113 numpad8: 'Pavat numeric 8',
114 numpad9: '9 del pavat numeric',
115 multiply: 'Multiplicar',
116 add: 'Plus',
117 subtract: 'Mens',
118 decimalPoint: 'Punt decimal',
119 divide: 'Devesir',
120 f1: 'F1',
121 f2: 'F2',
122 f3: 'F3',
123 f4: 'F4',
124 f5: 'F5',
125 f6: 'F6',
126 f7: 'F7',
127 f8: 'F8',
128 f9: 'F9',
129 f10: 'F10',
130 f11: 'F11',
131 f12: 'F12',
132 numLock: 'Verr. Num.',
133 scrollLock: 'Arrèst desfil.',
134 semiColon: 'Punt-virgula',
135 equalSign: 'Signe egal',
136 comma: 'Virgula',
137 dash: 'Jonhent',
138 period: 'Punt',
139 forwardSlash: 'Barra oblica',
140 graveAccent: 'Accent grèu',
141 openBracket: 'Parentèsi dobèrta',
142 backSlash: 'Barra oblica invèrsa',
143 closeBracket: 'Parentèsi tampanta',
144 singleQuote: 'Apostròfa'
145} );
diff --git a/sources/plugins/a11yhelp/dialogs/lang/pl.js b/sources/plugins/a11yhelp/dialogs/lang/pl.js
index 1e270f5..23801fa 100644
--- a/sources/plugins/a11yhelp/dialogs/lang/pl.js
+++ b/sources/plugins/a11yhelp/dialogs/lang/pl.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -69,39 +69,36 @@ CKEDITOR.plugins.setLang( 'a11yhelp', 'pl', {
69 legend: 'Naciśnij ${toolbarCollapse}' 69 legend: 'Naciśnij ${toolbarCollapse}'
70 }, 70 },
71 { 71 {
72 name: ' Access previous focus space command', // MISSING 72 name: 'Przejdź do poprzedniego miejsca, w którym można ustawić focus',
73 legend: 'Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces.' // MISSING 73 legend: 'Naciśnij ${accessPreviousSpace}, aby przejść do najbliższego niedostępnego miejsca przed kursorem, w którym można ustawić focus. Przykład: dwa przylegające elementy HR. Powtórz ten skrót klawiaturowy, by dotrzeć do kolejnych takich miejsc.'
74 }, 74 },
75 { 75 {
76 name: ' Access next focus space command', // MISSING 76 name: 'Przejdź do naspnego miejsca, w którym mna ustawić focus',
77 legend: 'Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces.' // MISSING 77 legend: 'Naciśnij ${accessNextSpace}, aby przejść do najbliższego niedostępnego miejsca po kursorze, w którym można ustawić focus. Przykład: dwa przylegające elementy HR. Powtórz ten skrót klawiaturowy, by dotrzeć do kolejnych takich miejsc.'
78 }, 78 },
79 { 79 {
80 name: 'Pomoc dotycząca dostępności', 80 name: 'Pomoc dotycząca dostępności',
81 legend: 'Naciśnij ${a11yHelp}' 81 legend: 'Naciśnij ${a11yHelp}'
82 },
83 {
84 name: 'Wklej jako tekst',
85 legend: 'Naciśnij ${pastetext}',
86 legendEdge: 'Naciśnij ${pastetext}, a następnie ${paste}'
82 } 87 }
83 ] 88 ]
84 } 89 }
85 ], 90 ],
86 backspace: 'Backspace',
87 tab: 'Tab', 91 tab: 'Tab',
88 enter: 'Enter',
89 shift: 'Shift',
90 ctrl: 'Ctrl',
91 alt: 'Alt',
92 pause: 'Pause', 92 pause: 'Pause',
93 capslock: 'Caps Lock', 93 capslock: 'Caps Lock',
94 escape: 'Escape', 94 escape: 'Escape',
95 pageUp: 'Page Up', 95 pageUp: 'Page Up',
96 pageDown: 'Page Down', 96 pageDown: 'Page Down',
97 end: 'End',
98 home: 'Home',
99 leftArrow: 'Strzałka w lewo', 97 leftArrow: 'Strzałka w lewo',
100 upArrow: 'Strzałka w górę', 98 upArrow: 'Strzałka w górę',
101 rightArrow: 'Strzałka w prawo', 99 rightArrow: 'Strzałka w prawo',
102 downArrow: 'Strzałka w dół', 100 downArrow: 'Strzałka w dół',
103 insert: 'Insert', 101 insert: 'Insert',
104 'delete': 'Delete',
105 leftWindowKey: 'Lewy klawisz Windows', 102 leftWindowKey: 'Lewy klawisz Windows',
106 rightWindowKey: 'Prawy klawisz Windows', 103 rightWindowKey: 'Prawy klawisz Windows',
107 selectKey: 'Klawisz wyboru', 104 selectKey: 'Klawisz wyboru',
diff --git a/sources/plugins/a11yhelp/dialogs/lang/pt-br.js b/sources/plugins/a11yhelp/dialogs/lang/pt-br.js
index c499a57..b233f2e 100644
--- a/sources/plugins/a11yhelp/dialogs/lang/pt-br.js
+++ b/sources/plugins/a11yhelp/dialogs/lang/pt-br.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -79,29 +79,26 @@ CKEDITOR.plugins.setLang( 'a11yhelp', 'pt-br', {
79 { 79 {
80 name: ' Ajuda de Acessibilidade', 80 name: ' Ajuda de Acessibilidade',
81 legend: 'Pressione ${a11yHelp}' 81 legend: 'Pressione ${a11yHelp}'
82 },
83 {
84 name: ' Paste as plain text', // MISSING
85 legend: 'Press ${pastetext}', // MISSING
86 legendEdge: 'Press ${pastetext}, followed by ${paste}' // MISSING
82 } 87 }
83 ] 88 ]
84 } 89 }
85 ], 90 ],
86 backspace: 'Tecla Backspace',
87 tab: 'Tecla Tab', 91 tab: 'Tecla Tab',
88 enter: 'Enter',
89 shift: 'Shift',
90 ctrl: 'Ctrl',
91 alt: 'Alt',
92 pause: 'Pause', 92 pause: 'Pause',
93 capslock: 'Caps Lock', 93 capslock: 'Caps Lock',
94 escape: 'Escape', 94 escape: 'Escape',
95 pageUp: 'Page Up', 95 pageUp: 'Page Up',
96 pageDown: 'Page Down', 96 pageDown: 'Page Down',
97 end: 'End',
98 home: 'Home',
99 leftArrow: 'Seta à Esquerda', 97 leftArrow: 'Seta à Esquerda',
100 upArrow: 'Seta à Cima', 98 upArrow: 'Seta à Cima',
101 rightArrow: 'Seta à Direita', 99 rightArrow: 'Seta à Direita',
102 downArrow: 'Seta à Baixo', 100 downArrow: 'Seta à Baixo',
103 insert: 'Insert', 101 insert: 'Insert',
104 'delete': 'Delete',
105 leftWindowKey: 'Tecla do Windows Esquerda', 102 leftWindowKey: 'Tecla do Windows Esquerda',
106 rightWindowKey: 'Tecla do Windows Direita', 103 rightWindowKey: 'Tecla do Windows Direita',
107 selectKey: 'Tecla Selecionar', 104 selectKey: 'Tecla Selecionar',
diff --git a/sources/plugins/a11yhelp/dialogs/lang/pt.js b/sources/plugins/a11yhelp/dialogs/lang/pt.js
index 2566f5b..cc02ae2 100644
--- a/sources/plugins/a11yhelp/dialogs/lang/pt.js
+++ b/sources/plugins/a11yhelp/dialogs/lang/pt.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -12,28 +12,28 @@ CKEDITOR.plugins.setLang( 'a11yhelp', 'pt', {
12 items: [ 12 items: [
13 { 13 {
14 name: 'Barra de ferramentas do editor', 14 name: 'Barra de ferramentas do editor',
15 legend: 'Clique em ${toolbarFocus} para navegar para a barra de ferramentas. Vá para o grupo da barra de ferramentas anterior e seguinte com TAB e SHIFT+TAB. Vá para o botão da barra de ferramentas anterior com a SETA DIREITA ou ESQUERDA. Pressione ESPAÇO ou ENTER para ativar o botão da barra de ferramentas.' 15 legend: 'Clique em ${toolbarFocus} para navegar na barra de ferramentas. Para navegar entre o grupo da barra de ferramentas anterior e seguinte use TAB e SHIFT+TAB. Para navegar entre o botão da barra de ferramentas seguinte e anterior use a SETA DIREITA ou SETA ESQUERDA. Carregue em ESPAÇO ou ENTER para ativar o botão da barra de ferramentas.'
16 }, 16 },
17 17
18 { 18 {
19 name: 'Janela do Editor', 19 name: 'Janela do editor',
20 legend: 20 legend:
21 'Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively.' // MISSING 21 'Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively.' // MISSING
22 }, 22 },
23 23
24 { 24 {
25 name: 'Menu de Contexto do Editor', 25 name: 'Menu de contexto do editor',
26 legend: 'Clique em ${contextMenu} ou TECLA APLICAÇÃO para abrir o menu de contexto. Depois vá para a opção do menu seguinte com TAB ou SETA PARA BAIXO. Vá para a opção anterior com SHIFT+TAB ou SETA PARA CIMA. Pressione ESPAÇO ou ENTER para selecionar a opção do menu. Abra o submenu da opção atual com ESPAÇO, ENTER ou SETA DIREITA. GVá para o item do menu parente com ESC ou SETA ESQUERDA. Feche o menu de contexto com ESC.' 26 legend: 'Clique em ${contextMenu} ou TECLA APLICAÇÃO para abrir o menu de contexto. Depois vá para a opção do menu seguinte com TAB ou SETA PARA BAIXO. Vá para a opção anterior com SHIFT+TAB ou SETA PARA CIMA. Pressione ESPAÇO ou ENTER para selecionar a opção do menu. Abra o submenu da opção atual com ESPAÇO, ENTER ou SETA DIREITA. Vá para o item do menu contentor com ESC ou SETA ESQUERDA. Feche o menu de contexto com ESC.'
27 }, 27 },
28 28
29 { 29 {
30 name: 'Editor de caixa em lista', 30 name: 'Editor de caixa em lista',
31 legend: 'Dentro da caixa da lista, vá para o itemda lista seguinte com TAB ou SETA PARA BAIXO. Move Vá parao item da lista anterior com SHIFT+TAB ou SETA PARA BAIXO. Pressione ESPAÇO ou ENTER para selecionar a opção da lista. Pressione ESC para fechar a caisa da lista.' 31 legend: 'Dentro de uma lista, para navegar para o item seguinte da lista use TAB ou SETA PARA BAIXO. Para o item anterior da lista use SHIFT+TAB ou SETA PARA BAIXO. Carregue em ESPAÇO ou ENTER para selecionar a opção lista. Carregue em ESC para fechar a caixa da lista.'
32 }, 32 },
33 33
34 { 34 {
35 name: 'Caminho Barra Elemento Editor', 35 name: 'Editor da barra de caminho dos elementos',
36 legend: 'Clique em ${elementsPathFocus} para navegar para a barra do caminho dos elementos. Vá para o botão do elemento seguinte com TAB ou SETA DIREITA. Vá para o botão anterior com SHIFT+TAB ou SETA ESQUERDA. Pressione ESPAÇO ou ENTER para selecionar o elemento no editor.' 36 legend: 'Clique em ${elementsPathFocus} para navegar na barra de caminho dos elementos. Para o botão do elemento seguinte use TAB ou SETA DIREITA. para o botão anterior use SHIFT+TAB ou SETA ESQUERDA. Carregue em ESPAÇO ou ENTER para selecionar o elemento no editor.'
37 } 37 }
38 ] 38 ]
39 }, 39 },
@@ -41,35 +41,35 @@ CKEDITOR.plugins.setLang( 'a11yhelp', 'pt', {
41 name: 'Comandos', 41 name: 'Comandos',
42 items: [ 42 items: [
43 { 43 {
44 name: 'Comando de Anular', 44 name: 'Comando de anular',
45 legend: 'Carregar ${undo}' 45 legend: 'Carregar ${undo}'
46 }, 46 },
47 { 47 {
48 name: 'Comando de Refazer', 48 name: 'Comando de refazer',
49 legend: 'Pressione ${redo}' 49 legend: 'Clique ${redo}'
50 }, 50 },
51 { 51 {
52 name: 'Comando de Negrito', 52 name: 'Comando de negrito',
53 legend: 'Pressione ${bold}' 53 legend: 'Pressione ${bold}'
54 }, 54 },
55 { 55 {
56 name: 'Comando de Itálico', 56 name: 'Comando de itálico',
57 legend: 'Pressione ${italic}' 57 legend: 'Pressione ${italic}'
58 }, 58 },
59 { 59 {
60 name: 'Comando de Sublinhado', 60 name: 'Comando de sublinhado',
61 legend: 'Pressione ${underline}' 61 legend: 'Pressione ${underline}'
62 }, 62 },
63 { 63 {
64 name: 'Comando de Hiperligação', 64 name: 'Comando de hiperligação',
65 legend: 'Pressione ${link}' 65 legend: 'Pressione ${link}'
66 }, 66 },
67 { 67 {
68 name: 'Comando de Ocultar Barra de Ferramentas', 68 name: 'Comando de ocultar barra de ferramentas',
69 legend: 'Pressione ${toolbarCollapse}' 69 legend: 'Pressione ${toolbarCollapse}'
70 }, 70 },
71 { 71 {
72 name: 'Acesso comando do espaço focus anterior', 72 name: 'Aceder ao comando espaço de foco anterior',
73 legend: 'Clique em ${accessPreviousSpace} para aceder ao espaço do focos inalcançável mais perto antes do sinal de omissão, por exemplo: dois elementos HR adjacentes. Repetir a combinação da chave para alcançar os espaços dos focos distantes.' 73 legend: 'Clique em ${accessPreviousSpace} para aceder ao espaço do focos inalcançável mais perto antes do sinal de omissão, por exemplo: dois elementos HR adjacentes. Repetir a combinação da chave para alcançar os espaços dos focos distantes.'
74 }, 74 },
75 { 75 {
@@ -79,32 +79,29 @@ CKEDITOR.plugins.setLang( 'a11yhelp', 'pt', {
79 { 79 {
80 name: 'Ajuda a acessibilidade', 80 name: 'Ajuda a acessibilidade',
81 legend: 'Pressione ${a11yHelp}' 81 legend: 'Pressione ${a11yHelp}'
82 },
83 {
84 name: ' Paste as plain text', // MISSING
85 legend: 'Press ${pastetext}', // MISSING
86 legendEdge: 'Press ${pastetext}, followed by ${paste}' // MISSING
82 } 87 }
83 ] 88 ]
84 } 89 }
85 ], 90 ],
86 backspace: 'Backspace', // MISSING 91 tab: 'Separador',
87 tab: 'Tab', // MISSING
88 enter: 'Enter', // MISSING
89 shift: 'Shift',
90 ctrl: 'Ctrl',
91 alt: 'Alt',
92 pause: 'Pausa', 92 pause: 'Pausa',
93 capslock: 'Maiúsculas', 93 capslock: 'Maiúsculas',
94 escape: 'Esc', 94 escape: 'Esc',
95 pageUp: 'Page Up', // MISSING 95 pageUp: 'Subir página',
96 pageDown: 'Page Down', // MISSING 96 pageDown: 'Descer página',
97 end: 'Fim',
98 home: 'Entrada',
99 leftArrow: 'Seta esquerda', 97 leftArrow: 'Seta esquerda',
100 upArrow: 'Seta para cima', 98 upArrow: 'Seta para cima',
101 rightArrow: 'Seta direita', 99 rightArrow: 'Seta direita',
102 downArrow: 'Seta para baixo', 100 downArrow: 'Seta para baixo',
103 insert: 'Inserir', 101 insert: 'Inserir',
104 'delete': 'Eliminar', 102 leftWindowKey: 'Tecla esquerda Windows',
105 leftWindowKey: 'Left Windows key', // MISSING 103 rightWindowKey: 'Tecla direita Windows',
106 rightWindowKey: 'Right Windows key', // MISSING 104 selectKey: 'Selecionar tecla',
107 selectKey: 'Select key', // MISSING
108 numpad0: 'Numpad 0', // MISSING 105 numpad0: 'Numpad 0', // MISSING
109 numpad1: 'Numpad 1', // MISSING 106 numpad1: 'Numpad 1', // MISSING
110 numpad2: 'Numpad 2', // MISSING 107 numpad2: 'Numpad 2', // MISSING
@@ -118,8 +115,8 @@ CKEDITOR.plugins.setLang( 'a11yhelp', 'pt', {
118 multiply: 'Multiplicar', 115 multiply: 'Multiplicar',
119 add: 'Adicionar', 116 add: 'Adicionar',
120 subtract: 'Subtrair', 117 subtract: 'Subtrair',
121 decimalPoint: 'Decimal Point', // MISSING 118 decimalPoint: 'Ponto decimal',
122 divide: 'Divide', // MISSING 119 divide: 'Separar',
123 f1: 'F1', 120 f1: 'F1',
124 f2: 'F2', 121 f2: 'F2',
125 f3: 'F3', 122 f3: 'F3',
@@ -134,15 +131,15 @@ CKEDITOR.plugins.setLang( 'a11yhelp', 'pt', {
134 f12: 'F12', 131 f12: 'F12',
135 numLock: 'Num Lock', // MISSING 132 numLock: 'Num Lock', // MISSING
136 scrollLock: 'Scroll Lock', // MISSING 133 scrollLock: 'Scroll Lock', // MISSING
137 semiColon: 'Semicolon', // MISSING 134 semiColon: 'Ponto e vírgula',
138 equalSign: 'Equal Sign', // MISSING 135 equalSign: 'Sinald e igual',
139 comma: 'Vírgula', 136 comma: 'Vírgula',
140 dash: 'Dash', // MISSING 137 dash: 'Cardinal',
141 period: 'Period', // MISSING 138 period: 'Ponto',
142 forwardSlash: 'Forward Slash', // MISSING 139 forwardSlash: 'Forward Slash', // MISSING
143 graveAccent: 'Acento grave', 140 graveAccent: 'Acento grave',
144 openBracket: 'Open Bracket', // MISSING 141 openBracket: 'Open Bracket', // MISSING
145 backSlash: 'Backslash', // MISSING 142 backSlash: 'Backslash', // MISSING
146 closeBracket: 'Close Bracket', // MISSING 143 closeBracket: 'Close Bracket', // MISSING
147 singleQuote: 'Single Quote' // MISSING 144 singleQuote: 'Plica'
148} ); 145} );
diff --git a/sources/plugins/a11yhelp/dialogs/lang/ro.js b/sources/plugins/a11yhelp/dialogs/lang/ro.js
index c787177..11177ba 100644
--- a/sources/plugins/a11yhelp/dialogs/lang/ro.js
+++ b/sources/plugins/a11yhelp/dialogs/lang/ro.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -79,29 +79,26 @@ CKEDITOR.plugins.setLang( 'a11yhelp', 'ro', {
79 { 79 {
80 name: ' Accessibility Help', // MISSING 80 name: ' Accessibility Help', // MISSING
81 legend: 'Press ${a11yHelp}' // MISSING 81 legend: 'Press ${a11yHelp}' // MISSING
82 },
83 {
84 name: ' Paste as plain text', // MISSING
85 legend: 'Press ${pastetext}', // MISSING
86 legendEdge: 'Press ${pastetext}, followed by ${paste}' // MISSING
82 } 87 }
83 ] 88 ]
84 } 89 }
85 ], 90 ],
86 backspace: 'Backspace', // MISSING
87 tab: 'Tab', // MISSING 91 tab: 'Tab', // MISSING
88 enter: 'Enter', // MISSING
89 shift: 'Shift', // MISSING
90 ctrl: 'Ctrl', // MISSING
91 alt: 'Alt', // MISSING
92 pause: 'Pause', // MISSING 92 pause: 'Pause', // MISSING
93 capslock: 'Caps Lock', // MISSING 93 capslock: 'Caps Lock', // MISSING
94 escape: 'Escape', // MISSING 94 escape: 'Escape', // MISSING
95 pageUp: 'Page Up', // MISSING 95 pageUp: 'Page Up', // MISSING
96 pageDown: 'Page Down', // MISSING 96 pageDown: 'Page Down', // MISSING
97 end: 'End', // MISSING
98 home: 'Home', // MISSING
99 leftArrow: 'Left Arrow', // MISSING 97 leftArrow: 'Left Arrow', // MISSING
100 upArrow: 'Up Arrow', // MISSING 98 upArrow: 'Up Arrow', // MISSING
101 rightArrow: 'Right Arrow', // MISSING 99 rightArrow: 'Right Arrow', // MISSING
102 downArrow: 'Down Arrow', // MISSING 100 downArrow: 'Down Arrow', // MISSING
103 insert: 'Insert', // MISSING 101 insert: 'Insert', // MISSING
104 'delete': 'Delete', // MISSING
105 leftWindowKey: 'Left Windows key', // MISSING 102 leftWindowKey: 'Left Windows key', // MISSING
106 rightWindowKey: 'Right Windows key', // MISSING 103 rightWindowKey: 'Right Windows key', // MISSING
107 selectKey: 'Select key', // MISSING 104 selectKey: 'Select key', // MISSING
diff --git a/sources/plugins/a11yhelp/dialogs/lang/ru.js b/sources/plugins/a11yhelp/dialogs/lang/ru.js
index 23bb13d..852a17f 100644
--- a/sources/plugins/a11yhelp/dialogs/lang/ru.js
+++ b/sources/plugins/a11yhelp/dialogs/lang/ru.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -79,29 +79,26 @@ CKEDITOR.plugins.setLang( 'a11yhelp', 'ru', {
79 { 79 {
80 name: 'Справка по горячим клавишам', 80 name: 'Справка по горячим клавишам',
81 legend: 'Нажмите ${a11yHelp}' 81 legend: 'Нажмите ${a11yHelp}'
82 },
83 {
84 name: 'Вставить только текст',
85 legend: 'Нажмите ${pastetext}',
86 legendEdge: 'Press ${pastetext}, followed by ${paste}' // MISSING
82 } 87 }
83 ] 88 ]
84 } 89 }
85 ], 90 ],
86 backspace: 'Backspace',
87 tab: 'Tab', 91 tab: 'Tab',
88 enter: 'Enter',
89 shift: 'Shift',
90 ctrl: 'Ctrl',
91 alt: 'Alt',
92 pause: 'Pause', 92 pause: 'Pause',
93 capslock: 'Caps Lock', 93 capslock: 'Caps Lock',
94 escape: 'Esc', 94 escape: 'Esc',
95 pageUp: 'Page Up', 95 pageUp: 'Page Up',
96 pageDown: 'Page Down', 96 pageDown: 'Page Down',
97 end: 'End',
98 home: 'Home',
99 leftArrow: 'Стрелка влево', 97 leftArrow: 'Стрелка влево',
100 upArrow: 'Стрелка вверх', 98 upArrow: 'Стрелка вверх',
101 rightArrow: 'Стрелка вправо', 99 rightArrow: 'Стрелка вправо',
102 downArrow: 'Стрелка вниз', 100 downArrow: 'Стрелка вниз',
103 insert: 'Insert', 101 insert: 'Insert',
104 'delete': 'Delete',
105 leftWindowKey: 'Левая клавиша Windows', 102 leftWindowKey: 'Левая клавиша Windows',
106 rightWindowKey: 'Правая клавиша Windows', 103 rightWindowKey: 'Правая клавиша Windows',
107 selectKey: 'Выбрать', 104 selectKey: 'Выбрать',
diff --git a/sources/plugins/a11yhelp/dialogs/lang/si.js b/sources/plugins/a11yhelp/dialogs/lang/si.js
index e855192..ce72579 100644
--- a/sources/plugins/a11yhelp/dialogs/lang/si.js
+++ b/sources/plugins/a11yhelp/dialogs/lang/si.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -79,29 +79,26 @@ CKEDITOR.plugins.setLang( 'a11yhelp', 'si', {
79 { 79 {
80 name: 'ප්‍රවේශ ', 80 name: 'ප්‍රවේශ ',
81 legend: 'ඔබන්න ${a11y }' 81 legend: 'ඔබන්න ${a11y }'
82 },
83 {
84 name: ' Paste as plain text', // MISSING
85 legend: 'Press ${pastetext}', // MISSING
86 legendEdge: 'Press ${pastetext}, followed by ${paste}' // MISSING
82 } 87 }
83 ] 88 ]
84 } 89 }
85 ], 90 ],
86 backspace: 'Backspace', // MISSING
87 tab: 'Tab', // MISSING 91 tab: 'Tab', // MISSING
88 enter: 'Enter', // MISSING
89 shift: 'Shift', // MISSING
90 ctrl: 'Ctrl', // MISSING
91 alt: 'Alt', // MISSING
92 pause: 'Pause', // MISSING 92 pause: 'Pause', // MISSING
93 capslock: 'Caps Lock', // MISSING 93 capslock: 'Caps Lock', // MISSING
94 escape: 'Escape', // MISSING 94 escape: 'Escape', // MISSING
95 pageUp: 'Page Up', // MISSING 95 pageUp: 'Page Up', // MISSING
96 pageDown: 'Page Down', // MISSING 96 pageDown: 'Page Down', // MISSING
97 end: 'End', // MISSING
98 home: 'Home', // MISSING
99 leftArrow: 'Left Arrow', // MISSING 97 leftArrow: 'Left Arrow', // MISSING
100 upArrow: 'Up Arrow', // MISSING 98 upArrow: 'Up Arrow', // MISSING
101 rightArrow: 'Right Arrow', // MISSING 99 rightArrow: 'Right Arrow', // MISSING
102 downArrow: 'Down Arrow', // MISSING 100 downArrow: 'Down Arrow', // MISSING
103 insert: 'Insert', // MISSING 101 insert: 'Insert', // MISSING
104 'delete': 'Delete', // MISSING
105 leftWindowKey: 'Left Windows key', // MISSING 102 leftWindowKey: 'Left Windows key', // MISSING
106 rightWindowKey: 'Right Windows key', // MISSING 103 rightWindowKey: 'Right Windows key', // MISSING
107 selectKey: 'Select key', // MISSING 104 selectKey: 'Select key', // MISSING
diff --git a/sources/plugins/a11yhelp/dialogs/lang/sk.js b/sources/plugins/a11yhelp/dialogs/lang/sk.js
index ee91403..3800f14 100644
--- a/sources/plugins/a11yhelp/dialogs/lang/sk.js
+++ b/sources/plugins/a11yhelp/dialogs/lang/sk.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -18,7 +18,7 @@ CKEDITOR.plugins.setLang( 'a11yhelp', 'sk', {
18 { 18 {
19 name: 'Editorový dialóg', 19 name: 'Editorový dialóg',
20 legend: 20 legend:
21 'Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively.' // MISSING 21 'V dialógovom okne stlačte TAB pre presun na ďalší prvok, SHIFT+TAB pre presun na predchádzajúci prvok, ENTER pre odoslanie, ESC pre zrušenie. Keď má dialógové okno viacero kariet, zoznam kariet dosiahnete buď stlačením ALT+F10 alebo s TAB v príslušnom poradí kariet. So zameraným zoznamom kariet sa pohybujte k ďalšej alebo predchádzajúcej karte cez PRAVÚ a ĽAVÚ ŠÍPKU.'
22 }, 22 },
23 23
24 { 24 {
@@ -79,29 +79,26 @@ CKEDITOR.plugins.setLang( 'a11yhelp', 'sk', {
79 { 79 {
80 name: 'Pomoc prístupnosti', 80 name: 'Pomoc prístupnosti',
81 legend: 'Stlačte ${a11yHelp}' 81 legend: 'Stlačte ${a11yHelp}'
82 },
83 {
84 name: ' Paste as plain text', // MISSING
85 legend: 'Press ${pastetext}', // MISSING
86 legendEdge: 'Press ${pastetext}, followed by ${paste}' // MISSING
82 } 87 }
83 ] 88 ]
84 } 89 }
85 ], 90 ],
86 backspace: 'Backspace',
87 tab: 'Tab', 91 tab: 'Tab',
88 enter: 'Enter',
89 shift: 'Shift',
90 ctrl: 'Ctrl',
91 alt: 'Alt',
92 pause: 'Pause', 92 pause: 'Pause',
93 capslock: 'Caps Lock', 93 capslock: 'Caps Lock',
94 escape: 'Escape', 94 escape: 'Escape',
95 pageUp: 'Stránka hore', 95 pageUp: 'Stránka hore',
96 pageDown: 'Stránka dole', 96 pageDown: 'Stránka dole',
97 end: 'End',
98 home: 'Home',
99 leftArrow: 'Šípka naľavo', 97 leftArrow: 'Šípka naľavo',
100 upArrow: 'Šípka hore', 98 upArrow: 'Šípka hore',
101 rightArrow: 'Šípka napravo', 99 rightArrow: 'Šípka napravo',
102 downArrow: 'Šípka dole', 100 downArrow: 'Šípka dole',
103 insert: 'Insert', 101 insert: 'Insert',
104 'delete': 'Delete',
105 leftWindowKey: 'Ľavé Windows tlačidlo', 102 leftWindowKey: 'Ľavé Windows tlačidlo',
106 rightWindowKey: 'Pravé Windows tlačidlo', 103 rightWindowKey: 'Pravé Windows tlačidlo',
107 selectKey: 'Tlačidlo Select', 104 selectKey: 'Tlačidlo Select',
diff --git a/sources/plugins/a11yhelp/dialogs/lang/sl.js b/sources/plugins/a11yhelp/dialogs/lang/sl.js
index 7cb12f6..779b410 100644
--- a/sources/plugins/a11yhelp/dialogs/lang/sl.js
+++ b/sources/plugins/a11yhelp/dialogs/lang/sl.js
@@ -1,17 +1,17 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
6CKEDITOR.plugins.setLang( 'a11yhelp', 'sl', { 6CKEDITOR.plugins.setLang( 'a11yhelp', 'sl', {
7 title: 'Navodila Dostopnosti', 7 title: 'Navodila za dostopnost',
8 contents: 'Vsebina Pomoči. Če želite zapreti to pogovorno okno pritisnite ESC.', 8 contents: 'Vsebina pomoči. Če želite zapreti pogovorno okno, pritisnite ESC.',
9 legend: [ 9 legend: [
10 { 10 {
11 name: 'Splošno', 11 name: 'Splošno',
12 items: [ 12 items: [
13 { 13 {
14 name: 'Urejevalna Orodna Vrstica', 14 name: 'Orodna vrstica urejevalnika',
15 legend: 'Pritisnite ${toolbarFocus} za pomik v orodno vrstico. Z TAB in SHIFT+TAB se pomikate na naslednjo in prejšnjo skupino orodne vrstice. Z DESNO PUŠČICO ali LEVO PUŠČICO se pomikate na naslednji in prejšnji gumb orodne vrstice. Pritisnite SPACE ali ENTER, da aktivirate gumb orodne vrstice.' 15 legend: 'Pritisnite ${toolbarFocus} za pomik v orodno vrstico. Z TAB in SHIFT+TAB se pomikate na naslednjo in prejšnjo skupino orodne vrstice. Z DESNO PUŠČICO ali LEVO PUŠČICO se pomikate na naslednji in prejšnji gumb orodne vrstice. Pritisnite SPACE ali ENTER, da aktivirate gumb orodne vrstice.'
16 }, 16 },
17 17
@@ -22,7 +22,7 @@ CKEDITOR.plugins.setLang( 'a11yhelp', 'sl', {
22 }, 22 },
23 23
24 { 24 {
25 name: 'Urejevalni Kontekstni Meni', 25 name: 'Kontekstni meni urejevalnika',
26 legend: 'Pritisnite ${contextMenu} ali APPLICATION KEY, da odprete kontekstni meni. Nato se premaknite na naslednjo možnost menija s tipko TAB ali PUŠČICA DOL. Premakniti se na prejšnjo možnost z SHIFT + TAB ali PUŠČICA GOR. Pritisnite SPACE ali ENTER za izbiro možnosti menija. Odprite podmeni trenutne možnosti menija s tipko SPACE ali ENTER ali DESNA PUŠČICA. Vrnite se na matični element menija s tipko ESC ali LEVA PUŠČICA. Zaprite kontekstni meni z ESC.' 26 legend: 'Pritisnite ${contextMenu} ali APPLICATION KEY, da odprete kontekstni meni. Nato se premaknite na naslednjo možnost menija s tipko TAB ali PUŠČICA DOL. Premakniti se na prejšnjo možnost z SHIFT + TAB ali PUŠČICA GOR. Pritisnite SPACE ali ENTER za izbiro možnosti menija. Odprite podmeni trenutne možnosti menija s tipko SPACE ali ENTER ali DESNA PUŠČICA. Vrnite se na matični element menija s tipko ESC ali LEVA PUŠČICA. Zaprite kontekstni meni z ESC.'
27 }, 27 },
28 28
@@ -77,33 +77,30 @@ CKEDITOR.plugins.setLang( 'a11yhelp', 'sl', {
77 legend: 'Pritisnite ${accessNextSpace} za dostop do najbližjega nedosegljivega osredotočenega prostora po strešici, npr.: dva sosednja HR elementa. Ponovite kombinacijo tipk, da dosežete oddaljene osredotočene prostore.' 77 legend: 'Pritisnite ${accessNextSpace} za dostop do najbližjega nedosegljivega osredotočenega prostora po strešici, npr.: dva sosednja HR elementa. Ponovite kombinacijo tipk, da dosežete oddaljene osredotočene prostore.'
78 }, 78 },
79 { 79 {
80 name: 'Pomoč Dostopnosti', 80 name: 'Pomoč dostopnosti',
81 legend: 'Pritisnite ${a11yHelp}' 81 legend: 'Pritisnite ${a11yHelp}'
82 },
83 {
84 name: ' Paste as plain text', // MISSING
85 legend: 'Press ${pastetext}', // MISSING
86 legendEdge: 'Press ${pastetext}, followed by ${paste}' // MISSING
82 } 87 }
83 ] 88 ]
84 } 89 }
85 ], 90 ],
86 backspace: 'Backspace',
87 tab: 'Tab', 91 tab: 'Tab',
88 enter: 'Enter',
89 shift: 'Shift',
90 ctrl: 'Ctrl',
91 alt: 'Alt',
92 pause: 'Pause', 92 pause: 'Pause',
93 capslock: 'Caps Lock', 93 capslock: 'Caps Lock',
94 escape: 'Escape', 94 escape: 'Escape',
95 pageUp: 'Page Up', 95 pageUp: 'Page Up',
96 pageDown: 'Page Down', 96 pageDown: 'Page Down',
97 end: 'End', 97 leftArrow: 'Puščica levo',
98 home: 'Home', 98 upArrow: 'Puščica gor',
99 leftArrow: 'Levo puščica', 99 rightArrow: 'Puščica desno',
100 upArrow: 'Gor puščica', 100 downArrow: 'Puščica dol',
101 rightArrow: 'Desno puščica',
102 downArrow: 'Dol puščica',
103 insert: 'Insert', 101 insert: 'Insert',
104 'delete': 'Delete', 102 leftWindowKey: 'Leva tipka Windows',
105 leftWindowKey: 'Leva Windows tipka', 103 rightWindowKey: 'Desna tipka Windows',
106 rightWindowKey: 'Desna Windows tipka',
107 selectKey: 'Select tipka', 104 selectKey: 'Select tipka',
108 numpad0: 'Numpad 0', 105 numpad0: 'Numpad 0',
109 numpad1: 'Numpad 1', 106 numpad1: 'Numpad 1',
@@ -135,7 +132,7 @@ CKEDITOR.plugins.setLang( 'a11yhelp', 'sl', {
135 numLock: 'Num Lock', 132 numLock: 'Num Lock',
136 scrollLock: 'Scroll Lock', 133 scrollLock: 'Scroll Lock',
137 semiColon: 'Podpičje', 134 semiColon: 'Podpičje',
138 equalSign: 'enačaj', 135 equalSign: 'Enačaj',
139 comma: 'Vejica', 136 comma: 'Vejica',
140 dash: 'Vezaj', 137 dash: 'Vezaj',
141 period: 'Pika', 138 period: 'Pika',
@@ -143,6 +140,6 @@ CKEDITOR.plugins.setLang( 'a11yhelp', 'sl', {
143 graveAccent: 'Krativec', 140 graveAccent: 'Krativec',
144 openBracket: 'Oklepaj', 141 openBracket: 'Oklepaj',
145 backSlash: 'Leva poševnica', 142 backSlash: 'Leva poševnica',
146 closeBracket: 'Oklepaj', 143 closeBracket: 'Zaklepaj',
147 singleQuote: 'Opuščaj' 144 singleQuote: 'Opuščaj'
148} ); 145} );
diff --git a/sources/plugins/a11yhelp/dialogs/lang/sq.js b/sources/plugins/a11yhelp/dialogs/lang/sq.js
index c308122..6283fee 100644
--- a/sources/plugins/a11yhelp/dialogs/lang/sq.js
+++ b/sources/plugins/a11yhelp/dialogs/lang/sq.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -79,29 +79,26 @@ CKEDITOR.plugins.setLang( 'a11yhelp', 'sq', {
79 { 79 {
80 name: 'Ndihmë Qasjeje', 80 name: 'Ndihmë Qasjeje',
81 legend: 'Shtyp ${a11yHelp}' 81 legend: 'Shtyp ${a11yHelp}'
82 },
83 {
84 name: ' Paste as plain text', // MISSING
85 legend: 'Press ${pastetext}', // MISSING
86 legendEdge: 'Press ${pastetext}, followed by ${paste}' // MISSING
82 } 87 }
83 ] 88 ]
84 } 89 }
85 ], 90 ],
86 backspace: 'Prapa',
87 tab: 'Fletë', 91 tab: 'Fletë',
88 enter: 'Enter',
89 shift: 'Shift',
90 ctrl: 'Ctrl',
91 alt: 'Alt',
92 pause: 'Pause', 92 pause: 'Pause',
93 capslock: 'Caps Lock', 93 capslock: 'Caps Lock',
94 escape: 'Escape', 94 escape: 'Escape',
95 pageUp: 'Page Up', 95 pageUp: 'Page Up',
96 pageDown: 'Page Down', 96 pageDown: 'Page Down',
97 end: 'End',
98 home: 'Home',
99 leftArrow: 'Shenja majtas', 97 leftArrow: 'Shenja majtas',
100 upArrow: 'Shenja sipër', 98 upArrow: 'Shenja sipër',
101 rightArrow: 'Shenja djathtas', 99 rightArrow: 'Shenja djathtas',
102 downArrow: 'Shenja poshtë', 100 downArrow: 'Shenja poshtë',
103 insert: 'Shto', 101 insert: 'Shto',
104 'delete': 'Grise',
105 leftWindowKey: 'Left Windows key', // MISSING 102 leftWindowKey: 'Left Windows key', // MISSING
106 rightWindowKey: 'Right Windows key', // MISSING 103 rightWindowKey: 'Right Windows key', // MISSING
107 selectKey: 'Select key', // MISSING 104 selectKey: 'Select key', // MISSING
diff --git a/sources/plugins/a11yhelp/dialogs/lang/sr-latn.js b/sources/plugins/a11yhelp/dialogs/lang/sr-latn.js
index b70e635..f8caf01 100644
--- a/sources/plugins/a11yhelp/dialogs/lang/sr-latn.js
+++ b/sources/plugins/a11yhelp/dialogs/lang/sr-latn.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -79,29 +79,26 @@ CKEDITOR.plugins.setLang( 'a11yhelp', 'sr-latn', {
79 { 79 {
80 name: ' Accessibility Help', // MISSING 80 name: ' Accessibility Help', // MISSING
81 legend: 'Press ${a11yHelp}' // MISSING 81 legend: 'Press ${a11yHelp}' // MISSING
82 },
83 {
84 name: ' Paste as plain text', // MISSING
85 legend: 'Press ${pastetext}', // MISSING
86 legendEdge: 'Press ${pastetext}, followed by ${paste}' // MISSING
82 } 87 }
83 ] 88 ]
84 } 89 }
85 ], 90 ],
86 backspace: 'Backspace', // MISSING
87 tab: 'Tab', // MISSING 91 tab: 'Tab', // MISSING
88 enter: 'Enter', // MISSING
89 shift: 'Shift', // MISSING
90 ctrl: 'Ctrl', // MISSING
91 alt: 'Alt', // MISSING
92 pause: 'Pause', // MISSING 92 pause: 'Pause', // MISSING
93 capslock: 'Caps Lock', // MISSING 93 capslock: 'Caps Lock', // MISSING
94 escape: 'Escape', // MISSING 94 escape: 'Escape', // MISSING
95 pageUp: 'Page Up', // MISSING 95 pageUp: 'Page Up', // MISSING
96 pageDown: 'Page Down', // MISSING 96 pageDown: 'Page Down', // MISSING
97 end: 'End', // MISSING
98 home: 'Home', // MISSING
99 leftArrow: 'Left Arrow', // MISSING 97 leftArrow: 'Left Arrow', // MISSING
100 upArrow: 'Up Arrow', // MISSING 98 upArrow: 'Up Arrow', // MISSING
101 rightArrow: 'Right Arrow', // MISSING 99 rightArrow: 'Right Arrow', // MISSING
102 downArrow: 'Down Arrow', // MISSING 100 downArrow: 'Down Arrow', // MISSING
103 insert: 'Insert', // MISSING 101 insert: 'Insert', // MISSING
104 'delete': 'Delete', // MISSING
105 leftWindowKey: 'Left Windows key', // MISSING 102 leftWindowKey: 'Left Windows key', // MISSING
106 rightWindowKey: 'Right Windows key', // MISSING 103 rightWindowKey: 'Right Windows key', // MISSING
107 selectKey: 'Select key', // MISSING 104 selectKey: 'Select key', // MISSING
diff --git a/sources/plugins/a11yhelp/dialogs/lang/sr.js b/sources/plugins/a11yhelp/dialogs/lang/sr.js
index fb07f86..0ef0222 100644
--- a/sources/plugins/a11yhelp/dialogs/lang/sr.js
+++ b/sources/plugins/a11yhelp/dialogs/lang/sr.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -79,29 +79,26 @@ CKEDITOR.plugins.setLang( 'a11yhelp', 'sr', {
79 { 79 {
80 name: ' Accessibility Help', // MISSING 80 name: ' Accessibility Help', // MISSING
81 legend: 'Press ${a11yHelp}' // MISSING 81 legend: 'Press ${a11yHelp}' // MISSING
82 },
83 {
84 name: ' Paste as plain text', // MISSING
85 legend: 'Press ${pastetext}', // MISSING
86 legendEdge: 'Press ${pastetext}, followed by ${paste}' // MISSING
82 } 87 }
83 ] 88 ]
84 } 89 }
85 ], 90 ],
86 backspace: 'Backspace', // MISSING
87 tab: 'Tab', // MISSING 91 tab: 'Tab', // MISSING
88 enter: 'Enter', // MISSING
89 shift: 'Shift', // MISSING
90 ctrl: 'Ctrl', // MISSING
91 alt: 'Alt', // MISSING
92 pause: 'Pause', // MISSING 92 pause: 'Pause', // MISSING
93 capslock: 'Caps Lock', // MISSING 93 capslock: 'Caps Lock', // MISSING
94 escape: 'Escape', // MISSING 94 escape: 'Escape', // MISSING
95 pageUp: 'Page Up', // MISSING 95 pageUp: 'Page Up', // MISSING
96 pageDown: 'Page Down', // MISSING 96 pageDown: 'Page Down', // MISSING
97 end: 'End', // MISSING
98 home: 'Home', // MISSING
99 leftArrow: 'Left Arrow', // MISSING 97 leftArrow: 'Left Arrow', // MISSING
100 upArrow: 'Up Arrow', // MISSING 98 upArrow: 'Up Arrow', // MISSING
101 rightArrow: 'Right Arrow', // MISSING 99 rightArrow: 'Right Arrow', // MISSING
102 downArrow: 'Down Arrow', // MISSING 100 downArrow: 'Down Arrow', // MISSING
103 insert: 'Insert', // MISSING 101 insert: 'Insert', // MISSING
104 'delete': 'Delete', // MISSING
105 leftWindowKey: 'Left Windows key', // MISSING 102 leftWindowKey: 'Left Windows key', // MISSING
106 rightWindowKey: 'Right Windows key', // MISSING 103 rightWindowKey: 'Right Windows key', // MISSING
107 selectKey: 'Select key', // MISSING 104 selectKey: 'Select key', // MISSING
diff --git a/sources/plugins/a11yhelp/dialogs/lang/sv.js b/sources/plugins/a11yhelp/dialogs/lang/sv.js
index 4200c9f..867beda 100644
--- a/sources/plugins/a11yhelp/dialogs/lang/sv.js
+++ b/sources/plugins/a11yhelp/dialogs/lang/sv.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -79,29 +79,26 @@ CKEDITOR.plugins.setLang( 'a11yhelp', 'sv', {
79 { 79 {
80 name: 'Hjälp om tillgänglighet', 80 name: 'Hjälp om tillgänglighet',
81 legend: 'Tryck ${a11yHelp}' 81 legend: 'Tryck ${a11yHelp}'
82 },
83 {
84 name: 'Klistra in som vanlig text',
85 legend: 'Tryck ${pastetext}',
86 legendEdge: 'Tryck ${pastetext}, följt av ${paste}'
82 } 87 }
83 ] 88 ]
84 } 89 }
85 ], 90 ],
86 backspace: 'Backsteg',
87 tab: 'Tab', 91 tab: 'Tab',
88 enter: 'Retur',
89 shift: 'Skift',
90 ctrl: 'Ctrl',
91 alt: 'Alt',
92 pause: 'Paus', 92 pause: 'Paus',
93 capslock: 'Caps lock', 93 capslock: 'Caps lock',
94 escape: 'Escape', 94 escape: 'Escape',
95 pageUp: 'Sida Up', 95 pageUp: 'Sida Up',
96 pageDown: 'Sida Ned', 96 pageDown: 'Sida Ned',
97 end: 'Slut',
98 home: 'Hem',
99 leftArrow: 'Vänsterpil', 97 leftArrow: 'Vänsterpil',
100 upArrow: 'Uppil', 98 upArrow: 'Uppil',
101 rightArrow: 'Högerpil', 99 rightArrow: 'Högerpil',
102 downArrow: 'Nedåtpil', 100 downArrow: 'Nedåtpil',
103 insert: 'Infoga', 101 insert: 'Infoga',
104 'delete': 'Radera',
105 leftWindowKey: 'Vänster Windowstangent', 102 leftWindowKey: 'Vänster Windowstangent',
106 rightWindowKey: 'Höger Windowstangent', 103 rightWindowKey: 'Höger Windowstangent',
107 selectKey: 'Välj tangent', 104 selectKey: 'Välj tangent',
diff --git a/sources/plugins/a11yhelp/dialogs/lang/th.js b/sources/plugins/a11yhelp/dialogs/lang/th.js
index 00c96d1..5da604f 100644
--- a/sources/plugins/a11yhelp/dialogs/lang/th.js
+++ b/sources/plugins/a11yhelp/dialogs/lang/th.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -79,29 +79,26 @@ CKEDITOR.plugins.setLang( 'a11yhelp', 'th', {
79 { 79 {
80 name: ' Accessibility Help', // MISSING 80 name: ' Accessibility Help', // MISSING
81 legend: 'Press ${a11yHelp}' // MISSING 81 legend: 'Press ${a11yHelp}' // MISSING
82 },
83 {
84 name: ' Paste as plain text', // MISSING
85 legend: 'Press ${pastetext}', // MISSING
86 legendEdge: 'Press ${pastetext}, followed by ${paste}' // MISSING
82 } 87 }
83 ] 88 ]
84 } 89 }
85 ], 90 ],
86 backspace: 'Backspace', // MISSING
87 tab: 'Tab', // MISSING 91 tab: 'Tab', // MISSING
88 enter: 'Enter', // MISSING
89 shift: 'Shift', // MISSING
90 ctrl: 'Ctrl', // MISSING
91 alt: 'Alt', // MISSING
92 pause: 'Pause', // MISSING 92 pause: 'Pause', // MISSING
93 capslock: 'Caps Lock', // MISSING 93 capslock: 'Caps Lock', // MISSING
94 escape: 'Escape', // MISSING 94 escape: 'Escape', // MISSING
95 pageUp: 'Page Up', // MISSING 95 pageUp: 'Page Up', // MISSING
96 pageDown: 'Page Down', // MISSING 96 pageDown: 'Page Down', // MISSING
97 end: 'End', // MISSING
98 home: 'Home', // MISSING
99 leftArrow: 'Left Arrow', // MISSING 97 leftArrow: 'Left Arrow', // MISSING
100 upArrow: 'Up Arrow', // MISSING 98 upArrow: 'Up Arrow', // MISSING
101 rightArrow: 'Right Arrow', // MISSING 99 rightArrow: 'Right Arrow', // MISSING
102 downArrow: 'Down Arrow', // MISSING 100 downArrow: 'Down Arrow', // MISSING
103 insert: 'Insert', // MISSING 101 insert: 'Insert', // MISSING
104 'delete': 'Delete', // MISSING
105 leftWindowKey: 'Left Windows key', // MISSING 102 leftWindowKey: 'Left Windows key', // MISSING
106 rightWindowKey: 'Right Windows key', // MISSING 103 rightWindowKey: 'Right Windows key', // MISSING
107 selectKey: 'Select key', // MISSING 104 selectKey: 'Select key', // MISSING
diff --git a/sources/plugins/a11yhelp/dialogs/lang/tr.js b/sources/plugins/a11yhelp/dialogs/lang/tr.js
index 425f21d..86b4c97 100644
--- a/sources/plugins/a11yhelp/dialogs/lang/tr.js
+++ b/sources/plugins/a11yhelp/dialogs/lang/tr.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -79,29 +79,26 @@ CKEDITOR.plugins.setLang( 'a11yhelp', 'tr', {
79 { 79 {
80 name: 'Erişilebilirlik Yardımı', 80 name: 'Erişilebilirlik Yardımı',
81 legend: '${a11yHelp}\'e basın' 81 legend: '${a11yHelp}\'e basın'
82 },
83 {
84 name: 'Düz Metin Olarak Yapıştır',
85 legend: '${pastetext} basın',
86 legendEdge: 'Önce ${pastetext} ardından${paste} basın'
82 } 87 }
83 ] 88 ]
84 } 89 }
85 ], 90 ],
86 backspace: 'Silme',
87 tab: 'Sekme tuşu', 91 tab: 'Sekme tuşu',
88 enter: 'Gir tuşu',
89 shift: '"Shift" Kaydırma tuşu',
90 ctrl: '"Ctrl" Kontrol tuşu',
91 alt: '"Alt" Anahtar tuşu',
92 pause: 'Durdurma tuşu', 92 pause: 'Durdurma tuşu',
93 capslock: 'Büyük harf tuşu', 93 capslock: 'Büyük harf tuşu',
94 escape: 'Vazgeç tuşu', 94 escape: 'Vazgeç tuşu',
95 pageUp: 'Sayfa Yukarı', 95 pageUp: 'Sayfa Yukarı',
96 pageDown: 'Sayfa Aşağı', 96 pageDown: 'Sayfa Aşağı',
97 end: 'Sona',
98 home: 'En başa',
99 leftArrow: 'Sol ok', 97 leftArrow: 'Sol ok',
100 upArrow: 'Yukarı ok', 98 upArrow: 'Yukarı ok',
101 rightArrow: 'Sağ ok', 99 rightArrow: 'Sağ ok',
102 downArrow: 'Aşağı ok', 100 downArrow: 'Aşağı ok',
103 insert: 'Araya gir', 101 insert: 'Araya gir',
104 'delete': 'Silme',
105 leftWindowKey: 'Sol windows tuşu', 102 leftWindowKey: 'Sol windows tuşu',
106 rightWindowKey: 'Sağ windows tuşu', 103 rightWindowKey: 'Sağ windows tuşu',
107 selectKey: 'Seçme tuşu', 104 selectKey: 'Seçme tuşu',
diff --git a/sources/plugins/a11yhelp/dialogs/lang/tt.js b/sources/plugins/a11yhelp/dialogs/lang/tt.js
index 1ce78fa..e73f5dd 100644
--- a/sources/plugins/a11yhelp/dialogs/lang/tt.js
+++ b/sources/plugins/a11yhelp/dialogs/lang/tt.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -79,29 +79,26 @@ CKEDITOR.plugins.setLang( 'a11yhelp', 'tt', {
79 { 79 {
80 name: ' Accessibility Help', // MISSING 80 name: ' Accessibility Help', // MISSING
81 legend: '${a11yHelp} басыгыз' 81 legend: '${a11yHelp} басыгыз'
82 },
83 {
84 name: ' Paste as plain text', // MISSING
85 legend: 'Press ${pastetext}', // MISSING
86 legendEdge: 'Press ${pastetext}, followed by ${paste}' // MISSING
82 } 87 }
83 ] 88 ]
84 } 89 }
85 ], 90 ],
86 backspace: 'Кайтару',
87 tab: 'Tab', 91 tab: 'Tab',
88 enter: 'Enter',
89 shift: 'Shift',
90 ctrl: 'Ctrl',
91 alt: 'Alt',
92 pause: 'Тыныш', 92 pause: 'Тыныш',
93 capslock: 'Caps Lock', 93 capslock: 'Caps Lock',
94 escape: 'Escape', 94 escape: 'Escape',
95 pageUp: 'Page Up', 95 pageUp: 'Page Up',
96 pageDown: 'Page Down', 96 pageDown: 'Page Down',
97 end: 'End',
98 home: 'Home',
99 leftArrow: 'Сул якка ук', 97 leftArrow: 'Сул якка ук',
100 upArrow: 'Өскә таба ук', 98 upArrow: 'Өскә таба ук',
101 rightArrow: 'Уң якка ук', 99 rightArrow: 'Уң якка ук',
102 downArrow: 'Аска таба ук', 100 downArrow: 'Аска таба ук',
103 insert: 'Өстәү', 101 insert: 'Өстәү',
104 'delete': 'Бетерү',
105 leftWindowKey: 'Сул Windows төймəсе', 102 leftWindowKey: 'Сул Windows төймəсе',
106 rightWindowKey: 'Уң Windows төймəсе', 103 rightWindowKey: 'Уң Windows төймəсе',
107 selectKey: 'Select төймəсе', 104 selectKey: 'Select төймəсе',
diff --git a/sources/plugins/a11yhelp/dialogs/lang/ug.js b/sources/plugins/a11yhelp/dialogs/lang/ug.js
index 0dd4d25..4768c55 100644
--- a/sources/plugins/a11yhelp/dialogs/lang/ug.js
+++ b/sources/plugins/a11yhelp/dialogs/lang/ug.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -79,29 +79,26 @@ CKEDITOR.plugins.setLang( 'a11yhelp', 'ug', {
79 { 79 {
80 name: 'توسالغۇسىز لايىھە چۈشەندۈرۈشى', 80 name: 'توسالغۇسىز لايىھە چۈشەندۈرۈشى',
81 legend: '${a11yHelp} نى بېسىڭ' 81 legend: '${a11yHelp} نى بېسىڭ'
82 },
83 {
84 name: ' Paste as plain text', // MISSING
85 legend: 'Press ${pastetext}', // MISSING
86 legendEdge: 'Press ${pastetext}, followed by ${paste}' // MISSING
82 } 87 }
83 ] 88 ]
84 } 89 }
85 ], 90 ],
86 backspace: 'Backspace',
87 tab: 'Tab', 91 tab: 'Tab',
88 enter: 'Enter',
89 shift: 'Shift',
90 ctrl: 'Ctrl',
91 alt: 'Alt',
92 pause: 'Pause', 92 pause: 'Pause',
93 capslock: 'Caps Lock', 93 capslock: 'Caps Lock',
94 escape: 'Escape', 94 escape: 'Escape',
95 pageUp: 'Page Up', 95 pageUp: 'Page Up',
96 pageDown: 'Page Down', 96 pageDown: 'Page Down',
97 end: 'End',
98 home: 'Home',
99 leftArrow: 'سول يا ئوق', 97 leftArrow: 'سول يا ئوق',
100 upArrow: 'ئۈستى يا ئوق', 98 upArrow: 'ئۈستى يا ئوق',
101 rightArrow: 'ئوڭ يا ئوق', 99 rightArrow: 'ئوڭ يا ئوق',
102 downArrow: 'ئاستى يا ئوق', 100 downArrow: 'ئاستى يا ئوق',
103 insert: 'قىستۇر', 101 insert: 'قىستۇر',
104 'delete': 'ئۆچۈر',
105 leftWindowKey: 'سول Windows كۇنۇپكىسى', 102 leftWindowKey: 'سول Windows كۇنۇپكىسى',
106 rightWindowKey: 'ئوڭ Windows كۇنۇپكىسى', 103 rightWindowKey: 'ئوڭ Windows كۇنۇپكىسى',
107 selectKey: 'تاللاش كۇنۇپكىسى', 104 selectKey: 'تاللاش كۇنۇپكىسى',
diff --git a/sources/plugins/a11yhelp/dialogs/lang/uk.js b/sources/plugins/a11yhelp/dialogs/lang/uk.js
index ce5ff60..99a7002 100644
--- a/sources/plugins/a11yhelp/dialogs/lang/uk.js
+++ b/sources/plugins/a11yhelp/dialogs/lang/uk.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -79,29 +79,26 @@ CKEDITOR.plugins.setLang( 'a11yhelp', 'uk', {
79 { 79 {
80 name: 'Допомога з доступності', 80 name: 'Допомога з доступності',
81 legend: 'Натисніть ${a11yHelp}' 81 legend: 'Натисніть ${a11yHelp}'
82 },
83 {
84 name: ' Paste as plain text', // MISSING
85 legend: 'Press ${pastetext}', // MISSING
86 legendEdge: 'Press ${pastetext}, followed by ${paste}' // MISSING
82 } 87 }
83 ] 88 ]
84 } 89 }
85 ], 90 ],
86 backspace: 'Backspace',
87 tab: 'Tab', 91 tab: 'Tab',
88 enter: 'Enter',
89 shift: 'Shift',
90 ctrl: 'Ctrl',
91 alt: 'Alt',
92 pause: 'Pause', 92 pause: 'Pause',
93 capslock: 'Caps Lock', 93 capslock: 'Caps Lock',
94 escape: 'Esc', 94 escape: 'Esc',
95 pageUp: 'Page Up', 95 pageUp: 'Page Up',
96 pageDown: 'Page Down', 96 pageDown: 'Page Down',
97 end: 'End',
98 home: 'Home',
99 leftArrow: 'Ліва стрілка', 97 leftArrow: 'Ліва стрілка',
100 upArrow: 'Стрілка вгору', 98 upArrow: 'Стрілка вгору',
101 rightArrow: 'Права стрілка', 99 rightArrow: 'Права стрілка',
102 downArrow: 'Стрілка вниз', 100 downArrow: 'Стрілка вниз',
103 insert: 'Вставити', 101 insert: 'Вставити',
104 'delete': 'Видалити',
105 leftWindowKey: 'Ліва клавіша Windows', 102 leftWindowKey: 'Ліва клавіша Windows',
106 rightWindowKey: 'Права клавіша Windows', 103 rightWindowKey: 'Права клавіша Windows',
107 selectKey: 'Виберіть клавішу', 104 selectKey: 'Виберіть клавішу',
diff --git a/sources/plugins/a11yhelp/dialogs/lang/vi.js b/sources/plugins/a11yhelp/dialogs/lang/vi.js
index c985471..b8c9fe9 100644
--- a/sources/plugins/a11yhelp/dialogs/lang/vi.js
+++ b/sources/plugins/a11yhelp/dialogs/lang/vi.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -79,29 +79,26 @@ CKEDITOR.plugins.setLang( 'a11yhelp', 'vi', {
79 { 79 {
80 name: 'Trợ giúp liên quan', 80 name: 'Trợ giúp liên quan',
81 legend: 'Nhấn ${a11yHelp}' 81 legend: 'Nhấn ${a11yHelp}'
82 },
83 {
84 name: ' Paste as plain text', // MISSING
85 legend: 'Press ${pastetext}', // MISSING
86 legendEdge: 'Press ${pastetext}, followed by ${paste}' // MISSING
82 } 87 }
83 ] 88 ]
84 } 89 }
85 ], 90 ],
86 backspace: 'Phím Backspace',
87 tab: 'Phím Tab', 91 tab: 'Phím Tab',
88 enter: 'Phím Tab',
89 shift: 'Phím Shift',
90 ctrl: 'Phím Ctrl',
91 alt: 'Phím Alt',
92 pause: 'Phím Pause', 92 pause: 'Phím Pause',
93 capslock: 'Phím Caps Lock', 93 capslock: 'Phím Caps Lock',
94 escape: 'Phím Escape', 94 escape: 'Phím Escape',
95 pageUp: 'Phím Page Up', 95 pageUp: 'Phím Page Up',
96 pageDown: 'Phím Page Down', 96 pageDown: 'Phím Page Down',
97 end: 'Phím End',
98 home: 'Phím Home',
99 leftArrow: 'Phím Left Arrow', 97 leftArrow: 'Phím Left Arrow',
100 upArrow: 'Phím Up Arrow', 98 upArrow: 'Phím Up Arrow',
101 rightArrow: 'Phím Right Arrow', 99 rightArrow: 'Phím Right Arrow',
102 downArrow: 'Phím Down Arrow', 100 downArrow: 'Phím Down Arrow',
103 insert: 'Chèn', 101 insert: 'Chèn',
104 'delete': 'Xóa',
105 leftWindowKey: 'Phím Left Windows', 102 leftWindowKey: 'Phím Left Windows',
106 rightWindowKey: 'Phím Right Windows ', 103 rightWindowKey: 'Phím Right Windows ',
107 selectKey: 'Chọn phím', 104 selectKey: 'Chọn phím',
diff --git a/sources/plugins/a11yhelp/dialogs/lang/zh-cn.js b/sources/plugins/a11yhelp/dialogs/lang/zh-cn.js
index 553f56c..0ce61d2 100644
--- a/sources/plugins/a11yhelp/dialogs/lang/zh-cn.js
+++ b/sources/plugins/a11yhelp/dialogs/lang/zh-cn.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -79,29 +79,26 @@ CKEDITOR.plugins.setLang( 'a11yhelp', 'zh-cn', {
79 { 79 {
80 name: '辅助功能帮助', 80 name: '辅助功能帮助',
81 legend: '按 ${a11yHelp}' 81 legend: '按 ${a11yHelp}'
82 },
83 {
84 name: '粘贴为纯文本',
85 legend: '按 ${pastetext}',
86 legendEdge: '按 ${pastetext},然后再按 ${paste}'
82 } 87 }
83 ] 88 ]
84 } 89 }
85 ], 90 ],
86 backspace: '退格键',
87 tab: 'Tab 键', 91 tab: 'Tab 键',
88 enter: '回车键',
89 shift: 'Shift 键',
90 ctrl: 'Ctrl 键',
91 alt: 'Alt 键',
92 pause: '暂停键', 92 pause: '暂停键',
93 capslock: '大写锁定键', 93 capslock: '大写锁定键',
94 escape: 'Esc 键', 94 escape: 'Esc 键',
95 pageUp: '上翻页键', 95 pageUp: '上翻页键',
96 pageDown: '下翻页键', 96 pageDown: '下翻页键',
97 end: '行尾键',
98 home: '行首键',
99 leftArrow: '向左箭头键', 97 leftArrow: '向左箭头键',
100 upArrow: '向上箭头键', 98 upArrow: '向上箭头键',
101 rightArrow: '向右箭头键', 99 rightArrow: '向右箭头键',
102 downArrow: '向下箭头键', 100 downArrow: '向下箭头键',
103 insert: '插入键', 101 insert: '插入键',
104 'delete': '删除键',
105 leftWindowKey: '左 WIN 键', 102 leftWindowKey: '左 WIN 键',
106 rightWindowKey: '右 WIN 键', 103 rightWindowKey: '右 WIN 键',
107 selectKey: '选择键', 104 selectKey: '选择键',
diff --git a/sources/plugins/a11yhelp/dialogs/lang/zh.js b/sources/plugins/a11yhelp/dialogs/lang/zh.js
index 69b61d9..2e35e1d 100644
--- a/sources/plugins/a11yhelp/dialogs/lang/zh.js
+++ b/sources/plugins/a11yhelp/dialogs/lang/zh.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -79,29 +79,26 @@ CKEDITOR.plugins.setLang( 'a11yhelp', 'zh', {
79 { 79 {
80 name: '協助工具說明', 80 name: '協助工具說明',
81 legend: '請按下「${a11yHelp}」' 81 legend: '請按下「${a11yHelp}」'
82 },
83 {
84 name: ' Paste as plain text', // MISSING
85 legend: 'Press ${pastetext}', // MISSING
86 legendEdge: 'Press ${pastetext}, followed by ${paste}' // MISSING
82 } 87 }
83 ] 88 ]
84 } 89 }
85 ], 90 ],
86 backspace: '退格鍵',
87 tab: 'Tab', 91 tab: 'Tab',
88 enter: 'Enter',
89 shift: 'Shift',
90 ctrl: 'Ctrl',
91 alt: 'Alt',
92 pause: 'Pause', 92 pause: 'Pause',
93 capslock: 'Caps Lock', 93 capslock: 'Caps Lock',
94 escape: 'Esc', 94 escape: 'Esc',
95 pageUp: 'Page Up', 95 pageUp: 'Page Up',
96 pageDown: 'Page Down', 96 pageDown: 'Page Down',
97 end: 'End',
98 home: 'Home',
99 leftArrow: '向左箭號', 97 leftArrow: '向左箭號',
100 upArrow: '向上鍵號', 98 upArrow: '向上鍵號',
101 rightArrow: '向右鍵號', 99 rightArrow: '向右鍵號',
102 downArrow: '向下鍵號', 100 downArrow: '向下鍵號',
103 insert: '插入', 101 insert: '插入',
104 'delete': '刪除',
105 leftWindowKey: '左方 Windows 鍵', 102 leftWindowKey: '左方 Windows 鍵',
106 rightWindowKey: '右方 Windows 鍵', 103 rightWindowKey: '右方 Windows 鍵',
107 selectKey: '選擇鍵', 104 selectKey: '選擇鍵',
diff --git a/sources/plugins/a11yhelp/plugin.js b/sources/plugins/a11yhelp/plugin.js
index 86b19fe..65da25e 100644
--- a/sources/plugins/a11yhelp/plugin.js
+++ b/sources/plugins/a11yhelp/plugin.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -17,7 +17,7 @@
17 17
18 // List of available localizations. 18 // List of available localizations.
19 // jscs:disable 19 // jscs:disable
20 availableLangs: { af:1,ar:1,bg:1,ca:1,cs:1,cy:1,da:1,de:1,'de-ch':1,el:1,en:1,'en-gb':1,eo:1,es:1,et:1,eu:1,fa:1,fi:1,fo:1,fr:1,'fr-ca':1,gl:1,gu:1,he:1,hi:1,hr:1,hu:1,id:1,it:1,ja:1,km:1,ko:1,ku:1,lt:1,lv:1,mk:1,mn:1,nb:1,nl:1,no:1,pl:1,pt:1,'pt-br':1,ro:1,ru:1,si:1,sk:1,sl:1,sq:1,sr:1,'sr-latn':1,sv:1,th:1,tr:1,tt:1,ug:1,uk:1,vi:1,zh:1,'zh-cn':1 }, 20 availableLangs: { af:1,ar:1,az:1,bg:1,ca:1,cs:1,cy:1,da:1,de:1,'de-ch':1,el:1,en:1,'en-gb':1,eo:1,es:1,'es-mx':1,et:1,eu:1,fa:1,fi:1,fo:1,fr:1,'fr-ca':1,gl:1,gu:1,he:1,hi:1,hr:1,hu:1,id:1,it:1,ja:1,km:1,ko:1,ku:1,lt:1,lv:1,mk:1,mn:1,nb:1,nl:1,no:1,oc:1,pl:1,pt:1,'pt-br':1,ro:1,ru:1,si:1,sk:1,sl:1,sq:1,sr:1,'sr-latn':1,sv:1,th:1,tr:1,tt:1,ug:1,uk:1,vi:1,zh:1,'zh-cn':1 },
21 // jscs:enable 21 // jscs:enable
22 22
23 init: function( editor ) { 23 init: function( editor ) {
diff --git a/sources/plugins/basicstyles/icons/bold.png b/sources/plugins/basicstyles/icons/bold.png
index 5ff84fe..d714916 100644
--- a/sources/plugins/basicstyles/icons/bold.png
+++ b/sources/plugins/basicstyles/icons/bold.png
Binary files differ
diff --git a/sources/plugins/basicstyles/icons/hidpi/bold.png b/sources/plugins/basicstyles/icons/hidpi/bold.png
index 65acb29..2de207d 100644
--- a/sources/plugins/basicstyles/icons/hidpi/bold.png
+++ b/sources/plugins/basicstyles/icons/hidpi/bold.png
Binary files differ
diff --git a/sources/plugins/basicstyles/icons/hidpi/italic.png b/sources/plugins/basicstyles/icons/hidpi/italic.png
index 2b0f44e..2c2dae4 100644
--- a/sources/plugins/basicstyles/icons/hidpi/italic.png
+++ b/sources/plugins/basicstyles/icons/hidpi/italic.png
Binary files differ
diff --git a/sources/plugins/basicstyles/icons/hidpi/strike.png b/sources/plugins/basicstyles/icons/hidpi/strike.png
index ef045c8..19c5e22 100644
--- a/sources/plugins/basicstyles/icons/hidpi/strike.png
+++ b/sources/plugins/basicstyles/icons/hidpi/strike.png
Binary files differ
diff --git a/sources/plugins/basicstyles/icons/hidpi/subscript.png b/sources/plugins/basicstyles/icons/hidpi/subscript.png
index f12f4be..585d59b 100644
--- a/sources/plugins/basicstyles/icons/hidpi/subscript.png
+++ b/sources/plugins/basicstyles/icons/hidpi/subscript.png
Binary files differ
diff --git a/sources/plugins/basicstyles/icons/hidpi/superscript.png b/sources/plugins/basicstyles/icons/hidpi/superscript.png
index 4f7b762..9daa12a 100644
--- a/sources/plugins/basicstyles/icons/hidpi/superscript.png
+++ b/sources/plugins/basicstyles/icons/hidpi/superscript.png
Binary files differ
diff --git a/sources/plugins/basicstyles/icons/hidpi/underline.png b/sources/plugins/basicstyles/icons/hidpi/underline.png
index 79702f6..6653814 100644
--- a/sources/plugins/basicstyles/icons/hidpi/underline.png
+++ b/sources/plugins/basicstyles/icons/hidpi/underline.png
Binary files differ
diff --git a/sources/plugins/basicstyles/icons/italic.png b/sources/plugins/basicstyles/icons/italic.png
index 64d1332..5f8aaae 100644
--- a/sources/plugins/basicstyles/icons/italic.png
+++ b/sources/plugins/basicstyles/icons/italic.png
Binary files differ
diff --git a/sources/plugins/basicstyles/icons/strike.png b/sources/plugins/basicstyles/icons/strike.png
index 31ea47a..5842b7a 100644
--- a/sources/plugins/basicstyles/icons/strike.png
+++ b/sources/plugins/basicstyles/icons/strike.png
Binary files differ
diff --git a/sources/plugins/basicstyles/icons/subscript.png b/sources/plugins/basicstyles/icons/subscript.png
index bfe5420..db11f78 100644
--- a/sources/plugins/basicstyles/icons/subscript.png
+++ b/sources/plugins/basicstyles/icons/subscript.png
Binary files differ
diff --git a/sources/plugins/basicstyles/icons/superscript.png b/sources/plugins/basicstyles/icons/superscript.png
index a1eb2f1..3df28d2 100644
--- a/sources/plugins/basicstyles/icons/superscript.png
+++ b/sources/plugins/basicstyles/icons/superscript.png
Binary files differ
diff --git a/sources/plugins/basicstyles/icons/underline.png b/sources/plugins/basicstyles/icons/underline.png
index 1dd0c59..160be92 100644
--- a/sources/plugins/basicstyles/icons/underline.png
+++ b/sources/plugins/basicstyles/icons/underline.png
Binary files differ
diff --git a/sources/plugins/basicstyles/lang/af.js b/sources/plugins/basicstyles/lang/af.js
index 3fbcb9c..bcceb14 100644
--- a/sources/plugins/basicstyles/lang/af.js
+++ b/sources/plugins/basicstyles/lang/af.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'basicstyles', 'af', { 5CKEDITOR.plugins.setLang( 'basicstyles', 'af', {
diff --git a/sources/plugins/basicstyles/lang/ar.js b/sources/plugins/basicstyles/lang/ar.js
index 8ed2b07..fb4adc6 100644
--- a/sources/plugins/basicstyles/lang/ar.js
+++ b/sources/plugins/basicstyles/lang/ar.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'basicstyles', 'ar', { 5CKEDITOR.plugins.setLang( 'basicstyles', 'ar', {
diff --git a/sources/plugins/basicstyles/lang/az.js b/sources/plugins/basicstyles/lang/az.js
new file mode 100644
index 0000000..097a1ec
--- /dev/null
+++ b/sources/plugins/basicstyles/lang/az.js
@@ -0,0 +1,12 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'basicstyles', 'az', {
6 bold: 'Qalın',
7 italic: 'Kursiv',
8 strike: 'Üstüxətli',
9 subscript: 'Aşağı indeks',
10 superscript: 'Yuxarı indeks',
11 underline: 'Altdan xətt'
12} );
diff --git a/sources/plugins/basicstyles/lang/bg.js b/sources/plugins/basicstyles/lang/bg.js
index e410766..56f6f7d 100644
--- a/sources/plugins/basicstyles/lang/bg.js
+++ b/sources/plugins/basicstyles/lang/bg.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'basicstyles', 'bg', { 5CKEDITOR.plugins.setLang( 'basicstyles', 'bg', {
diff --git a/sources/plugins/basicstyles/lang/bn.js b/sources/plugins/basicstyles/lang/bn.js
index 007520b..fd790a4 100644
--- a/sources/plugins/basicstyles/lang/bn.js
+++ b/sources/plugins/basicstyles/lang/bn.js
@@ -1,10 +1,10 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'basicstyles', 'bn', { 5CKEDITOR.plugins.setLang( 'basicstyles', 'bn', {
6 bold: 'বোল্ড', 6 bold: 'বোল্ড',
7 italic: '', 7 italic: '',
8 strike: 'স্ট্রাইক থ্রু', 8 strike: 'স্ট্রাইক থ্রু',
9 subscript: 'অধোলেখ', 9 subscript: 'অধোলেখ',
10 superscript: 'অভিলেখ', 10 superscript: 'অভিলেখ',
diff --git a/sources/plugins/basicstyles/lang/bs.js b/sources/plugins/basicstyles/lang/bs.js
index 9484a8d..9188f98 100644
--- a/sources/plugins/basicstyles/lang/bs.js
+++ b/sources/plugins/basicstyles/lang/bs.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'basicstyles', 'bs', { 5CKEDITOR.plugins.setLang( 'basicstyles', 'bs', {
diff --git a/sources/plugins/basicstyles/lang/ca.js b/sources/plugins/basicstyles/lang/ca.js
index 7d3cc03..2924d1e 100644
--- a/sources/plugins/basicstyles/lang/ca.js
+++ b/sources/plugins/basicstyles/lang/ca.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'basicstyles', 'ca', { 5CKEDITOR.plugins.setLang( 'basicstyles', 'ca', {
diff --git a/sources/plugins/basicstyles/lang/cs.js b/sources/plugins/basicstyles/lang/cs.js
index 5322b5a..737c648 100644
--- a/sources/plugins/basicstyles/lang/cs.js
+++ b/sources/plugins/basicstyles/lang/cs.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'basicstyles', 'cs', { 5CKEDITOR.plugins.setLang( 'basicstyles', 'cs', {
diff --git a/sources/plugins/basicstyles/lang/cy.js b/sources/plugins/basicstyles/lang/cy.js
index 4a207e8..3acb736 100644
--- a/sources/plugins/basicstyles/lang/cy.js
+++ b/sources/plugins/basicstyles/lang/cy.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'basicstyles', 'cy', { 5CKEDITOR.plugins.setLang( 'basicstyles', 'cy', {
diff --git a/sources/plugins/basicstyles/lang/da.js b/sources/plugins/basicstyles/lang/da.js
index d1b1050..0b1f3e8 100644
--- a/sources/plugins/basicstyles/lang/da.js
+++ b/sources/plugins/basicstyles/lang/da.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'basicstyles', 'da', { 5CKEDITOR.plugins.setLang( 'basicstyles', 'da', {
diff --git a/sources/plugins/basicstyles/lang/de-ch.js b/sources/plugins/basicstyles/lang/de-ch.js
index 21ade9f..2370c04 100644
--- a/sources/plugins/basicstyles/lang/de-ch.js
+++ b/sources/plugins/basicstyles/lang/de-ch.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'basicstyles', 'de-ch', { 5CKEDITOR.plugins.setLang( 'basicstyles', 'de-ch', {
diff --git a/sources/plugins/basicstyles/lang/de.js b/sources/plugins/basicstyles/lang/de.js
index 5c67cd9..fbc92e4 100644
--- a/sources/plugins/basicstyles/lang/de.js
+++ b/sources/plugins/basicstyles/lang/de.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'basicstyles', 'de', { 5CKEDITOR.plugins.setLang( 'basicstyles', 'de', {
diff --git a/sources/plugins/basicstyles/lang/el.js b/sources/plugins/basicstyles/lang/el.js
index 899b794..2c72cda 100644
--- a/sources/plugins/basicstyles/lang/el.js
+++ b/sources/plugins/basicstyles/lang/el.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'basicstyles', 'el', { 5CKEDITOR.plugins.setLang( 'basicstyles', 'el', {
diff --git a/sources/plugins/basicstyles/lang/en-au.js b/sources/plugins/basicstyles/lang/en-au.js
index 4c80293..6b9dc7e 100644
--- a/sources/plugins/basicstyles/lang/en-au.js
+++ b/sources/plugins/basicstyles/lang/en-au.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'basicstyles', 'en-au', { 5CKEDITOR.plugins.setLang( 'basicstyles', 'en-au', {
diff --git a/sources/plugins/basicstyles/lang/en-ca.js b/sources/plugins/basicstyles/lang/en-ca.js
index e85611a..612b2b8 100644
--- a/sources/plugins/basicstyles/lang/en-ca.js
+++ b/sources/plugins/basicstyles/lang/en-ca.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'basicstyles', 'en-ca', { 5CKEDITOR.plugins.setLang( 'basicstyles', 'en-ca', {
diff --git a/sources/plugins/basicstyles/lang/en-gb.js b/sources/plugins/basicstyles/lang/en-gb.js
index b2cd62c..418058e 100644
--- a/sources/plugins/basicstyles/lang/en-gb.js
+++ b/sources/plugins/basicstyles/lang/en-gb.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'basicstyles', 'en-gb', { 5CKEDITOR.plugins.setLang( 'basicstyles', 'en-gb', {
diff --git a/sources/plugins/basicstyles/lang/en.js b/sources/plugins/basicstyles/lang/en.js
index 7284189..3c9bc32 100644
--- a/sources/plugins/basicstyles/lang/en.js
+++ b/sources/plugins/basicstyles/lang/en.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'basicstyles', 'en', { 5CKEDITOR.plugins.setLang( 'basicstyles', 'en', {
diff --git a/sources/plugins/basicstyles/lang/eo.js b/sources/plugins/basicstyles/lang/eo.js
index 0fef072..995f0c3 100644
--- a/sources/plugins/basicstyles/lang/eo.js
+++ b/sources/plugins/basicstyles/lang/eo.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'basicstyles', 'eo', { 5CKEDITOR.plugins.setLang( 'basicstyles', 'eo', {
diff --git a/sources/plugins/basicstyles/lang/es-mx.js b/sources/plugins/basicstyles/lang/es-mx.js
new file mode 100644
index 0000000..a57ba4b
--- /dev/null
+++ b/sources/plugins/basicstyles/lang/es-mx.js
@@ -0,0 +1,12 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'basicstyles', 'es-mx', {
6 bold: 'Negrita',
7 italic: 'Cursiva',
8 strike: 'Tachado',
9 subscript: 'subíndice',
10 superscript: 'Sobrescrito',
11 underline: 'Subrayada'
12} );
diff --git a/sources/plugins/basicstyles/lang/es.js b/sources/plugins/basicstyles/lang/es.js
index b44dbf7..baaf99f 100644
--- a/sources/plugins/basicstyles/lang/es.js
+++ b/sources/plugins/basicstyles/lang/es.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'basicstyles', 'es', { 5CKEDITOR.plugins.setLang( 'basicstyles', 'es', {
diff --git a/sources/plugins/basicstyles/lang/et.js b/sources/plugins/basicstyles/lang/et.js
index 18d1a04..8dee05e 100644
--- a/sources/plugins/basicstyles/lang/et.js
+++ b/sources/plugins/basicstyles/lang/et.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'basicstyles', 'et', { 5CKEDITOR.plugins.setLang( 'basicstyles', 'et', {
diff --git a/sources/plugins/basicstyles/lang/eu.js b/sources/plugins/basicstyles/lang/eu.js
index 97f4075..7017540 100644
--- a/sources/plugins/basicstyles/lang/eu.js
+++ b/sources/plugins/basicstyles/lang/eu.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'basicstyles', 'eu', { 5CKEDITOR.plugins.setLang( 'basicstyles', 'eu', {
diff --git a/sources/plugins/basicstyles/lang/fa.js b/sources/plugins/basicstyles/lang/fa.js
index 21cea30..49343fb 100644
--- a/sources/plugins/basicstyles/lang/fa.js
+++ b/sources/plugins/basicstyles/lang/fa.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'basicstyles', 'fa', { 5CKEDITOR.plugins.setLang( 'basicstyles', 'fa', {
diff --git a/sources/plugins/basicstyles/lang/fi.js b/sources/plugins/basicstyles/lang/fi.js
index 83b2fca..5e1fbce 100644
--- a/sources/plugins/basicstyles/lang/fi.js
+++ b/sources/plugins/basicstyles/lang/fi.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'basicstyles', 'fi', { 5CKEDITOR.plugins.setLang( 'basicstyles', 'fi', {
diff --git a/sources/plugins/basicstyles/lang/fo.js b/sources/plugins/basicstyles/lang/fo.js
index 4af4e21..f48b73a 100644
--- a/sources/plugins/basicstyles/lang/fo.js
+++ b/sources/plugins/basicstyles/lang/fo.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'basicstyles', 'fo', { 5CKEDITOR.plugins.setLang( 'basicstyles', 'fo', {
diff --git a/sources/plugins/basicstyles/lang/fr-ca.js b/sources/plugins/basicstyles/lang/fr-ca.js
index 1a1f013..6b8ffbf 100644
--- a/sources/plugins/basicstyles/lang/fr-ca.js
+++ b/sources/plugins/basicstyles/lang/fr-ca.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'basicstyles', 'fr-ca', { 5CKEDITOR.plugins.setLang( 'basicstyles', 'fr-ca', {
diff --git a/sources/plugins/basicstyles/lang/fr.js b/sources/plugins/basicstyles/lang/fr.js
index 65d8877..022e438 100644
--- a/sources/plugins/basicstyles/lang/fr.js
+++ b/sources/plugins/basicstyles/lang/fr.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'basicstyles', 'fr', { 5CKEDITOR.plugins.setLang( 'basicstyles', 'fr', {
diff --git a/sources/plugins/basicstyles/lang/gl.js b/sources/plugins/basicstyles/lang/gl.js
index 597f06b..ebd5aa4 100644
--- a/sources/plugins/basicstyles/lang/gl.js
+++ b/sources/plugins/basicstyles/lang/gl.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'basicstyles', 'gl', { 5CKEDITOR.plugins.setLang( 'basicstyles', 'gl', {
diff --git a/sources/plugins/basicstyles/lang/gu.js b/sources/plugins/basicstyles/lang/gu.js
index 3ca4b60..fc043b4 100644
--- a/sources/plugins/basicstyles/lang/gu.js
+++ b/sources/plugins/basicstyles/lang/gu.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'basicstyles', 'gu', { 5CKEDITOR.plugins.setLang( 'basicstyles', 'gu', {
diff --git a/sources/plugins/basicstyles/lang/he.js b/sources/plugins/basicstyles/lang/he.js
index 5d73395..16b16a4 100644
--- a/sources/plugins/basicstyles/lang/he.js
+++ b/sources/plugins/basicstyles/lang/he.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'basicstyles', 'he', { 5CKEDITOR.plugins.setLang( 'basicstyles', 'he', {
diff --git a/sources/plugins/basicstyles/lang/hi.js b/sources/plugins/basicstyles/lang/hi.js
index 0beaa59..2b2fcb5 100644
--- a/sources/plugins/basicstyles/lang/hi.js
+++ b/sources/plugins/basicstyles/lang/hi.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'basicstyles', 'hi', { 5CKEDITOR.plugins.setLang( 'basicstyles', 'hi', {
diff --git a/sources/plugins/basicstyles/lang/hr.js b/sources/plugins/basicstyles/lang/hr.js
index ef1c439..94bc730 100644
--- a/sources/plugins/basicstyles/lang/hr.js
+++ b/sources/plugins/basicstyles/lang/hr.js
@@ -1,10 +1,10 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'basicstyles', 'hr', { 5CKEDITOR.plugins.setLang( 'basicstyles', 'hr', {
6 bold: 'Podebljaj', 6 bold: 'Podebljano',
7 italic: 'Ukosi', 7 italic: 'Ukošeno',
8 strike: 'Precrtano', 8 strike: 'Precrtano',
9 subscript: 'Subscript', 9 subscript: 'Subscript',
10 superscript: 'Superscript', 10 superscript: 'Superscript',
diff --git a/sources/plugins/basicstyles/lang/hu.js b/sources/plugins/basicstyles/lang/hu.js
index 36081b3..41d3a32 100644
--- a/sources/plugins/basicstyles/lang/hu.js
+++ b/sources/plugins/basicstyles/lang/hu.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'basicstyles', 'hu', { 5CKEDITOR.plugins.setLang( 'basicstyles', 'hu', {
diff --git a/sources/plugins/basicstyles/lang/id.js b/sources/plugins/basicstyles/lang/id.js
index 8bad46e..39e916d 100644
--- a/sources/plugins/basicstyles/lang/id.js
+++ b/sources/plugins/basicstyles/lang/id.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'basicstyles', 'id', { 5CKEDITOR.plugins.setLang( 'basicstyles', 'id', {
diff --git a/sources/plugins/basicstyles/lang/is.js b/sources/plugins/basicstyles/lang/is.js
index 67a4cff..d22f80a 100644
--- a/sources/plugins/basicstyles/lang/is.js
+++ b/sources/plugins/basicstyles/lang/is.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'basicstyles', 'is', { 5CKEDITOR.plugins.setLang( 'basicstyles', 'is', {
diff --git a/sources/plugins/basicstyles/lang/it.js b/sources/plugins/basicstyles/lang/it.js
index bbd38a7..12d5594 100644
--- a/sources/plugins/basicstyles/lang/it.js
+++ b/sources/plugins/basicstyles/lang/it.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'basicstyles', 'it', { 5CKEDITOR.plugins.setLang( 'basicstyles', 'it', {
diff --git a/sources/plugins/basicstyles/lang/ja.js b/sources/plugins/basicstyles/lang/ja.js
index a28beba..1d7ba09 100644
--- a/sources/plugins/basicstyles/lang/ja.js
+++ b/sources/plugins/basicstyles/lang/ja.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'basicstyles', 'ja', { 5CKEDITOR.plugins.setLang( 'basicstyles', 'ja', {
diff --git a/sources/plugins/basicstyles/lang/ka.js b/sources/plugins/basicstyles/lang/ka.js
index 10be39d..e1ea391 100644
--- a/sources/plugins/basicstyles/lang/ka.js
+++ b/sources/plugins/basicstyles/lang/ka.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'basicstyles', 'ka', { 5CKEDITOR.plugins.setLang( 'basicstyles', 'ka', {
diff --git a/sources/plugins/basicstyles/lang/km.js b/sources/plugins/basicstyles/lang/km.js
index 256559c..a55d004 100644
--- a/sources/plugins/basicstyles/lang/km.js
+++ b/sources/plugins/basicstyles/lang/km.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'basicstyles', 'km', { 5CKEDITOR.plugins.setLang( 'basicstyles', 'km', {
diff --git a/sources/plugins/basicstyles/lang/ko.js b/sources/plugins/basicstyles/lang/ko.js
index 0a988f4..7a61f11 100644
--- a/sources/plugins/basicstyles/lang/ko.js
+++ b/sources/plugins/basicstyles/lang/ko.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'basicstyles', 'ko', { 5CKEDITOR.plugins.setLang( 'basicstyles', 'ko', {
diff --git a/sources/plugins/basicstyles/lang/ku.js b/sources/plugins/basicstyles/lang/ku.js
index 99100cb..fa3c16d 100644
--- a/sources/plugins/basicstyles/lang/ku.js
+++ b/sources/plugins/basicstyles/lang/ku.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'basicstyles', 'ku', { 5CKEDITOR.plugins.setLang( 'basicstyles', 'ku', {
diff --git a/sources/plugins/basicstyles/lang/lt.js b/sources/plugins/basicstyles/lang/lt.js
index 8ea74dd..edb6949 100644
--- a/sources/plugins/basicstyles/lang/lt.js
+++ b/sources/plugins/basicstyles/lang/lt.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'basicstyles', 'lt', { 5CKEDITOR.plugins.setLang( 'basicstyles', 'lt', {
diff --git a/sources/plugins/basicstyles/lang/lv.js b/sources/plugins/basicstyles/lang/lv.js
index 38bbe70..4efd61f 100644
--- a/sources/plugins/basicstyles/lang/lv.js
+++ b/sources/plugins/basicstyles/lang/lv.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'basicstyles', 'lv', { 5CKEDITOR.plugins.setLang( 'basicstyles', 'lv', {
diff --git a/sources/plugins/basicstyles/lang/mk.js b/sources/plugins/basicstyles/lang/mk.js
index 478ce87..7d56475 100644
--- a/sources/plugins/basicstyles/lang/mk.js
+++ b/sources/plugins/basicstyles/lang/mk.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'basicstyles', 'mk', { 5CKEDITOR.plugins.setLang( 'basicstyles', 'mk', {
diff --git a/sources/plugins/basicstyles/lang/mn.js b/sources/plugins/basicstyles/lang/mn.js
index 7edec37..71fa4da 100644
--- a/sources/plugins/basicstyles/lang/mn.js
+++ b/sources/plugins/basicstyles/lang/mn.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'basicstyles', 'mn', { 5CKEDITOR.plugins.setLang( 'basicstyles', 'mn', {
diff --git a/sources/plugins/basicstyles/lang/ms.js b/sources/plugins/basicstyles/lang/ms.js
index 0fc9f9b..0fd97ee 100644
--- a/sources/plugins/basicstyles/lang/ms.js
+++ b/sources/plugins/basicstyles/lang/ms.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'basicstyles', 'ms', { 5CKEDITOR.plugins.setLang( 'basicstyles', 'ms', {
diff --git a/sources/plugins/basicstyles/lang/nb.js b/sources/plugins/basicstyles/lang/nb.js
index b5f922a..6ab2325 100644
--- a/sources/plugins/basicstyles/lang/nb.js
+++ b/sources/plugins/basicstyles/lang/nb.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'basicstyles', 'nb', { 5CKEDITOR.plugins.setLang( 'basicstyles', 'nb', {
diff --git a/sources/plugins/basicstyles/lang/nl.js b/sources/plugins/basicstyles/lang/nl.js
index 92cad81..b2ddb86 100644
--- a/sources/plugins/basicstyles/lang/nl.js
+++ b/sources/plugins/basicstyles/lang/nl.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'basicstyles', 'nl', { 5CKEDITOR.plugins.setLang( 'basicstyles', 'nl', {
diff --git a/sources/plugins/basicstyles/lang/no.js b/sources/plugins/basicstyles/lang/no.js
index 300659a..9fdcf1b 100644
--- a/sources/plugins/basicstyles/lang/no.js
+++ b/sources/plugins/basicstyles/lang/no.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'basicstyles', 'no', { 5CKEDITOR.plugins.setLang( 'basicstyles', 'no', {
diff --git a/sources/plugins/basicstyles/lang/oc.js b/sources/plugins/basicstyles/lang/oc.js
new file mode 100644
index 0000000..56d7df0
--- /dev/null
+++ b/sources/plugins/basicstyles/lang/oc.js
@@ -0,0 +1,12 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'basicstyles', 'oc', {
6 bold: 'Gras',
7 italic: 'Italica',
8 strike: 'Raiat',
9 subscript: 'Indici',
10 superscript: 'Exponent',
11 underline: 'Solinhat'
12} );
diff --git a/sources/plugins/basicstyles/lang/pl.js b/sources/plugins/basicstyles/lang/pl.js
index 321f895..5739141 100644
--- a/sources/plugins/basicstyles/lang/pl.js
+++ b/sources/plugins/basicstyles/lang/pl.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'basicstyles', 'pl', { 5CKEDITOR.plugins.setLang( 'basicstyles', 'pl', {
diff --git a/sources/plugins/basicstyles/lang/pt-br.js b/sources/plugins/basicstyles/lang/pt-br.js
index fad08d4..b1bbd20 100644
--- a/sources/plugins/basicstyles/lang/pt-br.js
+++ b/sources/plugins/basicstyles/lang/pt-br.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'basicstyles', 'pt-br', { 5CKEDITOR.plugins.setLang( 'basicstyles', 'pt-br', {
diff --git a/sources/plugins/basicstyles/lang/pt.js b/sources/plugins/basicstyles/lang/pt.js
index 85de020..7421106 100644
--- a/sources/plugins/basicstyles/lang/pt.js
+++ b/sources/plugins/basicstyles/lang/pt.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'basicstyles', 'pt', { 5CKEDITOR.plugins.setLang( 'basicstyles', 'pt', {
@@ -7,6 +7,6 @@ CKEDITOR.plugins.setLang( 'basicstyles', 'pt', {
7 italic: 'Itálico', 7 italic: 'Itálico',
8 strike: 'Rasurado', 8 strike: 'Rasurado',
9 subscript: 'Superior à linha', 9 subscript: 'Superior à linha',
10 superscript: 'Inferior à Linha', 10 superscript: 'Superior à linha',
11 underline: 'Sublinhado' 11 underline: 'Sublinhado'
12} ); 12} );
diff --git a/sources/plugins/basicstyles/lang/ro.js b/sources/plugins/basicstyles/lang/ro.js
index c274ded..e760a45 100644
--- a/sources/plugins/basicstyles/lang/ro.js
+++ b/sources/plugins/basicstyles/lang/ro.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'basicstyles', 'ro', { 5CKEDITOR.plugins.setLang( 'basicstyles', 'ro', {
diff --git a/sources/plugins/basicstyles/lang/ru.js b/sources/plugins/basicstyles/lang/ru.js
index 25cdf88..0a38898 100644
--- a/sources/plugins/basicstyles/lang/ru.js
+++ b/sources/plugins/basicstyles/lang/ru.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'basicstyles', 'ru', { 5CKEDITOR.plugins.setLang( 'basicstyles', 'ru', {
diff --git a/sources/plugins/basicstyles/lang/si.js b/sources/plugins/basicstyles/lang/si.js
index fbd052e..58b5a45 100644
--- a/sources/plugins/basicstyles/lang/si.js
+++ b/sources/plugins/basicstyles/lang/si.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'basicstyles', 'si', { 5CKEDITOR.plugins.setLang( 'basicstyles', 'si', {
diff --git a/sources/plugins/basicstyles/lang/sk.js b/sources/plugins/basicstyles/lang/sk.js
index 3a19d9b..42e351d 100644
--- a/sources/plugins/basicstyles/lang/sk.js
+++ b/sources/plugins/basicstyles/lang/sk.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'basicstyles', 'sk', { 5CKEDITOR.plugins.setLang( 'basicstyles', 'sk', {
diff --git a/sources/plugins/basicstyles/lang/sl.js b/sources/plugins/basicstyles/lang/sl.js
index d6a0dbc..3ccb5ba 100644
--- a/sources/plugins/basicstyles/lang/sl.js
+++ b/sources/plugins/basicstyles/lang/sl.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'basicstyles', 'sl', { 5CKEDITOR.plugins.setLang( 'basicstyles', 'sl', {
diff --git a/sources/plugins/basicstyles/lang/sq.js b/sources/plugins/basicstyles/lang/sq.js
index 7604a7a..5c6d704 100644
--- a/sources/plugins/basicstyles/lang/sq.js
+++ b/sources/plugins/basicstyles/lang/sq.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'basicstyles', 'sq', { 5CKEDITOR.plugins.setLang( 'basicstyles', 'sq', {
diff --git a/sources/plugins/basicstyles/lang/sr-latn.js b/sources/plugins/basicstyles/lang/sr-latn.js
index 6c87984..535dd50 100644
--- a/sources/plugins/basicstyles/lang/sr-latn.js
+++ b/sources/plugins/basicstyles/lang/sr-latn.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'basicstyles', 'sr-latn', { 5CKEDITOR.plugins.setLang( 'basicstyles', 'sr-latn', {
diff --git a/sources/plugins/basicstyles/lang/sr.js b/sources/plugins/basicstyles/lang/sr.js
index f0cc6eb..2e7564e 100644
--- a/sources/plugins/basicstyles/lang/sr.js
+++ b/sources/plugins/basicstyles/lang/sr.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'basicstyles', 'sr', { 5CKEDITOR.plugins.setLang( 'basicstyles', 'sr', {
diff --git a/sources/plugins/basicstyles/lang/sv.js b/sources/plugins/basicstyles/lang/sv.js
index d11c18c..efa20a8 100644
--- a/sources/plugins/basicstyles/lang/sv.js
+++ b/sources/plugins/basicstyles/lang/sv.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'basicstyles', 'sv', { 5CKEDITOR.plugins.setLang( 'basicstyles', 'sv', {
diff --git a/sources/plugins/basicstyles/lang/th.js b/sources/plugins/basicstyles/lang/th.js
index 91c0cea..82cab00 100644
--- a/sources/plugins/basicstyles/lang/th.js
+++ b/sources/plugins/basicstyles/lang/th.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'basicstyles', 'th', { 5CKEDITOR.plugins.setLang( 'basicstyles', 'th', {
diff --git a/sources/plugins/basicstyles/lang/tr.js b/sources/plugins/basicstyles/lang/tr.js
index 62f6d09..0e36c82 100644
--- a/sources/plugins/basicstyles/lang/tr.js
+++ b/sources/plugins/basicstyles/lang/tr.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'basicstyles', 'tr', { 5CKEDITOR.plugins.setLang( 'basicstyles', 'tr', {
diff --git a/sources/plugins/basicstyles/lang/tt.js b/sources/plugins/basicstyles/lang/tt.js
index 13e0217..c8da547 100644
--- a/sources/plugins/basicstyles/lang/tt.js
+++ b/sources/plugins/basicstyles/lang/tt.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'basicstyles', 'tt', { 5CKEDITOR.plugins.setLang( 'basicstyles', 'tt', {
diff --git a/sources/plugins/basicstyles/lang/ug.js b/sources/plugins/basicstyles/lang/ug.js
index 780e7b7..aa28429 100644
--- a/sources/plugins/basicstyles/lang/ug.js
+++ b/sources/plugins/basicstyles/lang/ug.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'basicstyles', 'ug', { 5CKEDITOR.plugins.setLang( 'basicstyles', 'ug', {
diff --git a/sources/plugins/basicstyles/lang/uk.js b/sources/plugins/basicstyles/lang/uk.js
index 66e9f6a..3ec1acc 100644
--- a/sources/plugins/basicstyles/lang/uk.js
+++ b/sources/plugins/basicstyles/lang/uk.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'basicstyles', 'uk', { 5CKEDITOR.plugins.setLang( 'basicstyles', 'uk', {
diff --git a/sources/plugins/basicstyles/lang/vi.js b/sources/plugins/basicstyles/lang/vi.js
index 510ec58..c0aaa69 100644
--- a/sources/plugins/basicstyles/lang/vi.js
+++ b/sources/plugins/basicstyles/lang/vi.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'basicstyles', 'vi', { 5CKEDITOR.plugins.setLang( 'basicstyles', 'vi', {
diff --git a/sources/plugins/basicstyles/lang/zh-cn.js b/sources/plugins/basicstyles/lang/zh-cn.js
index 1b7e89f..f43d23d 100644
--- a/sources/plugins/basicstyles/lang/zh-cn.js
+++ b/sources/plugins/basicstyles/lang/zh-cn.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'basicstyles', 'zh-cn', { 5CKEDITOR.plugins.setLang( 'basicstyles', 'zh-cn', {
diff --git a/sources/plugins/basicstyles/lang/zh.js b/sources/plugins/basicstyles/lang/zh.js
index 6e75580..d74943c 100644
--- a/sources/plugins/basicstyles/lang/zh.js
+++ b/sources/plugins/basicstyles/lang/zh.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'basicstyles', 'zh', { 5CKEDITOR.plugins.setLang( 'basicstyles', 'zh', {
diff --git a/sources/plugins/basicstyles/plugin.js b/sources/plugins/basicstyles/plugin.js
index 6960e2e..474ea09 100644
--- a/sources/plugins/basicstyles/plugin.js
+++ b/sources/plugins/basicstyles/plugin.js
@@ -1,11 +1,11 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
6CKEDITOR.plugins.add( 'basicstyles', { 6CKEDITOR.plugins.add( 'basicstyles', {
7 // jscs:disable maximumLineLength 7 // jscs:disable maximumLineLength
8 lang: 'af,ar,bg,bn,bs,ca,cs,cy,da,de,de-ch,el,en,en-au,en-ca,en-gb,eo,es,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,pl,pt,pt-br,ro,ru,si,sk,sl,sq,sr,sr-latn,sv,th,tr,tt,ug,uk,vi,zh,zh-cn', // %REMOVE_LINE_CORE% 8 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', // %REMOVE_LINE_CORE%
9 // jscs:enable maximumLineLength 9 // jscs:enable maximumLineLength
10 icons: 'bold,italic,underline,strike,subscript,superscript', // %REMOVE_LINE_CORE% 10 icons: 'bold,italic,underline,strike,subscript,superscript', // %REMOVE_LINE_CORE%
11 hidpi: true, // %REMOVE_LINE_CORE% 11 hidpi: true, // %REMOVE_LINE_CORE%
diff --git a/sources/plugins/button/lang/af.js b/sources/plugins/button/lang/af.js
index af03793..6ccebfa 100644
--- a/sources/plugins/button/lang/af.js
+++ b/sources/plugins/button/lang/af.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/button/lang/ar.js b/sources/plugins/button/lang/ar.js
index 28f4346..025068d 100644
--- a/sources/plugins/button/lang/ar.js
+++ b/sources/plugins/button/lang/ar.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/button/lang/ast.js b/sources/plugins/button/lang/ast.js
deleted file mode 100644
index 5ab7bf6..0000000
--- a/sources/plugins/button/lang/ast.js
+++ /dev/null
@@ -1,8 +0,0 @@
1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */
5
6CKEDITOR.plugins.setLang( 'button', 'ast', {
7 selectedLabel: '%1 (Seleicionáu)'
8} );
diff --git a/sources/plugins/button/lang/az.js b/sources/plugins/button/lang/az.js
new file mode 100644
index 0000000..30ac85e
--- /dev/null
+++ b/sources/plugins/button/lang/az.js
@@ -0,0 +1,8 @@
1/**
2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */
5
6CKEDITOR.plugins.setLang( 'button', 'az', {
7 selectedLabel: '%1 (seçilib)'
8} );
diff --git a/sources/plugins/button/lang/bg.js b/sources/plugins/button/lang/bg.js
index dfe5be1..0b146bb 100644
--- a/sources/plugins/button/lang/bg.js
+++ b/sources/plugins/button/lang/bg.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/button/lang/ca.js b/sources/plugins/button/lang/ca.js
index 2feb710..0891d49 100644
--- a/sources/plugins/button/lang/ca.js
+++ b/sources/plugins/button/lang/ca.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/button/lang/cs.js b/sources/plugins/button/lang/cs.js
index 01f4a86..552a05c 100644
--- a/sources/plugins/button/lang/cs.js
+++ b/sources/plugins/button/lang/cs.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/button/lang/da.js b/sources/plugins/button/lang/da.js
index 021201f..255dcc5 100644
--- a/sources/plugins/button/lang/da.js
+++ b/sources/plugins/button/lang/da.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/button/lang/de-ch.js b/sources/plugins/button/lang/de-ch.js
index 680cc20..63430d7 100644
--- a/sources/plugins/button/lang/de-ch.js
+++ b/sources/plugins/button/lang/de-ch.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/button/lang/de.js b/sources/plugins/button/lang/de.js
index d31afaa..dca3daa 100644
--- a/sources/plugins/button/lang/de.js
+++ b/sources/plugins/button/lang/de.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/button/lang/el.js b/sources/plugins/button/lang/el.js
index 84e630c..1718816 100644
--- a/sources/plugins/button/lang/el.js
+++ b/sources/plugins/button/lang/el.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/button/lang/en-gb.js b/sources/plugins/button/lang/en-gb.js
index b4060d3..d7daefc 100644
--- a/sources/plugins/button/lang/en-gb.js
+++ b/sources/plugins/button/lang/en-gb.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/button/lang/en.js b/sources/plugins/button/lang/en.js
index b0b4807..d5c4088 100644
--- a/sources/plugins/button/lang/en.js
+++ b/sources/plugins/button/lang/en.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/button/lang/eo.js b/sources/plugins/button/lang/eo.js
index 733c960..acf0c13 100644
--- a/sources/plugins/button/lang/eo.js
+++ b/sources/plugins/button/lang/eo.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/button/lang/es-mx.js b/sources/plugins/button/lang/es-mx.js
new file mode 100644
index 0000000..3b1b47b
--- /dev/null
+++ b/sources/plugins/button/lang/es-mx.js
@@ -0,0 +1,8 @@
1/**
2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */
5
6CKEDITOR.plugins.setLang( 'button', 'es-mx', {
7 selectedLabel: '%1 (Seleccionado)'
8} );
diff --git a/sources/plugins/button/lang/es.js b/sources/plugins/button/lang/es.js
index 8b4695b..cb46c6f 100644
--- a/sources/plugins/button/lang/es.js
+++ b/sources/plugins/button/lang/es.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/button/lang/eu.js b/sources/plugins/button/lang/eu.js
index fd60b16..c49d92a 100644
--- a/sources/plugins/button/lang/eu.js
+++ b/sources/plugins/button/lang/eu.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/button/lang/fa.js b/sources/plugins/button/lang/fa.js
index 8e923b0..358c88a 100644
--- a/sources/plugins/button/lang/fa.js
+++ b/sources/plugins/button/lang/fa.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/button/lang/fi.js b/sources/plugins/button/lang/fi.js
index 2668a8d..4822e74 100644
--- a/sources/plugins/button/lang/fi.js
+++ b/sources/plugins/button/lang/fi.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/button/lang/fr.js b/sources/plugins/button/lang/fr.js
index 1039c90..1b1c6d3 100644
--- a/sources/plugins/button/lang/fr.js
+++ b/sources/plugins/button/lang/fr.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/button/lang/gl.js b/sources/plugins/button/lang/gl.js
index e73ea65..3e4e0b7 100644
--- a/sources/plugins/button/lang/gl.js
+++ b/sources/plugins/button/lang/gl.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/button/lang/he.js b/sources/plugins/button/lang/he.js
index 8890cf9..c67afb6 100644
--- a/sources/plugins/button/lang/he.js
+++ b/sources/plugins/button/lang/he.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/button/lang/hr.js b/sources/plugins/button/lang/hr.js
new file mode 100644
index 0000000..031f8f5
--- /dev/null
+++ b/sources/plugins/button/lang/hr.js
@@ -0,0 +1,8 @@
1/**
2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */
5
6CKEDITOR.plugins.setLang( 'button', 'hr', {
7 selectedLabel: '%1 (Odabrano)'
8} );
diff --git a/sources/plugins/button/lang/hu.js b/sources/plugins/button/lang/hu.js
index 9dc42a5..0dffac1 100644
--- a/sources/plugins/button/lang/hu.js
+++ b/sources/plugins/button/lang/hu.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/button/lang/id.js b/sources/plugins/button/lang/id.js
index 52726a8..f973ffc 100644
--- a/sources/plugins/button/lang/id.js
+++ b/sources/plugins/button/lang/id.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/button/lang/it.js b/sources/plugins/button/lang/it.js
index 0b28b8c..359dc9a 100644
--- a/sources/plugins/button/lang/it.js
+++ b/sources/plugins/button/lang/it.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/button/lang/ja.js b/sources/plugins/button/lang/ja.js
index 559d08c..e2b064f 100644
--- a/sources/plugins/button/lang/ja.js
+++ b/sources/plugins/button/lang/ja.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/button/lang/km.js b/sources/plugins/button/lang/km.js
index ecfc774..9437a2f 100644
--- a/sources/plugins/button/lang/km.js
+++ b/sources/plugins/button/lang/km.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/button/lang/ko.js b/sources/plugins/button/lang/ko.js
index 2e2cc61..64ad966 100644
--- a/sources/plugins/button/lang/ko.js
+++ b/sources/plugins/button/lang/ko.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/button/lang/ku.js b/sources/plugins/button/lang/ku.js
index b794e23..d342dd0 100644
--- a/sources/plugins/button/lang/ku.js
+++ b/sources/plugins/button/lang/ku.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/button/lang/lt.js b/sources/plugins/button/lang/lt.js
index e17e9e5..b492bd5 100644
--- a/sources/plugins/button/lang/lt.js
+++ b/sources/plugins/button/lang/lt.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/button/lang/nb.js b/sources/plugins/button/lang/nb.js
index b91a823..8d38121 100644
--- a/sources/plugins/button/lang/nb.js
+++ b/sources/plugins/button/lang/nb.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/button/lang/nl.js b/sources/plugins/button/lang/nl.js
index 0654cec..3e00f80 100644
--- a/sources/plugins/button/lang/nl.js
+++ b/sources/plugins/button/lang/nl.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/button/lang/no.js b/sources/plugins/button/lang/no.js
new file mode 100644
index 0000000..e6252b1
--- /dev/null
+++ b/sources/plugins/button/lang/no.js
@@ -0,0 +1,8 @@
1/**
2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */
5
6CKEDITOR.plugins.setLang( 'button', 'no', {
7 selectedLabel: '%1 (Valgt)'
8} );
diff --git a/sources/plugins/button/lang/oc.js b/sources/plugins/button/lang/oc.js
new file mode 100644
index 0000000..cb91761
--- /dev/null
+++ b/sources/plugins/button/lang/oc.js
@@ -0,0 +1,8 @@
1/**
2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */
5
6CKEDITOR.plugins.setLang( 'button', 'oc', {
7 selectedLabel: '%1 (Seleccionat)'
8} );
diff --git a/sources/plugins/button/lang/pl.js b/sources/plugins/button/lang/pl.js
index bc980d0..304d07a 100644
--- a/sources/plugins/button/lang/pl.js
+++ b/sources/plugins/button/lang/pl.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/button/lang/pt-br.js b/sources/plugins/button/lang/pt-br.js
index f1cd7c4..e3fdf84 100644
--- a/sources/plugins/button/lang/pt-br.js
+++ b/sources/plugins/button/lang/pt-br.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/button/lang/pt.js b/sources/plugins/button/lang/pt.js
index adc8251..e02c45a 100644
--- a/sources/plugins/button/lang/pt.js
+++ b/sources/plugins/button/lang/pt.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/button/lang/ro.js b/sources/plugins/button/lang/ro.js
index c70153c..0669dd5 100644
--- a/sources/plugins/button/lang/ro.js
+++ b/sources/plugins/button/lang/ro.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/button/lang/ru.js b/sources/plugins/button/lang/ru.js
index 06ee190..085f6ee 100644
--- a/sources/plugins/button/lang/ru.js
+++ b/sources/plugins/button/lang/ru.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/button/lang/sk.js b/sources/plugins/button/lang/sk.js
index adbadf2..12bec80 100644
--- a/sources/plugins/button/lang/sk.js
+++ b/sources/plugins/button/lang/sk.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/button/lang/sl.js b/sources/plugins/button/lang/sl.js
index 85e5cc2..c6633ae 100644
--- a/sources/plugins/button/lang/sl.js
+++ b/sources/plugins/button/lang/sl.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/button/lang/sq.js b/sources/plugins/button/lang/sq.js
index 1690634..2e53e4c 100644
--- a/sources/plugins/button/lang/sq.js
+++ b/sources/plugins/button/lang/sq.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/button/lang/sv.js b/sources/plugins/button/lang/sv.js
index db15526..b89e475 100644
--- a/sources/plugins/button/lang/sv.js
+++ b/sources/plugins/button/lang/sv.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/button/lang/tr.js b/sources/plugins/button/lang/tr.js
index a87bb12..30d3670 100644
--- a/sources/plugins/button/lang/tr.js
+++ b/sources/plugins/button/lang/tr.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/button/lang/tt.js b/sources/plugins/button/lang/tt.js
index 79044c6..6324922 100644
--- a/sources/plugins/button/lang/tt.js
+++ b/sources/plugins/button/lang/tt.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/button/lang/ug.js b/sources/plugins/button/lang/ug.js
index fe30252..fa3a90c 100644
--- a/sources/plugins/button/lang/ug.js
+++ b/sources/plugins/button/lang/ug.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/button/lang/uk.js b/sources/plugins/button/lang/uk.js
index a40cf8f..7b49fe2 100644
--- a/sources/plugins/button/lang/uk.js
+++ b/sources/plugins/button/lang/uk.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/button/lang/vi.js b/sources/plugins/button/lang/vi.js
index a3ea973..b6a5911 100644
--- a/sources/plugins/button/lang/vi.js
+++ b/sources/plugins/button/lang/vi.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/button/lang/zh-cn.js b/sources/plugins/button/lang/zh-cn.js
index 1271943..fade7d7 100644
--- a/sources/plugins/button/lang/zh-cn.js
+++ b/sources/plugins/button/lang/zh-cn.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/button/lang/zh.js b/sources/plugins/button/lang/zh.js
index 5fee74f..7479462 100644
--- a/sources/plugins/button/lang/zh.js
+++ b/sources/plugins/button/lang/zh.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/button/plugin.js b/sources/plugins/button/plugin.js
index 0ce75c6..e91fa86 100644
--- a/sources/plugins/button/plugin.js
+++ b/sources/plugins/button/plugin.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -12,6 +12,7 @@
12 ' hidefocus="true"' + 12 ' hidefocus="true"' +
13 ' role="button"' + 13 ' role="button"' +
14 ' aria-labelledby="{id}_label"' + 14 ' aria-labelledby="{id}_label"' +
15 ' aria-describedby="{id}_description"' +
15 ' aria-haspopup="{hasArrow}"' + 16 ' aria-haspopup="{hasArrow}"' +
16 ' aria-disabled="{ariaDisabled}"'; 17 ' aria-disabled="{ariaDisabled}"';
17 18
@@ -28,13 +29,14 @@
28 29
29 template += ' onkeydown="return CKEDITOR.tools.callFunction({keydownFn},event);"' + 30 template += ' onkeydown="return CKEDITOR.tools.callFunction({keydownFn},event);"' +
30 ' onfocus="return CKEDITOR.tools.callFunction({focusFn},event);" ' + 31 ' onfocus="return CKEDITOR.tools.callFunction({focusFn},event);" ' +
31 ( CKEDITOR.env.ie ? 'onclick="return false;" onmouseup' : 'onclick' ) + // #188 32 ( CKEDITOR.env.ie ? 'onclick="return false;" onmouseup' : 'onclick' ) + // http://dev.ckeditor.com/ticket/188
32 '="CKEDITOR.tools.callFunction({clickFn},this);return false;">' + 33 '="CKEDITOR.tools.callFunction({clickFn},this);return false;">' +
33 '<span class="cke_button_icon cke_button__{iconName}_icon" style="{style}"'; 34 '<span class="cke_button_icon cke_button__{iconName}_icon" style="{style}"';
34 35
35 36
36 template += '>&nbsp;</span>' + 37 template += '>&nbsp;</span>' +
37 '<span id="{id}_label" class="cke_button_label cke_button__{name}_label" aria-hidden="false">{label}</span>' + 38 '<span id="{id}_label" class="cke_button_label cke_button__{name}_label" aria-hidden="false">{label}</span>' +
39 '<span id="{id}_description" class="cke_button_label" aria-hidden="false">{ariaShortcut}</span>' +
38 '{arrowHtml}' + 40 '{arrowHtml}' +
39 '</a>'; 41 '</a>';
40 42
@@ -47,7 +49,7 @@
47 btnTpl = CKEDITOR.addTemplate( 'button', template ); 49 btnTpl = CKEDITOR.addTemplate( 'button', template );
48 50
49 CKEDITOR.plugins.add( 'button', { 51 CKEDITOR.plugins.add( 'button', {
50 lang: 'af,ar,bg,ca,cs,da,de,de-ch,el,en,en-gb,eo,es,eu,fa,fi,fr,gl,he,hu,id,it,ja,km,ko,ku,lt,nb,nl,pl,pt,pt-br,ro,ru,sk,sl,sq,sv,tr,tt,ug,uk,vi,zh,zh-cn', // %REMOVE_LINE_CORE% 52 lang: 'af,ar,az,bg,ca,cs,da,de,de-ch,el,en,en-gb,eo,es,es-mx,eu,fa,fi,fr,gl,he,hr,hu,id,it,ja,km,ko,ku,lt,nb,nl,no,oc,pl,pt,pt-br,ro,ru,sk,sl,sq,sv,tr,tt,ug,uk,vi,zh,zh-cn', // %REMOVE_LINE_CORE%
51 beforeInit: function( editor ) { 53 beforeInit: function( editor ) {
52 editor.ui.addHandler( CKEDITOR.UI_BUTTON, CKEDITOR.ui.button.handler ); 54 editor.ui.addHandler( CKEDITOR.UI_BUTTON, CKEDITOR.ui.button.handler );
53 } 55 }
@@ -138,7 +140,9 @@
138 stateName = '', 140 stateName = '',
139 command = this.command, 141 command = this.command,
140 // Get the command name. 142 // Get the command name.
141 clickFn; 143 clickFn,
144 keystroke,
145 shortcut;
142 146
143 this._.editor = editor; 147 this._.editor = editor;
144 148
@@ -185,7 +189,7 @@
185 } 189 }
186 instance.execute(); 190 instance.execute();
187 191
188 // Fixed iOS focus issue when your press disabled button (#12381). 192 // Fixed iOS focus issue when your press disabled button (http://dev.ckeditor.com/ticket/12381).
189 if ( env.iOS ) { 193 if ( env.iOS ) {
190 editor.focus(); 194 editor.focus();
191 } 195 }
@@ -239,13 +243,20 @@
239 }, this ); 243 }, this );
240 } 244 }
241 245
242 if ( !command ) 246 if ( !command ) {
243 stateName += 'off'; 247 stateName += 'off';
248 } else {
249 keystroke = editor.getCommandKeystroke( command );
250
251 if ( keystroke ) {
252 shortcut = CKEDITOR.tools.keystrokeToString( editor.lang.common.keyboard, keystroke );
253 }
254 }
244 255
245 var name = this.name || this.command, 256 var name = this.name || this.command,
246 iconName = name; 257 iconName = name;
247 258
248 // Check if we're pointing to an icon defined by another command. (#9555) 259 // Check if we're pointing to an icon defined by another command. (http://dev.ckeditor.com/ticket/9555)
249 if ( this.icon && !( /\./ ).test( this.icon ) ) { 260 if ( this.icon && !( /\./ ).test( this.icon ) ) {
250 iconName = this.icon; 261 iconName = this.icon;
251 this.icon = null; 262 this.icon = null;
@@ -259,7 +270,8 @@
259 cls: this.className || '', 270 cls: this.className || '',
260 state: stateName, 271 state: stateName,
261 ariaDisabled: stateName == 'disabled' ? 'true' : 'false', 272 ariaDisabled: stateName == 'disabled' ? 'true' : 'false',
262 title: this.title, 273 title: this.title + ( shortcut ? ' (' + shortcut.display + ')' : '' ),
274 ariaShortcut: shortcut ? editor.lang.common.keyboardShortcut + ' ' + shortcut.aria : '',
263 titleJs: env.gecko && !env.hc ? '' : ( this.title || '' ).replace( "'", '' ), 275 titleJs: env.gecko && !env.hc ? '' : ( this.title || '' ).replace( "'", '' ),
264 hasArrow: this.hasArrow ? 'true' : 'false', 276 hasArrow: this.hasArrow ? 'true' : 'false',
265 keydownFn: keydownFn, 277 keydownFn: keydownFn,
@@ -299,7 +311,7 @@
299 element.removeAttribute( 'aria-disabled' ); 311 element.removeAttribute( 'aria-disabled' );
300 312
301 if ( !this.hasArrow ) { 313 if ( !this.hasArrow ) {
302 // Note: aria-pressed attribute should not be added to menuButton instances. (#11331) 314 // Note: aria-pressed attribute should not be added to menuButton instances. (http://dev.ckeditor.com/ticket/11331)
303 state == CKEDITOR.TRISTATE_ON ? 315 state == CKEDITOR.TRISTATE_ON ?
304 element.setAttribute( 'aria-pressed', true ) : 316 element.setAttribute( 'aria-pressed', true ) :
305 element.removeAttribute( 'aria-pressed' ); 317 element.removeAttribute( 'aria-pressed' );
diff --git a/sources/plugins/clipboard/dev/clipboard.html b/sources/plugins/clipboard/dev/clipboard.html
new file mode 100644
index 0000000..735d00e
--- /dev/null
+++ b/sources/plugins/clipboard/dev/clipboard.html
@@ -0,0 +1,190 @@
1<!DOCTYPE html>
2<!--
3Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
4For licensing, see LICENSE.md or http://ckeditor.com/license
5-->
6<html>
7<head>
8 <meta charset="utf-8">
9 <title>Clipboard playground &ndash; CKEditor Sample</title>
10 <script src="../../../ckeditor.js"></script>
11 <link href="../../../samples/old/sample.css" rel="stylesheet">
12 <style>
13body {
14 margin: 0;
15}
16
17#editables, #console
18{
19 width: 48%;
20}
21#editable {
22 padding: 5px 10px;
23}
24
25#console {
26 position: fixed;
27 top: 10px;
28 right: 30px;
29 height: 500px;
30 border: solid 3px #555;
31 overflow: auto;
32}
33#console > p {
34 border-bottom: solid 1px #555;
35 margin: 0;
36 padding: 0 5px;
37 background: rgba(0, 0, 0, 0.25);
38 transition: background-color 1s;
39}
40#console > p.old {
41 background: rgba(0, 0, 0, 0);
42}
43#console time, #console .prompt {
44 padding: 0 5px;
45 display: inline-block;
46}
47#console time {
48 background: #999;
49 background: rgba(0, 0, 0, 0.5 );
50 color: #FFF;
51 margin-left: -5px;
52}
53#console .prompt {
54 background: #DDD;
55 background: rgba(0, 0, 0, 0.1 );
56 min-width: 200px;
57}
58.someClass {
59 color: blue;
60}
61.specChar {
62 color: #777;
63 background-color: #EEE;
64 background-color: rgba(0, 0, 0, 0.1);
65 font-size: 0.8em;
66 border-radius: 2px;
67 padding: 1px;
68}
69 </style>
70</head>
71<body>
72 <h1 class="samples">
73 CKEditor Sample &mdash; clipboard plugin playground
74 </h1>
75 <div id="editables">
76 <p>
77 <label for="editor1">
78 Editor 1:</label>
79 <textarea cols="80" id="editor1" name="editor1" rows="10">&lt;p&gt;This is some &lt;strong&gt;sample text&lt;/strong&gt;. You are using &lt;a href="http://ckeditor.com/"&gt;CKEditor&lt;/a&gt;.&lt;/p&gt;</textarea>
80 </p>
81 <p>
82 <label for="editor2">
83 Editor 2:</label>
84 <textarea cols="80" id="editor2" name="editor2" rows="10">&lt;p&gt;This is more &lt;strong class="MsoNormal"&gt;sample text&lt;/strong&gt;.&lt;/p&gt;</textarea>
85 </p>
86 <p>
87 <label for="editor3">
88 Editor 3:</label>
89 <textarea cols="80" id="editor3" name="editor3" rows="10">&lt;p&gt;This editor &lt;strong&gt;forces pasting in text mode&lt;/strong&gt; by listening for "beforePaste" event.&lt;/p&gt;</textarea>
90 </p>
91 <p>
92 <label for="editor4">
93 Editor 4:</label>
94 <textarea cols="80" id="editor4" name="editor4" rows="10">&lt;p&gt;This editor &lt;strong&gt;forces pasting in text mode&lt;/strong&gt; by "forcePasteAsPlainText" config option.&lt;/p&gt;</textarea>
95 </p>
96 <p>
97 <label for="editor5">
98 Editor 5:</label>
99 <textarea cols="80" id="editor5" name="editor5" rows="10">Editor with autoParagraphing set to off.</textarea>
100 </p>
101 <div id="editor6" contenteditable="true" style="font-family: Georgia; font-size: 14px">
102 <h1>Editor 6</h1>
103 <p>Content content content.</p>
104 <p class="someClass">Styled by <code>.someClass</code>.</p>
105 </div>
106 </div>
107 <div id="console">
108 </div>
109 <script>
110( function()
111{
112 'use strict';
113
114 var log = window.__log = function( title, msg ) {
115 var msgEl = new CKEDITOR.dom.element( 'p' ),
116 consoleEl = CKEDITOR.document.getById( 'console' ),
117 time = new Date().toString().match( /\d\d:\d\d:\d\d/ )[ 0 ],
118 format = function( tpl ) {
119 return tpl.replace( /{time}/g, time ).replace( '{title}', title ).replace( '{msg}', msg || '' );
120 };
121
122 window.console && console.log && console.log( format( '[{time}] {title}: {msg}' ) );
123
124 msg = ( msg || '' ).replace( /\r/g, '{\\r}' ).replace( /\n/g, '{\\n}' ).replace( /\t/g, '{\\t}' );
125 msg = CKEDITOR.tools.htmlEncode( msg );
126 msg = msg.replace( /\{(\\\w)\}/g, '<code class="specChar">$1</code>' );
127
128 msgEl.setHtml( format( '<time datetime="{time}">{time}</time><span class="prompt">{title}</span> {msg}' ) );
129 consoleEl.append( msgEl );
130 consoleEl.$.scrollTop = consoleEl.$.scrollHeight;
131 setTimeout( function() { msgEl.addClass( 'old' ); }, 250 );
132 };
133
134 var observe = function( editor, num ) {
135 var p = 'EDITOR ' + num + ' > ';
136
137 editor.on( 'paste', function( event ) {
138 log( p + 'paste(prior:-1)', event.data.type + ' - "' + event.data.dataValue + '"' );
139 }, null, null, -1 );
140 editor.on( 'paste', function( event ) {
141 log( p + 'paste(prior:10)', event.data.type + ' - "' + event.data.dataValue + '"' );
142 } );
143 editor.on( 'paste', function( event ) {
144 log( p + 'paste(prior:999)', event.data.type + ' - "' + event.data.dataValue + '"' );
145 }, null, null, 999 );
146 editor.on( 'beforePaste', function( event ) {
147 log( p + 'beforePaste', event.data.type );
148 } );
149 editor.on( 'beforePaste', function( event ) {
150 log( p + 'beforePaste(prior:999)', event.data.type );
151 }, null, null, 999 );
152 editor.on( 'afterPaste', function( event ) {
153 log( p + 'afterPaste' );
154 } );
155 editor.on( 'copy', function( event ) {
156 log( p + 'copy' );
157 } );
158 editor.on( 'cut', function( event ) {
159 log( p + 'cut' );
160 } );
161 };
162
163 CKEDITOR.disableAutoInline = true;
164 var config = {
165 height: 120,
166 toolbar: [ [ 'Source' ] ],
167 allowedContent: true
168 },
169 editor1 = CKEDITOR.replace( 'editor1', config ),
170 editor2 = CKEDITOR.replace( 'editor2', config ),
171 editor3 = CKEDITOR.replace( 'editor3', config ),
172 editor4 = CKEDITOR.replace( 'editor4', CKEDITOR.tools.extend( { forcePasteAsPlainText: true }, config ) ),
173 editor5 = CKEDITOR.replace( 'editor5', CKEDITOR.tools.extend( { autoParagraph: false }, config ) ),
174 editor6 = CKEDITOR.inline( document.getElementById( 'editor6' ), config );
175
176 editor3.on( 'beforePaste', function( evt ) {
177 evt.data.type = 'text';
178 } );
179
180 observe( editor1, 1 );
181 observe( editor2, 2 );
182 observe( editor3, 3 );
183 observe( editor4, 4 );
184 observe( editor5, 5 );
185 observe( editor6, 6 );
186
187})();
188 </script>
189</body>
190</html>
diff --git a/sources/plugins/clipboard/dev/console.js b/sources/plugins/clipboard/dev/console.js
new file mode 100644
index 0000000..96ccd81
--- /dev/null
+++ b/sources/plugins/clipboard/dev/console.js
@@ -0,0 +1,49 @@
1/**
2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */
5
6/* global CKCONSOLE */
7
8'use strict';
9
10( function() {
11 var pasteType, pasteValue;
12
13 CKCONSOLE.add( 'paste', {
14 panels: [
15 {
16 type: 'box',
17 content:
18 '<ul class="ckconsole_list">' +
19 '<li>type: <span class="ckconsole_value" data-value="type"></span></li>' +
20 '<li>value: <span class="ckconsole_value" data-value="value"></span></li>' +
21 '</ul>',
22
23 refresh: function() {
24 return {
25 header: 'Paste',
26 type: pasteType,
27 value: pasteValue
28 };
29 },
30
31 refreshOn: function( editor, refresh ) {
32 editor.on( 'paste', function( evt ) {
33 pasteType = evt.data.type;
34 pasteValue = CKEDITOR.tools.htmlEncode( evt.data.dataValue );
35 refresh();
36 } );
37 }
38 },
39 {
40 type: 'log',
41 on: function( editor, log, logFn ) {
42 editor.on( 'paste', function( evt ) {
43 logFn( 'paste; type:' + evt.data.type )();
44 } );
45 }
46 }
47 ]
48 } );
49} )();
diff --git a/sources/plugins/clipboard/dev/dnd.html b/sources/plugins/clipboard/dev/dnd.html
new file mode 100644
index 0000000..c45475b
--- /dev/null
+++ b/sources/plugins/clipboard/dev/dnd.html
@@ -0,0 +1,185 @@
1<!DOCTYPE html>
2<!--
3Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
4For licensing, see LICENSE.md or http://ckeditor.com/license
5-->
6<html>
7<head>
8 <meta charset="utf-8">
9 <title>Manual test for http://dev.ckeditor.com/ticket/11460</title>
10 <script src="../../../ckeditor.js"></script>
11 <script src="../../../dev/console/console.js"></script>
12 <script src="../../../plugins/clipboard/dev/console.js"></script>
13 <link rel="stylesheet" href="../../../samples/old/sample.css">
14 <style type="text/css">
15 h2 {
16 margin: 10px 0px 4px 0px;
17 padding: 0;
18 font-size: 14px;
19 }
20 h3 {
21 margin: 5px 0px 2px 0px;
22 padding: 0;
23 font-size: 12px;
24 }
25 </style>
26</head>
27<body>
28 <h1 class="samples">
29 Manual test for #11460
30 </h1>
31 <h2>Description (<a href="javascript:hideshow('description');">hide/show</a>)</h2>
32 <div id="description" class="description">
33 <p>Test internal D&amp;D in the editor, dropping content from an external source (helpers, MS Word) and D&amp;D between editors. Keep in mind that internal D&amp;D is the most complex operation because editor have to handle two ranges at the same time.</p>
34 <h3>Expected behavior:</h3>
35 <ul>
36 <li>proper drop position,</li>
37 <li>in the internal and cross editor D&amp;D: dragged content should be removed,</li>
38 <li>dropped content should be (more less) the same as dragged content,</li>
39 <li>paste event should be fired,</li>
40 <li>undo should work properly (one undo operation for one D&amp;D),</li>
41 <li>no crashes, nor errors,</li>
42 </ul>
43 <h3>Drag scenarios:</h3>
44 <ul>
45 <li>drag simple text,</li>
46 <li>drag table cell/cells,</li>
47 <li>drag link,</li>
48 <li>drag helpers textarea content,</li>
49 <li>drag helpers html content,</li>
50 <li>drag content from MS Word.</li>
51 </ul>
52 <h3>Drop scenarios:</h3>
53 <ul>
54 <li>drop in the different paragraph (before and after),</li>
55 <li>drop in the same paragraph (before and after),</li>
56 <li>drop in the same text node (before and after),</li>
57 <li>drop between text lines,</li>
58 <li>drop on the whitespace next to the header,</li>
59 <li>drop on the whitespace on the left side from the quote,</li>
60 <li>drop into a cell.</li>
61 </ul>
62 <h3>Known issues (not part of this ticket):</h3>
63 <ul>
64 <li>because of <a href="http://dev.ckeditor.com/ticket/11636">#11636</a> dragged content is not correct in some cases (e.g. when you drag part of the link),</li>
65 <li>drag position needs clean up after D&amp;D (e.g. remove empty paragraphs, fix table),</li>
66 <li>drop position needs clean up after D&amp;D (e.g. add spaces before/after dropped content, apply parents styles, break paragraph when one paragraph is dropped at the end to the other paragraph),</li>
67 <li>in the external D&amp;D: Chrome add plenty of addition tags.</li>
68 </ul>
69 </div>
70 <div>
71 <h2>Helpers (<a href="javascript:hideshow('helpers');">hide/show</a>)</h2>
72 <div id="helpers">
73 <textarea style="width:49%; height:50px; float: left;">Lorem ipsum dolor sit amet, consectetur adipiscing elit. In commodo vulputate tempor. Sed <b>at</b> elit.</textarea>
74 <div style="width:49%; height:50px; float: right;">
75 Lorem ipsum <b>dolor</b> sit <i>amet</i>, consectetur adipiscing elit. In commodo vulputate tempor. Sed &lt;b&gt;at elit&lt;/b&gt; vel ligula mollis aliquet a ac odio.
76 <pre>
77Aenean cursus egestas ipsum.
78 </pre>
79 </div>
80 <div style="clear:both;"></div>
81 </div>
82 </div>
83 <div>
84 <h2>Classic editor (<a href="javascript:hideshow('classic-editor');">hide/show</a>)</h2>
85 <div id="classic-editor">
86 <textarea cols="80" id="classic" name="classic" rows="10">
87 &lt;h1&gt;&lt;img alt=&quot;Saturn V carrying Apollo 11&quot; class=&quot;right&quot; src=&quot;../../../samples/assets/sample.jpg&quot;/&gt; Apollo 11&lt;/h1&gt; &lt;p&gt;&lt;b&gt;Apollo 11&lt;/b&gt; was the spaceflight that landed the first humans, Americans &lt;a href=&quot;http://en.wikipedia.org/wiki/Neil_Armstrong&quot; title=&quot;Neil Armstrong&quot;&gt;Neil Armstrong&lt;/a&gt; and &lt;a href=&quot;http://en.wikipedia.org/wiki/Buzz_Aldrin&quot; title=&quot;Buzz Aldrin&quot;&gt;Buzz Aldrin&lt;/a&gt;, on the Moon on July 20, 1969, at 20:18 UTC. Armstrong became the first to step onto the lunar surface 6 hours later on July 21 at 02:56 UTC.&lt;/p&gt; &lt;p&gt;Armstrong spent about &lt;s&gt;three and a half&lt;/s&gt; two and a half hours outside the spacecraft, Aldrin slightly less; and together they collected 47.5 pounds (21.5&amp;nbsp;kg) of lunar material for return to Earth. A third member of the mission, &lt;a href=&quot;http://en.wikipedia.org/wiki/Michael_Collins_(astronaut)&quot; title=&quot;Michael Collins (astronaut)&quot;&gt;Michael Collins&lt;/a&gt;, piloted the &lt;a href=&quot;http://en.wikipedia.org/wiki/Apollo_Command/Service_Module&quot; title=&quot;Apollo Command/Service Module&quot;&gt;command&lt;/a&gt; spacecraft alone in lunar orbit until Armstrong and Aldrin returned to it for the trip back to Earth.&lt;/p&gt; &lt;h2&gt;Broadcasting and &lt;em&gt;quotes&lt;/em&gt; &lt;a id=&quot;quotes&quot; name=&quot;quotes&quot;&gt;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;Broadcast on live TV to a world-wide audience, Armstrong stepped onto the lunar surface and described the event as:&lt;/p&gt; &lt;blockquote&gt;&lt;p&gt;One small step for [a] man, one giant leap for mankind.&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Apollo 11 effectively ended the &lt;a href=&quot;http://en.wikipedia.org/wiki/Space_Race&quot; title=&quot;Space Race&quot;&gt;Space Race&lt;/a&gt; and fulfilled a national goal proposed in 1961 by the late U.S. President &lt;a href=&quot;http://en.wikipedia.org/wiki/John_F._Kennedy&quot; title=&quot;John F. Kennedy&quot;&gt;John F. Kennedy&lt;/a&gt; in a speech before the United States Congress:&lt;/p&gt; &lt;blockquote&gt;&lt;p&gt;[...] before this decade is out, of landing a man on the Moon and returning him safely to the Earth.&lt;/p&gt;&lt;/blockquote&gt; &lt;h2&gt;Technical details &lt;a id=&quot;tech-details&quot; name=&quot;tech-details&quot;&gt;&lt;/a&gt;&lt;/h2&gt; &lt;table align=&quot;right&quot; border=&quot;1&quot; bordercolor=&quot;#ccc&quot; cellpadding=&quot;5&quot; cellspacing=&quot;0&quot; style=&quot;border-collapse:collapse;margin:10px 0 10px 15px;&quot;&gt; &lt;caption&gt;&lt;strong&gt;Mission crew&lt;/strong&gt;&lt;/caption&gt; &lt;thead&gt; &lt;tr&gt; &lt;th scope=&quot;col&quot;&gt;Position&lt;/th&gt; &lt;th scope=&quot;col&quot;&gt;Astronaut&lt;/th&gt; &lt;/tr&gt; &lt;/thead&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td&gt;Commander&lt;/td&gt; &lt;td&gt;Neil A. Armstrong&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;Command Module Pilot&lt;/td&gt; &lt;td&gt;Michael Collins&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;Lunar Module Pilot&lt;/td&gt; &lt;td&gt;Edwin &amp;quot;Buzz&amp;quot; E. Aldrin, Jr.&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt; &lt;/table&gt; &lt;p&gt;Launched by a &lt;strong&gt;Saturn V&lt;/strong&gt; rocket from &lt;a href=&quot;http://en.wikipedia.org/wiki/Kennedy_Space_Center&quot; title=&quot;Kennedy Space Center&quot;&gt;Kennedy Space Center&lt;/a&gt; in Merritt Island, Florida on July 16, Apollo 11 was the fifth manned mission of &lt;a href=&quot;http://en.wikipedia.org/wiki/NASA&quot; title=&quot;NASA&quot;&gt;NASA&lt;/a&gt;&amp;#39;s Apollo program. The Apollo spacecraft had three parts:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;&lt;strong&gt;Command Module&lt;/strong&gt; with a cabin for the three astronauts which was the only part which landed back on Earth&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Service Module&lt;/strong&gt; which supported the Command Module with propulsion, electrical power, oxygen and water&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Lunar Module&lt;/strong&gt; for landing on the Moon.&lt;/li&gt; &lt;/ol&gt; &lt;p&gt;After being sent to the Moon by the Saturn V&amp;#39;s upper stage, the astronauts separated the spacecraft from it and travelled for three days until they entered into lunar orbit. Armstrong and Aldrin then moved into the Lunar Module and landed in the &lt;a href=&quot;http://en.wikipedia.org/wiki/Mare_Tranquillitatis&quot; title=&quot;Mare Tranquillitatis&quot;&gt;Sea of Tranquility&lt;/a&gt;. They stayed a total of about 21 and a half hours on the lunar surface. After lifting off in the upper part of the Lunar Module and rejoining Collins in the Command Module, they returned to Earth and landed in the &lt;a href=&quot;http://en.wikipedia.org/wiki/Pacific_Ocean&quot; title=&quot;Pacific Ocean&quot;&gt;Pacific Ocean&lt;/a&gt; on July 24.&lt;/p&gt; &lt;hr/&gt; &lt;p style=&quot;text-align: right;&quot;&gt;&lt;small&gt;Source: &lt;a href=&quot;http://en.wikipedia.org/wiki/Apollo_11&quot;&gt;Wikipedia.org&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;
88 </textarea>
89 </div>
90 </div>
91 <div>
92 <h2>Inline editor (<a href="javascript:hideshow('inline');">hide/show</a>)</h2>
93 <div id="inline" contenteditable="true">
94 <h1><img alt="Saturn V carrying Apollo 11" class="right" src="../../../samples/assets/sample.jpg" /> Apollo 11</h1>
95
96 <p><b>Apollo 11</b> was the spaceflight that landed the first humans, Americans <a href="http://en.wikipedia.org/wiki/Neil_Armstrong" title="Neil Armstrong">Neil Armstrong</a> and <a href="http://en.wikipedia.org/wiki/Buzz_Aldrin" title="Buzz Aldrin">Buzz Aldrin</a>, on the Moon on July 20, 1969, at 20:18 UTC. Armstrong became the first to step onto the lunar surface 6 hours later on July 21 at 02:56 UTC.</p>
97
98 <p>Armstrong spent about <s>three and a half</s> two and a half hours outside the spacecraft, Aldrin slightly less; and together they collected 47.5 pounds (21.5&nbsp;kg) of lunar material for return to Earth. A third member of the mission, <a href="http://en.wikipedia.org/wiki/Michael_Collins_(astronaut)" title="Michael Collins (astronaut)">Michael Collins</a>, piloted the <a href="http://en.wikipedia.org/wiki/Apollo_Command/Service_Module" title="Apollo Command/Service Module">command</a> spacecraft alone in lunar orbit until Armstrong and Aldrin returned to it for the trip back to Earth.</p>
99
100 <h2>Broadcasting and <em>quotes</em> <a id="quotes" name="quotes"></a></h2>
101
102 <p>Broadcast on live TV to a world-wide audience, Armstrong stepped onto the lunar surface and described the event as:</p>
103
104 <blockquote>
105 <p>One small step for [a] man, one giant leap for mankind.</p>
106 </blockquote>
107
108 <p>Apollo 11 effectively ended the <a href="http://en.wikipedia.org/wiki/Space_Race" title="Space Race">Space Race</a> and fulfilled a national goal proposed in 1961 by the late U.S. President <a href="http://en.wikipedia.org/wiki/John_F._Kennedy" title="John F. Kennedy">John F. Kennedy</a> in a speech before the United States Congress:</p>
109
110 <blockquote>
111 <p>[...] before this decade is out, of landing a man on the Moon and returning him safely to the Earth.</p>
112 </blockquote>
113
114 <h2>Technical details <a id="tech-details" name="tech-details"></a></h2>
115
116 <table align="right" border="1" bordercolor="#ccc" cellpadding="5" cellspacing="0" style="border-collapse:collapse;margin:10px 0 10px 15px;">
117 <caption><strong>Mission crew</strong></caption>
118 <thead>
119 <tr>
120 <th scope="col">Position</th>
121 <th scope="col">Astronaut</th>
122 </tr>
123 </thead>
124 <tbody>
125 <tr>
126 <td>Commander</td>
127 <td>Neil A. Armstrong</td>
128 </tr>
129 <tr>
130 <td>Command Module Pilot</td>
131 <td>Michael Collins</td>
132 </tr>
133 <tr>
134 <td>Lunar Module Pilot</td>
135 <td>Edwin &quot;Buzz&quot; E. Aldrin, Jr.</td>
136 </tr>
137 </tbody>
138 </table>
139
140 <p>Launched by a <strong>Saturn V</strong> rocket from <a href="http://en.wikipedia.org/wiki/Kennedy_Space_Center" title="Kennedy Space Center">Kennedy Space Center</a> in Merritt Island, Florida on July 16, Apollo 11 was the fifth manned mission of <a href="http://en.wikipedia.org/wiki/NASA" title="NASA">NASA</a>&#39;s Apollo program. The Apollo spacecraft had three parts:</p>
141
142 <ol>
143 <li><strong>Command Module</strong> with a cabin for the three astronauts which was the only part which landed back on Earth</li>
144 <li><strong>Service Module</strong> which supported the Command Module with propulsion, electrical power, oxygen and water</li>
145 <li><strong>Lunar Module</strong> for landing on the Moon.</li>
146 </ol>
147
148 <p>After being sent to the Moon by the Saturn V&#39;s upper stage, the astronauts separated the spacecraft from it and travelled for three days until they entered into lunar orbit. Armstrong and Aldrin then moved into the Lunar Module and landed in the <a href="http://en.wikipedia.org/wiki/Mare_Tranquillitatis" title="Mare Tranquillitatis">Sea of Tranquility</a>. They stayed a total of about 21 and a half hours on the lunar surface. After lifting off in the upper part of the Lunar Module and rejoining Collins in the Command Module, they returned to Earth and landed in the <a href="http://en.wikipedia.org/wiki/Pacific_Ocean" title="Pacific Ocean">Pacific Ocean</a> on July 24.</p>
149
150 <hr />
151 <p style="text-align: right;"><small>Source: <a href="http://en.wikipedia.org/wiki/Apollo_11">Wikipedia.org</a></small></p>
152 </div>
153 </div>
154 <script type="text/javascript">
155 CKEDITOR.disableAutoInline = true;
156
157 function hideshow( id ) {
158 var element = CKEDITOR.document.getById( id );
159
160 if( element.getStyle( 'display' ) == 'none' )
161 element.show();
162 else
163 element.hide();
164 }
165
166 CKEDITOR.replace( 'classic' );
167 CKEDITOR.inline( 'inline' );
168
169 CKCONSOLE.addEventPanel( 'dragstart', [ '$', 'target', 'dataTransfer' ] );
170 CKCONSOLE.addEventPanel( 'dragend', [ '$', 'target', 'dataTransfer' ] );
171 CKCONSOLE.addEventPanel( 'drop',
172 [ '$', 'target', 'dataTransfer', 'dragRange', 'dropRange' ] );
173
174 CKCONSOLE.create( 'dragstart', { editor: 'classic' } );
175 CKCONSOLE.create( 'drop', { editor: 'classic' } );
176 CKCONSOLE.create( 'paste', { editor: 'classic' } );
177 CKCONSOLE.create( 'dragend', { editor: 'classic' } );
178
179 CKCONSOLE.create( 'dragstart', { editor: 'inline' } );
180 CKCONSOLE.create( 'drop', { editor: 'inline' } );
181 CKCONSOLE.create( 'paste', { editor: 'inline' } );
182 CKCONSOLE.create( 'dragend', { editor: 'inline' } );
183 </script>
184</body>
185</html>
diff --git a/sources/plugins/clipboard/icons/copy-rtl.png b/sources/plugins/clipboard/icons/copy-rtl.png
new file mode 100644
index 0000000..ce94fc0
--- /dev/null
+++ b/sources/plugins/clipboard/icons/copy-rtl.png
Binary files differ
diff --git a/sources/plugins/clipboard/icons/copy.png b/sources/plugins/clipboard/icons/copy.png
new file mode 100644
index 0000000..ce94fc0
--- /dev/null
+++ b/sources/plugins/clipboard/icons/copy.png
Binary files differ
diff --git a/sources/plugins/clipboard/icons/cut-rtl.png b/sources/plugins/clipboard/icons/cut-rtl.png
new file mode 100644
index 0000000..8ae48d9
--- /dev/null
+++ b/sources/plugins/clipboard/icons/cut-rtl.png
Binary files differ
diff --git a/sources/plugins/clipboard/icons/cut.png b/sources/plugins/clipboard/icons/cut.png
new file mode 100644
index 0000000..8ae48d9
--- /dev/null
+++ b/sources/plugins/clipboard/icons/cut.png
Binary files differ
diff --git a/sources/plugins/clipboard/icons/hidpi/copy-rtl.png b/sources/plugins/clipboard/icons/hidpi/copy-rtl.png
new file mode 100644
index 0000000..74c6765
--- /dev/null
+++ b/sources/plugins/clipboard/icons/hidpi/copy-rtl.png
Binary files differ
diff --git a/sources/plugins/clipboard/icons/hidpi/copy.png b/sources/plugins/clipboard/icons/hidpi/copy.png
new file mode 100644
index 0000000..74c6765
--- /dev/null
+++ b/sources/plugins/clipboard/icons/hidpi/copy.png
Binary files differ
diff --git a/sources/plugins/clipboard/icons/hidpi/cut-rtl.png b/sources/plugins/clipboard/icons/hidpi/cut-rtl.png
new file mode 100644
index 0000000..f5a9b0d
--- /dev/null
+++ b/sources/plugins/clipboard/icons/hidpi/cut-rtl.png
Binary files differ
diff --git a/sources/plugins/clipboard/icons/hidpi/cut.png b/sources/plugins/clipboard/icons/hidpi/cut.png
new file mode 100644
index 0000000..f5a9b0d
--- /dev/null
+++ b/sources/plugins/clipboard/icons/hidpi/cut.png
Binary files differ
diff --git a/sources/plugins/clipboard/icons/hidpi/paste-rtl.png b/sources/plugins/clipboard/icons/hidpi/paste-rtl.png
new file mode 100644
index 0000000..12cac92
--- /dev/null
+++ b/sources/plugins/clipboard/icons/hidpi/paste-rtl.png
Binary files differ
diff --git a/sources/plugins/clipboard/icons/hidpi/paste.png b/sources/plugins/clipboard/icons/hidpi/paste.png
new file mode 100644
index 0000000..12cac92
--- /dev/null
+++ b/sources/plugins/clipboard/icons/hidpi/paste.png
Binary files differ
diff --git a/sources/plugins/clipboard/icons/paste-rtl.png b/sources/plugins/clipboard/icons/paste-rtl.png
new file mode 100644
index 0000000..7039251
--- /dev/null
+++ b/sources/plugins/clipboard/icons/paste-rtl.png
Binary files differ
diff --git a/sources/plugins/clipboard/icons/paste.png b/sources/plugins/clipboard/icons/paste.png
new file mode 100644
index 0000000..7039251
--- /dev/null
+++ b/sources/plugins/clipboard/icons/paste.png
Binary files differ
diff --git a/sources/plugins/clipboard/lang/af.js b/sources/plugins/clipboard/lang/af.js
new file mode 100644
index 0000000..5860867
--- /dev/null
+++ b/sources/plugins/clipboard/lang/af.js
@@ -0,0 +1,12 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'clipboard', 'af', {
6 copy: 'Kopiëer',
7 copyError: 'U blaaier se sekuriteitsinstelling belet die kopiëringsaksie. Gebruik die sleutelbordkombinasie (Ctrl/Cmd+C).',
8 cut: 'Knip',
9 cutError: 'U blaaier se sekuriteitsinstelling belet die outomatiese knip-aksie. Gebruik die sleutelbordkombinasie (Ctrl/Cmd+X).',
10 paste: 'Plak',
11 pasteNotification: 'Your browser doesn\'t allow you to paste this way. Press %1 to paste.' // MISSING
12} );
diff --git a/sources/plugins/clipboard/lang/ar.js b/sources/plugins/clipboard/lang/ar.js
new file mode 100644
index 0000000..6d1a0b0
--- /dev/null
+++ b/sources/plugins/clipboard/lang/ar.js
@@ -0,0 +1,12 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'clipboard', 'ar', {
6 copy: 'نسخ',
7 copyError: 'الإعدادات الأمنية للمتصفح الذي تستخدمه تمنع عمليات النسخ التلقائي. فضلاً إستخدم لوحة المفاتيح لفعل ذلك (Ctrl/Cmd+C).',
8 cut: 'قص',
9 cutError: 'الإعدادات الأمنية للمتصفح الذي تستخدمه تمنع القص التلقائي. فضلاً إستخدم لوحة المفاتيح لفعل ذلك (Ctrl/Cmd+X).',
10 paste: 'لصق',
11 pasteNotification: 'Your browser doesn\'t allow you to paste this way. Press %1 to paste.' // MISSING
12} );
diff --git a/sources/plugins/clipboard/lang/az.js b/sources/plugins/clipboard/lang/az.js
new file mode 100644
index 0000000..8f60f35
--- /dev/null
+++ b/sources/plugins/clipboard/lang/az.js
@@ -0,0 +1,12 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'clipboard', 'az', {
6 copy: 'Köçür',
7 copyError: 'Avtomatik köçürülməsi mümkün deyil. Ctrl+C basın.',
8 cut: 'Kəs',
9 cutError: 'Avtomatik kəsmə mümkün deyil. Ctrl+X basın.',
10 paste: 'Əlavə et',
11 pasteNotification: 'Sizin İnternet bələdçisi bu cür mətnin köçürməsi dəstəklənmir. Əlavə etmək üçün %1 basın.'
12} );
diff --git a/sources/plugins/clipboard/lang/bg.js b/sources/plugins/clipboard/lang/bg.js
new file mode 100644
index 0000000..2d8eede
--- /dev/null
+++ b/sources/plugins/clipboard/lang/bg.js
@@ -0,0 +1,12 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'clipboard', 'bg', {
6 copy: 'Копирай',
7 copyError: 'Настройките за сигурност на вашия бразуър не разрешават на редактора да изпълни запаметяването. За целта използвайте клавиатурата (Ctrl/Cmd+C).',
8 cut: 'Отрежи',
9 cutError: 'Настройките за сигурност на Вашия браузър не позволяват на редактора автоматично да изъплни действията за отрязване. Моля ползвайте клавиатурните команди за целта (ctrl+x).',
10 paste: 'Вмъкни',
11 pasteNotification: 'Your browser doesn\'t allow you to paste this way. Press %1 to paste.' // MISSING
12} );
diff --git a/sources/plugins/clipboard/lang/bn.js b/sources/plugins/clipboard/lang/bn.js
new file mode 100644
index 0000000..1d0922a
--- /dev/null
+++ b/sources/plugins/clipboard/lang/bn.js
@@ -0,0 +1,12 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'clipboard', 'bn', {
6 copy: 'কপি',
7 copyError: 'আপনার ব্রাউজারের নিরাপত্তা সেটিংসমূহ এডিটরকে স্বয়ংক্রিয়ভাবে কপি করার প্রক্রিয়া চালনা করার অনুমতি দেয় না। অনুগ্রহপূর্বক এই কাজের জন্য কিবোর্ড ব্যবহার করুন (Ctrl/Cmd+C)।',
8 cut: 'কাট',
9 cutError: 'আপনার ব্রাউজারের সুরক্ষা সেটিংস এডিটরকে অটোমেটিক কাট করার অনুমতি দেয়নি। দয়া করে এই কাজের জন্য কিবোর্ড ব্যবহার করুন (Ctrl/Cmd+X)।',
10 paste: 'পেস্ট',
11 pasteNotification: 'Your browser doesn\'t allow you to paste this way. Press %1 to paste.' // MISSING
12} );
diff --git a/sources/plugins/clipboard/lang/bs.js b/sources/plugins/clipboard/lang/bs.js
new file mode 100644
index 0000000..62f3f1b
--- /dev/null
+++ b/sources/plugins/clipboard/lang/bs.js
@@ -0,0 +1,12 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'clipboard', 'bs', {
6 copy: 'Kopiraj',
7 copyError: 'Sigurnosne postavke Vašeg pretraživaèa ne dozvoljavaju operacije automatskog kopiranja. Molimo koristite kraticu na tastaturi (Ctrl/Cmd+C).',
8 cut: 'Izreži',
9 cutError: 'Sigurnosne postavke vašeg pretraživaèa ne dozvoljavaju operacije automatskog rezanja. Molimo koristite kraticu na tastaturi (Ctrl/Cmd+X).',
10 paste: 'Zalijepi',
11 pasteNotification: 'Your browser doesn\'t allow you to paste this way. Press %1 to paste.' // MISSING
12} );
diff --git a/sources/plugins/clipboard/lang/ca.js b/sources/plugins/clipboard/lang/ca.js
new file mode 100644
index 0000000..6cd3b58
--- /dev/null
+++ b/sources/plugins/clipboard/lang/ca.js
@@ -0,0 +1,12 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'clipboard', 'ca', {
6 copy: 'Copiar',
7 copyError: 'La configuració de seguretat del vostre navegador no permet executar automàticament les operacions de copiar. Si us plau, utilitzeu el teclat (Ctrl/Cmd+C).',
8 cut: 'Retallar',
9 cutError: 'La configuració de seguretat del vostre navegador no permet executar automàticament les operacions de retallar. Si us plau, utilitzeu el teclat (Ctrl/Cmd+X).',
10 paste: 'Enganxar',
11 pasteNotification: 'Your browser doesn\'t allow you to paste this way. Press %1 to paste.' // MISSING
12} );
diff --git a/sources/plugins/clipboard/lang/cs.js b/sources/plugins/clipboard/lang/cs.js
new file mode 100644
index 0000000..4cbf3b4
--- /dev/null
+++ b/sources/plugins/clipboard/lang/cs.js
@@ -0,0 +1,12 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'clipboard', 'cs', {
6 copy: 'Kopírovat',
7 copyError: 'Bezpečnostní nastavení vašeho prohlížeče nedovolují editoru spustit funkci pro kopírování zvoleného textu do schránky. Prosím zkopírujte zvolený text do schránky pomocí klávesnice (Ctrl/Cmd+C).',
8 cut: 'Vyjmout',
9 cutError: 'Bezpečnostní nastavení vašeho prohlížeče nedovolují editoru spustit funkci pro vyjmutí zvoleného textu do schránky. Prosím vyjměte zvolený text do schránky pomocí klávesnice (Ctrl/Cmd+X).',
10 paste: 'Vložit',
11 pasteNotification: 'Your browser doesn\'t allow you to paste this way. Press %1 to paste.' // MISSING
12} );
diff --git a/sources/plugins/clipboard/lang/cy.js b/sources/plugins/clipboard/lang/cy.js
new file mode 100644
index 0000000..e854e13
--- /dev/null
+++ b/sources/plugins/clipboard/lang/cy.js
@@ -0,0 +1,12 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'clipboard', 'cy', {
6 copy: 'Copïo',
7 copyError: '\'Dyw gosodiadau diogelwch eich porwr ddim yn caniatàu\'r golygydd i gynnal \'gweithredoedd copïo\' yn awtomatig. Defnyddiwch y bysellfwrdd (Ctrl/Cmd+C).',
8 cut: 'Torri',
9 cutError: 'Nid yw gosodiadau diogelwch eich porwr yn caniatàu\'r golygydd i gynnal \'gweithredoedd torri\' yn awtomatig. Defnyddiwch y bysellfwrdd (Ctrl/Cmd+X).',
10 paste: 'Gludo',
11 pasteNotification: 'Your browser doesn\'t allow you to paste this way. Press %1 to paste.' // MISSING
12} );
diff --git a/sources/plugins/clipboard/lang/da.js b/sources/plugins/clipboard/lang/da.js
new file mode 100644
index 0000000..257c9d4
--- /dev/null
+++ b/sources/plugins/clipboard/lang/da.js
@@ -0,0 +1,12 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'clipboard', 'da', {
6 copy: 'Kopiér',
7 copyError: 'Din browsers sikkerhedsindstillinger tillader ikke editoren at få automatisk adgang til udklipsholderen.<br><br>Brug i stedet tastaturet til at kopiere teksten (Ctrl/Cmd+C).',
8 cut: 'Klip',
9 cutError: 'Din browsers sikkerhedsindstillinger tillader ikke editoren at få automatisk adgang til udklipsholderen.<br><br>Brug i stedet tastaturet til at klippe teksten (Ctrl/Cmd+X).',
10 paste: 'Indsæt',
11 pasteNotification: 'Your browser doesn\'t allow you to paste this way. Press %1 to paste.' // MISSING
12} );
diff --git a/sources/plugins/clipboard/lang/de-ch.js b/sources/plugins/clipboard/lang/de-ch.js
new file mode 100644
index 0000000..e3b9ead
--- /dev/null
+++ b/sources/plugins/clipboard/lang/de-ch.js
@@ -0,0 +1,12 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'clipboard', 'de-ch', {
6 copy: 'Kopieren',
7 copyError: 'Die Sicherheitseinstellungen Ihres Browsers lassen es nicht zu, den Text automatisch kopieren. Bitte benutzen Sie die System-Zwischenablage über STRG-C (kopieren).',
8 cut: 'Ausschneiden',
9 cutError: 'Die Sicherheitseinstellungen Ihres Browsers lassen es nicht zu, den Text automatisch auszuschneiden. Bitte benutzen Sie die System-Zwischenablage über STRG-X (ausschneiden) und STRG-V (einfügen).',
10 paste: 'Einfügen',
11 pasteNotification: 'Your browser doesn\'t allow you to paste this way. Press %1 to paste.' // MISSING
12} );
diff --git a/sources/plugins/clipboard/lang/de.js b/sources/plugins/clipboard/lang/de.js
new file mode 100644
index 0000000..5244081
--- /dev/null
+++ b/sources/plugins/clipboard/lang/de.js
@@ -0,0 +1,12 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'clipboard', 'de', {
6 copy: 'Kopieren',
7 copyError: 'Die Sicherheitseinstellungen Ihres Browsers lassen es nicht zu, den Text automatisch kopieren. Bitte benutzen Sie die System-Zwischenablage über STRG-C (kopieren).',
8 cut: 'Ausschneiden',
9 cutError: 'Die Sicherheitseinstellungen Ihres Browsers lassen es nicht zu, den Text automatisch auszuschneiden. Bitte benutzen Sie die System-Zwischenablage über STRG-X (ausschneiden) und STRG-V (einfügen).',
10 paste: 'Einfügen',
11 pasteNotification: 'Ihr Browser verhindert das Einfügen über diesen Weg. Zum einfügen drücken Sie %1.'
12} );
diff --git a/sources/plugins/clipboard/lang/el.js b/sources/plugins/clipboard/lang/el.js
new file mode 100644
index 0000000..4ee396b
--- /dev/null
+++ b/sources/plugins/clipboard/lang/el.js
@@ -0,0 +1,12 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'clipboard', 'el', {
6 copy: 'Αντιγραφή',
7 copyError: 'Οι ρυθμίσεις ασφαλείας του περιηγητή σας δεν επιτρέπουν την επιλεγμένη εργασία αντιγραφής. Παρακαλώ χρησιμοποιείστε το πληκτρολόγιο (Ctrl/Cmd+C).',
8 cut: 'Αποκοπή',
9 cutError: 'Οι ρυθμίσεις ασφαλείας του περιηγητή σας δεν επιτρέπουν την επιλεγμένη εργασία αποκοπής. Παρακαλώ χρησιμοποιείστε το πληκτρολόγιο (Ctrl/Cmd+X).',
10 paste: 'Επικόλληση',
11 pasteNotification: 'Ο περιηγητής σας δεν σας επιτρέπει να επικολλήσετε με αυτόν τον τρόπο. Πατήστε %1 για επικόλληση.'
12} );
diff --git a/sources/plugins/clipboard/lang/en-au.js b/sources/plugins/clipboard/lang/en-au.js
new file mode 100644
index 0000000..018a754
--- /dev/null
+++ b/sources/plugins/clipboard/lang/en-au.js
@@ -0,0 +1,12 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'clipboard', 'en-au', {
6 copy: 'Copy',
7 copyError: 'Your browser security settings don\'t permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl/Cmd+C).',
8 cut: 'Cut',
9 cutError: 'Your browser security settings don\'t permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl/Cmd+X).',
10 paste: 'Paste',
11 pasteNotification: 'Your browser doesn\'t allow you to paste this way. Press %1 to paste.' // MISSING
12} );
diff --git a/sources/plugins/clipboard/lang/en-ca.js b/sources/plugins/clipboard/lang/en-ca.js
new file mode 100644
index 0000000..fd76ba7
--- /dev/null
+++ b/sources/plugins/clipboard/lang/en-ca.js
@@ -0,0 +1,12 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'clipboard', 'en-ca', {
6 copy: 'Copy',
7 copyError: 'Your browser security settings don\'t permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl/Cmd+C).',
8 cut: 'Cut',
9 cutError: 'Your browser security settings don\'t permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl/Cmd+X).',
10 paste: 'Paste',
11 pasteNotification: 'Your browser doesn\'t allow you to paste this way. Press %1 to paste.' // MISSING
12} );
diff --git a/sources/plugins/clipboard/lang/en-gb.js b/sources/plugins/clipboard/lang/en-gb.js
new file mode 100644
index 0000000..fb6aa2e
--- /dev/null
+++ b/sources/plugins/clipboard/lang/en-gb.js
@@ -0,0 +1,12 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'clipboard', 'en-gb', {
6 copy: 'Copy',
7 copyError: 'Your browser security settings don\'t permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl/Cmd+C).',
8 cut: 'Cut',
9 cutError: 'Your browser security settings don\'t permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl/Cmd+X).',
10 paste: 'Paste',
11 pasteNotification: 'Your browser doesn\'t allow you to paste this way. Press %1 to paste.' // MISSING
12} );
diff --git a/sources/plugins/clipboard/lang/en.js b/sources/plugins/clipboard/lang/en.js
new file mode 100644
index 0000000..5d81cc0
--- /dev/null
+++ b/sources/plugins/clipboard/lang/en.js
@@ -0,0 +1,12 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'clipboard', 'en', {
6 copy: 'Copy',
7 copyError: 'Your browser security settings don\'t permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl/Cmd+C).',
8 cut: 'Cut',
9 cutError: 'Your browser security settings don\'t permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl/Cmd+X).',
10 paste: 'Paste',
11 pasteNotification: 'Your browser doesn\'t allow you to paste this way. Press %1 to paste.'
12} );
diff --git a/sources/plugins/clipboard/lang/eo.js b/sources/plugins/clipboard/lang/eo.js
new file mode 100644
index 0000000..3a01213
--- /dev/null
+++ b/sources/plugins/clipboard/lang/eo.js
@@ -0,0 +1,12 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'clipboard', 'eo', {
6 copy: 'Kopii',
7 copyError: 'La sekurecagordo de via TTT-legilo ne permesas, ke la redaktilo faras kopiajn operaciojn. Bonvolu uzi la klavaron por tio (Ctrl/Cmd-C).',
8 cut: 'Eltondi',
9 cutError: 'La sekurecagordo de via TTT-legilo ne permesas, ke la redaktilo faras eltondajn operaciojn. Bonvolu uzi la klavaron por tio (Ctrl/Cmd-X).',
10 paste: 'Interglui',
11 pasteNotification: 'Your browser doesn\'t allow you to paste this way. Press %1 to paste.' // MISSING
12} );
diff --git a/sources/plugins/clipboard/lang/es-mx.js b/sources/plugins/clipboard/lang/es-mx.js
new file mode 100644
index 0000000..f4a1be2
--- /dev/null
+++ b/sources/plugins/clipboard/lang/es-mx.js
@@ -0,0 +1,12 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'clipboard', 'es-mx', {
6 copy: 'Copiar',
7 copyError: 'La configuración de seguridad de su navegador no permite al editor ejecutar automáticamente operaciones de copiado. Por favor, utilice el teclado para (Ctrl/Cmd+C).',
8 cut: 'Cortar',
9 cutError: 'La configuración de seguridad de su navegador no permite al editor ejecutar automáticamente operaciones de corte. Por favor, utilice el teclado para (Ctrl/Cmd+X).',
10 paste: 'Pegar',
11 pasteNotification: 'Tu navegador no permite pegar de esta manera. Presiona %1 para pegar.'
12} );
diff --git a/sources/plugins/clipboard/lang/es.js b/sources/plugins/clipboard/lang/es.js
new file mode 100644
index 0000000..741d912
--- /dev/null
+++ b/sources/plugins/clipboard/lang/es.js
@@ -0,0 +1,12 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'clipboard', 'es', {
6 copy: 'Copiar',
7 copyError: 'La configuración de seguridad de este navegador no permite la ejecución automática de operaciones de copiado.\r\nPor favor use el teclado (Ctrl/Cmd+C).',
8 cut: 'Cortar',
9 cutError: 'La configuración de seguridad de este navegador no permite la ejecución automática de operaciones de cortado.\r\nPor favor use el teclado (Ctrl/Cmd+X).',
10 paste: 'Pegar',
11 pasteNotification: 'Your browser doesn\'t allow you to paste this way. Press %1 to paste.' // MISSING
12} );
diff --git a/sources/plugins/clipboard/lang/et.js b/sources/plugins/clipboard/lang/et.js
new file mode 100644
index 0000000..106ca61
--- /dev/null
+++ b/sources/plugins/clipboard/lang/et.js
@@ -0,0 +1,12 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'clipboard', 'et', {
6 copy: 'Kopeeri',
7 copyError: 'Sinu veebisirvija turvaseaded ei luba redaktoril automaatselt kopeerida. Palun kasutage selleks klaviatuuri klahvikombinatsiooni (Ctrl/Cmd+C).',
8 cut: 'Lõika',
9 cutError: 'Sinu veebisirvija turvaseaded ei luba redaktoril automaatselt lõigata. Palun kasutage selleks klaviatuuri klahvikombinatsiooni (Ctrl/Cmd+X).',
10 paste: 'Aseta',
11 pasteNotification: 'Your browser doesn\'t allow you to paste this way. Press %1 to paste.' // MISSING
12} );
diff --git a/sources/plugins/clipboard/lang/eu.js b/sources/plugins/clipboard/lang/eu.js
new file mode 100644
index 0000000..140fcb8
--- /dev/null
+++ b/sources/plugins/clipboard/lang/eu.js
@@ -0,0 +1,12 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'clipboard', 'eu', {
6 copy: 'Kopiatu',
7 copyError: 'Zure web nabigatzailearen segurtasun ezarpenek ez dute baimentzen testuak automatikoki kopiatzea. Mesedez teklatua erabil ezazu (Ctrl/Cmd+C).',
8 cut: 'Ebaki',
9 cutError: 'Zure web nabigatzailearen segurtasun ezarpenek ez dute baimentzen testuak automatikoki moztea. Mesedez teklatua erabil ezazu (Ctrl/Cmd+X).',
10 paste: 'Itsatsi',
11 pasteNotification: 'Your browser doesn\'t allow you to paste this way. Press %1 to paste.' // MISSING
12} );
diff --git a/sources/plugins/clipboard/lang/fa.js b/sources/plugins/clipboard/lang/fa.js
new file mode 100644
index 0000000..8dca4b3
--- /dev/null
+++ b/sources/plugins/clipboard/lang/fa.js
@@ -0,0 +1,12 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'clipboard', 'fa', {
6 copy: 'رونوشت',
7 copyError: 'تنظیمات امنیتی مرورگر شما اجازه نمیدهد که ویرایشگر به طور خودکار عملکردهای کپی کردن را انجام دهد. لطفا با دکمههای صفحه کلید این کار را انجام دهید (Ctrl/Cmd+C).',
8 cut: 'برش',
9 cutError: 'تنظیمات امنیتی مرورگر شما اجازه نمیدهد که ویرایشگر به طور خودکار عملکردهای برش را انجام دهد. لطفا با دکمههای صفحه کلید این کار را انجام دهید (Ctrl/Cmd+X).',
10 paste: 'چسباندن',
11 pasteNotification: 'Your browser doesn\'t allow you to paste this way. Press %1 to paste.' // MISSING
12} );
diff --git a/sources/plugins/clipboard/lang/fi.js b/sources/plugins/clipboard/lang/fi.js
new file mode 100644
index 0000000..b2db77a
--- /dev/null
+++ b/sources/plugins/clipboard/lang/fi.js
@@ -0,0 +1,12 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'clipboard', 'fi', {
6 copy: 'Kopioi',
7 copyError: 'Selaimesi turva-asetukset eivät salli editorin toteuttaa kopioimista. Käytä näppäimistöä kopioimiseen (Ctrl+C).',
8 cut: 'Leikkaa',
9 cutError: 'Selaimesi turva-asetukset eivät salli editorin toteuttaa leikkaamista. Käytä näppäimistöä leikkaamiseen (Ctrl+X).',
10 paste: 'Liitä',
11 pasteNotification: 'Your browser doesn\'t allow you to paste this way. Press %1 to paste.' // MISSING
12} );
diff --git a/sources/plugins/clipboard/lang/fo.js b/sources/plugins/clipboard/lang/fo.js
new file mode 100644
index 0000000..8485ef3
--- /dev/null
+++ b/sources/plugins/clipboard/lang/fo.js
@@ -0,0 +1,12 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'clipboard', 'fo', {
6 copy: 'Avrita',
7 copyError: 'Trygdaruppseting alnótskagans forðar tekstviðgeranum í at avrita tekstin. Vinarliga nýt knappaborðið til at avrita tekstin (Ctrl/Cmd+C).',
8 cut: 'Kvett',
9 cutError: 'Trygdaruppseting alnótskagans forðar tekstviðgeranum í at kvetta tekstin. Vinarliga nýt knappaborðið til at kvetta tekstin (Ctrl/Cmd+X).',
10 paste: 'Innrita',
11 pasteNotification: 'Your browser doesn\'t allow you to paste this way. Press %1 to paste.' // MISSING
12} );
diff --git a/sources/plugins/clipboard/lang/fr-ca.js b/sources/plugins/clipboard/lang/fr-ca.js
new file mode 100644
index 0000000..1a2dd3d
--- /dev/null
+++ b/sources/plugins/clipboard/lang/fr-ca.js
@@ -0,0 +1,12 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'clipboard', 'fr-ca', {
6 copy: 'Copier',
7 copyError: 'Les paramètres de sécurité de votre navigateur empêchent l\'éditeur de copier automatiquement vos données. Veuillez utiliser les équivalents claviers (Ctrl/Cmd+C).',
8 cut: 'Couper',
9 cutError: 'Les paramètres de sécurité de votre navigateur empêchent l\'éditeur de couper automatiquement vos données. Veuillez utiliser les équivalents claviers (Ctrl/Cmd+X).',
10 paste: 'Coller',
11 pasteNotification: 'Your browser doesn\'t allow you to paste this way. Press %1 to paste.' // MISSING
12} );
diff --git a/sources/plugins/clipboard/lang/fr.js b/sources/plugins/clipboard/lang/fr.js
new file mode 100644
index 0000000..054d055
--- /dev/null
+++ b/sources/plugins/clipboard/lang/fr.js
@@ -0,0 +1,12 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'clipboard', 'fr', {
6 copy: 'Copier',
7 copyError: 'Les paramètres de sécurité de votre navigateur n\'autorisent pas l\'éditeur à exécuter automatiquement l\'opération « Copier ». Veuillez utiliser le raccourci clavier à cet effet (Ctrl/Cmd+C).',
8 cut: 'Couper',
9 cutError: 'Les paramètres de sécurité de votre navigateur n\'autorisent pas l\'éditeur à exécuter automatiquement l\'opération « Couper ». Veuillez utiliser le raccourci clavier à cet effet (Ctrl/Cmd+X).',
10 paste: 'Coller',
11 pasteNotification: 'Your browser doesn\'t allow you to paste this way. Press %1 to paste.' // MISSING
12} );
diff --git a/sources/plugins/clipboard/lang/gl.js b/sources/plugins/clipboard/lang/gl.js
new file mode 100644
index 0000000..5b4fd1a
--- /dev/null
+++ b/sources/plugins/clipboard/lang/gl.js
@@ -0,0 +1,12 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'clipboard', 'gl', {
6 copy: 'Copiar',
7 copyError: 'Os axustes de seguranza do seu navegador non permiten que o editor realice automaticamente as tarefas de copia. Use o teclado para iso (Ctrl/Cmd+C).',
8 cut: 'Cortar',
9 cutError: 'Os axustes de seguranza do seu navegador non permiten que o editor realice automaticamente as tarefas de corte. Use o teclado para iso (Ctrl/Cmd+X).',
10 paste: 'Pegar',
11 pasteNotification: 'O seu navegador non permite pegar deste xeito. Prema %1 para pegar.'
12} );
diff --git a/sources/plugins/clipboard/lang/gu.js b/sources/plugins/clipboard/lang/gu.js
new file mode 100644
index 0000000..aeac560
--- /dev/null
+++ b/sources/plugins/clipboard/lang/gu.js
@@ -0,0 +1,12 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'clipboard', 'gu', {
6 copy: 'નકલ',
7 copyError: 'તમારા બ્રાઉઝર ની સુરક્ષિત સેટિંગસ કોપી કરવાની પરવાનગી નથી આપતી. (Ctrl/Cmd+C) का प्रयोग करें।',
8 cut: 'કાપવું',
9 cutError: 'તમારા બ્રાઉઝર ની સુરક્ષિત સેટિંગસ કટ કરવાની પરવાનગી નથી આપતી. (Ctrl/Cmd+X) નો ઉપયોગ કરો.',
10 paste: 'પેસ્ટ',
11 pasteNotification: 'Your browser doesn\'t allow you to paste this way. Press %1 to paste.' // MISSING
12} );
diff --git a/sources/plugins/clipboard/lang/he.js b/sources/plugins/clipboard/lang/he.js
new file mode 100644
index 0000000..460b9c6
--- /dev/null
+++ b/sources/plugins/clipboard/lang/he.js
@@ -0,0 +1,12 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'clipboard', 'he', {
6 copy: 'העתקה',
7 copyError: 'הגדרות האבטחה בדפדפן שלך לא מאפשרות לעורך לבצע פעולות העתקה אוטומטיות. יש להשתמש במקלדת לשם כך (Ctrl/Cmd+C).',
8 cut: 'גזירה',
9 cutError: 'הגדרות האבטחה בדפדפן שלך לא מאפשרות לעורך לבצע פעולות גזירה אוטומטיות. יש להשתמש במקלדת לשם כך (Ctrl/Cmd+X).',
10 paste: 'הדבקה',
11 pasteNotification: 'Your browser doesn\'t allow you to paste this way. Press %1 to paste.' // MISSING
12} );
diff --git a/sources/plugins/clipboard/lang/hi.js b/sources/plugins/clipboard/lang/hi.js
new file mode 100644
index 0000000..112853c
--- /dev/null
+++ b/sources/plugins/clipboard/lang/hi.js
@@ -0,0 +1,12 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'clipboard', 'hi', {
6 copy: 'कॉपी',
7 copyError: 'आपके ब्राआउज़र की सुरक्षा सॅटिन्ग्स ने कॉपी करने की अनुमति नहीं प्रदान की है। (Ctrl/Cmd+C) का प्रयोग करें।',
8 cut: 'कट',
9 cutError: 'आपके ब्राउज़र की सुरक्षा सॅटिन्ग्स ने कट करने की अनुमति नहीं प्रदान की है। (Ctrl/Cmd+X) का प्रयोग करें।',
10 paste: 'पेस्ट',
11 pasteNotification: 'Your browser doesn\'t allow you to paste this way. Press %1 to paste.' // MISSING
12} );
diff --git a/sources/plugins/clipboard/lang/hr.js b/sources/plugins/clipboard/lang/hr.js
new file mode 100644
index 0000000..4eff9ce
--- /dev/null
+++ b/sources/plugins/clipboard/lang/hr.js
@@ -0,0 +1,12 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'clipboard', 'hr', {
6 copy: 'Kopiraj',
7 copyError: 'Sigurnosne postavke Vašeg pretraživača ne dozvoljavaju operacije automatskog kopiranja. Molimo koristite kraticu na tipkovnici (Ctrl/Cmd+C).',
8 cut: 'Izreži',
9 cutError: 'Sigurnosne postavke Vašeg pretraživača ne dozvoljavaju operacije automatskog izrezivanja. Molimo koristite kraticu na tipkovnici (Ctrl/Cmd+X).',
10 paste: 'Zalijepi',
11 pasteNotification: 'Vaš preglednik Vam ne dozvoljava lijepljenje na ovaj način. Za lijepljenje, pritisnite %1.'
12} );
diff --git a/sources/plugins/clipboard/lang/hu.js b/sources/plugins/clipboard/lang/hu.js
new file mode 100644
index 0000000..646fb15
--- /dev/null
+++ b/sources/plugins/clipboard/lang/hu.js
@@ -0,0 +1,12 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'clipboard', 'hu', {
6 copy: 'Másolás',
7 copyError: 'A böngésző biztonsági beállításai nem engedélyezik a szerkesztőnek, hogy végrehajtsa a másolás műveletet. Használja az alábbi billentyűkombinációt (Ctrl/Cmd+X).',
8 cut: 'Kivágás',
9 cutError: 'A böngésző biztonsági beállításai nem engedélyezik a szerkesztőnek, hogy végrehajtsa a kivágás műveletet. Használja az alábbi billentyűkombinációt (Ctrl/Cmd+X).',
10 paste: 'Beillesztés',
11 pasteNotification: 'Your browser doesn\'t allow you to paste this way. Press %1 to paste.' // MISSING
12} );
diff --git a/sources/plugins/clipboard/lang/id.js b/sources/plugins/clipboard/lang/id.js
new file mode 100644
index 0000000..b68425f
--- /dev/null
+++ b/sources/plugins/clipboard/lang/id.js
@@ -0,0 +1,12 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'clipboard', 'id', {
6 copy: 'Salin',
7 copyError: 'Pengaturan keamanan peramban anda tidak mengizinkan editor untuk mengeksekusi operasi menyalin secara otomatis. Mohon gunakan papan tuts (Ctrl/Cmd+C)',
8 cut: 'Potong',
9 cutError: 'Your browser security settings don\'t permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl/Cmd+X).', // MISSING
10 paste: 'Tempel',
11 pasteNotification: 'Your browser doesn\'t allow you to paste this way. Press %1 to paste.' // MISSING
12} );
diff --git a/sources/plugins/clipboard/lang/is.js b/sources/plugins/clipboard/lang/is.js
new file mode 100644
index 0000000..32a0fce
--- /dev/null
+++ b/sources/plugins/clipboard/lang/is.js
@@ -0,0 +1,12 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'clipboard', 'is', {
6 copy: 'Afrita',
7 copyError: 'Öryggisstillingar vafrans þíns leyfa ekki afritun texta með músaraðgerð. Notaðu lyklaborðið í afrita (Ctrl/Cmd+C).',
8 cut: 'Klippa',
9 cutError: 'Öryggisstillingar vafrans þíns leyfa ekki klippingu texta með músaraðgerð. Notaðu lyklaborðið í klippa (Ctrl/Cmd+X).',
10 paste: 'Líma',
11 pasteNotification: 'Your browser doesn\'t allow you to paste this way. Press %1 to paste.' // MISSING
12} );
diff --git a/sources/plugins/clipboard/lang/it.js b/sources/plugins/clipboard/lang/it.js
new file mode 100644
index 0000000..46e015c
--- /dev/null
+++ b/sources/plugins/clipboard/lang/it.js
@@ -0,0 +1,12 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'clipboard', 'it', {
6 copy: 'Copia',
7 copyError: 'Le impostazioni di sicurezza del browser non permettono di copiare automaticamente il testo. Usa la tastiera (Ctrl/Cmd+C).',
8 cut: 'Taglia',
9 cutError: 'Le impostazioni di sicurezza del browser non permettono di tagliare automaticamente il testo. Usa la tastiera (Ctrl/Cmd+X).',
10 paste: 'Incolla',
11 pasteNotification: 'Il browser non permette di incollare in questo modo. Premere %1 per incollare.'
12} );
diff --git a/sources/plugins/clipboard/lang/ja.js b/sources/plugins/clipboard/lang/ja.js
new file mode 100644
index 0000000..f527e7c
--- /dev/null
+++ b/sources/plugins/clipboard/lang/ja.js
@@ -0,0 +1,12 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'clipboard', 'ja', {
6 copy: 'コピー',
7 copyError: 'ブラウザーのセキュリティ設定によりエディタのコピー操作を自動で実行することができません。実行するには手動でキーボードの(Ctrl/Cmd+C)を使用してください。',
8 cut: '切り取り',
9 cutError: 'ブラウザーのセキュリティ設定によりエディタの切り取り操作を自動で実行することができません。実行するには手動でキーボードの(Ctrl/Cmd+X)を使用してください。',
10 paste: '貼り付け',
11 pasteNotification: 'Your browser doesn\'t allow you to paste this way. Press %1 to paste.' // MISSING
12} );
diff --git a/sources/plugins/clipboard/lang/ka.js b/sources/plugins/clipboard/lang/ka.js
new file mode 100644
index 0000000..2fa9e23
--- /dev/null
+++ b/sources/plugins/clipboard/lang/ka.js
@@ -0,0 +1,12 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'clipboard', 'ka', {
6 copy: 'ასლი',
7 copyError: 'თქვენი ბროუზერის უსაფრთხოების პარამეტრები არ იძლევა ასლის ოპერაციის ავტომატურად განხორციელების საშუალებას. გამოიყენეთ კლავიატურა ამისთვის (Ctrl/Cmd+C).',
8 cut: 'ამოჭრა',
9 cutError: 'თქვენი ბროუზერის უსაფრთხოების პარამეტრები არ იძლევა ამოჭრის ოპერაციის ავტომატურად განხორციელების საშუალებას. გამოიყენეთ კლავიატურა ამისთვის (Ctrl/Cmd+X).',
10 paste: 'ჩასმა',
11 pasteNotification: 'Your browser doesn\'t allow you to paste this way. Press %1 to paste.' // MISSING
12} );
diff --git a/sources/plugins/clipboard/lang/km.js b/sources/plugins/clipboard/lang/km.js
new file mode 100644
index 0000000..dc66ee8
--- /dev/null
+++ b/sources/plugins/clipboard/lang/km.js
@@ -0,0 +1,12 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'clipboard', 'km', {
6 copy: 'ចម្លង',
7 copyError: 'ការកំណត់សុវត្ថភាពរបស់កម្មវិធីរុករករបស់លោកអ្នក នេះ​មិនអាចធ្វើកម្មវិធីតាក់តែងអត្ថបទ ចំលងអត្ថបទយកដោយស្វ័យប្រវត្តបានឡើយ ។ សូមប្រើប្រាស់បន្សំ ឃីដូចនេះ (Ctrl/Cmd+C)។',
8 cut: 'កាត់យក',
9 cutError: 'ការកំណត់សុវត្ថភាពរបស់កម្មវិធីរុករករបស់លោកអ្នក នេះ​មិនអាចធ្វើកម្មវិធីតាក់តែងអត្ថបទ កាត់អត្ថបទយកដោយស្វ័យប្រវត្តបានឡើយ ។ សូមប្រើប្រាស់បន្សំ ឃីដូចនេះ (Ctrl/Cmd+X) ។',
10 paste: 'បិទ​ភ្ជាប់',
11 pasteNotification: 'Your browser doesn\'t allow you to paste this way. Press %1 to paste.' // MISSING
12} );
diff --git a/sources/plugins/clipboard/lang/ko.js b/sources/plugins/clipboard/lang/ko.js
new file mode 100644
index 0000000..8472358
--- /dev/null
+++ b/sources/plugins/clipboard/lang/ko.js
@@ -0,0 +1,12 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'clipboard', 'ko', {
6 copy: '복사',
7 copyError: '브라우저의 보안설정 때문에 복사할 수 없습니다. 키보드(Ctrl/Cmd+C)를 이용해서 복사하십시오.',
8 cut: '잘라내기',
9 cutError: '브라우저의 보안설정 때문에 잘라내기 기능을 실행할 수 없습니다. 키보드(Ctrl/Cmd+X)를 이용해서 잘라내기 하십시오',
10 paste: '붙여넣기',
11 pasteNotification: 'Your browser doesn\'t allow you to paste this way. Press %1 to paste.' // MISSING
12} );
diff --git a/sources/plugins/clipboard/lang/ku.js b/sources/plugins/clipboard/lang/ku.js
new file mode 100644
index 0000000..b87aa8b
--- /dev/null
+++ b/sources/plugins/clipboard/lang/ku.js
@@ -0,0 +1,12 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'clipboard', 'ku', {
6 copy: 'لەبەرگرتنەوە',
7 copyError: 'پارێزی وێبگەڕەکەت ڕێگەنادات بەسەرنووسەکە لە لکاندنی دەقی خۆکارارنە. تکایە لەبری ئەمە ئەم فەرمانە بەکاربهێنە بەداگرتنی کلیلی (Ctrl/Cmd+C).',
8 cut: 'بڕین',
9 cutError: 'پارێزی وێبگەڕەکەت ڕێگەنادات بە سەرنووسەکە لەبڕینی خۆکارانە. تکایە لەبری ئەمە ئەم فەرمانە بەکاربهێنە بەداگرتنی کلیلی (Ctrl/Cmd+X).',
10 paste: 'لکاندن',
11 pasteNotification: 'Your browser doesn\'t allow you to paste this way. Press %1 to paste.' // MISSING
12} );
diff --git a/sources/plugins/clipboard/lang/lt.js b/sources/plugins/clipboard/lang/lt.js
new file mode 100644
index 0000000..c8d3611
--- /dev/null
+++ b/sources/plugins/clipboard/lang/lt.js
@@ -0,0 +1,12 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'clipboard', 'lt', {
6 copy: 'Kopijuoti',
7 copyError: 'Jūsų naršyklės saugumo nustatymai neleidžia redaktoriui automatiškai įvykdyti kopijavimo operacijų. Tam prašome naudoti klaviatūrą (Ctrl/Cmd+C).',
8 cut: 'Iškirpti',
9 cutError: 'Jūsų naršyklės saugumo nustatymai neleidžia redaktoriui automatiškai įvykdyti iškirpimo operacijų. Tam prašome naudoti klaviatūrą (Ctrl/Cmd+X).',
10 paste: 'Įdėti',
11 pasteNotification: 'Your browser doesn\'t allow you to paste this way. Press %1 to paste.' // MISSING
12} );
diff --git a/sources/plugins/clipboard/lang/lv.js b/sources/plugins/clipboard/lang/lv.js
new file mode 100644
index 0000000..49775de
--- /dev/null
+++ b/sources/plugins/clipboard/lang/lv.js
@@ -0,0 +1,12 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'clipboard', 'lv', {
6 copy: 'Kopēt',
7 copyError: 'Jūsu pārlūkprogrammas drošības iestatījumi nepieļauj redaktoram automātiski veikt kopēšanas darbību. Lūdzu, izmantojiet (Ctrl/Cmd+C), lai veiktu šo darbību.',
8 cut: 'Izgriezt',
9 cutError: 'Jūsu pārlūkprogrammas drošības iestatījumi nepieļauj redaktoram automātiski veikt izgriezšanas darbību. Lūdzu, izmantojiet (Ctrl/Cmd+X), lai veiktu šo darbību.',
10 paste: 'Ielīmēt',
11 pasteNotification: 'Your browser doesn\'t allow you to paste this way. Press %1 to paste.' // MISSING
12} );
diff --git a/sources/plugins/clipboard/lang/mk.js b/sources/plugins/clipboard/lang/mk.js
new file mode 100644
index 0000000..07a3d56
--- /dev/null
+++ b/sources/plugins/clipboard/lang/mk.js
@@ -0,0 +1,12 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'clipboard', 'mk', {
6 copy: 'Копирај (Copy)',
7 copyError: 'Опциите за безбедност на вашиот прелистувач не дозволуваат уредувачот автоматски да изврши копирање. Ве молиме употребете ја тастатурата. (Ctrl/Cmd+C)',
8 cut: 'Исечи (Cut)',
9 cutError: 'Опциите за безбедност на вашиот прелистувач не дозволуваат уредувачот автоматски да изврши сечење. Ве молиме употребете ја тастатурата. (Ctrl/Cmd+C)',
10 paste: 'Залепи (Paste)',
11 pasteNotification: 'Your browser doesn\'t allow you to paste this way. Press %1 to paste.' // MISSING
12} );
diff --git a/sources/plugins/clipboard/lang/mn.js b/sources/plugins/clipboard/lang/mn.js
new file mode 100644
index 0000000..3ba66f5
--- /dev/null
+++ b/sources/plugins/clipboard/lang/mn.js
@@ -0,0 +1,12 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'clipboard', 'mn', {
6 copy: 'Хуулах',
7 copyError: 'Таны browser-ын хамгаалалтын тохиргоо editor-д автоматаар хуулах үйлдэлийг зөвшөөрөхгүй байна. (Ctrl/Cmd+C) товчны хослолыг ашиглана уу.',
8 cut: 'Хайчлах',
9 cutError: 'Таны browser-ын хамгаалалтын тохиргоо editor-д автоматаар хайчлах үйлдэлийг зөвшөөрөхгүй байна. (Ctrl/Cmd+X) товчны хослолыг ашиглана уу.',
10 paste: 'Буулгах',
11 pasteNotification: 'Your browser doesn\'t allow you to paste this way. Press %1 to paste.' // MISSING
12} );
diff --git a/sources/plugins/clipboard/lang/ms.js b/sources/plugins/clipboard/lang/ms.js
new file mode 100644
index 0000000..b9e479a
--- /dev/null
+++ b/sources/plugins/clipboard/lang/ms.js
@@ -0,0 +1,12 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'clipboard', 'ms', {
6 copy: 'Salin',
7 copyError: 'Keselamatan perisian browser anda tidak membenarkan operasi salinan text/imej. Sila gunakan papan kekunci (Ctrl/Cmd+C).',
8 cut: 'Potong',
9 cutError: 'Keselamatan perisian browser anda tidak membenarkan operasi suntingan text/imej. Sila gunakan papan kekunci (Ctrl/Cmd+X).',
10 paste: 'Tampal',
11 pasteNotification: 'Your browser doesn\'t allow you to paste this way. Press %1 to paste.' // MISSING
12} );
diff --git a/sources/plugins/clipboard/lang/nb.js b/sources/plugins/clipboard/lang/nb.js
new file mode 100644
index 0000000..bdf1563
--- /dev/null
+++ b/sources/plugins/clipboard/lang/nb.js
@@ -0,0 +1,12 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'clipboard', 'nb', {
6 copy: 'Kopier',
7 copyError: 'Din nettlesers sikkerhetsinstillinger tillater ikke automatisk kopiering av tekst. Vennligst bruk tastatursnarveien (Ctrl/Cmd+C).',
8 cut: 'Klipp ut',
9 cutError: 'Din nettlesers sikkerhetsinstillinger tillater ikke automatisk utklipping av tekst. Vennligst bruk tastatursnarveien (Ctrl/Cmd+X).',
10 paste: 'Lim inn',
11 pasteNotification: 'Nettleseren din lar deg ikke lime inn på denne måten. Trykk %1 for å lime inn.'
12} );
diff --git a/sources/plugins/clipboard/lang/nl.js b/sources/plugins/clipboard/lang/nl.js
new file mode 100644
index 0000000..16bafd8
--- /dev/null
+++ b/sources/plugins/clipboard/lang/nl.js
@@ -0,0 +1,12 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'clipboard', 'nl', {
6 copy: 'Kopiëren',
7 copyError: 'De beveiligingsinstelling van de browser verhinderen het automatisch kopiëren. Gebruik de sneltoets Ctrl/Cmd+C van het toetsenbord.',
8 cut: 'Knippen',
9 cutError: 'De beveiligingsinstelling van de browser verhinderen het automatisch knippen. Gebruik de sneltoets Ctrl/Cmd+X van het toetsenbord.',
10 paste: 'Plakken',
11 pasteNotification: 'Your browser doesn\'t allow you to paste this way. Press %1 to paste.' // MISSING
12} );
diff --git a/sources/plugins/clipboard/lang/no.js b/sources/plugins/clipboard/lang/no.js
new file mode 100644
index 0000000..77ff08a
--- /dev/null
+++ b/sources/plugins/clipboard/lang/no.js
@@ -0,0 +1,12 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'clipboard', 'no', {
6 copy: 'Kopier',
7 copyError: 'Din nettlesers sikkerhetsinstillinger tillater ikke automatisk kopiering av tekst. Vennligst bruk snarveien (Ctrl/Cmd+C).',
8 cut: 'Klipp ut',
9 cutError: 'Din nettlesers sikkerhetsinstillinger tillater ikke automatisk utklipping av tekst. Vennligst bruk snarveien (Ctrl/Cmd+X).',
10 paste: 'Lim inn',
11 pasteNotification: 'Your browser doesn\'t allow you to paste this way. Press %1 to paste.' // MISSING
12} );
diff --git a/sources/plugins/clipboard/lang/oc.js b/sources/plugins/clipboard/lang/oc.js
new file mode 100644
index 0000000..40d99fa
--- /dev/null
+++ b/sources/plugins/clipboard/lang/oc.js
@@ -0,0 +1,12 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'clipboard', 'oc', {
6 copy: 'Copiar',
7 copyError: 'Los paramètres de seguretat de vòstre navigador autorizan pas l\'editor a executar automaticament l\'operacion « Copiar ». Utilizatz l\'acorchi de clavièr a aqueste efièit (Ctrl/Cmd+C).',
8 cut: 'Talhar',
9 cutError: 'Los paramètres de seguretat de vòstre navigador autorizan pas l\'editor a executar automaticament l\'operacion « Talhar ». Utilizatz l\'acorchi de clavièr a aqueste efièit (Ctrl/Cmd+X).',
10 paste: 'Pegar',
11 pasteNotification: 'Your browser doesn\'t allow you to paste this way. Press %1 to paste.' // MISSING
12} );
diff --git a/sources/plugins/clipboard/lang/pl.js b/sources/plugins/clipboard/lang/pl.js
new file mode 100644
index 0000000..494c9c1
--- /dev/null
+++ b/sources/plugins/clipboard/lang/pl.js
@@ -0,0 +1,12 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'clipboard', 'pl', {
6 copy: 'Kopiuj',
7 copyError: 'Ustawienia bezpieczeństwa Twojej przeglądarki nie pozwalają na automatyczne kopiowanie tekstu. Użyj skrótu klawiszowego Ctrl/Cmd+C.',
8 cut: 'Wytnij',
9 cutError: 'Ustawienia bezpieczeństwa Twojej przeglądarki nie pozwalają na automatyczne wycinanie tekstu. Użyj skrótu klawiszowego Ctrl/Cmd+X.',
10 paste: 'Wklej',
11 pasteNotification: 'Twoja przeglądarka nie pozwala na wklejanie treści w ten sposób. Naciśnij %1 by wkleić tekst.'
12} );
diff --git a/sources/plugins/clipboard/lang/pt-br.js b/sources/plugins/clipboard/lang/pt-br.js
new file mode 100644
index 0000000..e0359d9
--- /dev/null
+++ b/sources/plugins/clipboard/lang/pt-br.js
@@ -0,0 +1,12 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'clipboard', 'pt-br', {
6 copy: 'Copiar',
7 copyError: 'As configurações de segurança do seu navegador não permitem que o editor execute operações de copiar automaticamente. Por favor, utilize o teclado para copiar (Ctrl/Cmd+C).',
8 cut: 'Recortar',
9 cutError: 'As configurações de segurança do seu navegador não permitem que o editor execute operações de recortar automaticamente. Por favor, utilize o teclado para recortar (Ctrl/Cmd+X).',
10 paste: 'Colar',
11 pasteNotification: 'Your browser doesn\'t allow you to paste this way. Press %1 to paste.' // MISSING
12} );
diff --git a/sources/plugins/clipboard/lang/pt.js b/sources/plugins/clipboard/lang/pt.js
new file mode 100644
index 0000000..6a6df67
--- /dev/null
+++ b/sources/plugins/clipboard/lang/pt.js
@@ -0,0 +1,12 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'clipboard', 'pt', {
6 copy: 'Copiar',
7 copyError: 'A configuração de segurança do navegador não permite a execução automática de operações de copiar. Por favor use o teclado (Ctrl/Cmd+C).',
8 cut: 'Cortar',
9 cutError: 'A configuração de segurança do navegador não permite a execução automática de operações de cortar. Por favor use o teclado (Ctrl/Cmd+X).',
10 paste: 'Colar',
11 pasteNotification: 'Your browser doesn\'t allow you to paste this way. Press %1 to paste.' // MISSING
12} );
diff --git a/sources/plugins/clipboard/lang/ro.js b/sources/plugins/clipboard/lang/ro.js
new file mode 100644
index 0000000..4eb472a
--- /dev/null
+++ b/sources/plugins/clipboard/lang/ro.js
@@ -0,0 +1,12 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'clipboard', 'ro', {
6 copy: 'Copiază',
7 copyError: 'Setările de securitate ale navigatorului (browser) pe care îl folosiţi nu permit editorului să execute automat operaţiunea de copiere. Vă rugăm folosiţi tastatura (Ctrl/Cmd+C).',
8 cut: 'Taie',
9 cutError: 'Setările de securitate ale navigatorului (browser) pe care îl folosiţi nu permit editorului să execute automat operaţiunea de tăiere. Vă rugăm folosiţi tastatura (Ctrl/Cmd+X).',
10 paste: 'Adaugă',
11 pasteNotification: 'Your browser doesn\'t allow you to paste this way. Press %1 to paste.' // MISSING
12} );
diff --git a/sources/plugins/clipboard/lang/ru.js b/sources/plugins/clipboard/lang/ru.js
new file mode 100644
index 0000000..9ef951f
--- /dev/null
+++ b/sources/plugins/clipboard/lang/ru.js
@@ -0,0 +1,12 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'clipboard', 'ru', {
6 copy: 'Копировать',
7 copyError: 'Настройки безопасности вашего браузера не разрешают редактору выполнять операции по копированию текста. Пожалуйста, используйте для этого клавиатуру (Ctrl/Cmd+C).',
8 cut: 'Вырезать',
9 cutError: 'Настройки безопасности вашего браузера не разрешают редактору выполнять операции по вырезке текста. Пожалуйста, используйте для этого клавиатуру (Ctrl/Cmd+X).',
10 paste: 'Вставить',
11 pasteNotification: 'Ваш браузер не поддерживает данный метод вставки. Для вставки нажмите %1'
12} );
diff --git a/sources/plugins/clipboard/lang/si.js b/sources/plugins/clipboard/lang/si.js
new file mode 100644
index 0000000..7356cf4
--- /dev/null
+++ b/sources/plugins/clipboard/lang/si.js
@@ -0,0 +1,12 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'clipboard', 'si', {
6 copy: 'පිටපත් කරන්න',
7 copyError: 'Your browser security settings don\'t permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl/Cmd+C).', // MISSING
8 cut: 'කපාගන්න',
9 cutError: 'Your browser security settings don\'t permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl/Cmd+X).', // MISSING
10 paste: 'අලවන්න',
11 pasteNotification: 'Your browser doesn\'t allow you to paste this way. Press %1 to paste.' // MISSING
12} );
diff --git a/sources/plugins/clipboard/lang/sk.js b/sources/plugins/clipboard/lang/sk.js
new file mode 100644
index 0000000..b844e58
--- /dev/null
+++ b/sources/plugins/clipboard/lang/sk.js
@@ -0,0 +1,12 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'clipboard', 'sk', {
6 copy: 'Kopírovať',
7 copyError: 'Bezpečnostné nastavenia vášho prehliadača nedovoľujú editoru automaticky spustiť operáciu kopírovania. Použite na to klávesnicu (Ctrl/Cmd+C).',
8 cut: 'Vystrihnúť',
9 cutError: 'Bezpečnostné nastavenia vášho prehliadača nedovoľujú editoru automaticky spustiť operáciu vystrihnutia. Použite na to klávesnicu (Ctrl/Cmd+X).',
10 paste: 'Vložiť',
11 pasteNotification: 'Váš prehliadač nepovoľuje prilepiť text takýmto spôsobom. Pre prilepenie stlačte %1.'
12} );
diff --git a/sources/plugins/clipboard/lang/sl.js b/sources/plugins/clipboard/lang/sl.js
new file mode 100644
index 0000000..787e6fc
--- /dev/null
+++ b/sources/plugins/clipboard/lang/sl.js
@@ -0,0 +1,12 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'clipboard', 'sl', {
6 copy: 'Kopiraj',
7 copyError: 'Varnostne nastavitve brskalnika ne dopuščajo samodejnega kopiranja. Uporabite kombinacijo tipk na tipkovnici (Ctrl/Cmd+C).',
8 cut: 'Izreži',
9 cutError: 'Varnostne nastavitve brskalnika ne dopuščajo samodejnega izrezovanja. Uporabite kombinacijo tipk na tipkovnici (Ctrl/Cmd+X).',
10 paste: 'Prilepi',
11 pasteNotification: 'Your browser doesn\'t allow you to paste this way. Press %1 to paste.' // MISSING
12} );
diff --git a/sources/plugins/clipboard/lang/sq.js b/sources/plugins/clipboard/lang/sq.js
new file mode 100644
index 0000000..d78b2e7
--- /dev/null
+++ b/sources/plugins/clipboard/lang/sq.js
@@ -0,0 +1,12 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'clipboard', 'sq', {
6 copy: 'Kopjo',
7 copyError: 'Të dhënat e sigurisë së shfletuesit tuaj nuk lejojnë që redaktuesi automatikisht të kryej veprimin e kopjimit. Ju lutemi shfrytëzoni tastierën për këtë veprim (Ctrl/Cmd+C).',
8 cut: 'Preje',
9 cutError: 'Të dhënat e sigurisë së shfletuesit tuaj nuk lejojnë që redaktuesi automatikisht të kryej veprimin e prerjes. Ju lutemi shfrytëzoni tastierën për këtë veprim (Ctrl/Cmd+X).',
10 paste: 'Hidhe',
11 pasteNotification: 'Your browser doesn\'t allow you to paste this way. Press %1 to paste.' // MISSING
12} );
diff --git a/sources/plugins/clipboard/lang/sr-latn.js b/sources/plugins/clipboard/lang/sr-latn.js
new file mode 100644
index 0000000..797429f
--- /dev/null
+++ b/sources/plugins/clipboard/lang/sr-latn.js
@@ -0,0 +1,12 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'clipboard', 'sr-latn', {
6 copy: 'Kopiraj',
7 copyError: 'Sigurnosna podešavanja Vašeg pretraživača ne dozvoljavaju operacije automatskog kopiranja teksta. Molimo Vas da koristite prečicu sa tastature (Ctrl/Cmd+C).',
8 cut: 'Iseci',
9 cutError: 'Sigurnosna podešavanja Vašeg pretraživača ne dozvoljavaju operacije automatskog isecanja teksta. Molimo Vas da koristite prečicu sa tastature (Ctrl/Cmd+X).',
10 paste: 'Zalepi',
11 pasteNotification: 'Your browser doesn\'t allow you to paste this way. Press %1 to paste.' // MISSING
12} );
diff --git a/sources/plugins/clipboard/lang/sr.js b/sources/plugins/clipboard/lang/sr.js
new file mode 100644
index 0000000..bd4e655
--- /dev/null
+++ b/sources/plugins/clipboard/lang/sr.js
@@ -0,0 +1,12 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'clipboard', 'sr', {
6 copy: 'Копирај',
7 copyError: 'Сигурносна подешавања Вашег претраживача не дозвољавају операције аутоматског копирања текста. Молимо Вас да користите пречицу са тастатуре (Ctrl/Cmd+C).',
8 cut: 'Исеци',
9 cutError: 'Сигурносна подешавања Вашег претраживача не дозвољавају операције аутоматског исецања текста. Молимо Вас да користите пречицу са тастатуре (Ctrl/Cmd+X).',
10 paste: 'Залепи',
11 pasteNotification: 'Your browser doesn\'t allow you to paste this way. Press %1 to paste.' // MISSING
12} );
diff --git a/sources/plugins/clipboard/lang/sv.js b/sources/plugins/clipboard/lang/sv.js
new file mode 100644
index 0000000..d1ab00b
--- /dev/null
+++ b/sources/plugins/clipboard/lang/sv.js
@@ -0,0 +1,12 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'clipboard', 'sv', {
6 copy: 'Kopiera',
7 copyError: 'Säkerhetsinställningar i din webbläsare tillåter inte åtgärden kopiera. Använd (Ctrl/Cmd+C) istället.',
8 cut: 'Klipp ut',
9 cutError: 'Säkerhetsinställningar i din webbläsare tillåter inte åtgärden klipp ut. Använd (Ctrl/Cmd+X) istället.',
10 paste: 'Klistra in',
11 pasteNotification: 'Din webbläsare tillåter dig inte att klistra in på detta vis. Tryck på %1 för att klistra in.'
12} );
diff --git a/sources/plugins/clipboard/lang/th.js b/sources/plugins/clipboard/lang/th.js
new file mode 100644
index 0000000..b645b90
--- /dev/null
+++ b/sources/plugins/clipboard/lang/th.js
@@ -0,0 +1,12 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'clipboard', 'th', {
6 copy: 'สำเนา',
7 copyError: 'ไม่สามารถสำเนาข้อความที่เลือกไว้ได้เนื่องจากการกำหนดค่าระดับความปลอดภัย. กรุณาใช้ปุ่มลัดเพื่อวางข้อความแทน (กดปุ่ม Ctrl/Cmd และตัว C พร้อมกัน).',
8 cut: 'ตัด',
9 cutError: 'ไม่สามารถตัดข้อความที่เลือกไว้ได้เนื่องจากการกำหนดค่าระดับความปลอดภัย. กรุณาใช้ปุ่มลัดเพื่อวางข้อความแทน (กดปุ่ม Ctrl/Cmd และตัว X พร้อมกัน).',
10 paste: 'วาง',
11 pasteNotification: 'Your browser doesn\'t allow you to paste this way. Press %1 to paste.' // MISSING
12} );
diff --git a/sources/plugins/clipboard/lang/tr.js b/sources/plugins/clipboard/lang/tr.js
new file mode 100644
index 0000000..4645335
--- /dev/null
+++ b/sources/plugins/clipboard/lang/tr.js
@@ -0,0 +1,12 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'clipboard', 'tr', {
6 copy: 'Kopyala',
7 copyError: 'Gezgin yazılımınızın güvenlik ayarları düzenleyicinin otomatik kopyalama işlemine izin vermiyor. İşlem için (Ctrl/Cmd+C) tuşlarını kullanın.',
8 cut: 'Kes',
9 cutError: 'Gezgin yazılımınızın güvenlik ayarları düzenleyicinin otomatik kesme işlemine izin vermiyor. İşlem için (Ctrl/Cmd+X) tuşlarını kullanın.',
10 paste: 'Yapıştır',
11 pasteNotification: 'Your browser doesn\'t allow you to paste this way. Press %1 to paste.' // MISSING
12} );
diff --git a/sources/plugins/clipboard/lang/tt.js b/sources/plugins/clipboard/lang/tt.js
new file mode 100644
index 0000000..5e641e3
--- /dev/null
+++ b/sources/plugins/clipboard/lang/tt.js
@@ -0,0 +1,12 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'clipboard', 'tt', {
6 copy: 'Күчермәләү',
7 copyError: 'Браузерыгызның иминлек үзлекләре автоматик рәвештә күчермәләү үтәүне тыя. Тиз төймәләрне (Ctrl/Cmd+C) кулланыгыз.',
8 cut: 'Кисеп алу',
9 cutError: 'Браузерыгызның иминлек үзлекләре автоматик рәвештә күчермәләү үтәүне тыя. Тиз төймәләрне (Ctrl/Cmd+C) кулланыгыз.',
10 paste: 'Өстәү',
11 pasteNotification: 'Your browser doesn\'t allow you to paste this way. Press %1 to paste.' // MISSING
12} );
diff --git a/sources/plugins/clipboard/lang/ug.js b/sources/plugins/clipboard/lang/ug.js
new file mode 100644
index 0000000..deb1d2b
--- /dev/null
+++ b/sources/plugins/clipboard/lang/ug.js
@@ -0,0 +1,12 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'clipboard', 'ug', {
6 copy: 'كۆچۈر',
7 copyError: 'تور كۆرگۈڭىزنىڭ بىخەتەرلىك تەڭشىكى تەھرىرلىگۈچنىڭ كۆچۈر مەشغۇلاتىنى ئۆزلۈكىدىن ئىجرا قىلىشىغا يول قويمايدۇ، ھەرپتاختا تېز كۇنۇپكا (Ctrl/Cmd+C) ئارقىلىق تاماملاڭ',
8 cut: 'كەس',
9 cutError: 'تور كۆرگۈڭىزنىڭ بىخەتەرلىك تەڭشىكى تەھرىرلىگۈچنىڭ كەس مەشغۇلاتىنى ئۆزلۈكىدىن ئىجرا قىلىشىغا يول قويمايدۇ، ھەرپتاختا تېز كۇنۇپكا (Ctrl/Cmd+X) ئارقىلىق تاماملاڭ',
10 paste: 'چاپلا',
11 pasteNotification: 'Your browser doesn\'t allow you to paste this way. Press %1 to paste.' // MISSING
12} );
diff --git a/sources/plugins/clipboard/lang/uk.js b/sources/plugins/clipboard/lang/uk.js
new file mode 100644
index 0000000..f3e06a5
--- /dev/null
+++ b/sources/plugins/clipboard/lang/uk.js
@@ -0,0 +1,12 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'clipboard', 'uk', {
6 copy: 'Копіювати',
7 copyError: 'Налаштування безпеки Вашого браузера не дозволяють редактору автоматично виконувати операції копіювання. Будь ласка, використовуйте клавіатуру для цього (Ctrl/Cmd+C).',
8 cut: 'Вирізати',
9 cutError: 'Налаштування безпеки Вашого браузера не дозволяють редактору автоматично виконувати операції вирізування. Будь ласка, використовуйте клавіатуру для цього (Ctrl/Cmd+X)',
10 paste: 'Вставити',
11 pasteNotification: 'Your browser doesn\'t allow you to paste this way. Press %1 to paste.' // MISSING
12} );
diff --git a/sources/plugins/clipboard/lang/vi.js b/sources/plugins/clipboard/lang/vi.js
new file mode 100644
index 0000000..2928a95
--- /dev/null
+++ b/sources/plugins/clipboard/lang/vi.js
@@ -0,0 +1,12 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'clipboard', 'vi', {
6 copy: 'Sao chép',
7 copyError: 'Các thiết lập bảo mật của trình duyệt không cho phép trình biên tập tự động thực thi lệnh sao chép. Hãy sử dụng bàn phím cho lệnh này (Ctrl/Cmd+C).',
8 cut: 'Cắt',
9 cutError: 'Các thiết lập bảo mật của trình duyệt không cho phép trình biên tập tự động thực thi lệnh cắt. Hãy sử dụng bàn phím cho lệnh này (Ctrl/Cmd+X).',
10 paste: 'Dán',
11 pasteNotification: 'Your browser doesn\'t allow you to paste this way. Press %1 to paste.' // MISSING
12} );
diff --git a/sources/plugins/clipboard/lang/zh-cn.js b/sources/plugins/clipboard/lang/zh-cn.js
new file mode 100644
index 0000000..4b738cb
--- /dev/null
+++ b/sources/plugins/clipboard/lang/zh-cn.js
@@ -0,0 +1,12 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'clipboard', 'zh-cn', {
6 copy: '复制',
7 copyError: '您的浏览器安全设置不允许编辑器自动执行复制操作,请使用键盘快捷键(Ctrl/Cmd+C)来完成。',
8 cut: '剪切',
9 cutError: '您的浏览器安全设置不允许编辑器自动执行剪切操作,请使用键盘快捷键(Ctrl/Cmd+X)来完成。',
10 paste: '粘贴',
11 pasteNotification: '您的浏览器不允许用此方式粘贴,要粘贴请按 %1。'
12} );
diff --git a/sources/plugins/clipboard/lang/zh.js b/sources/plugins/clipboard/lang/zh.js
new file mode 100644
index 0000000..f91de7e
--- /dev/null
+++ b/sources/plugins/clipboard/lang/zh.js
@@ -0,0 +1,12 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'clipboard', 'zh', {
6 copy: '複製',
7 copyError: '瀏覽器的安全性設定不允許編輯器自動執行複製動作。請使用鍵盤快捷鍵 (Ctrl/Cmd+C) 複製。',
8 cut: '剪下',
9 cutError: '瀏覽器的安全性設定不允許編輯器自動執行剪下動作。請使用鏐盤快捷鍵 (Ctrl/Cmd+X) 剪下。',
10 paste: '貼上',
11 pasteNotification: 'Your browser doesn\'t allow you to paste this way. Press %1 to paste.' // MISSING
12} );
diff --git a/sources/plugins/clipboard/plugin.js b/sources/plugins/clipboard/plugin.js
new file mode 100644
index 0000000..433f547
--- /dev/null
+++ b/sources/plugins/clipboard/plugin.js
@@ -0,0 +1,2780 @@
1/**
2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */
5
6/**
7 * @ignore
8 * File overview: Clipboard support.
9 */
10
11//
12// COPY & PASTE EXECUTION FLOWS:
13// -- CTRL+C
14// * if ( isCustomCopyCutSupported )
15// * dataTransfer.setData( 'text/html', getSelectedHtml )
16// * else
17// * browser's default behavior
18// -- CTRL+X
19// * listen onKey (onkeydown)
20// * fire 'saveSnapshot' on editor
21// * if ( isCustomCopyCutSupported )
22// * dataTransfer.setData( 'text/html', getSelectedHtml )
23// * extractSelectedHtml // remove selected contents
24// * else
25// * browser's default behavior
26// * deferred second 'saveSnapshot' event
27// -- CTRL+V
28// * listen onKey (onkeydown)
29// * simulate 'beforepaste' for non-IEs on editable
30// * listen 'onpaste' on editable ('onbeforepaste' for IE)
31// * fire 'beforePaste' on editor
32// * if ( !canceled && ( htmlInDataTransfer || !external paste) && dataTransfer is not empty ) getClipboardDataByPastebin
33// * fire 'paste' on editor
34// * !canceled && fire 'afterPaste' on editor
35// -- Copy command
36// * tryToCutCopy
37// * execCommand
38// * !success && notification
39// -- Cut command
40// * fixCut
41// * tryToCutCopy
42// * execCommand
43// * !success && notification
44// -- Paste command
45// * fire 'paste' on editable ('beforepaste' for IE)
46// * !canceled && execCommand 'paste'
47// -- Paste from native context menu & menubar
48// (Fx & Webkits are handled in 'paste' default listener.
49// Opera cannot be handled at all because it doesn't fire any events
50// Special treatment is needed for IE, for which is this part of doc)
51// * listen 'onpaste'
52// * cancel native event
53// * fire 'beforePaste' on editor
54// * if ( !canceled && ( htmlInDataTransfer || !external paste) && dataTransfer is not empty ) getClipboardDataByPastebin
55// * execIECommand( 'paste' ) -> this fires another 'paste' event, so cancel it
56// * fire 'paste' on editor
57// * !canceled && fire 'afterPaste' on editor
58//
59//
60// PASTE EVENT - PREPROCESSING:
61// -- Possible dataValue types: auto, text, html.
62// -- Possible dataValue contents:
63// * text (possible \n\r)
64// * htmlified text (text + br,div,p - no presentational markup & attrs - depends on browser)
65// * html
66// -- Possible flags:
67// * htmlified - if true then content is a HTML even if no markup inside. This flag is set
68// for content from editable pastebins, because they 'htmlify' pasted content.
69//
70// -- Type: auto:
71// * content: htmlified text -> filter, unify text markup (brs, ps, divs), set type: text
72// * content: html -> filter, set type: html
73// -- Type: text:
74// * content: htmlified text -> filter, unify text markup
75// * content: html -> filter, strip presentational markup, unify text markup
76// -- Type: html:
77// * content: htmlified text -> filter, unify text markup
78// * content: html -> filter
79//
80// -- Phases:
81// * if dataValue is empty copy data from dataTransfer to dataValue (priority 1)
82// * filtering (priorities 3-5) - e.g. pastefromword filters
83// * content type sniffing (priority 6)
84// * markup transformations for text (priority 6)
85//
86// DRAG & DROP EXECUTION FLOWS:
87// -- Drag
88// * save to the global object:
89// * drag timestamp (with 'cke-' prefix),
90// * selected html,
91// * drag range,
92// * editor instance.
93// * put drag timestamp into event.dataTransfer.text
94// -- Drop
95// * if events text == saved timestamp && editor == saved editor
96// internal drag & drop occurred
97// * getRangeAtDropPosition
98// * create bookmarks for drag and drop ranges starting from the end of the document
99// * dragRange.deleteContents()
100// * fire 'paste' with saved html and drop range
101// * if events text == saved timestamp && editor != saved editor
102// cross editor drag & drop occurred
103// * getRangeAtDropPosition
104// * fire 'paste' with saved html
105// * dragRange.deleteContents()
106// * FF: refreshCursor on afterPaste
107// * if events text != saved timestamp
108// drop form external source occurred
109// * getRangeAtDropPosition
110// * if event contains html data then fire 'paste' with html
111// * else if event contains text data then fire 'paste' with encoded text
112// * FF: refreshCursor on afterPaste
113
114'use strict';
115
116( function() {
117 // Register the plugin.
118 CKEDITOR.plugins.add( 'clipboard', {
119 requires: 'notification,toolbar',
120 // jscs:disable maximumLineLength
121 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', // %REMOVE_LINE_CORE%
122 // jscs:enable maximumLineLength
123 icons: 'copy,copy-rtl,cut,cut-rtl,paste,paste-rtl', // %REMOVE_LINE_CORE%
124 hidpi: true, // %REMOVE_LINE_CORE%
125 init: function( editor ) {
126 var filterType,
127 filtersFactory = filtersFactoryFactory();
128
129 if ( editor.config.forcePasteAsPlainText ) {
130 filterType = 'plain-text';
131 } else if ( editor.config.pasteFilter ) {
132 filterType = editor.config.pasteFilter;
133 }
134 // On Webkit the pasteFilter defaults 'semantic-content' because pasted data is so terrible
135 // that it must be always filtered.
136 else if ( CKEDITOR.env.webkit && !( 'pasteFilter' in editor.config ) ) {
137 filterType = 'semantic-content';
138 }
139
140 editor.pasteFilter = filtersFactory.get( filterType );
141
142 initPasteClipboard( editor );
143 initDragDrop( editor );
144
145 // Convert image file (if present) to base64 string for Firefox. Do it as the first
146 // step as the conversion is asynchronous and should hold all further paste processing.
147 if ( CKEDITOR.env.gecko ) {
148 var supportedImageTypes = [ 'image/png', 'image/jpeg', 'image/gif' ],
149 latestId;
150
151 editor.on( 'paste', function( evt ) {
152 var dataObj = evt.data,
153 data = dataObj.dataValue,
154 dataTransfer = dataObj.dataTransfer;
155
156 // If data empty check for image content inside data transfer. http://dev.ckeditor.com/ticket/16705
157 if ( !data && dataObj.method == 'paste' && dataTransfer && dataTransfer.getFilesCount() == 1 && latestId != dataTransfer.id ) {
158 var file = dataTransfer.getFile( 0 );
159
160 if ( CKEDITOR.tools.indexOf( supportedImageTypes, file.type ) != -1 ) {
161 var fileReader = new FileReader();
162
163 // Convert image file to img tag with base64 image.
164 fileReader.addEventListener( 'load', function() {
165 evt.data.dataValue = '<img src="' + fileReader.result + '" />';
166 editor.fire( 'paste', evt.data );
167 }, false );
168
169 // Proceed with normal flow if reading file was aborted.
170 fileReader.addEventListener( 'abort', function() {
171 editor.fire( 'paste', evt.data );
172 }, false );
173
174 // Proceed with normal flow if reading file failed.
175 fileReader.addEventListener( 'error', function() {
176 editor.fire( 'paste', evt.data );
177 }, false );
178
179 fileReader.readAsDataURL( file );
180
181 latestId = dataObj.dataTransfer.id;
182
183 evt.stop();
184 }
185 }
186 }, null, null, 1 );
187 }
188
189 editor.on( 'paste', function( evt ) {
190 // Init `dataTransfer` if `paste` event was fired without it, so it will be always available.
191 if ( !evt.data.dataTransfer ) {
192 evt.data.dataTransfer = new CKEDITOR.plugins.clipboard.dataTransfer();
193 }
194
195 // If dataValue is already set (manually or by paste bin), so do not override it.
196 if ( evt.data.dataValue ) {
197 return;
198 }
199
200 var dataTransfer = evt.data.dataTransfer,
201 // IE support only text data and throws exception if we try to get html data.
202 // This html data object may also be empty if we drag content of the textarea.
203 value = dataTransfer.getData( 'text/html' );
204
205 if ( value ) {
206 evt.data.dataValue = value;
207 evt.data.type = 'html';
208 } else {
209 // Try to get text data otherwise.
210 value = dataTransfer.getData( 'text/plain' );
211
212 if ( value ) {
213 evt.data.dataValue = editor.editable().transformPlainTextToHtml( value );
214 evt.data.type = 'text';
215 }
216 }
217 }, null, null, 1 );
218
219 editor.on( 'paste', function( evt ) {
220 var data = evt.data.dataValue,
221 blockElements = CKEDITOR.dtd.$block;
222
223 // Filter webkit garbage.
224 if ( data.indexOf( 'Apple-' ) > -1 ) {
225 // Replace special webkit's &nbsp; with simple space, because webkit
226 // produces them even for normal spaces.
227 data = data.replace( /<span class="Apple-converted-space">&nbsp;<\/span>/gi, ' ' );
228
229 // Strip <span> around white-spaces when not in forced 'html' content type.
230 // This spans are created only when pasting plain text into Webkit,
231 // but for safety reasons remove them always.
232 if ( evt.data.type != 'html' ) {
233 data = data.replace( /<span class="Apple-tab-span"[^>]*>([^<]*)<\/span>/gi, function( all, spaces ) {
234 // Replace tabs with 4 spaces like Fx does.
235 return spaces.replace( /\t/g, '&nbsp;&nbsp; &nbsp;' );
236 } );
237 }
238
239 // This br is produced only when copying & pasting HTML content.
240 if ( data.indexOf( '<br class="Apple-interchange-newline">' ) > -1 ) {
241 evt.data.startsWithEOL = 1;
242 evt.data.preSniffing = 'html'; // Mark as not text.
243 data = data.replace( /<br class="Apple-interchange-newline">/, '' );
244 }
245
246 // Remove all other classes.
247 data = data.replace( /(<[^>]+) class="Apple-[^"]*"/gi, '$1' );
248 }
249
250 // Strip editable that was copied from inside. (http://dev.ckeditor.com/ticket/9534)
251 if ( data.match( /^<[^<]+cke_(editable|contents)/i ) ) {
252 var tmp,
253 editable_wrapper,
254 wrapper = new CKEDITOR.dom.element( 'div' );
255
256 wrapper.setHtml( data );
257 // Verify for sure and check for nested editor UI parts. (http://dev.ckeditor.com/ticket/9675)
258 while ( wrapper.getChildCount() == 1 &&
259 ( tmp = wrapper.getFirst() ) &&
260 tmp.type == CKEDITOR.NODE_ELEMENT && // Make sure first-child is element.
261 ( tmp.hasClass( 'cke_editable' ) || tmp.hasClass( 'cke_contents' ) ) ) {
262 wrapper = editable_wrapper = tmp;
263 }
264
265 // If editable wrapper was found strip it and bogus <br> (added on FF).
266 if ( editable_wrapper )
267 data = editable_wrapper.getHtml().replace( /<br>$/i, '' );
268 }
269
270 if ( CKEDITOR.env.ie ) {
271 // &nbsp; <p> -> <p> (br.cke-pasted-remove will be removed later)
272 data = data.replace( /^&nbsp;(?: |\r\n)?<(\w+)/g, function( match, elementName ) {
273 if ( elementName.toLowerCase() in blockElements ) {
274 evt.data.preSniffing = 'html'; // Mark as not a text.
275 return '<' + elementName;
276 }
277 return match;
278 } );
279 } else if ( CKEDITOR.env.webkit ) {
280 // </p><div><br></div> -> </p><br>
281 // We don't mark br, because this situation can happen for htmlified text too.
282 data = data.replace( /<\/(\w+)><div><br><\/div>$/, function( match, elementName ) {
283 if ( elementName in blockElements ) {
284 evt.data.endsWithEOL = 1;
285 return '</' + elementName + '>';
286 }
287 return match;
288 } );
289 } else if ( CKEDITOR.env.gecko ) {
290 // Firefox adds bogus <br> when user pasted text followed by space(s).
291 data = data.replace( /(\s)<br>$/, '$1' );
292 }
293
294 evt.data.dataValue = data;
295 }, null, null, 3 );
296
297 editor.on( 'paste', function( evt ) {
298 var dataObj = evt.data,
299 type = editor._.nextPasteType || dataObj.type,
300 data = dataObj.dataValue,
301 trueType,
302 // Default is 'html'.
303 defaultType = editor.config.clipboard_defaultContentType || 'html',
304 transferType = dataObj.dataTransfer.getTransferType( editor );
305
306 // If forced type is 'html' we don't need to know true data type.
307 if ( type == 'html' || dataObj.preSniffing == 'html' ) {
308 trueType = 'html';
309 } else {
310 trueType = recogniseContentType( data );
311 }
312
313 delete editor._.nextPasteType;
314
315 // Unify text markup.
316 if ( trueType == 'htmlifiedtext' ) {
317 data = htmlifiedTextHtmlification( editor.config, data );
318 }
319
320 // Strip presentational markup & unify text markup.
321 // Forced plain text.
322 // Note: we do not check dontFilter option in this case, because forcePAPT was implemented
323 // before pasteFilter and pasteFilter is automatically used on Webkit&Blink since 4.5, so
324 // forcePAPT should have priority as it had before 4.5.
325 if ( type == 'text' && trueType == 'html' ) {
326 data = filterContent( editor, data, filtersFactory.get( 'plain-text' ) );
327 }
328 // External paste and pasteFilter exists and filtering isn't disabled.
329 else if ( transferType == CKEDITOR.DATA_TRANSFER_EXTERNAL && editor.pasteFilter && !dataObj.dontFilter ) {
330 data = filterContent( editor, data, editor.pasteFilter );
331 }
332
333 if ( dataObj.startsWithEOL ) {
334 data = '<br data-cke-eol="1">' + data;
335 }
336 if ( dataObj.endsWithEOL ) {
337 data += '<br data-cke-eol="1">';
338 }
339
340 if ( type == 'auto' ) {
341 type = ( trueType == 'html' || defaultType == 'html' ) ? 'html' : 'text';
342 }
343
344 dataObj.type = type;
345 dataObj.dataValue = data;
346 delete dataObj.preSniffing;
347 delete dataObj.startsWithEOL;
348 delete dataObj.endsWithEOL;
349 }, null, null, 6 );
350
351 // Inserts processed data into the editor at the end of the
352 // events chain.
353 editor.on( 'paste', function( evt ) {
354 var data = evt.data;
355
356 if ( data.dataValue ) {
357 editor.insertHtml( data.dataValue, data.type, data.range );
358
359 // Defer 'afterPaste' so all other listeners for 'paste' will be fired first.
360 // Fire afterPaste only if paste inserted some HTML.
361 setTimeout( function() {
362 editor.fire( 'afterPaste' );
363 }, 0 );
364 }
365 }, null, null, 1000 );
366 }
367 } );
368
369 function firePasteEvents( editor, data, withBeforePaste ) {
370 if ( !data.type ) {
371 data.type = 'auto';
372 }
373
374 if ( withBeforePaste ) {
375 // Fire 'beforePaste' event so clipboard flavor get customized
376 // by other plugins.
377 if ( editor.fire( 'beforePaste', data ) === false )
378 return false; // Event canceled
379 }
380
381 // Do not fire paste if there is no data (dataValue and dataTranfser are empty).
382 // This check should be done after firing 'beforePaste' because for native paste
383 // 'beforePaste' is by default fired even for empty clipboard.
384 if ( !data.dataValue && data.dataTransfer.isEmpty() ) {
385 return false;
386 }
387
388 if ( !data.dataValue ) {
389 data.dataValue = '';
390 }
391
392 // Because of FF bug we need to use this hack, otherwise cursor is hidden
393 // or it is not possible to move it (http://dev.ckeditor.com/ticket/12420).
394 // Also, check that editor.toolbox exists, because the toolbar plugin might not be loaded (http://dev.ckeditor.com/ticket/13305).
395 if ( CKEDITOR.env.gecko && data.method == 'drop' && editor.toolbox ) {
396 editor.once( 'afterPaste', function() {
397 editor.toolbox.focus();
398 } );
399 }
400
401 return editor.fire( 'paste', data );
402 }
403
404 function initPasteClipboard( editor ) {
405 var clipboard = CKEDITOR.plugins.clipboard,
406 preventBeforePasteEvent = 0,
407 preventPasteEvent = 0,
408 inReadOnly = 0;
409
410 addListeners();
411 addButtonsCommands();
412
413 /**
414 * Gets clipboard data by directly accessing the clipboard (IE only).
415 *
416 * editor.getClipboardData( function( data ) {
417 * if ( data )
418 * alert( data.type + ' ' + data.dataValue );
419 * } );
420 *
421 * @member CKEDITOR.editor
422 * @param {Function/Object} callbackOrOptions For function, see the `callback` parameter documentation. The object was used before 4.7.0 with the `title` property, to set the paste dialog's title.
423 * @param {Function} callback A function that will be executed with the `data` property of the
424 * {@link CKEDITOR.editor#event-paste paste event} or `null` if none of the capturing methods succeeded.
425 * Since 4.7.0 the `callback` should be provided as a first argument, just like in the example above. This parameter will be removed in
426 * an upcoming major release.
427 */
428 editor.getClipboardData = function( callbackOrOptions, callback ) {
429 // Options are optional - args shift.
430 if ( !callback ) {
431 callback = callbackOrOptions;
432 callbackOrOptions = null;
433 }
434
435 // Listen with maximum priority to handle content before everyone else.
436 // This callback will handle paste event that will be fired if direct
437 // access to the clipboard succeed in IE.
438 editor.on( 'paste', onPaste, null, null, 0 );
439
440 // If command didn't succeed (only IE allows to access clipboard and only if
441 // user agrees) invoke callback with null, meaning that paste is not blocked.
442 if ( getClipboardDataDirectly() === false ) {
443 // Direct access to the clipboard wasn't successful so remove listener.
444 editor.removeListener( 'paste', onPaste );
445
446 callback( null );
447 }
448
449 function onPaste( evt ) {
450 evt.removeListener();
451 evt.cancel();
452 callback( evt.data );
453 }
454 };
455
456 function addButtonsCommands() {
457 addButtonCommand( 'Cut', 'cut', createCutCopyCmd( 'cut' ), 10, 1 );
458 addButtonCommand( 'Copy', 'copy', createCutCopyCmd( 'copy' ), 20, 4 );
459 addButtonCommand( 'Paste', 'paste', createPasteCmd(), 30, 8 );
460
461 function addButtonCommand( buttonName, commandName, command, toolbarOrder, ctxMenuOrder ) {
462 var lang = editor.lang.clipboard[ commandName ];
463
464 editor.addCommand( commandName, command );
465 editor.ui.addButton && editor.ui.addButton( buttonName, {
466 label: lang,
467 command: commandName,
468 toolbar: 'clipboard,' + toolbarOrder
469 } );
470
471 // If the "menu" plugin is loaded, register the menu item.
472 if ( editor.addMenuItems ) {
473 editor.addMenuItem( commandName, {
474 label: lang,
475 command: commandName,
476 group: 'clipboard',
477 order: ctxMenuOrder
478 } );
479 }
480 }
481 }
482
483 function addListeners() {
484 editor.on( 'key', onKey );
485 editor.on( 'contentDom', addPasteListenersToEditable );
486
487 // For improved performance, we're checking the readOnly state on selectionChange instead of hooking a key event for that.
488 editor.on( 'selectionChange', function( evt ) {
489 inReadOnly = evt.data.selection.getRanges()[ 0 ].checkReadOnly();
490 setToolbarStates();
491 } );
492
493 // If the "contextmenu" plugin is loaded, register the listeners.
494 if ( editor.contextMenu ) {
495 editor.contextMenu.addListener( function( element, selection ) {
496 inReadOnly = selection.getRanges()[ 0 ].checkReadOnly();
497 return {
498 cut: stateFromNamedCommand( 'cut' ),
499 copy: stateFromNamedCommand( 'copy' ),
500 paste: stateFromNamedCommand( 'paste' )
501 };
502 } );
503 }
504 }
505
506 // Add events listeners to editable.
507 function addPasteListenersToEditable() {
508 var editable = editor.editable();
509
510 if ( CKEDITOR.plugins.clipboard.isCustomCopyCutSupported ) {
511 var initOnCopyCut = function( evt ) {
512 // If user tries to cut in read-only editor, we must prevent default action. (http://dev.ckeditor.com/ticket/13872)
513 if ( !editor.readOnly || evt.name != 'cut' ) {
514 clipboard.initPasteDataTransfer( evt, editor );
515 }
516 evt.data.preventDefault();
517 };
518
519 editable.on( 'copy', initOnCopyCut );
520 editable.on( 'cut', initOnCopyCut );
521
522 // Delete content with the low priority so one can overwrite cut data.
523 editable.on( 'cut', function() {
524 // If user tries to cut in read-only editor, we must prevent default action. (http://dev.ckeditor.com/ticket/13872)
525 if ( !editor.readOnly ) {
526 editor.extractSelectedHtml();
527 }
528 }, null, null, 999 );
529 }
530
531 // We'll be catching all pasted content in one line, regardless of whether
532 // it's introduced by a document command execution (e.g. toolbar buttons) or
533 // user paste behaviors (e.g. CTRL+V).
534 editable.on( clipboard.mainPasteEvent, function( evt ) {
535 if ( clipboard.mainPasteEvent == 'beforepaste' && preventBeforePasteEvent ) {
536 return;
537 }
538
539 // If you've just asked yourself why preventPasteEventNow() is not here, but
540 // in listener for CTRL+V and exec method of 'paste' command
541 // you've asked the same question we did.
542 //
543 // THE ANSWER:
544 //
545 // First thing to notice - this answer makes sense only for IE,
546 // because other browsers don't listen for 'paste' event.
547 //
548 // What would happen if we move preventPasteEventNow() here?
549 // For:
550 // * CTRL+V - IE fires 'beforepaste', so we prevent 'paste' and pasteDataFromClipboard(). OK.
551 // * editor.execCommand( 'paste' ) - we fire 'beforepaste', so we prevent
552 // 'paste' and pasteDataFromClipboard() and doc.execCommand( 'Paste' ). OK.
553 // * native context menu - IE fires 'beforepaste', so we prevent 'paste', but unfortunately
554 // on IE we fail with pasteDataFromClipboard() here, because of... we don't know why, but
555 // we just fail, so... we paste nothing. FAIL.
556 // * native menu bar - the same as for native context menu.
557 //
558 // But don't you know any way to distinguish first two cases from last two?
559 // Only one - special flag set in CTRL+V handler and exec method of 'paste'
560 // command. And that's what we did using preventPasteEventNow().
561
562 pasteDataFromClipboard( evt );
563 } );
564
565 // It's not possible to clearly handle all four paste methods (ctrl+v, native menu bar
566 // native context menu, editor's command) in one 'paste/beforepaste' event in IE.
567 //
568 // For ctrl+v & editor's command it's easy to handle pasting in 'beforepaste' listener,
569 // so we do this. For another two methods it's better to use 'paste' event.
570 //
571 // 'paste' is always being fired after 'beforepaste' (except of weird one on opening native
572 // context menu), so for two methods handled in 'beforepaste' we're canceling 'paste'
573 // using preventPasteEvent state.
574 //
575 // 'paste' event in IE is being fired before getClipboardDataByPastebin executes its callback.
576 //
577 // QUESTION: Why didn't you handle all 4 paste methods in handler for 'paste'?
578 // Wouldn't this just be simpler?
579 // ANSWER: Then we would have to evt.data.preventDefault() only for native
580 // context menu and menu bar pastes. The same with execIECommand().
581 // That would force us to mark CTRL+V and editor's paste command with
582 // special flag, other than preventPasteEvent. But we still would have to
583 // have preventPasteEvent for the second event fired by execIECommand.
584 // Code would be longer and not cleaner.
585 if ( clipboard.mainPasteEvent == 'beforepaste' ) {
586 editable.on( 'paste', function( evt ) {
587 if ( preventPasteEvent ) {
588 return;
589 }
590
591 // Cancel next 'paste' event fired by execIECommand( 'paste' )
592 // at the end of this callback.
593 preventPasteEventNow();
594
595 // Prevent native paste.
596 evt.data.preventDefault();
597
598 pasteDataFromClipboard( evt );
599
600 // Force IE to paste content into pastebin so pasteDataFromClipboard will work.
601 execIECommand( 'paste' );
602 } );
603
604 // If mainPasteEvent is 'beforePaste' (IE before Edge),
605 // dismiss the (wrong) 'beforepaste' event fired on context/toolbar menu open. (http://dev.ckeditor.com/ticket/7953)
606 editable.on( 'contextmenu', preventBeforePasteEventNow, null, null, 0 );
607
608 editable.on( 'beforepaste', function( evt ) {
609 // Do not prevent event on CTRL+V and SHIFT+INS because it blocks paste (http://dev.ckeditor.com/ticket/11970).
610 if ( evt.data && !evt.data.$.ctrlKey && !evt.data.$.shiftKey )
611 preventBeforePasteEventNow();
612 }, null, null, 0 );
613 }
614
615 editable.on( 'beforecut', function() {
616 !preventBeforePasteEvent && fixCut( editor );
617 } );
618
619 var mouseupTimeout;
620
621 // Use editor.document instead of editable in non-IEs for observing mouseup
622 // since editable won't fire the event if selection process started within
623 // iframe and ended out of the editor (http://dev.ckeditor.com/ticket/9851).
624 editable.attachListener( CKEDITOR.env.ie ? editable : editor.document.getDocumentElement(), 'mouseup', function() {
625 mouseupTimeout = setTimeout( function() {
626 setToolbarStates();
627 }, 0 );
628 } );
629
630 // Make sure that deferred mouseup callback isn't executed after editor instance
631 // had been destroyed. This may happen when editor.destroy() is called in parallel
632 // with mouseup event (i.e. a button with onclick callback) (http://dev.ckeditor.com/ticket/10219).
633 editor.on( 'destroy', function() {
634 clearTimeout( mouseupTimeout );
635 } );
636
637 editable.on( 'keyup', setToolbarStates );
638 }
639
640 // Create object representing Cut or Copy commands.
641 function createCutCopyCmd( type ) {
642 return {
643 type: type,
644 canUndo: type == 'cut', // We can't undo copy to clipboard.
645 startDisabled: true,
646 fakeKeystroke: type == 'cut' ? CKEDITOR.CTRL + 88 /*X*/ : CKEDITOR.CTRL + 67 /*C*/,
647 exec: function() {
648 // Attempts to execute the Cut and Copy operations.
649 function tryToCutCopy( type ) {
650 if ( CKEDITOR.env.ie )
651 return execIECommand( type );
652
653 // non-IEs part
654 try {
655 // Other browsers throw an error if the command is disabled.
656 return editor.document.$.execCommand( type, false, null );
657 } catch ( e ) {
658 return false;
659 }
660 }
661
662 this.type == 'cut' && fixCut();
663
664 var success = tryToCutCopy( this.type );
665
666 if ( !success ) {
667 // Show cutError or copyError.
668 editor.showNotification( editor.lang.clipboard[ this.type + 'Error' ] ); // jshint ignore:line
669 }
670
671 return success;
672 }
673 };
674 }
675
676 function createPasteCmd() {
677 return {
678 // Snapshots are done manually by editable.insertXXX methods.
679 canUndo: false,
680 async: true,
681 fakeKeystroke: CKEDITOR.CTRL + 86 /*V*/,
682
683 /**
684 * The default implementation of the paste command.
685 *
686 * @private
687 * @param {CKEDITOR.editor} editor An instance of the editor where the command is being executed.
688 * @param {Object/String} data If `data` is a string, then it is considered content that is being pasted.
689 * Otherwise it is treated as an object with options.
690 * @param {Boolean/String} [data.notification=true] Content for a notification shown after an unsuccessful
691 * paste attempt. If `false`, the notification will not be displayed. This parameter was added in 4.7.0.
692 * @param {String} [data.type='html'] The type of pasted content. There are two allowed values:
693 * * 'html'
694 * * 'text'
695 * @param {String/Object} data.dataValue Content being pasted. If this parameter is an object, it
696 * is supposed to be a `data` property of the {@link CKEDITOR.editor#paste} event.
697 * @param {CKEDITOR.plugins.clipboard.dataTransfer} data.dataTransfer Data transfer instance connected
698 * with the current paste action.
699 * @member CKEDITOR.editor.commands.paste
700 */
701 exec: function( editor, data ) {
702 data = typeof data !== 'undefined' && data !== null ? data : {};
703
704 var cmd = this,
705 notification = typeof data.notification !== 'undefined' ? data.notification : true,
706 forcedType = data.type,
707 keystroke = CKEDITOR.tools.keystrokeToString( editor.lang.common.keyboard,
708 editor.getCommandKeystroke( this ) ),
709 msg = typeof notification === 'string' ? notification : editor.lang.clipboard.pasteNotification
710 .replace( /%1/, '<kbd aria-label="' + keystroke.aria + '">' + keystroke.display + '</kbd>' ),
711 pastedContent = typeof data === 'string' ? data : data.dataValue;
712
713 function callback( data, withBeforePaste ) {
714 withBeforePaste = typeof withBeforePaste !== 'undefined' ? withBeforePaste : true;
715
716 if ( data ) {
717 data.method = 'paste';
718
719 if ( !data.dataTransfer ) {
720 data.dataTransfer = clipboard.initPasteDataTransfer();
721 }
722
723 firePasteEvents( editor, data, withBeforePaste );
724 } else if ( notification ) {
725 editor.showNotification( msg, 'info', editor.config.clipboard_notificationDuration );
726 }
727
728 editor.fire( 'afterCommandExec', {
729 name: 'paste',
730 command: cmd,
731 returnValue: !!data
732 } );
733 }
734
735 // Force type for the next paste.
736 if ( forcedType ) {
737 editor._.nextPasteType = forcedType;
738 } else {
739 delete editor._.nextPasteType;
740 }
741
742 if ( typeof pastedContent === 'string' ) {
743 callback( {
744 dataValue: pastedContent
745 } );
746 } else {
747 editor.getClipboardData( callback );
748 }
749 }
750 };
751 }
752
753 function preventPasteEventNow() {
754 preventPasteEvent = 1;
755 // For safety reason we should wait longer than 0/1ms.
756 // We don't know how long execution of quite complex getClipboardData will take
757 // and in for example 'paste' listener execCommand() (which fires 'paste') is called
758 // after getClipboardData finishes.
759 // Luckily, it's impossible to immediately fire another 'paste' event we want to handle,
760 // because we only handle there native context menu and menu bar.
761 setTimeout( function() {
762 preventPasteEvent = 0;
763 }, 100 );
764 }
765
766 function preventBeforePasteEventNow() {
767 preventBeforePasteEvent = 1;
768 setTimeout( function() {
769 preventBeforePasteEvent = 0;
770 }, 10 );
771 }
772
773 // Tries to execute any of the paste, cut or copy commands in IE. Returns a
774 // boolean indicating that the operation succeeded.
775 // @param {String} command *LOWER CASED* name of command ('paste', 'cut', 'copy').
776 function execIECommand( command ) {
777 var doc = editor.document,
778 body = doc.getBody(),
779 enabled = false,
780 onExec = function() {
781 enabled = true;
782 };
783
784 // The following seems to be the only reliable way to detect that
785 // clipboard commands are enabled in IE. It will fire the
786 // onpaste/oncut/oncopy events only if the security settings allowed
787 // the command to execute.
788 body.on( command, onExec );
789
790 // IE7: document.execCommand has problem to paste into positioned element.
791 if ( CKEDITOR.env.version > 7 ) {
792 doc.$.execCommand( command );
793 } else {
794 doc.$.selection.createRange().execCommand( command );
795 }
796
797 body.removeListener( command, onExec );
798
799 return enabled;
800 }
801
802 // Cutting off control type element in IE standards breaks the selection entirely. (http://dev.ckeditor.com/ticket/4881)
803 function fixCut() {
804 if ( !CKEDITOR.env.ie || CKEDITOR.env.quirks )
805 return;
806
807 var sel = editor.getSelection(),
808 control, range, dummy;
809
810 if ( ( sel.getType() == CKEDITOR.SELECTION_ELEMENT ) && ( control = sel.getSelectedElement() ) ) {
811 range = sel.getRanges()[ 0 ];
812 dummy = editor.document.createText( '' );
813 dummy.insertBefore( control );
814 range.setStartBefore( dummy );
815 range.setEndAfter( control );
816 sel.selectRanges( [ range ] );
817
818 // Clear up the fix if the paste wasn't succeeded.
819 setTimeout( function() {
820 // Element still online?
821 if ( control.getParent() ) {
822 dummy.remove();
823 sel.selectElement( control );
824 }
825 }, 0 );
826 }
827 }
828
829 // Allow to peek clipboard content by redirecting the
830 // pasting content into a temporary bin and grab the content of it.
831 function getClipboardDataByPastebin( evt, callback ) {
832 var doc = editor.document,
833 editable = editor.editable(),
834 cancel = function( evt ) {
835 evt.cancel();
836 },
837 blurListener;
838
839 // Avoid recursions on 'paste' event or consequent paste too fast. (http://dev.ckeditor.com/ticket/5730)
840 if ( doc.getById( 'cke_pastebin' ) )
841 return;
842
843 var sel = editor.getSelection();
844 var bms = sel.createBookmarks();
845
846 // http://dev.ckeditor.com/ticket/11384. On IE9+ we use native selectionchange (i.e. editor#selectionCheck) to cache the most
847 // recent selection which we then lock on editable blur. See selection.js for more info.
848 // selectionchange fired before getClipboardDataByPastebin() cached selection
849 // before creating bookmark (cached selection will be invalid, because bookmarks modified the DOM),
850 // so we need to fire selectionchange one more time, to store current seleciton.
851 // Selection will be locked when we focus pastebin.
852 if ( CKEDITOR.env.ie )
853 sel.root.fire( 'selectionchange' );
854
855 // Create container to paste into.
856 // For rich content we prefer to use "body" since it holds
857 // the least possibility to be splitted by pasted content, while this may
858 // breaks the text selection on a frame-less editable, "div" would be
859 // the best one in that case.
860 // In another case on old IEs moving the selection into a "body" paste bin causes error panic.
861 // Body can't be also used for Opera which fills it with <br>
862 // what is indistinguishable from pasted <br> (copying <br> in Opera isn't possible,
863 // but it can be copied from other browser).
864 var pastebin = new CKEDITOR.dom.element(
865 ( CKEDITOR.env.webkit || editable.is( 'body' ) ) && !CKEDITOR.env.ie ? 'body' : 'div', doc );
866
867 pastebin.setAttributes( {
868 id: 'cke_pastebin',
869 'data-cke-temp': '1'
870 } );
871
872 var containerOffset = 0,
873 offsetParent,
874 win = doc.getWindow();
875
876 if ( CKEDITOR.env.webkit ) {
877 // It's better to paste close to the real paste destination, so inherited styles
878 // (which Webkits will try to compensate by styling span) differs less from the destination's one.
879 editable.append( pastebin );
880 // Style pastebin like .cke_editable, to minimize differences between origin and destination. (http://dev.ckeditor.com/ticket/9754)
881 pastebin.addClass( 'cke_editable' );
882
883 // Compensate position of offsetParent.
884 if ( !editable.is( 'body' ) ) {
885 // We're not able to get offsetParent from pastebin (body element), so check whether
886 // its parent (editable) is positioned.
887 if ( editable.getComputedStyle( 'position' ) != 'static' )
888 offsetParent = editable;
889 // And if not - safely get offsetParent from editable.
890 else
891 offsetParent = CKEDITOR.dom.element.get( editable.$.offsetParent );
892
893 containerOffset = offsetParent.getDocumentPosition().y;
894 }
895 } else {
896 // Opera and IE doesn't allow to append to html element.
897 editable.getAscendant( CKEDITOR.env.ie ? 'body' : 'html', 1 ).append( pastebin );
898 }
899
900 pastebin.setStyles( {
901 position: 'absolute',
902 // Position the bin at the top (+10 for safety) of viewport to avoid any subsequent document scroll.
903 top: ( win.getScrollPosition().y - containerOffset + 10 ) + 'px',
904 width: '1px',
905 // Caret has to fit in that height, otherwise browsers like Chrome & Opera will scroll window to show it.
906 // Set height equal to viewport's height - 20px (safety gaps), minimum 1px.
907 height: Math.max( 1, win.getViewPaneSize().height - 20 ) + 'px',
908 overflow: 'hidden',
909 // Reset styles that can mess up pastebin position.
910 margin: 0,
911 padding: 0
912 } );
913
914 // Paste fails in Safari when the body tag has 'user-select: none'. (http://dev.ckeditor.com/ticket/12506)
915 if ( CKEDITOR.env.safari )
916 pastebin.setStyles( CKEDITOR.tools.cssVendorPrefix( 'user-select', 'text' ) );
917
918 // Check if the paste bin now establishes new editing host.
919 var isEditingHost = pastebin.getParent().isReadOnly();
920
921 if ( isEditingHost ) {
922 // Hide the paste bin.
923 pastebin.setOpacity( 0 );
924 // And make it editable.
925 pastebin.setAttribute( 'contenteditable', true );
926 }
927 // Transparency is not enough since positioned non-editing host always shows
928 // resize handler, pull it off the screen instead.
929 else {
930 pastebin.setStyle( editor.config.contentsLangDirection == 'ltr' ? 'left' : 'right', '-10000px' );
931 }
932
933 editor.on( 'selectionChange', cancel, null, null, 0 );
934
935 // Webkit fill fire blur on editable when moving selection to
936 // pastebin (if body is used). Cancel it because it causes incorrect
937 // selection lock in case of inline editor (http://dev.ckeditor.com/ticket/10644).
938 // The same seems to apply to Firefox (http://dev.ckeditor.com/ticket/10787).
939 if ( CKEDITOR.env.webkit || CKEDITOR.env.gecko )
940 blurListener = editable.once( 'blur', cancel, null, null, -100 );
941
942 // Temporarily move selection to the pastebin.
943 isEditingHost && pastebin.focus();
944 var range = new CKEDITOR.dom.range( pastebin );
945 range.selectNodeContents( pastebin );
946 var selPastebin = range.select();
947
948 // If non-native paste is executed, IE will open security alert and blur editable.
949 // Editable will then lock selection inside itself and after accepting security alert
950 // this selection will be restored. We overwrite stored selection, so it's restored
951 // in pastebin. (http://dev.ckeditor.com/ticket/9552)
952 if ( CKEDITOR.env.ie ) {
953 blurListener = editable.once( 'blur', function() {
954 editor.lockSelection( selPastebin );
955 } );
956 }
957
958 var scrollTop = CKEDITOR.document.getWindow().getScrollPosition().y;
959
960 // Wait a while and grab the pasted contents.
961 setTimeout( function() {
962 // Restore main window's scroll position which could have been changed
963 // by browser in cases described in http://dev.ckeditor.com/ticket/9771.
964 if ( CKEDITOR.env.webkit )
965 CKEDITOR.document.getBody().$.scrollTop = scrollTop;
966
967 // Blur will be fired only on non-native paste. In other case manually remove listener.
968 blurListener && blurListener.removeListener();
969
970 // Restore properly the document focus. (http://dev.ckeditor.com/ticket/8849)
971 if ( CKEDITOR.env.ie )
972 editable.focus();
973
974 // IE7: selection must go before removing pastebin. (http://dev.ckeditor.com/ticket/8691)
975 sel.selectBookmarks( bms );
976 pastebin.remove();
977
978 // Grab the HTML contents.
979 // We need to look for a apple style wrapper on webkit it also adds
980 // a div wrapper if you copy/paste the body of the editor.
981 // Remove hidden div and restore selection.
982 var bogusSpan;
983 if ( CKEDITOR.env.webkit && ( bogusSpan = pastebin.getFirst() ) && ( bogusSpan.is && bogusSpan.hasClass( 'Apple-style-span' ) ) )
984 pastebin = bogusSpan;
985
986 editor.removeListener( 'selectionChange', cancel );
987 callback( pastebin.getHtml() );
988 }, 0 );
989 }
990
991 // Try to get content directly on IE from clipboard, without native event
992 // being fired before. In other words - synthetically get clipboard data, if it's possible.
993 // mainPasteEvent will be fired, so if forced native paste:
994 // * worked, getClipboardDataByPastebin will grab it,
995 // * didn't work, dataValue and dataTransfer will be empty and editor#paste won't be fired.
996 // Clipboard data can be accessed directly only on IEs older than Edge.
997 // On other browsers we should fire beforePaste event and return false.
998 function getClipboardDataDirectly() {
999 if ( clipboard.mainPasteEvent == 'paste' ) {
1000 editor.fire( 'beforePaste', { type: 'auto', method: 'paste' } );
1001 return false;
1002 }
1003
1004 // Prevent IE from pasting at the begining of the document.
1005 editor.focus();
1006
1007 // Command will be handled by 'beforepaste', but as
1008 // execIECommand( 'paste' ) will fire also 'paste' event
1009 // we're canceling it.
1010 preventPasteEventNow();
1011
1012 // http://dev.ckeditor.com/ticket/9247: Lock focus to prevent IE from hiding toolbar for inline editor.
1013 var focusManager = editor.focusManager;
1014 focusManager.lock();
1015
1016 if ( editor.editable().fire( clipboard.mainPasteEvent ) && !execIECommand( 'paste' ) ) {
1017 focusManager.unlock();
1018 return false;
1019 }
1020 focusManager.unlock();
1021
1022 return true;
1023 }
1024
1025 // Listens for some clipboard related keystrokes, so they get customized.
1026 // Needs to be bind to keydown event.
1027 function onKey( event ) {
1028 if ( editor.mode != 'wysiwyg' )
1029 return;
1030
1031 switch ( event.data.keyCode ) {
1032 // Paste
1033 case CKEDITOR.CTRL + 86: // CTRL+V
1034 case CKEDITOR.SHIFT + 45: // SHIFT+INS
1035 var editable = editor.editable();
1036
1037 // Cancel 'paste' event because ctrl+v is for IE handled
1038 // by 'beforepaste'.
1039 preventPasteEventNow();
1040
1041 // Simulate 'beforepaste' event for all browsers using 'paste' as main event.
1042 if ( clipboard.mainPasteEvent == 'paste' ) {
1043 editable.fire( 'beforepaste' );
1044 }
1045
1046 return;
1047
1048 // Cut
1049 case CKEDITOR.CTRL + 88: // CTRL+X
1050 case CKEDITOR.SHIFT + 46: // SHIFT+DEL
1051 // Save Undo snapshot.
1052 editor.fire( 'saveSnapshot' ); // Save before cut
1053 setTimeout( function() {
1054 editor.fire( 'saveSnapshot' ); // Save after cut
1055 }, 50 ); // OSX is slow (http://dev.ckeditor.com/ticket/11416).
1056 }
1057 }
1058
1059 function pasteDataFromClipboard( evt ) {
1060 // Default type is 'auto', but can be changed by beforePaste listeners.
1061 var eventData = {
1062 type: 'auto',
1063 method: 'paste',
1064 dataTransfer: clipboard.initPasteDataTransfer( evt )
1065 };
1066
1067 eventData.dataTransfer.cacheData();
1068
1069 // Fire 'beforePaste' event so clipboard flavor get customized by other plugins.
1070 // If 'beforePaste' is canceled continue executing getClipboardDataByPastebin and then do nothing
1071 // (do not fire 'paste', 'afterPaste' events). This way we can grab all - synthetically
1072 // and natively pasted content and prevent its insertion into editor
1073 // after canceling 'beforePaste' event.
1074 var beforePasteNotCanceled = editor.fire( 'beforePaste', eventData ) !== false;
1075
1076 // Do not use paste bin if the browser let us get HTML or files from dataTranfer.
1077 if ( beforePasteNotCanceled && clipboard.canClipboardApiBeTrusted( eventData.dataTransfer, editor ) ) {
1078 evt.data.preventDefault();
1079 setTimeout( function() {
1080 firePasteEvents( editor, eventData );
1081 }, 0 );
1082 } else {
1083 getClipboardDataByPastebin( evt, function( data ) {
1084 // Clean up.
1085 eventData.dataValue = data.replace( /<span[^>]+data-cke-bookmark[^<]*?<\/span>/ig, '' );
1086
1087 // Fire remaining events (without beforePaste)
1088 beforePasteNotCanceled && firePasteEvents( editor, eventData );
1089 } );
1090 }
1091 }
1092
1093 function setToolbarStates() {
1094 if ( editor.mode != 'wysiwyg' )
1095 return;
1096
1097 var pasteState = stateFromNamedCommand( 'paste' );
1098
1099 editor.getCommand( 'cut' ).setState( stateFromNamedCommand( 'cut' ) );
1100 editor.getCommand( 'copy' ).setState( stateFromNamedCommand( 'copy' ) );
1101 editor.getCommand( 'paste' ).setState( pasteState );
1102 editor.fire( 'pasteState', pasteState );
1103 }
1104
1105 function stateFromNamedCommand( command ) {
1106 if ( inReadOnly && command in { paste: 1, cut: 1 } )
1107 return CKEDITOR.TRISTATE_DISABLED;
1108
1109 if ( command == 'paste' )
1110 return CKEDITOR.TRISTATE_OFF;
1111
1112 // Cut, copy - check if the selection is not empty.
1113 var sel = editor.getSelection(),
1114 ranges = sel.getRanges(),
1115 selectionIsEmpty = sel.getType() == CKEDITOR.SELECTION_NONE || ( ranges.length == 1 && ranges[ 0 ].collapsed );
1116
1117 return selectionIsEmpty ? CKEDITOR.TRISTATE_DISABLED : CKEDITOR.TRISTATE_OFF;
1118 }
1119 }
1120
1121 // Returns:
1122 // * 'htmlifiedtext' if content looks like transformed by browser from plain text.
1123 // See clipboard/paste.html TCs for more info.
1124 // * 'html' if it is not 'htmlifiedtext'.
1125 function recogniseContentType( data ) {
1126 if ( CKEDITOR.env.webkit ) {
1127 // Plain text or ( <div><br></div> and text inside <div> ).
1128 if ( !data.match( /^[^<]*$/g ) && !data.match( /^(<div><br( ?\/)?><\/div>|<div>[^<]*<\/div>)*$/gi ) )
1129 return 'html';
1130 } else if ( CKEDITOR.env.ie ) {
1131 // Text and <br> or ( text and <br> in <p> - paragraphs can be separated by new \r\n ).
1132 if ( !data.match( /^([^<]|<br( ?\/)?>)*$/gi ) && !data.match( /^(<p>([^<]|<br( ?\/)?>)*<\/p>|(\r\n))*$/gi ) )
1133 return 'html';
1134 } else if ( CKEDITOR.env.gecko ) {
1135 // Text or <br>.
1136 if ( !data.match( /^([^<]|<br( ?\/)?>)*$/gi ) )
1137 return 'html';
1138 } else {
1139 return 'html';
1140 }
1141
1142 return 'htmlifiedtext';
1143 }
1144
1145 // This function transforms what browsers produce when
1146 // pasting plain text into editable element (see clipboard/paste.html TCs
1147 // for more info) into correct HTML (similar to that produced by text2Html).
1148 function htmlifiedTextHtmlification( config, data ) {
1149 function repeatParagraphs( repeats ) {
1150 // Repeat blocks floor((n+1)/2) times.
1151 // Even number of repeats - add <br> at the beginning of last <p>.
1152 return CKEDITOR.tools.repeat( '</p><p>', ~~( repeats / 2 ) ) + ( repeats % 2 == 1 ? '<br>' : '' );
1153 }
1154
1155 // Replace adjacent white-spaces (EOLs too - Fx sometimes keeps them) with one space.
1156 data = data.replace( /\s+/g, ' ' )
1157 // Remove spaces from between tags.
1158 .replace( /> +</g, '><' )
1159 // Normalize XHTML syntax and upper cased <br> tags.
1160 .replace( /<br ?\/>/gi, '<br>' );
1161
1162 // IE - lower cased tags.
1163 data = data.replace( /<\/?[A-Z]+>/g, function( match ) {
1164 return match.toLowerCase();
1165 } );
1166
1167 // Don't touch single lines (no <br|p|div>) - nothing to do here.
1168 if ( data.match( /^[^<]$/ ) )
1169 return data;
1170
1171 // Webkit.
1172 if ( CKEDITOR.env.webkit && data.indexOf( '<div>' ) > -1 ) {
1173 // One line break at the beginning - insert <br>
1174 data = data.replace( /^(<div>(<br>|)<\/div>)(?!$|(<div>(<br>|)<\/div>))/g, '<br>' )
1175 // Two or more - reduce number of new lines by one.
1176 .replace( /^(<div>(<br>|)<\/div>){2}(?!$)/g, '<div></div>' );
1177
1178 // Two line breaks create one paragraph in Webkit.
1179 if ( data.match( /<div>(<br>|)<\/div>/ ) ) {
1180 data = '<p>' + data.replace( /(<div>(<br>|)<\/div>)+/g, function( match ) {
1181 return repeatParagraphs( match.split( '</div><div>' ).length + 1 );
1182 } ) + '</p>';
1183 }
1184
1185 // One line break create br.
1186 data = data.replace( /<\/div><div>/g, '<br>' );
1187
1188 // Remove remaining divs.
1189 data = data.replace( /<\/?div>/g, '' );
1190 }
1191
1192 // Opera and Firefox and enterMode != BR.
1193 if ( CKEDITOR.env.gecko && config.enterMode != CKEDITOR.ENTER_BR ) {
1194 // Remove bogus <br> - Fx generates two <brs> for one line break.
1195 // For two line breaks it still produces two <brs>, but it's better to ignore this case than the first one.
1196 if ( CKEDITOR.env.gecko )
1197 data = data.replace( /^<br><br>$/, '<br>' );
1198
1199 // This line satisfy edge case when for Opera we have two line breaks
1200 //data = data.replace( /)
1201
1202 if ( data.indexOf( '<br><br>' ) > -1 ) {
1203 // Two line breaks create one paragraph, three - 2, four - 3, etc.
1204 data = '<p>' + data.replace( /(<br>){2,}/g, function( match ) {
1205 return repeatParagraphs( match.length / 4 );
1206 } ) + '</p>';
1207 }
1208 }
1209
1210 return switchEnterMode( config, data );
1211 }
1212
1213 function filtersFactoryFactory() {
1214 var filters = {};
1215
1216 function setUpTags() {
1217 var tags = {};
1218
1219 for ( var tag in CKEDITOR.dtd ) {
1220 if ( tag.charAt( 0 ) != '$' && tag != 'div' && tag != 'span' ) {
1221 tags[ tag ] = 1;
1222 }
1223 }
1224
1225 return tags;
1226 }
1227
1228 function createSemanticContentFilter() {
1229 var filter = new CKEDITOR.filter();
1230
1231 filter.allow( {
1232 $1: {
1233 elements: setUpTags(),
1234 attributes: true,
1235 styles: false,
1236 classes: false
1237 }
1238 } );
1239
1240 return filter;
1241 }
1242
1243 return {
1244 get: function( type ) {
1245 if ( type == 'plain-text' ) {
1246 // Does this look confusing to you? Did we forget about enter mode?
1247 // It is a trick that let's us creating one filter for edidtor, regardless of its
1248 // activeEnterMode (which as the name indicates can change during runtime).
1249 //
1250 // How does it work?
1251 // The active enter mode is passed to the filter.applyTo method.
1252 // The filter first marks all elements except <br> as disallowed and then tries to remove
1253 // them. However, it cannot remove e.g. a <p> element completely, because it's a basic structural element,
1254 // so it tries to replace it with an element created based on the active enter mode, eventually doing nothing.
1255 //
1256 // Now you can sleep well.
1257 return filters.plainText || ( filters.plainText = new CKEDITOR.filter( 'br' ) );
1258 } else if ( type == 'semantic-content' ) {
1259 return filters.semanticContent || ( filters.semanticContent = createSemanticContentFilter() );
1260 } else if ( type ) {
1261 // Create filter based on rules (string or object).
1262 return new CKEDITOR.filter( type );
1263 }
1264
1265 return null;
1266 }
1267 };
1268 }
1269
1270 function filterContent( editor, data, filter ) {
1271 var fragment = CKEDITOR.htmlParser.fragment.fromHtml( data ),
1272 writer = new CKEDITOR.htmlParser.basicWriter();
1273
1274 filter.applyTo( fragment, true, false, editor.activeEnterMode );
1275 fragment.writeHtml( writer );
1276
1277 return writer.getHtml();
1278 }
1279
1280 function switchEnterMode( config, data ) {
1281 if ( config.enterMode == CKEDITOR.ENTER_BR ) {
1282 data = data.replace( /(<\/p><p>)+/g, function( match ) {
1283 return CKEDITOR.tools.repeat( '<br>', match.length / 7 * 2 );
1284 } ).replace( /<\/?p>/g, '' );
1285 } else if ( config.enterMode == CKEDITOR.ENTER_DIV ) {
1286 data = data.replace( /<(\/)?p>/g, '<$1div>' );
1287 }
1288
1289 return data;
1290 }
1291
1292 function preventDefaultSetDropEffectToNone( evt ) {
1293 evt.data.preventDefault();
1294 evt.data.$.dataTransfer.dropEffect = 'none';
1295 }
1296
1297 function initDragDrop( editor ) {
1298 var clipboard = CKEDITOR.plugins.clipboard;
1299
1300 editor.on( 'contentDom', function() {
1301 var editable = editor.editable(),
1302 dropTarget = CKEDITOR.plugins.clipboard.getDropTarget( editor ),
1303 top = editor.ui.space( 'top' ),
1304 bottom = editor.ui.space( 'bottom' );
1305
1306 // -------------- DRAGOVER TOP & BOTTOM --------------
1307
1308 // Not allowing dragging on toolbar and bottom (http://dev.ckeditor.com/ticket/12613).
1309 clipboard.preventDefaultDropOnElement( top );
1310 clipboard.preventDefaultDropOnElement( bottom );
1311
1312 // -------------- DRAGSTART --------------
1313 // Listed on dragstart to mark internal and cross-editor drag & drop
1314 // and save range and selected HTML.
1315
1316 editable.attachListener( dropTarget, 'dragstart', fireDragEvent );
1317
1318 // Make sure to reset data transfer (in case dragend was not called or was canceled).
1319 editable.attachListener( editor, 'dragstart', clipboard.resetDragDataTransfer, clipboard, null, 1 );
1320
1321 // Create a dataTransfer object and save it globally.
1322 editable.attachListener( editor, 'dragstart', function( evt ) {
1323 clipboard.initDragDataTransfer( evt, editor );
1324 }, null, null, 2 );
1325
1326 editable.attachListener( editor, 'dragstart', function() {
1327 // Save drag range globally for cross editor D&D.
1328 var dragRange = clipboard.dragRange = editor.getSelection().getRanges()[ 0 ];
1329
1330 // Store number of children, so we can later tell if any text node was split on drop. (http://dev.ckeditor.com/ticket/13011, http://dev.ckeditor.com/ticket/13447)
1331 if ( CKEDITOR.env.ie && CKEDITOR.env.version < 10 ) {
1332 clipboard.dragStartContainerChildCount = dragRange ? getContainerChildCount( dragRange.startContainer ) : null;
1333 clipboard.dragEndContainerChildCount = dragRange ? getContainerChildCount( dragRange.endContainer ) : null;
1334 }
1335 }, null, null, 100 );
1336
1337 // -------------- DRAGEND --------------
1338 // Clean up on dragend.
1339
1340 editable.attachListener( dropTarget, 'dragend', fireDragEvent );
1341
1342 // Init data transfer if someone wants to use it in dragend.
1343 editable.attachListener( editor, 'dragend', clipboard.initDragDataTransfer, clipboard, null, 1 );
1344
1345 // When drag & drop is done we need to reset dataTransfer so the future
1346 // external drop will be not recognize as internal.
1347 editable.attachListener( editor, 'dragend', clipboard.resetDragDataTransfer, clipboard, null, 100 );
1348
1349 // -------------- DRAGOVER --------------
1350 // We need to call preventDefault on dragover because otherwise if
1351 // we drop image it will overwrite document.
1352
1353 editable.attachListener( dropTarget, 'dragover', function( evt ) {
1354 // Edge requires this handler to have `preventDefault()` regardless of the situation.
1355 if ( CKEDITOR.env.edge ) {
1356 evt.data.preventDefault();
1357 return;
1358 }
1359
1360 var target = evt.data.getTarget();
1361
1362 // Prevent reloading page when dragging image on empty document (http://dev.ckeditor.com/ticket/12619).
1363 if ( target && target.is && target.is( 'html' ) ) {
1364 evt.data.preventDefault();
1365 return;
1366 }
1367
1368 // If we do not prevent default dragover on IE the file path
1369 // will be loaded and we will lose content. On the other hand
1370 // if we prevent it the cursor will not we shown, so we prevent
1371 // dragover only on IE, on versions which support file API and only
1372 // if the event contains files.
1373 if ( CKEDITOR.env.ie &&
1374 CKEDITOR.plugins.clipboard.isFileApiSupported &&
1375 evt.data.$.dataTransfer.types.contains( 'Files' ) ) {
1376 evt.data.preventDefault();
1377 }
1378 } );
1379
1380 // -------------- DROP --------------
1381
1382 editable.attachListener( dropTarget, 'drop', function( evt ) {
1383 // Do nothing if event was already prevented. (http://dev.ckeditor.com/ticket/13879)
1384 if ( evt.data.$.defaultPrevented ) {
1385 return;
1386 }
1387
1388 // Cancel native drop.
1389 evt.data.preventDefault();
1390
1391 var target = evt.data.getTarget(),
1392 readOnly = target.isReadOnly();
1393
1394 // Do nothing if drop on non editable element (http://dev.ckeditor.com/ticket/13015).
1395 // The <html> tag isn't editable (body is), but we want to allow drop on it
1396 // (so it is possible to drop below editor contents).
1397 if ( readOnly && !( target.type == CKEDITOR.NODE_ELEMENT && target.is( 'html' ) ) ) {
1398 return;
1399 }
1400
1401 // Getting drop position is one of the most complex parts.
1402 var dropRange = clipboard.getRangeAtDropPosition( evt, editor ),
1403 dragRange = clipboard.dragRange;
1404
1405 // Do nothing if it was not possible to get drop range.
1406 if ( !dropRange ) {
1407 return;
1408 }
1409
1410 // Fire drop.
1411 fireDragEvent( evt, dragRange, dropRange );
1412 }, null, null, 9999 );
1413
1414 // Create dataTransfer or get it, if it was created before.
1415 editable.attachListener( editor, 'drop', clipboard.initDragDataTransfer, clipboard, null, 1 );
1416
1417 // Execute drop action, fire paste.
1418 editable.attachListener( editor, 'drop', function( evt ) {
1419 var data = evt.data;
1420
1421 if ( !data ) {
1422 return;
1423 }
1424
1425 // Let user modify drag and drop range.
1426 var dropRange = data.dropRange,
1427 dragRange = data.dragRange,
1428 dataTransfer = data.dataTransfer;
1429
1430 if ( dataTransfer.getTransferType( editor ) == CKEDITOR.DATA_TRANSFER_INTERNAL ) {
1431 // Execute drop with a timeout because otherwise selection, after drop,
1432 // on IE is in the drag position, instead of drop position.
1433 setTimeout( function() {
1434 clipboard.internalDrop( dragRange, dropRange, dataTransfer, editor );
1435 }, 0 );
1436 } else if ( dataTransfer.getTransferType( editor ) == CKEDITOR.DATA_TRANSFER_CROSS_EDITORS ) {
1437 crossEditorDrop( dragRange, dropRange, dataTransfer );
1438 } else {
1439 externalDrop( dropRange, dataTransfer );
1440 }
1441 }, null, null, 9999 );
1442
1443 // Cross editor drag and drop (drag in one Editor and drop in the other).
1444 function crossEditorDrop( dragRange, dropRange, dataTransfer ) {
1445 // Paste event should be fired before delete contents because otherwise
1446 // Chrome have a problem with drop range (Chrome split the drop
1447 // range container so the offset is bigger then container length).
1448 dropRange.select();
1449 firePasteEvents( editor, { dataTransfer: dataTransfer, method: 'drop' }, 1 );
1450
1451 // Remove dragged content and make a snapshot.
1452 dataTransfer.sourceEditor.fire( 'saveSnapshot' );
1453
1454 dataTransfer.sourceEditor.editable().extractHtmlFromRange( dragRange );
1455
1456 // Make some selection before saving snapshot, otherwise error will be thrown, because
1457 // there will be no valid selection after content is removed.
1458 dataTransfer.sourceEditor.getSelection().selectRanges( [ dragRange ] );
1459 dataTransfer.sourceEditor.fire( 'saveSnapshot' );
1460 }
1461
1462 // Drop from external source.
1463 function externalDrop( dropRange, dataTransfer ) {
1464 // Paste content into the drop position.
1465 dropRange.select();
1466
1467 firePasteEvents( editor, { dataTransfer: dataTransfer, method: 'drop' }, 1 );
1468
1469 // Usually we reset DataTranfer on dragend,
1470 // but dragend is called on the same element as dragstart
1471 // so it will not be called on on external drop.
1472 clipboard.resetDragDataTransfer();
1473 }
1474
1475 // Fire drag/drop events (dragstart, dragend, drop).
1476 function fireDragEvent( evt, dragRange, dropRange ) {
1477 var eventData = {
1478 $: evt.data.$,
1479 target: evt.data.getTarget()
1480 };
1481
1482 if ( dragRange ) {
1483 eventData.dragRange = dragRange;
1484 }
1485 if ( dropRange ) {
1486 eventData.dropRange = dropRange;
1487 }
1488
1489 if ( editor.fire( evt.name, eventData ) === false ) {
1490 evt.data.preventDefault();
1491 }
1492 }
1493
1494 function getContainerChildCount( container ) {
1495 if ( container.type != CKEDITOR.NODE_ELEMENT ) {
1496 container = container.getParent();
1497 }
1498
1499 return container.getChildCount();
1500 }
1501 } );
1502 }
1503
1504 /**
1505 * @singleton
1506 * @class CKEDITOR.plugins.clipboard
1507 */
1508 CKEDITOR.plugins.clipboard = {
1509 /**
1510 * True if the environment allows to set data on copy or cut manually. This value is false in IE, because this browser
1511 * shows the security dialog window when the script tries to set clipboard data and on iOS, because custom data is
1512 * not saved to clipboard there.
1513 *
1514 * @since 4.5
1515 * @readonly
1516 * @property {Boolean}
1517 */
1518 isCustomCopyCutSupported: !CKEDITOR.env.ie && !CKEDITOR.env.iOS,
1519
1520 /**
1521 * True if the environment supports MIME types and custom data types in dataTransfer/cliboardData getData/setData methods.
1522 *
1523 * @since 4.5
1524 * @readonly
1525 * @property {Boolean}
1526 */
1527 isCustomDataTypesSupported: !CKEDITOR.env.ie,
1528
1529 /**
1530 * True if the environment supports File API.
1531 *
1532 * @since 4.5
1533 * @readonly
1534 * @property {Boolean}
1535 */
1536 isFileApiSupported: !CKEDITOR.env.ie || CKEDITOR.env.version > 9,
1537
1538 /**
1539 * Main native paste event editable should listen to.
1540 *
1541 * **Note:** Safari does not like the {@link CKEDITOR.editor#beforePaste} event &mdash; it sometimes does not
1542 * handle <kbd>Ctrl+C</kbd> properly. This is probably caused by some race condition between events.
1543 * Chrome, Firefox and Edge work well with both events, so it is better to use {@link CKEDITOR.editor#paste}
1544 * which will handle pasting from e.g. browsers' menu bars.
1545 * IE7/8 does not like the {@link CKEDITOR.editor#paste} event for which it is throwing random errors.
1546 *
1547 * @since 4.5
1548 * @readonly
1549 * @property {String}
1550 */
1551 mainPasteEvent: ( CKEDITOR.env.ie && !CKEDITOR.env.edge ) ? 'beforepaste' : 'paste',
1552
1553 /**
1554 * Returns `true` if it is expected that a browser provides HTML data through the Clipboard API.
1555 * If not, this method returns `false` and as a result CKEditor will use the paste bin. Read more in
1556 * the [Clipboard Integration](http://docs.ckeditor.com/#!/guide/dev_clipboard-section-clipboard-api) guide.
1557 *
1558 * @since 4.5.2
1559 * @returns {Boolean}
1560 */
1561 canClipboardApiBeTrusted: function( dataTransfer, editor ) {
1562 // If it's an internal or cross-editor data transfer, then it means that custom cut/copy/paste support works
1563 // and that the data were put manually on the data transfer so we can be sure that it's available.
1564 if ( dataTransfer.getTransferType( editor ) != CKEDITOR.DATA_TRANSFER_EXTERNAL ) {
1565 return true;
1566 }
1567
1568 // In Chrome we can trust Clipboard API, with the exception of Chrome on Android (in both - mobile and desktop modes), where
1569 // clipboard API is not available so we need to check it (http://dev.ckeditor.com/ticket/13187).
1570 if ( CKEDITOR.env.chrome && !dataTransfer.isEmpty() ) {
1571 return true;
1572 }
1573
1574 // Because of a Firefox bug HTML data are not available in some cases (e.g. paste from Word), in such cases we
1575 // need to use the pastebin (http://dev.ckeditor.com/ticket/13528, https://bugzilla.mozilla.org/show_bug.cgi?id=1183686).
1576 if ( CKEDITOR.env.gecko && ( dataTransfer.getData( 'text/html' ) || dataTransfer.getFilesCount() ) ) {
1577 return true;
1578 }
1579
1580 // Safari fixed clipboard in 10.1 (https://bugs.webkit.org/show_bug.cgi?id=19893) (http://dev.ckeditor.com/ticket/16982).
1581 // However iOS version still doesn't work well enough (https://bugs.webkit.org/show_bug.cgi?id=19893#c34).
1582 if ( CKEDITOR.env.safari && CKEDITOR.env.version >= 603 && !CKEDITOR.env.iOS ) {
1583 return true;
1584 }
1585
1586 // In older Safari and IE HTML data is not available though the Clipboard API.
1587 // In Edge things are a bit messy at the moment -
1588 // https://connect.microsoft.com/IE/feedback/details/1572456/edge-clipboard-api-text-html-content-messed-up-in-event-clipboarddata
1589 // It is safer to use the paste bin in unknown cases.
1590 return false;
1591 },
1592
1593 /**
1594 * Returns the element that should be used as the target for the drop event.
1595 *
1596 * @since 4.5
1597 * @param {CKEDITOR.editor} editor The editor instance.
1598 * @returns {CKEDITOR.dom.domObject} the element that should be used as the target for the drop event.
1599 */
1600 getDropTarget: function( editor ) {
1601 var editable = editor.editable();
1602
1603 // http://dev.ckeditor.com/ticket/11123 Firefox needs to listen on document, because otherwise event won't be fired.
1604 // http://dev.ckeditor.com/ticket/11086 IE8 cannot listen on document.
1605 if ( ( CKEDITOR.env.ie && CKEDITOR.env.version < 9 ) || editable.isInline() ) {
1606 return editable;
1607 } else {
1608 return editor.document;
1609 }
1610 },
1611
1612 /**
1613 * IE 8 & 9 split text node on drop so the first node contains the
1614 * text before the drop position and the second contains the rest. If you
1615 * drag the content from the same node you will be not be able to get
1616 * it (the range becomes invalid), so you need to join them back.
1617 *
1618 * Note that the first node in IE 8 & 9 is the original node object
1619 * but with shortened content.
1620 *
1621 * Before:
1622 * --- Text Node A ----------------------------------
1623 * /\
1624 * Drag position
1625 *
1626 * After (IE 8 & 9):
1627 * --- Text Node A ----- --- Text Node B -----------
1628 * /\ /\
1629 * Drop position Drag position
1630 * (invalid)
1631 *
1632 * After (other browsers):
1633 * --- Text Node A ----------------------------------
1634 * /\ /\
1635 * Drop position Drag position
1636 *
1637 * **Note:** This function is in the public scope for tests usage only.
1638 *
1639 * @since 4.5
1640 * @private
1641 * @param {CKEDITOR.dom.range} dragRange The drag range.
1642 * @param {CKEDITOR.dom.range} dropRange The drop range.
1643 * @param {Number} preDragStartContainerChildCount The number of children of the drag range start container before the drop.
1644 * @param {Number} preDragEndContainerChildCount The number of children of the drag range end container before the drop.
1645 */
1646 fixSplitNodesAfterDrop: function( dragRange, dropRange, preDragStartContainerChildCount, preDragEndContainerChildCount ) {
1647 var dropContainer = dropRange.startContainer;
1648
1649 if (
1650 typeof preDragEndContainerChildCount != 'number' ||
1651 typeof preDragStartContainerChildCount != 'number'
1652 ) {
1653 return;
1654 }
1655
1656 // We are only concerned about ranges anchored in elements.
1657 if ( dropContainer.type != CKEDITOR.NODE_ELEMENT ) {
1658 return;
1659 }
1660
1661 if ( handleContainer( dragRange.startContainer, dropContainer, preDragStartContainerChildCount ) ) {
1662 return;
1663 }
1664
1665 if ( handleContainer( dragRange.endContainer, dropContainer, preDragEndContainerChildCount ) ) {
1666 return;
1667 }
1668
1669 function handleContainer( dragContainer, dropContainer, preChildCount ) {
1670 var dragElement = dragContainer;
1671 if ( dragElement.type == CKEDITOR.NODE_TEXT ) {
1672 dragElement = dragContainer.getParent();
1673 }
1674
1675 if ( dragElement.equals( dropContainer ) && preChildCount != dropContainer.getChildCount() ) {
1676 applyFix( dropRange );
1677 return true;
1678 }
1679 }
1680
1681 function applyFix( dropRange ) {
1682 var nodeBefore = dropRange.startContainer.getChild( dropRange.startOffset - 1 ),
1683 nodeAfter = dropRange.startContainer.getChild( dropRange.startOffset );
1684
1685 if (
1686 nodeBefore && nodeBefore.type == CKEDITOR.NODE_TEXT &&
1687 nodeAfter && nodeAfter.type == CKEDITOR.NODE_TEXT
1688 ) {
1689 var offset = nodeBefore.getLength();
1690
1691 nodeBefore.setText( nodeBefore.getText() + nodeAfter.getText() );
1692 nodeAfter.remove();
1693
1694 dropRange.setStart( nodeBefore, offset );
1695 dropRange.collapse( true );
1696 }
1697 }
1698 },
1699
1700 /**
1701 * Checks whether turning the drag range into bookmarks will invalidate the drop range.
1702 * This usually happens when the drop range shares the container with the drag range and is
1703 * located after the drag range, but there are countless edge cases.
1704 *
1705 * This function is stricly related to {@link #internalDrop} which toggles
1706 * order in which it creates bookmarks for both ranges based on a value returned
1707 * by this method. In some cases this method returns a value which is not necessarily
1708 * true in terms of what it was meant to check, but it is convenient, because
1709 * we know how it is interpreted in {@link #internalDrop}, so the correct
1710 * behavior of the entire algorithm is assured.
1711 *
1712 * **Note:** This function is in the public scope for tests usage only.
1713 *
1714 * @since 4.5
1715 * @private
1716 * @param {CKEDITOR.dom.range} dragRange The first range to compare.
1717 * @param {CKEDITOR.dom.range} dropRange The second range to compare.
1718 * @returns {Boolean} `true` if the first range is before the second range.
1719 */
1720 isDropRangeAffectedByDragRange: function( dragRange, dropRange ) {
1721 var dropContainer = dropRange.startContainer,
1722 dropOffset = dropRange.endOffset;
1723
1724 // Both containers are the same and drop offset is at the same position or later.
1725 // " A L] A " " M A "
1726 // ^ ^
1727 if ( dragRange.endContainer.equals( dropContainer ) && dragRange.endOffset <= dropOffset ) {
1728 return true;
1729 }
1730
1731 // Bookmark for drag start container will mess up with offsets.
1732 // " O [L A " " M A "
1733 // ^ ^
1734 if (
1735 dragRange.startContainer.getParent().equals( dropContainer ) &&
1736 dragRange.startContainer.getIndex() < dropOffset
1737 ) {
1738 return true;
1739 }
1740
1741 // Bookmark for drag end container will mess up with offsets.
1742 // " O] L A " " M A "
1743 // ^ ^
1744 if (
1745 dragRange.endContainer.getParent().equals( dropContainer ) &&
1746 dragRange.endContainer.getIndex() < dropOffset
1747 ) {
1748 return true;
1749 }
1750
1751 return false;
1752 },
1753
1754 /**
1755 * Internal drag and drop (drag and drop in the same editor instance).
1756 *
1757 * **Note:** This function is in the public scope for tests usage only.
1758 *
1759 * @since 4.5
1760 * @private
1761 * @param {CKEDITOR.dom.range} dragRange The first range to compare.
1762 * @param {CKEDITOR.dom.range} dropRange The second range to compare.
1763 * @param {CKEDITOR.plugins.clipboard.dataTransfer} dataTransfer
1764 * @param {CKEDITOR.editor} editor
1765 */
1766 internalDrop: function( dragRange, dropRange, dataTransfer, editor ) {
1767 var clipboard = CKEDITOR.plugins.clipboard,
1768 editable = editor.editable(),
1769 dragBookmark, dropBookmark, isDropRangeAffected;
1770
1771 // Save and lock snapshot so there will be only
1772 // one snapshot for both remove and insert content.
1773 editor.fire( 'saveSnapshot' );
1774 editor.fire( 'lockSnapshot', { dontUpdate: 1 } );
1775
1776 if ( CKEDITOR.env.ie && CKEDITOR.env.version < 10 ) {
1777 this.fixSplitNodesAfterDrop(
1778 dragRange,
1779 dropRange,
1780 clipboard.dragStartContainerChildCount,
1781 clipboard.dragEndContainerChildCount
1782 );
1783 }
1784
1785 // Because we manipulate multiple ranges we need to do it carefully,
1786 // changing one range (event creating a bookmark) may make other invalid.
1787 // We need to change ranges into bookmarks so we can manipulate them easily in the future.
1788 // We can change the range which is later in the text before we change the preceding range.
1789 // We call isDropRangeAffectedByDragRange to test the order of ranges.
1790 isDropRangeAffected = this.isDropRangeAffectedByDragRange( dragRange, dropRange );
1791 if ( !isDropRangeAffected ) {
1792 dragBookmark = dragRange.createBookmark( false );
1793 }
1794 dropBookmark = dropRange.clone().createBookmark( false );
1795 if ( isDropRangeAffected ) {
1796 dragBookmark = dragRange.createBookmark( false );
1797 }
1798
1799 // Check if drop range is inside range.
1800 // This is an edge case when we drop something on editable's margin/padding.
1801 // That space is not treated as a part of the range we drag, so it is possible to drop there.
1802 // When we drop, browser tries to find closest drop position and it finds it inside drag range. (http://dev.ckeditor.com/ticket/13453)
1803 var startNode = dragBookmark.startNode,
1804 endNode = dragBookmark.endNode,
1805 dropNode = dropBookmark.startNode,
1806 dropInsideDragRange =
1807 // Must check endNode because dragRange could be collapsed in some edge cases (simulated DnD).
1808 endNode &&
1809 ( startNode.getPosition( dropNode ) & CKEDITOR.POSITION_PRECEDING ) &&
1810 ( endNode.getPosition( dropNode ) & CKEDITOR.POSITION_FOLLOWING );
1811
1812 // If the drop range happens to be inside drag range change it's position to the beginning of the drag range.
1813 if ( dropInsideDragRange ) {
1814 // We only change position of bookmark span that is connected with dropBookmark.
1815 // dropRange will be overwritten and set to the dropBookmark later.
1816 dropNode.insertBefore( startNode );
1817 }
1818
1819 // No we can safely delete content for the drag range...
1820 dragRange = editor.createRange();
1821 dragRange.moveToBookmark( dragBookmark );
1822 editable.extractHtmlFromRange( dragRange, 1 );
1823
1824 // ...and paste content into the drop position.
1825 dropRange = editor.createRange();
1826 dropRange.moveToBookmark( dropBookmark );
1827
1828 // We do not select drop range, because of may be in the place we can not set the selection
1829 // (e.g. between blocks, in case of block widget D&D). We put range to the paste event instead.
1830 firePasteEvents( editor, { dataTransfer: dataTransfer, method: 'drop', range: dropRange }, 1 );
1831
1832 editor.fire( 'unlockSnapshot' );
1833 },
1834
1835 /**
1836 * Gets the range from the `drop` event.
1837 *
1838 * @since 4.5
1839 * @param {Object} domEvent A native DOM drop event object.
1840 * @param {CKEDITOR.editor} editor The source editor instance.
1841 * @returns {CKEDITOR.dom.range} range at drop position.
1842 */
1843 getRangeAtDropPosition: function( dropEvt, editor ) {
1844 var $evt = dropEvt.data.$,
1845 x = $evt.clientX,
1846 y = $evt.clientY,
1847 $range,
1848 defaultRange = editor.getSelection( true ).getRanges()[ 0 ],
1849 range = editor.createRange();
1850
1851 // Make testing possible.
1852 if ( dropEvt.data.testRange )
1853 return dropEvt.data.testRange;
1854
1855 // Webkits.
1856 if ( document.caretRangeFromPoint && editor.document.$.caretRangeFromPoint( x, y ) ) {
1857 $range = editor.document.$.caretRangeFromPoint( x, y );
1858 range.setStart( CKEDITOR.dom.node( $range.startContainer ), $range.startOffset );
1859 range.collapse( true );
1860 }
1861 // FF.
1862 else if ( $evt.rangeParent ) {
1863 range.setStart( CKEDITOR.dom.node( $evt.rangeParent ), $evt.rangeOffset );
1864 range.collapse( true );
1865 }
1866 // IEs 9+.
1867 // We check if editable is focused to make sure that it's an internal DnD. External DnD must use the second
1868 // mechanism because of http://dev.ckeditor.com/ticket/13472#comment:6.
1869 else if ( CKEDITOR.env.ie && CKEDITOR.env.version > 8 && defaultRange && editor.editable().hasFocus ) {
1870 // On IE 9+ range by default is where we expected it.
1871 // defaultRange may be undefined if dragover was canceled (file drop).
1872 return defaultRange;
1873 }
1874 // IE 8 and all IEs if !defaultRange or external DnD.
1875 else if ( document.body.createTextRange ) {
1876 // To use this method we need a focus (which may be somewhere else in case of external drop).
1877 editor.focus();
1878
1879 $range = editor.document.getBody().$.createTextRange();
1880 try {
1881 var sucess = false;
1882
1883 // If user drop between text line IEs moveToPoint throws exception:
1884 //
1885 // Lorem ipsum pulvinar purus et euismod
1886 //
1887 // dolor sit amet,| consectetur adipiscing
1888 // *
1889 // vestibulum tincidunt augue eget tempus.
1890 //
1891 // * - drop position
1892 // | - expected cursor position
1893 //
1894 // So we try to call moveToPoint with +-1px up to +-20px above or
1895 // below original drop position to find nearest good drop position.
1896 for ( var i = 0; i < 20 && !sucess; i++ ) {
1897 if ( !sucess ) {
1898 try {
1899 $range.moveToPoint( x, y - i );
1900 sucess = true;
1901 } catch ( err ) {
1902 }
1903 }
1904 if ( !sucess ) {
1905 try {
1906 $range.moveToPoint( x, y + i );
1907 sucess = true;
1908 } catch ( err ) {
1909 }
1910 }
1911 }
1912
1913 if ( sucess ) {
1914 var id = 'cke-temp-' + ( new Date() ).getTime();
1915 $range.pasteHTML( '<span id="' + id + '">\u200b</span>' );
1916
1917 var span = editor.document.getById( id );
1918 range.moveToPosition( span, CKEDITOR.POSITION_BEFORE_START );
1919 span.remove();
1920 } else {
1921 // If the fist method does not succeed we might be next to
1922 // the short element (like header):
1923 //
1924 // Lorem ipsum pulvinar purus et euismod.
1925 //
1926 //
1927 // SOME HEADER| *
1928 //
1929 //
1930 // vestibulum tincidunt augue eget tempus.
1931 //
1932 // * - drop position
1933 // | - expected cursor position
1934 //
1935 // In such situation elementFromPoint returns proper element. Using getClientRect
1936 // it is possible to check if the cursor should be at the beginning or at the end
1937 // of paragraph.
1938 var $element = editor.document.$.elementFromPoint( x, y ),
1939 element = new CKEDITOR.dom.element( $element ),
1940 rect;
1941
1942 if ( !element.equals( editor.editable() ) && element.getName() != 'html' ) {
1943 rect = element.getClientRect();
1944
1945 if ( x < rect.left ) {
1946 range.setStartAt( element, CKEDITOR.POSITION_AFTER_START );
1947 range.collapse( true );
1948 } else {
1949 range.setStartAt( element, CKEDITOR.POSITION_BEFORE_END );
1950 range.collapse( true );
1951 }
1952 }
1953 // If drop happens on no element elementFromPoint returns html or body.
1954 //
1955 // * |Lorem ipsum pulvinar purus et euismod.
1956 //
1957 // vestibulum tincidunt augue eget tempus.
1958 //
1959 // * - drop position
1960 // | - expected cursor position
1961 //
1962 // In such case we can try to use default selection. If startContainer is not
1963 // 'editable' element it is probably proper selection.
1964 else if ( defaultRange && defaultRange.startContainer &&
1965 !defaultRange.startContainer.equals( editor.editable() ) ) {
1966 return defaultRange;
1967
1968 // Otherwise we can not find any drop position and we have to return null
1969 // and cancel drop event.
1970 } else {
1971 return null;
1972 }
1973
1974 }
1975 } catch ( err ) {
1976 return null;
1977 }
1978 } else {
1979 return null;
1980 }
1981
1982 return range;
1983 },
1984
1985 /**
1986 * This function tries to link the `evt.data.dataTransfer` property of the {@link CKEDITOR.editor#dragstart},
1987 * {@link CKEDITOR.editor#dragend} and {@link CKEDITOR.editor#drop} events to a single
1988 * {@link CKEDITOR.plugins.clipboard.dataTransfer} object.
1989 *
1990 * This method is automatically used by the core of the drag and drop functionality and
1991 * usually does not have to be called manually when using the drag and drop events.
1992 *
1993 * This method behaves differently depending on whether the drag and drop events were fired
1994 * artificially (to represent a non-native drag and drop) or whether they were caused by the native drag and drop.
1995 *
1996 * If the native event is not available, then it will create a new {@link CKEDITOR.plugins.clipboard.dataTransfer}
1997 * instance (if it does not exist already) and will link it to this and all following event objects until
1998 * the {@link #resetDragDataTransfer} method is called. It means that all three drag and drop events must be fired
1999 * in order to ensure that the data transfer is bound correctly.
2000 *
2001 * If the native event is available, then the {@link CKEDITOR.plugins.clipboard.dataTransfer} is identified
2002 * by its ID and a new instance is assigned to the `evt.data.dataTransfer` only if the ID changed or
2003 * the {@link #resetDragDataTransfer} method was called.
2004 *
2005 * @since 4.5
2006 * @param {CKEDITOR.dom.event} [evt] A drop event object.
2007 * @param {CKEDITOR.editor} [sourceEditor] The source editor instance.
2008 */
2009 initDragDataTransfer: function( evt, sourceEditor ) {
2010 // Create a new dataTransfer object based on the drop event.
2011 // If this event was used on dragstart to create dataTransfer
2012 // both dataTransfer objects will have the same id.
2013 var nativeDataTransfer = evt.data.$ ? evt.data.$.dataTransfer : null,
2014 dataTransfer = new this.dataTransfer( nativeDataTransfer, sourceEditor );
2015
2016 if ( !nativeDataTransfer ) {
2017 // No native event.
2018 if ( this.dragData ) {
2019 dataTransfer = this.dragData;
2020 } else {
2021 this.dragData = dataTransfer;
2022 }
2023 } else {
2024 // Native event. If there is the same id we will replace dataTransfer with the one
2025 // created on drag, because it contains drag editor, drag content and so on.
2026 // Otherwise (in case of drag from external source) we save new object to
2027 // the global clipboard.dragData.
2028 if ( this.dragData && dataTransfer.id == this.dragData.id ) {
2029 dataTransfer = this.dragData;
2030 } else {
2031 this.dragData = dataTransfer;
2032 }
2033 }
2034
2035 evt.data.dataTransfer = dataTransfer;
2036 },
2037
2038 /**
2039 * Removes the global {@link #dragData} so the next call to {@link #initDragDataTransfer}
2040 * always creates a new instance of {@link CKEDITOR.plugins.clipboard.dataTransfer}.
2041 *
2042 * @since 4.5
2043 */
2044 resetDragDataTransfer: function() {
2045 this.dragData = null;
2046 },
2047
2048 /**
2049 * Global object storing the data transfer of the current drag and drop operation.
2050 * Do not use it directly, use {@link #initDragDataTransfer} and {@link #resetDragDataTransfer}.
2051 *
2052 * Note: This object is global (meaning that it is not related to a single editor instance)
2053 * in order to handle drag and drop from one editor into another.
2054 *
2055 * @since 4.5
2056 * @private
2057 * @property {CKEDITOR.plugins.clipboard.dataTransfer} dragData
2058 */
2059
2060 /**
2061 * Range object to save the drag range and remove its content after the drop.
2062 *
2063 * @since 4.5
2064 * @private
2065 * @property {CKEDITOR.dom.range} dragRange
2066 */
2067
2068 /**
2069 * Initializes and links data transfer objects based on the paste event. If the data
2070 * transfer object was already initialized on this event, the function will
2071 * return that object. In IE it is not possible to link copy/cut and paste events
2072 * so the method always returns a new object. The same happens if there is no paste event
2073 * passed to the method.
2074 *
2075 * @since 4.5
2076 * @param {CKEDITOR.dom.event} [evt] A paste event object.
2077 * @param {CKEDITOR.editor} [sourceEditor] The source editor instance.
2078 * @returns {CKEDITOR.plugins.clipboard.dataTransfer} The data transfer object.
2079 */
2080 initPasteDataTransfer: function( evt, sourceEditor ) {
2081 if ( !this.isCustomCopyCutSupported ) {
2082 // Edge does not support custom copy/cut, but it have some useful data in the clipboardData (http://dev.ckeditor.com/ticket/13755).
2083 return new this.dataTransfer( ( CKEDITOR.env.edge && evt && evt.data.$ && evt.data.$.clipboardData ) || null, sourceEditor );
2084 } else if ( evt && evt.data && evt.data.$ ) {
2085 var dataTransfer = new this.dataTransfer( evt.data.$.clipboardData, sourceEditor );
2086
2087 if ( this.copyCutData && dataTransfer.id == this.copyCutData.id ) {
2088 dataTransfer = this.copyCutData;
2089 dataTransfer.$ = evt.data.$.clipboardData;
2090 } else {
2091 this.copyCutData = dataTransfer;
2092 }
2093
2094 return dataTransfer;
2095 } else {
2096 return new this.dataTransfer( null, sourceEditor );
2097 }
2098 },
2099
2100 /**
2101 * Prevents dropping on the specified element.
2102 *
2103 * @since 4.5
2104 * @param {CKEDITOR.dom.element} element The element on which dropping should be disabled.
2105 */
2106 preventDefaultDropOnElement: function( element ) {
2107 element && element.on( 'dragover', preventDefaultSetDropEffectToNone );
2108 }
2109 };
2110
2111 // Data type used to link drag and drop events.
2112 //
2113 // In IE URL data type is buggie and there is no way to mark drag & drop without
2114 // modifying text data (which would be displayed if user drop content to the textarea)
2115 // so we just read dragged text.
2116 //
2117 // In Chrome and Firefox we can use custom data types.
2118 var clipboardIdDataType = CKEDITOR.plugins.clipboard.isCustomDataTypesSupported ? 'cke/id' : 'Text';
2119 /**
2120 * Facade for the native `dataTransfer`/`clipboadData` object to hide all differences
2121 * between browsers.
2122 *
2123 * @since 4.5
2124 * @class CKEDITOR.plugins.clipboard.dataTransfer
2125 * @constructor Creates a class instance.
2126 * @param {Object} [nativeDataTransfer] A native data transfer object.
2127 * @param {CKEDITOR.editor} [editor] The source editor instance. If the editor is defined, dataValue will
2128 * be created based on the editor content and the type will be 'html'.
2129 */
2130 CKEDITOR.plugins.clipboard.dataTransfer = function( nativeDataTransfer, editor ) {
2131 if ( nativeDataTransfer ) {
2132 this.$ = nativeDataTransfer;
2133 }
2134
2135 this._ = {
2136 metaRegExp: /^<meta.*?>/i,
2137 bodyRegExp: /<body(?:[\s\S]*?)>([\s\S]*)<\/body>/i,
2138 fragmentRegExp: /<!--(?:Start|End)Fragment-->/g,
2139
2140 data: {},
2141 files: [],
2142
2143 normalizeType: function( type ) {
2144 type = type.toLowerCase();
2145
2146 if ( type == 'text' || type == 'text/plain' ) {
2147 return 'Text'; // IE support only Text and URL;
2148 } else if ( type == 'url' ) {
2149 return 'URL'; // IE support only Text and URL;
2150 } else {
2151 return type;
2152 }
2153 }
2154 };
2155
2156 // Check if ID is already created.
2157 this.id = this.getData( clipboardIdDataType );
2158
2159 // If there is no ID we need to create it. Different browsers needs different ID.
2160 if ( !this.id ) {
2161 if ( clipboardIdDataType == 'Text' ) {
2162 // For IE10+ only Text data type is supported and we have to compare dragged
2163 // and dropped text. If the ID is not set it means that empty string was dragged
2164 // (ex. image with no alt). We change null to empty string.
2165 this.id = '';
2166 } else {
2167 // String for custom data type.
2168 this.id = 'cke-' + CKEDITOR.tools.getUniqueId();
2169 }
2170 }
2171
2172 // In IE10+ we can not use any data type besides text, so we do not call setData.
2173 if ( clipboardIdDataType != 'Text' ) {
2174 // Try to set ID so it will be passed from the drag to the drop event.
2175 // On some browsers with some event it is not possible to setData so we
2176 // need to catch exceptions.
2177 try {
2178 this.$.setData( clipboardIdDataType, this.id );
2179 } catch ( err ) {}
2180 }
2181
2182 if ( editor ) {
2183 this.sourceEditor = editor;
2184
2185 this.setData( 'text/html', editor.getSelectedHtml( 1 ) );
2186
2187 // Without setData( 'text', ... ) on dragstart there is no drop event in Safari.
2188 // Also 'text' data is empty as drop to the textarea does not work if we do not put there text.
2189 if ( clipboardIdDataType != 'Text' && !this.getData( 'text/plain' ) ) {
2190 this.setData( 'text/plain', editor.getSelection().getSelectedText() );
2191 }
2192 }
2193
2194 /**
2195 * Data transfer ID used to bind all dataTransfer
2196 * objects based on the same event (e.g. in drag and drop events).
2197 *
2198 * @readonly
2199 * @property {String} id
2200 */
2201
2202 /**
2203 * A native DOM event object.
2204 *
2205 * @readonly
2206 * @property {Object} $
2207 */
2208
2209 /**
2210 * Source editor &mdash; the editor where the drag starts.
2211 * Might be undefined if the drag starts outside the editor (e.g. when dropping files to the editor).
2212 *
2213 * @readonly
2214 * @property {CKEDITOR.editor} sourceEditor
2215 */
2216
2217 /**
2218 * Private properties and methods.
2219 *
2220 * @private
2221 * @property {Object} _
2222 */
2223 };
2224
2225 /**
2226 * Data transfer operation (drag and drop or copy and paste) started and ended in the same
2227 * editor instance.
2228 *
2229 * @since 4.5
2230 * @readonly
2231 * @property {Number} [=1]
2232 * @member CKEDITOR
2233 */
2234 CKEDITOR.DATA_TRANSFER_INTERNAL = 1;
2235
2236 /**
2237 * Data transfer operation (drag and drop or copy and paste) started in one editor
2238 * instance and ended in another.
2239 *
2240 * @since 4.5
2241 * @readonly
2242 * @property {Number} [=2]
2243 * @member CKEDITOR
2244 */
2245 CKEDITOR.DATA_TRANSFER_CROSS_EDITORS = 2;
2246
2247 /**
2248 * Data transfer operation (drag and drop or copy and paste) started outside of the editor.
2249 * The source of the data may be a textarea, HTML, another application, etc.
2250 *
2251 * @since 4.5
2252 * @readonly
2253 * @property {Number} [=3]
2254 * @member CKEDITOR
2255 */
2256 CKEDITOR.DATA_TRANSFER_EXTERNAL = 3;
2257
2258 CKEDITOR.plugins.clipboard.dataTransfer.prototype = {
2259 /**
2260 * Facade for the native `getData` method.
2261 *
2262 * @param {String} type The type of data to retrieve.
2263 * @param {Boolean} [getNative=false] Indicates if the whole, original content of the dataTransfer should be returned.
2264 * Introduced in CKEditor 4.7.0.
2265 * @returns {String} type Stored data for the given type or an empty string if the data for that type does not exist.
2266 */
2267 getData: function( type, getNative ) {
2268 function isEmpty( data ) {
2269 return data === undefined || data === null || data === '';
2270 }
2271
2272 function filterUnwantedCharacters( data ) {
2273 if ( typeof data !== 'string' ) {
2274 return data;
2275 }
2276
2277 var htmlEnd = data.indexOf( '</html>' );
2278
2279 if ( htmlEnd !== -1 ) {
2280 // Just cut everything after `</html>`, so everything after htmlEnd index + length of `</html>`.
2281 // Required to workaround bug: https://bugs.chromium.org/p/chromium/issues/detail?id=696978
2282 return data.substring( 0, htmlEnd + 7 );
2283 }
2284
2285 return data;
2286 }
2287
2288 type = this._.normalizeType( type );
2289
2290 var data = this._.data[ type ],
2291 result;
2292
2293 if ( isEmpty( data ) ) {
2294 try {
2295 data = this.$.getData( type );
2296 } catch ( e ) {}
2297 }
2298
2299 if ( isEmpty( data ) ) {
2300 data = '';
2301 }
2302
2303 // Some browsers add <meta http-equiv="content-type" content="text/html; charset=utf-8"> at the begging of the HTML data
2304 // or surround it with <html><head>...</head><body>(some content)<!--StartFragment--> and <!--EndFragment-->(some content)</body></html>
2305 // This code removes meta tags and returns only the contents of the <body> element if found. Note that
2306 // some significant content may be placed outside Start/EndFragment comments so it's kept.
2307 //
2308 // See http://dev.ckeditor.com/ticket/13583 for more details.
2309 // Additionally http://dev.ckeditor.com/ticket/16847 adds a flag allowing to get the whole, original content.
2310 if ( type == 'text/html' && !getNative ) {
2311 data = data.replace( this._.metaRegExp, '' );
2312
2313 // Keep only contents of the <body> element
2314 result = this._.bodyRegExp.exec( data );
2315 if ( result && result.length ) {
2316 data = result[ 1 ];
2317
2318 // Remove also comments.
2319 data = data.replace( this._.fragmentRegExp, '' );
2320 }
2321 }
2322 // Firefox on Linux put files paths as a text/plain data if there are files
2323 // in the dataTransfer object. We need to hide it, because files should be
2324 // handled on paste only if dataValue is empty.
2325 else if ( type == 'Text' && CKEDITOR.env.gecko && this.getFilesCount() &&
2326 data.substring( 0, 7 ) == 'file://' ) {
2327 data = '';
2328 }
2329
2330 return filterUnwantedCharacters( data );
2331 },
2332
2333 /**
2334 * Facade for the native `setData` method.
2335 *
2336 * @param {String} type The type of data to retrieve.
2337 * @param {String} value The data to add.
2338 */
2339 setData: function( type, value ) {
2340 type = this._.normalizeType( type );
2341
2342 this._.data[ type ] = value;
2343
2344 // There is "Unexpected call to method or property access." error if you try
2345 // to set data of unsupported type on IE.
2346 if ( !CKEDITOR.plugins.clipboard.isCustomDataTypesSupported && type != 'URL' && type != 'Text' ) {
2347 return;
2348 }
2349
2350 // If we use the text type to bind the ID, then if someone tries to set the text, we must also
2351 // update ID accordingly. http://dev.ckeditor.com/ticket/13468.
2352 if ( clipboardIdDataType == 'Text' && type == 'Text' ) {
2353 this.id = value;
2354 }
2355
2356 try {
2357 this.$.setData( type, value );
2358 } catch ( e ) {}
2359 },
2360
2361 /**
2362 * Gets the data transfer type.
2363 *
2364 * @param {CKEDITOR.editor} targetEditor The drop/paste target editor instance.
2365 * @returns {Number} Possible values: {@link CKEDITOR#DATA_TRANSFER_INTERNAL},
2366 * {@link CKEDITOR#DATA_TRANSFER_CROSS_EDITORS}, {@link CKEDITOR#DATA_TRANSFER_EXTERNAL}.
2367 */
2368 getTransferType: function( targetEditor ) {
2369 if ( !this.sourceEditor ) {
2370 return CKEDITOR.DATA_TRANSFER_EXTERNAL;
2371 } else if ( this.sourceEditor == targetEditor ) {
2372 return CKEDITOR.DATA_TRANSFER_INTERNAL;
2373 } else {
2374 return CKEDITOR.DATA_TRANSFER_CROSS_EDITORS;
2375 }
2376 },
2377
2378 /**
2379 * Copies the data from the native data transfer to a private cache.
2380 * This function is needed because the data from the native data transfer
2381 * is available only synchronously to the event listener. It is not possible
2382 * to get the data asynchronously, after a timeout, and the {@link CKEDITOR.editor#paste}
2383 * event is fired asynchronously &mdash; hence the need for caching the data.
2384 */
2385 cacheData: function() {
2386 if ( !this.$ ) {
2387 return;
2388 }
2389
2390 var that = this,
2391 i, file;
2392
2393 function getAndSetData( type ) {
2394 type = that._.normalizeType( type );
2395
2396 var data = that.getData( type, true );
2397 if ( data ) {
2398 that._.data[ type ] = data;
2399 }
2400 }
2401
2402 // Copy data.
2403 if ( CKEDITOR.plugins.clipboard.isCustomDataTypesSupported ) {
2404 if ( this.$.types ) {
2405 for ( i = 0; i < this.$.types.length; i++ ) {
2406 getAndSetData( this.$.types[ i ] );
2407 }
2408 }
2409 } else {
2410 getAndSetData( 'Text' );
2411 getAndSetData( 'URL' );
2412 }
2413
2414 // Copy files references.
2415 file = this._getImageFromClipboard();
2416 if ( ( this.$ && this.$.files ) || file ) {
2417 this._.files = [];
2418
2419 // Edge have empty files property with no length (http://dev.ckeditor.com/ticket/13755).
2420 if ( this.$.files && this.$.files.length ) {
2421 for ( i = 0; i < this.$.files.length; i++ ) {
2422 this._.files.push( this.$.files[ i ] );
2423 }
2424 }
2425
2426 // Don't include $.items if both $.files and $.items contains files, because,
2427 // according to spec and browsers behavior, they contain the same files.
2428 if ( this._.files.length === 0 && file ) {
2429 this._.files.push( file );
2430 }
2431 }
2432 },
2433
2434 /**
2435 * Gets the number of files in the dataTransfer object.
2436 *
2437 * @returns {Number} The number of files.
2438 */
2439 getFilesCount: function() {
2440 if ( this._.files.length ) {
2441 return this._.files.length;
2442 }
2443
2444 if ( this.$ && this.$.files && this.$.files.length ) {
2445 return this.$.files.length;
2446 }
2447
2448 return this._getImageFromClipboard() ? 1 : 0;
2449 },
2450
2451 /**
2452 * Gets the file at the index given.
2453 *
2454 * @param {Number} i Index.
2455 * @returns {File} File instance.
2456 */
2457 getFile: function( i ) {
2458 if ( this._.files.length ) {
2459 return this._.files[ i ];
2460 }
2461
2462 if ( this.$ && this.$.files && this.$.files.length ) {
2463 return this.$.files[ i ];
2464 }
2465
2466 // File or null if the file was not found.
2467 return i === 0 ? this._getImageFromClipboard() : undefined;
2468 },
2469
2470 /**
2471 * Checks if the data transfer contains any data.
2472 *
2473 * @returns {Boolean} `true` if the object contains no data.
2474 */
2475 isEmpty: function() {
2476 var typesToCheck = {},
2477 type;
2478
2479 // If dataTransfer contains files it is not empty.
2480 if ( this.getFilesCount() ) {
2481 return false;
2482 }
2483
2484 // Add custom types.
2485 for ( type in this._.data ) {
2486 typesToCheck[ type ] = 1;
2487 }
2488
2489 // Add native types.
2490 if ( this.$ ) {
2491 if ( CKEDITOR.plugins.clipboard.isCustomDataTypesSupported ) {
2492 if ( this.$.types ) {
2493 for ( var i = 0; i < this.$.types.length; i++ ) {
2494 typesToCheck[ this.$.types[ i ] ] = 1;
2495 }
2496 }
2497 } else {
2498 typesToCheck.Text = 1;
2499 typesToCheck.URL = 1;
2500 }
2501 }
2502
2503 // Remove ID.
2504 if ( clipboardIdDataType != 'Text' ) {
2505 typesToCheck[ clipboardIdDataType ] = 0;
2506 }
2507
2508 for ( type in typesToCheck ) {
2509 if ( typesToCheck[ type ] && this.getData( type ) !== '' ) {
2510 return false;
2511 }
2512 }
2513
2514 return true;
2515 },
2516
2517 /**
2518 * When the content of the clipboard is pasted in Chrome, the clipboard data object has an empty `files` property,
2519 * but it is possible to get the file as `items[0].getAsFile();` (http://dev.ckeditor.com/ticket/12961).
2520 *
2521 * @private
2522 * @returns {File} File instance or `null` if not found.
2523 */
2524 _getImageFromClipboard: function() {
2525 var file;
2526
2527 if ( this.$ && this.$.items && this.$.items[ 0 ] ) {
2528 try {
2529 file = this.$.items[ 0 ].getAsFile();
2530 // Duck typing
2531 if ( file && file.type ) {
2532 return file;
2533 }
2534 } catch ( err ) {
2535 // noop
2536 }
2537 }
2538
2539 return undefined;
2540 }
2541 };
2542} )();
2543
2544/**
2545 * The default content type that is used when pasted data cannot be clearly recognized as HTML or text.
2546 *
2547 * For example: `'foo'` may come from a plain text editor or a website. It is not possible to recognize the content
2548 * type in this case, so the default type will be used. At the same time it is clear that `'<b>example</b> text'` is
2549 * HTML and its origin is a web page, email or another rich text editor.
2550 *
2551 * **Note:** If content type is text, then styles of the paste context are preserved.
2552 *
2553 * CKEDITOR.config.clipboard_defaultContentType = 'text';
2554 *
2555 * See also the {@link CKEDITOR.editor#paste} event and read more about the integration with clipboard
2556 * in the [Clipboard Deep Dive guide](#!/guide/dev_clipboard).
2557 *
2558 * @since 4.0
2559 * @cfg {'html'/'text'} [clipboard_defaultContentType='html']
2560 * @member CKEDITOR.config
2561 */
2562
2563/**
2564 * Fired after the user initiated a paste action, but before the data is inserted into the editor.
2565 * The listeners to this event are able to process the content before its insertion into the document.
2566 *
2567 * Read more about the integration with clipboard in the [Clipboard Deep Dive guide](#!/guide/dev_clipboard).
2568 *
2569 * See also:
2570 *
2571 * * the {@link CKEDITOR.config#pasteFilter} option,
2572 * * the {@link CKEDITOR.editor#drop} event,
2573 * * the {@link CKEDITOR.plugins.clipboard.dataTransfer} class.
2574 *
2575 * @since 3.1
2576 * @event paste
2577 * @member CKEDITOR.editor
2578 * @param {CKEDITOR.editor} editor This editor instance.
2579 * @param data
2580 * @param {String} data.type The type of data in `data.dataValue`. Usually `'html'` or `'text'`, but for listeners
2581 * with a priority smaller than `6` it may also be `'auto'` which means that the content type has not been recognised yet
2582 * (this will be done by the content type sniffer that listens with priority `6`).
2583 * @param {String} data.dataValue HTML to be pasted.
2584 * @param {String} data.method Indicates the data transfer method. It could be drag and drop or copy and paste.
2585 * Possible values: `'drop'`, `'paste'`. Introduced in CKEditor 4.5.
2586 * @param {CKEDITOR.plugins.clipboard.dataTransfer} data.dataTransfer Facade for the native dataTransfer object
2587 * which provides access to various data types and files, and passes some data between linked events
2588 * (like drag and drop). Introduced in CKEditor 4.5.
2589 * @param {Boolean} [data.dontFilter=false] Whether the {@link CKEDITOR.editor#pasteFilter paste filter} should not
2590 * be applied to data. This option has no effect when `data.type` equals `'text'` which means that for instance
2591 * {@link CKEDITOR.config#forcePasteAsPlainText} has a higher priority. Introduced in CKEditor 4.5.
2592 */
2593
2594/**
2595 * Fired before the {@link #paste} event. Allows to preset data type.
2596 *
2597 * **Note:** This event is deprecated. Add a `0` priority listener for the
2598 * {@link #paste} event instead.
2599 *
2600 * @deprecated
2601 * @event beforePaste
2602 * @member CKEDITOR.editor
2603 */
2604
2605/**
2606 * Fired after the {@link #paste} event if content was modified. Note that if the paste
2607 * event does not insert any data, the `afterPaste` event will not be fired.
2608 *
2609 * @event afterPaste
2610 * @member CKEDITOR.editor
2611 */
2612
2613/**
2614 * Facade for the native `drop` event. Fired when the native `drop` event occurs.
2615 *
2616 * **Note:** To manipulate dropped data, use the {@link CKEDITOR.editor#paste} event.
2617 * Use the `drop` event only to control drag and drop operations (e.g. to prevent the ability to drop some content).
2618 *
2619 * Read more about integration with drag and drop in the [Clipboard Deep Dive guide](#!/guide/dev_clipboard).
2620 *
2621 * See also:
2622 *
2623 * * The {@link CKEDITOR.editor#paste} event,
2624 * * The {@link CKEDITOR.editor#dragstart} and {@link CKEDITOR.editor#dragend} events,
2625 * * The {@link CKEDITOR.plugins.clipboard.dataTransfer} class.
2626 *
2627 * @since 4.5
2628 * @event drop
2629 * @member CKEDITOR.editor
2630 * @param {CKEDITOR.editor} editor This editor instance.
2631 * @param data
2632 * @param {Object} data.$ Native drop event.
2633 * @param {CKEDITOR.dom.node} data.target Drop target.
2634 * @param {CKEDITOR.plugins.clipboard.dataTransfer} data.dataTransfer DataTransfer facade.
2635 * @param {CKEDITOR.dom.range} data.dragRange Drag range, lets you manipulate the drag range.
2636 * Note that dragged HTML is saved as `text/html` data on `dragstart` so if you change the drag range
2637 * on drop, dropped HTML will not change. You need to change it manually using
2638 * {@link CKEDITOR.plugins.clipboard.dataTransfer#setData dataTransfer.setData}.
2639 * @param {CKEDITOR.dom.range} data.dropRange Drop range, lets you manipulate the drop range.
2640 */
2641
2642/**
2643 * Facade for the native `dragstart` event. Fired when the native `dragstart` event occurs.
2644 *
2645 * This event can be canceled in order to block the drag start operation. It can also be fired to mimic the start of the drag and drop
2646 * operation. For instance, the `widget` plugin uses this option to integrate its custom block widget drag and drop with
2647 * the entire system.
2648 *
2649 * Read more about integration with drag and drop in the [Clipboard Deep Dive guide](#!/guide/dev_clipboard).
2650 *
2651 * See also:
2652 *
2653 * * The {@link CKEDITOR.editor#paste} event,
2654 * * The {@link CKEDITOR.editor#drop} and {@link CKEDITOR.editor#dragend} events,
2655 * * The {@link CKEDITOR.plugins.clipboard.dataTransfer} class.
2656 *
2657 * @since 4.5
2658 * @event dragstart
2659 * @member CKEDITOR.editor
2660 * @param {CKEDITOR.editor} editor This editor instance.
2661 * @param data
2662 * @param {Object} data.$ Native dragstart event.
2663 * @param {CKEDITOR.dom.node} data.target Drag target.
2664 * @param {CKEDITOR.plugins.clipboard.dataTransfer} data.dataTransfer DataTransfer facade.
2665 */
2666
2667/**
2668 * Facade for the native `dragend` event. Fired when the native `dragend` event occurs.
2669 *
2670 * Read more about integration with drag and drop in the [Clipboard Deep Dive guide](#!/guide/dev_clipboard).
2671 *
2672 * See also:
2673 *
2674 * * The {@link CKEDITOR.editor#paste} event,
2675 * * The {@link CKEDITOR.editor#drop} and {@link CKEDITOR.editor#dragend} events,
2676 * * The {@link CKEDITOR.plugins.clipboard.dataTransfer} class.
2677 *
2678 * @since 4.5
2679 * @event dragend
2680 * @member CKEDITOR.editor
2681 * @param {CKEDITOR.editor} editor This editor instance.
2682 * @param data
2683 * @param {Object} data.$ Native dragend event.
2684 * @param {CKEDITOR.dom.node} data.target Drag target.
2685 * @param {CKEDITOR.plugins.clipboard.dataTransfer} data.dataTransfer DataTransfer facade.
2686 */
2687
2688/**
2689 * Defines a filter which is applied to external data pasted or dropped into the editor. Possible values are:
2690 *
2691 * * `'plain-text'` &ndash; Content will be pasted as a plain text.
2692 * * `'semantic-content'` &ndash; Known tags (except `div`, `span`) with all attributes (except
2693 * `style` and `class`) will be kept.
2694 * * `'h1 h2 p div'` &ndash; Custom rules compatible with {@link CKEDITOR.filter}.
2695 * * `null` &ndash; Content will not be filtered by the paste filter (but it still may be filtered
2696 * by [Advanced Content Filter](#!/guide/dev_advanced_content_filter)). This value can be used to
2697 * disable the paste filter in Chrome and Safari, where this option defaults to `'semantic-content'`.
2698 *
2699 * Example:
2700 *
2701 * config.pasteFilter = 'plain-text';
2702 *
2703 * Custom setting:
2704 *
2705 * config.pasteFilter = 'h1 h2 p ul ol li; img[!src, alt]; a[!href]';
2706 *
2707 * Based on this configuration option, a proper {@link CKEDITOR.filter} instance will be defined and assigned to the editor
2708 * as a {@link CKEDITOR.editor#pasteFilter}. You can tweak the paste filter settings on the fly on this object
2709 * as well as delete or replace it.
2710 *
2711 * var editor = CKEDITOR.replace( 'editor', {
2712 * pasteFilter: 'semantic-content'
2713 * } );
2714 *
2715 * editor.on( 'instanceReady', function() {
2716 * // The result of this will be that all semantic content will be preserved
2717 * // except tables.
2718 * editor.pasteFilter.disallow( 'table' );
2719 * } );
2720 *
2721 * Note that the paste filter is applied only to **external** data. There are three data sources:
2722 *
2723 * * copied and pasted in the same editor (internal),
2724 * * copied from one editor and pasted into another (cross-editor),
2725 * * coming from all other sources like websites, MS Word, etc. (external).
2726 *
2727 * If {@link CKEDITOR.config#allowedContent Advanced Content Filter} is not disabled, then
2728 * it will also be applied to pasted and dropped data. The paste filter job is to "normalize"
2729 * external data which often needs to be handled differently than content produced by the editor.
2730 *
2731 * This setting defaults to `'semantic-content'` in Chrome, Opera and Safari (all Blink and Webkit based browsers)
2732 * due to messy HTML which these browsers keep in the clipboard. In other browsers it defaults to `null`.
2733 *
2734 * @since 4.5
2735 * @cfg {String} [pasteFilter='semantic-content' in Chrome and Safari and `null` in other browsers]
2736 * @member CKEDITOR.config
2737 */
2738
2739/**
2740 * {@link CKEDITOR.filter Content filter} which is used when external data is pasted or dropped into the editor
2741 * or a forced paste as plain text occurs.
2742 *
2743 * This object might be used on the fly to define rules for pasted external content.
2744 * This object is available and used if the {@link CKEDITOR.plugins.clipboard clipboard} plugin is enabled and
2745 * {@link CKEDITOR.config#pasteFilter} or {@link CKEDITOR.config#forcePasteAsPlainText} was defined.
2746 *
2747 * To enable the filter:
2748 *
2749 * var editor = CKEDITOR.replace( 'editor', {
2750 * pasteFilter: 'plain-text'
2751 * } );
2752 *
2753 * You can also modify the filter on the fly later on:
2754 *
2755 * editor.pasteFilter = new CKEDITOR.filter( 'p h1 h2; a[!href]' );
2756 *
2757 * Note that the paste filter is only applied to **external** data. There are three data sources:
2758 *
2759 * * copied and pasted in the same editor (internal),
2760 * * copied from one editor and pasted into another (cross-editor),
2761 * * coming from all other sources like websites, MS Word, etc. (external).
2762 *
2763 * If {@link CKEDITOR.config#allowedContent Advanced Content Filter} is not disabled, then
2764 * it will also be applied to pasted and dropped data. The paste filter job is to "normalize"
2765 * external data which often needs to be handled differently than content produced by the editor.
2766 *
2767 * @since 4.5
2768 * @readonly
2769 * @property {CKEDITOR.filter} [pasteFilter]
2770 * @member CKEDITOR.editor
2771 */
2772
2773/**
2774 * Duration of the notification displayed after pasting was blocked by the browser.
2775 *
2776 * @since 4.7.0
2777 * @cfg {Number} [clipboard_notificationDuration=10000]
2778 * @member CKEDITOR.config
2779 */
2780CKEDITOR.config.clipboard_notificationDuration = 10000;
diff --git a/sources/plugins/contextmenu/lang/af.js b/sources/plugins/contextmenu/lang/af.js
index bf849cc..76b5b96 100644
--- a/sources/plugins/contextmenu/lang/af.js
+++ b/sources/plugins/contextmenu/lang/af.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'contextmenu', 'af', { 5CKEDITOR.plugins.setLang( 'contextmenu', 'af', {
diff --git a/sources/plugins/contextmenu/lang/ar.js b/sources/plugins/contextmenu/lang/ar.js
index 6f4b9cd..c81b063 100644
--- a/sources/plugins/contextmenu/lang/ar.js
+++ b/sources/plugins/contextmenu/lang/ar.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'contextmenu', 'ar', { 5CKEDITOR.plugins.setLang( 'contextmenu', 'ar', {
diff --git a/sources/plugins/contextmenu/lang/az.js b/sources/plugins/contextmenu/lang/az.js
new file mode 100644
index 0000000..651f2f8
--- /dev/null
+++ b/sources/plugins/contextmenu/lang/az.js
@@ -0,0 +1,7 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'contextmenu', 'az', {
6 options: 'Əlavə əməliyyatlar'
7} );
diff --git a/sources/plugins/contextmenu/lang/bg.js b/sources/plugins/contextmenu/lang/bg.js
index 7e37b2e..6bb7a40 100644
--- a/sources/plugins/contextmenu/lang/bg.js
+++ b/sources/plugins/contextmenu/lang/bg.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'contextmenu', 'bg', { 5CKEDITOR.plugins.setLang( 'contextmenu', 'bg', {
diff --git a/sources/plugins/contextmenu/lang/bn.js b/sources/plugins/contextmenu/lang/bn.js
index e18bb70..fe93ec8 100644
--- a/sources/plugins/contextmenu/lang/bn.js
+++ b/sources/plugins/contextmenu/lang/bn.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'contextmenu', 'bn', { 5CKEDITOR.plugins.setLang( 'contextmenu', 'bn', {
diff --git a/sources/plugins/contextmenu/lang/bs.js b/sources/plugins/contextmenu/lang/bs.js
index 22cade1..9354351 100644
--- a/sources/plugins/contextmenu/lang/bs.js
+++ b/sources/plugins/contextmenu/lang/bs.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'contextmenu', 'bs', { 5CKEDITOR.plugins.setLang( 'contextmenu', 'bs', {
diff --git a/sources/plugins/contextmenu/lang/ca.js b/sources/plugins/contextmenu/lang/ca.js
index d9c157a..91c7ec8 100644
--- a/sources/plugins/contextmenu/lang/ca.js
+++ b/sources/plugins/contextmenu/lang/ca.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'contextmenu', 'ca', { 5CKEDITOR.plugins.setLang( 'contextmenu', 'ca', {
diff --git a/sources/plugins/contextmenu/lang/cs.js b/sources/plugins/contextmenu/lang/cs.js
index 49ba461..e53a0f5 100644
--- a/sources/plugins/contextmenu/lang/cs.js
+++ b/sources/plugins/contextmenu/lang/cs.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'contextmenu', 'cs', { 5CKEDITOR.plugins.setLang( 'contextmenu', 'cs', {
diff --git a/sources/plugins/contextmenu/lang/cy.js b/sources/plugins/contextmenu/lang/cy.js
index 2bb01d9..1816b84 100644
--- a/sources/plugins/contextmenu/lang/cy.js
+++ b/sources/plugins/contextmenu/lang/cy.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'contextmenu', 'cy', { 5CKEDITOR.plugins.setLang( 'contextmenu', 'cy', {
diff --git a/sources/plugins/contextmenu/lang/da.js b/sources/plugins/contextmenu/lang/da.js
index 3e73bd8..10043a5 100644
--- a/sources/plugins/contextmenu/lang/da.js
+++ b/sources/plugins/contextmenu/lang/da.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'contextmenu', 'da', { 5CKEDITOR.plugins.setLang( 'contextmenu', 'da', {
diff --git a/sources/plugins/contextmenu/lang/de-ch.js b/sources/plugins/contextmenu/lang/de-ch.js
index 606c5e5..216cd18 100644
--- a/sources/plugins/contextmenu/lang/de-ch.js
+++ b/sources/plugins/contextmenu/lang/de-ch.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'contextmenu', 'de-ch', { 5CKEDITOR.plugins.setLang( 'contextmenu', 'de-ch', {
diff --git a/sources/plugins/contextmenu/lang/de.js b/sources/plugins/contextmenu/lang/de.js
index af3d94f..aa0c098 100644
--- a/sources/plugins/contextmenu/lang/de.js
+++ b/sources/plugins/contextmenu/lang/de.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'contextmenu', 'de', { 5CKEDITOR.plugins.setLang( 'contextmenu', 'de', {
diff --git a/sources/plugins/contextmenu/lang/el.js b/sources/plugins/contextmenu/lang/el.js
index 5641cc2..bdad720 100644
--- a/sources/plugins/contextmenu/lang/el.js
+++ b/sources/plugins/contextmenu/lang/el.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'contextmenu', 'el', { 5CKEDITOR.plugins.setLang( 'contextmenu', 'el', {
diff --git a/sources/plugins/contextmenu/lang/en-au.js b/sources/plugins/contextmenu/lang/en-au.js
index 2cfb13e..cd6b202 100644
--- a/sources/plugins/contextmenu/lang/en-au.js
+++ b/sources/plugins/contextmenu/lang/en-au.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'contextmenu', 'en-au', { 5CKEDITOR.plugins.setLang( 'contextmenu', 'en-au', {
diff --git a/sources/plugins/contextmenu/lang/en-ca.js b/sources/plugins/contextmenu/lang/en-ca.js
index f5fff30..25950c9 100644
--- a/sources/plugins/contextmenu/lang/en-ca.js
+++ b/sources/plugins/contextmenu/lang/en-ca.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'contextmenu', 'en-ca', { 5CKEDITOR.plugins.setLang( 'contextmenu', 'en-ca', {
diff --git a/sources/plugins/contextmenu/lang/en-gb.js b/sources/plugins/contextmenu/lang/en-gb.js
index 25b6dfa..62f08d5 100644
--- a/sources/plugins/contextmenu/lang/en-gb.js
+++ b/sources/plugins/contextmenu/lang/en-gb.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'contextmenu', 'en-gb', { 5CKEDITOR.plugins.setLang( 'contextmenu', 'en-gb', {
diff --git a/sources/plugins/contextmenu/lang/en.js b/sources/plugins/contextmenu/lang/en.js
index 59343e3..10b5f47 100644
--- a/sources/plugins/contextmenu/lang/en.js
+++ b/sources/plugins/contextmenu/lang/en.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'contextmenu', 'en', { 5CKEDITOR.plugins.setLang( 'contextmenu', 'en', {
diff --git a/sources/plugins/contextmenu/lang/eo.js b/sources/plugins/contextmenu/lang/eo.js
index 8782e56..6a9760c 100644
--- a/sources/plugins/contextmenu/lang/eo.js
+++ b/sources/plugins/contextmenu/lang/eo.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'contextmenu', 'eo', { 5CKEDITOR.plugins.setLang( 'contextmenu', 'eo', {
diff --git a/sources/plugins/contextmenu/lang/es-mx.js b/sources/plugins/contextmenu/lang/es-mx.js
new file mode 100644
index 0000000..72bb1fa
--- /dev/null
+++ b/sources/plugins/contextmenu/lang/es-mx.js
@@ -0,0 +1,7 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'contextmenu', 'es-mx', {
6 options: 'Opciones del menú contextual'
7} );
diff --git a/sources/plugins/contextmenu/lang/es.js b/sources/plugins/contextmenu/lang/es.js
index 7eed8ab..1e8e06d 100644
--- a/sources/plugins/contextmenu/lang/es.js
+++ b/sources/plugins/contextmenu/lang/es.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'contextmenu', 'es', { 5CKEDITOR.plugins.setLang( 'contextmenu', 'es', {
diff --git a/sources/plugins/contextmenu/lang/et.js b/sources/plugins/contextmenu/lang/et.js
index 7e34fbb..d7ece9a 100644
--- a/sources/plugins/contextmenu/lang/et.js
+++ b/sources/plugins/contextmenu/lang/et.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'contextmenu', 'et', { 5CKEDITOR.plugins.setLang( 'contextmenu', 'et', {
diff --git a/sources/plugins/contextmenu/lang/eu.js b/sources/plugins/contextmenu/lang/eu.js
index f04ae72..32018e0 100644
--- a/sources/plugins/contextmenu/lang/eu.js
+++ b/sources/plugins/contextmenu/lang/eu.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'contextmenu', 'eu', { 5CKEDITOR.plugins.setLang( 'contextmenu', 'eu', {
diff --git a/sources/plugins/contextmenu/lang/fa.js b/sources/plugins/contextmenu/lang/fa.js
index 6ba8b7c..233d30d 100644
--- a/sources/plugins/contextmenu/lang/fa.js
+++ b/sources/plugins/contextmenu/lang/fa.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'contextmenu', 'fa', { 5CKEDITOR.plugins.setLang( 'contextmenu', 'fa', {
diff --git a/sources/plugins/contextmenu/lang/fi.js b/sources/plugins/contextmenu/lang/fi.js
index 920c494..5c11832 100644
--- a/sources/plugins/contextmenu/lang/fi.js
+++ b/sources/plugins/contextmenu/lang/fi.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'contextmenu', 'fi', { 5CKEDITOR.plugins.setLang( 'contextmenu', 'fi', {
diff --git a/sources/plugins/contextmenu/lang/fo.js b/sources/plugins/contextmenu/lang/fo.js
index 6e71076..6069a48 100644
--- a/sources/plugins/contextmenu/lang/fo.js
+++ b/sources/plugins/contextmenu/lang/fo.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'contextmenu', 'fo', { 5CKEDITOR.plugins.setLang( 'contextmenu', 'fo', {
diff --git a/sources/plugins/contextmenu/lang/fr-ca.js b/sources/plugins/contextmenu/lang/fr-ca.js
index c9ffdc1..d7aca5c 100644
--- a/sources/plugins/contextmenu/lang/fr-ca.js
+++ b/sources/plugins/contextmenu/lang/fr-ca.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'contextmenu', 'fr-ca', { 5CKEDITOR.plugins.setLang( 'contextmenu', 'fr-ca', {
diff --git a/sources/plugins/contextmenu/lang/fr.js b/sources/plugins/contextmenu/lang/fr.js
index 9205c52..7af3f33 100644
--- a/sources/plugins/contextmenu/lang/fr.js
+++ b/sources/plugins/contextmenu/lang/fr.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'contextmenu', 'fr', { 5CKEDITOR.plugins.setLang( 'contextmenu', 'fr', {
diff --git a/sources/plugins/contextmenu/lang/gl.js b/sources/plugins/contextmenu/lang/gl.js
index 92561cc..de69eae 100644
--- a/sources/plugins/contextmenu/lang/gl.js
+++ b/sources/plugins/contextmenu/lang/gl.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'contextmenu', 'gl', { 5CKEDITOR.plugins.setLang( 'contextmenu', 'gl', {
diff --git a/sources/plugins/contextmenu/lang/gu.js b/sources/plugins/contextmenu/lang/gu.js
index f2065ee..d9a83da 100644
--- a/sources/plugins/contextmenu/lang/gu.js
+++ b/sources/plugins/contextmenu/lang/gu.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'contextmenu', 'gu', { 5CKEDITOR.plugins.setLang( 'contextmenu', 'gu', {
diff --git a/sources/plugins/contextmenu/lang/he.js b/sources/plugins/contextmenu/lang/he.js
index 71d3bd9..a276534 100644
--- a/sources/plugins/contextmenu/lang/he.js
+++ b/sources/plugins/contextmenu/lang/he.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'contextmenu', 'he', { 5CKEDITOR.plugins.setLang( 'contextmenu', 'he', {
diff --git a/sources/plugins/contextmenu/lang/hi.js b/sources/plugins/contextmenu/lang/hi.js
index 9181aca..a3f501d 100644
--- a/sources/plugins/contextmenu/lang/hi.js
+++ b/sources/plugins/contextmenu/lang/hi.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'contextmenu', 'hi', { 5CKEDITOR.plugins.setLang( 'contextmenu', 'hi', {
diff --git a/sources/plugins/contextmenu/lang/hr.js b/sources/plugins/contextmenu/lang/hr.js
index 335215d..149c1eb 100644
--- a/sources/plugins/contextmenu/lang/hr.js
+++ b/sources/plugins/contextmenu/lang/hr.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'contextmenu', 'hr', { 5CKEDITOR.plugins.setLang( 'contextmenu', 'hr', {
diff --git a/sources/plugins/contextmenu/lang/hu.js b/sources/plugins/contextmenu/lang/hu.js
index f80d0ae..60bb66c 100644
--- a/sources/plugins/contextmenu/lang/hu.js
+++ b/sources/plugins/contextmenu/lang/hu.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'contextmenu', 'hu', { 5CKEDITOR.plugins.setLang( 'contextmenu', 'hu', {
diff --git a/sources/plugins/contextmenu/lang/id.js b/sources/plugins/contextmenu/lang/id.js
index 0278f79..8d19e50 100644
--- a/sources/plugins/contextmenu/lang/id.js
+++ b/sources/plugins/contextmenu/lang/id.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'contextmenu', 'id', { 5CKEDITOR.plugins.setLang( 'contextmenu', 'id', {
diff --git a/sources/plugins/contextmenu/lang/is.js b/sources/plugins/contextmenu/lang/is.js
index 6d208f1..4404c99 100644
--- a/sources/plugins/contextmenu/lang/is.js
+++ b/sources/plugins/contextmenu/lang/is.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'contextmenu', 'is', { 5CKEDITOR.plugins.setLang( 'contextmenu', 'is', {
diff --git a/sources/plugins/contextmenu/lang/it.js b/sources/plugins/contextmenu/lang/it.js
index dc206c9..0453e18 100644
--- a/sources/plugins/contextmenu/lang/it.js
+++ b/sources/plugins/contextmenu/lang/it.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'contextmenu', 'it', { 5CKEDITOR.plugins.setLang( 'contextmenu', 'it', {
diff --git a/sources/plugins/contextmenu/lang/ja.js b/sources/plugins/contextmenu/lang/ja.js
index 939486f..5887847 100644
--- a/sources/plugins/contextmenu/lang/ja.js
+++ b/sources/plugins/contextmenu/lang/ja.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'contextmenu', 'ja', { 5CKEDITOR.plugins.setLang( 'contextmenu', 'ja', {
diff --git a/sources/plugins/contextmenu/lang/ka.js b/sources/plugins/contextmenu/lang/ka.js
index b7c553b..f279b0a 100644
--- a/sources/plugins/contextmenu/lang/ka.js
+++ b/sources/plugins/contextmenu/lang/ka.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'contextmenu', 'ka', { 5CKEDITOR.plugins.setLang( 'contextmenu', 'ka', {
diff --git a/sources/plugins/contextmenu/lang/km.js b/sources/plugins/contextmenu/lang/km.js
index 967e4fe..9f5d965 100644
--- a/sources/plugins/contextmenu/lang/km.js
+++ b/sources/plugins/contextmenu/lang/km.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'contextmenu', 'km', { 5CKEDITOR.plugins.setLang( 'contextmenu', 'km', {
diff --git a/sources/plugins/contextmenu/lang/ko.js b/sources/plugins/contextmenu/lang/ko.js
index 8f873fe..45273b5 100644
--- a/sources/plugins/contextmenu/lang/ko.js
+++ b/sources/plugins/contextmenu/lang/ko.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'contextmenu', 'ko', { 5CKEDITOR.plugins.setLang( 'contextmenu', 'ko', {
diff --git a/sources/plugins/contextmenu/lang/ku.js b/sources/plugins/contextmenu/lang/ku.js
index f49b18b..c183cb2 100644
--- a/sources/plugins/contextmenu/lang/ku.js
+++ b/sources/plugins/contextmenu/lang/ku.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'contextmenu', 'ku', { 5CKEDITOR.plugins.setLang( 'contextmenu', 'ku', {
diff --git a/sources/plugins/contextmenu/lang/lt.js b/sources/plugins/contextmenu/lang/lt.js
index e50e8a4..e16597a 100644
--- a/sources/plugins/contextmenu/lang/lt.js
+++ b/sources/plugins/contextmenu/lang/lt.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'contextmenu', 'lt', { 5CKEDITOR.plugins.setLang( 'contextmenu', 'lt', {
diff --git a/sources/plugins/contextmenu/lang/lv.js b/sources/plugins/contextmenu/lang/lv.js
index fad495a..b14f0eb 100644
--- a/sources/plugins/contextmenu/lang/lv.js
+++ b/sources/plugins/contextmenu/lang/lv.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'contextmenu', 'lv', { 5CKEDITOR.plugins.setLang( 'contextmenu', 'lv', {
diff --git a/sources/plugins/contextmenu/lang/mk.js b/sources/plugins/contextmenu/lang/mk.js
index c00cebb..1d7c4c7 100644
--- a/sources/plugins/contextmenu/lang/mk.js
+++ b/sources/plugins/contextmenu/lang/mk.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'contextmenu', 'mk', { 5CKEDITOR.plugins.setLang( 'contextmenu', 'mk', {
diff --git a/sources/plugins/contextmenu/lang/mn.js b/sources/plugins/contextmenu/lang/mn.js
index 0745938..5076f18 100644
--- a/sources/plugins/contextmenu/lang/mn.js
+++ b/sources/plugins/contextmenu/lang/mn.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'contextmenu', 'mn', { 5CKEDITOR.plugins.setLang( 'contextmenu', 'mn', {
diff --git a/sources/plugins/contextmenu/lang/ms.js b/sources/plugins/contextmenu/lang/ms.js
index 870cbac..019ba76 100644
--- a/sources/plugins/contextmenu/lang/ms.js
+++ b/sources/plugins/contextmenu/lang/ms.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'contextmenu', 'ms', { 5CKEDITOR.plugins.setLang( 'contextmenu', 'ms', {
diff --git a/sources/plugins/contextmenu/lang/nb.js b/sources/plugins/contextmenu/lang/nb.js
index cc31945..c7c41b0 100644
--- a/sources/plugins/contextmenu/lang/nb.js
+++ b/sources/plugins/contextmenu/lang/nb.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'contextmenu', 'nb', { 5CKEDITOR.plugins.setLang( 'contextmenu', 'nb', {
diff --git a/sources/plugins/contextmenu/lang/nl.js b/sources/plugins/contextmenu/lang/nl.js
index baa8eb2..0ceb7cb 100644
--- a/sources/plugins/contextmenu/lang/nl.js
+++ b/sources/plugins/contextmenu/lang/nl.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'contextmenu', 'nl', { 5CKEDITOR.plugins.setLang( 'contextmenu', 'nl', {
diff --git a/sources/plugins/contextmenu/lang/no.js b/sources/plugins/contextmenu/lang/no.js
index 8885d40..ee283cf 100644
--- a/sources/plugins/contextmenu/lang/no.js
+++ b/sources/plugins/contextmenu/lang/no.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'contextmenu', 'no', { 5CKEDITOR.plugins.setLang( 'contextmenu', 'no', {
diff --git a/sources/plugins/contextmenu/lang/oc.js b/sources/plugins/contextmenu/lang/oc.js
new file mode 100644
index 0000000..8fab98f
--- /dev/null
+++ b/sources/plugins/contextmenu/lang/oc.js
@@ -0,0 +1,7 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'contextmenu', 'oc', {
6 options: 'Opcions del menú contextual'
7} );
diff --git a/sources/plugins/contextmenu/lang/pl.js b/sources/plugins/contextmenu/lang/pl.js
index 47de98d..99ef5d9 100644
--- a/sources/plugins/contextmenu/lang/pl.js
+++ b/sources/plugins/contextmenu/lang/pl.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'contextmenu', 'pl', { 5CKEDITOR.plugins.setLang( 'contextmenu', 'pl', {
diff --git a/sources/plugins/contextmenu/lang/pt-br.js b/sources/plugins/contextmenu/lang/pt-br.js
index 8cf3255..ec91513 100644
--- a/sources/plugins/contextmenu/lang/pt-br.js
+++ b/sources/plugins/contextmenu/lang/pt-br.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'contextmenu', 'pt-br', { 5CKEDITOR.plugins.setLang( 'contextmenu', 'pt-br', {
diff --git a/sources/plugins/contextmenu/lang/pt.js b/sources/plugins/contextmenu/lang/pt.js
index 31c027f..c2c969d 100644
--- a/sources/plugins/contextmenu/lang/pt.js
+++ b/sources/plugins/contextmenu/lang/pt.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'contextmenu', 'pt', { 5CKEDITOR.plugins.setLang( 'contextmenu', 'pt', {
diff --git a/sources/plugins/contextmenu/lang/ro.js b/sources/plugins/contextmenu/lang/ro.js
index b9c0077..928c4b3 100644
--- a/sources/plugins/contextmenu/lang/ro.js
+++ b/sources/plugins/contextmenu/lang/ro.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'contextmenu', 'ro', { 5CKEDITOR.plugins.setLang( 'contextmenu', 'ro', {
diff --git a/sources/plugins/contextmenu/lang/ru.js b/sources/plugins/contextmenu/lang/ru.js
index 330afbe..f671b6a 100644
--- a/sources/plugins/contextmenu/lang/ru.js
+++ b/sources/plugins/contextmenu/lang/ru.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'contextmenu', 'ru', { 5CKEDITOR.plugins.setLang( 'contextmenu', 'ru', {
diff --git a/sources/plugins/contextmenu/lang/si.js b/sources/plugins/contextmenu/lang/si.js
index 8b3eda0..ec603a3 100644
--- a/sources/plugins/contextmenu/lang/si.js
+++ b/sources/plugins/contextmenu/lang/si.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'contextmenu', 'si', { 5CKEDITOR.plugins.setLang( 'contextmenu', 'si', {
diff --git a/sources/plugins/contextmenu/lang/sk.js b/sources/plugins/contextmenu/lang/sk.js
index 34d64ac..fda2b3d 100644
--- a/sources/plugins/contextmenu/lang/sk.js
+++ b/sources/plugins/contextmenu/lang/sk.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'contextmenu', 'sk', { 5CKEDITOR.plugins.setLang( 'contextmenu', 'sk', {
diff --git a/sources/plugins/contextmenu/lang/sl.js b/sources/plugins/contextmenu/lang/sl.js
index e823bb6..9c7fc29 100644
--- a/sources/plugins/contextmenu/lang/sl.js
+++ b/sources/plugins/contextmenu/lang/sl.js
@@ -1,7 +1,7 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'contextmenu', 'sl', { 5CKEDITOR.plugins.setLang( 'contextmenu', 'sl', {
6 options: 'Možnosti Kontekstnega Menija' 6 options: 'Možnosti kontekstnega menija'
7} ); 7} );
diff --git a/sources/plugins/contextmenu/lang/sq.js b/sources/plugins/contextmenu/lang/sq.js
index e1d40dc..698ca2d 100644
--- a/sources/plugins/contextmenu/lang/sq.js
+++ b/sources/plugins/contextmenu/lang/sq.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'contextmenu', 'sq', { 5CKEDITOR.plugins.setLang( 'contextmenu', 'sq', {
diff --git a/sources/plugins/contextmenu/lang/sr-latn.js b/sources/plugins/contextmenu/lang/sr-latn.js
index a63e783..d550e84 100644
--- a/sources/plugins/contextmenu/lang/sr-latn.js
+++ b/sources/plugins/contextmenu/lang/sr-latn.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'contextmenu', 'sr-latn', { 5CKEDITOR.plugins.setLang( 'contextmenu', 'sr-latn', {
diff --git a/sources/plugins/contextmenu/lang/sr.js b/sources/plugins/contextmenu/lang/sr.js
index ec79a0c..2f7ba14 100644
--- a/sources/plugins/contextmenu/lang/sr.js
+++ b/sources/plugins/contextmenu/lang/sr.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'contextmenu', 'sr', { 5CKEDITOR.plugins.setLang( 'contextmenu', 'sr', {
diff --git a/sources/plugins/contextmenu/lang/sv.js b/sources/plugins/contextmenu/lang/sv.js
index 69fa7b9..a3b043f 100644
--- a/sources/plugins/contextmenu/lang/sv.js
+++ b/sources/plugins/contextmenu/lang/sv.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'contextmenu', 'sv', { 5CKEDITOR.plugins.setLang( 'contextmenu', 'sv', {
diff --git a/sources/plugins/contextmenu/lang/th.js b/sources/plugins/contextmenu/lang/th.js
index c17f20f..ce77065 100644
--- a/sources/plugins/contextmenu/lang/th.js
+++ b/sources/plugins/contextmenu/lang/th.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'contextmenu', 'th', { 5CKEDITOR.plugins.setLang( 'contextmenu', 'th', {
diff --git a/sources/plugins/contextmenu/lang/tr.js b/sources/plugins/contextmenu/lang/tr.js
index c31e6f3..4d5a550 100644
--- a/sources/plugins/contextmenu/lang/tr.js
+++ b/sources/plugins/contextmenu/lang/tr.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'contextmenu', 'tr', { 5CKEDITOR.plugins.setLang( 'contextmenu', 'tr', {
diff --git a/sources/plugins/contextmenu/lang/tt.js b/sources/plugins/contextmenu/lang/tt.js
index 514a35f..0531370 100644
--- a/sources/plugins/contextmenu/lang/tt.js
+++ b/sources/plugins/contextmenu/lang/tt.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'contextmenu', 'tt', { 5CKEDITOR.plugins.setLang( 'contextmenu', 'tt', {
diff --git a/sources/plugins/contextmenu/lang/ug.js b/sources/plugins/contextmenu/lang/ug.js
index b52e259..95a9d0a 100644
--- a/sources/plugins/contextmenu/lang/ug.js
+++ b/sources/plugins/contextmenu/lang/ug.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'contextmenu', 'ug', { 5CKEDITOR.plugins.setLang( 'contextmenu', 'ug', {
diff --git a/sources/plugins/contextmenu/lang/uk.js b/sources/plugins/contextmenu/lang/uk.js
index 97b514a..0a4ffb9 100644
--- a/sources/plugins/contextmenu/lang/uk.js
+++ b/sources/plugins/contextmenu/lang/uk.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'contextmenu', 'uk', { 5CKEDITOR.plugins.setLang( 'contextmenu', 'uk', {
diff --git a/sources/plugins/contextmenu/lang/vi.js b/sources/plugins/contextmenu/lang/vi.js
index 91fc97c..42c39b0 100644
--- a/sources/plugins/contextmenu/lang/vi.js
+++ b/sources/plugins/contextmenu/lang/vi.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'contextmenu', 'vi', { 5CKEDITOR.plugins.setLang( 'contextmenu', 'vi', {
diff --git a/sources/plugins/contextmenu/lang/zh-cn.js b/sources/plugins/contextmenu/lang/zh-cn.js
index 9ee2213..56879ee 100644
--- a/sources/plugins/contextmenu/lang/zh-cn.js
+++ b/sources/plugins/contextmenu/lang/zh-cn.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'contextmenu', 'zh-cn', { 5CKEDITOR.plugins.setLang( 'contextmenu', 'zh-cn', {
diff --git a/sources/plugins/contextmenu/lang/zh.js b/sources/plugins/contextmenu/lang/zh.js
index b451c7f..c8d8b93 100644
--- a/sources/plugins/contextmenu/lang/zh.js
+++ b/sources/plugins/contextmenu/lang/zh.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'contextmenu', 'zh', { 5CKEDITOR.plugins.setLang( 'contextmenu', 'zh', {
diff --git a/sources/plugins/contextmenu/plugin.js b/sources/plugins/contextmenu/plugin.js
index 09d7f25..4a3bd5f 100644
--- a/sources/plugins/contextmenu/plugin.js
+++ b/sources/plugins/contextmenu/plugin.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -7,10 +7,10 @@ CKEDITOR.plugins.add( 'contextmenu', {
7 requires: 'menu', 7 requires: 'menu',
8 8
9 // jscs:disable maximumLineLength 9 // jscs:disable maximumLineLength
10 lang: 'af,ar,bg,bn,bs,ca,cs,cy,da,de,de-ch,el,en,en-au,en-ca,en-gb,eo,es,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,pl,pt,pt-br,ro,ru,si,sk,sl,sq,sr,sr-latn,sv,th,tr,tt,ug,uk,vi,zh,zh-cn', // %REMOVE_LINE_CORE% 10 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', // %REMOVE_LINE_CORE%
11 // jscs:enable maximumLineLength 11 // jscs:enable maximumLineLength
12 12
13 // Make sure the base class (CKEDITOR.menu) is loaded before it (#3318). 13 // Make sure the base class (CKEDITOR.menu) is loaded before it (http://dev.ckeditor.com/ticket/3318).
14 onLoad: function() { 14 onLoad: function() {
15 /** 15 /**
16 * Class replacing the non-configurable native context menu with a configurable CKEditor's equivalent. 16 * Class replacing the non-configurable native context menu with a configurable CKEditor's equivalent.
@@ -51,7 +51,7 @@ CKEDITOR.plugins.add( 'contextmenu', {
51 var domEvent = event.data, 51 var domEvent = event.data,
52 isCtrlKeyDown = 52 isCtrlKeyDown =
53 // Safari on Windows always show 'ctrlKey' as true in 'contextmenu' event, 53 // Safari on Windows always show 'ctrlKey' as true in 'contextmenu' event,
54 // which make this property unreliable. (#4826) 54 // which make this property unreliable. (http://dev.ckeditor.com/ticket/4826)
55 ( CKEDITOR.env.webkit ? holdCtrlKey : ( CKEDITOR.env.mac ? domEvent.$.metaKey : domEvent.$.ctrlKey ) ); 55 ( CKEDITOR.env.webkit ? holdCtrlKey : ( CKEDITOR.env.mac ? domEvent.$.metaKey : domEvent.$.ctrlKey ) );
56 56
57 if ( nativeContextMenuOnCtrl && isCtrlKeyDown ) 57 if ( nativeContextMenuOnCtrl && isCtrlKeyDown )
@@ -60,7 +60,7 @@ CKEDITOR.plugins.add( 'contextmenu', {
60 // Cancel the browser context menu. 60 // Cancel the browser context menu.
61 domEvent.preventDefault(); 61 domEvent.preventDefault();
62 62
63 // Fix selection when non-editable element in Webkit/Blink (Mac) (#11306). 63 // Fix selection when non-editable element in Webkit/Blink (Mac) (http://dev.ckeditor.com/ticket/11306).
64 if ( CKEDITOR.env.mac && CKEDITOR.env.webkit ) { 64 if ( CKEDITOR.env.mac && CKEDITOR.env.webkit ) {
65 var editor = this.editor, 65 var editor = this.editor,
66 contentEditableParent = new CKEDITOR.dom.elementPath( domEvent.getTarget(), editor.editable() ).contains( function( el ) { 66 contentEditableParent = new CKEDITOR.dom.elementPath( domEvent.getTarget(), editor.editable() ).contains( function( el ) {
@@ -83,7 +83,7 @@ CKEDITOR.plugins.add( 'contextmenu', {
83 CKEDITOR.tools.setTimeout( function() { 83 CKEDITOR.tools.setTimeout( function() {
84 this.open( offsetParent, null, offsetX, offsetY ); 84 this.open( offsetParent, null, offsetX, offsetY );
85 85
86 // IE needs a short while to allow selection change before opening menu. (#7908) 86 // IE needs a short while to allow selection change before opening menu. (http://dev.ckeditor.com/ticket/7908)
87 }, CKEDITOR.env.ie ? 200 : 0, this ); 87 }, CKEDITOR.env.ie ? 200 : 0, this );
88 }, this ); 88 }, this );
89 89
@@ -111,10 +111,14 @@ CKEDITOR.plugins.add( 'contextmenu', {
111 * @param {Number} [offsetY] 111 * @param {Number} [offsetY]
112 */ 112 */
113 open: function( offsetParent, corner, offsetX, offsetY ) { 113 open: function( offsetParent, corner, offsetX, offsetY ) {
114 if ( this.editor.config.enableContextMenu === false ) {
115 return;
116 }
117
114 this.editor.focus(); 118 this.editor.focus();
115 offsetParent = offsetParent || CKEDITOR.document.getDocumentElement(); 119 offsetParent = offsetParent || CKEDITOR.document.getDocumentElement();
116 120
117 // #9362: Force selection check to update commands' states in the new context. 121 // http://dev.ckeditor.com/ticket/9362: Force selection check to update commands' states in the new context.
118 this.editor.selectionChange( 1 ); 122 this.editor.selectionChange( 1 );
119 123
120 this.show( offsetParent, corner, offsetX, offsetY ); 124 this.show( offsetParent, corner, offsetX, offsetY );
@@ -157,3 +161,14 @@ CKEDITOR.plugins.add( 'contextmenu', {
157 * @cfg {Boolean} [browserContextMenuOnCtrl=true] 161 * @cfg {Boolean} [browserContextMenuOnCtrl=true]
158 * @member CKEDITOR.config 162 * @member CKEDITOR.config
159 */ 163 */
164
165/**
166 * Whether to enable the context menu. Regardless of the setting the [Context Menu](http://ckeditor.com/addon/contextmenu)
167 * plugin is still loaded.
168 *
169 * config.enableContextMenu = false;
170 *
171 * @since 4.7.0
172 * @cfg {Boolean} [enableContextMenu=true]
173 * @member CKEDITOR.config
174 */
diff --git a/sources/plugins/dialog/dialogDefinition.js b/sources/plugins/dialog/dialogDefinition.js
index df5870c..6ecb491 100644
--- a/sources/plugins/dialog/dialogDefinition.js
+++ b/sources/plugins/dialog/dialogDefinition.js
@@ -1,6 +1,6 @@
1// jscs:disable disallowMixedSpacesAndTabs 1// jscs:disable disallowMixedSpacesAndTabs
2/** 2/**
3 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 3 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
4 * For licensing, see LICENSE.md or http://ckeditor.com/license 4 * For licensing, see LICENSE.md or http://ckeditor.com/license
5 */ 5 */
6 6
diff --git a/sources/plugins/dialog/plugin.js b/sources/plugins/dialog/plugin.js
index 3afe887..f26f9c9 100644
--- a/sources/plugins/dialog/plugin.js
+++ b/sources/plugins/dialog/plugin.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -177,10 +177,10 @@ CKEDITOR.DIALOG_STATE_BUSY = 2;
177 title = body.getChild( 0 ), 177 title = body.getChild( 0 ),
178 close = body.getChild( 1 ); 178 close = body.getChild( 1 );
179 179
180 // Don't allow dragging on dialog (#13184). 180 // Don't allow dragging on dialog (http://dev.ckeditor.com/ticket/13184).
181 editor.plugins.clipboard && CKEDITOR.plugins.clipboard.preventDefaultDropOnElement( body ); 181 editor.plugins.clipboard && CKEDITOR.plugins.clipboard.preventDefaultDropOnElement( body );
182 182
183 // IFrame shim for dialog that masks activeX in IE. (#7619) 183 // IFrame shim for dialog that masks activeX in IE. (http://dev.ckeditor.com/ticket/7619)
184 if ( CKEDITOR.env.ie && !CKEDITOR.env.quirks && !CKEDITOR.env.edge ) { 184 if ( CKEDITOR.env.ie && !CKEDITOR.env.quirks && !CKEDITOR.env.edge ) {
185 var src = 'javascript:void(function(){' + encodeURIComponent( 'document.open();(' + CKEDITOR.tools.fixDomain + ')();document.close();' ) + '}())', // jshint ignore:line 185 var src = 'javascript:void(function(){' + encodeURIComponent( 'document.open();(' + CKEDITOR.tools.fixDomain + ')();document.close();' ) + '}())', // jshint ignore:line
186 iframe = CKEDITOR.dom.element.createFromHtml( '<iframe' + 186 iframe = CKEDITOR.dom.element.createFromHtml( '<iframe' +
@@ -229,7 +229,7 @@ CKEDITOR.DIALOG_STATE_BUSY = 2;
229 tabsToRemove = {}, 229 tabsToRemove = {},
230 i, processed, stopPropagation; 230 i, processed, stopPropagation;
231 231
232 if ( ( buttonsOrder == 'OS' && CKEDITOR.env.mac ) || // The buttons in MacOS Apps are in reverse order (#4750) 232 if ( ( buttonsOrder == 'OS' && CKEDITOR.env.mac ) || // The buttons in MacOS Apps are in reverse order (http://dev.ckeditor.com/ticket/4750)
233 ( buttonsOrder == 'rtl' && dir == 'ltr' ) || ( buttonsOrder == 'ltr' && dir == 'rtl' ) ) 233 ( buttonsOrder == 'rtl' && dir == 'ltr' ) || ( buttonsOrder == 'ltr' && dir == 'rtl' ) )
234 defaultDefinition.buttons.reverse(); 234 defaultDefinition.buttons.reverse();
235 235
@@ -334,7 +334,7 @@ CKEDITOR.DIALOG_STATE_BUSY = 2;
334 334
335 if ( definition.onOk ) { 335 if ( definition.onOk ) {
336 this.on( 'ok', function( evt ) { 336 this.on( 'ok', function( evt ) {
337 // Dialog confirm might probably introduce content changes (#5415). 337 // Dialog confirm might probably introduce content changes (http://dev.ckeditor.com/ticket/5415).
338 editor.fire( 'saveSnapshot' ); 338 editor.fire( 'saveSnapshot' );
339 setTimeout( function() { 339 setTimeout( function() {
340 editor.fire( 'saveSnapshot' ); 340 editor.fire( 'saveSnapshot' );
@@ -451,7 +451,7 @@ CKEDITOR.DIALOG_STATE_BUSY = 2;
451 currentIndex = currentIndex + offset; 451 currentIndex = currentIndex + offset;
452 452
453 if ( hasTabs && !me._.tabBarMode && ( currentIndex == focusList.length || currentIndex == -1 ) ) { 453 if ( hasTabs && !me._.tabBarMode && ( currentIndex == focusList.length || currentIndex == -1 ) ) {
454 // If the dialog was not in tab mode, then focus the first tab (#13027). 454 // If the dialog was not in tab mode, then focus the first tab (http://dev.ckeditor.com/ticket/13027).
455 me._.tabBarMode = true; 455 me._.tabBarMode = true;
456 me._.tabs[ me._.currentTabId ][ 0 ].focus(); 456 me._.tabs[ me._.currentTabId ][ 0 ].focus();
457 me._.currentFocusIndex = -1; 457 me._.currentFocusIndex = -1;
@@ -528,7 +528,7 @@ CKEDITOR.DIALOG_STATE_BUSY = 2;
528 button && CKEDITOR.tools.setTimeout( button.click, 0, button ); 528 button && CKEDITOR.tools.setTimeout( button.click, 0, button );
529 processed = 1; 529 processed = 1;
530 } 530 }
531 stopPropagation = 1; // Always block the propagation (#4269) 531 stopPropagation = 1; // Always block the propagation (http://dev.ckeditor.com/ticket/4269)
532 } else if ( keystroke == 27 /*ESC*/ ) { 532 } else if ( keystroke == 27 /*ESC*/ ) {
533 button = this.getButton( 'cancel' ); 533 button = this.getButton( 'cancel' );
534 534
@@ -539,7 +539,7 @@ CKEDITOR.DIALOG_STATE_BUSY = 2;
539 if ( this.fire( 'cancel', { hide: true } ).hide !== false ) 539 if ( this.fire( 'cancel', { hide: true } ).hide !== false )
540 this.hide(); 540 this.hide();
541 } 541 }
542 stopPropagation = 1; // Always block the propagation (#4269) 542 stopPropagation = 1; // Always block the propagation (http://dev.ckeditor.com/ticket/4269)
543 } else { 543 } else {
544 return; 544 return;
545 } 545 }
@@ -563,7 +563,7 @@ CKEDITOR.DIALOG_STATE_BUSY = 2;
563 dialogElement.on( 'keydown', keydownHandler, this ); 563 dialogElement.on( 'keydown', keydownHandler, this );
564 564
565 // Some browsers instead, don't cancel key events in the keydown, but in the 565 // Some browsers instead, don't cancel key events in the keydown, but in the
566 // keypress. So we must do a longer trip in those cases. (#4531,#8985) 566 // keypress. So we must do a longer trip in those cases. (http://dev.ckeditor.com/ticket/4531,http://dev.ckeditor.com/ticket/8985)
567 if ( CKEDITOR.env.gecko ) 567 if ( CKEDITOR.env.gecko )
568 dialogElement.on( 'keypress', keypressHandler, this ); 568 dialogElement.on( 'keypress', keypressHandler, this );
569 569
@@ -612,7 +612,7 @@ CKEDITOR.DIALOG_STATE_BUSY = 2;
612 } 612 }
613 }, this, null, 0xffffffff ); 613 }, this, null, 0xffffffff );
614 614
615 // IE6 BUG: Text fields and text areas are only half-rendered the first time the dialog appears in IE6 (#2661). 615 // IE6 BUG: Text fields and text areas are only half-rendered the first time the dialog appears in IE6 (http://dev.ckeditor.com/ticket/2661).
616 // This is still needed after [2708] and [2709] because text fields in hidden TR tags are still broken. 616 // This is still needed after [2708] and [2709] because text fields in hidden TR tags are still broken.
617 if ( CKEDITOR.env.ie6Compat ) { 617 if ( CKEDITOR.env.ie6Compat ) {
618 this.on( 'load', function() { 618 this.on( 'load', function() {
@@ -788,7 +788,7 @@ CKEDITOR.DIALOG_STATE_BUSY = 2;
788 var element = this._.element.getFirst(), rtl = this._.editor.lang.dir == 'rtl'; 788 var element = this._.element.getFirst(), rtl = this._.editor.lang.dir == 'rtl';
789 var isFixed = element.getComputedStyle( 'position' ) == 'fixed'; 789 var isFixed = element.getComputedStyle( 'position' ) == 'fixed';
790 790
791 // (#8888) In some cases of a very small viewport, dialog is incorrectly 791 // (http://dev.ckeditor.com/ticket/8888) In some cases of a very small viewport, dialog is incorrectly
792 // positioned in IE7. It also happens that it remains sticky and user cannot 792 // positioned in IE7. It also happens that it remains sticky and user cannot
793 // scroll down/up to reveal dialog's content below/above the viewport; this is 793 // scroll down/up to reveal dialog's content below/above the viewport; this is
794 // cumbersome. 794 // cumbersome.
@@ -862,8 +862,10 @@ CKEDITOR.DIALOG_STATE_BUSY = 2;
862 // Reset all inputs back to their default value. 862 // Reset all inputs back to their default value.
863 this.reset(); 863 this.reset();
864 864
865 // Select the first tab by default. 865 // Selects the first tab if no tab is already selected.
866 this.selectPage( this.definition.contents[ 0 ].id ); 866 if ( this._.currentTabId === null ) {
867 this.selectPage( this.definition.contents[ 0 ].id );
868 }
867 869
868 // Set z-index. 870 // Set z-index.
869 if ( CKEDITOR.dialog._.currentZIndex === null ) 871 if ( CKEDITOR.dialog._.currentZIndex === null )
@@ -1038,7 +1040,7 @@ CKEDITOR.DIALOG_STATE_BUSY = 2;
1038 commitContent: function() { 1040 commitContent: function() {
1039 var args = arguments; 1041 var args = arguments;
1040 this.foreach( function( widget ) { 1042 this.foreach( function( widget ) {
1041 // Make sure IE triggers "change" event on last focused input before closing the dialog. (#7915) 1043 // Make sure IE triggers "change" event on last focused input before closing the dialog. (http://dev.ckeditor.com/ticket/7915)
1042 if ( CKEDITOR.env.ie && this._.currentFocusIndex == widget.focusIndex ) 1044 if ( CKEDITOR.env.ie && this._.currentFocusIndex == widget.focusIndex )
1043 widget.getInputElement().$.blur(); 1045 widget.getInputElement().$.blur();
1044 1046
@@ -1090,11 +1092,11 @@ CKEDITOR.DIALOG_STATE_BUSY = 2;
1090 var editor = this._.editor; 1092 var editor = this._.editor;
1091 editor.focus(); 1093 editor.focus();
1092 1094
1093 // Give a while before unlock, waiting for focus to return to the editable. (#172) 1095 // Give a while before unlock, waiting for focus to return to the editable. (http://dev.ckeditor.com/ticket/172)
1094 setTimeout( function() { 1096 setTimeout( function() {
1095 editor.focusManager.unlock(); 1097 editor.focusManager.unlock();
1096 1098
1097 // Fixed iOS focus issue (#12381). 1099 // Fixed iOS focus issue (http://dev.ckeditor.com/ticket/12381).
1098 // Keep in mind that editor.focus() does not work in this case. 1100 // Keep in mind that editor.focus() does not work in this case.
1099 if ( CKEDITOR.env.iOS ) { 1101 if ( CKEDITOR.env.iOS ) {
1100 editor.window.focus(); 1102 editor.window.focus();
@@ -1111,7 +1113,7 @@ CKEDITOR.DIALOG_STATE_BUSY = 2;
1111 contentObj.resetInitValue && contentObj.resetInitValue(); 1113 contentObj.resetInitValue && contentObj.resetInitValue();
1112 } ); 1114 } );
1113 1115
1114 // Reset dialog state back to IDLE, if busy (#13213). 1116 // Reset dialog state back to IDLE, if busy (http://dev.ckeditor.com/ticket/13213).
1115 this.setState( CKEDITOR.DIALOG_STATE_IDLE ); 1117 this.setState( CKEDITOR.DIALOG_STATE_IDLE );
1116 }, 1118 },
1117 1119
@@ -1232,7 +1234,7 @@ CKEDITOR.DIALOG_STATE_BUSY = 2;
1232 1234
1233 // [IE] an invisible input[type='text'] will enlarge it's width 1235 // [IE] an invisible input[type='text'] will enlarge it's width
1234 // if it's value is long when it shows, so we clear it's value 1236 // if it's value is long when it shows, so we clear it's value
1235 // before it shows and then recover it (#5649) 1237 // before it shows and then recover it (http://dev.ckeditor.com/ticket/5649)
1236 if ( CKEDITOR.env.ie6Compat || CKEDITOR.env.ie7Compat ) { 1238 if ( CKEDITOR.env.ie6Compat || CKEDITOR.env.ie7Compat ) {
1237 clearOrRecoverTextInputValue( selected[ 1 ] ); 1239 clearOrRecoverTextInputValue( selected[ 1 ] );
1238 selected[ 1 ].show(); 1240 selected[ 1 ].show();
@@ -2106,9 +2108,10 @@ CKEDITOR.DIALOG_STATE_BUSY = 2;
2106 } 2108 }
2107 2109
2108 function showCover( editor ) { 2110 function showCover( editor ) {
2109 var win = CKEDITOR.document.getWindow(); 2111 var win = CKEDITOR.document.getWindow(),
2110 var config = editor.config, 2112 config = editor.config,
2111 backgroundColorStyle = config.dialog_backgroundCoverColor || 'white', 2113 skinName = ( CKEDITOR.skinName || editor.config.skin ),
2114 backgroundColorStyle = config.dialog_backgroundCoverColor || ( skinName == 'moono-lisa' ? 'black' : 'white' ),
2112 backgroundCoverOpacity = config.dialog_backgroundCoverOpacity, 2115 backgroundCoverOpacity = config.dialog_backgroundCoverOpacity,
2113 baseFloatZIndex = config.baseFloatZIndex, 2116 baseFloatZIndex = config.baseFloatZIndex,
2114 coverKey = CKEDITOR.tools.genKey( backgroundColorStyle, backgroundCoverOpacity, baseFloatZIndex ), 2117 coverKey = CKEDITOR.tools.genKey( backgroundColorStyle, backgroundCoverOpacity, baseFloatZIndex ),
@@ -2198,7 +2201,7 @@ CKEDITOR.DIALOG_STATE_BUSY = 2;
2198 resizeCover = resizeFunc; 2201 resizeCover = resizeFunc;
2199 win.on( 'resize', resizeFunc ); 2202 win.on( 'resize', resizeFunc );
2200 resizeFunc(); 2203 resizeFunc();
2201 // Using Safari/Mac, focus must be kept where it is (#7027) 2204 // Using Safari/Mac, focus must be kept where it is (http://dev.ckeditor.com/ticket/7027)
2202 if ( !( CKEDITOR.env.mac && CKEDITOR.env.webkit ) ) 2205 if ( !( CKEDITOR.env.mac && CKEDITOR.env.webkit ) )
2203 coverElement.focus(); 2206 coverElement.focus();
2204 2207
@@ -2559,7 +2562,7 @@ CKEDITOR.DIALOG_STATE_BUSY = 2;
2559 if ( elementDefinition && elementDefinition.padding !== undefined ) { 2562 if ( elementDefinition && elementDefinition.padding !== undefined ) {
2560 styles.push( 'padding:' + cssLength( elementDefinition.padding ) ); 2563 styles.push( 'padding:' + cssLength( elementDefinition.padding ) );
2561 } 2564 }
2562 // In IE Quirks alignment has to be done on table cells. (#7324) 2565 // In IE Quirks alignment has to be done on table cells. (http://dev.ckeditor.com/ticket/7324)
2563 if ( CKEDITOR.env.ie && CKEDITOR.env.quirks && children[ i ].align ) { 2566 if ( CKEDITOR.env.ie && CKEDITOR.env.quirks && children[ i ].align ) {
2564 styles.push( 'text-align:' + children[ i ].align ); 2567 styles.push( 'text-align:' + children[ i ].align );
2565 } 2568 }
@@ -2618,7 +2621,7 @@ CKEDITOR.DIALOG_STATE_BUSY = 2;
2618 html.push( 'height:100%;' ); 2621 html.push( 'height:100%;' );
2619 html.push( 'width:' + cssLength( width || '100%' ), ';' ); 2622 html.push( 'width:' + cssLength( width || '100%' ), ';' );
2620 2623
2621 // (#10123) Temp fix for dialog broken layout in latest webkit. 2624 // (http://dev.ckeditor.com/ticket/10123) Temp fix for dialog broken layout in latest webkit.
2622 if ( CKEDITOR.env.webkit ) 2625 if ( CKEDITOR.env.webkit )
2623 html.push( 'float:none;' ); 2626 html.push( 'float:none;' );
2624 2627
@@ -2638,7 +2641,7 @@ CKEDITOR.DIALOG_STATE_BUSY = 2;
2638 styles.push( 'height:' + Math.floor( 100 / childHtmlList.length ) + '%' ); 2641 styles.push( 'height:' + Math.floor( 100 / childHtmlList.length ) + '%' );
2639 if ( elementDefinition && elementDefinition.padding !== undefined ) 2642 if ( elementDefinition && elementDefinition.padding !== undefined )
2640 styles.push( 'padding:' + cssLength( elementDefinition.padding ) ); 2643 styles.push( 'padding:' + cssLength( elementDefinition.padding ) );
2641 // In IE Quirks alignment has to be done on table cells. (#7324) 2644 // In IE Quirks alignment has to be done on table cells. (http://dev.ckeditor.com/ticket/7324)
2642 if ( CKEDITOR.env.ie && CKEDITOR.env.quirks && children[ i ].align ) 2645 if ( CKEDITOR.env.ie && CKEDITOR.env.quirks && children[ i ].align )
2643 styles.push( 'text-align:' + children[ i ].align ); 2646 styles.push( 'text-align:' + children[ i ].align );
2644 if ( styles.length > 0 ) 2647 if ( styles.length > 0 )
@@ -2983,7 +2986,7 @@ CKEDITOR.DIALOG_STATE_BUSY = 2;
2983 /** 2986 /**
2984 * Generic dialog command. It opens a specific dialog when executed. 2987 * Generic dialog command. It opens a specific dialog when executed.
2985 * 2988 *
2986 * // Register the "link" command, which opens the "link" dialog. 2989 * // Register the "link" command which opens the "link" dialog.
2987 * editor.addCommand( 'link', new CKEDITOR.dialogCommand( 'link' ) ); 2990 * editor.addCommand( 'link', new CKEDITOR.dialogCommand( 'link' ) );
2988 * 2991 *
2989 * @class 2992 * @class
@@ -2992,6 +2995,10 @@ CKEDITOR.DIALOG_STATE_BUSY = 2;
2992 * @param {String} dialogName The name of the dialog to open when executing 2995 * @param {String} dialogName The name of the dialog to open when executing
2993 * this command. 2996 * this command.
2994 * @param {Object} [ext] Additional command definition's properties. 2997 * @param {Object} [ext] Additional command definition's properties.
2998 * @param {String} [ext.tabId] You can provide additional property (`tabId`) if you wish to open the dialog on a specific tabId.
2999 *
3000 * // Open the dialog on the 'keystroke' tabId.
3001 * editor.addCommand( 'keystroke', new CKEDITOR.dialogCommand( 'a11yHelp', { tabId: 'keystroke' } ) );
2995 */ 3002 */
2996 CKEDITOR.dialogCommand = function( dialogName, ext ) { 3003 CKEDITOR.dialogCommand = function( dialogName, ext ) {
2997 this.dialogName = dialogName; 3004 this.dialogName = dialogName;
@@ -3000,7 +3007,13 @@ CKEDITOR.DIALOG_STATE_BUSY = 2;
3000 3007
3001 CKEDITOR.dialogCommand.prototype = { 3008 CKEDITOR.dialogCommand.prototype = {
3002 exec: function( editor ) { 3009 exec: function( editor ) {
3003 editor.openDialog( this.dialogName ); 3010 var tabId = this.tabId;
3011 editor.openDialog( this.dialogName, function( dialog ) {
3012 // Select different tab if it's provided (#830).
3013 if ( tabId ) {
3014 dialog.selectPage( tabId );
3015 }
3016 } );
3004 }, 3017 },
3005 3018
3006 // Dialog commands just open a dialog ui, thus require no undo logic, 3019 // Dialog commands just open a dialog ui, thus require no undo logic,
diff --git a/sources/plugins/dialog/samples/assets/my_dialog.js b/sources/plugins/dialog/samples/assets/my_dialog.js
index cf9185e..6239dea 100644
--- a/sources/plugins/dialog/samples/assets/my_dialog.js
+++ b/sources/plugins/dialog/samples/assets/my_dialog.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/dialog/samples/dialog.html b/sources/plugins/dialog/samples/dialog.html
index 7fda2bb..0f22a1a 100644
--- a/sources/plugins/dialog/samples/dialog.html
+++ b/sources/plugins/dialog/samples/dialog.html
@@ -1,6 +1,6 @@
1<!DOCTYPE html> 1<!DOCTYPE html>
2<!-- 2<!--
3Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 3Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
4For licensing, see LICENSE.md or http://ckeditor.com/license 4For licensing, see LICENSE.md or http://ckeditor.com/license
5--> 5-->
6<html> 6<html>
@@ -182,7 +182,7 @@ For licensing, see LICENSE.md or http://ckeditor.com/license
182 CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a> 182 CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a>
183 </p> 183 </p>
184 <p id="copy"> 184 <p id="copy">
185 Copyright &copy; 2003-2016, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico 185 Copyright &copy; 2003-2017, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico
186 Knabben. All rights reserved. 186 Knabben. All rights reserved.
187 </p> 187 </p>
188 </div> 188 </div>
diff --git a/sources/plugins/dialogadvtab/plugin.js b/sources/plugins/dialogadvtab/plugin.js
index 2d4bcab..460b534 100644
--- a/sources/plugins/dialogadvtab/plugin.js
+++ b/sources/plugins/dialogadvtab/plugin.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/dialogui/plugin.js b/sources/plugins/dialogui/plugin.js
index 03fe753..ab36791 100644
--- a/sources/plugins/dialogui/plugin.js
+++ b/sources/plugins/dialogui/plugin.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -72,7 +72,7 @@ CKEDITOR.plugins.add( 'dialogui', {
72 if ( !this._.domOnChangeRegistered ) { 72 if ( !this._.domOnChangeRegistered ) {
73 dialog.on( 'load', function() { 73 dialog.on( 'load', function() {
74 this.getInputElement().on( 'change', function() { 74 this.getInputElement().on( 'change', function() {
75 // Make sure 'onchange' doesn't get fired after dialog closed. (#5719) 75 // Make sure 'onchange' doesn't get fired after dialog closed. (http://dev.ckeditor.com/ticket/5719)
76 if ( !dialog.parts.dialog.isVisible() ) 76 if ( !dialog.parts.dialog.isVisible() )
77 return; 77 return;
78 78
@@ -240,7 +240,7 @@ CKEDITOR.plugins.add( 'dialogui', {
240 keyPressedOnMe = true; 240 keyPressedOnMe = true;
241 } ); 241 } );
242 242
243 // Lower the priority this 'keyup' since 'ok' will close the dialog.(#3749) 243 // Lower the priority this 'keyup' since 'ok' will close the dialog.(http://dev.ckeditor.com/ticket/3749)
244 me.getInputElement().on( 'keyup', function( evt ) { 244 me.getInputElement().on( 'keyup', function( evt ) {
245 if ( evt.data.getKeystroke() == 13 && keyPressedOnMe ) { 245 if ( evt.data.getKeystroke() == 13 && keyPressedOnMe ) {
246 dialog.getButton( 'ok' ) && setTimeout( function() { 246 dialog.getButton( 'ok' ) && setTimeout( function() {
@@ -472,7 +472,7 @@ CKEDITOR.plugins.add( 'dialogui', {
472 if ( typeof inputDefinition.inputStyle != 'undefined' ) 472 if ( typeof inputDefinition.inputStyle != 'undefined' )
473 inputDefinition.style = inputDefinition.inputStyle; 473 inputDefinition.style = inputDefinition.inputStyle;
474 474
475 // Make inputs of radio type focusable (#10866). 475 // Make inputs of radio type focusable (http://dev.ckeditor.com/ticket/10866).
476 inputDefinition.keyboardFocusable = true; 476 inputDefinition.keyboardFocusable = true;
477 477
478 children.push( new CKEDITOR.ui.dialog.uiElement( dialog, inputDefinition, inputHtml, 'input', null, inputAttributes ) ); 478 children.push( new CKEDITOR.ui.dialog.uiElement( dialog, inputDefinition, inputHtml, 'input', null, inputAttributes ) );
@@ -537,7 +537,7 @@ CKEDITOR.plugins.add( 'dialogui', {
537 ( function() { 537 ( function() {
538 element.on( 'click', function( evt ) { 538 element.on( 'click', function( evt ) {
539 me.click(); 539 me.click();
540 // #9958 540 // http://dev.ckeditor.com/ticket/9958
541 evt.data.preventDefault(); 541 evt.data.preventDefault();
542 } ); 542 } );
543 543
@@ -686,7 +686,7 @@ CKEDITOR.plugins.add( 'dialogui', {
686 ' src="javascript:void(' 686 ' src="javascript:void('
687 ]; 687 ];
688 688
689 // Support for custom document.domain on IE. (#10165) 689 // Support for custom document.domain on IE. (http://dev.ckeditor.com/ticket/10165)
690 html.push( CKEDITOR.env.ie ? 690 html.push( CKEDITOR.env.ie ?
691 '(function(){' + encodeURIComponent( 691 '(function(){' + encodeURIComponent(
692 'document.open();' + 692 'document.open();' +
@@ -1423,7 +1423,7 @@ CKEDITOR.plugins.add( 'dialogui', {
1423 '<label id="', _.labelId, '" for="', inputId, '" style="display:none">', 1423 '<label id="', _.labelId, '" for="', inputId, '" style="display:none">',
1424 CKEDITOR.tools.htmlEncode( elementDefinition.label ), 1424 CKEDITOR.tools.htmlEncode( elementDefinition.label ),
1425 '</label>', 1425 '</label>',
1426 // Set width to make sure that input is not clipped by the iframe (#11253). 1426 // Set width to make sure that input is not clipped by the iframe (http://dev.ckeditor.com/ticket/11253).
1427 '<input style="width:100%" id="', inputId, '" aria-labelledby="', _.labelId, '" type="file" name="', 1427 '<input style="width:100%" id="', inputId, '" aria-labelledby="', _.labelId, '" type="file" name="',
1428 CKEDITOR.tools.htmlEncode( elementDefinition.id || 'cke_upload' ), 1428 CKEDITOR.tools.htmlEncode( elementDefinition.id || 'cke_upload' ),
1429 '" size="', 1429 '" size="',
@@ -1446,7 +1446,7 @@ CKEDITOR.plugins.add( 'dialogui', {
1446 buttons[ i ].enable(); 1446 buttons[ i ].enable();
1447 } 1447 }
1448 1448
1449 // #3465: Wait for the browser to finish rendering the dialog first. 1449 // http://dev.ckeditor.com/ticket/3465: Wait for the browser to finish rendering the dialog first.
1450 if ( CKEDITOR.env.gecko ) 1450 if ( CKEDITOR.env.gecko )
1451 setTimeout( generateFormField, 500 ); 1451 setTimeout( generateFormField, 500 );
1452 else 1452 else
diff --git a/sources/plugins/elementspath/lang/af.js b/sources/plugins/elementspath/lang/af.js
index 7d83e85..c07fa39 100644
--- a/sources/plugins/elementspath/lang/af.js
+++ b/sources/plugins/elementspath/lang/af.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'elementspath', 'af', { 5CKEDITOR.plugins.setLang( 'elementspath', 'af', {
diff --git a/sources/plugins/elementspath/lang/ar.js b/sources/plugins/elementspath/lang/ar.js
index f00047c..fa0147c 100644
--- a/sources/plugins/elementspath/lang/ar.js
+++ b/sources/plugins/elementspath/lang/ar.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'elementspath', 'ar', { 5CKEDITOR.plugins.setLang( 'elementspath', 'ar', {
diff --git a/sources/plugins/elementspath/lang/az.js b/sources/plugins/elementspath/lang/az.js
new file mode 100644
index 0000000..c344c1e
--- /dev/null
+++ b/sources/plugins/elementspath/lang/az.js
@@ -0,0 +1,8 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'elementspath', 'az', {
6 eleLabel: 'Elementin izləri',
7 eleTitle: '%1 element'
8} );
diff --git a/sources/plugins/elementspath/lang/bg.js b/sources/plugins/elementspath/lang/bg.js
index 5631407..07b990b 100644
--- a/sources/plugins/elementspath/lang/bg.js
+++ b/sources/plugins/elementspath/lang/bg.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'elementspath', 'bg', { 5CKEDITOR.plugins.setLang( 'elementspath', 'bg', {
diff --git a/sources/plugins/elementspath/lang/bn.js b/sources/plugins/elementspath/lang/bn.js
index a332dca..493caad 100644
--- a/sources/plugins/elementspath/lang/bn.js
+++ b/sources/plugins/elementspath/lang/bn.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'elementspath', 'bn', { 5CKEDITOR.plugins.setLang( 'elementspath', 'bn', {
diff --git a/sources/plugins/elementspath/lang/bs.js b/sources/plugins/elementspath/lang/bs.js
index 6fc622a..f432973 100644
--- a/sources/plugins/elementspath/lang/bs.js
+++ b/sources/plugins/elementspath/lang/bs.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'elementspath', 'bs', { 5CKEDITOR.plugins.setLang( 'elementspath', 'bs', {
diff --git a/sources/plugins/elementspath/lang/ca.js b/sources/plugins/elementspath/lang/ca.js
index 4f964cf..d9573c2 100644
--- a/sources/plugins/elementspath/lang/ca.js
+++ b/sources/plugins/elementspath/lang/ca.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'elementspath', 'ca', { 5CKEDITOR.plugins.setLang( 'elementspath', 'ca', {
diff --git a/sources/plugins/elementspath/lang/cs.js b/sources/plugins/elementspath/lang/cs.js
index da06354..427e5bf 100644
--- a/sources/plugins/elementspath/lang/cs.js
+++ b/sources/plugins/elementspath/lang/cs.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'elementspath', 'cs', { 5CKEDITOR.plugins.setLang( 'elementspath', 'cs', {
diff --git a/sources/plugins/elementspath/lang/cy.js b/sources/plugins/elementspath/lang/cy.js
index 05f5885..5c9c77d 100644
--- a/sources/plugins/elementspath/lang/cy.js
+++ b/sources/plugins/elementspath/lang/cy.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'elementspath', 'cy', { 5CKEDITOR.plugins.setLang( 'elementspath', 'cy', {
diff --git a/sources/plugins/elementspath/lang/da.js b/sources/plugins/elementspath/lang/da.js
index 8c68da7..3cd404e 100644
--- a/sources/plugins/elementspath/lang/da.js
+++ b/sources/plugins/elementspath/lang/da.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'elementspath', 'da', { 5CKEDITOR.plugins.setLang( 'elementspath', 'da', {
diff --git a/sources/plugins/elementspath/lang/de-ch.js b/sources/plugins/elementspath/lang/de-ch.js
index dc440b1..ad13b78 100644
--- a/sources/plugins/elementspath/lang/de-ch.js
+++ b/sources/plugins/elementspath/lang/de-ch.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'elementspath', 'de-ch', { 5CKEDITOR.plugins.setLang( 'elementspath', 'de-ch', {
diff --git a/sources/plugins/elementspath/lang/de.js b/sources/plugins/elementspath/lang/de.js
index 0c898ef..5072d3b 100644
--- a/sources/plugins/elementspath/lang/de.js
+++ b/sources/plugins/elementspath/lang/de.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'elementspath', 'de', { 5CKEDITOR.plugins.setLang( 'elementspath', 'de', {
diff --git a/sources/plugins/elementspath/lang/el.js b/sources/plugins/elementspath/lang/el.js
index 5106bd8..00a4812 100644
--- a/sources/plugins/elementspath/lang/el.js
+++ b/sources/plugins/elementspath/lang/el.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'elementspath', 'el', { 5CKEDITOR.plugins.setLang( 'elementspath', 'el', {
diff --git a/sources/plugins/elementspath/lang/en-au.js b/sources/plugins/elementspath/lang/en-au.js
index fc9a3aa..60a838a 100644
--- a/sources/plugins/elementspath/lang/en-au.js
+++ b/sources/plugins/elementspath/lang/en-au.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'elementspath', 'en-au', { 5CKEDITOR.plugins.setLang( 'elementspath', 'en-au', {
diff --git a/sources/plugins/elementspath/lang/en-ca.js b/sources/plugins/elementspath/lang/en-ca.js
index 894d985..8acb5c4 100644
--- a/sources/plugins/elementspath/lang/en-ca.js
+++ b/sources/plugins/elementspath/lang/en-ca.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'elementspath', 'en-ca', { 5CKEDITOR.plugins.setLang( 'elementspath', 'en-ca', {
diff --git a/sources/plugins/elementspath/lang/en-gb.js b/sources/plugins/elementspath/lang/en-gb.js
index f172fc0..86fb78e 100644
--- a/sources/plugins/elementspath/lang/en-gb.js
+++ b/sources/plugins/elementspath/lang/en-gb.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'elementspath', 'en-gb', { 5CKEDITOR.plugins.setLang( 'elementspath', 'en-gb', {
diff --git a/sources/plugins/elementspath/lang/en.js b/sources/plugins/elementspath/lang/en.js
index 135c895..96feac7 100644
--- a/sources/plugins/elementspath/lang/en.js
+++ b/sources/plugins/elementspath/lang/en.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'elementspath', 'en', { 5CKEDITOR.plugins.setLang( 'elementspath', 'en', {
diff --git a/sources/plugins/elementspath/lang/eo.js b/sources/plugins/elementspath/lang/eo.js
index 5df75e9..20e0320 100644
--- a/sources/plugins/elementspath/lang/eo.js
+++ b/sources/plugins/elementspath/lang/eo.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'elementspath', 'eo', { 5CKEDITOR.plugins.setLang( 'elementspath', 'eo', {
diff --git a/sources/plugins/elementspath/lang/es-mx.js b/sources/plugins/elementspath/lang/es-mx.js
new file mode 100644
index 0000000..625d951
--- /dev/null
+++ b/sources/plugins/elementspath/lang/es-mx.js
@@ -0,0 +1,8 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'elementspath', 'es-mx', {
6 eleLabel: 'Ruta de los elementos',
7 eleTitle: '%1 elemento'
8} );
diff --git a/sources/plugins/elementspath/lang/es.js b/sources/plugins/elementspath/lang/es.js
index 3953de4..815a18d 100644
--- a/sources/plugins/elementspath/lang/es.js
+++ b/sources/plugins/elementspath/lang/es.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'elementspath', 'es', { 5CKEDITOR.plugins.setLang( 'elementspath', 'es', {
diff --git a/sources/plugins/elementspath/lang/et.js b/sources/plugins/elementspath/lang/et.js
index be7f786..ab62d21 100644
--- a/sources/plugins/elementspath/lang/et.js
+++ b/sources/plugins/elementspath/lang/et.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'elementspath', 'et', { 5CKEDITOR.plugins.setLang( 'elementspath', 'et', {
diff --git a/sources/plugins/elementspath/lang/eu.js b/sources/plugins/elementspath/lang/eu.js
index 06a7041..f3d0bb9 100644
--- a/sources/plugins/elementspath/lang/eu.js
+++ b/sources/plugins/elementspath/lang/eu.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'elementspath', 'eu', { 5CKEDITOR.plugins.setLang( 'elementspath', 'eu', {
diff --git a/sources/plugins/elementspath/lang/fa.js b/sources/plugins/elementspath/lang/fa.js
index 72b4b11..faeb18e 100644
--- a/sources/plugins/elementspath/lang/fa.js
+++ b/sources/plugins/elementspath/lang/fa.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'elementspath', 'fa', { 5CKEDITOR.plugins.setLang( 'elementspath', 'fa', {
diff --git a/sources/plugins/elementspath/lang/fi.js b/sources/plugins/elementspath/lang/fi.js
index 5a175b5..5f975cf 100644
--- a/sources/plugins/elementspath/lang/fi.js
+++ b/sources/plugins/elementspath/lang/fi.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'elementspath', 'fi', { 5CKEDITOR.plugins.setLang( 'elementspath', 'fi', {
diff --git a/sources/plugins/elementspath/lang/fo.js b/sources/plugins/elementspath/lang/fo.js
index a9feb77..0935eb9 100644
--- a/sources/plugins/elementspath/lang/fo.js
+++ b/sources/plugins/elementspath/lang/fo.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'elementspath', 'fo', { 5CKEDITOR.plugins.setLang( 'elementspath', 'fo', {
diff --git a/sources/plugins/elementspath/lang/fr-ca.js b/sources/plugins/elementspath/lang/fr-ca.js
index 0f3d209..0b8796c 100644
--- a/sources/plugins/elementspath/lang/fr-ca.js
+++ b/sources/plugins/elementspath/lang/fr-ca.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'elementspath', 'fr-ca', { 5CKEDITOR.plugins.setLang( 'elementspath', 'fr-ca', {
diff --git a/sources/plugins/elementspath/lang/fr.js b/sources/plugins/elementspath/lang/fr.js
index 8cd9b1a..78488bb 100644
--- a/sources/plugins/elementspath/lang/fr.js
+++ b/sources/plugins/elementspath/lang/fr.js
@@ -1,8 +1,8 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'elementspath', 'fr', { 5CKEDITOR.plugins.setLang( 'elementspath', 'fr', {
6 eleLabel: 'Elements path', 6 eleLabel: 'Chemin des éléments',
7 eleTitle: '%1 léments' 7 eleTitle: 'lément %1'
8} ); 8} );
diff --git a/sources/plugins/elementspath/lang/gl.js b/sources/plugins/elementspath/lang/gl.js
index 827325b..7dfc457 100644
--- a/sources/plugins/elementspath/lang/gl.js
+++ b/sources/plugins/elementspath/lang/gl.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'elementspath', 'gl', { 5CKEDITOR.plugins.setLang( 'elementspath', 'gl', {
diff --git a/sources/plugins/elementspath/lang/gu.js b/sources/plugins/elementspath/lang/gu.js
index ffdfb3d..d6f4f40 100644
--- a/sources/plugins/elementspath/lang/gu.js
+++ b/sources/plugins/elementspath/lang/gu.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'elementspath', 'gu', { 5CKEDITOR.plugins.setLang( 'elementspath', 'gu', {
diff --git a/sources/plugins/elementspath/lang/he.js b/sources/plugins/elementspath/lang/he.js
index 19ec76e..3e2773f 100644
--- a/sources/plugins/elementspath/lang/he.js
+++ b/sources/plugins/elementspath/lang/he.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'elementspath', 'he', { 5CKEDITOR.plugins.setLang( 'elementspath', 'he', {
diff --git a/sources/plugins/elementspath/lang/hi.js b/sources/plugins/elementspath/lang/hi.js
index 6f89d6d..3d514f2 100644
--- a/sources/plugins/elementspath/lang/hi.js
+++ b/sources/plugins/elementspath/lang/hi.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'elementspath', 'hi', { 5CKEDITOR.plugins.setLang( 'elementspath', 'hi', {
diff --git a/sources/plugins/elementspath/lang/hr.js b/sources/plugins/elementspath/lang/hr.js
index 6d07ae5..004182b 100644
--- a/sources/plugins/elementspath/lang/hr.js
+++ b/sources/plugins/elementspath/lang/hr.js
@@ -1,8 +1,8 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'elementspath', 'hr', { 5CKEDITOR.plugins.setLang( 'elementspath', 'hr', {
6 eleLabel: 'Putanja elemenata', 6 eleLabel: 'Putanje elemenata',
7 eleTitle: '%1 element' 7 eleTitle: '%1 element'
8} ); 8} );
diff --git a/sources/plugins/elementspath/lang/hu.js b/sources/plugins/elementspath/lang/hu.js
index 62152ce..23701f2 100644
--- a/sources/plugins/elementspath/lang/hu.js
+++ b/sources/plugins/elementspath/lang/hu.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'elementspath', 'hu', { 5CKEDITOR.plugins.setLang( 'elementspath', 'hu', {
diff --git a/sources/plugins/elementspath/lang/is.js b/sources/plugins/elementspath/lang/is.js
index ef8abad..b5711de 100644
--- a/sources/plugins/elementspath/lang/is.js
+++ b/sources/plugins/elementspath/lang/is.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'elementspath', 'is', { 5CKEDITOR.plugins.setLang( 'elementspath', 'is', {
diff --git a/sources/plugins/elementspath/lang/it.js b/sources/plugins/elementspath/lang/it.js
index 966ae05..2e3ed4d 100644
--- a/sources/plugins/elementspath/lang/it.js
+++ b/sources/plugins/elementspath/lang/it.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'elementspath', 'it', { 5CKEDITOR.plugins.setLang( 'elementspath', 'it', {
diff --git a/sources/plugins/elementspath/lang/ja.js b/sources/plugins/elementspath/lang/ja.js
index 60fc4cd..6fba524 100644
--- a/sources/plugins/elementspath/lang/ja.js
+++ b/sources/plugins/elementspath/lang/ja.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'elementspath', 'ja', { 5CKEDITOR.plugins.setLang( 'elementspath', 'ja', {
diff --git a/sources/plugins/elementspath/lang/ka.js b/sources/plugins/elementspath/lang/ka.js
index 901f95f..9923902 100644
--- a/sources/plugins/elementspath/lang/ka.js
+++ b/sources/plugins/elementspath/lang/ka.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'elementspath', 'ka', { 5CKEDITOR.plugins.setLang( 'elementspath', 'ka', {
diff --git a/sources/plugins/elementspath/lang/km.js b/sources/plugins/elementspath/lang/km.js
index d8cf78c..2fc661d 100644
--- a/sources/plugins/elementspath/lang/km.js
+++ b/sources/plugins/elementspath/lang/km.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'elementspath', 'km', { 5CKEDITOR.plugins.setLang( 'elementspath', 'km', {
diff --git a/sources/plugins/elementspath/lang/ko.js b/sources/plugins/elementspath/lang/ko.js
index 77d399f..843a2de 100644
--- a/sources/plugins/elementspath/lang/ko.js
+++ b/sources/plugins/elementspath/lang/ko.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'elementspath', 'ko', { 5CKEDITOR.plugins.setLang( 'elementspath', 'ko', {
diff --git a/sources/plugins/elementspath/lang/ku.js b/sources/plugins/elementspath/lang/ku.js
index 7461fdf..f425c90 100644
--- a/sources/plugins/elementspath/lang/ku.js
+++ b/sources/plugins/elementspath/lang/ku.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'elementspath', 'ku', { 5CKEDITOR.plugins.setLang( 'elementspath', 'ku', {
diff --git a/sources/plugins/elementspath/lang/lt.js b/sources/plugins/elementspath/lang/lt.js
index 266a8e6..14c5345 100644
--- a/sources/plugins/elementspath/lang/lt.js
+++ b/sources/plugins/elementspath/lang/lt.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'elementspath', 'lt', { 5CKEDITOR.plugins.setLang( 'elementspath', 'lt', {
diff --git a/sources/plugins/elementspath/lang/lv.js b/sources/plugins/elementspath/lang/lv.js
index e4b5681..7459ce8 100644
--- a/sources/plugins/elementspath/lang/lv.js
+++ b/sources/plugins/elementspath/lang/lv.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'elementspath', 'lv', { 5CKEDITOR.plugins.setLang( 'elementspath', 'lv', {
diff --git a/sources/plugins/elementspath/lang/mk.js b/sources/plugins/elementspath/lang/mk.js
index 6bf992b..3fb1549 100644
--- a/sources/plugins/elementspath/lang/mk.js
+++ b/sources/plugins/elementspath/lang/mk.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'elementspath', 'mk', { 5CKEDITOR.plugins.setLang( 'elementspath', 'mk', {
diff --git a/sources/plugins/elementspath/lang/mn.js b/sources/plugins/elementspath/lang/mn.js
index 95ff819..e3e9285 100644
--- a/sources/plugins/elementspath/lang/mn.js
+++ b/sources/plugins/elementspath/lang/mn.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'elementspath', 'mn', { 5CKEDITOR.plugins.setLang( 'elementspath', 'mn', {
diff --git a/sources/plugins/elementspath/lang/ms.js b/sources/plugins/elementspath/lang/ms.js
index 9220621..143b4cd 100644
--- a/sources/plugins/elementspath/lang/ms.js
+++ b/sources/plugins/elementspath/lang/ms.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'elementspath', 'ms', { 5CKEDITOR.plugins.setLang( 'elementspath', 'ms', {
diff --git a/sources/plugins/elementspath/lang/nb.js b/sources/plugins/elementspath/lang/nb.js
index 6972c02..d797354 100644
--- a/sources/plugins/elementspath/lang/nb.js
+++ b/sources/plugins/elementspath/lang/nb.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'elementspath', 'nb', { 5CKEDITOR.plugins.setLang( 'elementspath', 'nb', {
diff --git a/sources/plugins/elementspath/lang/nl.js b/sources/plugins/elementspath/lang/nl.js
index 559d3b6..14a3585 100644
--- a/sources/plugins/elementspath/lang/nl.js
+++ b/sources/plugins/elementspath/lang/nl.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'elementspath', 'nl', { 5CKEDITOR.plugins.setLang( 'elementspath', 'nl', {
diff --git a/sources/plugins/elementspath/lang/no.js b/sources/plugins/elementspath/lang/no.js
index a3e2a84..64d05f5 100644
--- a/sources/plugins/elementspath/lang/no.js
+++ b/sources/plugins/elementspath/lang/no.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'elementspath', 'no', { 5CKEDITOR.plugins.setLang( 'elementspath', 'no', {
diff --git a/sources/plugins/elementspath/lang/oc.js b/sources/plugins/elementspath/lang/oc.js
new file mode 100644
index 0000000..04c1b30
--- /dev/null
+++ b/sources/plugins/elementspath/lang/oc.js
@@ -0,0 +1,8 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'elementspath', 'oc', {
6 eleLabel: 'Camin dels elements',
7 eleTitle: 'Element %1'
8} );
diff --git a/sources/plugins/elementspath/lang/pl.js b/sources/plugins/elementspath/lang/pl.js
index f477bd1..082224d 100644
--- a/sources/plugins/elementspath/lang/pl.js
+++ b/sources/plugins/elementspath/lang/pl.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'elementspath', 'pl', { 5CKEDITOR.plugins.setLang( 'elementspath', 'pl', {
diff --git a/sources/plugins/elementspath/lang/pt-br.js b/sources/plugins/elementspath/lang/pt-br.js
index 0cccfea..ec265b6 100644
--- a/sources/plugins/elementspath/lang/pt-br.js
+++ b/sources/plugins/elementspath/lang/pt-br.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'elementspath', 'pt-br', { 5CKEDITOR.plugins.setLang( 'elementspath', 'pt-br', {
diff --git a/sources/plugins/elementspath/lang/pt.js b/sources/plugins/elementspath/lang/pt.js
index 6b79d0f..5eed642 100644
--- a/sources/plugins/elementspath/lang/pt.js
+++ b/sources/plugins/elementspath/lang/pt.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'elementspath', 'pt', { 5CKEDITOR.plugins.setLang( 'elementspath', 'pt', {
diff --git a/sources/plugins/elementspath/lang/ro.js b/sources/plugins/elementspath/lang/ro.js
index c11f4de..bc79113 100644
--- a/sources/plugins/elementspath/lang/ro.js
+++ b/sources/plugins/elementspath/lang/ro.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'elementspath', 'ro', { 5CKEDITOR.plugins.setLang( 'elementspath', 'ro', {
diff --git a/sources/plugins/elementspath/lang/ru.js b/sources/plugins/elementspath/lang/ru.js
index 3e1bd71..ce9529e 100644
--- a/sources/plugins/elementspath/lang/ru.js
+++ b/sources/plugins/elementspath/lang/ru.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'elementspath', 'ru', { 5CKEDITOR.plugins.setLang( 'elementspath', 'ru', {
diff --git a/sources/plugins/elementspath/lang/si.js b/sources/plugins/elementspath/lang/si.js
index 8a5c180..ff4e5dc 100644
--- a/sources/plugins/elementspath/lang/si.js
+++ b/sources/plugins/elementspath/lang/si.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'elementspath', 'si', { 5CKEDITOR.plugins.setLang( 'elementspath', 'si', {
diff --git a/sources/plugins/elementspath/lang/sk.js b/sources/plugins/elementspath/lang/sk.js
index f4b82f6..b3eb725 100644
--- a/sources/plugins/elementspath/lang/sk.js
+++ b/sources/plugins/elementspath/lang/sk.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'elementspath', 'sk', { 5CKEDITOR.plugins.setLang( 'elementspath', 'sk', {
diff --git a/sources/plugins/elementspath/lang/sl.js b/sources/plugins/elementspath/lang/sl.js
index 8888344..2d2a1c6 100644
--- a/sources/plugins/elementspath/lang/sl.js
+++ b/sources/plugins/elementspath/lang/sl.js
@@ -1,8 +1,8 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'elementspath', 'sl', { 5CKEDITOR.plugins.setLang( 'elementspath', 'sl', {
6 eleLabel: 'Pot elementov', 6 eleLabel: 'Pot elementov',
7 eleTitle: '%1 element' 7 eleTitle: 'Element %1'
8} ); 8} );
diff --git a/sources/plugins/elementspath/lang/sq.js b/sources/plugins/elementspath/lang/sq.js
index ad0faf3..0018d6f 100644
--- a/sources/plugins/elementspath/lang/sq.js
+++ b/sources/plugins/elementspath/lang/sq.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'elementspath', 'sq', { 5CKEDITOR.plugins.setLang( 'elementspath', 'sq', {
diff --git a/sources/plugins/elementspath/lang/sr-latn.js b/sources/plugins/elementspath/lang/sr-latn.js
index 4558023..65ae9f4 100644
--- a/sources/plugins/elementspath/lang/sr-latn.js
+++ b/sources/plugins/elementspath/lang/sr-latn.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'elementspath', 'sr-latn', { 5CKEDITOR.plugins.setLang( 'elementspath', 'sr-latn', {
diff --git a/sources/plugins/elementspath/lang/sr.js b/sources/plugins/elementspath/lang/sr.js
index b27edf6..80d1ba4 100644
--- a/sources/plugins/elementspath/lang/sr.js
+++ b/sources/plugins/elementspath/lang/sr.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'elementspath', 'sr', { 5CKEDITOR.plugins.setLang( 'elementspath', 'sr', {
diff --git a/sources/plugins/elementspath/lang/sv.js b/sources/plugins/elementspath/lang/sv.js
index bfe4fde..e34dd0e 100644
--- a/sources/plugins/elementspath/lang/sv.js
+++ b/sources/plugins/elementspath/lang/sv.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'elementspath', 'sv', { 5CKEDITOR.plugins.setLang( 'elementspath', 'sv', {
diff --git a/sources/plugins/elementspath/lang/th.js b/sources/plugins/elementspath/lang/th.js
index a57021b..d56fb77 100644
--- a/sources/plugins/elementspath/lang/th.js
+++ b/sources/plugins/elementspath/lang/th.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'elementspath', 'th', { 5CKEDITOR.plugins.setLang( 'elementspath', 'th', {
diff --git a/sources/plugins/elementspath/lang/tr.js b/sources/plugins/elementspath/lang/tr.js
index d0c48bd..e32e4ff 100644
--- a/sources/plugins/elementspath/lang/tr.js
+++ b/sources/plugins/elementspath/lang/tr.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'elementspath', 'tr', { 5CKEDITOR.plugins.setLang( 'elementspath', 'tr', {
diff --git a/sources/plugins/elementspath/lang/tt.js b/sources/plugins/elementspath/lang/tt.js
index ccc908b..63b171c 100644
--- a/sources/plugins/elementspath/lang/tt.js
+++ b/sources/plugins/elementspath/lang/tt.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'elementspath', 'tt', { 5CKEDITOR.plugins.setLang( 'elementspath', 'tt', {
diff --git a/sources/plugins/elementspath/lang/ug.js b/sources/plugins/elementspath/lang/ug.js
index 9d1b2f1..5b66e0f 100644
--- a/sources/plugins/elementspath/lang/ug.js
+++ b/sources/plugins/elementspath/lang/ug.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'elementspath', 'ug', { 5CKEDITOR.plugins.setLang( 'elementspath', 'ug', {
diff --git a/sources/plugins/elementspath/lang/uk.js b/sources/plugins/elementspath/lang/uk.js
index b0eb692..0d247c6 100644
--- a/sources/plugins/elementspath/lang/uk.js
+++ b/sources/plugins/elementspath/lang/uk.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'elementspath', 'uk', { 5CKEDITOR.plugins.setLang( 'elementspath', 'uk', {
diff --git a/sources/plugins/elementspath/lang/vi.js b/sources/plugins/elementspath/lang/vi.js
index d3a938b..5ba86b4 100644
--- a/sources/plugins/elementspath/lang/vi.js
+++ b/sources/plugins/elementspath/lang/vi.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'elementspath', 'vi', { 5CKEDITOR.plugins.setLang( 'elementspath', 'vi', {
diff --git a/sources/plugins/elementspath/lang/zh-cn.js b/sources/plugins/elementspath/lang/zh-cn.js
index 4e7c836..e585d13 100644
--- a/sources/plugins/elementspath/lang/zh-cn.js
+++ b/sources/plugins/elementspath/lang/zh-cn.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'elementspath', 'zh-cn', { 5CKEDITOR.plugins.setLang( 'elementspath', 'zh-cn', {
diff --git a/sources/plugins/elementspath/lang/zh.js b/sources/plugins/elementspath/lang/zh.js
index 4a968da..5031d0f 100644
--- a/sources/plugins/elementspath/lang/zh.js
+++ b/sources/plugins/elementspath/lang/zh.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'elementspath', 'zh', { 5CKEDITOR.plugins.setLang( 'elementspath', 'zh', {
diff --git a/sources/plugins/elementspath/plugin.js b/sources/plugins/elementspath/plugin.js
index fd02d70..f66d7ad 100644
--- a/sources/plugins/elementspath/plugin.js
+++ b/sources/plugins/elementspath/plugin.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -17,7 +17,7 @@
17 var idBase = editor._.elementsPath.idBase; 17 var idBase = editor._.elementsPath.idBase;
18 var element = CKEDITOR.document.getById( idBase + '0' ); 18 var element = CKEDITOR.document.getById( idBase + '0' );
19 19
20 // Make the first button focus accessible for IE. (#3417) 20 // Make the first button focus accessible for IE. (http://dev.ckeditor.com/ticket/3417)
21 // Adobe AIR instead need while of delay. 21 // Adobe AIR instead need while of delay.
22 element && element.focus( CKEDITOR.env.ie || CKEDITOR.env.air ); 22 element && element.focus( CKEDITOR.env.ie || CKEDITOR.env.air );
23 } 23 }
@@ -55,7 +55,7 @@
55 55
56 CKEDITOR.plugins.add( 'elementspath', { 56 CKEDITOR.plugins.add( 'elementspath', {
57 // jscs:disable maximumLineLength 57 // jscs:disable maximumLineLength
58 lang: 'af,ar,bg,bn,bs,ca,cs,cy,da,de,de-ch,el,en,en-au,en-ca,en-gb,eo,es,et,eu,fa,fi,fo,fr,fr-ca,gl,gu,he,hi,hr,hu,is,it,ja,ka,km,ko,ku,lt,lv,mk,mn,ms,nb,nl,no,pl,pt,pt-br,ro,ru,si,sk,sl,sq,sr,sr-latn,sv,th,tr,tt,ug,uk,vi,zh,zh-cn', // %REMOVE_LINE_CORE% 58 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,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', // %REMOVE_LINE_CORE%
59 // jscs:enable maximumLineLength 59 // jscs:enable maximumLineLength
60 init: function( editor ) { 60 init: function( editor ) {
61 editor._.elementsPath = { 61 editor._.elementsPath = {
@@ -91,17 +91,26 @@
91 } ); 91 } );
92 92
93 function onClick( elementIndex ) { 93 function onClick( elementIndex ) {
94 var element = elementsPath.list[ elementIndex ]; 94 var element = elementsPath.list[ elementIndex ],
95 selection;
96
95 if ( element.equals( editor.editable() ) || element.getAttribute( 'contenteditable' ) == 'true' ) { 97 if ( element.equals( editor.editable() ) || element.getAttribute( 'contenteditable' ) == 'true' ) {
96 var range = editor.createRange(); 98 var range = editor.createRange();
97 range.selectNodeContents( element ); 99 range.selectNodeContents( element );
98 range.select(); 100
101 selection = range.select();
99 } else { 102 } else {
100 editor.getSelection().selectElement( element ); 103 selection = editor.getSelection();
104 selection.selectElement( element );
105 }
106
107 // Explicitly fire selectionChange when clicking on an element path button. (http://dev.ckeditor.com/ticket/13548)
108 if ( CKEDITOR.env.ie ) {
109 editor.fire( 'selectionChange', { selection: selection, path: new CKEDITOR.dom.elementPath( element ) } );
101 } 110 }
102 111
103 // It is important to focus() *after* the above selection 112 // It is important to focus() *after* the above selection
104 // manipulation, otherwise Firefox will have troubles. #10119 113 // manipulation, otherwise Firefox will have troubles. http://dev.ckeditor.com/ticket/10119
105 editor.focus(); 114 editor.focus();
106 } 115 }
107 116
@@ -151,7 +160,7 @@
151 filters = elementsPath.filters, 160 filters = elementsPath.filters,
152 isContentEditable = true, 161 isContentEditable = true,
153 162
154 // Use elementPath to consider children of editable only (#11124). 163 // Use elementPath to consider children of editable only (http://dev.ckeditor.com/ticket/11124).
155 elementsChain = editor.elementPath().elements, 164 elementsChain = editor.elementPath().elements,
156 name; 165 name;
157 166
diff --git a/sources/plugins/enterkey/plugin.js b/sources/plugins/enterkey/plugin.js
index 4cbb7bf..e65555f 100644
--- a/sources/plugins/enterkey/plugin.js
+++ b/sources/plugins/enterkey/plugin.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -43,7 +43,7 @@
43 return; 43 return;
44 44
45 // When range is in nested editable, we have to replace range with this one, 45 // When range is in nested editable, we have to replace range with this one,
46 // which have root property set to closest editable, to make auto paragraphing work. (#12162) 46 // which have root property set to closest editable, to make auto paragraphing work. (http://dev.ckeditor.com/ticket/12162)
47 range = replaceRangeWithClosestEditableRoot( range ); 47 range = replaceRangeWithClosestEditableRoot( range );
48 48
49 var doc = range.document; 49 var doc = range.document;
@@ -58,9 +58,9 @@
58 58
59 newBlock; 59 newBlock;
60 60
61 // Exit the list when we're inside an empty list item block. (#5376) 61 // Exit the list when we're inside an empty list item block. (http://dev.ckeditor.com/ticket/5376)
62 if ( atBlockStart && atBlockEnd ) { 62 if ( atBlockStart && atBlockEnd ) {
63 // Exit the list when we're inside an empty list item block. (#5376) 63 // Exit the list when we're inside an empty list item block. (http://dev.ckeditor.com/ticket/5376)
64 if ( block && ( block.is( 'li' ) || block.getParent().is( 'li' ) ) ) { 64 if ( block && ( block.is( 'li' ) || block.getParent().is( 'li' ) ) ) {
65 // Make sure to point to the li when dealing with empty list item. 65 // Make sure to point to the li when dealing with empty list item.
66 if ( !block.is( 'li' ) ) 66 if ( !block.is( 'li' ) )
@@ -293,7 +293,7 @@
293 293
294 var node; 294 var node;
295 295
296 // If this is a block under a list item, split it as well. (#1647) 296 // If this is a block under a list item, split it as well. (http://dev.ckeditor.com/ticket/1647)
297 if ( nextBlock ) { 297 if ( nextBlock ) {
298 node = nextBlock.getParent(); 298 node = nextBlock.getParent();
299 if ( node.is( 'li' ) ) { 299 if ( node.is( 'li' ) ) {
@@ -313,7 +313,7 @@
313 if ( !isStartOfBlock && !isEndOfBlock ) { 313 if ( !isStartOfBlock && !isEndOfBlock ) {
314 // If the next block is an <li> with another list tree as the first 314 // If the next block is an <li> with another list tree as the first
315 // child, we'll need to append a filler (<br>/NBSP) or the list item 315 // child, we'll need to append a filler (<br>/NBSP) or the list item
316 // wouldn't be editable. (#1420) 316 // wouldn't be editable. (http://dev.ckeditor.com/ticket/1420)
317 if ( nextBlock.is( 'li' ) ) { 317 if ( nextBlock.is( 'li' ) ) {
318 var walkerRange = range.clone(); 318 var walkerRange = range.clone();
319 walkerRange.selectNodeContents( nextBlock ); 319 walkerRange.selectNodeContents( nextBlock );
@@ -335,7 +335,7 @@
335 335
336 if ( previousBlock ) { 336 if ( previousBlock ) {
337 // Do not enter this block if it's a header tag, or we are in 337 // Do not enter this block if it's a header tag, or we are in
338 // a Shift+Enter (#77). Create a new block element instead 338 // a Shift+Enter (http://dev.ckeditor.com/ticket/77). Create a new block element instead
339 // (later in the code). 339 // (later in the code).
340 if ( previousBlock.is( 'li' ) || !( headerTagRegex.test( previousBlock.getName() ) || previousBlock.is( 'pre' ) ) ) { 340 if ( previousBlock.is( 'li' ) || !( headerTagRegex.test( previousBlock.getName() ) || previousBlock.is( 'pre' ) ) ) {
341 // Otherwise, duplicate the previous block. 341 // Otherwise, duplicate the previous block.
@@ -346,7 +346,7 @@
346 } 346 }
347 347
348 if ( !newBlock ) { 348 if ( !newBlock ) {
349 // We have already created a new list item. (#6849) 349 // We have already created a new list item. (http://dev.ckeditor.com/ticket/6849)
350 if ( node && node.is( 'li' ) ) 350 if ( node && node.is( 'li' ) )
351 newBlock = node; 351 newBlock = node;
352 else { 352 else {
@@ -384,8 +384,8 @@
384 if ( !newBlock.getParent() ) 384 if ( !newBlock.getParent() )
385 range.insertNode( newBlock ); 385 range.insertNode( newBlock );
386 386
387 // list item start number should not be duplicated (#7330), but we need 387 // list item start number should not be duplicated (http://dev.ckeditor.com/ticket/7330), but we need
388 // to remove the attribute after it's onto the DOM tree because of old IEs (#7581). 388 // to remove the attribute after it's onto the DOM tree because of old IEs (http://dev.ckeditor.com/ticket/7581).
389 newBlock.is( 'li' ) && newBlock.removeAttribute( 'value' ); 389 newBlock.is( 'li' ) && newBlock.removeAttribute( 'value' );
390 390
391 // This is tricky, but to make the new block visible correctly 391 // This is tricky, but to make the new block visible correctly
@@ -453,7 +453,7 @@
453 } else { 453 } else {
454 var lineBreak; 454 var lineBreak;
455 455
456 // IE<8 prefers text node as line-break inside of <pre> (#4711). 456 // IE<8 prefers text node as line-break inside of <pre> (http://dev.ckeditor.com/ticket/4711).
457 if ( startBlockTag == 'pre' && CKEDITOR.env.ie && CKEDITOR.env.version < 8 ) 457 if ( startBlockTag == 'pre' && CKEDITOR.env.ie && CKEDITOR.env.version < 8 )
458 lineBreak = doc.createText( '\r' ); 458 lineBreak = doc.createText( '\r' );
459 else 459 else
@@ -503,7 +503,7 @@
503 function shiftEnter( editor ) { 503 function shiftEnter( editor ) {
504 // On SHIFT+ENTER: 504 // On SHIFT+ENTER:
505 // 1. We want to enforce the mode to be respected, instead 505 // 1. We want to enforce the mode to be respected, instead
506 // of cloning the current block. (#77) 506 // of cloning the current block. (http://dev.ckeditor.com/ticket/77)
507 return enter( editor, editor.activeShiftEnterMode, 1 ); 507 return enter( editor, editor.activeShiftEnterMode, 1 );
508 } 508 }
509 509
@@ -521,7 +521,8 @@
521 // Check path block specialities: 521 // Check path block specialities:
522 // 1. Cannot be a un-splittable element, e.g. table caption; 522 // 1. Cannot be a un-splittable element, e.g. table caption;
523 var path = editor.elementPath(); 523 var path = editor.elementPath();
524 if ( !path.isContextFor( 'p' ) ) { 524
525 if ( path && !path.isContextFor( 'p' ) ) {
525 mode = CKEDITOR.ENTER_BR; 526 mode = CKEDITOR.ENTER_BR;
526 forceMode = 1; 527 forceMode = 1;
527 } 528 }
diff --git a/sources/plugins/enterkey/samples/enterkey.html b/sources/plugins/enterkey/samples/enterkey.html
index 6b78e06..79afee3 100644
--- a/sources/plugins/enterkey/samples/enterkey.html
+++ b/sources/plugins/enterkey/samples/enterkey.html
@@ -1,6 +1,6 @@
1<!DOCTYPE html> 1<!DOCTYPE html>
2<!-- 2<!--
3Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 3Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
4For licensing, see LICENSE.md or http://ckeditor.com/license 4For licensing, see LICENSE.md or http://ckeditor.com/license
5--> 5-->
6<html> 6<html>
@@ -98,7 +98,7 @@ CKEDITOR.replace( '<em>textarea_id</em>', {
98 CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a> 98 CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a>
99 </p> 99 </p>
100 <p id="copy"> 100 <p id="copy">
101 Copyright &copy; 2003-2016, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico 101 Copyright &copy; 2003-2017, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico
102 Knabben. All rights reserved. 102 Knabben. All rights reserved.
103 </p> 103 </p>
104 </div> 104 </div>
diff --git a/sources/plugins/entities/plugin.js b/sources/plugins/entities/plugin.js
index bb80b97..d457ad1 100644
--- a/sources/plugins/entities/plugin.js
+++ b/sources/plugins/entities/plugin.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/fakeobjects/lang/af.js b/sources/plugins/fakeobjects/lang/af.js
index eb71716..835d45b 100644
--- a/sources/plugins/fakeobjects/lang/af.js
+++ b/sources/plugins/fakeobjects/lang/af.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'fakeobjects', 'af', { 5CKEDITOR.plugins.setLang( 'fakeobjects', 'af', {
diff --git a/sources/plugins/fakeobjects/lang/ar.js b/sources/plugins/fakeobjects/lang/ar.js
index c3dec93..44363c9 100644
--- a/sources/plugins/fakeobjects/lang/ar.js
+++ b/sources/plugins/fakeobjects/lang/ar.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'fakeobjects', 'ar', { 5CKEDITOR.plugins.setLang( 'fakeobjects', 'ar', {
diff --git a/sources/plugins/fakeobjects/lang/az.js b/sources/plugins/fakeobjects/lang/az.js
new file mode 100644
index 0000000..01fa87d
--- /dev/null
+++ b/sources/plugins/fakeobjects/lang/az.js
@@ -0,0 +1,11 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'fakeobjects', 'az', {
6 anchor: 'Lövbər',
7 flash: 'Flash animasiya',
8 hiddenfield: 'Gizli xana',
9 iframe: 'IFrame',
10 unknown: 'Tanımamış obyekt'
11} );
diff --git a/sources/plugins/fakeobjects/lang/bg.js b/sources/plugins/fakeobjects/lang/bg.js
index 9d9a317..538cdf1 100644
--- a/sources/plugins/fakeobjects/lang/bg.js
+++ b/sources/plugins/fakeobjects/lang/bg.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'fakeobjects', 'bg', { 5CKEDITOR.plugins.setLang( 'fakeobjects', 'bg', {
diff --git a/sources/plugins/fakeobjects/lang/bn.js b/sources/plugins/fakeobjects/lang/bn.js
index 83e5e2c..70c9ce9 100644
--- a/sources/plugins/fakeobjects/lang/bn.js
+++ b/sources/plugins/fakeobjects/lang/bn.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'fakeobjects', 'bn', { 5CKEDITOR.plugins.setLang( 'fakeobjects', 'bn', {
diff --git a/sources/plugins/fakeobjects/lang/bs.js b/sources/plugins/fakeobjects/lang/bs.js
index 6495f67..4a17242 100644
--- a/sources/plugins/fakeobjects/lang/bs.js
+++ b/sources/plugins/fakeobjects/lang/bs.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'fakeobjects', 'bs', { 5CKEDITOR.plugins.setLang( 'fakeobjects', 'bs', {
diff --git a/sources/plugins/fakeobjects/lang/ca.js b/sources/plugins/fakeobjects/lang/ca.js
index eff05e0..cc09e6c 100644
--- a/sources/plugins/fakeobjects/lang/ca.js
+++ b/sources/plugins/fakeobjects/lang/ca.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'fakeobjects', 'ca', { 5CKEDITOR.plugins.setLang( 'fakeobjects', 'ca', {
diff --git a/sources/plugins/fakeobjects/lang/cs.js b/sources/plugins/fakeobjects/lang/cs.js
index 66706f8..7355f4a 100644
--- a/sources/plugins/fakeobjects/lang/cs.js
+++ b/sources/plugins/fakeobjects/lang/cs.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'fakeobjects', 'cs', { 5CKEDITOR.plugins.setLang( 'fakeobjects', 'cs', {
diff --git a/sources/plugins/fakeobjects/lang/cy.js b/sources/plugins/fakeobjects/lang/cy.js
index f1f359c..8b0ffc9 100644
--- a/sources/plugins/fakeobjects/lang/cy.js
+++ b/sources/plugins/fakeobjects/lang/cy.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'fakeobjects', 'cy', { 5CKEDITOR.plugins.setLang( 'fakeobjects', 'cy', {
diff --git a/sources/plugins/fakeobjects/lang/da.js b/sources/plugins/fakeobjects/lang/da.js
index b9d291c..06a869f 100644
--- a/sources/plugins/fakeobjects/lang/da.js
+++ b/sources/plugins/fakeobjects/lang/da.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'fakeobjects', 'da', { 5CKEDITOR.plugins.setLang( 'fakeobjects', 'da', {
diff --git a/sources/plugins/fakeobjects/lang/de-ch.js b/sources/plugins/fakeobjects/lang/de-ch.js
index 866e26b..068a003 100644
--- a/sources/plugins/fakeobjects/lang/de-ch.js
+++ b/sources/plugins/fakeobjects/lang/de-ch.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'fakeobjects', 'de-ch', { 5CKEDITOR.plugins.setLang( 'fakeobjects', 'de-ch', {
diff --git a/sources/plugins/fakeobjects/lang/de.js b/sources/plugins/fakeobjects/lang/de.js
index 508e5ba..32326cf 100644
--- a/sources/plugins/fakeobjects/lang/de.js
+++ b/sources/plugins/fakeobjects/lang/de.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'fakeobjects', 'de', { 5CKEDITOR.plugins.setLang( 'fakeobjects', 'de', {
diff --git a/sources/plugins/fakeobjects/lang/el.js b/sources/plugins/fakeobjects/lang/el.js
index 46852d8..211c8d4 100644
--- a/sources/plugins/fakeobjects/lang/el.js
+++ b/sources/plugins/fakeobjects/lang/el.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'fakeobjects', 'el', { 5CKEDITOR.plugins.setLang( 'fakeobjects', 'el', {
diff --git a/sources/plugins/fakeobjects/lang/en-au.js b/sources/plugins/fakeobjects/lang/en-au.js
index ec075ff..189e5c8 100644
--- a/sources/plugins/fakeobjects/lang/en-au.js
+++ b/sources/plugins/fakeobjects/lang/en-au.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'fakeobjects', 'en-au', { 5CKEDITOR.plugins.setLang( 'fakeobjects', 'en-au', {
diff --git a/sources/plugins/fakeobjects/lang/en-ca.js b/sources/plugins/fakeobjects/lang/en-ca.js
index 11c5e00..071bc10 100644
--- a/sources/plugins/fakeobjects/lang/en-ca.js
+++ b/sources/plugins/fakeobjects/lang/en-ca.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'fakeobjects', 'en-ca', { 5CKEDITOR.plugins.setLang( 'fakeobjects', 'en-ca', {
diff --git a/sources/plugins/fakeobjects/lang/en-gb.js b/sources/plugins/fakeobjects/lang/en-gb.js
index 4b91eba..e38f16c 100644
--- a/sources/plugins/fakeobjects/lang/en-gb.js
+++ b/sources/plugins/fakeobjects/lang/en-gb.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'fakeobjects', 'en-gb', { 5CKEDITOR.plugins.setLang( 'fakeobjects', 'en-gb', {
diff --git a/sources/plugins/fakeobjects/lang/en.js b/sources/plugins/fakeobjects/lang/en.js
index c86f562..d871231 100644
--- a/sources/plugins/fakeobjects/lang/en.js
+++ b/sources/plugins/fakeobjects/lang/en.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'fakeobjects', 'en', { 5CKEDITOR.plugins.setLang( 'fakeobjects', 'en', {
diff --git a/sources/plugins/fakeobjects/lang/eo.js b/sources/plugins/fakeobjects/lang/eo.js
index 3a9eb96..bbce7f8 100644
--- a/sources/plugins/fakeobjects/lang/eo.js
+++ b/sources/plugins/fakeobjects/lang/eo.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'fakeobjects', 'eo', { 5CKEDITOR.plugins.setLang( 'fakeobjects', 'eo', {
diff --git a/sources/plugins/fakeobjects/lang/es-mx.js b/sources/plugins/fakeobjects/lang/es-mx.js
new file mode 100644
index 0000000..f9e87e7
--- /dev/null
+++ b/sources/plugins/fakeobjects/lang/es-mx.js
@@ -0,0 +1,11 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'fakeobjects', 'es-mx', {
6 anchor: 'Ancla',
7 flash: 'Animación flash',
8 hiddenfield: 'Campo oculto',
9 iframe: 'IFrame',
10 unknown: 'Objeto desconocido'
11} );
diff --git a/sources/plugins/fakeobjects/lang/es.js b/sources/plugins/fakeobjects/lang/es.js
index 9eadf45..46ac72f 100644
--- a/sources/plugins/fakeobjects/lang/es.js
+++ b/sources/plugins/fakeobjects/lang/es.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'fakeobjects', 'es', { 5CKEDITOR.plugins.setLang( 'fakeobjects', 'es', {
diff --git a/sources/plugins/fakeobjects/lang/et.js b/sources/plugins/fakeobjects/lang/et.js
index dc7b354..2c25f43 100644
--- a/sources/plugins/fakeobjects/lang/et.js
+++ b/sources/plugins/fakeobjects/lang/et.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'fakeobjects', 'et', { 5CKEDITOR.plugins.setLang( 'fakeobjects', 'et', {
diff --git a/sources/plugins/fakeobjects/lang/eu.js b/sources/plugins/fakeobjects/lang/eu.js
index 93c9dad..dfc4460 100644
--- a/sources/plugins/fakeobjects/lang/eu.js
+++ b/sources/plugins/fakeobjects/lang/eu.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'fakeobjects', 'eu', { 5CKEDITOR.plugins.setLang( 'fakeobjects', 'eu', {
diff --git a/sources/plugins/fakeobjects/lang/fa.js b/sources/plugins/fakeobjects/lang/fa.js
index bc9f8b5..4104d1f 100644
--- a/sources/plugins/fakeobjects/lang/fa.js
+++ b/sources/plugins/fakeobjects/lang/fa.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'fakeobjects', 'fa', { 5CKEDITOR.plugins.setLang( 'fakeobjects', 'fa', {
diff --git a/sources/plugins/fakeobjects/lang/fi.js b/sources/plugins/fakeobjects/lang/fi.js
index 07e302d..c663093 100644
--- a/sources/plugins/fakeobjects/lang/fi.js
+++ b/sources/plugins/fakeobjects/lang/fi.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'fakeobjects', 'fi', { 5CKEDITOR.plugins.setLang( 'fakeobjects', 'fi', {
diff --git a/sources/plugins/fakeobjects/lang/fo.js b/sources/plugins/fakeobjects/lang/fo.js
index 604d5dc..8b7c2f9 100644
--- a/sources/plugins/fakeobjects/lang/fo.js
+++ b/sources/plugins/fakeobjects/lang/fo.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'fakeobjects', 'fo', { 5CKEDITOR.plugins.setLang( 'fakeobjects', 'fo', {
diff --git a/sources/plugins/fakeobjects/lang/fr-ca.js b/sources/plugins/fakeobjects/lang/fr-ca.js
index b4e6d2f..c281f4f 100644
--- a/sources/plugins/fakeobjects/lang/fr-ca.js
+++ b/sources/plugins/fakeobjects/lang/fr-ca.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'fakeobjects', 'fr-ca', { 5CKEDITOR.plugins.setLang( 'fakeobjects', 'fr-ca', {
diff --git a/sources/plugins/fakeobjects/lang/fr.js b/sources/plugins/fakeobjects/lang/fr.js
index 6ab4497..be306ec 100644
--- a/sources/plugins/fakeobjects/lang/fr.js
+++ b/sources/plugins/fakeobjects/lang/fr.js
@@ -1,11 +1,11 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'fakeobjects', 'fr', { 5CKEDITOR.plugins.setLang( 'fakeobjects', 'fr', {
6 anchor: 'Ancre', 6 anchor: 'Ancre',
7 flash: 'Animation Flash', 7 flash: 'Animation Flash',
8 hiddenfield: 'Champ caché', 8 hiddenfield: 'Champ invisible',
9 iframe: 'IFrame', 9 iframe: 'Cadre de contenu incorporé',
10 unknown: 'Objet inconnu' 10 unknown: 'Objet inconnu'
11} ); 11} );
diff --git a/sources/plugins/fakeobjects/lang/gl.js b/sources/plugins/fakeobjects/lang/gl.js
index 3209234..2c353a4 100644
--- a/sources/plugins/fakeobjects/lang/gl.js
+++ b/sources/plugins/fakeobjects/lang/gl.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'fakeobjects', 'gl', { 5CKEDITOR.plugins.setLang( 'fakeobjects', 'gl', {
diff --git a/sources/plugins/fakeobjects/lang/gu.js b/sources/plugins/fakeobjects/lang/gu.js
index 8d7f364..66fb428 100644
--- a/sources/plugins/fakeobjects/lang/gu.js
+++ b/sources/plugins/fakeobjects/lang/gu.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'fakeobjects', 'gu', { 5CKEDITOR.plugins.setLang( 'fakeobjects', 'gu', {
diff --git a/sources/plugins/fakeobjects/lang/he.js b/sources/plugins/fakeobjects/lang/he.js
index 393ceb1..bc0d472 100644
--- a/sources/plugins/fakeobjects/lang/he.js
+++ b/sources/plugins/fakeobjects/lang/he.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'fakeobjects', 'he', { 5CKEDITOR.plugins.setLang( 'fakeobjects', 'he', {
diff --git a/sources/plugins/fakeobjects/lang/hi.js b/sources/plugins/fakeobjects/lang/hi.js
index c3e6903..e2cc724 100644
--- a/sources/plugins/fakeobjects/lang/hi.js
+++ b/sources/plugins/fakeobjects/lang/hi.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'fakeobjects', 'hi', { 5CKEDITOR.plugins.setLang( 'fakeobjects', 'hi', {
diff --git a/sources/plugins/fakeobjects/lang/hr.js b/sources/plugins/fakeobjects/lang/hr.js
index 8a321a0..11f3574 100644
--- a/sources/plugins/fakeobjects/lang/hr.js
+++ b/sources/plugins/fakeobjects/lang/hr.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'fakeobjects', 'hr', { 5CKEDITOR.plugins.setLang( 'fakeobjects', 'hr', {
diff --git a/sources/plugins/fakeobjects/lang/hu.js b/sources/plugins/fakeobjects/lang/hu.js
index abe5ed7..24cec55 100644
--- a/sources/plugins/fakeobjects/lang/hu.js
+++ b/sources/plugins/fakeobjects/lang/hu.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'fakeobjects', 'hu', { 5CKEDITOR.plugins.setLang( 'fakeobjects', 'hu', {
diff --git a/sources/plugins/fakeobjects/lang/id.js b/sources/plugins/fakeobjects/lang/id.js
index fad6ad1..85d8c14 100644
--- a/sources/plugins/fakeobjects/lang/id.js
+++ b/sources/plugins/fakeobjects/lang/id.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'fakeobjects', 'id', { 5CKEDITOR.plugins.setLang( 'fakeobjects', 'id', {
diff --git a/sources/plugins/fakeobjects/lang/is.js b/sources/plugins/fakeobjects/lang/is.js
index c71602b..40df479 100644
--- a/sources/plugins/fakeobjects/lang/is.js
+++ b/sources/plugins/fakeobjects/lang/is.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'fakeobjects', 'is', { 5CKEDITOR.plugins.setLang( 'fakeobjects', 'is', {
diff --git a/sources/plugins/fakeobjects/lang/it.js b/sources/plugins/fakeobjects/lang/it.js
index ba893e2..8993951 100644
--- a/sources/plugins/fakeobjects/lang/it.js
+++ b/sources/plugins/fakeobjects/lang/it.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'fakeobjects', 'it', { 5CKEDITOR.plugins.setLang( 'fakeobjects', 'it', {
diff --git a/sources/plugins/fakeobjects/lang/ja.js b/sources/plugins/fakeobjects/lang/ja.js
index af24002..db21eeb 100644
--- a/sources/plugins/fakeobjects/lang/ja.js
+++ b/sources/plugins/fakeobjects/lang/ja.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'fakeobjects', 'ja', { 5CKEDITOR.plugins.setLang( 'fakeobjects', 'ja', {
diff --git a/sources/plugins/fakeobjects/lang/ka.js b/sources/plugins/fakeobjects/lang/ka.js
index cc65e9a..3544161 100644
--- a/sources/plugins/fakeobjects/lang/ka.js
+++ b/sources/plugins/fakeobjects/lang/ka.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'fakeobjects', 'ka', { 5CKEDITOR.plugins.setLang( 'fakeobjects', 'ka', {
diff --git a/sources/plugins/fakeobjects/lang/km.js b/sources/plugins/fakeobjects/lang/km.js
index a8c1a1d..54be6d0 100644
--- a/sources/plugins/fakeobjects/lang/km.js
+++ b/sources/plugins/fakeobjects/lang/km.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'fakeobjects', 'km', { 5CKEDITOR.plugins.setLang( 'fakeobjects', 'km', {
diff --git a/sources/plugins/fakeobjects/lang/ko.js b/sources/plugins/fakeobjects/lang/ko.js
index e9f97ac..b5c0593 100644
--- a/sources/plugins/fakeobjects/lang/ko.js
+++ b/sources/plugins/fakeobjects/lang/ko.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'fakeobjects', 'ko', { 5CKEDITOR.plugins.setLang( 'fakeobjects', 'ko', {
diff --git a/sources/plugins/fakeobjects/lang/ku.js b/sources/plugins/fakeobjects/lang/ku.js
index 5ef378b..bbfb9f6 100644
--- a/sources/plugins/fakeobjects/lang/ku.js
+++ b/sources/plugins/fakeobjects/lang/ku.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'fakeobjects', 'ku', { 5CKEDITOR.plugins.setLang( 'fakeobjects', 'ku', {
diff --git a/sources/plugins/fakeobjects/lang/lt.js b/sources/plugins/fakeobjects/lang/lt.js
index 54a6ce6..e14c211 100644
--- a/sources/plugins/fakeobjects/lang/lt.js
+++ b/sources/plugins/fakeobjects/lang/lt.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'fakeobjects', 'lt', { 5CKEDITOR.plugins.setLang( 'fakeobjects', 'lt', {
diff --git a/sources/plugins/fakeobjects/lang/lv.js b/sources/plugins/fakeobjects/lang/lv.js
index 81dbb2d..388e486 100644
--- a/sources/plugins/fakeobjects/lang/lv.js
+++ b/sources/plugins/fakeobjects/lang/lv.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'fakeobjects', 'lv', { 5CKEDITOR.plugins.setLang( 'fakeobjects', 'lv', {
diff --git a/sources/plugins/fakeobjects/lang/mk.js b/sources/plugins/fakeobjects/lang/mk.js
index a6871cc..deacc87 100644
--- a/sources/plugins/fakeobjects/lang/mk.js
+++ b/sources/plugins/fakeobjects/lang/mk.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'fakeobjects', 'mk', { 5CKEDITOR.plugins.setLang( 'fakeobjects', 'mk', {
diff --git a/sources/plugins/fakeobjects/lang/mn.js b/sources/plugins/fakeobjects/lang/mn.js
index a8f6e00..a2857cc 100644
--- a/sources/plugins/fakeobjects/lang/mn.js
+++ b/sources/plugins/fakeobjects/lang/mn.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'fakeobjects', 'mn', { 5CKEDITOR.plugins.setLang( 'fakeobjects', 'mn', {
diff --git a/sources/plugins/fakeobjects/lang/ms.js b/sources/plugins/fakeobjects/lang/ms.js
index 4008746..7325f14 100644
--- a/sources/plugins/fakeobjects/lang/ms.js
+++ b/sources/plugins/fakeobjects/lang/ms.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'fakeobjects', 'ms', { 5CKEDITOR.plugins.setLang( 'fakeobjects', 'ms', {
diff --git a/sources/plugins/fakeobjects/lang/nb.js b/sources/plugins/fakeobjects/lang/nb.js
index 8d1cb97..b6a6527 100644
--- a/sources/plugins/fakeobjects/lang/nb.js
+++ b/sources/plugins/fakeobjects/lang/nb.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'fakeobjects', 'nb', { 5CKEDITOR.plugins.setLang( 'fakeobjects', 'nb', {
diff --git a/sources/plugins/fakeobjects/lang/nl.js b/sources/plugins/fakeobjects/lang/nl.js
index e997794..158985a 100644
--- a/sources/plugins/fakeobjects/lang/nl.js
+++ b/sources/plugins/fakeobjects/lang/nl.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'fakeobjects', 'nl', { 5CKEDITOR.plugins.setLang( 'fakeobjects', 'nl', {
diff --git a/sources/plugins/fakeobjects/lang/no.js b/sources/plugins/fakeobjects/lang/no.js
index 1b35b24..cbbb4cf 100644
--- a/sources/plugins/fakeobjects/lang/no.js
+++ b/sources/plugins/fakeobjects/lang/no.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'fakeobjects', 'no', { 5CKEDITOR.plugins.setLang( 'fakeobjects', 'no', {
diff --git a/sources/plugins/fakeobjects/lang/oc.js b/sources/plugins/fakeobjects/lang/oc.js
new file mode 100644
index 0000000..0ecfcf8
--- /dev/null
+++ b/sources/plugins/fakeobjects/lang/oc.js
@@ -0,0 +1,11 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'fakeobjects', 'oc', {
6 anchor: 'Ancòra',
7 flash: 'Animacion Flash',
8 hiddenfield: 'Camp invisible',
9 iframe: 'Quadre de contengut incorporat',
10 unknown: 'Objècte desconegut'
11} );
diff --git a/sources/plugins/fakeobjects/lang/pl.js b/sources/plugins/fakeobjects/lang/pl.js
index 6555db9..06b3a20 100644
--- a/sources/plugins/fakeobjects/lang/pl.js
+++ b/sources/plugins/fakeobjects/lang/pl.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'fakeobjects', 'pl', { 5CKEDITOR.plugins.setLang( 'fakeobjects', 'pl', {
diff --git a/sources/plugins/fakeobjects/lang/pt-br.js b/sources/plugins/fakeobjects/lang/pt-br.js
index 70b4c28..6198bf3 100644
--- a/sources/plugins/fakeobjects/lang/pt-br.js
+++ b/sources/plugins/fakeobjects/lang/pt-br.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'fakeobjects', 'pt-br', { 5CKEDITOR.plugins.setLang( 'fakeobjects', 'pt-br', {
diff --git a/sources/plugins/fakeobjects/lang/pt.js b/sources/plugins/fakeobjects/lang/pt.js
index 9ca5f62..c3d762f 100644
--- a/sources/plugins/fakeobjects/lang/pt.js
+++ b/sources/plugins/fakeobjects/lang/pt.js
@@ -1,11 +1,11 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'fakeobjects', 'pt', { 5CKEDITOR.plugins.setLang( 'fakeobjects', 'pt', {
6 anchor: ' Inserir/Editar ncora', 6 anchor: ' Inserir/Editar ncora',
7 flash: 'Animação Flash', 7 flash: 'Animação Flash',
8 hiddenfield: 'Campo oculto', 8 hiddenfield: 'Campo oculto',
9 iframe: 'IFrame', 9 iframe: 'IFrame',
10 unknown: 'Objeto Desconhecido' 10 unknown: 'Objeto desconhecido'
11} ); 11} );
diff --git a/sources/plugins/fakeobjects/lang/ro.js b/sources/plugins/fakeobjects/lang/ro.js
index 882bb3a..25535d3 100644
--- a/sources/plugins/fakeobjects/lang/ro.js
+++ b/sources/plugins/fakeobjects/lang/ro.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'fakeobjects', 'ro', { 5CKEDITOR.plugins.setLang( 'fakeobjects', 'ro', {
diff --git a/sources/plugins/fakeobjects/lang/ru.js b/sources/plugins/fakeobjects/lang/ru.js
index fe94054..7f93bc7 100644
--- a/sources/plugins/fakeobjects/lang/ru.js
+++ b/sources/plugins/fakeobjects/lang/ru.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'fakeobjects', 'ru', { 5CKEDITOR.plugins.setLang( 'fakeobjects', 'ru', {
diff --git a/sources/plugins/fakeobjects/lang/si.js b/sources/plugins/fakeobjects/lang/si.js
index 7af0c8e..319240b 100644
--- a/sources/plugins/fakeobjects/lang/si.js
+++ b/sources/plugins/fakeobjects/lang/si.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'fakeobjects', 'si', { 5CKEDITOR.plugins.setLang( 'fakeobjects', 'si', {
diff --git a/sources/plugins/fakeobjects/lang/sk.js b/sources/plugins/fakeobjects/lang/sk.js
index 384b76c..1372c54 100644
--- a/sources/plugins/fakeobjects/lang/sk.js
+++ b/sources/plugins/fakeobjects/lang/sk.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'fakeobjects', 'sk', { 5CKEDITOR.plugins.setLang( 'fakeobjects', 'sk', {
diff --git a/sources/plugins/fakeobjects/lang/sl.js b/sources/plugins/fakeobjects/lang/sl.js
index 892725a..f6d9827 100644
--- a/sources/plugins/fakeobjects/lang/sl.js
+++ b/sources/plugins/fakeobjects/lang/sl.js
@@ -1,10 +1,10 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'fakeobjects', 'sl', { 5CKEDITOR.plugins.setLang( 'fakeobjects', 'sl', {
6 anchor: 'Sidro', 6 anchor: 'Sidro',
7 flash: 'Flash animacija', 7 flash: 'Animacija flash',
8 hiddenfield: 'Skrito polje', 8 hiddenfield: 'Skrito polje',
9 iframe: 'IFrame', 9 iframe: 'IFrame',
10 unknown: 'Neznan objekt' 10 unknown: 'Neznan objekt'
diff --git a/sources/plugins/fakeobjects/lang/sq.js b/sources/plugins/fakeobjects/lang/sq.js
index 6c0026a..05f0987 100644
--- a/sources/plugins/fakeobjects/lang/sq.js
+++ b/sources/plugins/fakeobjects/lang/sq.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'fakeobjects', 'sq', { 5CKEDITOR.plugins.setLang( 'fakeobjects', 'sq', {
diff --git a/sources/plugins/fakeobjects/lang/sr-latn.js b/sources/plugins/fakeobjects/lang/sr-latn.js
index 36e66f7..fb497f0 100644
--- a/sources/plugins/fakeobjects/lang/sr-latn.js
+++ b/sources/plugins/fakeobjects/lang/sr-latn.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'fakeobjects', 'sr-latn', { 5CKEDITOR.plugins.setLang( 'fakeobjects', 'sr-latn', {
diff --git a/sources/plugins/fakeobjects/lang/sr.js b/sources/plugins/fakeobjects/lang/sr.js
index 05c6404..82a59cb 100644
--- a/sources/plugins/fakeobjects/lang/sr.js
+++ b/sources/plugins/fakeobjects/lang/sr.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'fakeobjects', 'sr', { 5CKEDITOR.plugins.setLang( 'fakeobjects', 'sr', {
diff --git a/sources/plugins/fakeobjects/lang/sv.js b/sources/plugins/fakeobjects/lang/sv.js
index 2108b28..3db31fb 100644
--- a/sources/plugins/fakeobjects/lang/sv.js
+++ b/sources/plugins/fakeobjects/lang/sv.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'fakeobjects', 'sv', { 5CKEDITOR.plugins.setLang( 'fakeobjects', 'sv', {
diff --git a/sources/plugins/fakeobjects/lang/th.js b/sources/plugins/fakeobjects/lang/th.js
index 813e479..c0d1f4e 100644
--- a/sources/plugins/fakeobjects/lang/th.js
+++ b/sources/plugins/fakeobjects/lang/th.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'fakeobjects', 'th', { 5CKEDITOR.plugins.setLang( 'fakeobjects', 'th', {
diff --git a/sources/plugins/fakeobjects/lang/tr.js b/sources/plugins/fakeobjects/lang/tr.js
index c68ab3e..768b7c1 100644
--- a/sources/plugins/fakeobjects/lang/tr.js
+++ b/sources/plugins/fakeobjects/lang/tr.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'fakeobjects', 'tr', { 5CKEDITOR.plugins.setLang( 'fakeobjects', 'tr', {
diff --git a/sources/plugins/fakeobjects/lang/tt.js b/sources/plugins/fakeobjects/lang/tt.js
index df6b172..df1a714 100644
--- a/sources/plugins/fakeobjects/lang/tt.js
+++ b/sources/plugins/fakeobjects/lang/tt.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'fakeobjects', 'tt', { 5CKEDITOR.plugins.setLang( 'fakeobjects', 'tt', {
diff --git a/sources/plugins/fakeobjects/lang/ug.js b/sources/plugins/fakeobjects/lang/ug.js
index 3e6404f..c44b8de 100644
--- a/sources/plugins/fakeobjects/lang/ug.js
+++ b/sources/plugins/fakeobjects/lang/ug.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'fakeobjects', 'ug', { 5CKEDITOR.plugins.setLang( 'fakeobjects', 'ug', {
diff --git a/sources/plugins/fakeobjects/lang/uk.js b/sources/plugins/fakeobjects/lang/uk.js
index 9fcf85b..81da8ca 100644
--- a/sources/plugins/fakeobjects/lang/uk.js
+++ b/sources/plugins/fakeobjects/lang/uk.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'fakeobjects', 'uk', { 5CKEDITOR.plugins.setLang( 'fakeobjects', 'uk', {
diff --git a/sources/plugins/fakeobjects/lang/vi.js b/sources/plugins/fakeobjects/lang/vi.js
index 0d9d68b..f1346aa 100644
--- a/sources/plugins/fakeobjects/lang/vi.js
+++ b/sources/plugins/fakeobjects/lang/vi.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'fakeobjects', 'vi', { 5CKEDITOR.plugins.setLang( 'fakeobjects', 'vi', {
diff --git a/sources/plugins/fakeobjects/lang/zh-cn.js b/sources/plugins/fakeobjects/lang/zh-cn.js
index 5328ae6..8d304c2 100644
--- a/sources/plugins/fakeobjects/lang/zh-cn.js
+++ b/sources/plugins/fakeobjects/lang/zh-cn.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'fakeobjects', 'zh-cn', { 5CKEDITOR.plugins.setLang( 'fakeobjects', 'zh-cn', {
diff --git a/sources/plugins/fakeobjects/lang/zh.js b/sources/plugins/fakeobjects/lang/zh.js
index d4aea58..1255003 100644
--- a/sources/plugins/fakeobjects/lang/zh.js
+++ b/sources/plugins/fakeobjects/lang/zh.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'fakeobjects', 'zh', { 5CKEDITOR.plugins.setLang( 'fakeobjects', 'zh', {
diff --git a/sources/plugins/fakeobjects/plugin.js b/sources/plugins/fakeobjects/plugin.js
index a054a99..b1a8e0c 100644
--- a/sources/plugins/fakeobjects/plugin.js
+++ b/sources/plugins/fakeobjects/plugin.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -53,7 +53,7 @@
53 53
54 CKEDITOR.plugins.add( 'fakeobjects', { 54 CKEDITOR.plugins.add( 'fakeobjects', {
55 // jscs:disable maximumLineLength 55 // jscs:disable maximumLineLength
56 lang: 'af,ar,bg,bn,bs,ca,cs,cy,da,de,de-ch,el,en,en-au,en-ca,en-gb,eo,es,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,pl,pt,pt-br,ro,ru,si,sk,sl,sq,sr,sr-latn,sv,th,tr,tt,ug,uk,vi,zh,zh-cn', // %REMOVE_LINE_CORE% 56 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', // %REMOVE_LINE_CORE%
57 // jscs:enable maximumLineLength 57 // jscs:enable maximumLineLength
58 58
59 init: function( editor ) { 59 init: function( editor ) {
@@ -75,8 +75,15 @@
75 } ); 75 } );
76 76
77 /** 77 /**
78 * Creates fake {@link CKEDITOR.dom.element} based on real element.
79 * Fake element is an img with special attributes, which keep real element properties.
80 *
78 * @member CKEDITOR.editor 81 * @member CKEDITOR.editor
79 * @todo 82 * @param {CKEDITOR.dom.element} realElement Real element to transform.
83 * @param {String} className Class name which will be used as class of fake element.
84 * @param {String} realElementType Stores type of fake element.
85 * @param {Boolean} isResizable Keeps information if element is resizable.
86 * @returns {CKEDITOR.dom.element} Fake element.
80 */ 87 */
81 CKEDITOR.editor.prototype.createFakeElement = function( realElement, className, realElementType, isResizable ) { 88 CKEDITOR.editor.prototype.createFakeElement = function( realElement, className, realElementType, isResizable ) {
82 var lang = this.lang.fakeobjects, 89 var lang = this.lang.fakeobjects,
@@ -91,7 +98,7 @@
91 align: realElement.getAttribute( 'align' ) || '' 98 align: realElement.getAttribute( 'align' ) || ''
92 }; 99 };
93 100
94 // Do not set "src" on high-contrast so the alt text is displayed. (#8945) 101 // Do not set "src" on high-contrast so the alt text is displayed. (http://dev.ckeditor.com/ticket/8945)
95 if ( !CKEDITOR.env.hc ) 102 if ( !CKEDITOR.env.hc )
96 attributes.src = CKEDITOR.tools.transparentImageData; 103 attributes.src = CKEDITOR.tools.transparentImageData;
97 104
@@ -115,8 +122,14 @@
115 }; 122 };
116 123
117 /** 124 /**
125 * Creates fake {@link CKEDITOR.htmlParser.element} based on real element.
126 *
118 * @member CKEDITOR.editor 127 * @member CKEDITOR.editor
119 * @todo 128 * @param {CKEDITOR.dom.element} realElement Real element to transform.
129 * @param {String} className Class name which will be used as class of fake element.
130 * @param {String} realElementType Store type of fake element.
131 * @param {Boolean} isResizable Keep information if element is resizable.
132 * @returns {CKEDITOR.htmlParser.element} Fake htmlParser element.
120 */ 133 */
121 CKEDITOR.editor.prototype.createFakeParserElement = function( realElement, className, realElementType, isResizable ) { 134 CKEDITOR.editor.prototype.createFakeParserElement = function( realElement, className, realElementType, isResizable ) {
122 var lang = this.lang.fakeobjects, 135 var lang = this.lang.fakeobjects,
@@ -136,7 +149,7 @@
136 align: realElement.attributes.align || '' 149 align: realElement.attributes.align || ''
137 }; 150 };
138 151
139 // Do not set "src" on high-contrast so the alt text is displayed. (#8945) 152 // Do not set "src" on high-contrast so the alt text is displayed. (http://dev.ckeditor.com/ticket/8945)
140 if ( !CKEDITOR.env.hc ) 153 if ( !CKEDITOR.env.hc )
141 attributes.src = CKEDITOR.tools.transparentImageData; 154 attributes.src = CKEDITOR.tools.transparentImageData;
142 155
@@ -160,8 +173,11 @@
160 }; 173 };
161 174
162 /** 175 /**
176 * Creates {@link CKEDITOR.dom.element} from fake element.
177 *
163 * @member CKEDITOR.editor 178 * @member CKEDITOR.editor
164 * @todo 179 * @param {CKEDITOR.dom.element} fakeElement Fake element to transform.
180 * @returns {CKEDITOR.dom.element/null} Returns real element or `null` if transformed element wasn't fake.
165 */ 181 */
166 CKEDITOR.editor.prototype.restoreRealElement = function( fakeElement ) { 182 CKEDITOR.editor.prototype.restoreRealElement = function( fakeElement ) {
167 if ( fakeElement.data( 'cke-real-node-type' ) != CKEDITOR.NODE_ELEMENT ) 183 if ( fakeElement.data( 'cke-real-node-type' ) != CKEDITOR.NODE_ELEMENT )
diff --git a/sources/plugins/filebrowser/plugin.js b/sources/plugins/filebrowser/plugin.js
index 6d27146..51744f5 100644
--- a/sources/plugins/filebrowser/plugin.js
+++ b/sources/plugins/filebrowser/plugin.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -167,7 +167,7 @@
167 params.langCode = editor.langCode; 167 params.langCode = editor.langCode;
168 168
169 var url = addQueryString( this.filebrowser.url, params ); 169 var url = addQueryString( this.filebrowser.url, params );
170 // TODO: V4: Remove backward compatibility (#8163). 170 // TODO: V4: Remove backward compatibility (http://dev.ckeditor.com/ticket/8163).
171 editor.popup( url, width, height, editor.config.filebrowserWindowFeatures || editor.config.fileBrowserWindowFeatures ); 171 editor.popup( url, width, height, editor.config.filebrowserWindowFeatures || editor.config.fileBrowserWindowFeatures );
172 } 172 }
173 173
diff --git a/sources/plugins/floatingspace/plugin.js b/sources/plugins/floatingspace/plugin.js
index 70e0ce9..bea3306 100644
--- a/sources/plugins/floatingspace/plugin.js
+++ b/sources/plugins/floatingspace/plugin.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -68,7 +68,7 @@
68 } 68 }
69 69
70 return function( evt ) { 70 return function( evt ) {
71 // #10112 Do not fail on editable-less editor. 71 // http://dev.ckeditor.com/ticket/10112 Do not fail on editable-less editor.
72 if ( !( editable = editor.editable() ) ) 72 if ( !( editable = editor.editable() ) )
73 return; 73 return;
74 74
@@ -159,7 +159,7 @@
159 alignSide = mid - editorRect.left > editorRect.right - mid ? 'left' : 'right'; 159 alignSide = mid - editorRect.left > editorRect.right - mid ? 'left' : 'right';
160 } 160 }
161 161
162 // (#9769) If viewport width is less than space width, 162 // (http://dev.ckeditor.com/ticket/9769) If viewport width is less than space width,
163 // make sure space never cross the left boundary of the viewport. 163 // make sure space never cross the left boundary of the viewport.
164 // In other words: top-left corner of the space is always visible. 164 // In other words: top-left corner of the space is always visible.
165 if ( spaceRect.width > viewRect.width ) { 165 if ( spaceRect.width > viewRect.width ) {
@@ -226,7 +226,7 @@
226 offset = 0; 226 offset = 0;
227 } 227 }
228 228
229 // (#9769) Finally, stick the space to the opposite side of 229 // (http://dev.ckeditor.com/ticket/9769) Finally, stick the space to the opposite side of
230 // the viewport when it's cut off horizontally on the left/right 230 // the viewport when it's cut off horizontally on the left/right
231 // side like below. 231 // side like below.
232 // 232 //
@@ -258,7 +258,7 @@
258 } 258 }
259 259
260 // Pin mode is fixed, so don't include scroll-x. 260 // Pin mode is fixed, so don't include scroll-x.
261 // (#9903) For mode is "top" or "bottom", add opposite scroll-x for right-aligned space. 261 // (http://dev.ckeditor.com/ticket/9903) For mode is "top" or "bottom", add opposite scroll-x for right-aligned space.
262 var scroll = mode == 'pin' ? 0 : alignSide == 'left' ? pageScrollX : -pageScrollX; 262 var scroll = mode == 'pin' ? 0 : alignSide == 'left' ? pageScrollX : -pageScrollX;
263 263
264 floatSpace.setStyle( alignSide, pixelate( ( mode == 'pin' ? pinnedOffsetX : dockedOffsetX ) + offset + scroll ) ); 264 floatSpace.setStyle( alignSide, pixelate( ( mode == 'pin' ? pinnedOffsetX : dockedOffsetX ) + offset + scroll ) );
diff --git a/sources/plugins/floatpanel/plugin.js b/sources/plugins/floatpanel/plugin.js
index c104037..c480696 100644
--- a/sources/plugins/floatpanel/plugin.js
+++ b/sources/plugins/floatpanel/plugin.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -61,7 +61,7 @@ CKEDITOR.plugins.add( 'floatpanel', {
61 iframe = element.getFirst(), 61 iframe = element.getFirst(),
62 that = this; 62 that = this;
63 63
64 // Disable native browser menu. (#4825) 64 // Disable native browser menu. (http://dev.ckeditor.com/ticket/4825)
65 element.disableContextMenu(); 65 element.disableContextMenu();
66 66
67 this.element = element; 67 this.element = element;
@@ -83,7 +83,7 @@ CKEDITOR.plugins.add( 'floatpanel', {
83 editor.on( 'resize', hide ); 83 editor.on( 'resize', hide );
84 84
85 // When resize of the window is triggered floatpanel should be repositioned according to new dimensions. 85 // When resize of the window is triggered floatpanel should be repositioned according to new dimensions.
86 // #11724. Fixes issue with undesired panel hiding on Android and iOS. 86 // http://dev.ckeditor.com/ticket/11724. Fixes issue with undesired panel hiding on Android and iOS.
87 doc.getWindow().on( 'resize', function() { 87 doc.getWindow().on( 'resize', function() {
88 this.reposition(); 88 this.reposition();
89 }, this ); 89 }, this );
@@ -155,7 +155,7 @@ CKEDITOR.plugins.add( 'floatpanel', {
155 155
156 var element = this.element, 156 var element = this.element,
157 iframe = this._.iframe, 157 iframe = this._.iframe,
158 // Edge prefers iframe's window to the iframe, just like the rest of the browsers (#13143). 158 // Edge prefers iframe's window to the iframe, just like the rest of the browsers (http://dev.ckeditor.com/ticket/13143).
159 focused = CKEDITOR.env.ie && !CKEDITOR.env.edge ? iframe : new CKEDITOR.dom.window( iframe.$.contentWindow ), 159 focused = CKEDITOR.env.ie && !CKEDITOR.env.edge ? iframe : new CKEDITOR.dom.window( iframe.$.contentWindow ),
160 doc = element.getDocument(), 160 doc = element.getDocument(),
161 positionedAncestor = this._.parentElement.getPositionedAncestor(), 161 positionedAncestor = this._.parentElement.getPositionedAncestor(),
@@ -165,7 +165,7 @@ CKEDITOR.plugins.add( 'floatpanel', {
165 left = position.x + ( offsetX || 0 ) - positionedAncestorPosition.x, 165 left = position.x + ( offsetX || 0 ) - positionedAncestorPosition.x,
166 top = position.y + ( offsetY || 0 ) - positionedAncestorPosition.y; 166 top = position.y + ( offsetY || 0 ) - positionedAncestorPosition.y;
167 167
168 // Floating panels are off by (-1px, 0px) in RTL mode. (#3438) 168 // Floating panels are off by (-1px, 0px) in RTL mode. (http://dev.ckeditor.com/ticket/3438)
169 if ( rtl && ( corner == 1 || corner == 4 ) ) 169 if ( rtl && ( corner == 1 || corner == 4 ) )
170 left += offsetParent.$.offsetWidth; 170 left += offsetParent.$.offsetWidth;
171 else if ( !rtl && ( corner == 2 || corner == 3 ) ) 171 else if ( !rtl && ( corner == 2 || corner == 3 ) )
@@ -198,7 +198,7 @@ CKEDITOR.plugins.add( 'floatpanel', {
198 198
199 // With addEventListener compatible browsers, we must 199 // With addEventListener compatible browsers, we must
200 // useCapture when registering the focus/blur events to 200 // useCapture when registering the focus/blur events to
201 // guarantee they will be firing in all situations. (#3068, #3222 ) 201 // guarantee they will be firing in all situations. (http://dev.ckeditor.com/ticket/3068, http://dev.ckeditor.com/ticket/3222 )
202 CKEDITOR.event.useCapture = true; 202 CKEDITOR.event.useCapture = true;
203 203
204 focused.on( 'blur', function( ev ) { 204 focused.on( 'blur', function( ev ) {
@@ -211,7 +211,7 @@ CKEDITOR.plugins.add( 'floatpanel', {
211 211
212 if ( this.visible && !this._.activeChild ) { 212 if ( this.visible && !this._.activeChild ) {
213 // [iOS] Allow hide to be prevented if touch is bound 213 // [iOS] Allow hide to be prevented if touch is bound
214 // to any parent of the iframe blur happens before touch (#10714). 214 // to any parent of the iframe blur happens before touch (http://dev.ckeditor.com/ticket/10714).
215 if ( CKEDITOR.env.iOS ) { 215 if ( CKEDITOR.env.iOS ) {
216 if ( !this._.hideTimeout ) 216 if ( !this._.hideTimeout )
217 this._.hideTimeout = CKEDITOR.tools.setTimeout( doHide, 0, this ); 217 this._.hideTimeout = CKEDITOR.tools.setTimeout( doHide, 0, this );
@@ -235,7 +235,7 @@ CKEDITOR.plugins.add( 'floatpanel', {
235 }, this ); 235 }, this );
236 236
237 // [iOS] if touch is bound to any parent of the iframe blur 237 // [iOS] if touch is bound to any parent of the iframe blur
238 // happens twice before touchstart and before touchend (#10714). 238 // happens twice before touchstart and before touchend (http://dev.ckeditor.com/ticket/10714).
239 if ( CKEDITOR.env.iOS ) { 239 if ( CKEDITOR.env.iOS ) {
240 // Prevent false hiding on blur. 240 // Prevent false hiding on blur.
241 // We don't need to return focus here because touchend will fire anyway. 241 // We don't need to return focus here because touchend will fire anyway.
@@ -266,7 +266,7 @@ CKEDITOR.plugins.add( 'floatpanel', {
266 var target = element; 266 var target = element;
267 267
268 // Reset panel width as the new content can be narrower 268 // Reset panel width as the new content can be narrower
269 // than the old one. (#9355) 269 // than the old one. (http://dev.ckeditor.com/ticket/9355)
270 target.removeStyle( 'width' ); 270 target.removeStyle( 'width' );
271 271
272 if ( block.autoSize ) { 272 if ( block.autoSize ) {
@@ -275,7 +275,7 @@ CKEDITOR.plugins.add( 'floatpanel', {
275 275
276 // Account for extra height needed due to IE quirks box model bug: 276 // Account for extra height needed due to IE quirks box model bug:
277 // http://en.wikipedia.org/wiki/Internet_Explorer_box_model_bug 277 // http://en.wikipedia.org/wiki/Internet_Explorer_box_model_bug
278 // (#3426) 278 // (http://dev.ckeditor.com/ticket/3426)
279 if ( CKEDITOR.env.ie && CKEDITOR.env.quirks && width > 0 ) 279 if ( CKEDITOR.env.ie && CKEDITOR.env.quirks && width > 0 )
280 width += ( target.$.offsetWidth || 0 ) - ( target.$.clientWidth || 0 ) + 3; 280 width += ( target.$.offsetWidth || 0 ) - ( target.$.clientWidth || 0 ) + 3;
281 281
@@ -288,7 +288,7 @@ CKEDITOR.plugins.add( 'floatpanel', {
288 288
289 // Account for extra height needed due to IE quirks box model bug: 289 // Account for extra height needed due to IE quirks box model bug:
290 // http://en.wikipedia.org/wiki/Internet_Explorer_box_model_bug 290 // http://en.wikipedia.org/wiki/Internet_Explorer_box_model_bug
291 // (#3426) 291 // (http://dev.ckeditor.com/ticket/3426)
292 if ( CKEDITOR.env.ie && CKEDITOR.env.quirks && height > 0 ) 292 if ( CKEDITOR.env.ie && CKEDITOR.env.quirks && height > 0 )
293 height += ( target.$.offsetHeight || 0 ) - ( target.$.clientHeight || 0 ) + 3; 293 height += ( target.$.offsetHeight || 0 ) - ( target.$.clientHeight || 0 ) + 3;
294 294
@@ -364,7 +364,7 @@ CKEDITOR.plugins.add( 'floatpanel', {
364 364
365 // If IE is in RTL, we have troubles with absolute 365 // If IE is in RTL, we have troubles with absolute
366 // position and horizontal scrolls. Here we have a 366 // position and horizontal scrolls. Here we have a
367 // series of hacks to workaround it. (#6146) 367 // series of hacks to workaround it. (http://dev.ckeditor.com/ticket/6146)
368 if ( CKEDITOR.env.ie ) { 368 if ( CKEDITOR.env.ie ) {
369 var offsetParent = new CKEDITOR.dom.element( element.$.offsetParent ), 369 var offsetParent = new CKEDITOR.dom.element( element.$.offsetParent ),
370 scrollParent = offsetParent; 370 scrollParent = offsetParent;
@@ -383,7 +383,7 @@ CKEDITOR.plugins.add( 'floatpanel', {
383 } 383 }
384 384
385 // Trigger the onHide event of the previously active panel to prevent 385 // Trigger the onHide event of the previously active panel to prevent
386 // incorrect styles from being applied (#6170) 386 // incorrect styles from being applied (http://dev.ckeditor.com/ticket/6170)
387 var innerElement = element.getFirst(), 387 var innerElement = element.getFirst(),
388 activePanel; 388 activePanel;
389 if ( ( activePanel = innerElement.getCustomData( 'activePanel' ) ) ) 389 if ( ( activePanel = innerElement.getCustomData( 'activePanel' ) ) )
@@ -410,12 +410,22 @@ CKEDITOR.plugins.add( 'floatpanel', {
410 // Focus the block now. 410 // Focus the block now.
411 block.element.focus(); 411 block.element.focus();
412 412
413 // #10623, #10951 - restore the viewport's scroll position after focusing list element. 413 // http://dev.ckeditor.com/ticket/10623, http://dev.ckeditor.com/ticket/10951 - restore the viewport's scroll position after focusing list element.
414 if ( CKEDITOR.env.webkit ) 414 if ( CKEDITOR.env.webkit )
415 CKEDITOR.document.getBody().$.scrollTop = scrollTop; 415 CKEDITOR.document.getBody().$.scrollTop = scrollTop;
416 416
417 // We need this get fired manually because of unfired focus() function. 417 // We need this get fired manually because of unfired focus() function.
418 this.allowBlur( true ); 418 this.allowBlur( true );
419
420 // Ensure that the first item is focused (http://dev.ckeditor.com/ticket/16804).
421 if ( CKEDITOR.env.ie ) {
422 CKEDITOR.tools.setTimeout( function() {
423 block.markFirstDisplayed ? block.markFirstDisplayed() : block._.markFirstDisplayed();
424 }, 0 );
425 } else {
426 block.markFirstDisplayed ? block.markFirstDisplayed() : block._.markFirstDisplayed();
427 }
428
419 this._.editor.fire( 'panelShow', this ); 429 this._.editor.fire( 'panelShow', this );
420 }, 0, this ); 430 }, 0, this );
421 }, CKEDITOR.env.air ? 200 : 0, this ); 431 }, CKEDITOR.env.air ? 200 : 0, this );
@@ -473,13 +483,13 @@ CKEDITOR.plugins.add( 'floatpanel', {
473 hide: function( returnFocus ) { 483 hide: function( returnFocus ) {
474 if ( this.visible && ( !this.onHide || this.onHide.call( this ) !== true ) ) { 484 if ( this.visible && ( !this.onHide || this.onHide.call( this ) !== true ) ) {
475 this.hideChild(); 485 this.hideChild();
476 // Blur previously focused element. (#6671) 486 // Blur previously focused element. (http://dev.ckeditor.com/ticket/6671)
477 CKEDITOR.env.gecko && this._.iframe.getFrameDocument().$.activeElement.blur(); 487 CKEDITOR.env.gecko && this._.iframe.getFrameDocument().$.activeElement.blur();
478 this.element.setStyle( 'display', 'none' ); 488 this.element.setStyle( 'display', 'none' );
479 this.visible = 0; 489 this.visible = 0;
480 this.element.getFirst().removeCustomData( 'activePanel' ); 490 this.element.getFirst().removeCustomData( 'activePanel' );
481 491
482 // Return focus properly. (#6247) 492 // Return focus properly. (http://dev.ckeditor.com/ticket/6247)
483 var focusReturn = returnFocus && this._.returnFocus; 493 var focusReturn = returnFocus && this._.returnFocus;
484 if ( focusReturn ) { 494 if ( focusReturn ) {
485 // Webkit requires focus moved out panel iframe first. 495 // Webkit requires focus moved out panel iframe first.
@@ -500,7 +510,7 @@ CKEDITOR.plugins.add( 'floatpanel', {
500 * @todo 510 * @todo
501 */ 511 */
502 allowBlur: function( allow ) { 512 allowBlur: function( allow ) {
503 // Prevent editor from hiding the panel. (#3222) 513 // Prevent editor from hiding the panel. (http://dev.ckeditor.com/ticket/3222)
504 var panel = this._.panel; 514 var panel = this._.panel;
505 if ( allow !== undefined ) 515 if ( allow !== undefined )
506 panel.allowBlur = allow; 516 panel.allowBlur = allow;
@@ -553,7 +563,7 @@ CKEDITOR.plugins.add( 'floatpanel', {
553 panel.showBlock( blockName, offsetParent, corner, offsetX, offsetY ); 563 panel.showBlock( blockName, offsetParent, corner, offsetX, offsetY );
554 this.blur(); 564 this.blur();
555 565
556 /* #3767 IE: Second level menu may not have borders */ 566 /* http://dev.ckeditor.com/ticket/3767 IE: Second level menu may not have borders */
557 if ( CKEDITOR.env.ie7Compat || CKEDITOR.env.ie6Compat ) { 567 if ( CKEDITOR.env.ie7Compat || CKEDITOR.env.ie6Compat ) {
558 setTimeout( function() { 568 setTimeout( function() {
559 panel.element.getChild( 0 ).$.style.cssText += ''; 569 panel.element.getChild( 0 ).$.style.cssText += '';
@@ -584,10 +594,10 @@ CKEDITOR.plugins.add( 'floatpanel', {
584 594
585 for ( var i in panels ) { 595 for ( var i in panels ) {
586 var panel = panels[ i ]; 596 var panel = panels[ i ];
587 // Safe to destroy it since there're no more instances.(#4241) 597 // Safe to destroy it since there're no more instances.(http://dev.ckeditor.com/ticket/4241)
588 if ( isLastInstance ) 598 if ( isLastInstance )
589 panel.destroy(); 599 panel.destroy();
590 // Panel might be used by other instances, just hide them.(#4552) 600 // Panel might be used by other instances, just hide them.(http://dev.ckeditor.com/ticket/4552)
591 else 601 else
592 panel.element.hide(); 602 panel.element.hide();
593 } 603 }
diff --git a/sources/plugins/format/lang/af.js b/sources/plugins/format/lang/af.js
index 787e39f..b38cd33 100644
--- a/sources/plugins/format/lang/af.js
+++ b/sources/plugins/format/lang/af.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'format', 'af', { 5CKEDITOR.plugins.setLang( 'format', 'af', {
diff --git a/sources/plugins/format/lang/ar.js b/sources/plugins/format/lang/ar.js
index e891d1a..8fc1c38 100644
--- a/sources/plugins/format/lang/ar.js
+++ b/sources/plugins/format/lang/ar.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'format', 'ar', { 5CKEDITOR.plugins.setLang( 'format', 'ar', {
diff --git a/sources/plugins/format/lang/az.js b/sources/plugins/format/lang/az.js
new file mode 100644
index 0000000..05b2d54
--- /dev/null
+++ b/sources/plugins/format/lang/az.js
@@ -0,0 +1,18 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'format', 'az', {
6 label: 'Format',
7 panelTitle: 'Abzasın formatı',
8 tag_address: 'Ünvan',
9 tag_div: 'Normal (DIV)',
10 tag_h1: 'Başlıq 1',
11 tag_h2: 'Başlıq 2',
12 tag_h3: 'Başlıq 3',
13 tag_h4: 'Başlıq 4',
14 tag_h5: 'Başlıq 5',
15 tag_h6: 'Başlıq 6',
16 tag_p: 'Normal',
17 tag_pre: 'Formatı saxla'
18} );
diff --git a/sources/plugins/format/lang/bg.js b/sources/plugins/format/lang/bg.js
index c32fb94..3de0ac4 100644
--- a/sources/plugins/format/lang/bg.js
+++ b/sources/plugins/format/lang/bg.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'format', 'bg', { 5CKEDITOR.plugins.setLang( 'format', 'bg', {
diff --git a/sources/plugins/format/lang/bn.js b/sources/plugins/format/lang/bn.js
index 43a2cdc..45857a2 100644
--- a/sources/plugins/format/lang/bn.js
+++ b/sources/plugins/format/lang/bn.js
@@ -1,9 +1,9 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'format', 'bn', { 5CKEDITOR.plugins.setLang( 'format', 'bn', {
6 label: ' ', 6 label: '-ি',
7 panelTitle: 'ফন্ট ফরমেট', 7 panelTitle: 'ফন্ট ফরমেট',
8 tag_address: 'ঠিকানা', 8 tag_address: 'ঠিকানা',
9 tag_div: 'শীর্ষক (DIV)', 9 tag_div: 'শীর্ষক (DIV)',
diff --git a/sources/plugins/format/lang/bs.js b/sources/plugins/format/lang/bs.js
index 192663b..4e9482a 100644
--- a/sources/plugins/format/lang/bs.js
+++ b/sources/plugins/format/lang/bs.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'format', 'bs', { 5CKEDITOR.plugins.setLang( 'format', 'bs', {
diff --git a/sources/plugins/format/lang/ca.js b/sources/plugins/format/lang/ca.js
index a2c172a..5345898 100644
--- a/sources/plugins/format/lang/ca.js
+++ b/sources/plugins/format/lang/ca.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'format', 'ca', { 5CKEDITOR.plugins.setLang( 'format', 'ca', {
diff --git a/sources/plugins/format/lang/cs.js b/sources/plugins/format/lang/cs.js
index cb0a016..b96a6c4 100644
--- a/sources/plugins/format/lang/cs.js
+++ b/sources/plugins/format/lang/cs.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'format', 'cs', { 5CKEDITOR.plugins.setLang( 'format', 'cs', {
diff --git a/sources/plugins/format/lang/cy.js b/sources/plugins/format/lang/cy.js
index 8fe80f8..a8f618f 100644
--- a/sources/plugins/format/lang/cy.js
+++ b/sources/plugins/format/lang/cy.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'format', 'cy', { 5CKEDITOR.plugins.setLang( 'format', 'cy', {
diff --git a/sources/plugins/format/lang/da.js b/sources/plugins/format/lang/da.js
index 9d99d63..1f7c654 100644
--- a/sources/plugins/format/lang/da.js
+++ b/sources/plugins/format/lang/da.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'format', 'da', { 5CKEDITOR.plugins.setLang( 'format', 'da', {
diff --git a/sources/plugins/format/lang/de-ch.js b/sources/plugins/format/lang/de-ch.js
index 906269a..68b8879 100644
--- a/sources/plugins/format/lang/de-ch.js
+++ b/sources/plugins/format/lang/de-ch.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'format', 'de-ch', { 5CKEDITOR.plugins.setLang( 'format', 'de-ch', {
diff --git a/sources/plugins/format/lang/de.js b/sources/plugins/format/lang/de.js
index 7a66720..e6f6677 100644
--- a/sources/plugins/format/lang/de.js
+++ b/sources/plugins/format/lang/de.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'format', 'de', { 5CKEDITOR.plugins.setLang( 'format', 'de', {
diff --git a/sources/plugins/format/lang/el.js b/sources/plugins/format/lang/el.js
index 83e845e..9b34051 100644
--- a/sources/plugins/format/lang/el.js
+++ b/sources/plugins/format/lang/el.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'format', 'el', { 5CKEDITOR.plugins.setLang( 'format', 'el', {
diff --git a/sources/plugins/format/lang/en-au.js b/sources/plugins/format/lang/en-au.js
index 3fae041..5ec7d8e 100644
--- a/sources/plugins/format/lang/en-au.js
+++ b/sources/plugins/format/lang/en-au.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'format', 'en-au', { 5CKEDITOR.plugins.setLang( 'format', 'en-au', {
diff --git a/sources/plugins/format/lang/en-ca.js b/sources/plugins/format/lang/en-ca.js
index bc36609..75d66c3 100644
--- a/sources/plugins/format/lang/en-ca.js
+++ b/sources/plugins/format/lang/en-ca.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'format', 'en-ca', { 5CKEDITOR.plugins.setLang( 'format', 'en-ca', {
diff --git a/sources/plugins/format/lang/en-gb.js b/sources/plugins/format/lang/en-gb.js
index 0cbf24a..a91bcbf 100644
--- a/sources/plugins/format/lang/en-gb.js
+++ b/sources/plugins/format/lang/en-gb.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'format', 'en-gb', { 5CKEDITOR.plugins.setLang( 'format', 'en-gb', {
diff --git a/sources/plugins/format/lang/en.js b/sources/plugins/format/lang/en.js
index 0ae1b65..3a6ebda 100644
--- a/sources/plugins/format/lang/en.js
+++ b/sources/plugins/format/lang/en.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'format', 'en', { 5CKEDITOR.plugins.setLang( 'format', 'en', {
diff --git a/sources/plugins/format/lang/eo.js b/sources/plugins/format/lang/eo.js
index 7bac1bc..0d77730 100644
--- a/sources/plugins/format/lang/eo.js
+++ b/sources/plugins/format/lang/eo.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'format', 'eo', { 5CKEDITOR.plugins.setLang( 'format', 'eo', {
diff --git a/sources/plugins/format/lang/es-mx.js b/sources/plugins/format/lang/es-mx.js
new file mode 100644
index 0000000..d311012
--- /dev/null
+++ b/sources/plugins/format/lang/es-mx.js
@@ -0,0 +1,18 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'format', 'es-mx', {
6 label: 'Formato',
7 panelTitle: 'Formato de párrafo',
8 tag_address: 'Dirección',
9 tag_div: 'Normal (DIV)',
10 tag_h1: 'Encabezado 1',
11 tag_h2: 'Encabezado 2',
12 tag_h3: 'Encabezado 3',
13 tag_h4: 'Encabezado 4',
14 tag_h5: 'Encabezado 5',
15 tag_h6: 'Encabezado 6',
16 tag_p: 'Normal',
17 tag_pre: 'Formateado'
18} );
diff --git a/sources/plugins/format/lang/es.js b/sources/plugins/format/lang/es.js
index 8cba087..549f611 100644
--- a/sources/plugins/format/lang/es.js
+++ b/sources/plugins/format/lang/es.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'format', 'es', { 5CKEDITOR.plugins.setLang( 'format', 'es', {
diff --git a/sources/plugins/format/lang/et.js b/sources/plugins/format/lang/et.js
index 3f717b5..43bc350 100644
--- a/sources/plugins/format/lang/et.js
+++ b/sources/plugins/format/lang/et.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'format', 'et', { 5CKEDITOR.plugins.setLang( 'format', 'et', {
diff --git a/sources/plugins/format/lang/eu.js b/sources/plugins/format/lang/eu.js
index 4629fdf..18832bc 100644
--- a/sources/plugins/format/lang/eu.js
+++ b/sources/plugins/format/lang/eu.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'format', 'eu', { 5CKEDITOR.plugins.setLang( 'format', 'eu', {
diff --git a/sources/plugins/format/lang/fa.js b/sources/plugins/format/lang/fa.js
index af6f8b2..c92db53 100644
--- a/sources/plugins/format/lang/fa.js
+++ b/sources/plugins/format/lang/fa.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'format', 'fa', { 5CKEDITOR.plugins.setLang( 'format', 'fa', {
diff --git a/sources/plugins/format/lang/fi.js b/sources/plugins/format/lang/fi.js
index 6595551..249183d 100644
--- a/sources/plugins/format/lang/fi.js
+++ b/sources/plugins/format/lang/fi.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'format', 'fi', { 5CKEDITOR.plugins.setLang( 'format', 'fi', {
diff --git a/sources/plugins/format/lang/fo.js b/sources/plugins/format/lang/fo.js
index 2e89522..2c88021 100644
--- a/sources/plugins/format/lang/fo.js
+++ b/sources/plugins/format/lang/fo.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'format', 'fo', { 5CKEDITOR.plugins.setLang( 'format', 'fo', {
diff --git a/sources/plugins/format/lang/fr-ca.js b/sources/plugins/format/lang/fr-ca.js
index 167850b..8f190c2 100644
--- a/sources/plugins/format/lang/fr-ca.js
+++ b/sources/plugins/format/lang/fr-ca.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'format', 'fr-ca', { 5CKEDITOR.plugins.setLang( 'format', 'fr-ca', {
diff --git a/sources/plugins/format/lang/fr.js b/sources/plugins/format/lang/fr.js
index 4a76b58..6962da7 100644
--- a/sources/plugins/format/lang/fr.js
+++ b/sources/plugins/format/lang/fr.js
@@ -1,12 +1,12 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'format', 'fr', { 5CKEDITOR.plugins.setLang( 'format', 'fr', {
6 label: 'Format', 6 label: 'Format',
7 panelTitle: 'Format de paragraphe', 7 panelTitle: 'Format de paragraphe',
8 tag_address: 'Adresse', 8 tag_address: 'Adresse',
9 tag_div: 'Normal (DIV)', 9 tag_div: 'Division',
10 tag_h1: 'Titre 1', 10 tag_h1: 'Titre 1',
11 tag_h2: 'Titre 2', 11 tag_h2: 'Titre 2',
12 tag_h3: 'Titre 3', 12 tag_h3: 'Titre 3',
@@ -14,5 +14,5 @@ CKEDITOR.plugins.setLang( 'format', 'fr', {
14 tag_h5: 'Titre 5', 14 tag_h5: 'Titre 5',
15 tag_h6: 'Titre 6', 15 tag_h6: 'Titre 6',
16 tag_p: 'Normal', 16 tag_p: 'Normal',
17 tag_pre: 'Formaté' 17 tag_pre: 'Préformaté'
18} ); 18} );
diff --git a/sources/plugins/format/lang/gl.js b/sources/plugins/format/lang/gl.js
index 78b96c5..d14946c 100644
--- a/sources/plugins/format/lang/gl.js
+++ b/sources/plugins/format/lang/gl.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'format', 'gl', { 5CKEDITOR.plugins.setLang( 'format', 'gl', {
diff --git a/sources/plugins/format/lang/gu.js b/sources/plugins/format/lang/gu.js
index 27e5836..8d8897a 100644
--- a/sources/plugins/format/lang/gu.js
+++ b/sources/plugins/format/lang/gu.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'format', 'gu', { 5CKEDITOR.plugins.setLang( 'format', 'gu', {
diff --git a/sources/plugins/format/lang/he.js b/sources/plugins/format/lang/he.js
index c5a6a81..5fb53a7 100644
--- a/sources/plugins/format/lang/he.js
+++ b/sources/plugins/format/lang/he.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'format', 'he', { 5CKEDITOR.plugins.setLang( 'format', 'he', {
diff --git a/sources/plugins/format/lang/hi.js b/sources/plugins/format/lang/hi.js
index 0e490c3..ce4224d 100644
--- a/sources/plugins/format/lang/hi.js
+++ b/sources/plugins/format/lang/hi.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'format', 'hi', { 5CKEDITOR.plugins.setLang( 'format', 'hi', {
diff --git a/sources/plugins/format/lang/hr.js b/sources/plugins/format/lang/hr.js
index 004b853..fbafb0e 100644
--- a/sources/plugins/format/lang/hr.js
+++ b/sources/plugins/format/lang/hr.js
@@ -1,18 +1,18 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'format', 'hr', { 5CKEDITOR.plugins.setLang( 'format', 'hr', {
6 label: 'Format', 6 label: 'Format',
7 panelTitle: 'Format', 7 panelTitle: 'Format paragrafa',
8 tag_address: 'Address', 8 tag_address: 'Adresa',
9 tag_div: 'Normal (DIV)', 9 tag_div: 'Normalno (DIV)',
10 tag_h1: 'Heading 1', 10 tag_h1: 'Naslov 1',
11 tag_h2: 'Heading 2', 11 tag_h2: 'Naslov 2',
12 tag_h3: 'Heading 3', 12 tag_h3: 'Naslov 3',
13 tag_h4: 'Heading 4', 13 tag_h4: 'Naslov 4',
14 tag_h5: 'Heading 5', 14 tag_h5: 'Naslov 5',
15 tag_h6: 'Heading 6', 15 tag_h6: 'Naslov 6',
16 tag_p: 'Normal', 16 tag_p: 'Normalno',
17 tag_pre: 'Formatirano' 17 tag_pre: 'Formatirano'
18} ); 18} );
diff --git a/sources/plugins/format/lang/hu.js b/sources/plugins/format/lang/hu.js
index dc1c6b3..a5467cf 100644
--- a/sources/plugins/format/lang/hu.js
+++ b/sources/plugins/format/lang/hu.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'format', 'hu', { 5CKEDITOR.plugins.setLang( 'format', 'hu', {
diff --git a/sources/plugins/format/lang/id.js b/sources/plugins/format/lang/id.js
index 3abaaa5..e8e83f7 100644
--- a/sources/plugins/format/lang/id.js
+++ b/sources/plugins/format/lang/id.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'format', 'id', { 5CKEDITOR.plugins.setLang( 'format', 'id', {
diff --git a/sources/plugins/format/lang/is.js b/sources/plugins/format/lang/is.js
index eb13f4a..862e52e 100644
--- a/sources/plugins/format/lang/is.js
+++ b/sources/plugins/format/lang/is.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'format', 'is', { 5CKEDITOR.plugins.setLang( 'format', 'is', {
diff --git a/sources/plugins/format/lang/it.js b/sources/plugins/format/lang/it.js
index 973f76f..6d47500 100644
--- a/sources/plugins/format/lang/it.js
+++ b/sources/plugins/format/lang/it.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'format', 'it', { 5CKEDITOR.plugins.setLang( 'format', 'it', {
diff --git a/sources/plugins/format/lang/ja.js b/sources/plugins/format/lang/ja.js
index 7b826b1..a611f3d 100644
--- a/sources/plugins/format/lang/ja.js
+++ b/sources/plugins/format/lang/ja.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'format', 'ja', { 5CKEDITOR.plugins.setLang( 'format', 'ja', {
diff --git a/sources/plugins/format/lang/ka.js b/sources/plugins/format/lang/ka.js
index 9c23b82..f5c95b8 100644
--- a/sources/plugins/format/lang/ka.js
+++ b/sources/plugins/format/lang/ka.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'format', 'ka', { 5CKEDITOR.plugins.setLang( 'format', 'ka', {
diff --git a/sources/plugins/format/lang/km.js b/sources/plugins/format/lang/km.js
index 5e385bc..74ca185 100644
--- a/sources/plugins/format/lang/km.js
+++ b/sources/plugins/format/lang/km.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'format', 'km', { 5CKEDITOR.plugins.setLang( 'format', 'km', {
diff --git a/sources/plugins/format/lang/ko.js b/sources/plugins/format/lang/ko.js
index db08c82..e5ed44c 100644
--- a/sources/plugins/format/lang/ko.js
+++ b/sources/plugins/format/lang/ko.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'format', 'ko', { 5CKEDITOR.plugins.setLang( 'format', 'ko', {
diff --git a/sources/plugins/format/lang/ku.js b/sources/plugins/format/lang/ku.js
index 4a94342..277bf8e 100644
--- a/sources/plugins/format/lang/ku.js
+++ b/sources/plugins/format/lang/ku.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'format', 'ku', { 5CKEDITOR.plugins.setLang( 'format', 'ku', {
diff --git a/sources/plugins/format/lang/lt.js b/sources/plugins/format/lang/lt.js
index 06e55f5..9733443 100644
--- a/sources/plugins/format/lang/lt.js
+++ b/sources/plugins/format/lang/lt.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'format', 'lt', { 5CKEDITOR.plugins.setLang( 'format', 'lt', {
diff --git a/sources/plugins/format/lang/lv.js b/sources/plugins/format/lang/lv.js
index 7cf1391..ace8333 100644
--- a/sources/plugins/format/lang/lv.js
+++ b/sources/plugins/format/lang/lv.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'format', 'lv', { 5CKEDITOR.plugins.setLang( 'format', 'lv', {
diff --git a/sources/plugins/format/lang/mk.js b/sources/plugins/format/lang/mk.js
index 7ff725a..5c0bb3b 100644
--- a/sources/plugins/format/lang/mk.js
+++ b/sources/plugins/format/lang/mk.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'format', 'mk', { 5CKEDITOR.plugins.setLang( 'format', 'mk', {
diff --git a/sources/plugins/format/lang/mn.js b/sources/plugins/format/lang/mn.js
index 15f58e1..f3c0dfd 100644
--- a/sources/plugins/format/lang/mn.js
+++ b/sources/plugins/format/lang/mn.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'format', 'mn', { 5CKEDITOR.plugins.setLang( 'format', 'mn', {
diff --git a/sources/plugins/format/lang/ms.js b/sources/plugins/format/lang/ms.js
index b41b828..56deba9 100644
--- a/sources/plugins/format/lang/ms.js
+++ b/sources/plugins/format/lang/ms.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'format', 'ms', { 5CKEDITOR.plugins.setLang( 'format', 'ms', {
diff --git a/sources/plugins/format/lang/nb.js b/sources/plugins/format/lang/nb.js
index a216014..6bfffb5 100644
--- a/sources/plugins/format/lang/nb.js
+++ b/sources/plugins/format/lang/nb.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'format', 'nb', { 5CKEDITOR.plugins.setLang( 'format', 'nb', {
diff --git a/sources/plugins/format/lang/nl.js b/sources/plugins/format/lang/nl.js
index 532b7f1..ef2676a 100644
--- a/sources/plugins/format/lang/nl.js
+++ b/sources/plugins/format/lang/nl.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'format', 'nl', { 5CKEDITOR.plugins.setLang( 'format', 'nl', {
diff --git a/sources/plugins/format/lang/no.js b/sources/plugins/format/lang/no.js
index 2995c96..d9b0586 100644
--- a/sources/plugins/format/lang/no.js
+++ b/sources/plugins/format/lang/no.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'format', 'no', { 5CKEDITOR.plugins.setLang( 'format', 'no', {
diff --git a/sources/plugins/format/lang/oc.js b/sources/plugins/format/lang/oc.js
new file mode 100644
index 0000000..5083f3f
--- /dev/null
+++ b/sources/plugins/format/lang/oc.js
@@ -0,0 +1,18 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'format', 'oc', {
6 label: 'Format',
7 panelTitle: 'Format de paragraf',
8 tag_address: 'Adreça',
9 tag_div: 'Division (DIV)',
10 tag_h1: 'Títol 1',
11 tag_h2: 'Títol 2',
12 tag_h3: 'Títol 3',
13 tag_h4: 'Títol 4',
14 tag_h5: 'Títol 5',
15 tag_h6: 'Títol 6',
16 tag_p: 'Normal',
17 tag_pre: 'Preformatat'
18} );
diff --git a/sources/plugins/format/lang/pl.js b/sources/plugins/format/lang/pl.js
index e1ca1c7..d1274f9 100644
--- a/sources/plugins/format/lang/pl.js
+++ b/sources/plugins/format/lang/pl.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'format', 'pl', { 5CKEDITOR.plugins.setLang( 'format', 'pl', {
diff --git a/sources/plugins/format/lang/pt-br.js b/sources/plugins/format/lang/pt-br.js
index c8b28ea..151d1d1 100644
--- a/sources/plugins/format/lang/pt-br.js
+++ b/sources/plugins/format/lang/pt-br.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'format', 'pt-br', { 5CKEDITOR.plugins.setLang( 'format', 'pt-br', {
diff --git a/sources/plugins/format/lang/pt.js b/sources/plugins/format/lang/pt.js
index 93f1ad0..013021d 100644
--- a/sources/plugins/format/lang/pt.js
+++ b/sources/plugins/format/lang/pt.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'format', 'pt', { 5CKEDITOR.plugins.setLang( 'format', 'pt', {
diff --git a/sources/plugins/format/lang/ro.js b/sources/plugins/format/lang/ro.js
index 5cb6a07..549a1b5 100644
--- a/sources/plugins/format/lang/ro.js
+++ b/sources/plugins/format/lang/ro.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'format', 'ro', { 5CKEDITOR.plugins.setLang( 'format', 'ro', {
diff --git a/sources/plugins/format/lang/ru.js b/sources/plugins/format/lang/ru.js
index 00d0407..8e63455 100644
--- a/sources/plugins/format/lang/ru.js
+++ b/sources/plugins/format/lang/ru.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'format', 'ru', { 5CKEDITOR.plugins.setLang( 'format', 'ru', {
diff --git a/sources/plugins/format/lang/si.js b/sources/plugins/format/lang/si.js
index ae531f0..f27eb7f 100644
--- a/sources/plugins/format/lang/si.js
+++ b/sources/plugins/format/lang/si.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'format', 'si', { 5CKEDITOR.plugins.setLang( 'format', 'si', {
diff --git a/sources/plugins/format/lang/sk.js b/sources/plugins/format/lang/sk.js
index 4edfa2e..30ca66c 100644
--- a/sources/plugins/format/lang/sk.js
+++ b/sources/plugins/format/lang/sk.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'format', 'sk', { 5CKEDITOR.plugins.setLang( 'format', 'sk', {
diff --git a/sources/plugins/format/lang/sl.js b/sources/plugins/format/lang/sl.js
index 0019aab..2dad54f 100644
--- a/sources/plugins/format/lang/sl.js
+++ b/sources/plugins/format/lang/sl.js
@@ -1,10 +1,10 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'format', 'sl', { 5CKEDITOR.plugins.setLang( 'format', 'sl', {
6 label: 'Oblika', 6 label: 'Oblika',
7 panelTitle: 'Oblika', 7 panelTitle: 'Oblika odstavka',
8 tag_address: 'Napis', 8 tag_address: 'Napis',
9 tag_div: 'Navaden (DIV)', 9 tag_div: 'Navaden (DIV)',
10 tag_h1: 'Naslov 1', 10 tag_h1: 'Naslov 1',
diff --git a/sources/plugins/format/lang/sq.js b/sources/plugins/format/lang/sq.js
index 8945d05..5ddb6ef 100644
--- a/sources/plugins/format/lang/sq.js
+++ b/sources/plugins/format/lang/sq.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'format', 'sq', { 5CKEDITOR.plugins.setLang( 'format', 'sq', {
diff --git a/sources/plugins/format/lang/sr-latn.js b/sources/plugins/format/lang/sr-latn.js
index 3e7449d..d971950 100644
--- a/sources/plugins/format/lang/sr-latn.js
+++ b/sources/plugins/format/lang/sr-latn.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'format', 'sr-latn', { 5CKEDITOR.plugins.setLang( 'format', 'sr-latn', {
diff --git a/sources/plugins/format/lang/sr.js b/sources/plugins/format/lang/sr.js
index 40f1d1c..012a14d 100644
--- a/sources/plugins/format/lang/sr.js
+++ b/sources/plugins/format/lang/sr.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'format', 'sr', { 5CKEDITOR.plugins.setLang( 'format', 'sr', {
diff --git a/sources/plugins/format/lang/sv.js b/sources/plugins/format/lang/sv.js
index 47dab57..31850e0 100644
--- a/sources/plugins/format/lang/sv.js
+++ b/sources/plugins/format/lang/sv.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'format', 'sv', { 5CKEDITOR.plugins.setLang( 'format', 'sv', {
diff --git a/sources/plugins/format/lang/th.js b/sources/plugins/format/lang/th.js
index 31c0dba..4c8a1d2 100644
--- a/sources/plugins/format/lang/th.js
+++ b/sources/plugins/format/lang/th.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'format', 'th', { 5CKEDITOR.plugins.setLang( 'format', 'th', {
diff --git a/sources/plugins/format/lang/tr.js b/sources/plugins/format/lang/tr.js
index eb311a9..2de6ce2 100644
--- a/sources/plugins/format/lang/tr.js
+++ b/sources/plugins/format/lang/tr.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'format', 'tr', { 5CKEDITOR.plugins.setLang( 'format', 'tr', {
diff --git a/sources/plugins/format/lang/tt.js b/sources/plugins/format/lang/tt.js
index d44a9ac..160a192 100644
--- a/sources/plugins/format/lang/tt.js
+++ b/sources/plugins/format/lang/tt.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'format', 'tt', { 5CKEDITOR.plugins.setLang( 'format', 'tt', {
diff --git a/sources/plugins/format/lang/ug.js b/sources/plugins/format/lang/ug.js
index 504fee4..0be2a15 100644
--- a/sources/plugins/format/lang/ug.js
+++ b/sources/plugins/format/lang/ug.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'format', 'ug', { 5CKEDITOR.plugins.setLang( 'format', 'ug', {
diff --git a/sources/plugins/format/lang/uk.js b/sources/plugins/format/lang/uk.js
index c3cffe1..2e2726d 100644
--- a/sources/plugins/format/lang/uk.js
+++ b/sources/plugins/format/lang/uk.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'format', 'uk', { 5CKEDITOR.plugins.setLang( 'format', 'uk', {
diff --git a/sources/plugins/format/lang/vi.js b/sources/plugins/format/lang/vi.js
index a066065..d051440 100644
--- a/sources/plugins/format/lang/vi.js
+++ b/sources/plugins/format/lang/vi.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'format', 'vi', { 5CKEDITOR.plugins.setLang( 'format', 'vi', {
diff --git a/sources/plugins/format/lang/zh-cn.js b/sources/plugins/format/lang/zh-cn.js
index 895be82..addaa23 100644
--- a/sources/plugins/format/lang/zh-cn.js
+++ b/sources/plugins/format/lang/zh-cn.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'format', 'zh-cn', { 5CKEDITOR.plugins.setLang( 'format', 'zh-cn', {
diff --git a/sources/plugins/format/lang/zh.js b/sources/plugins/format/lang/zh.js
index ba826aa..bb044ad 100644
--- a/sources/plugins/format/lang/zh.js
+++ b/sources/plugins/format/lang/zh.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'format', 'zh', { 5CKEDITOR.plugins.setLang( 'format', 'zh', {
diff --git a/sources/plugins/format/plugin.js b/sources/plugins/format/plugin.js
index d990b8e..54d43ca 100644
--- a/sources/plugins/format/plugin.js
+++ b/sources/plugins/format/plugin.js
@@ -1,12 +1,12 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
6CKEDITOR.plugins.add( 'format', { 6CKEDITOR.plugins.add( 'format', {
7 requires: 'richcombo', 7 requires: 'richcombo',
8 // jscs:disable maximumLineLength 8 // jscs:disable maximumLineLength
9 lang: 'af,ar,bg,bn,bs,ca,cs,cy,da,de,de-ch,el,en,en-au,en-ca,en-gb,eo,es,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,pl,pt,pt-br,ro,ru,si,sk,sl,sq,sr,sr-latn,sv,th,tr,tt,ug,uk,vi,zh,zh-cn', // %REMOVE_LINE_CORE% 9 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', // %REMOVE_LINE_CORE%
10 // jscs:enable maximumLineLength 10 // jscs:enable maximumLineLength
11 init: function( editor ) { 11 init: function( editor ) {
12 if ( editor.blockless ) 12 if ( editor.blockless )
@@ -69,7 +69,7 @@ CKEDITOR.plugins.add( 'format', {
69 69
70 editor[ style.checkActive( elementPath, editor ) ? 'removeStyle' : 'applyStyle' ]( style ); 70 editor[ style.checkActive( elementPath, editor ) ? 'removeStyle' : 'applyStyle' ]( style );
71 71
72 // Save the undo snapshot after all changes are affected. (#4899) 72 // Save the undo snapshot after all changes are affected. (http://dev.ckeditor.com/ticket/4899)
73 setTimeout( function() { 73 setTimeout( function() {
74 editor.fire( 'saveSnapshot' ); 74 editor.fire( 'saveSnapshot' );
75 }, 0 ); 75 }, 0 );
diff --git a/sources/plugins/horizontalrule/icons/hidpi/horizontalrule.png b/sources/plugins/horizontalrule/icons/hidpi/horizontalrule.png
index 433613d..ad97e09 100644
--- a/sources/plugins/horizontalrule/icons/hidpi/horizontalrule.png
+++ b/sources/plugins/horizontalrule/icons/hidpi/horizontalrule.png
Binary files differ
diff --git a/sources/plugins/horizontalrule/icons/horizontalrule.png b/sources/plugins/horizontalrule/icons/horizontalrule.png
index 4af9bc8..0592614 100644
--- a/sources/plugins/horizontalrule/icons/horizontalrule.png
+++ b/sources/plugins/horizontalrule/icons/horizontalrule.png
Binary files differ
diff --git a/sources/plugins/horizontalrule/lang/af.js b/sources/plugins/horizontalrule/lang/af.js
index 7a70679..9232187 100644
--- a/sources/plugins/horizontalrule/lang/af.js
+++ b/sources/plugins/horizontalrule/lang/af.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'horizontalrule', 'af', { 5CKEDITOR.plugins.setLang( 'horizontalrule', 'af', {
diff --git a/sources/plugins/horizontalrule/lang/ar.js b/sources/plugins/horizontalrule/lang/ar.js
index af5f04b..edf9101 100644
--- a/sources/plugins/horizontalrule/lang/ar.js
+++ b/sources/plugins/horizontalrule/lang/ar.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'horizontalrule', 'ar', { 5CKEDITOR.plugins.setLang( 'horizontalrule', 'ar', {
diff --git a/sources/plugins/horizontalrule/lang/az.js b/sources/plugins/horizontalrule/lang/az.js
new file mode 100644
index 0000000..2343630
--- /dev/null
+++ b/sources/plugins/horizontalrule/lang/az.js
@@ -0,0 +1,7 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'horizontalrule', 'az', {
6 toolbar: 'Sərhəd xətti yarat'
7} );
diff --git a/sources/plugins/horizontalrule/lang/bg.js b/sources/plugins/horizontalrule/lang/bg.js
index 9b66b34..b20914c 100644
--- a/sources/plugins/horizontalrule/lang/bg.js
+++ b/sources/plugins/horizontalrule/lang/bg.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'horizontalrule', 'bg', { 5CKEDITOR.plugins.setLang( 'horizontalrule', 'bg', {
diff --git a/sources/plugins/horizontalrule/lang/bn.js b/sources/plugins/horizontalrule/lang/bn.js
index d2b54cf..d846125 100644
--- a/sources/plugins/horizontalrule/lang/bn.js
+++ b/sources/plugins/horizontalrule/lang/bn.js
@@ -1,7 +1,7 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'horizontalrule', 'bn', { 5CKEDITOR.plugins.setLang( 'horizontalrule', 'bn', {
6 toolbar: ' কর' 6 toolbar: 'িক করি'
7} ); 7} );
diff --git a/sources/plugins/horizontalrule/lang/bs.js b/sources/plugins/horizontalrule/lang/bs.js
index 20643be..3917873 100644
--- a/sources/plugins/horizontalrule/lang/bs.js
+++ b/sources/plugins/horizontalrule/lang/bs.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'horizontalrule', 'bs', { 5CKEDITOR.plugins.setLang( 'horizontalrule', 'bs', {
diff --git a/sources/plugins/horizontalrule/lang/ca.js b/sources/plugins/horizontalrule/lang/ca.js
index cc37150..81d9457 100644
--- a/sources/plugins/horizontalrule/lang/ca.js
+++ b/sources/plugins/horizontalrule/lang/ca.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'horizontalrule', 'ca', { 5CKEDITOR.plugins.setLang( 'horizontalrule', 'ca', {
diff --git a/sources/plugins/horizontalrule/lang/cs.js b/sources/plugins/horizontalrule/lang/cs.js
index 385eb7d..5178139 100644
--- a/sources/plugins/horizontalrule/lang/cs.js
+++ b/sources/plugins/horizontalrule/lang/cs.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'horizontalrule', 'cs', { 5CKEDITOR.plugins.setLang( 'horizontalrule', 'cs', {
diff --git a/sources/plugins/horizontalrule/lang/cy.js b/sources/plugins/horizontalrule/lang/cy.js
index 7f52495..df74af5 100644
--- a/sources/plugins/horizontalrule/lang/cy.js
+++ b/sources/plugins/horizontalrule/lang/cy.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'horizontalrule', 'cy', { 5CKEDITOR.plugins.setLang( 'horizontalrule', 'cy', {
diff --git a/sources/plugins/horizontalrule/lang/da.js b/sources/plugins/horizontalrule/lang/da.js
index d1552dd..cd8cb2a 100644
--- a/sources/plugins/horizontalrule/lang/da.js
+++ b/sources/plugins/horizontalrule/lang/da.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'horizontalrule', 'da', { 5CKEDITOR.plugins.setLang( 'horizontalrule', 'da', {
diff --git a/sources/plugins/horizontalrule/lang/de-ch.js b/sources/plugins/horizontalrule/lang/de-ch.js
index 94d29d3..64230b5 100644
--- a/sources/plugins/horizontalrule/lang/de-ch.js
+++ b/sources/plugins/horizontalrule/lang/de-ch.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'horizontalrule', 'de-ch', { 5CKEDITOR.plugins.setLang( 'horizontalrule', 'de-ch', {
diff --git a/sources/plugins/horizontalrule/lang/de.js b/sources/plugins/horizontalrule/lang/de.js
index 6a474f2..a1705a6 100644
--- a/sources/plugins/horizontalrule/lang/de.js
+++ b/sources/plugins/horizontalrule/lang/de.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'horizontalrule', 'de', { 5CKEDITOR.plugins.setLang( 'horizontalrule', 'de', {
diff --git a/sources/plugins/horizontalrule/lang/el.js b/sources/plugins/horizontalrule/lang/el.js
index 293a090..d281f47 100644
--- a/sources/plugins/horizontalrule/lang/el.js
+++ b/sources/plugins/horizontalrule/lang/el.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'horizontalrule', 'el', { 5CKEDITOR.plugins.setLang( 'horizontalrule', 'el', {
diff --git a/sources/plugins/horizontalrule/lang/en-au.js b/sources/plugins/horizontalrule/lang/en-au.js
index 4491ce0..0548518 100644
--- a/sources/plugins/horizontalrule/lang/en-au.js
+++ b/sources/plugins/horizontalrule/lang/en-au.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'horizontalrule', 'en-au', { 5CKEDITOR.plugins.setLang( 'horizontalrule', 'en-au', {
diff --git a/sources/plugins/horizontalrule/lang/en-ca.js b/sources/plugins/horizontalrule/lang/en-ca.js
index 0a7320d..feab44d 100644
--- a/sources/plugins/horizontalrule/lang/en-ca.js
+++ b/sources/plugins/horizontalrule/lang/en-ca.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'horizontalrule', 'en-ca', { 5CKEDITOR.plugins.setLang( 'horizontalrule', 'en-ca', {
diff --git a/sources/plugins/horizontalrule/lang/en-gb.js b/sources/plugins/horizontalrule/lang/en-gb.js
index 4946b57..5cf987f 100644
--- a/sources/plugins/horizontalrule/lang/en-gb.js
+++ b/sources/plugins/horizontalrule/lang/en-gb.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'horizontalrule', 'en-gb', { 5CKEDITOR.plugins.setLang( 'horizontalrule', 'en-gb', {
diff --git a/sources/plugins/horizontalrule/lang/en.js b/sources/plugins/horizontalrule/lang/en.js
index 470b2d6..6c750d1 100644
--- a/sources/plugins/horizontalrule/lang/en.js
+++ b/sources/plugins/horizontalrule/lang/en.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'horizontalrule', 'en', { 5CKEDITOR.plugins.setLang( 'horizontalrule', 'en', {
diff --git a/sources/plugins/horizontalrule/lang/eo.js b/sources/plugins/horizontalrule/lang/eo.js
index d929aa2..f2ddd72 100644
--- a/sources/plugins/horizontalrule/lang/eo.js
+++ b/sources/plugins/horizontalrule/lang/eo.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'horizontalrule', 'eo', { 5CKEDITOR.plugins.setLang( 'horizontalrule', 'eo', {
diff --git a/sources/plugins/horizontalrule/lang/es-mx.js b/sources/plugins/horizontalrule/lang/es-mx.js
new file mode 100644
index 0000000..9c389cc
--- /dev/null
+++ b/sources/plugins/horizontalrule/lang/es-mx.js
@@ -0,0 +1,7 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'horizontalrule', 'es-mx', {
6 toolbar: 'Insertar una línea horizontal'
7} );
diff --git a/sources/plugins/horizontalrule/lang/es.js b/sources/plugins/horizontalrule/lang/es.js
index 4d913c2..ac42e14 100644
--- a/sources/plugins/horizontalrule/lang/es.js
+++ b/sources/plugins/horizontalrule/lang/es.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'horizontalrule', 'es', { 5CKEDITOR.plugins.setLang( 'horizontalrule', 'es', {
diff --git a/sources/plugins/horizontalrule/lang/et.js b/sources/plugins/horizontalrule/lang/et.js
index e1ccddc..156b1c1 100644
--- a/sources/plugins/horizontalrule/lang/et.js
+++ b/sources/plugins/horizontalrule/lang/et.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'horizontalrule', 'et', { 5CKEDITOR.plugins.setLang( 'horizontalrule', 'et', {
diff --git a/sources/plugins/horizontalrule/lang/eu.js b/sources/plugins/horizontalrule/lang/eu.js
index dfdc82a..7eeabb8 100644
--- a/sources/plugins/horizontalrule/lang/eu.js
+++ b/sources/plugins/horizontalrule/lang/eu.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'horizontalrule', 'eu', { 5CKEDITOR.plugins.setLang( 'horizontalrule', 'eu', {
diff --git a/sources/plugins/horizontalrule/lang/fa.js b/sources/plugins/horizontalrule/lang/fa.js
index 7224067..f18d1d0 100644
--- a/sources/plugins/horizontalrule/lang/fa.js
+++ b/sources/plugins/horizontalrule/lang/fa.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'horizontalrule', 'fa', { 5CKEDITOR.plugins.setLang( 'horizontalrule', 'fa', {
diff --git a/sources/plugins/horizontalrule/lang/fi.js b/sources/plugins/horizontalrule/lang/fi.js
index 8baa64b..c18cd70 100644
--- a/sources/plugins/horizontalrule/lang/fi.js
+++ b/sources/plugins/horizontalrule/lang/fi.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'horizontalrule', 'fi', { 5CKEDITOR.plugins.setLang( 'horizontalrule', 'fi', {
diff --git a/sources/plugins/horizontalrule/lang/fo.js b/sources/plugins/horizontalrule/lang/fo.js
index 72bf857..d0d3bea 100644
--- a/sources/plugins/horizontalrule/lang/fo.js
+++ b/sources/plugins/horizontalrule/lang/fo.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'horizontalrule', 'fo', { 5CKEDITOR.plugins.setLang( 'horizontalrule', 'fo', {
diff --git a/sources/plugins/horizontalrule/lang/fr-ca.js b/sources/plugins/horizontalrule/lang/fr-ca.js
index a220917..a232a14 100644
--- a/sources/plugins/horizontalrule/lang/fr-ca.js
+++ b/sources/plugins/horizontalrule/lang/fr-ca.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'horizontalrule', 'fr-ca', { 5CKEDITOR.plugins.setLang( 'horizontalrule', 'fr-ca', {
diff --git a/sources/plugins/horizontalrule/lang/fr.js b/sources/plugins/horizontalrule/lang/fr.js
index 18d5d0a..c0c6322 100644
--- a/sources/plugins/horizontalrule/lang/fr.js
+++ b/sources/plugins/horizontalrule/lang/fr.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'horizontalrule', 'fr', { 5CKEDITOR.plugins.setLang( 'horizontalrule', 'fr', {
diff --git a/sources/plugins/horizontalrule/lang/gl.js b/sources/plugins/horizontalrule/lang/gl.js
index f25cda4..6215e71 100644
--- a/sources/plugins/horizontalrule/lang/gl.js
+++ b/sources/plugins/horizontalrule/lang/gl.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'horizontalrule', 'gl', { 5CKEDITOR.plugins.setLang( 'horizontalrule', 'gl', {
diff --git a/sources/plugins/horizontalrule/lang/gu.js b/sources/plugins/horizontalrule/lang/gu.js
index e51de2c..f6abc17 100644
--- a/sources/plugins/horizontalrule/lang/gu.js
+++ b/sources/plugins/horizontalrule/lang/gu.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'horizontalrule', 'gu', { 5CKEDITOR.plugins.setLang( 'horizontalrule', 'gu', {
diff --git a/sources/plugins/horizontalrule/lang/he.js b/sources/plugins/horizontalrule/lang/he.js
index 620371b..56c4ebd 100644
--- a/sources/plugins/horizontalrule/lang/he.js
+++ b/sources/plugins/horizontalrule/lang/he.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'horizontalrule', 'he', { 5CKEDITOR.plugins.setLang( 'horizontalrule', 'he', {
diff --git a/sources/plugins/horizontalrule/lang/hi.js b/sources/plugins/horizontalrule/lang/hi.js
index a7f6271..1d576c2 100644
--- a/sources/plugins/horizontalrule/lang/hi.js
+++ b/sources/plugins/horizontalrule/lang/hi.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'horizontalrule', 'hi', { 5CKEDITOR.plugins.setLang( 'horizontalrule', 'hi', {
diff --git a/sources/plugins/horizontalrule/lang/hr.js b/sources/plugins/horizontalrule/lang/hr.js
index 8f516aa..53d80f3 100644
--- a/sources/plugins/horizontalrule/lang/hr.js
+++ b/sources/plugins/horizontalrule/lang/hr.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'horizontalrule', 'hr', { 5CKEDITOR.plugins.setLang( 'horizontalrule', 'hr', {
diff --git a/sources/plugins/horizontalrule/lang/hu.js b/sources/plugins/horizontalrule/lang/hu.js
index 80ffd9c..31fcbfc 100644
--- a/sources/plugins/horizontalrule/lang/hu.js
+++ b/sources/plugins/horizontalrule/lang/hu.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'horizontalrule', 'hu', { 5CKEDITOR.plugins.setLang( 'horizontalrule', 'hu', {
diff --git a/sources/plugins/horizontalrule/lang/id.js b/sources/plugins/horizontalrule/lang/id.js
index 0bc3596..3d341ad 100644
--- a/sources/plugins/horizontalrule/lang/id.js
+++ b/sources/plugins/horizontalrule/lang/id.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'horizontalrule', 'id', { 5CKEDITOR.plugins.setLang( 'horizontalrule', 'id', {
diff --git a/sources/plugins/horizontalrule/lang/is.js b/sources/plugins/horizontalrule/lang/is.js
index 4d02e8a..1515abc 100644
--- a/sources/plugins/horizontalrule/lang/is.js
+++ b/sources/plugins/horizontalrule/lang/is.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'horizontalrule', 'is', { 5CKEDITOR.plugins.setLang( 'horizontalrule', 'is', {
diff --git a/sources/plugins/horizontalrule/lang/it.js b/sources/plugins/horizontalrule/lang/it.js
index e811c5e..c2e23fb 100644
--- a/sources/plugins/horizontalrule/lang/it.js
+++ b/sources/plugins/horizontalrule/lang/it.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'horizontalrule', 'it', { 5CKEDITOR.plugins.setLang( 'horizontalrule', 'it', {
diff --git a/sources/plugins/horizontalrule/lang/ja.js b/sources/plugins/horizontalrule/lang/ja.js
index 0f59213..e174c32 100644
--- a/sources/plugins/horizontalrule/lang/ja.js
+++ b/sources/plugins/horizontalrule/lang/ja.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'horizontalrule', 'ja', { 5CKEDITOR.plugins.setLang( 'horizontalrule', 'ja', {
diff --git a/sources/plugins/horizontalrule/lang/ka.js b/sources/plugins/horizontalrule/lang/ka.js
index 95498bd..2c798c2 100644
--- a/sources/plugins/horizontalrule/lang/ka.js
+++ b/sources/plugins/horizontalrule/lang/ka.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'horizontalrule', 'ka', { 5CKEDITOR.plugins.setLang( 'horizontalrule', 'ka', {
diff --git a/sources/plugins/horizontalrule/lang/km.js b/sources/plugins/horizontalrule/lang/km.js
index dbc3082..8c8ab9f 100644
--- a/sources/plugins/horizontalrule/lang/km.js
+++ b/sources/plugins/horizontalrule/lang/km.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'horizontalrule', 'km', { 5CKEDITOR.plugins.setLang( 'horizontalrule', 'km', {
diff --git a/sources/plugins/horizontalrule/lang/ko.js b/sources/plugins/horizontalrule/lang/ko.js
index e91d21b..69df02c 100644
--- a/sources/plugins/horizontalrule/lang/ko.js
+++ b/sources/plugins/horizontalrule/lang/ko.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'horizontalrule', 'ko', { 5CKEDITOR.plugins.setLang( 'horizontalrule', 'ko', {
diff --git a/sources/plugins/horizontalrule/lang/ku.js b/sources/plugins/horizontalrule/lang/ku.js
index 530ee75..c8a0fa5 100644
--- a/sources/plugins/horizontalrule/lang/ku.js
+++ b/sources/plugins/horizontalrule/lang/ku.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'horizontalrule', 'ku', { 5CKEDITOR.plugins.setLang( 'horizontalrule', 'ku', {
diff --git a/sources/plugins/horizontalrule/lang/lt.js b/sources/plugins/horizontalrule/lang/lt.js
index a44e8cd..86cbdaf 100644
--- a/sources/plugins/horizontalrule/lang/lt.js
+++ b/sources/plugins/horizontalrule/lang/lt.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'horizontalrule', 'lt', { 5CKEDITOR.plugins.setLang( 'horizontalrule', 'lt', {
diff --git a/sources/plugins/horizontalrule/lang/lv.js b/sources/plugins/horizontalrule/lang/lv.js
index 9afbc93..a227a00 100644
--- a/sources/plugins/horizontalrule/lang/lv.js
+++ b/sources/plugins/horizontalrule/lang/lv.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'horizontalrule', 'lv', { 5CKEDITOR.plugins.setLang( 'horizontalrule', 'lv', {
diff --git a/sources/plugins/horizontalrule/lang/mk.js b/sources/plugins/horizontalrule/lang/mk.js
index 41607c7..51efe3d 100644
--- a/sources/plugins/horizontalrule/lang/mk.js
+++ b/sources/plugins/horizontalrule/lang/mk.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'horizontalrule', 'mk', { 5CKEDITOR.plugins.setLang( 'horizontalrule', 'mk', {
diff --git a/sources/plugins/horizontalrule/lang/mn.js b/sources/plugins/horizontalrule/lang/mn.js
index 92e4d5e..bd0ba0f 100644
--- a/sources/plugins/horizontalrule/lang/mn.js
+++ b/sources/plugins/horizontalrule/lang/mn.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'horizontalrule', 'mn', { 5CKEDITOR.plugins.setLang( 'horizontalrule', 'mn', {
diff --git a/sources/plugins/horizontalrule/lang/ms.js b/sources/plugins/horizontalrule/lang/ms.js
index 84da30f..fa22359 100644
--- a/sources/plugins/horizontalrule/lang/ms.js
+++ b/sources/plugins/horizontalrule/lang/ms.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'horizontalrule', 'ms', { 5CKEDITOR.plugins.setLang( 'horizontalrule', 'ms', {
diff --git a/sources/plugins/horizontalrule/lang/nb.js b/sources/plugins/horizontalrule/lang/nb.js
index 49bc752..7edefa5 100644
--- a/sources/plugins/horizontalrule/lang/nb.js
+++ b/sources/plugins/horizontalrule/lang/nb.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'horizontalrule', 'nb', { 5CKEDITOR.plugins.setLang( 'horizontalrule', 'nb', {
diff --git a/sources/plugins/horizontalrule/lang/nl.js b/sources/plugins/horizontalrule/lang/nl.js
index 0030102..47efd3f 100644
--- a/sources/plugins/horizontalrule/lang/nl.js
+++ b/sources/plugins/horizontalrule/lang/nl.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'horizontalrule', 'nl', { 5CKEDITOR.plugins.setLang( 'horizontalrule', 'nl', {
diff --git a/sources/plugins/horizontalrule/lang/no.js b/sources/plugins/horizontalrule/lang/no.js
index 11c153e..009fc4b 100644
--- a/sources/plugins/horizontalrule/lang/no.js
+++ b/sources/plugins/horizontalrule/lang/no.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'horizontalrule', 'no', { 5CKEDITOR.plugins.setLang( 'horizontalrule', 'no', {
diff --git a/sources/plugins/horizontalrule/lang/oc.js b/sources/plugins/horizontalrule/lang/oc.js
new file mode 100644
index 0000000..42d1797
--- /dev/null
+++ b/sources/plugins/horizontalrule/lang/oc.js
@@ -0,0 +1,7 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'horizontalrule', 'oc', {
6 toolbar: 'Inserir una linha orizontala'
7} );
diff --git a/sources/plugins/horizontalrule/lang/pl.js b/sources/plugins/horizontalrule/lang/pl.js
index 0676e76..0604f4d 100644
--- a/sources/plugins/horizontalrule/lang/pl.js
+++ b/sources/plugins/horizontalrule/lang/pl.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'horizontalrule', 'pl', { 5CKEDITOR.plugins.setLang( 'horizontalrule', 'pl', {
diff --git a/sources/plugins/horizontalrule/lang/pt-br.js b/sources/plugins/horizontalrule/lang/pt-br.js
index 2ef26de..038616b 100644
--- a/sources/plugins/horizontalrule/lang/pt-br.js
+++ b/sources/plugins/horizontalrule/lang/pt-br.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'horizontalrule', 'pt-br', { 5CKEDITOR.plugins.setLang( 'horizontalrule', 'pt-br', {
diff --git a/sources/plugins/horizontalrule/lang/pt.js b/sources/plugins/horizontalrule/lang/pt.js
index 097c34d..c8d710d 100644
--- a/sources/plugins/horizontalrule/lang/pt.js
+++ b/sources/plugins/horizontalrule/lang/pt.js
@@ -1,7 +1,7 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'horizontalrule', 'pt', { 5CKEDITOR.plugins.setLang( 'horizontalrule', 'pt', {
6 toolbar: 'Inserir Linha Horizontal' 6 toolbar: 'Inserir linha horizontal'
7} ); 7} );
diff --git a/sources/plugins/horizontalrule/lang/ro.js b/sources/plugins/horizontalrule/lang/ro.js
index 7a82af9..4b8f9b8 100644
--- a/sources/plugins/horizontalrule/lang/ro.js
+++ b/sources/plugins/horizontalrule/lang/ro.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'horizontalrule', 'ro', { 5CKEDITOR.plugins.setLang( 'horizontalrule', 'ro', {
diff --git a/sources/plugins/horizontalrule/lang/ru.js b/sources/plugins/horizontalrule/lang/ru.js
index 02751af..5424765 100644
--- a/sources/plugins/horizontalrule/lang/ru.js
+++ b/sources/plugins/horizontalrule/lang/ru.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'horizontalrule', 'ru', { 5CKEDITOR.plugins.setLang( 'horizontalrule', 'ru', {
diff --git a/sources/plugins/horizontalrule/lang/si.js b/sources/plugins/horizontalrule/lang/si.js
index d4a6e83..b0bb9b1 100644
--- a/sources/plugins/horizontalrule/lang/si.js
+++ b/sources/plugins/horizontalrule/lang/si.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'horizontalrule', 'si', { 5CKEDITOR.plugins.setLang( 'horizontalrule', 'si', {
diff --git a/sources/plugins/horizontalrule/lang/sk.js b/sources/plugins/horizontalrule/lang/sk.js
index b49d505..07bce6c 100644
--- a/sources/plugins/horizontalrule/lang/sk.js
+++ b/sources/plugins/horizontalrule/lang/sk.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'horizontalrule', 'sk', { 5CKEDITOR.plugins.setLang( 'horizontalrule', 'sk', {
diff --git a/sources/plugins/horizontalrule/lang/sl.js b/sources/plugins/horizontalrule/lang/sl.js
index 0d51bdd..44e19ae 100644
--- a/sources/plugins/horizontalrule/lang/sl.js
+++ b/sources/plugins/horizontalrule/lang/sl.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'horizontalrule', 'sl', { 5CKEDITOR.plugins.setLang( 'horizontalrule', 'sl', {
diff --git a/sources/plugins/horizontalrule/lang/sq.js b/sources/plugins/horizontalrule/lang/sq.js
index af33e7b..9fa6a40 100644
--- a/sources/plugins/horizontalrule/lang/sq.js
+++ b/sources/plugins/horizontalrule/lang/sq.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'horizontalrule', 'sq', { 5CKEDITOR.plugins.setLang( 'horizontalrule', 'sq', {
diff --git a/sources/plugins/horizontalrule/lang/sr-latn.js b/sources/plugins/horizontalrule/lang/sr-latn.js
index f29a557..eb16b98 100644
--- a/sources/plugins/horizontalrule/lang/sr-latn.js
+++ b/sources/plugins/horizontalrule/lang/sr-latn.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'horizontalrule', 'sr-latn', { 5CKEDITOR.plugins.setLang( 'horizontalrule', 'sr-latn', {
diff --git a/sources/plugins/horizontalrule/lang/sr.js b/sources/plugins/horizontalrule/lang/sr.js
index a76fe42..a260b4a 100644
--- a/sources/plugins/horizontalrule/lang/sr.js
+++ b/sources/plugins/horizontalrule/lang/sr.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'horizontalrule', 'sr', { 5CKEDITOR.plugins.setLang( 'horizontalrule', 'sr', {
diff --git a/sources/plugins/horizontalrule/lang/sv.js b/sources/plugins/horizontalrule/lang/sv.js
index b1315e0..bf6280f 100644
--- a/sources/plugins/horizontalrule/lang/sv.js
+++ b/sources/plugins/horizontalrule/lang/sv.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'horizontalrule', 'sv', { 5CKEDITOR.plugins.setLang( 'horizontalrule', 'sv', {
diff --git a/sources/plugins/horizontalrule/lang/th.js b/sources/plugins/horizontalrule/lang/th.js
index a166cb3..164f496 100644
--- a/sources/plugins/horizontalrule/lang/th.js
+++ b/sources/plugins/horizontalrule/lang/th.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'horizontalrule', 'th', { 5CKEDITOR.plugins.setLang( 'horizontalrule', 'th', {
diff --git a/sources/plugins/horizontalrule/lang/tr.js b/sources/plugins/horizontalrule/lang/tr.js
index 3fd721f..aeb6fb8 100644
--- a/sources/plugins/horizontalrule/lang/tr.js
+++ b/sources/plugins/horizontalrule/lang/tr.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'horizontalrule', 'tr', { 5CKEDITOR.plugins.setLang( 'horizontalrule', 'tr', {
diff --git a/sources/plugins/horizontalrule/lang/tt.js b/sources/plugins/horizontalrule/lang/tt.js
index 74891c3..411166d 100644
--- a/sources/plugins/horizontalrule/lang/tt.js
+++ b/sources/plugins/horizontalrule/lang/tt.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'horizontalrule', 'tt', { 5CKEDITOR.plugins.setLang( 'horizontalrule', 'tt', {
diff --git a/sources/plugins/horizontalrule/lang/ug.js b/sources/plugins/horizontalrule/lang/ug.js
index bf2bfa7..92f2434 100644
--- a/sources/plugins/horizontalrule/lang/ug.js
+++ b/sources/plugins/horizontalrule/lang/ug.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'horizontalrule', 'ug', { 5CKEDITOR.plugins.setLang( 'horizontalrule', 'ug', {
diff --git a/sources/plugins/horizontalrule/lang/uk.js b/sources/plugins/horizontalrule/lang/uk.js
index b6b56ef..d84f428 100644
--- a/sources/plugins/horizontalrule/lang/uk.js
+++ b/sources/plugins/horizontalrule/lang/uk.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'horizontalrule', 'uk', { 5CKEDITOR.plugins.setLang( 'horizontalrule', 'uk', {
diff --git a/sources/plugins/horizontalrule/lang/vi.js b/sources/plugins/horizontalrule/lang/vi.js
index 040055f..339eb06 100644
--- a/sources/plugins/horizontalrule/lang/vi.js
+++ b/sources/plugins/horizontalrule/lang/vi.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'horizontalrule', 'vi', { 5CKEDITOR.plugins.setLang( 'horizontalrule', 'vi', {
diff --git a/sources/plugins/horizontalrule/lang/zh-cn.js b/sources/plugins/horizontalrule/lang/zh-cn.js
index 29dc458..2dfdb50 100644
--- a/sources/plugins/horizontalrule/lang/zh-cn.js
+++ b/sources/plugins/horizontalrule/lang/zh-cn.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'horizontalrule', 'zh-cn', { 5CKEDITOR.plugins.setLang( 'horizontalrule', 'zh-cn', {
diff --git a/sources/plugins/horizontalrule/lang/zh.js b/sources/plugins/horizontalrule/lang/zh.js
index 79e80b0..b2e4272 100644
--- a/sources/plugins/horizontalrule/lang/zh.js
+++ b/sources/plugins/horizontalrule/lang/zh.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'horizontalrule', 'zh', { 5CKEDITOR.plugins.setLang( 'horizontalrule', 'zh', {
diff --git a/sources/plugins/horizontalrule/plugin.js b/sources/plugins/horizontalrule/plugin.js
index c7faa89..6f2186c 100644
--- a/sources/plugins/horizontalrule/plugin.js
+++ b/sources/plugins/horizontalrule/plugin.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -24,7 +24,7 @@
24 // Register a plugin named "horizontalrule". 24 // Register a plugin named "horizontalrule".
25 CKEDITOR.plugins.add( pluginName, { 25 CKEDITOR.plugins.add( pluginName, {
26 // jscs:disable maximumLineLength 26 // jscs:disable maximumLineLength
27 lang: 'af,ar,bg,bn,bs,ca,cs,cy,da,de,de-ch,el,en,en-au,en-ca,en-gb,eo,es,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,pl,pt,pt-br,ro,ru,si,sk,sl,sq,sr,sr-latn,sv,th,tr,tt,ug,uk,vi,zh,zh-cn', // %REMOVE_LINE_CORE% 27 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', // %REMOVE_LINE_CORE%
28 // jscs:enable maximumLineLength 28 // jscs:enable maximumLineLength
29 icons: 'horizontalrule', // %REMOVE_LINE_CORE% 29 icons: 'horizontalrule', // %REMOVE_LINE_CORE%
30 hidpi: true, // %REMOVE_LINE_CORE% 30 hidpi: true, // %REMOVE_LINE_CORE%
diff --git a/sources/plugins/html5video/dialogs/html5video.js b/sources/plugins/html5video/dialogs/html5video.js
new file mode 100644
index 0000000..76799e7
--- /dev/null
+++ b/sources/plugins/html5video/dialogs/html5video.js
@@ -0,0 +1,161 @@
1CKEDITOR.dialog.add( 'html5video', function( editor ) {
2 return {
3 title: editor.lang.html5video.title,
4 minWidth: 500,
5 minHeight: 100,
6 contents: [ {
7 id: 'info',
8 label: editor.lang.html5video.infoLabel,
9 elements: [ {
10 type: 'vbox',
11 padding: 0,
12 children: [
13 {
14 type: 'hbox',
15 widths: [ '365px', '110px' ],
16 align: 'right',
17 children: [ {
18 type: 'text',
19 id: 'url',
20 label: editor.lang.html5video.allowed,
21 required: true,
22 validate: CKEDITOR.dialog.validate.notEmpty( editor.lang.html5video.urlMissing ),
23 setup: function( widget ) {
24 this.setValue( widget.data.src );
25 },
26 commit: function( widget ) {
27 widget.setData( 'src', this.getValue() );
28 }
29 },
30 {
31 type: 'button',
32 id: 'browse',
33 // v-align with the 'txtUrl' field.
34 // TODO: We need something better than a fixed size here.
35 style: 'display:inline-block;margin-top:14px;',
36 align: 'center',
37 label: editor.lang.common.browseServer,
38 hidden: true,
39 filebrowser: 'info:url'
40 } ]
41 } ]
42 },
43 {
44 type: 'checkbox',
45 id: 'responsive',
46 label: editor.lang.html5video.responsive,
47 setup: function( widget ) {
48 this.setValue( widget.data.responsive );
49 },
50 commit: function( widget ) {
51 widget.setData( 'responsive', this.getValue()?'true':'' );
52 }
53 },
54 {
55 type: 'hbox',
56 id: 'size',
57 children: [ {
58 type: 'text',
59 id: 'width',
60 label: editor.lang.common.width,
61 setup: function( widget ) {
62 if ( widget.data.width ) {
63 this.setValue( widget.data.width );
64 }
65 },
66 commit: function( widget ) {
67 widget.setData( 'width', this.getValue() );
68 }
69 },
70 {
71 type: 'text',
72 id: 'height',
73 label: editor.lang.common.height,
74 setup: function( widget ) {
75 if ( widget.data.height ) {
76 this.setValue( widget.data.height );
77 }
78 },
79 commit: function( widget ) {
80 widget.setData( 'height', this.getValue() );
81 }
82 },
83 ]
84 },
85
86 {
87 type: 'hbox',
88 id: 'alignment',
89 children: [ {
90 type: 'radio',
91 id: 'align',
92 label: editor.lang.common.align,
93 items: [
94 [editor.lang.common.alignCenter, 'center'],
95 [editor.lang.common.alignLeft, 'left'],
96 [editor.lang.common.alignRight, 'right'],
97 [editor.lang.common.alignNone, 'none']
98 ],
99 'default': 'center',
100 setup: function( widget ) {
101 if ( widget.data.align ) {
102 this.setValue( widget.data.align );
103 }
104 },
105 commit: function( widget ) {
106 widget.setData( 'align', this.getValue() );
107 }
108 } ]
109 } ]
110 },
111 {
112 id: 'Upload',
113 hidden: true,
114 filebrowser: 'uploadButton',
115 label: editor.lang.html5video.upload,
116 elements: [ {
117 type: 'file',
118 id: 'upload',
119 label: editor.lang.html5video.btnUpload,
120 style: 'height:40px',
121 size: 38
122 },
123 {
124 type: 'fileButton',
125 id: 'uploadButton',
126 filebrowser: 'info:url',
127 label: editor.lang.html5video.btnUpload,
128 'for': [ 'Upload', 'upload' ]
129 } ]
130 },
131 {
132 id: 'advanced',
133 label: editor.lang.html5video.advanced,
134 elements: [ {
135 type: 'vbox',
136 padding: 0,
137 children: [ {
138 type: 'hbox',
139 children: [ {
140 type: 'radio',
141 id: 'autoplay',
142 label: editor.lang.html5video.autoplay,
143 items: [
144 [editor.lang.html5video.yes, 'yes'],
145 [editor.lang.html5video.no, 'no']
146 ],
147 'default': 'no',
148 setup: function( widget ) {
149 if ( widget.data.autoplay ) {
150 this.setValue( widget.data.autoplay );
151 }
152 },
153 commit: function( widget ) {
154 widget.setData( 'autoplay', this.getValue() );
155 }
156 } ]
157 } ]
158 } ]
159 } ]
160 };
161} );
diff --git a/sources/plugins/html5video/icons/html5video.png b/sources/plugins/html5video/icons/html5video.png
new file mode 100644
index 0000000..a246517
--- /dev/null
+++ b/sources/plugins/html5video/icons/html5video.png
Binary files differ
diff --git a/sources/plugins/html5video/lang/de.js b/sources/plugins/html5video/lang/de.js
new file mode 100644
index 0000000..ddf4c8b
--- /dev/null
+++ b/sources/plugins/html5video/lang/de.js
@@ -0,0 +1,14 @@
1CKEDITOR.plugins.setLang( 'html5video', 'de', {
2 button: 'HTML5 Video einfügen',
3 title: 'HTML5 Video',
4 infoLabel: 'Video Infos',
5 allowed: 'Erlaubte Dateierweiterungen: MP4, WebM, Ogv',
6 urlMissing: 'Sie haben keine URL zur Video-Datei angegeben.',
7 videoProperties: 'Video-Einstellungen',
8 upload: 'Hochladen',
9 btnUpload: 'Zum Server senden',
10 advanced: 'Erweitert',
11 autoplay: 'Autoplay?',
12 yes: 'Ja',
13 no: 'Nein'
14} );
diff --git a/sources/plugins/html5video/lang/en.js b/sources/plugins/html5video/lang/en.js
new file mode 100644
index 0000000..40eae12
--- /dev/null
+++ b/sources/plugins/html5video/lang/en.js
@@ -0,0 +1,15 @@
1CKEDITOR.plugins.setLang( 'html5video', 'en', {
2 button: 'Insert HTML5 video',
3 title: 'HTML5 video',
4 infoLabel: 'Video info',
5 allowed: 'Allowed file extensions: MP4, WebM, Ogv',
6 urlMissing: 'Video source URL is missing.',
7 videoProperties: 'Video properties',
8 upload: 'Upload',
9 btnUpload: 'Send it to the server',
10 advanced: 'Advanced',
11 autoplay: 'Autoplay?',
12 yes: 'Yes',
13 no: 'No',
14 responsive: 'Responsive width'
15} );
diff --git a/sources/plugins/html5video/lang/es.js b/sources/plugins/html5video/lang/es.js
new file mode 100644
index 0000000..4077935
--- /dev/null
+++ b/sources/plugins/html5video/lang/es.js
@@ -0,0 +1,14 @@
1CKEDITOR.plugins.setLang( 'html5video', 'es', {
2 button: 'Insertar video HTML5',
3 title: 'Video HTML5',
4 infoLabel: 'Información del video',
5 allowed: 'Extensiones de archivo permitidas: MP4, WebM, Ogv',
6 urlMissing: 'La URL del video no puede estar vacia.',
7 videoProperties: 'Propiedades del video',
8 upload: 'Cargar',
9 btnUpload: 'Enviar al servidor',
10 advanced: 'Avanzado',
11 autoplay: '¿Reproducir automáticamente?',
12 yes: 'Si',
13 no: 'No'
14} );
diff --git a/sources/plugins/html5video/lang/eu.js b/sources/plugins/html5video/lang/eu.js
new file mode 100644
index 0000000..78635d7
--- /dev/null
+++ b/sources/plugins/html5video/lang/eu.js
@@ -0,0 +1,14 @@
1CKEDITOR.plugins.setLang( 'html5video', 'eu', {
2 button: 'Txertatu HTML5 bideoa',
3 title: 'HTML5 bideoa',
4 infoLabel: 'Bideoaren informazioa',
5 allowed: 'Baimendutako fitxategi luzapenak: MP4, WebM, Ogv',
6 urlMissing: 'Bideoaren URLak ezin du hutsik egon.',
7 videoProperties: 'Bideoaren propietateak',
8 upload: 'Kargatu',
9 btnUpload: 'Bidali zerbitzarira',
10 advanced: 'Aurreratua',
11 autoplay: 'Automatikoki erreproduzitu?',
12 yes: 'Bai',
13 no: 'Ez'
14} );
diff --git a/sources/plugins/html5video/lang/fr.js b/sources/plugins/html5video/lang/fr.js
new file mode 100644
index 0000000..326f622
--- /dev/null
+++ b/sources/plugins/html5video/lang/fr.js
@@ -0,0 +1,14 @@
1CKEDITOR.plugins.setLang( 'html5video', 'fr', {
2 button: 'Insérer un lecteur video HTML5',
3 title: 'HTML5 video',
4 infoLabel: 'Informations video',
5 allowed: 'Extensions de fichiers autorisées: MP4, WebM, Ogv',
6 urlMissing: 'URL de la source video manquante. Veuillez la renseigner.',
7 videoProperties: 'Propriétés Video',
8 upload: 'Télécharger',
9 btnUpload: 'Envoyer vers le serveur',
10 advanced: 'Avancé',
11 autoplay: 'Jouer automatiquement ?',
12 yes: 'Oui',
13 no: 'Non'
14} );
diff --git a/sources/plugins/html5video/lang/ru.js b/sources/plugins/html5video/lang/ru.js
new file mode 100644
index 0000000..cd5a195
--- /dev/null
+++ b/sources/plugins/html5video/lang/ru.js
@@ -0,0 +1,15 @@
1CKEDITOR.plugins.setLang( 'html5video', 'ru', {
2 button: 'Вставить HTML5 видео',
3 title: 'HTML5 видео',
4 infoLabel: 'Видео',
5 allowed: 'Допустимые расширения файлов: MP4, WebM, Ogv',
6 urlMissing: 'Не выбран источник видео',
7 videoProperties: 'Свойства видео',
8 upload: 'Загрузить',
9 btnUpload: 'Загрузить на сервер',
10 advanced: 'Дополнительно',
11 autoplay: 'Автовоспроизведение',
12 yes: 'Да',
13 no: 'Нет',
14 responsive: 'Адаптивная ширина'
15} );
diff --git a/sources/plugins/html5video/lang/uk.js b/sources/plugins/html5video/lang/uk.js
new file mode 100644
index 0000000..32b920c
--- /dev/null
+++ b/sources/plugins/html5video/lang/uk.js
@@ -0,0 +1,14 @@
1CKEDITOR.plugins.setLang( 'html5video', 'uk', {
2 button: 'Вставити HTML5 відео',
3 title: 'HTML5 відео',
4 infoLabel: 'Інформація',
5 allowed: 'Допустимі розширення файлів: MP4, WebM, Ogv',
6 urlMissing: 'Не обрано джерела відео',
7 videoProperties: 'Властивості відео',
8 upload: 'Відвантажити',
9 btnUpload: 'Відвантажити на сервер',
10 advanced: 'Додатково',
11 autoplay: 'Автовідтворення?',
12 yes: 'Так',
13 no: 'Ні'
14} );
diff --git a/sources/plugins/html5video/lang/uz.js b/sources/plugins/html5video/lang/uz.js
new file mode 100644
index 0000000..5fec9a2
--- /dev/null
+++ b/sources/plugins/html5video/lang/uz.js
@@ -0,0 +1,14 @@
1CKEDITOR.plugins.setLang( 'html5video', 'uz', {
2 button: 'HTML5 video qo‘shing',
3 title: 'HTML5 video',
4 infoLabel: 'Video ma\'lumot',
5 allowed: 'Ruxsat etilgan kengaytmalar: MP4, WebM, Ogv',
6 urlMissing: 'Video\'ning URL manbasi topilmadi.',
7 videoProperties: 'Video xususiyatlari',
8 upload: 'Yuklash',
9 btnUpload: 'Serverga jo‘natish',
10 advanced: 'Kengaytrilgan',
11 autoplay: 'Avtoijro?',
12 yes: 'Ha',
13 no: 'Yo‘q'
14} );
diff --git a/sources/plugins/html5video/plugin.js b/sources/plugins/html5video/plugin.js
new file mode 100644
index 0000000..bf51285
--- /dev/null
+++ b/sources/plugins/html5video/plugin.js
@@ -0,0 +1,139 @@
1CKEDITOR.plugins.add( 'html5video', {
2 requires: 'widget',
3 lang: 'de,en,eu,es,ru,uk,fr',
4 icons: 'html5video',
5 init: function( editor ) {
6 editor.widgets.add( 'html5video', {
7 button: editor.lang.html5video.button,
8 template: '<div class="ckeditor-html5-video"></div>',
9 /*
10 * Allowed content rules (http://docs.ckeditor.com/#!/guide/dev_allowed_content_rules):
11 * - div-s with text-align,float,margin-left,margin-right inline style rules and required ckeditor-html5-video class.
12 * - video tags with src, controls, width and height attributes.
13 */
14 allowedContent: 'div[data-responsive](!ckeditor-html5-video){text-align,float,margin-left,margin-right}; video[src,controls,autoplay,width, height]{max-width,height};',
15 requiredContent: 'div(ckeditor-html5-video); video[src,controls];',
16 upcast: function( element ) {
17 return element.name === 'div' && element.hasClass( 'ckeditor-html5-video' );
18 },
19 dialog: 'html5video',
20 init: function() {
21 var src = '';
22 var autoplay = '';
23 var align = this.element.getStyle( 'text-align' );
24
25 var width = '';
26 var height = '';
27
28 // If there's a child (the video element)
29 if ( this.element.getChild( 0 ) ) {
30 // get it's attributes.
31 src = this.element.getChild( 0 ).getAttribute( 'src' );
32 width = this.element.getChild( 0 ).getAttribute( 'width' );
33 height = this.element.getChild( 0 ).getAttribute( 'height' );
34 autoplay = this.element.getChild( 0 ).getAttribute( 'autoplay' );
35 responsive = this.element.getAttribute( 'data-responsive' );
36 }
37
38 if ( src ) {
39 this.setData( 'src', src );
40
41 if ( align ) {
42 this.setData( 'align', align );
43 } else {
44 this.setData( 'align', 'none' );
45 }
46
47 if ( width ) {
48 this.setData( 'width', width );
49 }
50
51 if ( height ) {
52 this.setData( 'height', height );
53 }
54
55 if ( autoplay ) {
56 this.setData( 'autoplay', 'yes' );
57 }
58
59 if ( responsive ) {
60 this.setData( 'responsive', responsive );
61 }
62 }
63 },
64 data: function() {
65 // If there is an video source
66 if ( this.data.src ) {
67 // and there isn't a child (the video element)
68 if ( !this.element.getChild( 0 ) ) {
69 // Create a new <video> element.
70 var videoElement = new CKEDITOR.dom.element( 'video' );
71 // Set the controls attribute.
72 videoElement.setAttribute( 'controls', 'controls' );
73 // Append it to the container of the plugin.
74 this.element.append( videoElement );
75 }
76 this.element.getChild( 0 ).setAttribute( 'src', this.data.src );
77 if (this.data.width) this.element.getChild( 0 ).setAttribute( 'width', this.data.width );
78 if (this.data.height) this.element.getChild( 0 ).setAttribute( 'height', this.data.height );
79
80 if ( this.data.responsive ) {
81 this.element.setAttribute("data-responsive", this.data.responsive);
82 this.element.getChild( 0 ).setStyle( 'max-width', '100%' );
83 this.element.getChild( 0 ).setStyle( 'height', 'auto' );
84 } else {
85 this.element.getChild( 0 ).removeStyle( 'max-width' );
86 this.element.getChild( 0 ).removeStyle( 'height' );
87 }
88 }
89
90 this.element.removeStyle( 'float' );
91 this.element.removeStyle( 'margin-left' );
92 this.element.removeStyle( 'margin-right' );
93
94 if ( this.data.align === 'none' ) {
95 this.element.removeStyle( 'text-align' );
96 } else {
97 this.element.setStyle( 'text-align', this.data.align );
98 }
99
100 if ( this.data.align === 'left' ) {
101 this.element.setStyle( 'float', this.data.align );
102 this.element.setStyle( 'margin-right', '10px' );
103 } else if ( this.data.align === 'right' ) {
104 this.element.setStyle( 'float', this.data.align );
105 this.element.setStyle( 'margin-left', '10px' );
106 }
107
108 if ( this.element.getChild( 0 ) ) {
109 if ( this.data.autoplay === 'yes' ) {
110 this.element.getChild( 0 ).setAttribute( 'autoplay', 'autoplay' );
111 } else {
112 this.element.getChild( 0 ).removeAttribute( 'autoplay' );
113 }
114 }
115 }
116 } );
117
118 if ( editor.contextMenu ) {
119 editor.addMenuGroup( 'html5videoGroup' );
120 editor.addMenuItem( 'html5videoPropertiesItem', {
121 label: editor.lang.html5video.videoProperties,
122 icon: 'html5video',
123 command: 'html5video',
124 group: 'html5videoGroup'
125 });
126
127 editor.contextMenu.addListener( function( element ) {
128 if ( element &&
129 element.getChild( 0 ) &&
130 element.getChild( 0 ).hasClass &&
131 element.getChild( 0 ).hasClass( 'ckeditor-html5-video' ) ) {
132 return { html5videoPropertiesItem: CKEDITOR.TRISTATE_OFF };
133 }
134 });
135 }
136
137 CKEDITOR.dialog.add( 'html5video', this.path + 'dialogs/html5video.js' );
138 }
139} );
diff --git a/sources/plugins/htmlwriter/plugin.js b/sources/plugins/htmlwriter/plugin.js
index 063c966..61d6ac6 100644
--- a/sources/plugins/htmlwriter/plugin.js
+++ b/sources/plugins/htmlwriter/plugin.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -69,7 +69,7 @@ CKEDITOR.htmlWriter = CKEDITOR.tools.createClass( {
69 69
70 this._.indent = 0; 70 this._.indent = 0;
71 this._.indentation = ''; 71 this._.indentation = '';
72 // Indicate preformatted block context status. (#5789) 72 // Indicate preformatted block context status. (http://dev.ckeditor.com/ticket/5789)
73 this._.inPre = 0; 73 this._.inPre = 0;
74 this._.rules = {}; 74 this._.rules = {};
75 75
@@ -180,7 +180,7 @@ CKEDITOR.htmlWriter = CKEDITOR.tools.createClass( {
180 180
181 if ( typeof attValue == 'string' ) { 181 if ( typeof attValue == 'string' ) {
182 this.forceSimpleAmpersand && ( attValue = attValue.replace( /&amp;/g, '&' ) ); 182 this.forceSimpleAmpersand && ( attValue = attValue.replace( /&amp;/g, '&' ) );
183 // Browsers don't always escape special character in attribute values. (#4683, #4719). 183 // Browsers don't always escape special character in attribute values. (http://dev.ckeditor.com/ticket/4683, http://dev.ckeditor.com/ticket/4719).
184 attValue = CKEDITOR.tools.htmlEncodeAttr( attValue ); 184 attValue = CKEDITOR.tools.htmlEncodeAttr( attValue );
185 } 185 }
186 186
@@ -289,6 +289,7 @@ CKEDITOR.htmlWriter = CKEDITOR.tools.createClass( {
289 this._.indentation = ''; 289 this._.indentation = '';
290 this._.afterCloser = 0; 290 this._.afterCloser = 0;
291 this._.inPre = 0; 291 this._.inPre = 0;
292 this._.needsSpace = 0;
292 }, 293 },
293 294
294 /** 295 /**
diff --git a/sources/plugins/htmlwriter/samples/outputforflash.html b/sources/plugins/htmlwriter/samples/outputforflash.html
index a4318f3..f72616d 100644
--- a/sources/plugins/htmlwriter/samples/outputforflash.html
+++ b/sources/plugins/htmlwriter/samples/outputforflash.html
@@ -1,6 +1,6 @@
1<!DOCTYPE html> 1<!DOCTYPE html>
2<!-- 2<!--
3Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 3Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
4For licensing, see LICENSE.md or http://ckeditor.com/license 4For licensing, see LICENSE.md or http://ckeditor.com/license
5--> 5-->
6<html> 6<html>
@@ -275,7 +275,7 @@ For licensing, see LICENSE.md or http://ckeditor.com/license
275 CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a> 275 CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a>
276 </p> 276 </p>
277 <p id="copy"> 277 <p id="copy">
278 Copyright &copy; 2003-2016, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico 278 Copyright &copy; 2003-2017, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico
279 Knabben. All rights reserved. 279 Knabben. All rights reserved.
280 </p> 280 </p>
281 </div> 281 </div>
diff --git a/sources/plugins/htmlwriter/samples/outputhtml.html b/sources/plugins/htmlwriter/samples/outputhtml.html
index f7123a1..a433025 100644
--- a/sources/plugins/htmlwriter/samples/outputhtml.html
+++ b/sources/plugins/htmlwriter/samples/outputhtml.html
@@ -1,6 +1,6 @@
1<!DOCTYPE html> 1<!DOCTYPE html>
2<!-- 2<!--
3Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 3Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
4For licensing, see LICENSE.md or http://ckeditor.com/license 4For licensing, see LICENSE.md or http://ckeditor.com/license
5--> 5-->
6<html> 6<html>
@@ -216,7 +216,7 @@ CKEDITOR.replace( '<em>textarea_id</em>', {
216 CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a> 216 CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a>
217 </p> 217 </p>
218 <p id="copy"> 218 <p id="copy">
219 Copyright &copy; 2003-2016, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico 219 Copyright &copy; 2003-2017, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico
220 Knabben. All rights reserved. 220 Knabben. All rights reserved.
221 </p> 221 </p>
222 </div> 222 </div>
diff --git a/sources/plugins/iframe/dialogs/iframe.js b/sources/plugins/iframe/dialogs/iframe.js
index 4b874ca..22c24f7 100644
--- a/sources/plugins/iframe/dialogs/iframe.js
+++ b/sources/plugins/iframe/dialogs/iframe.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -65,7 +65,7 @@
65 65
66 // A subset of the specified attributes/styles 66 // A subset of the specified attributes/styles
67 // should also be applied on the fake element to 67 // should also be applied on the fake element to
68 // have better visual effect. (#5240) 68 // have better visual effect. (http://dev.ckeditor.com/ticket/5240)
69 var extraStyles = {}, 69 var extraStyles = {},
70 extraAttributes = {}; 70 extraAttributes = {};
71 this.commitContent( iframeNode, extraStyles, extraAttributes ); 71 this.commitContent( iframeNode, extraStyles, extraAttributes );
diff --git a/sources/plugins/iframe/icons/hidpi/iframe.png b/sources/plugins/iframe/icons/hidpi/iframe.png
index ff17604..d99d0f3 100644
--- a/sources/plugins/iframe/icons/hidpi/iframe.png
+++ b/sources/plugins/iframe/icons/hidpi/iframe.png
Binary files differ
diff --git a/sources/plugins/iframe/icons/iframe.png b/sources/plugins/iframe/icons/iframe.png
index f72d191..a2f5545 100644
--- a/sources/plugins/iframe/icons/iframe.png
+++ b/sources/plugins/iframe/icons/iframe.png
Binary files differ
diff --git a/sources/plugins/iframe/lang/af.js b/sources/plugins/iframe/lang/af.js
index 4770879..9fa9387 100644
--- a/sources/plugins/iframe/lang/af.js
+++ b/sources/plugins/iframe/lang/af.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'iframe', 'af', { 5CKEDITOR.plugins.setLang( 'iframe', 'af', {
diff --git a/sources/plugins/iframe/lang/ar.js b/sources/plugins/iframe/lang/ar.js
index 1b5c046..6388d75 100644
--- a/sources/plugins/iframe/lang/ar.js
+++ b/sources/plugins/iframe/lang/ar.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'iframe', 'ar', { 5CKEDITOR.plugins.setLang( 'iframe', 'ar', {
diff --git a/sources/plugins/iframe/lang/az.js b/sources/plugins/iframe/lang/az.js
new file mode 100644
index 0000000..e4b72e6
--- /dev/null
+++ b/sources/plugins/iframe/lang/az.js
@@ -0,0 +1,11 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'iframe', 'az', {
6 border: 'Çərçivə sərhədlərini göstər',
7 noUrl: 'Çərçivənin ünvanı daxil edin',
8 scrolling: 'Şürüşdürmələri əlavə et',
9 title: 'İFRAME elementinin alətləri',
10 toolbar: 'İFRAME'
11} );
diff --git a/sources/plugins/iframe/lang/bg.js b/sources/plugins/iframe/lang/bg.js
index d365742..4adb22c 100644
--- a/sources/plugins/iframe/lang/bg.js
+++ b/sources/plugins/iframe/lang/bg.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'iframe', 'bg', { 5CKEDITOR.plugins.setLang( 'iframe', 'bg', {
diff --git a/sources/plugins/iframe/lang/bn.js b/sources/plugins/iframe/lang/bn.js
index 0a91e7c..3479c1f 100644
--- a/sources/plugins/iframe/lang/bn.js
+++ b/sources/plugins/iframe/lang/bn.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'iframe', 'bn', { 5CKEDITOR.plugins.setLang( 'iframe', 'bn', {
diff --git a/sources/plugins/iframe/lang/bs.js b/sources/plugins/iframe/lang/bs.js
index 63eb7b6..51ca8a7 100644
--- a/sources/plugins/iframe/lang/bs.js
+++ b/sources/plugins/iframe/lang/bs.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'iframe', 'bs', { 5CKEDITOR.plugins.setLang( 'iframe', 'bs', {
diff --git a/sources/plugins/iframe/lang/ca.js b/sources/plugins/iframe/lang/ca.js
index 0802715..a0d7d92 100644
--- a/sources/plugins/iframe/lang/ca.js
+++ b/sources/plugins/iframe/lang/ca.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'iframe', 'ca', { 5CKEDITOR.plugins.setLang( 'iframe', 'ca', {
diff --git a/sources/plugins/iframe/lang/cs.js b/sources/plugins/iframe/lang/cs.js
index fa3e85c..388fa61 100644
--- a/sources/plugins/iframe/lang/cs.js
+++ b/sources/plugins/iframe/lang/cs.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'iframe', 'cs', { 5CKEDITOR.plugins.setLang( 'iframe', 'cs', {
diff --git a/sources/plugins/iframe/lang/cy.js b/sources/plugins/iframe/lang/cy.js
index e89adc7..a23b2ff 100644
--- a/sources/plugins/iframe/lang/cy.js
+++ b/sources/plugins/iframe/lang/cy.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'iframe', 'cy', { 5CKEDITOR.plugins.setLang( 'iframe', 'cy', {
diff --git a/sources/plugins/iframe/lang/da.js b/sources/plugins/iframe/lang/da.js
index d14b8cd..88b4fab 100644
--- a/sources/plugins/iframe/lang/da.js
+++ b/sources/plugins/iframe/lang/da.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'iframe', 'da', { 5CKEDITOR.plugins.setLang( 'iframe', 'da', {
diff --git a/sources/plugins/iframe/lang/de-ch.js b/sources/plugins/iframe/lang/de-ch.js
index 233b55b..2a56ccf 100644
--- a/sources/plugins/iframe/lang/de-ch.js
+++ b/sources/plugins/iframe/lang/de-ch.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'iframe', 'de-ch', { 5CKEDITOR.plugins.setLang( 'iframe', 'de-ch', {
diff --git a/sources/plugins/iframe/lang/de.js b/sources/plugins/iframe/lang/de.js
index 184387f..7988dfa 100644
--- a/sources/plugins/iframe/lang/de.js
+++ b/sources/plugins/iframe/lang/de.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'iframe', 'de', { 5CKEDITOR.plugins.setLang( 'iframe', 'de', {
diff --git a/sources/plugins/iframe/lang/el.js b/sources/plugins/iframe/lang/el.js
index b09fdf9..5abdfb0 100644
--- a/sources/plugins/iframe/lang/el.js
+++ b/sources/plugins/iframe/lang/el.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'iframe', 'el', { 5CKEDITOR.plugins.setLang( 'iframe', 'el', {
diff --git a/sources/plugins/iframe/lang/en-au.js b/sources/plugins/iframe/lang/en-au.js
index 9f0885f..59048db 100644
--- a/sources/plugins/iframe/lang/en-au.js
+++ b/sources/plugins/iframe/lang/en-au.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'iframe', 'en-au', { 5CKEDITOR.plugins.setLang( 'iframe', 'en-au', {
diff --git a/sources/plugins/iframe/lang/en-ca.js b/sources/plugins/iframe/lang/en-ca.js
index 20d438c..401ff49 100644
--- a/sources/plugins/iframe/lang/en-ca.js
+++ b/sources/plugins/iframe/lang/en-ca.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'iframe', 'en-ca', { 5CKEDITOR.plugins.setLang( 'iframe', 'en-ca', {
diff --git a/sources/plugins/iframe/lang/en-gb.js b/sources/plugins/iframe/lang/en-gb.js
index 86a3fc0..78d4000 100644
--- a/sources/plugins/iframe/lang/en-gb.js
+++ b/sources/plugins/iframe/lang/en-gb.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'iframe', 'en-gb', { 5CKEDITOR.plugins.setLang( 'iframe', 'en-gb', {
diff --git a/sources/plugins/iframe/lang/en.js b/sources/plugins/iframe/lang/en.js
index cf39cbe..1e224b9 100644
--- a/sources/plugins/iframe/lang/en.js
+++ b/sources/plugins/iframe/lang/en.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'iframe', 'en', { 5CKEDITOR.plugins.setLang( 'iframe', 'en', {
diff --git a/sources/plugins/iframe/lang/eo.js b/sources/plugins/iframe/lang/eo.js
index 1f50783..eba244d 100644
--- a/sources/plugins/iframe/lang/eo.js
+++ b/sources/plugins/iframe/lang/eo.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'iframe', 'eo', { 5CKEDITOR.plugins.setLang( 'iframe', 'eo', {
diff --git a/sources/plugins/iframe/lang/es-mx.js b/sources/plugins/iframe/lang/es-mx.js
new file mode 100644
index 0000000..767147e
--- /dev/null
+++ b/sources/plugins/iframe/lang/es-mx.js
@@ -0,0 +1,11 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'iframe', 'es-mx', {
6 border: 'Mostrar el borde del marco',
7 noUrl: 'Ingresa la URL del iframe',
8 scrolling: 'Habilitar la barra de desplazamiento',
9 title: 'Propiedades del IFrame',
10 toolbar: 'Iframe'
11} );
diff --git a/sources/plugins/iframe/lang/es.js b/sources/plugins/iframe/lang/es.js
index 67955e3..1cf5c29 100644
--- a/sources/plugins/iframe/lang/es.js
+++ b/sources/plugins/iframe/lang/es.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'iframe', 'es', { 5CKEDITOR.plugins.setLang( 'iframe', 'es', {
diff --git a/sources/plugins/iframe/lang/et.js b/sources/plugins/iframe/lang/et.js
index e01acb8..aac467d 100644
--- a/sources/plugins/iframe/lang/et.js
+++ b/sources/plugins/iframe/lang/et.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'iframe', 'et', { 5CKEDITOR.plugins.setLang( 'iframe', 'et', {
diff --git a/sources/plugins/iframe/lang/eu.js b/sources/plugins/iframe/lang/eu.js
index 9f78376..1f77367 100644
--- a/sources/plugins/iframe/lang/eu.js
+++ b/sources/plugins/iframe/lang/eu.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'iframe', 'eu', { 5CKEDITOR.plugins.setLang( 'iframe', 'eu', {
diff --git a/sources/plugins/iframe/lang/fa.js b/sources/plugins/iframe/lang/fa.js
index 4f96602..0c7a09f 100644
--- a/sources/plugins/iframe/lang/fa.js
+++ b/sources/plugins/iframe/lang/fa.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'iframe', 'fa', { 5CKEDITOR.plugins.setLang( 'iframe', 'fa', {
diff --git a/sources/plugins/iframe/lang/fi.js b/sources/plugins/iframe/lang/fi.js
index 3413f0e..0aa7f37 100644
--- a/sources/plugins/iframe/lang/fi.js
+++ b/sources/plugins/iframe/lang/fi.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'iframe', 'fi', { 5CKEDITOR.plugins.setLang( 'iframe', 'fi', {
diff --git a/sources/plugins/iframe/lang/fo.js b/sources/plugins/iframe/lang/fo.js
index 877e5d8..05fdfe8 100644
--- a/sources/plugins/iframe/lang/fo.js
+++ b/sources/plugins/iframe/lang/fo.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'iframe', 'fo', { 5CKEDITOR.plugins.setLang( 'iframe', 'fo', {
diff --git a/sources/plugins/iframe/lang/fr-ca.js b/sources/plugins/iframe/lang/fr-ca.js
index d472cf9..cf7947e 100644
--- a/sources/plugins/iframe/lang/fr-ca.js
+++ b/sources/plugins/iframe/lang/fr-ca.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'iframe', 'fr-ca', { 5CKEDITOR.plugins.setLang( 'iframe', 'fr-ca', {
diff --git a/sources/plugins/iframe/lang/fr.js b/sources/plugins/iframe/lang/fr.js
index 3cfd49a..34fc64e 100644
--- a/sources/plugins/iframe/lang/fr.js
+++ b/sources/plugins/iframe/lang/fr.js
@@ -1,11 +1,11 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'iframe', 'fr', { 5CKEDITOR.plugins.setLang( 'iframe', 'fr', {
6 border: 'Afficher une bordure de la IFrame', 6 border: 'Afficher la bordure du cadre',
7 noUrl: 'Veuillez entrer l\'adresse du lien de la IFrame', 7 noUrl: 'Veuillez entrer l\'URL du contenu du cadre',
8 scrolling: 'Permettre à la barre de défilement', 8 scrolling: 'Activer les barres de défilement',
9 title: 'Propriétés de la IFrame', 9 title: 'Propriétés du cadre de contenu incorporé',
10 toolbar: 'IFrame' 10 toolbar: 'Cadre de contenu incorporé'
11} ); 11} );
diff --git a/sources/plugins/iframe/lang/gl.js b/sources/plugins/iframe/lang/gl.js
index a19d1ee..449e28d 100644
--- a/sources/plugins/iframe/lang/gl.js
+++ b/sources/plugins/iframe/lang/gl.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'iframe', 'gl', { 5CKEDITOR.plugins.setLang( 'iframe', 'gl', {
diff --git a/sources/plugins/iframe/lang/gu.js b/sources/plugins/iframe/lang/gu.js
index 285484c..91bb8bb 100644
--- a/sources/plugins/iframe/lang/gu.js
+++ b/sources/plugins/iframe/lang/gu.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'iframe', 'gu', { 5CKEDITOR.plugins.setLang( 'iframe', 'gu', {
diff --git a/sources/plugins/iframe/lang/he.js b/sources/plugins/iframe/lang/he.js
index bd9ce8b..87467be 100644
--- a/sources/plugins/iframe/lang/he.js
+++ b/sources/plugins/iframe/lang/he.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'iframe', 'he', { 5CKEDITOR.plugins.setLang( 'iframe', 'he', {
diff --git a/sources/plugins/iframe/lang/hi.js b/sources/plugins/iframe/lang/hi.js
index a51c275..96d30fb 100644
--- a/sources/plugins/iframe/lang/hi.js
+++ b/sources/plugins/iframe/lang/hi.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'iframe', 'hi', { 5CKEDITOR.plugins.setLang( 'iframe', 'hi', {
diff --git a/sources/plugins/iframe/lang/hr.js b/sources/plugins/iframe/lang/hr.js
index d01d19a..9f289a7 100644
--- a/sources/plugins/iframe/lang/hr.js
+++ b/sources/plugins/iframe/lang/hr.js
@@ -1,10 +1,10 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'iframe', 'hr', { 5CKEDITOR.plugins.setLang( 'iframe', 'hr', {
6 border: 'Prikaži okvir IFrame-a', 6 border: 'Prikaži okvir IFrame-a',
7 noUrl: 'Unesite URL iframe-a', 7 noUrl: 'Unesite URL IFrame-a',
8 scrolling: 'Omogući trake za skrolanje', 8 scrolling: 'Omogući trake za skrolanje',
9 title: 'IFrame svojstva', 9 title: 'IFrame svojstva',
10 toolbar: 'IFrame' 10 toolbar: 'IFrame'
diff --git a/sources/plugins/iframe/lang/hu.js b/sources/plugins/iframe/lang/hu.js
index 7b69168..096d311 100644
--- a/sources/plugins/iframe/lang/hu.js
+++ b/sources/plugins/iframe/lang/hu.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'iframe', 'hu', { 5CKEDITOR.plugins.setLang( 'iframe', 'hu', {
diff --git a/sources/plugins/iframe/lang/id.js b/sources/plugins/iframe/lang/id.js
index 9f2fb24..c351eda 100644
--- a/sources/plugins/iframe/lang/id.js
+++ b/sources/plugins/iframe/lang/id.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'iframe', 'id', { 5CKEDITOR.plugins.setLang( 'iframe', 'id', {
diff --git a/sources/plugins/iframe/lang/is.js b/sources/plugins/iframe/lang/is.js
index 7a75de8..bc7cf08 100644
--- a/sources/plugins/iframe/lang/is.js
+++ b/sources/plugins/iframe/lang/is.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'iframe', 'is', { 5CKEDITOR.plugins.setLang( 'iframe', 'is', {
diff --git a/sources/plugins/iframe/lang/it.js b/sources/plugins/iframe/lang/it.js
index a785132..e020c27 100644
--- a/sources/plugins/iframe/lang/it.js
+++ b/sources/plugins/iframe/lang/it.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'iframe', 'it', { 5CKEDITOR.plugins.setLang( 'iframe', 'it', {
diff --git a/sources/plugins/iframe/lang/ja.js b/sources/plugins/iframe/lang/ja.js
index a24dd15..b104ccd 100644
--- a/sources/plugins/iframe/lang/ja.js
+++ b/sources/plugins/iframe/lang/ja.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'iframe', 'ja', { 5CKEDITOR.plugins.setLang( 'iframe', 'ja', {
diff --git a/sources/plugins/iframe/lang/ka.js b/sources/plugins/iframe/lang/ka.js
index a7d3320..7d98f68 100644
--- a/sources/plugins/iframe/lang/ka.js
+++ b/sources/plugins/iframe/lang/ka.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'iframe', 'ka', { 5CKEDITOR.plugins.setLang( 'iframe', 'ka', {
diff --git a/sources/plugins/iframe/lang/km.js b/sources/plugins/iframe/lang/km.js
index 0fea30c..9331b23 100644
--- a/sources/plugins/iframe/lang/km.js
+++ b/sources/plugins/iframe/lang/km.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'iframe', 'km', { 5CKEDITOR.plugins.setLang( 'iframe', 'km', {
diff --git a/sources/plugins/iframe/lang/ko.js b/sources/plugins/iframe/lang/ko.js
index 358b101..f5c16a0 100644
--- a/sources/plugins/iframe/lang/ko.js
+++ b/sources/plugins/iframe/lang/ko.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'iframe', 'ko', { 5CKEDITOR.plugins.setLang( 'iframe', 'ko', {
diff --git a/sources/plugins/iframe/lang/ku.js b/sources/plugins/iframe/lang/ku.js
index 6217ee1..852c3b4 100644
--- a/sources/plugins/iframe/lang/ku.js
+++ b/sources/plugins/iframe/lang/ku.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'iframe', 'ku', { 5CKEDITOR.plugins.setLang( 'iframe', 'ku', {
diff --git a/sources/plugins/iframe/lang/lt.js b/sources/plugins/iframe/lang/lt.js
index 6b4c298..c69817f 100644
--- a/sources/plugins/iframe/lang/lt.js
+++ b/sources/plugins/iframe/lang/lt.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'iframe', 'lt', { 5CKEDITOR.plugins.setLang( 'iframe', 'lt', {
diff --git a/sources/plugins/iframe/lang/lv.js b/sources/plugins/iframe/lang/lv.js
index 6b10267..50a6743 100644
--- a/sources/plugins/iframe/lang/lv.js
+++ b/sources/plugins/iframe/lang/lv.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'iframe', 'lv', { 5CKEDITOR.plugins.setLang( 'iframe', 'lv', {
diff --git a/sources/plugins/iframe/lang/mk.js b/sources/plugins/iframe/lang/mk.js
index 6f0c2a2..d576e21 100644
--- a/sources/plugins/iframe/lang/mk.js
+++ b/sources/plugins/iframe/lang/mk.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'iframe', 'mk', { 5CKEDITOR.plugins.setLang( 'iframe', 'mk', {
diff --git a/sources/plugins/iframe/lang/mn.js b/sources/plugins/iframe/lang/mn.js
index bba8e02..dd9d927 100644
--- a/sources/plugins/iframe/lang/mn.js
+++ b/sources/plugins/iframe/lang/mn.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'iframe', 'mn', { 5CKEDITOR.plugins.setLang( 'iframe', 'mn', {
diff --git a/sources/plugins/iframe/lang/ms.js b/sources/plugins/iframe/lang/ms.js
index eea00cb..f0342bf 100644
--- a/sources/plugins/iframe/lang/ms.js
+++ b/sources/plugins/iframe/lang/ms.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'iframe', 'ms', { 5CKEDITOR.plugins.setLang( 'iframe', 'ms', {
diff --git a/sources/plugins/iframe/lang/nb.js b/sources/plugins/iframe/lang/nb.js
index ffd6997..c02990e 100644
--- a/sources/plugins/iframe/lang/nb.js
+++ b/sources/plugins/iframe/lang/nb.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'iframe', 'nb', { 5CKEDITOR.plugins.setLang( 'iframe', 'nb', {
diff --git a/sources/plugins/iframe/lang/nl.js b/sources/plugins/iframe/lang/nl.js
index fc80c47..555025d 100644
--- a/sources/plugins/iframe/lang/nl.js
+++ b/sources/plugins/iframe/lang/nl.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'iframe', 'nl', { 5CKEDITOR.plugins.setLang( 'iframe', 'nl', {
diff --git a/sources/plugins/iframe/lang/no.js b/sources/plugins/iframe/lang/no.js
index 59c7255..bb44fe5 100644
--- a/sources/plugins/iframe/lang/no.js
+++ b/sources/plugins/iframe/lang/no.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'iframe', 'no', { 5CKEDITOR.plugins.setLang( 'iframe', 'no', {
diff --git a/sources/plugins/iframe/lang/oc.js b/sources/plugins/iframe/lang/oc.js
new file mode 100644
index 0000000..890a571
--- /dev/null
+++ b/sources/plugins/iframe/lang/oc.js
@@ -0,0 +1,11 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'iframe', 'oc', {
6 border: 'Afichar la bordadura del quadre',
7 noUrl: 'Entratz l\'URL del contengut del quadre',
8 scrolling: 'Activar las barras de desfilament',
9 title: 'Proprietats del quadre de contengut incorporat',
10 toolbar: 'Quadre de contengut incorporat'
11} );
diff --git a/sources/plugins/iframe/lang/pl.js b/sources/plugins/iframe/lang/pl.js
index 3f63161..6d05dd1 100644
--- a/sources/plugins/iframe/lang/pl.js
+++ b/sources/plugins/iframe/lang/pl.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'iframe', 'pl', { 5CKEDITOR.plugins.setLang( 'iframe', 'pl', {
diff --git a/sources/plugins/iframe/lang/pt-br.js b/sources/plugins/iframe/lang/pt-br.js
index ae9157f..58ec356 100644
--- a/sources/plugins/iframe/lang/pt-br.js
+++ b/sources/plugins/iframe/lang/pt-br.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'iframe', 'pt-br', { 5CKEDITOR.plugins.setLang( 'iframe', 'pt-br', {
diff --git a/sources/plugins/iframe/lang/pt.js b/sources/plugins/iframe/lang/pt.js
index 0440cb0..1b1cd9f 100644
--- a/sources/plugins/iframe/lang/pt.js
+++ b/sources/plugins/iframe/lang/pt.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'iframe', 'pt', { 5CKEDITOR.plugins.setLang( 'iframe', 'pt', {
diff --git a/sources/plugins/iframe/lang/ro.js b/sources/plugins/iframe/lang/ro.js
index 96dbb43..deeb0c4 100644
--- a/sources/plugins/iframe/lang/ro.js
+++ b/sources/plugins/iframe/lang/ro.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'iframe', 'ro', { 5CKEDITOR.plugins.setLang( 'iframe', 'ro', {
diff --git a/sources/plugins/iframe/lang/ru.js b/sources/plugins/iframe/lang/ru.js
index ca0bf8e..e352aa3 100644
--- a/sources/plugins/iframe/lang/ru.js
+++ b/sources/plugins/iframe/lang/ru.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'iframe', 'ru', { 5CKEDITOR.plugins.setLang( 'iframe', 'ru', {
diff --git a/sources/plugins/iframe/lang/si.js b/sources/plugins/iframe/lang/si.js
index 17d800d..d7660ef 100644
--- a/sources/plugins/iframe/lang/si.js
+++ b/sources/plugins/iframe/lang/si.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'iframe', 'si', { 5CKEDITOR.plugins.setLang( 'iframe', 'si', {
diff --git a/sources/plugins/iframe/lang/sk.js b/sources/plugins/iframe/lang/sk.js
index 1b360d8..ac0b91d 100644
--- a/sources/plugins/iframe/lang/sk.js
+++ b/sources/plugins/iframe/lang/sk.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'iframe', 'sk', { 5CKEDITOR.plugins.setLang( 'iframe', 'sk', {
diff --git a/sources/plugins/iframe/lang/sl.js b/sources/plugins/iframe/lang/sl.js
index 13eab17..2b0e375 100644
--- a/sources/plugins/iframe/lang/sl.js
+++ b/sources/plugins/iframe/lang/sl.js
@@ -1,11 +1,11 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'iframe', 'sl', { 5CKEDITOR.plugins.setLang( 'iframe', 'sl', {
6 border: 'Pokaži mejo okvira', 6 border: 'Pokaži obrobo okvirja',
7 noUrl: 'Prosimo, vnesite iframe URL', 7 noUrl: 'Prosimo, vnesite iframe URL',
8 scrolling: 'Omogoči scrollbars', 8 scrolling: 'Omogoči drsnike',
9 title: 'IFrame Lastnosti', 9 title: 'Lastnosti IFrame',
10 toolbar: 'IFrame' 10 toolbar: 'IFrame'
11} ); 11} );
diff --git a/sources/plugins/iframe/lang/sq.js b/sources/plugins/iframe/lang/sq.js
index 671f743..a274000 100644
--- a/sources/plugins/iframe/lang/sq.js
+++ b/sources/plugins/iframe/lang/sq.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'iframe', 'sq', { 5CKEDITOR.plugins.setLang( 'iframe', 'sq', {
diff --git a/sources/plugins/iframe/lang/sr-latn.js b/sources/plugins/iframe/lang/sr-latn.js
index 7b7e316..29685a9 100644
--- a/sources/plugins/iframe/lang/sr-latn.js
+++ b/sources/plugins/iframe/lang/sr-latn.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'iframe', 'sr-latn', { 5CKEDITOR.plugins.setLang( 'iframe', 'sr-latn', {
diff --git a/sources/plugins/iframe/lang/sr.js b/sources/plugins/iframe/lang/sr.js
index d59430a..acd9876 100644
--- a/sources/plugins/iframe/lang/sr.js
+++ b/sources/plugins/iframe/lang/sr.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'iframe', 'sr', { 5CKEDITOR.plugins.setLang( 'iframe', 'sr', {
diff --git a/sources/plugins/iframe/lang/sv.js b/sources/plugins/iframe/lang/sv.js
index bd9f5f5..fab04a5 100644
--- a/sources/plugins/iframe/lang/sv.js
+++ b/sources/plugins/iframe/lang/sv.js
@@ -1,11 +1,11 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'iframe', 'sv', { 5CKEDITOR.plugins.setLang( 'iframe', 'sv', {
6 border: 'Visa ramkant', 6 border: 'Visa ramkant',
7 noUrl: 'Skriv in URL för iFrame', 7 noUrl: 'Skriv in URL för iFrame',
8 scrolling: 'Aktivera rullningslister', 8 scrolling: 'Aktivera rullningslister',
9 title: 'iFrame Egenskaper', 9 title: 'iFrame-egenskaper',
10 toolbar: 'iFrame' 10 toolbar: 'iFrame'
11} ); 11} );
diff --git a/sources/plugins/iframe/lang/th.js b/sources/plugins/iframe/lang/th.js
index f22f335..57926b9 100644
--- a/sources/plugins/iframe/lang/th.js
+++ b/sources/plugins/iframe/lang/th.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'iframe', 'th', { 5CKEDITOR.plugins.setLang( 'iframe', 'th', {
diff --git a/sources/plugins/iframe/lang/tr.js b/sources/plugins/iframe/lang/tr.js
index 6738e2a..d828f65 100644
--- a/sources/plugins/iframe/lang/tr.js
+++ b/sources/plugins/iframe/lang/tr.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'iframe', 'tr', { 5CKEDITOR.plugins.setLang( 'iframe', 'tr', {
diff --git a/sources/plugins/iframe/lang/tt.js b/sources/plugins/iframe/lang/tt.js
index 8523323..869f67b 100644
--- a/sources/plugins/iframe/lang/tt.js
+++ b/sources/plugins/iframe/lang/tt.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'iframe', 'tt', { 5CKEDITOR.plugins.setLang( 'iframe', 'tt', {
diff --git a/sources/plugins/iframe/lang/ug.js b/sources/plugins/iframe/lang/ug.js
index 3cbd5b0..b46f6da 100644
--- a/sources/plugins/iframe/lang/ug.js
+++ b/sources/plugins/iframe/lang/ug.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'iframe', 'ug', { 5CKEDITOR.plugins.setLang( 'iframe', 'ug', {
diff --git a/sources/plugins/iframe/lang/uk.js b/sources/plugins/iframe/lang/uk.js
index c5173d2..3f91ef6 100644
--- a/sources/plugins/iframe/lang/uk.js
+++ b/sources/plugins/iframe/lang/uk.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'iframe', 'uk', { 5CKEDITOR.plugins.setLang( 'iframe', 'uk', {
diff --git a/sources/plugins/iframe/lang/vi.js b/sources/plugins/iframe/lang/vi.js
index d7c2bc0..be8ebfb 100644
--- a/sources/plugins/iframe/lang/vi.js
+++ b/sources/plugins/iframe/lang/vi.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'iframe', 'vi', { 5CKEDITOR.plugins.setLang( 'iframe', 'vi', {
diff --git a/sources/plugins/iframe/lang/zh-cn.js b/sources/plugins/iframe/lang/zh-cn.js
index 99e657a..a35bd8c 100644
--- a/sources/plugins/iframe/lang/zh-cn.js
+++ b/sources/plugins/iframe/lang/zh-cn.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'iframe', 'zh-cn', { 5CKEDITOR.plugins.setLang( 'iframe', 'zh-cn', {
diff --git a/sources/plugins/iframe/lang/zh.js b/sources/plugins/iframe/lang/zh.js
index 091b807..4f7472a 100644
--- a/sources/plugins/iframe/lang/zh.js
+++ b/sources/plugins/iframe/lang/zh.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'iframe', 'zh', { 5CKEDITOR.plugins.setLang( 'iframe', 'zh', {
diff --git a/sources/plugins/iframe/plugin.js b/sources/plugins/iframe/plugin.js
index 8f049a5..7c479c0 100644
--- a/sources/plugins/iframe/plugin.js
+++ b/sources/plugins/iframe/plugin.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -7,7 +7,7 @@
7 CKEDITOR.plugins.add( 'iframe', { 7 CKEDITOR.plugins.add( 'iframe', {
8 requires: 'dialog,fakeobjects', 8 requires: 'dialog,fakeobjects',
9 // jscs:disable maximumLineLength 9 // jscs:disable maximumLineLength
10 lang: 'af,ar,bg,bn,bs,ca,cs,cy,da,de,de-ch,el,en,en-au,en-ca,en-gb,eo,es,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,pl,pt,pt-br,ro,ru,si,sk,sl,sq,sr,sr-latn,sv,th,tr,tt,ug,uk,vi,zh,zh-cn', // %REMOVE_LINE_CORE% 10 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', // %REMOVE_LINE_CORE%
11 // jscs:enable maximumLineLength 11 // jscs:enable maximumLineLength
12 icons: 'iframe', // %REMOVE_LINE_CORE% 12 icons: 'iframe', // %REMOVE_LINE_CORE%
13 hidpi: true, // %REMOVE_LINE_CORE% 13 hidpi: true, // %REMOVE_LINE_CORE%
diff --git a/sources/plugins/image/dialogs/image.js b/sources/plugins/image/dialogs/image.js
index 4f62f99..5302a7c 100644
--- a/sources/plugins/image/dialogs/image.js
+++ b/sources/plugins/image/dialogs/image.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -107,7 +107,7 @@
107 107
108 var oImageOriginal = dialog.originalElement; 108 var oImageOriginal = dialog.originalElement;
109 109
110 // Dialog may already closed. (#5505) 110 // Dialog may already closed. (http://dev.ckeditor.com/ticket/5505)
111 if ( !oImageOriginal ) 111 if ( !oImageOriginal )
112 return null; 112 return null;
113 113
@@ -233,7 +233,7 @@
233 this.firstLoad = false; 233 this.firstLoad = false;
234 this.dontResetSize = false; 234 this.dontResetSize = false;
235 235
236 // Possible fix for #12818. 236 // Possible fix for http://dev.ckeditor.com/ticket/12818.
237 updatePreview( this ); 237 updatePreview( this );
238 }; 238 };
239 239
@@ -270,7 +270,7 @@
270 270
271 return { 271 return {
272 title: editor.lang.image[ dialogType == 'image' ? 'title' : 'titleButton' ], 272 title: editor.lang.image[ dialogType == 'image' ? 'title' : 'titleButton' ],
273 minWidth: 420, 273 minWidth: ( CKEDITOR.skinName || editor.config.skin ) == 'moono-lisa' ? 500 : 420,
274 minHeight: 360, 274 minHeight: 360,
275 onShow: function() { 275 onShow: function() {
276 this.imageElement = false; 276 this.imageElement = false;
@@ -310,7 +310,7 @@
310 this.linkEditMode = true; 310 this.linkEditMode = true;
311 311
312 // If there is an existing link, by default keep it (true). 312 // If there is an existing link, by default keep it (true).
313 // It will be removed if certain conditions are met and Link tab is enabled. (#13351) 313 // It will be removed if certain conditions are met and Link tab is enabled. (http://dev.ckeditor.com/ticket/13351)
314 this.addLink = true; 314 this.addLink = true;
315 315
316 // Look for Image element. 316 // Look for Image element.
@@ -490,6 +490,7 @@
490 type: 'hbox', 490 type: 'hbox',
491 widths: [ '280px', '110px' ], 491 widths: [ '280px', '110px' ],
492 align: 'right', 492 align: 'right',
493 className: 'cke_dialog_image_url',
493 children: [ { 494 children: [ {
494 id: 'txtUrl', 495 id: 'txtUrl',
495 type: 'text', 496 type: 'text',
@@ -541,7 +542,7 @@
541 this.getDialog().dontResetSize = true; 542 this.getDialog().dontResetSize = true;
542 543
543 field.setValue( url ); // And call this.onChange() 544 field.setValue( url ); // And call this.onChange()
544 // Manually set the initial value.(#4191) 545 // Manually set the initial value.(http://dev.ckeditor.com/ticket/4191)
545 field.setInitValue(); 546 field.setInitValue();
546 } 547 }
547 }, 548 },
@@ -692,6 +693,7 @@
692 { 693 {
693 id: 'ratioLock', 694 id: 'ratioLock',
694 type: 'html', 695 type: 'html',
696 className: 'cke_dialog_image_ratiolock',
695 style: 'margin-top:30px;width:40px;height:40px;', 697 style: 'margin-top:30px;width:40px;height:40px;',
696 onLoad: function() { 698 onLoad: function() {
697 // Activate Reset button 699 // Activate Reset button
@@ -1014,6 +1016,7 @@
1014 { 1016 {
1015 type: 'button', 1017 type: 'button',
1016 id: 'browse', 1018 id: 'browse',
1019 className: 'cke_dialog_image_browse',
1017 filebrowser: { 1020 filebrowser: {
1018 action: 'Browse', 1021 action: 'Browse',
1019 target: 'Link:txtUrl', 1022 target: 'Link:txtUrl',
diff --git a/sources/plugins/image/icons/hidpi/image.png b/sources/plugins/image/icons/hidpi/image.png
index b3c7ade..d0f21ae 100644
--- a/sources/plugins/image/icons/hidpi/image.png
+++ b/sources/plugins/image/icons/hidpi/image.png
Binary files differ
diff --git a/sources/plugins/image/icons/image.png b/sources/plugins/image/icons/image.png
index fcf61b5..8ea9725 100644
--- a/sources/plugins/image/icons/image.png
+++ b/sources/plugins/image/icons/image.png
Binary files differ
diff --git a/sources/plugins/image/lang/af.js b/sources/plugins/image/lang/af.js
index c3cf354..8cc5b5f 100644
--- a/sources/plugins/image/lang/af.js
+++ b/sources/plugins/image/lang/af.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'image', 'af', { 5CKEDITOR.plugins.setLang( 'image', 'af', {
diff --git a/sources/plugins/image/lang/ar.js b/sources/plugins/image/lang/ar.js
index 1a0fb7a..a755b3e 100644
--- a/sources/plugins/image/lang/ar.js
+++ b/sources/plugins/image/lang/ar.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'image', 'ar', { 5CKEDITOR.plugins.setLang( 'image', 'ar', {
diff --git a/sources/plugins/image/lang/az.js b/sources/plugins/image/lang/az.js
new file mode 100644
index 0000000..79009fa
--- /dev/null
+++ b/sources/plugins/image/lang/az.js
@@ -0,0 +1,25 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'image', 'az', {
6 alt: 'Alternativ mətn',
7 border: 'Sərhəd',
8 btnUpload: 'Serverə yüklə',
9 button2Img: 'Şəkil tipli düyməni şəklə çevirmək istədiyinizə əminsinizmi?',
10 hSpace: 'Üfüqi boşluq',
11 img2Button: 'Şəkli şəkil tipli düyməyə çevirmək istədiyinizə əminsinizmi?',
12 infoTab: 'Şəkil haqqında məlumat',
13 linkTab: 'Link',
14 lockRatio: 'Ölçülərin uyğunluğu saxla',
15 menu: 'Şəklin seçimləri',
16 resetSize: 'Ölçüləri qaytar',
17 title: 'Şəklin seçimləri',
18 titleButton: 'Şəkil tipli düyməsinin seçimləri',
19 upload: 'Serverə yüklə',
20 urlMissing: 'Şəklin ünvanı yanlışdır.',
21 vSpace: 'Şaquli boşluq',
22 validateBorder: 'Sərhədin eni rəqəm olmalıdır.',
23 validateHSpace: 'Üfüqi boşluq rəqəm olmalıdır.',
24 validateVSpace: 'Şaquli boşluq rəqəm olmalıdır.'
25} );
diff --git a/sources/plugins/image/lang/bg.js b/sources/plugins/image/lang/bg.js
index ecc7cd7..6c0b064 100644
--- a/sources/plugins/image/lang/bg.js
+++ b/sources/plugins/image/lang/bg.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'image', 'bg', { 5CKEDITOR.plugins.setLang( 'image', 'bg', {
diff --git a/sources/plugins/image/lang/bn.js b/sources/plugins/image/lang/bn.js
index 1f39349..bbecfc6 100644
--- a/sources/plugins/image/lang/bn.js
+++ b/sources/plugins/image/lang/bn.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'image', 'bn', { 5CKEDITOR.plugins.setLang( 'image', 'bn', {
@@ -15,7 +15,7 @@ CKEDITOR.plugins.setLang( 'image', 'bn', {
15 menu: 'ছবির প্রোপার্টি', 15 menu: 'ছবির প্রোপার্টি',
16 resetSize: 'সাইজ পূর্বাবস্থায় ফিরিয়ে দাও', 16 resetSize: 'সাইজ পূর্বাবস্থায় ফিরিয়ে দাও',
17 title: 'ছবির প্রোপার্টি', 17 title: 'ছবির প্রোপার্টি',
18 titleButton: 'ছবি বাটন ', 18 titleButton: 'ছবি বাটন ',
19 upload: 'আপলোড', 19 upload: 'আপলোড',
20 urlMissing: 'Image source URL is missing.', // MISSING 20 urlMissing: 'Image source URL is missing.', // MISSING
21 vSpace: 'ভার্টিকেল স্পেস', 21 vSpace: 'ভার্টিকেল স্পেস',
diff --git a/sources/plugins/image/lang/bs.js b/sources/plugins/image/lang/bs.js
index 8470e8f..06dd8bf 100644
--- a/sources/plugins/image/lang/bs.js
+++ b/sources/plugins/image/lang/bs.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'image', 'bs', { 5CKEDITOR.plugins.setLang( 'image', 'bs', {
diff --git a/sources/plugins/image/lang/ca.js b/sources/plugins/image/lang/ca.js
index 8464dbf..858013e 100644
--- a/sources/plugins/image/lang/ca.js
+++ b/sources/plugins/image/lang/ca.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'image', 'ca', { 5CKEDITOR.plugins.setLang( 'image', 'ca', {
diff --git a/sources/plugins/image/lang/cs.js b/sources/plugins/image/lang/cs.js
index 2f870f8..a18a753 100644
--- a/sources/plugins/image/lang/cs.js
+++ b/sources/plugins/image/lang/cs.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'image', 'cs', { 5CKEDITOR.plugins.setLang( 'image', 'cs', {
diff --git a/sources/plugins/image/lang/cy.js b/sources/plugins/image/lang/cy.js
index 6310b5b..7407310 100644
--- a/sources/plugins/image/lang/cy.js
+++ b/sources/plugins/image/lang/cy.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'image', 'cy', { 5CKEDITOR.plugins.setLang( 'image', 'cy', {
diff --git a/sources/plugins/image/lang/da.js b/sources/plugins/image/lang/da.js
index 82f591d..bec69ba 100644
--- a/sources/plugins/image/lang/da.js
+++ b/sources/plugins/image/lang/da.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'image', 'da', { 5CKEDITOR.plugins.setLang( 'image', 'da', {
diff --git a/sources/plugins/image/lang/de-ch.js b/sources/plugins/image/lang/de-ch.js
index 9237c1a..6ba1570 100644
--- a/sources/plugins/image/lang/de-ch.js
+++ b/sources/plugins/image/lang/de-ch.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'image', 'de-ch', { 5CKEDITOR.plugins.setLang( 'image', 'de-ch', {
diff --git a/sources/plugins/image/lang/de.js b/sources/plugins/image/lang/de.js
index 4827329..a391934 100644
--- a/sources/plugins/image/lang/de.js
+++ b/sources/plugins/image/lang/de.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'image', 'de', { 5CKEDITOR.plugins.setLang( 'image', 'de', {
diff --git a/sources/plugins/image/lang/el.js b/sources/plugins/image/lang/el.js
index 9e515e7..3453c3d 100644
--- a/sources/plugins/image/lang/el.js
+++ b/sources/plugins/image/lang/el.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'image', 'el', { 5CKEDITOR.plugins.setLang( 'image', 'el', {
diff --git a/sources/plugins/image/lang/en-au.js b/sources/plugins/image/lang/en-au.js
index 6e7ce12..dba29c7 100644
--- a/sources/plugins/image/lang/en-au.js
+++ b/sources/plugins/image/lang/en-au.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'image', 'en-au', { 5CKEDITOR.plugins.setLang( 'image', 'en-au', {
diff --git a/sources/plugins/image/lang/en-ca.js b/sources/plugins/image/lang/en-ca.js
index 2f3992f..e78f83e 100644
--- a/sources/plugins/image/lang/en-ca.js
+++ b/sources/plugins/image/lang/en-ca.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'image', 'en-ca', { 5CKEDITOR.plugins.setLang( 'image', 'en-ca', {
diff --git a/sources/plugins/image/lang/en-gb.js b/sources/plugins/image/lang/en-gb.js
index e60b38a..dcf335e 100644
--- a/sources/plugins/image/lang/en-gb.js
+++ b/sources/plugins/image/lang/en-gb.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'image', 'en-gb', { 5CKEDITOR.plugins.setLang( 'image', 'en-gb', {
diff --git a/sources/plugins/image/lang/en.js b/sources/plugins/image/lang/en.js
index d6cb43a..4d0f50b 100644
--- a/sources/plugins/image/lang/en.js
+++ b/sources/plugins/image/lang/en.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'image', 'en', { 5CKEDITOR.plugins.setLang( 'image', 'en', {
diff --git a/sources/plugins/image/lang/eo.js b/sources/plugins/image/lang/eo.js
index 9ef3115..276ef33 100644
--- a/sources/plugins/image/lang/eo.js
+++ b/sources/plugins/image/lang/eo.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'image', 'eo', { 5CKEDITOR.plugins.setLang( 'image', 'eo', {
diff --git a/sources/plugins/image/lang/es-mx.js b/sources/plugins/image/lang/es-mx.js
new file mode 100644
index 0000000..dc9b24c
--- /dev/null
+++ b/sources/plugins/image/lang/es-mx.js
@@ -0,0 +1,25 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'image', 'es-mx', {
6 alt: 'Texto alternativo',
7 border: 'Borde',
8 btnUpload: 'Enviar al servidor',
9 button2Img: '¿Desea transformar el botón de imagen seleccionado en una imagen simple?',
10 hSpace: 'Espacio horizontal',
11 img2Button: '¿Desea transformar la imagen seleccionada en un botón de imagen?',
12 infoTab: 'Información de imagen',
13 linkTab: 'Enlace',
14 lockRatio: 'Bloquear aspecto',
15 menu: 'Propiedades de la imagen',
16 resetSize: 'Reiniciar tamaño',
17 title: 'Propiedades de la imagen',
18 titleButton: 'Propiedades del botón de imagen',
19 upload: 'Cargar',
20 urlMissing: 'Falta la URL de origen de la imagen.',
21 vSpace: 'Espacio vertical',
22 validateBorder: 'El borde debe ser un número entero.',
23 validateHSpace: 'El espacio horizontal debe ser un número entero.',
24 validateVSpace: 'El espacio vertical debe ser un número entero.'
25} );
diff --git a/sources/plugins/image/lang/es.js b/sources/plugins/image/lang/es.js
index 12e1748..1302a19 100644
--- a/sources/plugins/image/lang/es.js
+++ b/sources/plugins/image/lang/es.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'image', 'es', { 5CKEDITOR.plugins.setLang( 'image', 'es', {
diff --git a/sources/plugins/image/lang/et.js b/sources/plugins/image/lang/et.js
index e02591f..4c7153a 100644
--- a/sources/plugins/image/lang/et.js
+++ b/sources/plugins/image/lang/et.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'image', 'et', { 5CKEDITOR.plugins.setLang( 'image', 'et', {
diff --git a/sources/plugins/image/lang/eu.js b/sources/plugins/image/lang/eu.js
index f288398..52f8289 100644
--- a/sources/plugins/image/lang/eu.js
+++ b/sources/plugins/image/lang/eu.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'image', 'eu', { 5CKEDITOR.plugins.setLang( 'image', 'eu', {
diff --git a/sources/plugins/image/lang/fa.js b/sources/plugins/image/lang/fa.js
index 00eb831..6628e99 100644
--- a/sources/plugins/image/lang/fa.js
+++ b/sources/plugins/image/lang/fa.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'image', 'fa', { 5CKEDITOR.plugins.setLang( 'image', 'fa', {
diff --git a/sources/plugins/image/lang/fi.js b/sources/plugins/image/lang/fi.js
index e264d72..665b615 100644
--- a/sources/plugins/image/lang/fi.js
+++ b/sources/plugins/image/lang/fi.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'image', 'fi', { 5CKEDITOR.plugins.setLang( 'image', 'fi', {
diff --git a/sources/plugins/image/lang/fo.js b/sources/plugins/image/lang/fo.js
index 6073e0c..8332a38 100644
--- a/sources/plugins/image/lang/fo.js
+++ b/sources/plugins/image/lang/fo.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'image', 'fo', { 5CKEDITOR.plugins.setLang( 'image', 'fo', {
diff --git a/sources/plugins/image/lang/fr-ca.js b/sources/plugins/image/lang/fr-ca.js
index ebeddb2..644a9f3 100644
--- a/sources/plugins/image/lang/fr-ca.js
+++ b/sources/plugins/image/lang/fr-ca.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'image', 'fr-ca', { 5CKEDITOR.plugins.setLang( 'image', 'fr-ca', {
diff --git a/sources/plugins/image/lang/fr.js b/sources/plugins/image/lang/fr.js
index e06d095..299c379 100644
--- a/sources/plugins/image/lang/fr.js
+++ b/sources/plugins/image/lang/fr.js
@@ -1,25 +1,25 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'image', 'fr', { 5CKEDITOR.plugins.setLang( 'image', 'fr', {
6 alt: 'Texte de remplacement', 6 alt: 'Texte alternatif',
7 border: 'Bordure', 7 border: 'Bordure',
8 btnUpload: 'Envoyer sur le serveur', 8 btnUpload: 'Envoyer sur le serveur',
9 button2Img: 'Voulez-vous transformer le bouton image sélectionné en simple image?', 9 button2Img: 'Voulez-vous transformer le bouton avec image sélectionné en simple image ?',
10 hSpace: 'Espacement horizontal', 10 hSpace: 'Espacement horizontal',
11 img2Button: 'Voulez-vous transformer l\'image en bouton image?', 11 img2Button: 'Voulez-vous transformer l\'image sélectionnée en bouton avec image ?',
12 infoTab: 'Informations sur l\'image', 12 infoTab: 'Informations sur l\'image',
13 linkTab: 'Lien', 13 linkTab: 'Lien',
14 lockRatio: 'Conserver les proportions', 14 lockRatio: 'Conserver les proportions',
15 menu: 'Propriétés de l\'image', 15 menu: 'Propriétés de l\'image',
16 resetSize: 'Taille d\'origine', 16 resetSize: 'initialiser la taille',
17 title: 'Propriétés de l\'image', 17 title: 'Propriétés de l\'image',
18 titleButton: 'Propriétés du bouton image', 18 titleButton: 'Propriétés du bouton avec image',
19 upload: 'Envoyer', 19 upload: 'Téléverser',
20 urlMissing: 'L\'adresse source de l\'image est manquante.', 20 urlMissing: 'L\'URL source de l\'image est manquante.',
21 vSpace: 'Espacement vertical', 21 vSpace: 'Espacement vertical',
22 validateBorder: 'Bordure doit être un entier.', 22 validateBorder: 'La bordure doit être un nombre entier.',
23 validateHSpace: 'HSpace doit être un entier.', 23 validateHSpace: 'L\'espacement horizontal doit être un nombre entier.',
24 validateVSpace: 'VSpace doit être un entier.' 24 validateVSpace: 'L\'espacement vertical doit être un nombre entier.'
25} ); 25} );
diff --git a/sources/plugins/image/lang/gl.js b/sources/plugins/image/lang/gl.js
index 22f1f41..ba632b8 100644
--- a/sources/plugins/image/lang/gl.js
+++ b/sources/plugins/image/lang/gl.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'image', 'gl', { 5CKEDITOR.plugins.setLang( 'image', 'gl', {
diff --git a/sources/plugins/image/lang/gu.js b/sources/plugins/image/lang/gu.js
index 36e26fc..f70ae28 100644
--- a/sources/plugins/image/lang/gu.js
+++ b/sources/plugins/image/lang/gu.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'image', 'gu', { 5CKEDITOR.plugins.setLang( 'image', 'gu', {
diff --git a/sources/plugins/image/lang/he.js b/sources/plugins/image/lang/he.js
index 5b8e18d..41f207a 100644
--- a/sources/plugins/image/lang/he.js
+++ b/sources/plugins/image/lang/he.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'image', 'he', { 5CKEDITOR.plugins.setLang( 'image', 'he', {
diff --git a/sources/plugins/image/lang/hi.js b/sources/plugins/image/lang/hi.js
index 158c188..d4604b3 100644
--- a/sources/plugins/image/lang/hi.js
+++ b/sources/plugins/image/lang/hi.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'image', 'hi', { 5CKEDITOR.plugins.setLang( 'image', 'hi', {
diff --git a/sources/plugins/image/lang/hr.js b/sources/plugins/image/lang/hr.js
index 6c3aade..962533a 100644
--- a/sources/plugins/image/lang/hr.js
+++ b/sources/plugins/image/lang/hr.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'image', 'hr', { 5CKEDITOR.plugins.setLang( 'image', 'hr', {
@@ -10,7 +10,7 @@ CKEDITOR.plugins.setLang( 'image', 'hr', {
10 hSpace: 'HSpace', 10 hSpace: 'HSpace',
11 img2Button: 'Želite li promijeniti odabranu sliku u gumb?', 11 img2Button: 'Želite li promijeniti odabranu sliku u gumb?',
12 infoTab: 'Info slike', 12 infoTab: 'Info slike',
13 linkTab: 'Link', 13 linkTab: 'Veza',
14 lockRatio: 'Zaključaj odnos', 14 lockRatio: 'Zaključaj odnos',
15 menu: 'Svojstva slika', 15 menu: 'Svojstva slika',
16 resetSize: 'Obriši veličinu', 16 resetSize: 'Obriši veličinu',
diff --git a/sources/plugins/image/lang/hu.js b/sources/plugins/image/lang/hu.js
index ed4c356..5a9e990 100644
--- a/sources/plugins/image/lang/hu.js
+++ b/sources/plugins/image/lang/hu.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'image', 'hu', { 5CKEDITOR.plugins.setLang( 'image', 'hu', {
diff --git a/sources/plugins/image/lang/id.js b/sources/plugins/image/lang/id.js
index 68ccd52..8d27ad6 100644
--- a/sources/plugins/image/lang/id.js
+++ b/sources/plugins/image/lang/id.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'image', 'id', { 5CKEDITOR.plugins.setLang( 'image', 'id', {
diff --git a/sources/plugins/image/lang/is.js b/sources/plugins/image/lang/is.js
index f55c69c..fc02308 100644
--- a/sources/plugins/image/lang/is.js
+++ b/sources/plugins/image/lang/is.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'image', 'is', { 5CKEDITOR.plugins.setLang( 'image', 'is', {
diff --git a/sources/plugins/image/lang/it.js b/sources/plugins/image/lang/it.js
index 3aeb017..7b066ca 100644
--- a/sources/plugins/image/lang/it.js
+++ b/sources/plugins/image/lang/it.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'image', 'it', { 5CKEDITOR.plugins.setLang( 'image', 'it', {
diff --git a/sources/plugins/image/lang/ja.js b/sources/plugins/image/lang/ja.js
index 86d54c8..a2d500c 100644
--- a/sources/plugins/image/lang/ja.js
+++ b/sources/plugins/image/lang/ja.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'image', 'ja', { 5CKEDITOR.plugins.setLang( 'image', 'ja', {
diff --git a/sources/plugins/image/lang/ka.js b/sources/plugins/image/lang/ka.js
index fe0f8f4..0a634f0 100644
--- a/sources/plugins/image/lang/ka.js
+++ b/sources/plugins/image/lang/ka.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'image', 'ka', { 5CKEDITOR.plugins.setLang( 'image', 'ka', {
diff --git a/sources/plugins/image/lang/km.js b/sources/plugins/image/lang/km.js
index f3236ee..d60562a 100644
--- a/sources/plugins/image/lang/km.js
+++ b/sources/plugins/image/lang/km.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'image', 'km', { 5CKEDITOR.plugins.setLang( 'image', 'km', {
diff --git a/sources/plugins/image/lang/ko.js b/sources/plugins/image/lang/ko.js
index 30e7e45..75e5252 100644
--- a/sources/plugins/image/lang/ko.js
+++ b/sources/plugins/image/lang/ko.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'image', 'ko', { 5CKEDITOR.plugins.setLang( 'image', 'ko', {
diff --git a/sources/plugins/image/lang/ku.js b/sources/plugins/image/lang/ku.js
index 9a8678a..2b70145 100644
--- a/sources/plugins/image/lang/ku.js
+++ b/sources/plugins/image/lang/ku.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'image', 'ku', { 5CKEDITOR.plugins.setLang( 'image', 'ku', {
diff --git a/sources/plugins/image/lang/lt.js b/sources/plugins/image/lang/lt.js
index 0261413..2343934 100644
--- a/sources/plugins/image/lang/lt.js
+++ b/sources/plugins/image/lang/lt.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'image', 'lt', { 5CKEDITOR.plugins.setLang( 'image', 'lt', {
diff --git a/sources/plugins/image/lang/lv.js b/sources/plugins/image/lang/lv.js
index f4e6aef..cf20166 100644
--- a/sources/plugins/image/lang/lv.js
+++ b/sources/plugins/image/lang/lv.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'image', 'lv', { 5CKEDITOR.plugins.setLang( 'image', 'lv', {
diff --git a/sources/plugins/image/lang/mk.js b/sources/plugins/image/lang/mk.js
index 062f94f..9dd01cc 100644
--- a/sources/plugins/image/lang/mk.js
+++ b/sources/plugins/image/lang/mk.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'image', 'mk', { 5CKEDITOR.plugins.setLang( 'image', 'mk', {
diff --git a/sources/plugins/image/lang/mn.js b/sources/plugins/image/lang/mn.js
index 7923ec6..4daf38a 100644
--- a/sources/plugins/image/lang/mn.js
+++ b/sources/plugins/image/lang/mn.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'image', 'mn', { 5CKEDITOR.plugins.setLang( 'image', 'mn', {
diff --git a/sources/plugins/image/lang/ms.js b/sources/plugins/image/lang/ms.js
index 98adf09..28511d0 100644
--- a/sources/plugins/image/lang/ms.js
+++ b/sources/plugins/image/lang/ms.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'image', 'ms', { 5CKEDITOR.plugins.setLang( 'image', 'ms', {
diff --git a/sources/plugins/image/lang/nb.js b/sources/plugins/image/lang/nb.js
index ac94f30..87208af 100644
--- a/sources/plugins/image/lang/nb.js
+++ b/sources/plugins/image/lang/nb.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'image', 'nb', { 5CKEDITOR.plugins.setLang( 'image', 'nb', {
diff --git a/sources/plugins/image/lang/nl.js b/sources/plugins/image/lang/nl.js
index 8755503..bbe4943 100644
--- a/sources/plugins/image/lang/nl.js
+++ b/sources/plugins/image/lang/nl.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'image', 'nl', { 5CKEDITOR.plugins.setLang( 'image', 'nl', {
diff --git a/sources/plugins/image/lang/no.js b/sources/plugins/image/lang/no.js
index 5f220cb..9d4898a 100644
--- a/sources/plugins/image/lang/no.js
+++ b/sources/plugins/image/lang/no.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'image', 'no', { 5CKEDITOR.plugins.setLang( 'image', 'no', {
diff --git a/sources/plugins/image/lang/oc.js b/sources/plugins/image/lang/oc.js
new file mode 100644
index 0000000..fa595c6
--- /dev/null
+++ b/sources/plugins/image/lang/oc.js
@@ -0,0 +1,25 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'image', 'oc', {
6 alt: 'Tèxte alternatiu',
7 border: 'Bordadura',
8 btnUpload: 'Mandar sul servidor',
9 button2Img: 'Volètz transformar lo boton amb imatge seleccionat en imatge simple ?',
10 hSpace: 'Espaçament orizontal',
11 img2Button: 'Volètz transformar l\'imatge seleccionat en boton amb imatge ?',
12 infoTab: 'Informacions sus l\'imatge',
13 linkTab: 'Ligam',
14 lockRatio: 'Conservar las proporcions',
15 menu: 'Proprietats de l\'imatge',
16 resetSize: 'Reïnicializar la talha',
17 title: 'Proprietats de l\'imatge',
18 titleButton: 'Proprietats del boton amb imatge',
19 upload: 'Mandar',
20 urlMissing: 'L\'URL font de l\'imatge es mancanta.',
21 vSpace: 'Espaçament vertical',
22 validateBorder: 'La bordadura deu èsser un nombre entièr.',
23 validateHSpace: 'L\'espaçament orizontal deu èsser un nombre entièr.',
24 validateVSpace: 'L\'espaçament vertical deu èsser un nombre entièr.'
25} );
diff --git a/sources/plugins/image/lang/pl.js b/sources/plugins/image/lang/pl.js
index ba55b74..93afb85 100644
--- a/sources/plugins/image/lang/pl.js
+++ b/sources/plugins/image/lang/pl.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'image', 'pl', { 5CKEDITOR.plugins.setLang( 'image', 'pl', {
diff --git a/sources/plugins/image/lang/pt-br.js b/sources/plugins/image/lang/pt-br.js
index 8ac3753..0d13a9a 100644
--- a/sources/plugins/image/lang/pt-br.js
+++ b/sources/plugins/image/lang/pt-br.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'image', 'pt-br', { 5CKEDITOR.plugins.setLang( 'image', 'pt-br', {
diff --git a/sources/plugins/image/lang/pt.js b/sources/plugins/image/lang/pt.js
index c152d81..729c48e 100644
--- a/sources/plugins/image/lang/pt.js
+++ b/sources/plugins/image/lang/pt.js
@@ -1,25 +1,25 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'image', 'pt', { 5CKEDITOR.plugins.setLang( 'image', 'pt', {
6 alt: 'Texto Alternativo', 6 alt: 'Texto alternativo',
7 border: 'Limite', 7 border: 'Limite',
8 btnUpload: 'Enviar para o servidor', 8 btnUpload: 'Enviar para o servidor',
9 button2Img: 'Deseja transformar o botão com imagem selecionado em uma imagem?', 9 button2Img: 'Deseja transformar o botão com imagem selecionado numa imagem simples?',
10 hSpace: 'Esp.Horiz', 10 hSpace: 'Esp. Horiz',
11 img2Button: 'Deseja transformar a imagem selecionada em um botão com imagem?', 11 img2Button: 'Deseja transformar a imagem selecionada num botão com imagem?',
12 infoTab: 'Informação da Imagem', 12 infoTab: 'Informação da imagem',
13 linkTab: 'Hiperligação', 13 linkTab: 'Hiperligação',
14 lockRatio: 'Proporcional', 14 lockRatio: 'Proporcional',
15 menu: 'Propriedades da Imagem', 15 menu: 'Propriedades da Imagem',
16 resetSize: 'Tamanho Original', 16 resetSize: 'Tamanho original',
17 title: 'Propriedades da Imagem', 17 title: 'Propriedades da imagem',
18 titleButton: 'Propriedades do Botão de imagens', 18 titleButton: 'Propriedades do botão de imagem',
19 upload: 'Carregar', 19 upload: 'Carregar',
20 urlMissing: 'O URL da fonte da imagem está em falta.', 20 urlMissing: 'O URL de origem da imagem está em falta.',
21 vSpace: 'Esp.Vert', 21 vSpace: 'Esp. Vert',
22 validateBorder: 'A borda tem de ser um numero.', 22 validateBorder: 'A borda tem de ser um número inteiro.',
23 validateHSpace: 'HSpace tem de ser um numero.', 23 validateHSpace: 'HSpace tem de ser um numero.',
24 validateVSpace: 'VSpace tem de ser um numero.' 24 validateVSpace: 'VSpace tem de ser um numero.'
25} ); 25} );
diff --git a/sources/plugins/image/lang/ro.js b/sources/plugins/image/lang/ro.js
index c45929a..067dee2 100644
--- a/sources/plugins/image/lang/ro.js
+++ b/sources/plugins/image/lang/ro.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'image', 'ro', { 5CKEDITOR.plugins.setLang( 'image', 'ro', {
diff --git a/sources/plugins/image/lang/ru.js b/sources/plugins/image/lang/ru.js
index 1ea84d2..cb937c9 100644
--- a/sources/plugins/image/lang/ru.js
+++ b/sources/plugins/image/lang/ru.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'image', 'ru', { 5CKEDITOR.plugins.setLang( 'image', 'ru', {
diff --git a/sources/plugins/image/lang/si.js b/sources/plugins/image/lang/si.js
index 7a15196..84cbace 100644
--- a/sources/plugins/image/lang/si.js
+++ b/sources/plugins/image/lang/si.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'image', 'si', { 5CKEDITOR.plugins.setLang( 'image', 'si', {
diff --git a/sources/plugins/image/lang/sk.js b/sources/plugins/image/lang/sk.js
index 1384f6b..38bc38a 100644
--- a/sources/plugins/image/lang/sk.js
+++ b/sources/plugins/image/lang/sk.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'image', 'sk', { 5CKEDITOR.plugins.setLang( 'image', 'sk', {
diff --git a/sources/plugins/image/lang/sl.js b/sources/plugins/image/lang/sl.js
index 4c7ba8f..29c440f 100644
--- a/sources/plugins/image/lang/sl.js
+++ b/sources/plugins/image/lang/sl.js
@@ -1,14 +1,14 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'image', 'sl', { 5CKEDITOR.plugins.setLang( 'image', 'sl', {
6 alt: 'Nadomestno besedilo', 6 alt: 'Nadomestno besedilo',
7 border: 'Obroba', 7 border: 'Obroba',
8 btnUpload: 'Pošlji na strežnik', 8 btnUpload: 'Pošlji na strežnik',
9 button2Img: 'Želiš pretvoriti izbrani gumb s sliko v preprosto sliko?', 9 button2Img: 'Želite pretvoriti izbrani gumb s sliko v preprosto sliko?',
10 hSpace: 'Vodoravni razmik', 10 hSpace: 'Vodoravni odmik',
11 img2Button: 'Želiš pretvoriti izbrano sliko v gumb s sliko?', 11 img2Button: 'Želite pretvoriti izbrano sliko v gumb s sliko?',
12 infoTab: 'Podatki o sliki', 12 infoTab: 'Podatki o sliki',
13 linkTab: 'Povezava', 13 linkTab: 'Povezava',
14 lockRatio: 'Zakleni razmerje', 14 lockRatio: 'Zakleni razmerje',
@@ -16,10 +16,10 @@ CKEDITOR.plugins.setLang( 'image', 'sl', {
16 resetSize: 'Ponastavi velikost', 16 resetSize: 'Ponastavi velikost',
17 title: 'Lastnosti slike', 17 title: 'Lastnosti slike',
18 titleButton: 'Lastnosti gumba s sliko', 18 titleButton: 'Lastnosti gumba s sliko',
19 upload: 'Polji', 19 upload: 'Naloi',
20 urlMissing: 'Manjka vir (URL) slike.', 20 urlMissing: 'Manjka URL vira slike.',
21 vSpace: 'Navpični razmik', 21 vSpace: 'Navpični odmik',
22 validateBorder: 'Meja mora biti celo število.', 22 validateBorder: 'Meja mora biti celo število.',
23 validateHSpace: 'HSpace mora biti celo število.', 23 validateHSpace: 'Vodoravni odmik mora biti celo število.',
24 validateVSpace: 'VSpace mora biti celo število.' 24 validateVSpace: 'VSpace mora biti celo število.'
25} ); 25} );
diff --git a/sources/plugins/image/lang/sq.js b/sources/plugins/image/lang/sq.js
index a851819..072a96d 100644
--- a/sources/plugins/image/lang/sq.js
+++ b/sources/plugins/image/lang/sq.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'image', 'sq', { 5CKEDITOR.plugins.setLang( 'image', 'sq', {
diff --git a/sources/plugins/image/lang/sr-latn.js b/sources/plugins/image/lang/sr-latn.js
index 25c39c3..b3c2a98 100644
--- a/sources/plugins/image/lang/sr-latn.js
+++ b/sources/plugins/image/lang/sr-latn.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'image', 'sr-latn', { 5CKEDITOR.plugins.setLang( 'image', 'sr-latn', {
diff --git a/sources/plugins/image/lang/sr.js b/sources/plugins/image/lang/sr.js
index 25b44c5..4a269d9 100644
--- a/sources/plugins/image/lang/sr.js
+++ b/sources/plugins/image/lang/sr.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'image', 'sr', { 5CKEDITOR.plugins.setLang( 'image', 'sr', {
diff --git a/sources/plugins/image/lang/sv.js b/sources/plugins/image/lang/sv.js
index bc11f09..db07c37 100644
--- a/sources/plugins/image/lang/sv.js
+++ b/sources/plugins/image/lang/sv.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'image', 'sv', { 5CKEDITOR.plugins.setLang( 'image', 'sv', {
diff --git a/sources/plugins/image/lang/th.js b/sources/plugins/image/lang/th.js
index f9f8023..0d33bb3 100644
--- a/sources/plugins/image/lang/th.js
+++ b/sources/plugins/image/lang/th.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'image', 'th', { 5CKEDITOR.plugins.setLang( 'image', 'th', {
diff --git a/sources/plugins/image/lang/tr.js b/sources/plugins/image/lang/tr.js
index 5a668f2..2f707a1 100644
--- a/sources/plugins/image/lang/tr.js
+++ b/sources/plugins/image/lang/tr.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'image', 'tr', { 5CKEDITOR.plugins.setLang( 'image', 'tr', {
diff --git a/sources/plugins/image/lang/tt.js b/sources/plugins/image/lang/tt.js
index 8daf0af..e659066 100644
--- a/sources/plugins/image/lang/tt.js
+++ b/sources/plugins/image/lang/tt.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'image', 'tt', { 5CKEDITOR.plugins.setLang( 'image', 'tt', {
diff --git a/sources/plugins/image/lang/ug.js b/sources/plugins/image/lang/ug.js
index 70382ec..d2a28ef 100644
--- a/sources/plugins/image/lang/ug.js
+++ b/sources/plugins/image/lang/ug.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'image', 'ug', { 5CKEDITOR.plugins.setLang( 'image', 'ug', {
diff --git a/sources/plugins/image/lang/uk.js b/sources/plugins/image/lang/uk.js
index c32c230..ace2eea 100644
--- a/sources/plugins/image/lang/uk.js
+++ b/sources/plugins/image/lang/uk.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'image', 'uk', { 5CKEDITOR.plugins.setLang( 'image', 'uk', {
diff --git a/sources/plugins/image/lang/vi.js b/sources/plugins/image/lang/vi.js
index 70d7578..4c33fd5 100644
--- a/sources/plugins/image/lang/vi.js
+++ b/sources/plugins/image/lang/vi.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'image', 'vi', { 5CKEDITOR.plugins.setLang( 'image', 'vi', {
diff --git a/sources/plugins/image/lang/zh-cn.js b/sources/plugins/image/lang/zh-cn.js
index 651468f..287a362 100644
--- a/sources/plugins/image/lang/zh-cn.js
+++ b/sources/plugins/image/lang/zh-cn.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'image', 'zh-cn', { 5CKEDITOR.plugins.setLang( 'image', 'zh-cn', {
diff --git a/sources/plugins/image/lang/zh.js b/sources/plugins/image/lang/zh.js
index 0859d26..920b554 100644
--- a/sources/plugins/image/lang/zh.js
+++ b/sources/plugins/image/lang/zh.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'image', 'zh', { 5CKEDITOR.plugins.setLang( 'image', 'zh', {
diff --git a/sources/plugins/image/plugin.js b/sources/plugins/image/plugin.js
index 8bed8ec..507ce0a 100644
--- a/sources/plugins/image/plugin.js
+++ b/sources/plugins/image/plugin.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -12,13 +12,13 @@
12 CKEDITOR.plugins.add( 'image', { 12 CKEDITOR.plugins.add( 'image', {
13 requires: 'dialog', 13 requires: 'dialog',
14 // jscs:disable maximumLineLength 14 // jscs:disable maximumLineLength
15 lang: 'af,ar,bg,bn,bs,ca,cs,cy,da,de,de-ch,el,en,en-au,en-ca,en-gb,eo,es,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,pl,pt,pt-br,ro,ru,si,sk,sl,sq,sr,sr-latn,sv,th,tr,tt,ug,uk,vi,zh,zh-cn', // %REMOVE_LINE_CORE% 15 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', // %REMOVE_LINE_CORE%
16 // jscs:enable maximumLineLength 16 // jscs:enable maximumLineLength
17 icons: 'image', // %REMOVE_LINE_CORE% 17 icons: 'image', // %REMOVE_LINE_CORE%
18 hidpi: true, // %REMOVE_LINE_CORE% 18 hidpi: true, // %REMOVE_LINE_CORE%
19 init: function( editor ) { 19 init: function( editor ) {
20 // Abort when Image2 is to be loaded since both plugins 20 // Abort when Image2 is to be loaded since both plugins
21 // share the same button, command, etc. names (#11222). 21 // share the same button, command, etc. names (http://dev.ckeditor.com/ticket/11222).
22 if ( editor.plugins.image2 ) 22 if ( editor.plugins.image2 )
23 return; 23 return;
24 24
@@ -78,11 +78,11 @@
78 }, 78 },
79 afterInit: function( editor ) { 79 afterInit: function( editor ) {
80 // Abort when Image2 is to be loaded since both plugins 80 // Abort when Image2 is to be loaded since both plugins
81 // share the same button, command, etc. names (#11222). 81 // share the same button, command, etc. names (http://dev.ckeditor.com/ticket/11222).
82 if ( editor.plugins.image2 ) 82 if ( editor.plugins.image2 )
83 return; 83 return;
84 84
85 // Customize the behavior of the alignment commands. (#7430) 85 // Customize the behavior of the alignment commands. (http://dev.ckeditor.com/ticket/7430)
86 setupAlignCommand( 'left' ); 86 setupAlignCommand( 'left' );
87 setupAlignCommand( 'right' ); 87 setupAlignCommand( 'right' );
88 setupAlignCommand( 'center' ); 88 setupAlignCommand( 'center' );
diff --git a/sources/plugins/indent/dev/indent.html b/sources/plugins/indent/dev/indent.html
index 4ddab5a..8b935ae 100644
--- a/sources/plugins/indent/dev/indent.html
+++ b/sources/plugins/indent/dev/indent.html
@@ -1,6 +1,6 @@
1<!DOCTYPE html> 1<!DOCTYPE html>
2<!-- 2<!--
3Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 3Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
4For licensing, see LICENSE.md or http://ckeditor.com/license 4For licensing, see LICENSE.md or http://ckeditor.com/license
5--> 5-->
6<html> 6<html>
diff --git a/sources/plugins/indent/icons/hidpi/indent-rtl.png b/sources/plugins/indent/icons/hidpi/indent-rtl.png
index e14dc30..72bf567 100644
--- a/sources/plugins/indent/icons/hidpi/indent-rtl.png
+++ b/sources/plugins/indent/icons/hidpi/indent-rtl.png
Binary files differ
diff --git a/sources/plugins/indent/icons/hidpi/indent.png b/sources/plugins/indent/icons/hidpi/indent.png
index c629bb4..6381b23 100644
--- a/sources/plugins/indent/icons/hidpi/indent.png
+++ b/sources/plugins/indent/icons/hidpi/indent.png
Binary files differ
diff --git a/sources/plugins/indent/icons/hidpi/outdent-rtl.png b/sources/plugins/indent/icons/hidpi/outdent-rtl.png
index 35f69ab..441e204 100644
--- a/sources/plugins/indent/icons/hidpi/outdent-rtl.png
+++ b/sources/plugins/indent/icons/hidpi/outdent-rtl.png
Binary files differ
diff --git a/sources/plugins/indent/icons/hidpi/outdent.png b/sources/plugins/indent/icons/hidpi/outdent.png
index b00179e..8fa4e5e 100644
--- a/sources/plugins/indent/icons/hidpi/outdent.png
+++ b/sources/plugins/indent/icons/hidpi/outdent.png
Binary files differ
diff --git a/sources/plugins/indent/icons/indent-rtl.png b/sources/plugins/indent/icons/indent-rtl.png
index ff3fd22..0327578 100644
--- a/sources/plugins/indent/icons/indent-rtl.png
+++ b/sources/plugins/indent/icons/indent-rtl.png
Binary files differ
diff --git a/sources/plugins/indent/icons/indent.png b/sources/plugins/indent/icons/indent.png
index 3e151bc..0a5d293 100644
--- a/sources/plugins/indent/icons/indent.png
+++ b/sources/plugins/indent/icons/indent.png
Binary files differ
diff --git a/sources/plugins/indent/icons/outdent-rtl.png b/sources/plugins/indent/icons/outdent-rtl.png
index 7165424..ce9ce08 100644
--- a/sources/plugins/indent/icons/outdent-rtl.png
+++ b/sources/plugins/indent/icons/outdent-rtl.png
Binary files differ
diff --git a/sources/plugins/indent/icons/outdent.png b/sources/plugins/indent/icons/outdent.png
index 54f205d..351f05d 100644
--- a/sources/plugins/indent/icons/outdent.png
+++ b/sources/plugins/indent/icons/outdent.png
Binary files differ
diff --git a/sources/plugins/indent/lang/af.js b/sources/plugins/indent/lang/af.js
index 416b241..14fff63 100644
--- a/sources/plugins/indent/lang/af.js
+++ b/sources/plugins/indent/lang/af.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'indent', 'af', { 5CKEDITOR.plugins.setLang( 'indent', 'af', {
diff --git a/sources/plugins/indent/lang/ar.js b/sources/plugins/indent/lang/ar.js
index 13458a6..fe078cb 100644
--- a/sources/plugins/indent/lang/ar.js
+++ b/sources/plugins/indent/lang/ar.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'indent', 'ar', { 5CKEDITOR.plugins.setLang( 'indent', 'ar', {
diff --git a/sources/plugins/indent/lang/az.js b/sources/plugins/indent/lang/az.js
new file mode 100644
index 0000000..389d1d9
--- /dev/null
+++ b/sources/plugins/indent/lang/az.js
@@ -0,0 +1,8 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'indent', 'az', {
6 indent: 'Sol boşluqu artır',
7 outdent: 'Sol boşluqu azalt'
8} );
diff --git a/sources/plugins/indent/lang/bg.js b/sources/plugins/indent/lang/bg.js
index 5c6c994..f4e0163 100644
--- a/sources/plugins/indent/lang/bg.js
+++ b/sources/plugins/indent/lang/bg.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'indent', 'bg', { 5CKEDITOR.plugins.setLang( 'indent', 'bg', {
diff --git a/sources/plugins/indent/lang/bn.js b/sources/plugins/indent/lang/bn.js
index 11a428e..88a3393 100644
--- a/sources/plugins/indent/lang/bn.js
+++ b/sources/plugins/indent/lang/bn.js
@@ -1,8 +1,8 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'indent', 'bn', { 5CKEDITOR.plugins.setLang( 'indent', 'bn', {
6 indent: 'ইনডেন্ট বাড়া', 6 indent: 'ইনডেন্ট বাড়া',
7 outdent: 'ইনডেন্ট কমাও' 7 outdent: 'ইনডেন্ট কমাও'
8} ); 8} );
diff --git a/sources/plugins/indent/lang/bs.js b/sources/plugins/indent/lang/bs.js
index fcf1cc2..62df508 100644
--- a/sources/plugins/indent/lang/bs.js
+++ b/sources/plugins/indent/lang/bs.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'indent', 'bs', { 5CKEDITOR.plugins.setLang( 'indent', 'bs', {
diff --git a/sources/plugins/indent/lang/ca.js b/sources/plugins/indent/lang/ca.js
index 2ee7ad4..38f299a 100644
--- a/sources/plugins/indent/lang/ca.js
+++ b/sources/plugins/indent/lang/ca.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'indent', 'ca', { 5CKEDITOR.plugins.setLang( 'indent', 'ca', {
diff --git a/sources/plugins/indent/lang/cs.js b/sources/plugins/indent/lang/cs.js
index 3e5ed77..854aac8 100644
--- a/sources/plugins/indent/lang/cs.js
+++ b/sources/plugins/indent/lang/cs.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'indent', 'cs', { 5CKEDITOR.plugins.setLang( 'indent', 'cs', {
diff --git a/sources/plugins/indent/lang/cy.js b/sources/plugins/indent/lang/cy.js
index 3380d70..d1df873 100644
--- a/sources/plugins/indent/lang/cy.js
+++ b/sources/plugins/indent/lang/cy.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'indent', 'cy', { 5CKEDITOR.plugins.setLang( 'indent', 'cy', {
diff --git a/sources/plugins/indent/lang/da.js b/sources/plugins/indent/lang/da.js
index 0f18d9a..27e5731 100644
--- a/sources/plugins/indent/lang/da.js
+++ b/sources/plugins/indent/lang/da.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'indent', 'da', { 5CKEDITOR.plugins.setLang( 'indent', 'da', {
diff --git a/sources/plugins/indent/lang/de-ch.js b/sources/plugins/indent/lang/de-ch.js
index ae8010b..0696275 100644
--- a/sources/plugins/indent/lang/de-ch.js
+++ b/sources/plugins/indent/lang/de-ch.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'indent', 'de-ch', { 5CKEDITOR.plugins.setLang( 'indent', 'de-ch', {
diff --git a/sources/plugins/indent/lang/de.js b/sources/plugins/indent/lang/de.js
index be211af..3f7a53c 100644
--- a/sources/plugins/indent/lang/de.js
+++ b/sources/plugins/indent/lang/de.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'indent', 'de', { 5CKEDITOR.plugins.setLang( 'indent', 'de', {
diff --git a/sources/plugins/indent/lang/el.js b/sources/plugins/indent/lang/el.js
index e6df50c..57ac0f5 100644
--- a/sources/plugins/indent/lang/el.js
+++ b/sources/plugins/indent/lang/el.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'indent', 'el', { 5CKEDITOR.plugins.setLang( 'indent', 'el', {
diff --git a/sources/plugins/indent/lang/en-au.js b/sources/plugins/indent/lang/en-au.js
index 26049a1..6fd80ea 100644
--- a/sources/plugins/indent/lang/en-au.js
+++ b/sources/plugins/indent/lang/en-au.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'indent', 'en-au', { 5CKEDITOR.plugins.setLang( 'indent', 'en-au', {
diff --git a/sources/plugins/indent/lang/en-ca.js b/sources/plugins/indent/lang/en-ca.js
index cf67c87..b103510 100644
--- a/sources/plugins/indent/lang/en-ca.js
+++ b/sources/plugins/indent/lang/en-ca.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'indent', 'en-ca', { 5CKEDITOR.plugins.setLang( 'indent', 'en-ca', {
diff --git a/sources/plugins/indent/lang/en-gb.js b/sources/plugins/indent/lang/en-gb.js
index dd746c1..0d2edf3 100644
--- a/sources/plugins/indent/lang/en-gb.js
+++ b/sources/plugins/indent/lang/en-gb.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'indent', 'en-gb', { 5CKEDITOR.plugins.setLang( 'indent', 'en-gb', {
diff --git a/sources/plugins/indent/lang/en.js b/sources/plugins/indent/lang/en.js
index c3b968b..c5dba75 100644
--- a/sources/plugins/indent/lang/en.js
+++ b/sources/plugins/indent/lang/en.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'indent', 'en', { 5CKEDITOR.plugins.setLang( 'indent', 'en', {
diff --git a/sources/plugins/indent/lang/eo.js b/sources/plugins/indent/lang/eo.js
index 5955684..eb8b8ea 100644
--- a/sources/plugins/indent/lang/eo.js
+++ b/sources/plugins/indent/lang/eo.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'indent', 'eo', { 5CKEDITOR.plugins.setLang( 'indent', 'eo', {
diff --git a/sources/plugins/indent/lang/es-mx.js b/sources/plugins/indent/lang/es-mx.js
new file mode 100644
index 0000000..8a6e549
--- /dev/null
+++ b/sources/plugins/indent/lang/es-mx.js
@@ -0,0 +1,8 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'indent', 'es-mx', {
6 indent: 'Incrementar sangría',
7 outdent: 'Decrementar sangría'
8} );
diff --git a/sources/plugins/indent/lang/es.js b/sources/plugins/indent/lang/es.js
index 277d048..d7b01c6 100644
--- a/sources/plugins/indent/lang/es.js
+++ b/sources/plugins/indent/lang/es.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'indent', 'es', { 5CKEDITOR.plugins.setLang( 'indent', 'es', {
diff --git a/sources/plugins/indent/lang/et.js b/sources/plugins/indent/lang/et.js
index aae3755..ce10b13 100644
--- a/sources/plugins/indent/lang/et.js
+++ b/sources/plugins/indent/lang/et.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'indent', 'et', { 5CKEDITOR.plugins.setLang( 'indent', 'et', {
diff --git a/sources/plugins/indent/lang/eu.js b/sources/plugins/indent/lang/eu.js
index 8e9a551..7934a48 100644
--- a/sources/plugins/indent/lang/eu.js
+++ b/sources/plugins/indent/lang/eu.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'indent', 'eu', { 5CKEDITOR.plugins.setLang( 'indent', 'eu', {
diff --git a/sources/plugins/indent/lang/fa.js b/sources/plugins/indent/lang/fa.js
index b17ce97..932734a 100644
--- a/sources/plugins/indent/lang/fa.js
+++ b/sources/plugins/indent/lang/fa.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'indent', 'fa', { 5CKEDITOR.plugins.setLang( 'indent', 'fa', {
diff --git a/sources/plugins/indent/lang/fi.js b/sources/plugins/indent/lang/fi.js
index 068452c..c6a5b21 100644
--- a/sources/plugins/indent/lang/fi.js
+++ b/sources/plugins/indent/lang/fi.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'indent', 'fi', { 5CKEDITOR.plugins.setLang( 'indent', 'fi', {
diff --git a/sources/plugins/indent/lang/fo.js b/sources/plugins/indent/lang/fo.js
index 1763927..f6e6671 100644
--- a/sources/plugins/indent/lang/fo.js
+++ b/sources/plugins/indent/lang/fo.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'indent', 'fo', { 5CKEDITOR.plugins.setLang( 'indent', 'fo', {
diff --git a/sources/plugins/indent/lang/fr-ca.js b/sources/plugins/indent/lang/fr-ca.js
index 029e878..74bbed5 100644
--- a/sources/plugins/indent/lang/fr-ca.js
+++ b/sources/plugins/indent/lang/fr-ca.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'indent', 'fr-ca', { 5CKEDITOR.plugins.setLang( 'indent', 'fr-ca', {
diff --git a/sources/plugins/indent/lang/fr.js b/sources/plugins/indent/lang/fr.js
index c0ad5fe..0fb1347 100644
--- a/sources/plugins/indent/lang/fr.js
+++ b/sources/plugins/indent/lang/fr.js
@@ -1,8 +1,8 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'indent', 'fr', { 5CKEDITOR.plugins.setLang( 'indent', 'fr', {
6 indent: 'Augmenter le retrait (tabulation)', 6 indent: 'Augmenter le retrait',
7 outdent: 'Diminuer le retrait (tabulation)' 7 outdent: 'Diminuer le retrait'
8} ); 8} );
diff --git a/sources/plugins/indent/lang/gl.js b/sources/plugins/indent/lang/gl.js
index 3d4a3af..832b0ad 100644
--- a/sources/plugins/indent/lang/gl.js
+++ b/sources/plugins/indent/lang/gl.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'indent', 'gl', { 5CKEDITOR.plugins.setLang( 'indent', 'gl', {
diff --git a/sources/plugins/indent/lang/gu.js b/sources/plugins/indent/lang/gu.js
index 84f02c0..e69a3ce 100644
--- a/sources/plugins/indent/lang/gu.js
+++ b/sources/plugins/indent/lang/gu.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'indent', 'gu', { 5CKEDITOR.plugins.setLang( 'indent', 'gu', {
diff --git a/sources/plugins/indent/lang/he.js b/sources/plugins/indent/lang/he.js
index 26a6626..6fa5ed7 100644
--- a/sources/plugins/indent/lang/he.js
+++ b/sources/plugins/indent/lang/he.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'indent', 'he', { 5CKEDITOR.plugins.setLang( 'indent', 'he', {
diff --git a/sources/plugins/indent/lang/hi.js b/sources/plugins/indent/lang/hi.js
index a532d64..a3c39d8 100644
--- a/sources/plugins/indent/lang/hi.js
+++ b/sources/plugins/indent/lang/hi.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'indent', 'hi', { 5CKEDITOR.plugins.setLang( 'indent', 'hi', {
diff --git a/sources/plugins/indent/lang/hr.js b/sources/plugins/indent/lang/hr.js
index b4c0764..dfa90d4 100644
--- a/sources/plugins/indent/lang/hr.js
+++ b/sources/plugins/indent/lang/hr.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'indent', 'hr', { 5CKEDITOR.plugins.setLang( 'indent', 'hr', {
diff --git a/sources/plugins/indent/lang/hu.js b/sources/plugins/indent/lang/hu.js
index b8f780d..22cd8e0 100644
--- a/sources/plugins/indent/lang/hu.js
+++ b/sources/plugins/indent/lang/hu.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'indent', 'hu', { 5CKEDITOR.plugins.setLang( 'indent', 'hu', {
diff --git a/sources/plugins/indent/lang/id.js b/sources/plugins/indent/lang/id.js
index 7bb5efb..2c66b70 100644
--- a/sources/plugins/indent/lang/id.js
+++ b/sources/plugins/indent/lang/id.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'indent', 'id', { 5CKEDITOR.plugins.setLang( 'indent', 'id', {
diff --git a/sources/plugins/indent/lang/is.js b/sources/plugins/indent/lang/is.js
index 9ced9f4..71f80b1 100644
--- a/sources/plugins/indent/lang/is.js
+++ b/sources/plugins/indent/lang/is.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'indent', 'is', { 5CKEDITOR.plugins.setLang( 'indent', 'is', {
diff --git a/sources/plugins/indent/lang/it.js b/sources/plugins/indent/lang/it.js
index aaffe67..36e0922 100644
--- a/sources/plugins/indent/lang/it.js
+++ b/sources/plugins/indent/lang/it.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'indent', 'it', { 5CKEDITOR.plugins.setLang( 'indent', 'it', {
diff --git a/sources/plugins/indent/lang/ja.js b/sources/plugins/indent/lang/ja.js
index 0ac03e9..838f4cb 100644
--- a/sources/plugins/indent/lang/ja.js
+++ b/sources/plugins/indent/lang/ja.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'indent', 'ja', { 5CKEDITOR.plugins.setLang( 'indent', 'ja', {
diff --git a/sources/plugins/indent/lang/ka.js b/sources/plugins/indent/lang/ka.js
index 9e95b2a..a0ce0e8 100644
--- a/sources/plugins/indent/lang/ka.js
+++ b/sources/plugins/indent/lang/ka.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'indent', 'ka', { 5CKEDITOR.plugins.setLang( 'indent', 'ka', {
diff --git a/sources/plugins/indent/lang/km.js b/sources/plugins/indent/lang/km.js
index 11feba1..514fba2 100644
--- a/sources/plugins/indent/lang/km.js
+++ b/sources/plugins/indent/lang/km.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'indent', 'km', { 5CKEDITOR.plugins.setLang( 'indent', 'km', {
diff --git a/sources/plugins/indent/lang/ko.js b/sources/plugins/indent/lang/ko.js
index 847528a..c77afbd 100644
--- a/sources/plugins/indent/lang/ko.js
+++ b/sources/plugins/indent/lang/ko.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'indent', 'ko', { 5CKEDITOR.plugins.setLang( 'indent', 'ko', {
diff --git a/sources/plugins/indent/lang/ku.js b/sources/plugins/indent/lang/ku.js
index d373698..728bfe3 100644
--- a/sources/plugins/indent/lang/ku.js
+++ b/sources/plugins/indent/lang/ku.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'indent', 'ku', { 5CKEDITOR.plugins.setLang( 'indent', 'ku', {
diff --git a/sources/plugins/indent/lang/lt.js b/sources/plugins/indent/lang/lt.js
index 7677587..4458598 100644
--- a/sources/plugins/indent/lang/lt.js
+++ b/sources/plugins/indent/lang/lt.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'indent', 'lt', { 5CKEDITOR.plugins.setLang( 'indent', 'lt', {
diff --git a/sources/plugins/indent/lang/lv.js b/sources/plugins/indent/lang/lv.js
index 348b5ec..74d36a4 100644
--- a/sources/plugins/indent/lang/lv.js
+++ b/sources/plugins/indent/lang/lv.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'indent', 'lv', { 5CKEDITOR.plugins.setLang( 'indent', 'lv', {
diff --git a/sources/plugins/indent/lang/mk.js b/sources/plugins/indent/lang/mk.js
index f4071a0..440995e 100644
--- a/sources/plugins/indent/lang/mk.js
+++ b/sources/plugins/indent/lang/mk.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'indent', 'mk', { 5CKEDITOR.plugins.setLang( 'indent', 'mk', {
diff --git a/sources/plugins/indent/lang/mn.js b/sources/plugins/indent/lang/mn.js
index f1f1790..d9c74ba 100644
--- a/sources/plugins/indent/lang/mn.js
+++ b/sources/plugins/indent/lang/mn.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'indent', 'mn', { 5CKEDITOR.plugins.setLang( 'indent', 'mn', {
diff --git a/sources/plugins/indent/lang/ms.js b/sources/plugins/indent/lang/ms.js
index 6b633fe..5fd53e2 100644
--- a/sources/plugins/indent/lang/ms.js
+++ b/sources/plugins/indent/lang/ms.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'indent', 'ms', { 5CKEDITOR.plugins.setLang( 'indent', 'ms', {
diff --git a/sources/plugins/indent/lang/nb.js b/sources/plugins/indent/lang/nb.js
index 83cec71..e69a947 100644
--- a/sources/plugins/indent/lang/nb.js
+++ b/sources/plugins/indent/lang/nb.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'indent', 'nb', { 5CKEDITOR.plugins.setLang( 'indent', 'nb', {
diff --git a/sources/plugins/indent/lang/nl.js b/sources/plugins/indent/lang/nl.js
index 9897f73..8979f8f 100644
--- a/sources/plugins/indent/lang/nl.js
+++ b/sources/plugins/indent/lang/nl.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'indent', 'nl', { 5CKEDITOR.plugins.setLang( 'indent', 'nl', {
diff --git a/sources/plugins/indent/lang/no.js b/sources/plugins/indent/lang/no.js
index 1ef07dd..a01c1bb 100644
--- a/sources/plugins/indent/lang/no.js
+++ b/sources/plugins/indent/lang/no.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'indent', 'no', { 5CKEDITOR.plugins.setLang( 'indent', 'no', {
diff --git a/sources/plugins/indent/lang/oc.js b/sources/plugins/indent/lang/oc.js
new file mode 100644
index 0000000..00e9cf9
--- /dev/null
+++ b/sources/plugins/indent/lang/oc.js
@@ -0,0 +1,8 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'indent', 'oc', {
6 indent: 'Aumentar l\'alinèa',
7 outdent: 'Dmesir l\'alinèa'
8} );
diff --git a/sources/plugins/indent/lang/pl.js b/sources/plugins/indent/lang/pl.js
index 3fc7978..ef78a2e 100644
--- a/sources/plugins/indent/lang/pl.js
+++ b/sources/plugins/indent/lang/pl.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'indent', 'pl', { 5CKEDITOR.plugins.setLang( 'indent', 'pl', {
diff --git a/sources/plugins/indent/lang/pt-br.js b/sources/plugins/indent/lang/pt-br.js
index 0a02f0b..45ae5e6 100644
--- a/sources/plugins/indent/lang/pt-br.js
+++ b/sources/plugins/indent/lang/pt-br.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'indent', 'pt-br', { 5CKEDITOR.plugins.setLang( 'indent', 'pt-br', {
diff --git a/sources/plugins/indent/lang/pt.js b/sources/plugins/indent/lang/pt.js
index 1424b11..6d26cb2 100644
--- a/sources/plugins/indent/lang/pt.js
+++ b/sources/plugins/indent/lang/pt.js
@@ -1,8 +1,8 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'indent', 'pt', { 5CKEDITOR.plugins.setLang( 'indent', 'pt', {
6 indent: 'Aumentar Avanço', 6 indent: 'Aumentar avanço',
7 outdent: 'Diminuir Avanço' 7 outdent: 'Diminuir avanço'
8} ); 8} );
diff --git a/sources/plugins/indent/lang/ro.js b/sources/plugins/indent/lang/ro.js
index 51155b6..708b09d 100644
--- a/sources/plugins/indent/lang/ro.js
+++ b/sources/plugins/indent/lang/ro.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'indent', 'ro', { 5CKEDITOR.plugins.setLang( 'indent', 'ro', {
diff --git a/sources/plugins/indent/lang/ru.js b/sources/plugins/indent/lang/ru.js
index 4baa294..aa21b7a 100644
--- a/sources/plugins/indent/lang/ru.js
+++ b/sources/plugins/indent/lang/ru.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'indent', 'ru', { 5CKEDITOR.plugins.setLang( 'indent', 'ru', {
diff --git a/sources/plugins/indent/lang/si.js b/sources/plugins/indent/lang/si.js
index 1d38458..98b8dd3 100644
--- a/sources/plugins/indent/lang/si.js
+++ b/sources/plugins/indent/lang/si.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'indent', 'si', { 5CKEDITOR.plugins.setLang( 'indent', 'si', {
diff --git a/sources/plugins/indent/lang/sk.js b/sources/plugins/indent/lang/sk.js
index f50d6d7..3135f4f 100644
--- a/sources/plugins/indent/lang/sk.js
+++ b/sources/plugins/indent/lang/sk.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'indent', 'sk', { 5CKEDITOR.plugins.setLang( 'indent', 'sk', {
diff --git a/sources/plugins/indent/lang/sl.js b/sources/plugins/indent/lang/sl.js
index 0a81f97..15be2f7 100644
--- a/sources/plugins/indent/lang/sl.js
+++ b/sources/plugins/indent/lang/sl.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'indent', 'sl', { 5CKEDITOR.plugins.setLang( 'indent', 'sl', {
diff --git a/sources/plugins/indent/lang/sq.js b/sources/plugins/indent/lang/sq.js
index 85c4795..9a2dd63 100644
--- a/sources/plugins/indent/lang/sq.js
+++ b/sources/plugins/indent/lang/sq.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'indent', 'sq', { 5CKEDITOR.plugins.setLang( 'indent', 'sq', {
diff --git a/sources/plugins/indent/lang/sr-latn.js b/sources/plugins/indent/lang/sr-latn.js
index d930020..ca5a140 100644
--- a/sources/plugins/indent/lang/sr-latn.js
+++ b/sources/plugins/indent/lang/sr-latn.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'indent', 'sr-latn', { 5CKEDITOR.plugins.setLang( 'indent', 'sr-latn', {
diff --git a/sources/plugins/indent/lang/sr.js b/sources/plugins/indent/lang/sr.js
index d0077fb..f7498be 100644
--- a/sources/plugins/indent/lang/sr.js
+++ b/sources/plugins/indent/lang/sr.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'indent', 'sr', { 5CKEDITOR.plugins.setLang( 'indent', 'sr', {
diff --git a/sources/plugins/indent/lang/sv.js b/sources/plugins/indent/lang/sv.js
index dd92d3a..46b0692 100644
--- a/sources/plugins/indent/lang/sv.js
+++ b/sources/plugins/indent/lang/sv.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'indent', 'sv', { 5CKEDITOR.plugins.setLang( 'indent', 'sv', {
diff --git a/sources/plugins/indent/lang/th.js b/sources/plugins/indent/lang/th.js
index 2aebdad..2f60e53 100644
--- a/sources/plugins/indent/lang/th.js
+++ b/sources/plugins/indent/lang/th.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'indent', 'th', { 5CKEDITOR.plugins.setLang( 'indent', 'th', {
diff --git a/sources/plugins/indent/lang/tr.js b/sources/plugins/indent/lang/tr.js
index 06a1910..21520b6 100644
--- a/sources/plugins/indent/lang/tr.js
+++ b/sources/plugins/indent/lang/tr.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'indent', 'tr', { 5CKEDITOR.plugins.setLang( 'indent', 'tr', {
diff --git a/sources/plugins/indent/lang/tt.js b/sources/plugins/indent/lang/tt.js
index 79e6c27..604bbba 100644
--- a/sources/plugins/indent/lang/tt.js
+++ b/sources/plugins/indent/lang/tt.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'indent', 'tt', { 5CKEDITOR.plugins.setLang( 'indent', 'tt', {
diff --git a/sources/plugins/indent/lang/ug.js b/sources/plugins/indent/lang/ug.js
index 7f881d2..6fec573 100644
--- a/sources/plugins/indent/lang/ug.js
+++ b/sources/plugins/indent/lang/ug.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'indent', 'ug', { 5CKEDITOR.plugins.setLang( 'indent', 'ug', {
diff --git a/sources/plugins/indent/lang/uk.js b/sources/plugins/indent/lang/uk.js
index 4251ebe..c68ca96 100644
--- a/sources/plugins/indent/lang/uk.js
+++ b/sources/plugins/indent/lang/uk.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'indent', 'uk', { 5CKEDITOR.plugins.setLang( 'indent', 'uk', {
diff --git a/sources/plugins/indent/lang/vi.js b/sources/plugins/indent/lang/vi.js
index 0b56e84..7f44c5d 100644
--- a/sources/plugins/indent/lang/vi.js
+++ b/sources/plugins/indent/lang/vi.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'indent', 'vi', { 5CKEDITOR.plugins.setLang( 'indent', 'vi', {
diff --git a/sources/plugins/indent/lang/zh-cn.js b/sources/plugins/indent/lang/zh-cn.js
index c06b21b..2c9c383 100644
--- a/sources/plugins/indent/lang/zh-cn.js
+++ b/sources/plugins/indent/lang/zh-cn.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'indent', 'zh-cn', { 5CKEDITOR.plugins.setLang( 'indent', 'zh-cn', {
diff --git a/sources/plugins/indent/lang/zh.js b/sources/plugins/indent/lang/zh.js
index 1fe6e4e..ee681cb 100644
--- a/sources/plugins/indent/lang/zh.js
+++ b/sources/plugins/indent/lang/zh.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'indent', 'zh', { 5CKEDITOR.plugins.setLang( 'indent', 'zh', {
diff --git a/sources/plugins/indent/plugin.js b/sources/plugins/indent/plugin.js
index 32ac0c4..900e343 100644
--- a/sources/plugins/indent/plugin.js
+++ b/sources/plugins/indent/plugin.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -15,7 +15,7 @@
15 15
16 CKEDITOR.plugins.add( 'indent', { 16 CKEDITOR.plugins.add( 'indent', {
17 // jscs:disable maximumLineLength 17 // jscs:disable maximumLineLength
18 lang: 'af,ar,bg,bn,bs,ca,cs,cy,da,de,de-ch,el,en,en-au,en-ca,en-gb,eo,es,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,pl,pt,pt-br,ro,ru,si,sk,sl,sq,sr,sr-latn,sv,th,tr,tt,ug,uk,vi,zh,zh-cn', // %REMOVE_LINE_CORE% 18 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', // %REMOVE_LINE_CORE%
19 // jscs:enable maximumLineLength 19 // jscs:enable maximumLineLength
20 icons: 'indent,indent-rtl,outdent,outdent-rtl', // %REMOVE_LINE_CORE% 20 icons: 'indent,indent-rtl,outdent,outdent-rtl', // %REMOVE_LINE_CORE%
21 hidpi: true, // %REMOVE_LINE_CORE% 21 hidpi: true, // %REMOVE_LINE_CORE%
diff --git a/sources/plugins/indentblock/plugin.js b/sources/plugins/indentblock/plugin.js
index 9d31b98..b39fd73 100644
--- a/sources/plugins/indentblock/plugin.js
+++ b/sources/plugins/indentblock/plugin.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -39,6 +39,20 @@
39 } 39 }
40 }; 40 };
41 41
42 this.contentTransformations = [
43 [ 'div: splitMarginShorthand' ],
44 [ 'h1: splitMarginShorthand' ],
45 [ 'h2: splitMarginShorthand' ],
46 [ 'h3: splitMarginShorthand' ],
47 [ 'h4: splitMarginShorthand' ],
48 [ 'h5: splitMarginShorthand' ],
49 [ 'h6: splitMarginShorthand' ],
50 [ 'ol: splitMarginShorthand' ],
51 [ 'p: splitMarginShorthand' ],
52 [ 'pre: splitMarginShorthand' ],
53 [ 'ul: splitMarginShorthand' ]
54 ];
55
42 if ( this.enterBr ) 56 if ( this.enterBr )
43 this.allowedContent.div = true; 57 this.allowedContent.div = true;
44 58
diff --git a/sources/plugins/indentlist/plugin.js b/sources/plugins/indentlist/plugin.js
index 126af11..0ee30c0 100644
--- a/sources/plugins/indentlist/plugin.js
+++ b/sources/plugins/indentlist/plugin.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -35,17 +35,24 @@
35 // Indent and outdent lists with TAB/SHIFT+TAB key. Indenting can 35 // Indent and outdent lists with TAB/SHIFT+TAB key. Indenting can
36 // be done for any list item that isn't the first child of the parent. 36 // be done for any list item that isn't the first child of the parent.
37 editor.on( 'key', function( evt ) { 37 editor.on( 'key', function( evt ) {
38 var path = editor.elementPath();
39
38 if ( editor.mode != 'wysiwyg' ) 40 if ( editor.mode != 'wysiwyg' )
39 return; 41 return;
40 42
41 if ( evt.data.keyCode == this.indentKey ) { 43 if ( evt.data.keyCode == this.indentKey ) {
42 var list = this.getContext( editor.elementPath() ); 44 // Prevent of getting context of empty path (#424)(https://dev.ckeditor.com/ticket/17028).
45 if ( !path ) {
46 return;
47 }
48
49 var list = this.getContext( path );
43 50
44 if ( list ) { 51 if ( list ) {
45 // Don't indent if in first list item of the parent. 52 // Don't indent if in first list item of the parent.
46 // Outdent, however, can always be done to collapse 53 // Outdent, however, can always be done to collapse
47 // the list into a paragraph (div). 54 // the list into a paragraph (div).
48 if ( this.isIndent && CKEDITOR.plugins.indentList.firstItemInPath( this.context, editor.elementPath(), list ) ) 55 if ( this.isIndent && CKEDITOR.plugins.indentList.firstItemInPath( this.context, path, list ) )
49 return; 56 return;
50 57
51 // Exec related global indentation command. Global 58 // Exec related global indentation command. Global
@@ -109,7 +116,8 @@
109 function indentList( editor ) { 116 function indentList( editor ) {
110 var that = this, 117 var that = this,
111 database = this.database, 118 database = this.database,
112 context = this.context; 119 context = this.context,
120 range;
113 121
114 function indent( listNode ) { 122 function indent( listNode ) {
115 // Our starting and ending points of the range might be inside some blocks under a list item... 123 // Our starting and ending points of the range might be inside some blocks under a list item...
@@ -164,7 +172,7 @@
164 172
165 for ( i = startItem.getCustomData( 'listarray_index' ); i <= lastItem.getCustomData( 'listarray_index' ); i++ ) { 173 for ( i = startItem.getCustomData( 'listarray_index' ); i <= lastItem.getCustomData( 'listarray_index' ); i++ ) {
166 listArray[ i ].indent += indentOffset; 174 listArray[ i ].indent += indentOffset;
167 // Make sure the newly created sublist get a brand-new element of the same type. (#5372) 175 // Make sure the newly created sublist get a brand-new element of the same type. (http://dev.ckeditor.com/ticket/5372)
168 if ( indentOffset > 0 ) { 176 if ( indentOffset > 0 ) {
169 var listRoot = listArray[ i ].parent; 177 var listRoot = listArray[ i ].parent;
170 listArray[ i ].parent = new CKEDITOR.dom.element( listRoot.getName(), listRoot.getDocument() ); 178 listArray[ i ].parent = new CKEDITOR.dom.element( listRoot.getName(), listRoot.getDocument() );
@@ -179,7 +187,7 @@
179 var newList = CKEDITOR.plugins.list.arrayToList( listArray, database, null, editor.config.enterMode, listNode.getDirection() ); 187 var newList = CKEDITOR.plugins.list.arrayToList( listArray, database, null, editor.config.enterMode, listNode.getDirection() );
180 188
181 // Avoid nested <li> after outdent even they're visually same, 189 // Avoid nested <li> after outdent even they're visually same,
182 // recording them for later refactoring.(#3982) 190 // recording them for later refactoring.(http://dev.ckeditor.com/ticket/3982)
183 if ( !that.isIndent ) { 191 if ( !that.isIndent ) {
184 var parentLiElement; 192 var parentLiElement;
185 if ( ( parentLiElement = listNode.getParent() ) && parentLiElement.is( 'li' ) ) { 193 if ( ( parentLiElement = listNode.getParent() ) && parentLiElement.is( 'li' ) ) {
@@ -207,7 +215,7 @@
207 // Nest preceding <ul>/<ol> inside current <li> if any. 215 // Nest preceding <ul>/<ol> inside current <li> if any.
208 while ( ( followingList = followingList.getNext() ) && followingList.is && followingList.getName() in context ) { 216 while ( ( followingList = followingList.getNext() ) && followingList.is && followingList.getName() in context ) {
209 // IE requires a filler NBSP for nested list inside empty list item, 217 // IE requires a filler NBSP for nested list inside empty list item,
210 // otherwise the list item will be inaccessiable. (#4476) 218 // otherwise the list item will be inaccessiable. (http://dev.ckeditor.com/ticket/4476)
211 if ( CKEDITOR.env.needsNbspFiller && !li.getFirst( neitherWhitespacesNorBookmark ) ) 219 if ( CKEDITOR.env.needsNbspFiller && !li.getFirst( neitherWhitespacesNorBookmark ) )
212 li.append( range.document.createText( '\u00a0' ) ); 220 li.append( range.document.createText( '\u00a0' ) );
213 221
@@ -226,14 +234,13 @@
226 234
227 var selection = editor.getSelection(), 235 var selection = editor.getSelection(),
228 ranges = selection && selection.getRanges(), 236 ranges = selection && selection.getRanges(),
229 iterator = ranges.createIterator(), 237 iterator = ranges.createIterator();
230 range;
231 238
232 while ( ( range = iterator.getNextRange() ) ) { 239 while ( ( range = iterator.getNextRange() ) ) {
233 var nearestListBlock = range.getCommonAncestor(); 240 var nearestListBlock = range.getCommonAncestor();
234 241
235 while ( nearestListBlock && !( nearestListBlock.type == CKEDITOR.NODE_ELEMENT && context[ nearestListBlock.getName() ] ) ) { 242 while ( nearestListBlock && !( nearestListBlock.type == CKEDITOR.NODE_ELEMENT && context[ nearestListBlock.getName() ] ) ) {
236 // Avoid having plugin propagate to parent of editor in inline mode by canceling the indentation. (#12796) 243 // Avoid having plugin propagate to parent of editor in inline mode by canceling the indentation. (http://dev.ckeditor.com/ticket/12796)
237 if ( editor.editable().equals( nearestListBlock ) ) { 244 if ( editor.editable().equals( nearestListBlock ) ) {
238 nearestListBlock = false; 245 nearestListBlock = false;
239 break; 246 break;
@@ -248,7 +255,7 @@
248 range.setEndAt( nearestListBlock, CKEDITOR.POSITION_BEFORE_END ); 255 range.setEndAt( nearestListBlock, CKEDITOR.POSITION_BEFORE_END );
249 } 256 }
250 257
251 // Avoid having selection enclose the entire list. (#6138) 258 // Avoid having selection enclose the entire list. (http://dev.ckeditor.com/ticket/6138)
252 // [<ul><li>...</li></ul>] =><ul><li>[...]</li></ul> 259 // [<ul><li>...</li></ul>] =><ul><li>[...]</li></ul>
253 if ( !nearestListBlock ) { 260 if ( !nearestListBlock ) {
254 var selectedNode = range.getEnclosedNode(); 261 var selectedNode = range.getEnclosedNode();
diff --git a/sources/plugins/justify/icons/hidpi/justifyblock.png b/sources/plugins/justify/icons/hidpi/justifyblock.png
index 7209fd4..5c0cf43 100644
--- a/sources/plugins/justify/icons/hidpi/justifyblock.png
+++ b/sources/plugins/justify/icons/hidpi/justifyblock.png
Binary files differ
diff --git a/sources/plugins/justify/icons/hidpi/justifycenter.png b/sources/plugins/justify/icons/hidpi/justifycenter.png
index 365e320..fd751be 100644
--- a/sources/plugins/justify/icons/hidpi/justifycenter.png
+++ b/sources/plugins/justify/icons/hidpi/justifycenter.png
Binary files differ
diff --git a/sources/plugins/justify/icons/hidpi/justifyleft.png b/sources/plugins/justify/icons/hidpi/justifyleft.png
index 75308c1..a109ad3 100644
--- a/sources/plugins/justify/icons/hidpi/justifyleft.png
+++ b/sources/plugins/justify/icons/hidpi/justifyleft.png
Binary files differ
diff --git a/sources/plugins/justify/icons/hidpi/justifyright.png b/sources/plugins/justify/icons/hidpi/justifyright.png
index de7c3d4..5125d56 100644
--- a/sources/plugins/justify/icons/hidpi/justifyright.png
+++ b/sources/plugins/justify/icons/hidpi/justifyright.png
Binary files differ
diff --git a/sources/plugins/justify/icons/justifyblock.png b/sources/plugins/justify/icons/justifyblock.png
index a507be1..ffe0620 100644
--- a/sources/plugins/justify/icons/justifyblock.png
+++ b/sources/plugins/justify/icons/justifyblock.png
Binary files differ
diff --git a/sources/plugins/justify/icons/justifycenter.png b/sources/plugins/justify/icons/justifycenter.png
index f758bc4..8b5b40f 100644
--- a/sources/plugins/justify/icons/justifycenter.png
+++ b/sources/plugins/justify/icons/justifycenter.png
Binary files differ
diff --git a/sources/plugins/justify/icons/justifyleft.png b/sources/plugins/justify/icons/justifyleft.png
index 542ddee..a60d079 100644
--- a/sources/plugins/justify/icons/justifyleft.png
+++ b/sources/plugins/justify/icons/justifyleft.png
Binary files differ
diff --git a/sources/plugins/justify/icons/justifyright.png b/sources/plugins/justify/icons/justifyright.png
index 71a983c..21de814 100644
--- a/sources/plugins/justify/icons/justifyright.png
+++ b/sources/plugins/justify/icons/justifyright.png
Binary files differ
diff --git a/sources/plugins/justify/lang/af.js b/sources/plugins/justify/lang/af.js
index d9b468d..9f5c303 100644
--- a/sources/plugins/justify/lang/af.js
+++ b/sources/plugins/justify/lang/af.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'justify', 'af', { 5CKEDITOR.plugins.setLang( 'justify', 'af', {
diff --git a/sources/plugins/justify/lang/ar.js b/sources/plugins/justify/lang/ar.js
index 4db5875..6c414be 100644
--- a/sources/plugins/justify/lang/ar.js
+++ b/sources/plugins/justify/lang/ar.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'justify', 'ar', { 5CKEDITOR.plugins.setLang( 'justify', 'ar', {
diff --git a/sources/plugins/justify/lang/az.js b/sources/plugins/justify/lang/az.js
new file mode 100644
index 0000000..9360568
--- /dev/null
+++ b/sources/plugins/justify/lang/az.js
@@ -0,0 +1,10 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'justify', 'az', {
6 block: 'Eninə görə',
7 center: 'Mərkəz',
8 left: 'Soldan düzləndir',
9 right: 'Sağdan düzləndir'
10} );
diff --git a/sources/plugins/justify/lang/bg.js b/sources/plugins/justify/lang/bg.js
index 7a2841c..1724947 100644
--- a/sources/plugins/justify/lang/bg.js
+++ b/sources/plugins/justify/lang/bg.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'justify', 'bg', { 5CKEDITOR.plugins.setLang( 'justify', 'bg', {
diff --git a/sources/plugins/justify/lang/bn.js b/sources/plugins/justify/lang/bn.js
index 77d5827..002a633 100644
--- a/sources/plugins/justify/lang/bn.js
+++ b/sources/plugins/justify/lang/bn.js
@@ -1,9 +1,9 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'justify', 'bn', { 5CKEDITOR.plugins.setLang( 'justify', 'bn', {
6 block: 'ক জ', 6 block: ' ',
7 center: 'মাঝ বরাবর ঘেষা', 7 center: 'মাঝ বরাবর ঘেষা',
8 left: 'বা দিকে ঘেঁষা', 8 left: 'বা দিকে ঘেঁষা',
9 right: 'ডান দিকে ঘেঁষা' 9 right: 'ডান দিকে ঘেঁষা'
diff --git a/sources/plugins/justify/lang/bs.js b/sources/plugins/justify/lang/bs.js
index 1412437..0fbedfc 100644
--- a/sources/plugins/justify/lang/bs.js
+++ b/sources/plugins/justify/lang/bs.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'justify', 'bs', { 5CKEDITOR.plugins.setLang( 'justify', 'bs', {
diff --git a/sources/plugins/justify/lang/ca.js b/sources/plugins/justify/lang/ca.js
index 02c3858..afb7adb 100644
--- a/sources/plugins/justify/lang/ca.js
+++ b/sources/plugins/justify/lang/ca.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'justify', 'ca', { 5CKEDITOR.plugins.setLang( 'justify', 'ca', {
diff --git a/sources/plugins/justify/lang/cs.js b/sources/plugins/justify/lang/cs.js
index d5f263f..467ae6f 100644
--- a/sources/plugins/justify/lang/cs.js
+++ b/sources/plugins/justify/lang/cs.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'justify', 'cs', { 5CKEDITOR.plugins.setLang( 'justify', 'cs', {
diff --git a/sources/plugins/justify/lang/cy.js b/sources/plugins/justify/lang/cy.js
index 80883d1..6b39beb 100644
--- a/sources/plugins/justify/lang/cy.js
+++ b/sources/plugins/justify/lang/cy.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'justify', 'cy', { 5CKEDITOR.plugins.setLang( 'justify', 'cy', {
diff --git a/sources/plugins/justify/lang/da.js b/sources/plugins/justify/lang/da.js
index e595639..ac8ee29 100644
--- a/sources/plugins/justify/lang/da.js
+++ b/sources/plugins/justify/lang/da.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'justify', 'da', { 5CKEDITOR.plugins.setLang( 'justify', 'da', {
diff --git a/sources/plugins/justify/lang/de-ch.js b/sources/plugins/justify/lang/de-ch.js
index 36fc080..a2c24eb 100644
--- a/sources/plugins/justify/lang/de-ch.js
+++ b/sources/plugins/justify/lang/de-ch.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'justify', 'de-ch', { 5CKEDITOR.plugins.setLang( 'justify', 'de-ch', {
diff --git a/sources/plugins/justify/lang/de.js b/sources/plugins/justify/lang/de.js
index dc45266..4db8725 100644
--- a/sources/plugins/justify/lang/de.js
+++ b/sources/plugins/justify/lang/de.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'justify', 'de', { 5CKEDITOR.plugins.setLang( 'justify', 'de', {
diff --git a/sources/plugins/justify/lang/el.js b/sources/plugins/justify/lang/el.js
index 1d50fd2..1bdc64f 100644
--- a/sources/plugins/justify/lang/el.js
+++ b/sources/plugins/justify/lang/el.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'justify', 'el', { 5CKEDITOR.plugins.setLang( 'justify', 'el', {
diff --git a/sources/plugins/justify/lang/en-au.js b/sources/plugins/justify/lang/en-au.js
index 53162fd..68eb09c 100644
--- a/sources/plugins/justify/lang/en-au.js
+++ b/sources/plugins/justify/lang/en-au.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'justify', 'en-au', { 5CKEDITOR.plugins.setLang( 'justify', 'en-au', {
diff --git a/sources/plugins/justify/lang/en-ca.js b/sources/plugins/justify/lang/en-ca.js
index d64b9bf..27718a2 100644
--- a/sources/plugins/justify/lang/en-ca.js
+++ b/sources/plugins/justify/lang/en-ca.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'justify', 'en-ca', { 5CKEDITOR.plugins.setLang( 'justify', 'en-ca', {
diff --git a/sources/plugins/justify/lang/en-gb.js b/sources/plugins/justify/lang/en-gb.js
index adb3b56..d6db4ff 100644
--- a/sources/plugins/justify/lang/en-gb.js
+++ b/sources/plugins/justify/lang/en-gb.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'justify', 'en-gb', { 5CKEDITOR.plugins.setLang( 'justify', 'en-gb', {
diff --git a/sources/plugins/justify/lang/en.js b/sources/plugins/justify/lang/en.js
index acaaccb..8a72e85 100644
--- a/sources/plugins/justify/lang/en.js
+++ b/sources/plugins/justify/lang/en.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'justify', 'en', { 5CKEDITOR.plugins.setLang( 'justify', 'en', {
diff --git a/sources/plugins/justify/lang/eo.js b/sources/plugins/justify/lang/eo.js
index f58b324..7531dde 100644
--- a/sources/plugins/justify/lang/eo.js
+++ b/sources/plugins/justify/lang/eo.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'justify', 'eo', { 5CKEDITOR.plugins.setLang( 'justify', 'eo', {
diff --git a/sources/plugins/justify/lang/es-mx.js b/sources/plugins/justify/lang/es-mx.js
new file mode 100644
index 0000000..96443e0
--- /dev/null
+++ b/sources/plugins/justify/lang/es-mx.js
@@ -0,0 +1,10 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'justify', 'es-mx', {
6 block: 'Justificar',
7 center: 'Centrar',
8 left: 'Alinear a la izquierda',
9 right: 'Alinear a la derecha'
10} );
diff --git a/sources/plugins/justify/lang/es.js b/sources/plugins/justify/lang/es.js
index 23baf68..2e89bc0 100644
--- a/sources/plugins/justify/lang/es.js
+++ b/sources/plugins/justify/lang/es.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'justify', 'es', { 5CKEDITOR.plugins.setLang( 'justify', 'es', {
diff --git a/sources/plugins/justify/lang/et.js b/sources/plugins/justify/lang/et.js
index 3226e87..0fc4915 100644
--- a/sources/plugins/justify/lang/et.js
+++ b/sources/plugins/justify/lang/et.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'justify', 'et', { 5CKEDITOR.plugins.setLang( 'justify', 'et', {
diff --git a/sources/plugins/justify/lang/eu.js b/sources/plugins/justify/lang/eu.js
index dfcc507..f7d291e 100644
--- a/sources/plugins/justify/lang/eu.js
+++ b/sources/plugins/justify/lang/eu.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'justify', 'eu', { 5CKEDITOR.plugins.setLang( 'justify', 'eu', {
diff --git a/sources/plugins/justify/lang/fa.js b/sources/plugins/justify/lang/fa.js
index ed6e14e..03c3c6b 100644
--- a/sources/plugins/justify/lang/fa.js
+++ b/sources/plugins/justify/lang/fa.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'justify', 'fa', { 5CKEDITOR.plugins.setLang( 'justify', 'fa', {
diff --git a/sources/plugins/justify/lang/fi.js b/sources/plugins/justify/lang/fi.js
index 52ad58f..6993f10 100644
--- a/sources/plugins/justify/lang/fi.js
+++ b/sources/plugins/justify/lang/fi.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'justify', 'fi', { 5CKEDITOR.plugins.setLang( 'justify', 'fi', {
diff --git a/sources/plugins/justify/lang/fo.js b/sources/plugins/justify/lang/fo.js
index 6705be4..f11a575 100644
--- a/sources/plugins/justify/lang/fo.js
+++ b/sources/plugins/justify/lang/fo.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'justify', 'fo', { 5CKEDITOR.plugins.setLang( 'justify', 'fo', {
diff --git a/sources/plugins/justify/lang/fr-ca.js b/sources/plugins/justify/lang/fr-ca.js
index bb11f6e..8d59e5e 100644
--- a/sources/plugins/justify/lang/fr-ca.js
+++ b/sources/plugins/justify/lang/fr-ca.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'justify', 'fr-ca', { 5CKEDITOR.plugins.setLang( 'justify', 'fr-ca', {
diff --git a/sources/plugins/justify/lang/fr.js b/sources/plugins/justify/lang/fr.js
index 348771c..e44df52 100644
--- a/sources/plugins/justify/lang/fr.js
+++ b/sources/plugins/justify/lang/fr.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'justify', 'fr', { 5CKEDITOR.plugins.setLang( 'justify', 'fr', {
diff --git a/sources/plugins/justify/lang/gl.js b/sources/plugins/justify/lang/gl.js
index 0fdd269..1995e8c 100644
--- a/sources/plugins/justify/lang/gl.js
+++ b/sources/plugins/justify/lang/gl.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'justify', 'gl', { 5CKEDITOR.plugins.setLang( 'justify', 'gl', {
diff --git a/sources/plugins/justify/lang/gu.js b/sources/plugins/justify/lang/gu.js
index a59efa7..d491684 100644
--- a/sources/plugins/justify/lang/gu.js
+++ b/sources/plugins/justify/lang/gu.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'justify', 'gu', { 5CKEDITOR.plugins.setLang( 'justify', 'gu', {
diff --git a/sources/plugins/justify/lang/he.js b/sources/plugins/justify/lang/he.js
index 92e7c9c..ab5c759 100644
--- a/sources/plugins/justify/lang/he.js
+++ b/sources/plugins/justify/lang/he.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'justify', 'he', { 5CKEDITOR.plugins.setLang( 'justify', 'he', {
diff --git a/sources/plugins/justify/lang/hi.js b/sources/plugins/justify/lang/hi.js
index 4606e3d..6a4fae8 100644
--- a/sources/plugins/justify/lang/hi.js
+++ b/sources/plugins/justify/lang/hi.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'justify', 'hi', { 5CKEDITOR.plugins.setLang( 'justify', 'hi', {
diff --git a/sources/plugins/justify/lang/hr.js b/sources/plugins/justify/lang/hr.js
index 79282d9..852c686 100644
--- a/sources/plugins/justify/lang/hr.js
+++ b/sources/plugins/justify/lang/hr.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'justify', 'hr', { 5CKEDITOR.plugins.setLang( 'justify', 'hr', {
diff --git a/sources/plugins/justify/lang/hu.js b/sources/plugins/justify/lang/hu.js
index 0aaff0f..c7b8dad 100644
--- a/sources/plugins/justify/lang/hu.js
+++ b/sources/plugins/justify/lang/hu.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'justify', 'hu', { 5CKEDITOR.plugins.setLang( 'justify', 'hu', {
diff --git a/sources/plugins/justify/lang/id.js b/sources/plugins/justify/lang/id.js
index 297ae8e..d67247c 100644
--- a/sources/plugins/justify/lang/id.js
+++ b/sources/plugins/justify/lang/id.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'justify', 'id', { 5CKEDITOR.plugins.setLang( 'justify', 'id', {
diff --git a/sources/plugins/justify/lang/is.js b/sources/plugins/justify/lang/is.js
index c2f6ad4..d01a43a 100644
--- a/sources/plugins/justify/lang/is.js
+++ b/sources/plugins/justify/lang/is.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'justify', 'is', { 5CKEDITOR.plugins.setLang( 'justify', 'is', {
diff --git a/sources/plugins/justify/lang/it.js b/sources/plugins/justify/lang/it.js
index 10fc772..fd4ae51 100644
--- a/sources/plugins/justify/lang/it.js
+++ b/sources/plugins/justify/lang/it.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'justify', 'it', { 5CKEDITOR.plugins.setLang( 'justify', 'it', {
diff --git a/sources/plugins/justify/lang/ja.js b/sources/plugins/justify/lang/ja.js
index 5665a8b..6c71c86 100644
--- a/sources/plugins/justify/lang/ja.js
+++ b/sources/plugins/justify/lang/ja.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'justify', 'ja', { 5CKEDITOR.plugins.setLang( 'justify', 'ja', {
diff --git a/sources/plugins/justify/lang/ka.js b/sources/plugins/justify/lang/ka.js
index b80d2ef..4ba0bcb 100644
--- a/sources/plugins/justify/lang/ka.js
+++ b/sources/plugins/justify/lang/ka.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'justify', 'ka', { 5CKEDITOR.plugins.setLang( 'justify', 'ka', {
diff --git a/sources/plugins/justify/lang/km.js b/sources/plugins/justify/lang/km.js
index 6161873..a7546c3 100644
--- a/sources/plugins/justify/lang/km.js
+++ b/sources/plugins/justify/lang/km.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'justify', 'km', { 5CKEDITOR.plugins.setLang( 'justify', 'km', {
diff --git a/sources/plugins/justify/lang/ko.js b/sources/plugins/justify/lang/ko.js
index 13c155c..346405d 100644
--- a/sources/plugins/justify/lang/ko.js
+++ b/sources/plugins/justify/lang/ko.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'justify', 'ko', { 5CKEDITOR.plugins.setLang( 'justify', 'ko', {
diff --git a/sources/plugins/justify/lang/ku.js b/sources/plugins/justify/lang/ku.js
index 794b588..24ed914 100644
--- a/sources/plugins/justify/lang/ku.js
+++ b/sources/plugins/justify/lang/ku.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'justify', 'ku', { 5CKEDITOR.plugins.setLang( 'justify', 'ku', {
diff --git a/sources/plugins/justify/lang/lt.js b/sources/plugins/justify/lang/lt.js
index 1b373fd..08202cb 100644
--- a/sources/plugins/justify/lang/lt.js
+++ b/sources/plugins/justify/lang/lt.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'justify', 'lt', { 5CKEDITOR.plugins.setLang( 'justify', 'lt', {
diff --git a/sources/plugins/justify/lang/lv.js b/sources/plugins/justify/lang/lv.js
index e20fe95..8c729c9 100644
--- a/sources/plugins/justify/lang/lv.js
+++ b/sources/plugins/justify/lang/lv.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'justify', 'lv', { 5CKEDITOR.plugins.setLang( 'justify', 'lv', {
diff --git a/sources/plugins/justify/lang/mk.js b/sources/plugins/justify/lang/mk.js
index eb9d847..f45fb19 100644
--- a/sources/plugins/justify/lang/mk.js
+++ b/sources/plugins/justify/lang/mk.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'justify', 'mk', { 5CKEDITOR.plugins.setLang( 'justify', 'mk', {
diff --git a/sources/plugins/justify/lang/mn.js b/sources/plugins/justify/lang/mn.js
index ff904dd..850e474 100644
--- a/sources/plugins/justify/lang/mn.js
+++ b/sources/plugins/justify/lang/mn.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'justify', 'mn', { 5CKEDITOR.plugins.setLang( 'justify', 'mn', {
diff --git a/sources/plugins/justify/lang/ms.js b/sources/plugins/justify/lang/ms.js
index 41d736b..323f8e9 100644
--- a/sources/plugins/justify/lang/ms.js
+++ b/sources/plugins/justify/lang/ms.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'justify', 'ms', { 5CKEDITOR.plugins.setLang( 'justify', 'ms', {
diff --git a/sources/plugins/justify/lang/nb.js b/sources/plugins/justify/lang/nb.js
index aac1f86..98a3c44 100644
--- a/sources/plugins/justify/lang/nb.js
+++ b/sources/plugins/justify/lang/nb.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'justify', 'nb', { 5CKEDITOR.plugins.setLang( 'justify', 'nb', {
diff --git a/sources/plugins/justify/lang/nl.js b/sources/plugins/justify/lang/nl.js
index 3b33e46..972bf82 100644
--- a/sources/plugins/justify/lang/nl.js
+++ b/sources/plugins/justify/lang/nl.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'justify', 'nl', { 5CKEDITOR.plugins.setLang( 'justify', 'nl', {
diff --git a/sources/plugins/justify/lang/no.js b/sources/plugins/justify/lang/no.js
index c77daaa..cfcd72a 100644
--- a/sources/plugins/justify/lang/no.js
+++ b/sources/plugins/justify/lang/no.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'justify', 'no', { 5CKEDITOR.plugins.setLang( 'justify', 'no', {
diff --git a/sources/plugins/justify/lang/oc.js b/sources/plugins/justify/lang/oc.js
new file mode 100644
index 0000000..a13e528
--- /dev/null
+++ b/sources/plugins/justify/lang/oc.js
@@ -0,0 +1,10 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'justify', 'oc', {
6 block: 'Justificar',
7 center: 'Centrar',
8 left: 'Alinhar a esquèrra',
9 right: 'Alinhar a dreita'
10} );
diff --git a/sources/plugins/justify/lang/pl.js b/sources/plugins/justify/lang/pl.js
index 07f9807..60922b9 100644
--- a/sources/plugins/justify/lang/pl.js
+++ b/sources/plugins/justify/lang/pl.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'justify', 'pl', { 5CKEDITOR.plugins.setLang( 'justify', 'pl', {
diff --git a/sources/plugins/justify/lang/pt-br.js b/sources/plugins/justify/lang/pt-br.js
index bb63097..cf40ad0 100644
--- a/sources/plugins/justify/lang/pt-br.js
+++ b/sources/plugins/justify/lang/pt-br.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'justify', 'pt-br', { 5CKEDITOR.plugins.setLang( 'justify', 'pt-br', {
diff --git a/sources/plugins/justify/lang/pt.js b/sources/plugins/justify/lang/pt.js
index f1f233a..46ac43b 100644
--- a/sources/plugins/justify/lang/pt.js
+++ b/sources/plugins/justify/lang/pt.js
@@ -1,10 +1,10 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'justify', 'pt', { 5CKEDITOR.plugins.setLang( 'justify', 'pt', {
6 block: 'Justificado', 6 block: 'Justificado',
7 center: 'Alinhar ao Centro', 7 center: 'Alinhar ao centro',
8 left: 'Alinhar à esquerda', 8 left: 'Alinhar à esquerda',
9 right: 'Alinhar à direita' 9 right: 'Alinhar à direita'
10} ); 10} );
diff --git a/sources/plugins/justify/lang/ro.js b/sources/plugins/justify/lang/ro.js
index 3ef171b..21caeca 100644
--- a/sources/plugins/justify/lang/ro.js
+++ b/sources/plugins/justify/lang/ro.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'justify', 'ro', { 5CKEDITOR.plugins.setLang( 'justify', 'ro', {
diff --git a/sources/plugins/justify/lang/ru.js b/sources/plugins/justify/lang/ru.js
index 5198476..47c98bb 100644
--- a/sources/plugins/justify/lang/ru.js
+++ b/sources/plugins/justify/lang/ru.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'justify', 'ru', { 5CKEDITOR.plugins.setLang( 'justify', 'ru', {
diff --git a/sources/plugins/justify/lang/si.js b/sources/plugins/justify/lang/si.js
index a29953e..6d9f373 100644
--- a/sources/plugins/justify/lang/si.js
+++ b/sources/plugins/justify/lang/si.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'justify', 'si', { 5CKEDITOR.plugins.setLang( 'justify', 'si', {
diff --git a/sources/plugins/justify/lang/sk.js b/sources/plugins/justify/lang/sk.js
index f749df5..08c3991 100644
--- a/sources/plugins/justify/lang/sk.js
+++ b/sources/plugins/justify/lang/sk.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'justify', 'sk', { 5CKEDITOR.plugins.setLang( 'justify', 'sk', {
diff --git a/sources/plugins/justify/lang/sl.js b/sources/plugins/justify/lang/sl.js
index bd4cd0b..d776354 100644
--- a/sources/plugins/justify/lang/sl.js
+++ b/sources/plugins/justify/lang/sl.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'justify', 'sl', { 5CKEDITOR.plugins.setLang( 'justify', 'sl', {
diff --git a/sources/plugins/justify/lang/sq.js b/sources/plugins/justify/lang/sq.js
index b184d79..1ed002c 100644
--- a/sources/plugins/justify/lang/sq.js
+++ b/sources/plugins/justify/lang/sq.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'justify', 'sq', { 5CKEDITOR.plugins.setLang( 'justify', 'sq', {
diff --git a/sources/plugins/justify/lang/sr-latn.js b/sources/plugins/justify/lang/sr-latn.js
index 978c540..7fdba23 100644
--- a/sources/plugins/justify/lang/sr-latn.js
+++ b/sources/plugins/justify/lang/sr-latn.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'justify', 'sr-latn', { 5CKEDITOR.plugins.setLang( 'justify', 'sr-latn', {
diff --git a/sources/plugins/justify/lang/sr.js b/sources/plugins/justify/lang/sr.js
index 062b368..2314a96 100644
--- a/sources/plugins/justify/lang/sr.js
+++ b/sources/plugins/justify/lang/sr.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'justify', 'sr', { 5CKEDITOR.plugins.setLang( 'justify', 'sr', {
diff --git a/sources/plugins/justify/lang/sv.js b/sources/plugins/justify/lang/sv.js
index 9e798ac..cac94c0 100644
--- a/sources/plugins/justify/lang/sv.js
+++ b/sources/plugins/justify/lang/sv.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'justify', 'sv', { 5CKEDITOR.plugins.setLang( 'justify', 'sv', {
diff --git a/sources/plugins/justify/lang/th.js b/sources/plugins/justify/lang/th.js
index da8a403..4a9d4f9 100644
--- a/sources/plugins/justify/lang/th.js
+++ b/sources/plugins/justify/lang/th.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'justify', 'th', { 5CKEDITOR.plugins.setLang( 'justify', 'th', {
diff --git a/sources/plugins/justify/lang/tr.js b/sources/plugins/justify/lang/tr.js
index 661782c..fbc512f 100644
--- a/sources/plugins/justify/lang/tr.js
+++ b/sources/plugins/justify/lang/tr.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'justify', 'tr', { 5CKEDITOR.plugins.setLang( 'justify', 'tr', {
diff --git a/sources/plugins/justify/lang/tt.js b/sources/plugins/justify/lang/tt.js
index a6b41a1..b36f69c 100644
--- a/sources/plugins/justify/lang/tt.js
+++ b/sources/plugins/justify/lang/tt.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'justify', 'tt', { 5CKEDITOR.plugins.setLang( 'justify', 'tt', {
diff --git a/sources/plugins/justify/lang/ug.js b/sources/plugins/justify/lang/ug.js
index 6c71c49..e5861f5 100644
--- a/sources/plugins/justify/lang/ug.js
+++ b/sources/plugins/justify/lang/ug.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'justify', 'ug', { 5CKEDITOR.plugins.setLang( 'justify', 'ug', {
diff --git a/sources/plugins/justify/lang/uk.js b/sources/plugins/justify/lang/uk.js
index 55ee9c4..5807f25 100644
--- a/sources/plugins/justify/lang/uk.js
+++ b/sources/plugins/justify/lang/uk.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'justify', 'uk', { 5CKEDITOR.plugins.setLang( 'justify', 'uk', {
diff --git a/sources/plugins/justify/lang/vi.js b/sources/plugins/justify/lang/vi.js
index 0d9dce2..de0c170 100644
--- a/sources/plugins/justify/lang/vi.js
+++ b/sources/plugins/justify/lang/vi.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'justify', 'vi', { 5CKEDITOR.plugins.setLang( 'justify', 'vi', {
diff --git a/sources/plugins/justify/lang/zh-cn.js b/sources/plugins/justify/lang/zh-cn.js
index f1d3df4..4c19627 100644
--- a/sources/plugins/justify/lang/zh-cn.js
+++ b/sources/plugins/justify/lang/zh-cn.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'justify', 'zh-cn', { 5CKEDITOR.plugins.setLang( 'justify', 'zh-cn', {
diff --git a/sources/plugins/justify/lang/zh.js b/sources/plugins/justify/lang/zh.js
index 9cdd4fc..0865d51 100644
--- a/sources/plugins/justify/lang/zh.js
+++ b/sources/plugins/justify/lang/zh.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'justify', 'zh', { 5CKEDITOR.plugins.setLang( 'justify', 'zh', {
diff --git a/sources/plugins/justify/plugin.js b/sources/plugins/justify/plugin.js
index 15163b8..21b9221 100644
--- a/sources/plugins/justify/plugin.js
+++ b/sources/plugins/justify/plugin.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -37,7 +37,6 @@
37 this.name = name; 37 this.name = name;
38 this.value = value; 38 this.value = value;
39 this.context = 'p'; 39 this.context = 'p';
40
41 var classes = editor.config.justifyClasses, 40 var classes = editor.config.justifyClasses,
42 blockTag = editor.config.enterMode == CKEDITOR.ENTER_P ? 'p' : 'div'; 41 blockTag = editor.config.enterMode == CKEDITOR.ENTER_P ? 'p' : 'div';
43 42
@@ -150,6 +149,17 @@
150 if ( block.isReadOnly() ) 149 if ( block.isReadOnly() )
151 continue; 150 continue;
152 151
152 // Check if style or class might be applied to currently processed element (#455).
153 var tag = block.getName(),
154 isAllowedTextAlign, isAllowedCssClass;
155
156 isAllowedTextAlign = editor.activeFilter.check( tag + '{text-align}' );
157 isAllowedCssClass = editor.activeFilter.check( tag + '(' + cssClassName + ')' );
158
159 if ( !isAllowedCssClass && !isAllowedTextAlign ) {
160 continue;
161 }
162
153 block.removeAttribute( 'align' ); 163 block.removeAttribute( 'align' );
154 block.removeStyle( 'text-align' ); 164 block.removeStyle( 'text-align' );
155 165
@@ -158,13 +168,13 @@
158 168
159 var apply = ( this.state == CKEDITOR.TRISTATE_OFF ) && ( !useComputedState || ( getAlignment( block, true ) != this.value ) ); 169 var apply = ( this.state == CKEDITOR.TRISTATE_OFF ) && ( !useComputedState || ( getAlignment( block, true ) != this.value ) );
160 170
161 if ( cssClassName ) { 171 if ( cssClassName && isAllowedCssClass ) {
162 // Append the desired class name. 172 // Append the desired class name.
163 if ( apply ) 173 if ( apply )
164 block.addClass( cssClassName ); 174 block.addClass( cssClassName );
165 else if ( !className ) 175 else if ( !className )
166 block.removeAttribute( 'class' ); 176 block.removeAttribute( 'class' );
167 } else if ( apply ) { 177 } else if ( apply && isAllowedTextAlign ) {
168 block.setStyle( 'text-align', this.value ); 178 block.setStyle( 'text-align', this.value );
169 } 179 }
170 } 180 }
@@ -177,15 +187,31 @@
177 }, 187 },
178 188
179 refresh: function( editor, path ) { 189 refresh: function( editor, path ) {
180 var firstBlock = path.block || path.blockLimit; 190 var firstBlock = path.block || path.blockLimit,
181 191 name = firstBlock.getName(),
182 this.setState( firstBlock.getName() != 'body' && getAlignment( firstBlock, this.editor.config.useComputedState ) == this.value ? CKEDITOR.TRISTATE_ON : CKEDITOR.TRISTATE_OFF ); 192 isEditable = firstBlock.equals( editor.editable() ),
193 isStylable = this.cssClassName ? editor.activeFilter.check( name + '(' + this.cssClassName + ')' ) :
194 editor.activeFilter.check( name + '{text-align}' );
195
196 // #455
197 // 1. Check if we are directly in editbale. Justification should be always allowed, and not highlighted.
198 // Checking path.elements.length is required to filter out situation `body > ul` where ul is selected and path.blockLimit returns editable.
199 // 2. Check if current element can have applied specific class.
200 // 3. Check if current element can have applied text-align style.
201 if ( isEditable && path.elements.length === 1 ) {
202 this.setState( CKEDITOR.TRISTATE_OFF );
203 } else if ( !isEditable && isStylable ) {
204 // 2 & 3 in one condition.
205 this.setState( getAlignment( firstBlock, this.editor.config.useComputedState ) == this.value ? CKEDITOR.TRISTATE_ON : CKEDITOR.TRISTATE_OFF );
206 } else {
207 this.setState( CKEDITOR.TRISTATE_DISABLED );
208 }
183 } 209 }
184 }; 210 };
185 211
186 CKEDITOR.plugins.add( 'justify', { 212 CKEDITOR.plugins.add( 'justify', {
187 // jscs:disable maximumLineLength 213 // jscs:disable maximumLineLength
188 lang: 'af,ar,bg,bn,bs,ca,cs,cy,da,de,de-ch,el,en,en-au,en-ca,en-gb,eo,es,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,pl,pt,pt-br,ro,ru,si,sk,sl,sq,sr,sr-latn,sv,th,tr,tt,ug,uk,vi,zh,zh-cn', // %REMOVE_LINE_CORE% 214 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', // %REMOVE_LINE_CORE%
189 // jscs:enable maximumLineLength 215 // jscs:enable maximumLineLength
190 icons: 'justifyblock,justifycenter,justifyleft,justifyright', // %REMOVE_LINE_CORE% 216 icons: 'justifyblock,justifycenter,justifyleft,justifyright', // %REMOVE_LINE_CORE%
191 hidpi: true, // %REMOVE_LINE_CORE% 217 hidpi: true, // %REMOVE_LINE_CORE%
@@ -225,7 +251,6 @@
225 toolbar: 'align,40' 251 toolbar: 'align,40'
226 } ); 252 } );
227 } 253 }
228
229 editor.on( 'dirChanged', onDirChanged ); 254 editor.on( 'dirChanged', onDirChanged );
230 } 255 }
231 } ); 256 } );
diff --git a/sources/plugins/lineutils/dev/dnd.html b/sources/plugins/lineutils/dev/dnd.html
new file mode 100644
index 0000000..7293daa
--- /dev/null
+++ b/sources/plugins/lineutils/dev/dnd.html
@@ -0,0 +1,172 @@
1<!DOCTYPE html>
2<!--
3Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
4For licensing, see LICENSE.md or http://ckeditor.com/license
5-->
6<html>
7<head>
8 <meta charset="utf-8">
9 <title>Widget Drag &amp; Drop with Lineutils &mdash; CKEditor Sample</title>
10 <script src="../../../ckeditor.js"></script>
11 <script>
12 if ( CKEDITOR.env.ie && CKEDITOR.env.version < 9 )
13 CKEDITOR.tools.enableHtml5Elements( document );
14 </script>
15 <link href="../../../samples/old/sample.css" rel="stylesheet">
16 <link href="../../image2/samples/contents.css" rel="stylesheet">
17</head>
18<body>
19 <h1 class="samples">
20 <a href="../../../samples/old/index.html">CKEditor Samples</a> &raquo; Widget Drag &amp; Drop with Lineutils
21 </h1>
22
23 <h3>Classic (iframe-based) Editor</h3>
24
25 <textarea id="editor1" cols="10" rows="10">
26 <h1>Apollo 11</h1>
27
28 <figure class="caption" style="float:right"><img alt="Saturn V" src="../../image2/samples/assets/image1.jpg" width="200" />
29 <figcaption>Roll out of Saturn V on launch pad</figcaption>
30 </figure>
31
32 <p><strong>Apollo 11</strong> was the spaceflight that landed the first humans, Americans <a href="http://en.wikipedia.org/wiki/Neil_Armstrong" title="Neil Armstrong">Neil Armstrong</a> and <a href="http://en.wikipedia.org/wiki/Buzz_Aldrin" title="Buzz Aldrin">Buzz Aldrin</a>, on the Moon on July 20, 1969, at 20:18 UTC. Armstrong became the first to step onto the lunar surface 6 hours later on July 21 at 02:56 UTC.</p>
33
34 <p>Armstrong spent about <s>three and a half</s> two and a half hours outside the spacecraft, Aldrin slightly less; and together they collected 47.5 pounds (21.5&nbsp;kg) of lunar material for return to Earth. A third member of the mission, <a href="http://en.wikipedia.org/wiki/Michael_Collins_(astronaut)" title="Michael Collins (astronaut)">Michael Collins</a>, piloted the <a href="http://en.wikipedia.org/wiki/Apollo_Command/Service_Module" title="Apollo Command/Service Module">command</a> spacecraft alone in lunar orbit until Armstrong and Aldrin returned to it for the trip back to Earth.</p>
35
36 <h2>Broadcasting and <em>quotes</em> <a id="quotes" name="quotes"></a></h2>
37
38 <p>Broadcast on live TV to a world-wide audience, Armstrong stepped onto the lunar surface and described the event as:</p>
39
40 <blockquote>
41 <p>One small step for [a] man, one giant leap for mankind.</p>
42 </blockquote>
43
44 <p>Apollo 11 effectively ended the <a href="http://en.wikipedia.org/wiki/Space_Race" title="Space Race">Space Race</a> and fulfilled a national goal proposed in 1961 by the late U.S. President <a href="http://en.wikipedia.org/wiki/John_F._Kennedy" title="John F. Kennedy">John F. Kennedy</a> in a speech before the United States Congress:</p>
45
46 <div style="text-align:center">
47 <figure class="caption" style="display:inline-block"><img alt="The Eagle" height="123" src="../../image2/samples/assets/image2.jpg" width="136" />
48 <figcaption>The Eagle in lunar orbit</figcaption>
49 </figure>
50 </div>
51
52 <blockquote>
53 <p>[...] before this decade is out, of landing a man on the Moon and returning him safely to the Earth.</p>
54 </blockquote>
55
56 <figure class="caption" style="float:right"><img alt="The Eagle" src="../../image2/samples/assets/image2.jpg" width="200" />
57 <figcaption>The Eagle in lunar orbit</figcaption>
58 </figure>
59
60 <h2>Technical details <a id="tech-details" name="tech-details"></a></h2>
61
62 <p>Launched by a <strong>Saturn V</strong> rocket from <a href="http://en.wikipedia.org/wiki/Kennedy_Space_Center" title="Kennedy Space Center">Kennedy Space Center</a> in Merritt Island, Florida on July 16, Apollo 11 was the fifth manned mission of <a href="http://en.wikipedia.org/wiki/NASA" title="NASA">NASA</a>&#39;s Apollo program. The Apollo spacecraft had three parts:</p>
63
64 <ol>
65 <li><strong>Command Module</strong> with a cabin for the three astronauts which was the only part which landed back on Earth</li>
66 <li><strong>Service Module</strong> which supported the Command Module with propulsion, electrical power, oxygen and water</li>
67 <li><strong>Lunar Module</strong> for landing on the Moon.</li>
68 </ol>
69
70 <p>After being sent to the Moon by the Saturn V&#39;s upper stage, the astronauts separated the spacecraft from it and travelled for three days until they entered into lunar orbit. Armstrong and Aldrin then moved into the Lunar Module and landed in the <a href="http://en.wikipedia.org/wiki/Mare_Tranquillitatis" title="Mare Tranquillitatis">Sea of Tranquility</a>. They stayed a total of about 21 and a half hours on the lunar surface. After lifting off in the upper part of the Lunar Module and rejoining Collins in the Command Module, they returned to Earth and landed in the <a href="http://en.wikipedia.org/wiki/Pacific_Ocean" title="Pacific Ocean">Pacific Ocean</a> on July 24.</p>
71
72 <figure class="caption"><img alt="Saturn V" height="129" src="../../image2/samples/assets/image1.jpg" width="101" />
73 <figcaption>Roll out of Saturn V on launch pad</figcaption>
74 </figure>
75
76 <hr />
77 <p style="text-align:right"><small>Source: <a href="http://en.wikipedia.org/wiki/Apollo_11">Wikipedia.org</a></small></p>
78
79 </textarea>
80
81 <h3>Inline Editor</h3>
82
83 <div id="editor2" contenteditable="true" style="outline: 2px solid #ccc">
84 <table border="0" cellpadding="1" cellspacing="1" style="width: 100%; ">
85 <tbody>
86 <tr>
87 <td>This table</td>
88 <td>is the</td>
89 <td>very first</td>
90 <td>element of the document.</td>
91 </tr>
92 <tr>
93 <td>We are still</td>
94 <td>able to acces</td>
95 <td>the space before it.</td>
96 <td style="padding: 25px">
97 <table border="0" cellpadding="1" cellspacing="1" style="width: 100%; ">
98 <tbody>
99 <tr>
100 <td>This table is inside of a cell of another table.</td>
101 </tr>
102 <tr>
103 <td>We can type&nbsp;either before or after it though.</td>
104 </tr>
105 </tbody>
106 </table>
107 </td>
108 </tr>
109 </tbody>
110 </table>
111
112 <hr />
113 <hr />
114 <ol style="width: 300px">
115 <li>This numbered list...</li>
116 <li>...is a neighbour of a horizontal line...</li>
117 <li style="padding: 20px;">
118 <ol>
119 <li>Nested list!</li>
120 </ol>
121 </li>
122 </ol>
123
124 <figure class="caption"><img alt="Saturn V" src="../../image2/samples/assets/image1.jpg" width="100" />
125 <figcaption>Roll out of Saturn V on launch pad</figcaption>
126 </figure>
127
128 <ul style="width: 450px">
129 <li>We can type between the lists...</li>
130 <li>...thanks to <strong>Magicline</strong>.</li>
131 </ul>
132
133 <p>Lorem ipsum dolor sit amet dui. Morbi vel turpis. Nullam et leo. Etiam rutrum, urna tellus dui vel tincidunt mattis egestas, justo fringilla vel, massa. Phasellus.</p>
134
135 <p>Quisque iaculis, dui lectus varius vitae, tortor. Proin lacus. Pellentesque ac lacus. Aenean nonummy commodo nec, pede. Etiam blandit risus elit.</p>
136
137 <p>Ut pretium. Vestibulum rutrum in, adipiscing elit. Sed in quam in purus sem vitae pede. Pellentesque bibendum, urna sem vel risus. Vivamus posuere metus. Aliquam gravida iaculis nisl. Nam enim. Aliquam erat ac lacus tellus ac felis.</p>
138
139 <div id="last" style="padding: 10px; text-align: center;">
140 <p>This text is wrapped in a&nbsp;<tt>DIV</tt>&nbsp;element. We can type after this element though.</p>
141 </div>
142 </div>
143
144 <script>
145
146 CKEDITOR.replace( 'editor1', {
147 extraPlugins: 'image2',
148 height: 450,
149 removePlugins: 'image,forms',
150 contentsCss: [ '../../../contents.css', '../../image2/samples/contents.css' ]
151 } );
152
153 CKEDITOR.inline( 'editor2', {
154 extraPlugins: 'image2',
155 height: 450,
156 removePlugins: 'image,forms'
157 } );
158
159 </script>
160
161 <div id="footer">
162 <hr>
163 <p>
164 CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a>
165 </p>
166 <p id="copy">
167 Copyright &copy; 2003-2017, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico
168 Knabben. All rights reserved.
169 </p>
170 </div>
171</body>
172</html>
diff --git a/sources/plugins/lineutils/dev/magicfinger.html b/sources/plugins/lineutils/dev/magicfinger.html
new file mode 100644
index 0000000..3172d22
--- /dev/null
+++ b/sources/plugins/lineutils/dev/magicfinger.html
@@ -0,0 +1,285 @@
1<!DOCTYPE html>
2<!--
3Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
4For licensing, see LICENSE.md or http://ckeditor.com/license
5-->
6<html>
7<head>
8 <meta charset="utf-8">
9 <title>Lineutils &mdash; CKEditor Sample</title>
10 <script src="../../../ckeditor.js"></script>
11 <link href="../../../samples/old/sample.css" rel="stylesheet">
12</head>
13<body>
14 <h1 class="samples">
15 <a href="../../../samples/old/index.html">CKEditor Samples</a> &raquo; Lineutils
16 </h1>
17
18 <h3>Classic (iframe-based) Editor</h3>
19
20 <textarea id="editor1" cols="10" rows="10">
21 <table border="0" cellpadding="1" cellspacing="1" style="width: 100%; ">
22 <tbody>
23 <tr>
24 <td>This table</td>
25 <td>is the</td>
26 <td>very first</td>
27 <td>element of the document.</td>
28 </tr>
29 <tr>
30 <td>We are still</td>
31 <td>able to acces</td>
32 <td>the space before it.</td>
33 <td style="padding: 25px">
34 <table border="0" cellpadding="1" cellspacing="1" style="width: 100%; ">
35 <tbody>
36 <tr>
37 <td>This table is inside of a cell of another table.</td>
38 </tr>
39 <tr>
40 <td>We can type&nbsp;either before or after it though.</td>
41 </tr>
42 </tbody>
43 </table>
44 </td>
45 </tr>
46 </tbody>
47 </table>
48
49 <p>Two succesive horizontal lines (<tt>HR</tt> tags). We can access the space in between:</p>
50
51 <hr />
52 <hr />
53 <ol style="width: 300px">
54 <li>This numbered list...</li>
55 <li>...is a neighbour of a horizontal line...</li>
56 <li style="padding: 20px;">
57 <ol>
58 <li>Nested list!</li>
59 </ol>
60 </li>
61 </ol>
62
63 <ul style="width: 450px">
64 <li>We can type between the lists...</li>
65 <li>...thanks to <strong>Magicline</strong>.</li>
66 </ul>
67
68 <p>Lorem ipsum dolor sit amet dui. Morbi vel turpis. Nullam et leo. Etiam rutrum, urna tellus dui vel tincidunt mattis egestas, justo fringilla vel, massa. Phasellus.</p>
69
70 <p>Quisque iaculis, dui lectus varius vitae, tortor. Proin lacus. Pellentesque ac lacus. Aenean nonummy commodo nec, pede. Etiam blandit risus elit.</p>
71
72 <p>Ut pretium. Vestibulum rutrum in, adipiscing elit. Sed in quam in purus sem vitae pede. Pellentesque bibendum, urna sem vel risus. Vivamus posuere metus. Aliquam gravida iaculis nisl. Nam enim. Aliquam erat ac lacus tellus ac felis.</p>
73
74 <div id="last" style="padding: 10px; text-align: center;">
75 <p>This text is wrapped in a&nbsp;<tt>DIV</tt>&nbsp;element. We can type after this element though.</p>
76 </div>
77 </textarea>
78
79 <h3>Inline Editor</h3>
80
81 <div id="editor2" contenteditable="true" style="outline: 2px solid #ccc">
82 <table border="0" cellpadding="1" cellspacing="1" style="width: 100%; ">
83 <tbody>
84 <tr>
85 <td>This table</td>
86 <td>is the</td>
87 <td>very first</td>
88 <td>element of the document.</td>
89 </tr>
90 <tr>
91 <td>We are still</td>
92 <td>able to acces</td>
93 <td>the space before it.</td>
94 <td style="padding: 25px">
95 <table border="0" cellpadding="1" cellspacing="1" style="width: 100%; ">
96 <tbody>
97 <tr>
98 <td>This table is inside of a cell of another table.</td>
99 </tr>
100 <tr>
101 <td>We can type&nbsp;either before or after it though.</td>
102 </tr>
103 </tbody>
104 </table>
105 </td>
106 </tr>
107 </tbody>
108 </table>
109
110 <p>Two succesive horizontal lines (<tt>HR</tt> tags). We can access the space in between:</p>
111
112 <hr />
113 <hr />
114 <ol style="width: 300px">
115 <li>This numbered list...</li>
116 <li>...is a neighbour of a horizontal line...</li>
117 <li style="padding: 20px;">
118 <ol>
119 <li>Nested list!</li>
120 </ol>
121 </li>
122 </ol>
123
124 <ul style="width: 450px">
125 <li>We can type between the lists...</li>
126 <li>...thanks to <strong>Magicline</strong>.</li>
127 </ul>
128
129 <p>Lorem ipsum dolor sit amet dui. Morbi vel turpis. Nullam et leo. Etiam rutrum, urna tellus dui vel tincidunt mattis egestas, justo fringilla vel, massa. Phasellus.</p>
130
131 <p>Quisque iaculis, dui lectus varius vitae, tortor. Proin lacus. Pellentesque ac lacus. Aenean nonummy commodo nec, pede. Etiam blandit risus elit.</p>
132
133 <p>Ut pretium. Vestibulum rutrum in, adipiscing elit. Sed in quam in purus sem vitae pede. Pellentesque bibendum, urna sem vel risus. Vivamus posuere metus. Aliquam gravida iaculis nisl. Nam enim. Aliquam erat ac lacus tellus ac felis.</p>
134
135 <div id="last" style="padding: 10px; text-align: center;">
136 <p>This text is wrapped in a&nbsp;<tt>DIV</tt>&nbsp;element. We can type after this element though.</p>
137 </div>
138 </div>
139
140 <h3>Extreme inline</h3>
141
142 <div id="editor3" contenteditable="true" style="left: 123px; outline: 1px solid red; border: 15px solid green; position: relative; top: 30; left: 30px;">
143 <div style="padding: 20px; background: gray; width: 300px" class="1">Lorem ipsum dolor sit amet enim. Etiam ullamcorper. Suspendisse a pellentesque dui, non felis. Maecenas malesuada elit lectus felis, malesuada ultricies. Curabitur et ligula. Ut molestie a, ultricies porta urna. Vestibulum commodo volutpat a, convallis ac, laoreet enim.</div>
144 <div style="background: violet; padding: 30px;" class="static">
145 Position static
146 <div style="background: green; padding: 30px; border: 14px solid orange">foo</div>
147 </div>
148 <dl class="2">
149 <dt>Key</dt><dd>Value</dd>
150 </dl>
151 <div>Whatever</div>
152 <hr id="hr">
153 <p>Lorem ipsum dolor sit amet enim. Etiam ullamcorper. Suspendisse a pellentesque dui, non felis. Maecenas malesuada elit lectus felis, malesuada ultricies</p>
154 <hr>
155 <hr>
156 <p>Lorem ipsum dolor sit amet enim. Etiam ullamcorper. Suspendisse a pellentesque dui, non felis. Maecenas malesuada elit lectus felis, malesuada ultricies</p>
157 <div style="background: green; padding: 30px; width: 200px">foo</div>
158 </div>
159
160 <h3>Classic (iframe-based) Editor, H-scroll</h3>
161
162 <textarea id="editor4" cols="10" rows="10">
163 <hr />
164 <hr />
165 <ol style="width: 1500px">
166 <li>This numbered list...</li>
167 <li>...is a neighbour of a horizontal line...</li>
168 <li style="padding: 20px;">
169 <ol>
170 <li>Nested list!</li>
171 </ol>
172 </li>
173 </ol>
174
175 <ul style="width: 450px">
176 <li>We can type between the lists...</li>
177 <li>...thanks to <strong>Magicline</strong>.</li>
178 </ul>
179
180 <p>Lorem ipsum dolor sit amet dui. Morbi vel turpis. Nullam et leo. Etiam rutrum, urna tellus dui vel tincidunt mattis egestas, justo fringilla vel, massa. Phasellus.</p>
181
182 <p>Quisque iaculis, dui lectus varius vitae, tortor. Proin lacus. Pellentesque ac lacus. Aenean nonummy commodo nec, pede. Etiam blandit risus elit.</p>
183
184 <p>Ut pretium. Vestibulum rutrum in, adipiscing elit. Sed in quam in purus sem vitae pede. Pellentesque bibendum, urna sem vel risus. Vivamus posuere metus. Aliquam gravida iaculis nisl. Nam enim. Aliquam erat ac lacus tellus ac felis.</p>
185
186 <div id="last" style="padding: 10px; text-align: center;">
187 <p>This text is wrapped in a&nbsp;<tt>DIV</tt>&nbsp;element. We can type after this element though.</p>
188 </div>
189 </textarea>
190
191 <script>
192
193 CKEDITOR.addCss(
194 '.cke_editable * { outline: 1px solid #BCEBFF }'
195 );
196
197 function callback() {
198 var helpers = CKEDITOR.plugins.lineutils;
199 var liner = new helpers.liner( this );
200 var locator = new helpers.locator( this );
201 var finder = new helpers.finder( this, {
202 lookups: {
203 'is block and first child': function( el ) {
204 if ( el.is( CKEDITOR.dtd.$listItem ) )
205 return;
206
207 if ( el.is( CKEDITOR.dtd.$block ) )
208 return CKEDITOR.LINEUTILS_BEFORE | CKEDITOR.LINEUTILS_AFTER;
209 }
210 }
211 } ).start( function( relations, x, y ) {
212 locator.locate( relations );
213
214 var locations = locator.locations,
215 uid, type;
216
217 liner.prepare( relations, locations );
218
219 for ( uid in locations ) {
220 for ( type in locations[ uid ] )
221 liner.placeLine( { uid: uid, type: type } );
222 }
223
224 liner.cleanup();
225 } );
226 }
227
228 CKEDITOR.disableAutoInline = true;
229
230 CKEDITOR.replace( 'editor1', {
231 extraPlugins: 'lineutils',
232 height: 450,
233 removePlugins: 'magicline',
234 allowedContent: true,
235 contentsCss: [ '../../../contents.css' ],
236 on: {
237 contentDom: callback
238 }
239 } );
240
241 CKEDITOR.inline( 'editor2', {
242 extraPlugins: 'lineutils',
243 removePlugins: 'magicline',
244 allowedContent: true,
245 contentsCss: [ '../../../contents.css' ],
246 on: {
247 contentDom: callback
248 }
249 } );
250
251 CKEDITOR.inline( 'editor3', {
252 extraPlugins: 'lineutils',
253 removePlugins: 'magicline',
254 allowedContent: true,
255 contentsCss: [ '../../../contents.css' ],
256 on: {
257 contentDom: callback
258 }
259 } );
260
261 CKEDITOR.replace( 'editor4', {
262 extraPlugins: 'lineutils',
263 removePlugins: 'magicline',
264 allowedContent: true,
265 contentsCss: [ '../../../contents.css' ],
266 on: {
267 contentDom: callback
268 }
269 } );
270
271
272 </script>
273
274 <div id="footer">
275 <hr>
276 <p>
277 CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a>
278 </p>
279 <p id="copy">
280 Copyright &copy; 2003-2017, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico
281 Knabben. All rights reserved.
282 </p>
283 </div>
284</body>
285</html>
diff --git a/sources/plugins/lineutils/plugin.js b/sources/plugins/lineutils/plugin.js
new file mode 100644
index 0000000..d84c5f3
--- /dev/null
+++ b/sources/plugins/lineutils/plugin.js
@@ -0,0 +1,1018 @@
1/**
2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */
5
6 /**
7 * @fileOverview A set of utilities to find and create horizontal spaces in edited content.
8 */
9
10'use strict';
11
12( function() {
13
14 CKEDITOR.plugins.add( 'lineutils' );
15
16 /**
17 * Determines a position relative to an element in DOM (before).
18 *
19 * @readonly
20 * @property {Number} [=0]
21 * @member CKEDITOR
22 */
23 CKEDITOR.LINEUTILS_BEFORE = 1;
24
25 /**
26 * Determines a position relative to an element in DOM (after).
27 *
28 * @readonly
29 * @property {Number} [=2]
30 * @member CKEDITOR
31 */
32 CKEDITOR.LINEUTILS_AFTER = 2;
33
34 /**
35 * Determines a position relative to an element in DOM (inside).
36 *
37 * @readonly
38 * @property {Number} [=4]
39 * @member CKEDITOR
40 */
41 CKEDITOR.LINEUTILS_INSIDE = 4;
42
43 /**
44 * A utility that traverses the DOM tree and discovers elements
45 * (relations) matching user-defined lookups.
46 *
47 * @private
48 * @class CKEDITOR.plugins.lineutils.finder
49 * @constructor Creates a Finder class instance.
50 * @param {CKEDITOR.editor} editor Editor instance that the Finder belongs to.
51 * @param {Object} def Finder's definition.
52 * @since 4.3
53 */
54 function Finder( editor, def ) {
55 CKEDITOR.tools.extend( this, {
56 editor: editor,
57 editable: editor.editable(),
58 doc: editor.document,
59 win: editor.window
60 }, def, true );
61
62 this.inline = this.editable.isInline();
63
64 if ( !this.inline ) {
65 this.frame = this.win.getFrame();
66 }
67
68 this.target = this[ this.inline ? 'editable' : 'doc' ];
69 }
70
71 Finder.prototype = {
72 /**
73 * Initializes searching for elements with every mousemove event fired.
74 * To stop searching use {@link #stop}.
75 *
76 * @param {Function} [callback] Function executed on every iteration.
77 */
78 start: function( callback ) {
79 var that = this,
80 editor = this.editor,
81 doc = this.doc,
82 el, elfp, x, y;
83
84 var moveBuffer = CKEDITOR.tools.eventsBuffer( 50, function() {
85 if ( editor.readOnly || editor.mode != 'wysiwyg' )
86 return;
87
88 that.relations = {};
89
90 // Sometimes it happens that elementFromPoint returns null (especially on IE).
91 // Any further traversal makes no sense if there's no start point. Abort.
92 // Note: In IE8 elementFromPoint may return zombie nodes of undefined nodeType,
93 // so rejecting those as well.
94 if ( !( elfp = doc.$.elementFromPoint( x, y ) ) || !elfp.nodeType ) {
95 return;
96 }
97
98 el = new CKEDITOR.dom.element( elfp );
99
100 that.traverseSearch( el );
101
102 if ( !isNaN( x + y ) ) {
103 that.pixelSearch( el, x, y );
104 }
105
106 callback && callback( that.relations, x, y );
107 } );
108
109 // Searching starting from element from point on mousemove.
110 this.listener = this.editable.attachListener( this.target, 'mousemove', function( evt ) {
111 x = evt.data.$.clientX;
112 y = evt.data.$.clientY;
113
114 moveBuffer.input();
115 } );
116
117 this.editable.attachListener( this.inline ? this.editable : this.frame, 'mouseout', function() {
118 moveBuffer.reset();
119 } );
120 },
121
122 /**
123 * Stops observing mouse events attached by {@link #start}.
124 */
125 stop: function() {
126 if ( this.listener ) {
127 this.listener.removeListener();
128 }
129 },
130
131 /**
132 * Returns a range representing the relation, according to its element
133 * and type.
134 *
135 * @param {Object} location Location containing a unique identifier and type.
136 * @returns {CKEDITOR.dom.range} Range representing the relation.
137 */
138 getRange: ( function() {
139 var where = {};
140
141 where[ CKEDITOR.LINEUTILS_BEFORE ] = CKEDITOR.POSITION_BEFORE_START;
142 where[ CKEDITOR.LINEUTILS_AFTER ] = CKEDITOR.POSITION_AFTER_END;
143 where[ CKEDITOR.LINEUTILS_INSIDE ] = CKEDITOR.POSITION_AFTER_START;
144
145 return function( location ) {
146 var range = this.editor.createRange();
147
148 range.moveToPosition( this.relations[ location.uid ].element, where[ location.type ] );
149
150 return range;
151 };
152 } )(),
153
154 /**
155 * Stores given relation in a {@link #relations} object. Processes the relation
156 * to normalize and avoid duplicates.
157 *
158 * @param {CKEDITOR.dom.element} el Element of the relation.
159 * @param {Number} type Relation, one of `CKEDITOR.LINEUTILS_AFTER`, `CKEDITOR.LINEUTILS_BEFORE`, `CKEDITOR.LINEUTILS_INSIDE`.
160 */
161 store: ( function() {
162 function merge( el, type, relations ) {
163 var uid = el.getUniqueId();
164
165 if ( uid in relations ) {
166 relations[ uid ].type |= type;
167 } else {
168 relations[ uid ] = { element: el, type: type };
169 }
170 }
171
172 return function( el, type ) {
173 var alt;
174
175 // Normalization to avoid duplicates:
176 // CKEDITOR.LINEUTILS_AFTER becomes CKEDITOR.LINEUTILS_BEFORE of el.getNext().
177 if ( is( type, CKEDITOR.LINEUTILS_AFTER ) && isStatic( alt = el.getNext() ) && alt.isVisible() ) {
178 merge( alt, CKEDITOR.LINEUTILS_BEFORE, this.relations );
179 type ^= CKEDITOR.LINEUTILS_AFTER;
180 }
181
182 // Normalization to avoid duplicates:
183 // CKEDITOR.LINEUTILS_INSIDE becomes CKEDITOR.LINEUTILS_BEFORE of el.getFirst().
184 if ( is( type, CKEDITOR.LINEUTILS_INSIDE ) && isStatic( alt = el.getFirst() ) && alt.isVisible() ) {
185 merge( alt, CKEDITOR.LINEUTILS_BEFORE, this.relations );
186 type ^= CKEDITOR.LINEUTILS_INSIDE;
187 }
188
189 merge( el, type, this.relations );
190 };
191 } )(),
192
193 /**
194 * Traverses the DOM tree towards root, checking all ancestors
195 * with lookup rules, avoiding duplicates. Stores positive relations
196 * in the {@link #relations} object.
197 *
198 * @param {CKEDITOR.dom.element} el Element which is the starting point.
199 */
200 traverseSearch: function( el ) {
201 var l, type, uid;
202
203 // Go down DOM towards root (or limit).
204 do {
205 uid = el.$[ 'data-cke-expando' ];
206
207 // This element was already visited and checked.
208 if ( uid && uid in this.relations ) {
209 continue;
210 }
211
212 if ( el.equals( this.editable ) ) {
213 return;
214 }
215
216 if ( isStatic( el ) ) {
217 // Collect all addresses yielded by lookups for that element.
218 for ( l in this.lookups ) {
219
220 if ( ( type = this.lookups[ l ]( el ) ) ) {
221 this.store( el, type );
222 }
223 }
224 }
225 } while ( !isLimit( el ) && ( el = el.getParent() ) );
226 },
227
228 /**
229 * Iterates vertically pixel-by-pixel within a given element starting
230 * from given coordinates, searching for elements in the neighborhood.
231 * Once an element is found it is processed by {@link #traverseSearch}.
232 *
233 * @param {CKEDITOR.dom.element} el Element which is the starting point.
234 * @param {Number} [x] Horizontal mouse coordinate relative to the viewport.
235 * @param {Number} [y] Vertical mouse coordinate relative to the viewport.
236 */
237 pixelSearch: ( function() {
238 var contains = CKEDITOR.env.ie || CKEDITOR.env.webkit ?
239 function( el, found ) {
240 return el.contains( found );
241 } : function( el, found ) {
242 return !!( el.compareDocumentPosition( found ) & 16 );
243 };
244
245 // Iterates pixel-by-pixel from starting coordinates, moving by defined
246 // step and getting elementFromPoint in every iteration. Iteration stops when:
247 // * A valid element is found.
248 // * Condition function returns `false` (i.e. reached boundaries of viewport).
249 // * No element is found (i.e. coordinates out of viewport).
250 // * Element found is ascendant of starting element.
251 //
252 // @param {Object} doc Native DOM document.
253 // @param {Object} el Native DOM element.
254 // @param {Number} xStart Horizontal starting coordinate to use.
255 // @param {Number} yStart Vertical starting coordinate to use.
256 // @param {Number} step Step of the algorithm.
257 // @param {Function} condition A condition relative to current vertical coordinate.
258 function iterate( el, xStart, yStart, step, condition ) {
259 var y = yStart,
260 tryouts = 0,
261 found;
262
263 while ( condition( y ) ) {
264 y += step;
265
266 // If we try and we try, and still nothing's found, let's end
267 // that party.
268 if ( ++tryouts == 25 ) {
269 return;
270 }
271
272 found = this.doc.$.elementFromPoint( xStart, y );
273
274 // Nothing found. This is crazy... but...
275 // It might be that a line, which is in different document,
276 // covers that pixel (elementFromPoint is doc-sensitive).
277 // Better let's have another try.
278 if ( !found ) {
279 continue;
280 }
281
282 // Still in the same element.
283 else if ( found == el ) {
284 tryouts = 0;
285 continue;
286 }
287
288 // Reached the edge of an element and found an ancestor or...
289 // A line, that covers that pixel. Better let's have another try.
290 else if ( !contains( el, found ) ) {
291 continue;
292 }
293
294 tryouts = 0;
295
296 // Found a valid element. Stop iterating.
297 if ( isStatic( ( found = new CKEDITOR.dom.element( found ) ) ) ) {
298 return found;
299 }
300 }
301 }
302
303 return function( el, x, y ) {
304 var paneHeight = this.win.getViewPaneSize().height,
305
306 // Try to find an element iterating *up* from the starting point.
307 neg = iterate.call( this, el.$, x, y, -1, function( y ) {
308 return y > 0;
309 } ),
310
311 // Try to find an element iterating *down* from the starting point.
312 pos = iterate.call( this, el.$, x, y, 1, function( y ) {
313 return y < paneHeight;
314 } );
315
316 if ( neg ) {
317 this.traverseSearch( neg );
318
319 // Iterate towards DOM root until neg is a direct child of el.
320 while ( !neg.getParent().equals( el ) ) {
321 neg = neg.getParent();
322 }
323 }
324
325 if ( pos ) {
326 this.traverseSearch( pos );
327
328 // Iterate towards DOM root until pos is a direct child of el.
329 while ( !pos.getParent().equals( el ) ) {
330 pos = pos.getParent();
331 }
332 }
333
334 // Iterate forwards starting from neg and backwards from
335 // pos to harvest all children of el between those elements.
336 // Stop when neg and pos meet each other or there's none of them.
337 // TODO (?) reduce number of hops forwards/backwards.
338 while ( neg || pos ) {
339 if ( neg ) {
340 neg = neg.getNext( isStatic );
341 }
342
343 if ( !neg || neg.equals( pos ) ) {
344 break;
345 }
346
347 this.traverseSearch( neg );
348
349 if ( pos ) {
350 pos = pos.getPrevious( isStatic );
351 }
352
353 if ( !pos || pos.equals( neg ) ) {
354 break;
355 }
356
357 this.traverseSearch( pos );
358 }
359 };
360 } )(),
361
362 /**
363 * Unlike {@link #traverseSearch}, it collects **all** elements from editable's DOM tree
364 * and runs lookups for every one of them, collecting relations.
365 *
366 * @returns {Object} {@link #relations}.
367 */
368 greedySearch: function() {
369 this.relations = {};
370
371 var all = this.editable.getElementsByTag( '*' ),
372 i = 0,
373 el, type, l;
374
375 while ( ( el = all.getItem( i++ ) ) ) {
376 // Don't consider editable, as it might be inline,
377 // and i.e. checking it's siblings is pointless.
378 if ( el.equals( this.editable ) ) {
379 continue;
380 }
381
382 // On IE8 element.getElementsByTagName returns comments... sic! (http://dev.ckeditor.com/ticket/13176)
383 if ( el.type != CKEDITOR.NODE_ELEMENT ) {
384 continue;
385 }
386
387 // Don't visit non-editable internals, for example widget's
388 // guts (above wrapper, below nested). Still check editable limits,
389 // as they are siblings with editable contents.
390 if ( !el.hasAttribute( 'contenteditable' ) && el.isReadOnly() ) {
391 continue;
392 }
393
394 if ( isStatic( el ) && el.isVisible() ) {
395 // Collect all addresses yielded by lookups for that element.
396 for ( l in this.lookups ) {
397 if ( ( type = this.lookups[ l ]( el ) ) ) {
398 this.store( el, type );
399 }
400 }
401 }
402 }
403
404 return this.relations;
405 }
406
407 /**
408 * Relations express elements in DOM that match user-defined {@link #lookups}.
409 * Every relation has its own `type` that determines whether
410 * it refers to the space before, after or inside the `element`.
411 * This object stores relations found by {@link #traverseSearch} or {@link #greedySearch}, structured
412 * in the following way:
413 *
414 * relations: {
415 * // Unique identifier of the element.
416 * Number: {
417 * // Element of this relation.
418 * element: {@link CKEDITOR.dom.element}
419 * // Conjunction of CKEDITOR.LINEUTILS_BEFORE, CKEDITOR.LINEUTILS_AFTER and CKEDITOR.LINEUTILS_INSIDE.
420 * type: Number
421 * },
422 * ...
423 * }
424 *
425 * @property {Object} relations
426 * @readonly
427 */
428
429 /**
430 * A set of user-defined functions used by Finder to check if an element
431 * is a valid relation, belonging to {@link #relations}.
432 * When the criterion is met, lookup returns a logical conjunction of `CKEDITOR.LINEUTILS_BEFORE`,
433 * `CKEDITOR.LINEUTILS_AFTER` or `CKEDITOR.LINEUTILS_INSIDE`.
434 *
435 * Lookups are passed along with Finder's definition.
436 *
437 * lookups: {
438 * 'some lookup': function( el ) {
439 * if ( someCondition )
440 * return CKEDITOR.LINEUTILS_BEFORE;
441 * },
442 * ...
443 * }
444 *
445 * @property {Object} lookups
446 */
447 };
448
449
450 /**
451 * A utility that analyses relations found by
452 * CKEDITOR.plugins.lineutils.finder and locates them
453 * in the viewport as horizontal lines of specific coordinates.
454 *
455 * @private
456 * @class CKEDITOR.plugins.lineutils.locator
457 * @constructor Creates a Locator class instance.
458 * @param {CKEDITOR.editor} editor Editor instance that Locator belongs to.
459 * @since 4.3
460 */
461 function Locator( editor, def ) {
462 CKEDITOR.tools.extend( this, def, {
463 editor: editor
464 }, true );
465 }
466
467 Locator.prototype = {
468 /**
469 * Locates the Y coordinate for all types of every single relation and stores
470 * them in an object.
471 *
472 * @param {Object} relations {@link CKEDITOR.plugins.lineutils.finder#relations}.
473 * @returns {Object} {@link #locations}.
474 */
475 locate: ( function() {
476 function locateSibling( rel, type ) {
477 var sib = rel.element[ type === CKEDITOR.LINEUTILS_BEFORE ? 'getPrevious' : 'getNext' ]();
478
479 // Return the middle point between siblings.
480 if ( sib && isStatic( sib ) ) {
481 rel.siblingRect = sib.getClientRect();
482
483 if ( type == CKEDITOR.LINEUTILS_BEFORE ) {
484 return ( rel.siblingRect.bottom + rel.elementRect.top ) / 2;
485 } else {
486 return ( rel.elementRect.bottom + rel.siblingRect.top ) / 2;
487 }
488 }
489
490 // If there's no sibling, use the edge of an element.
491 else {
492 if ( type == CKEDITOR.LINEUTILS_BEFORE ) {
493 return rel.elementRect.top;
494 } else {
495 return rel.elementRect.bottom;
496 }
497 }
498 }
499
500 return function( relations ) {
501 var rel;
502
503 this.locations = {};
504
505 for ( var uid in relations ) {
506 rel = relations[ uid ];
507 rel.elementRect = rel.element.getClientRect();
508
509 if ( is( rel.type, CKEDITOR.LINEUTILS_BEFORE ) ) {
510 this.store( uid, CKEDITOR.LINEUTILS_BEFORE, locateSibling( rel, CKEDITOR.LINEUTILS_BEFORE ) );
511 }
512
513 if ( is( rel.type, CKEDITOR.LINEUTILS_AFTER ) ) {
514 this.store( uid, CKEDITOR.LINEUTILS_AFTER, locateSibling( rel, CKEDITOR.LINEUTILS_AFTER ) );
515 }
516
517 // The middle point of the element.
518 if ( is( rel.type, CKEDITOR.LINEUTILS_INSIDE ) ) {
519 this.store( uid, CKEDITOR.LINEUTILS_INSIDE, ( rel.elementRect.top + rel.elementRect.bottom ) / 2 );
520 }
521 }
522
523 return this.locations;
524 };
525 } )(),
526
527 /**
528 * Calculates distances from every location to given vertical coordinate
529 * and sorts locations according to that distance.
530 *
531 * @param {Number} y The vertical coordinate used for sorting, used as a reference.
532 * @param {Number} [howMany] Determines the number of "closest locations" to be returned.
533 * @returns {Array} Sorted, array representation of {@link #locations}.
534 */
535 sort: ( function() {
536 var locations, sorted,
537 dist, i;
538
539 function distance( y, uid, type ) {
540 return Math.abs( y - locations[ uid ][ type ] );
541 }
542
543 return function( y, howMany ) {
544 locations = this.locations;
545 sorted = [];
546
547 for ( var uid in locations ) {
548 for ( var type in locations[ uid ] ) {
549 dist = distance( y, uid, type );
550
551 // An array is empty.
552 if ( !sorted.length ) {
553 sorted.push( { uid: +uid, type: type, dist: dist } );
554 } else {
555 // Sort the array on fly when it's populated.
556 for ( i = 0; i < sorted.length; i++ ) {
557 if ( dist < sorted[ i ].dist ) {
558 sorted.splice( i, 0, { uid: +uid, type: type, dist: dist } );
559 break;
560 }
561 }
562
563 // Nothing was inserted, so the distance is bigger than
564 // any of already calculated: push to the end.
565 if ( i == sorted.length ) {
566 sorted.push( { uid: +uid, type: type, dist: dist } );
567 }
568 }
569 }
570 }
571
572 if ( typeof howMany != 'undefined' ) {
573 return sorted.slice( 0, howMany );
574 } else {
575 return sorted;
576 }
577 };
578 } )(),
579
580 /**
581 * Stores the location in a collection.
582 *
583 * @param {Number} uid Unique identifier of the relation.
584 * @param {Number} type One of `CKEDITOR.LINEUTILS_BEFORE`, `CKEDITOR.LINEUTILS_AFTER` and `CKEDITOR.LINEUTILS_INSIDE`.
585 * @param {Number} y Vertical position of the relation.
586 */
587 store: function( uid, type, y ) {
588 if ( !this.locations[ uid ] ) {
589 this.locations[ uid ] = {};
590 }
591
592 this.locations[ uid ][ type ] = y;
593 }
594
595 /**
596 * @readonly
597 * @property {Object} locations
598 */
599 };
600
601 var tipCss = {
602 display: 'block',
603 width: '0px',
604 height: '0px',
605 'border-color': 'transparent',
606 'border-style': 'solid',
607 position: 'absolute',
608 top: '-6px'
609 },
610
611 lineStyle = {
612 height: '0px',
613 'border-top': '1px dashed red',
614 position: 'absolute',
615 'z-index': 9999
616 },
617
618 lineTpl =
619 '<div data-cke-lineutils-line="1" class="cke_reset_all" style="{lineStyle}">' +
620 '<span style="{tipLeftStyle}">&nbsp;</span>' +
621 '<span style="{tipRightStyle}">&nbsp;</span>' +
622 '</div>';
623
624 /**
625 * A utility that draws horizontal lines in DOM according to locations
626 * returned by CKEDITOR.plugins.lineutils.locator.
627 *
628 * @private
629 * @class CKEDITOR.plugins.lineutils.liner
630 * @constructor Creates a Liner class instance.
631 * @param {CKEDITOR.editor} editor Editor instance that Liner belongs to.
632 * @param {Object} def Liner's definition.
633 * @since 4.3
634 */
635 function Liner( editor, def ) {
636 var editable = editor.editable();
637
638 CKEDITOR.tools.extend( this, {
639 editor: editor,
640 editable: editable,
641 inline: editable.isInline(),
642 doc: editor.document,
643 win: editor.window,
644 container: CKEDITOR.document.getBody(),
645 winTop: CKEDITOR.document.getWindow()
646 }, def, true );
647
648 this.hidden = {};
649 this.visible = {};
650
651 if ( !this.inline ) {
652 this.frame = this.win.getFrame();
653 }
654
655 this.queryViewport();
656
657 // Callbacks must be wrapped. Otherwise they're not attached
658 // to global DOM objects (i.e. topmost window) for every editor
659 // because they're treated as duplicates. They belong to the
660 // same prototype shared among Liner instances.
661 var queryViewport = CKEDITOR.tools.bind( this.queryViewport, this ),
662 hideVisible = CKEDITOR.tools.bind( this.hideVisible, this ),
663 removeAll = CKEDITOR.tools.bind( this.removeAll, this );
664
665 editable.attachListener( this.winTop, 'resize', queryViewport );
666 editable.attachListener( this.winTop, 'scroll', queryViewport );
667
668 editable.attachListener( this.winTop, 'resize', hideVisible );
669 editable.attachListener( this.win, 'scroll', hideVisible );
670
671 editable.attachListener( this.inline ? editable : this.frame, 'mouseout', function( evt ) {
672 var x = evt.data.$.clientX,
673 y = evt.data.$.clientY;
674
675 this.queryViewport();
676
677 // Check if mouse is out of the element (iframe/editable).
678 if ( x <= this.rect.left || x >= this.rect.right || y <= this.rect.top || y >= this.rect.bottom ) {
679 this.hideVisible();
680 }
681
682 // Check if mouse is out of the top-window vieport.
683 if ( x <= 0 || x >= this.winTopPane.width || y <= 0 || y >= this.winTopPane.height ) {
684 this.hideVisible();
685 }
686 }, this );
687
688 editable.attachListener( editor, 'resize', queryViewport );
689 editable.attachListener( editor, 'mode', removeAll );
690 editor.on( 'destroy', removeAll );
691
692 this.lineTpl = new CKEDITOR.template( lineTpl ).output( {
693 lineStyle: CKEDITOR.tools.writeCssText(
694 CKEDITOR.tools.extend( {}, lineStyle, this.lineStyle, true )
695 ),
696 tipLeftStyle: CKEDITOR.tools.writeCssText(
697 CKEDITOR.tools.extend( {}, tipCss, {
698 left: '0px',
699 'border-left-color': 'red',
700 'border-width': '6px 0 6px 6px'
701 }, this.tipCss, this.tipLeftStyle, true )
702 ),
703 tipRightStyle: CKEDITOR.tools.writeCssText(
704 CKEDITOR.tools.extend( {}, tipCss, {
705 right: '0px',
706 'border-right-color': 'red',
707 'border-width': '6px 6px 6px 0'
708 }, this.tipCss, this.tipRightStyle, true )
709 )
710 } );
711 }
712
713 Liner.prototype = {
714 /**
715 * Permanently removes all lines (both hidden and visible) from DOM.
716 */
717 removeAll: function() {
718 var l;
719
720 for ( l in this.hidden ) {
721 this.hidden[ l ].remove();
722 delete this.hidden[ l ];
723 }
724
725 for ( l in this.visible ) {
726 this.visible[ l ].remove();
727 delete this.visible[ l ];
728 }
729 },
730
731 /**
732 * Hides a given line.
733 *
734 * @param {CKEDITOR.dom.element} line The line to be hidden.
735 */
736 hideLine: function( line ) {
737 var uid = line.getUniqueId();
738
739 line.hide();
740
741 this.hidden[ uid ] = line;
742 delete this.visible[ uid ];
743 },
744
745 /**
746 * Shows a given line.
747 *
748 * @param {CKEDITOR.dom.element} line The line to be shown.
749 */
750 showLine: function( line ) {
751 var uid = line.getUniqueId();
752
753 line.show();
754
755 this.visible[ uid ] = line;
756 delete this.hidden[ uid ];
757 },
758
759 /**
760 * Hides all visible lines.
761 */
762 hideVisible: function() {
763 for ( var l in this.visible ) {
764 this.hideLine( this.visible[ l ] );
765 }
766 },
767
768 /**
769 * Shows a line at given location.
770 *
771 * @param {Object} location Location object containing the unique identifier of the relation
772 * and its type. Usually returned by {@link CKEDITOR.plugins.lineutils.locator#sort}.
773 * @param {Function} [callback] A callback to be called once the line is shown.
774 */
775 placeLine: function( location, callback ) {
776 var styles, line, l;
777
778 // No style means that line would be out of viewport.
779 if ( !( styles = this.getStyle( location.uid, location.type ) ) ) {
780 return;
781 }
782
783 // Search for any visible line of a different hash first.
784 // It's faster to re-position visible line than to show it.
785 for ( l in this.visible ) {
786 if ( this.visible[ l ].getCustomData( 'hash' ) !== this.hash ) {
787 line = this.visible[ l ];
788 break;
789 }
790 }
791
792 // Search for any hidden line of a different hash.
793 if ( !line ) {
794 for ( l in this.hidden ) {
795 if ( this.hidden[ l ].getCustomData( 'hash' ) !== this.hash ) {
796 this.showLine( ( line = this.hidden[ l ] ) );
797 break;
798 }
799 }
800 }
801
802 // If no line available, add the new one.
803 if ( !line ) {
804 this.showLine( ( line = this.addLine() ) );
805 }
806
807 // Mark the line with current hash.
808 line.setCustomData( 'hash', this.hash );
809
810 // Mark the line as visible.
811 this.visible[ line.getUniqueId() ] = line;
812
813 line.setStyles( styles );
814
815 callback && callback( line );
816 },
817
818 /**
819 * Creates a style set to be used by the line, representing a particular
820 * relation (location).
821 *
822 * @param {Number} uid Unique identifier of the relation.
823 * @param {Number} type Type of the relation.
824 * @returns {Object} An object containing styles.
825 */
826 getStyle: function( uid, type ) {
827 var rel = this.relations[ uid ],
828 loc = this.locations[ uid ][ type ],
829 styles = {},
830 hdiff;
831
832 // Line should be between two elements.
833 if ( rel.siblingRect ) {
834 styles.width = Math.max( rel.siblingRect.width, rel.elementRect.width );
835 }
836 // Line is relative to a single element.
837 else {
838 styles.width = rel.elementRect.width;
839 }
840
841 // Let's calculate the vertical position of the line.
842 if ( this.inline ) {
843 // (http://dev.ckeditor.com/ticket/13155)
844 styles.top = loc + this.winTopScroll.y - this.rect.relativeY;
845 } else {
846 styles.top = this.rect.top + this.winTopScroll.y + loc;
847 }
848
849 // Check if line would be vertically out of the viewport.
850 if ( styles.top - this.winTopScroll.y < this.rect.top || styles.top - this.winTopScroll.y > this.rect.bottom ) {
851 return false;
852 }
853
854 // Now let's calculate the horizontal alignment (left and width).
855 if ( this.inline ) {
856 // (http://dev.ckeditor.com/ticket/13155)
857 styles.left = rel.elementRect.left - this.rect.relativeX;
858 } else {
859 if ( rel.elementRect.left > 0 )
860 styles.left = this.rect.left + rel.elementRect.left;
861
862 // H-scroll case. Left edge of element may be out of viewport.
863 else {
864 styles.width += rel.elementRect.left;
865 styles.left = this.rect.left;
866 }
867
868 // H-scroll case. Right edge of element may be out of viewport.
869 if ( ( hdiff = styles.left + styles.width - ( this.rect.left + this.winPane.width ) ) > 0 ) {
870 styles.width -= hdiff;
871 }
872 }
873
874 // Finally include horizontal scroll of the global window.
875 styles.left += this.winTopScroll.x;
876
877 // Append 'px' to style values.
878 for ( var style in styles ) {
879 styles[ style ] = CKEDITOR.tools.cssLength( styles[ style ] );
880 }
881
882 return styles;
883 },
884
885 /**
886 * Adds a new line to DOM.
887 *
888 * @returns {CKEDITOR.dom.element} A brand-new line.
889 */
890 addLine: function() {
891 var line = CKEDITOR.dom.element.createFromHtml( this.lineTpl );
892
893 line.appendTo( this.container );
894
895 return line;
896 },
897
898 /**
899 * Assigns a unique hash to the instance that is later used
900 * to tell unwanted lines from new ones. This method **must** be called
901 * before a new set of relations is to be visualized so {@link #cleanup}
902 * eventually hides obsolete lines. This is because lines
903 * are re-used between {@link #placeLine} calls and the number of
904 * necessary ones may vary depending on the number of relations.
905 *
906 * @param {Object} relations {@link CKEDITOR.plugins.lineutils.finder#relations}.
907 * @param {Object} locations {@link CKEDITOR.plugins.lineutils.locator#locations}.
908 */
909 prepare: function( relations, locations ) {
910 this.relations = relations;
911 this.locations = locations;
912 this.hash = Math.random();
913 },
914
915 /**
916 * Hides all visible lines that do not belong to current hash
917 * and no longer represent relations (locations).
918 *
919 * See also: {@link #prepare}.
920 */
921 cleanup: function() {
922 var line;
923
924 for ( var l in this.visible ) {
925 line = this.visible[ l ];
926
927 if ( line.getCustomData( 'hash' ) !== this.hash ) {
928 this.hideLine( line );
929 }
930 }
931 },
932
933 /**
934 * Queries dimensions of the viewport, editable, frame etc.
935 * that are used for correct positioning of the line.
936 */
937 queryViewport: function() {
938 this.winPane = this.win.getViewPaneSize();
939 this.winTopScroll = this.winTop.getScrollPosition();
940 this.winTopPane = this.winTop.getViewPaneSize();
941
942 // (http://dev.ckeditor.com/ticket/13155)
943 this.rect = this.getClientRect( this.inline ? this.editable : this.frame );
944 },
945
946 /**
947 * Returns `boundingClientRect` of an element, shifted by the position
948 * of `container` when the container is not `static` (http://dev.ckeditor.com/ticket/13155).
949 *
950 * See also: {@link CKEDITOR.dom.element#getClientRect}.
951 *
952 * @param {CKEDITOR.dom.element} el A DOM element.
953 * @returns {Object} A shifted rect, extended by `relativeY` and `relativeX` properties.
954 */
955 getClientRect: function( el ) {
956 var rect = el.getClientRect(),
957 relativeContainerDocPosition = this.container.getDocumentPosition(),
958 relativeContainerComputedPosition = this.container.getComputedStyle( 'position' );
959
960 // Static or not, those values are used to offset the position of the line so they cannot be undefined.
961 rect.relativeX = rect.relativeY = 0;
962
963 if ( relativeContainerComputedPosition != 'static' ) {
964 // Remember the offset used to shift the clientRect.
965 rect.relativeY = relativeContainerDocPosition.y;
966 rect.relativeX = relativeContainerDocPosition.x;
967
968 rect.top -= rect.relativeY;
969 rect.bottom -= rect.relativeY;
970 rect.left -= rect.relativeX;
971 rect.right -= rect.relativeX;
972 }
973
974 return rect;
975 }
976 };
977
978 function is( type, flag ) {
979 return type & flag;
980 }
981
982 var floats = { left: 1, right: 1, center: 1 },
983 positions = { absolute: 1, fixed: 1 };
984
985 function isElement( node ) {
986 return node && node.type == CKEDITOR.NODE_ELEMENT;
987 }
988
989 function isFloated( el ) {
990 return !!( floats[ el.getComputedStyle( 'float' ) ] || floats[ el.getAttribute( 'align' ) ] );
991 }
992
993 function isPositioned( el ) {
994 return !!positions[ el.getComputedStyle( 'position' ) ];
995 }
996
997 function isLimit( node ) {
998 return isElement( node ) && node.getAttribute( 'contenteditable' ) == 'true';
999 }
1000
1001 function isStatic( node ) {
1002 return isElement( node ) && !isFloated( node ) && !isPositioned( node );
1003 }
1004
1005 /**
1006 * Global namespace storing definitions and global helpers for the Line Utilities plugin.
1007 *
1008 * @private
1009 * @class
1010 * @singleton
1011 * @since 4.3
1012 */
1013 CKEDITOR.plugins.lineutils = {
1014 finder: Finder,
1015 locator: Locator,
1016 liner: Liner
1017 };
1018} )();
diff --git a/sources/plugins/link/dialogs/anchor.js b/sources/plugins/link/dialogs/anchor.js
index e544275..04a4abe 100644
--- a/sources/plugins/link/dialogs/anchor.js
+++ b/sources/plugins/link/dialogs/anchor.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -18,6 +18,21 @@ CKEDITOR.dialog.add( 'anchor', function( editor ) {
18 } ), 'cke_anchor', 'anchor' ); 18 } ), 'cke_anchor', 'anchor' );
19 } 19 }
20 20
21
22 function getSelectedAnchor( selection ) {
23 var range = selection.getRanges()[ 0 ],
24 element = selection.getSelectedElement();
25
26 // In case of table cell selection, we want to shrink selection from td to a element.
27 range.shrink( CKEDITOR.SHRINK_ELEMENT );
28 element = range.getEnclosedNode();
29
30 if ( element && element.type === CKEDITOR.NODE_ELEMENT &&
31 ( element.data( 'cke-real-element-type' ) === 'anchor' || element.is( 'a' ) ) ) {
32 return element;
33 }
34 }
35
21 return { 36 return {
22 title: editor.lang.link.anchor.title, 37 title: editor.lang.link.anchor.title,
23 minWidth: 300, 38 minWidth: 300,
@@ -35,9 +50,10 @@ CKEDITOR.dialog.add( 'anchor', function( editor ) {
35 var newFake = createFakeAnchor( editor, attributes ); 50 var newFake = createFakeAnchor( editor, attributes );
36 newFake.replace( this._.selectedElement ); 51 newFake.replace( this._.selectedElement );
37 52
38 // Selecting fake element for IE. (#11377) 53 // Selecting fake element for IE. (http://dev.ckeditor.com/ticket/11377)
39 if ( CKEDITOR.env.ie ) 54 if ( CKEDITOR.env.ie ) {
40 editor.getSelection().selectElement( newFake ); 55 editor.getSelection().selectElement( newFake );
56 }
41 } else { 57 } else {
42 this._.selectedElement.setAttributes( attributes ); 58 this._.selectedElement.setAttributes( attributes );
43 } 59 }
@@ -56,7 +72,7 @@ CKEDITOR.dialog.add( 'anchor', function( editor ) {
56 // Apply style. 72 // Apply style.
57 var style = new CKEDITOR.style( { element: 'a', attributes: attributes } ); 73 var style = new CKEDITOR.style( { element: 'a', attributes: attributes } );
58 style.type = CKEDITOR.STYLE_INLINE; 74 style.type = CKEDITOR.STYLE_INLINE;
59 editor.applyStyle( style ); 75 style.applyToRange( range );
60 } 76 }
61 } 77 }
62 }, 78 },
@@ -67,7 +83,7 @@ CKEDITOR.dialog.add( 'anchor', function( editor ) {
67 83
68 onShow: function() { 84 onShow: function() {
69 var sel = editor.getSelection(), 85 var sel = editor.getSelection(),
70 fullySelected = sel.getSelectedElement(), 86 fullySelected = getSelectedAnchor( sel ),
71 fakeSelected = fullySelected && fullySelected.data( 'cke-realelement' ), 87 fakeSelected = fullySelected && fullySelected.data( 'cke-realelement' ),
72 linkElement = fakeSelected ? 88 linkElement = fakeSelected ?
73 CKEDITOR.plugins.link.tryRestoreFakeAnchor( editor, fullySelected ) : 89 CKEDITOR.plugins.link.tryRestoreFakeAnchor( editor, fullySelected ) :
@@ -77,8 +93,9 @@ CKEDITOR.dialog.add( 'anchor', function( editor ) {
77 loadElements.call( this, linkElement ); 93 loadElements.call( this, linkElement );
78 !fakeSelected && sel.selectElement( linkElement ); 94 !fakeSelected && sel.selectElement( linkElement );
79 95
80 if ( fullySelected ) 96 if ( fullySelected ) {
81 this._.selectedElement = fullySelected; 97 this._.selectedElement = fullySelected;
98 }
82 } 99 }
83 100
84 this.getContentElement( 'info', 'txtName' ).focus(); 101 this.getContentElement( 'info', 'txtName' ).focus();
diff --git a/sources/plugins/link/dialogs/link.js b/sources/plugins/link/dialogs/link.js
index 35975c7..4c60928 100644
--- a/sources/plugins/link/dialogs/link.js
+++ b/sources/plugins/link/dialogs/link.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -7,7 +7,112 @@
7 7
8( function() { 8( function() {
9 CKEDITOR.dialog.add( 'link', function( editor ) { 9 CKEDITOR.dialog.add( 'link', function( editor ) {
10 var plugin = CKEDITOR.plugins.link; 10 var plugin = CKEDITOR.plugins.link,
11 initialLinkText;
12
13 function createRangeForLink( editor, link ) {
14 var range = editor.createRange();
15
16 range.setStartBefore( link );
17 range.setEndAfter( link );
18
19 return range;
20 }
21
22 function insertLinksIntoSelection( editor, data ) {
23 var attributes = plugin.getLinkAttributes( editor, data ),
24 ranges = editor.getSelection().getRanges(),
25 style = new CKEDITOR.style( {
26 element: 'a',
27 attributes: attributes.set
28 } ),
29 rangesToSelect = [],
30 range,
31 text,
32 nestedLinks,
33 i,
34 j;
35
36 style.type = CKEDITOR.STYLE_INLINE; // need to override... dunno why.
37
38 for ( i = 0; i < ranges.length; i++ ) {
39 range = ranges[ i ];
40
41 // Use link URL as text with a collapsed cursor.
42 if ( range.collapsed ) {
43 // Short mailto link text view (http://dev.ckeditor.com/ticket/5736).
44 text = new CKEDITOR.dom.text( data.linkText || ( data.type == 'email' ?
45 data.email.address : attributes.set[ 'data-cke-saved-href' ] ), editor.document );
46 range.insertNode( text );
47 range.selectNodeContents( text );
48 } else if ( initialLinkText !== data.linkText ) {
49 text = new CKEDITOR.dom.text( data.linkText, editor.document );
50
51 // Shrink range to preserve block element.
52 range.shrink( CKEDITOR.SHRINK_TEXT );
53
54 // Use extractHtmlFromRange to remove markup within the selection. Also this method is a little
55 // smarter than range#deleteContents as it plays better e.g. with table cells.
56 editor.editable().extractHtmlFromRange( range );
57
58 range.insertNode( text );
59 }
60
61 // Editable links nested within current range should be removed, so that the link is applied to whole selection.
62 nestedLinks = range._find( 'a' );
63
64 for ( j = 0; j < nestedLinks.length; j++ ) {
65 nestedLinks[ j ].remove( true );
66 }
67
68
69 // Apply style.
70 style.applyToRange( range, editor );
71
72 rangesToSelect.push( range );
73 }
74
75 editor.getSelection().selectRanges( rangesToSelect );
76 }
77
78 function editLinksInSelection( editor, selectedElements, data ) {
79 var attributes = plugin.getLinkAttributes( editor, data ),
80 ranges = [],
81 element,
82 href,
83 textView,
84 newText,
85 i;
86
87 for ( i = 0; i < selectedElements.length; i++ ) {
88 // We're only editing an existing link, so just overwrite the attributes.
89 element = selectedElements[ i ];
90 href = element.data( 'cke-saved-href' );
91 textView = element.getHtml();
92
93 element.setAttributes( attributes.set );
94 element.removeAttributes( attributes.removed );
95
96
97 if ( data.linkText && initialLinkText != data.linkText ) {
98 // Display text has been changed.
99 newText = data.linkText;
100 } else if ( href == textView || data.type == 'email' && textView.indexOf( '@' ) != -1 ) {
101 // Update text view when user changes protocol (http://dev.ckeditor.com/ticket/4612).
102 // Short mailto link text view (http://dev.ckeditor.com/ticket/5736).
103 newText = data.type == 'email' ? data.email.address : attributes.set[ 'data-cke-saved-href' ];
104 }
105
106 if ( newText ) {
107 element.setText( newText );
108 }
109
110 ranges.push( createRangeForLink( editor, element ) );
111 }
112
113 // We changed the content, so need to select it again.
114 editor.getSelection().selectRanges( ranges );
115 }
11 116
12 // Handles the event when the "Target" selection box is changed. 117 // Handles the event when the "Target" selection box is changed.
13 var targetChanged = function() { 118 var targetChanged = function() {
@@ -109,13 +214,30 @@
109 214
110 return { 215 return {
111 title: linkLang.title, 216 title: linkLang.title,
112 minWidth: 350, 217 minWidth: ( CKEDITOR.skinName || editor.config.skin ) == 'moono-lisa' ? 450 : 350,
113 minHeight: 230, 218 minHeight: 240,
114 contents: [ { 219 contents: [ {
115 id: 'info', 220 id: 'info',
116 label: linkLang.info, 221 label: linkLang.info,
117 title: linkLang.info, 222 title: linkLang.info,
118 elements: [ { 223 elements: [ {
224 type: 'text',
225 id: 'linkDisplayText',
226 label: linkLang.displayText,
227 setup: function() {
228 this.enable();
229
230 this.setValue( editor.getSelection().getSelectedText() );
231
232 // Keep inner text so that it can be compared in commit function. By obtaining value from getData()
233 // we get value stripped from new line chars which is important when comparing the value later on.
234 initialLinkText = this.getValue();
235 },
236 commit: function( data ) {
237 data.linkText = this.isEnabled() ? this.getValue() : '';
238 }
239 },
240 {
119 id: 'linkType', 241 id: 'linkType',
120 type: 'select', 242 type: 'select',
121 label: linkLang.type, 243 label: linkLang.type,
@@ -145,7 +267,7 @@
145 label: commonLang.protocol, 267 label: commonLang.protocol,
146 'default': 'http://', 268 'default': 'http://',
147 items: [ 269 items: [
148 // Force 'ltr' for protocol names in BIDI. (#5433) 270 // Force 'ltr' for protocol names in BIDI. (http://dev.ckeditor.com/ticket/5433)
149 [ 'http://\u200E', 'http://' ], 271 [ 'http://\u200E', 'http://' ],
150 [ 'https://\u200E', 'https://' ], 272 [ 'https://\u200E', 'https://' ],
151 [ 'ftp://\u200E', 'ftp://' ], 273 [ 'ftp://\u200E', 'ftp://' ],
@@ -218,7 +340,7 @@
218 }, 340 },
219 commit: function( data ) { 341 commit: function( data ) {
220 // IE will not trigger the onChange event if the mouse has been used 342 // IE will not trigger the onChange event if the mouse has been used
221 // to carry all the operations #4724 343 // to carry all the operations http://dev.ckeditor.com/ticket/4724
222 this.onChange(); 344 this.onChange();
223 345
224 if ( !data.url ) 346 if ( !data.url )
@@ -776,28 +898,55 @@
776 setup: setupAdvParams, 898 setup: setupAdvParams,
777 commit: commitAdvParams 899 commit: commitAdvParams
778 } ] 900 } ]
901 },
902 {
903 type: 'hbox',
904 widths: [ '45%', '55%' ],
905 children: [ {
906 type: 'checkbox',
907 id: 'download',
908 requiredContent: 'a[download]',
909 label: linkLang.download,
910 setup: function( data ) {
911 if ( data.download !== undefined )
912 this.setValue( 'checked', 'checked' );
913 },
914 commit: function( data ) {
915 if ( this.getValue() ) {
916 data.download = this.getValue();
917 }
918 }
919 } ]
779 } ] 920 } ]
780 } ] 921 } ]
781 } ], 922 } ],
782 onShow: function() { 923 onShow: function() {
783 var editor = this.getParentEditor(), 924 var editor = this.getParentEditor(),
784 selection = editor.getSelection(), 925 selection = editor.getSelection(),
785 element = null; 926 displayTextField = this.getContentElement( 'info', 'linkDisplayText' ).getElement().getParent().getParent(),
927 elements = plugin.getSelectedLink( editor, true ),
928 firstLink = elements[ 0 ] || null;
786 929
787 // Fill in all the relevant fields if there's already one link selected. 930 // Fill in all the relevant fields if there's already one link selected.
788 if ( ( element = plugin.getSelectedLink( editor ) ) && element.hasAttribute( 'href' ) ) { 931 if ( firstLink && firstLink.hasAttribute( 'href' ) ) {
789 // Don't change selection if some element is already selected. 932 // Don't change selection if some element is already selected.
790 // For example - don't destroy fake selection. 933 // For example - don't destroy fake selection.
791 if ( !selection.getSelectedElement() ) 934 if ( !selection.getSelectedElement() && !selection.isInTable() ) {
792 selection.selectElement( element ); 935 selection.selectElement( firstLink );
793 } else { 936 }
794 element = null;
795 } 937 }
796 938
797 var data = plugin.parseLinkAttributes( editor, element ); 939 var data = plugin.parseLinkAttributes( editor, firstLink );
940
941 // Here we'll decide whether or not we want to show Display Text field.
942 if ( elements.length <= 1 && plugin.showDisplayTextForElement( firstLink, editor ) ) {
943 displayTextField.show();
944 } else {
945 displayTextField.hide();
946 }
798 947
799 // Record down the selected element in the dialog. 948 // Record down the selected element in the dialog.
800 this._.selectedElement = element; 949 this._.selectedElements = elements;
801 950
802 this.setupContent( data ); 951 this.setupContent( data );
803 }, 952 },
@@ -807,50 +956,12 @@
807 // Collect data from fields. 956 // Collect data from fields.
808 this.commitContent( data ); 957 this.commitContent( data );
809 958
810 var selection = editor.getSelection(), 959 if ( !this._.selectedElements.length ) {
811 attributes = plugin.getLinkAttributes( editor, data ); 960 insertLinksIntoSelection( editor, data );
812
813 if ( !this._.selectedElement ) {
814 var range = selection.getRanges()[ 0 ];
815
816 // Use link URL as text with a collapsed cursor.
817 if ( range.collapsed ) {
818 // Short mailto link text view (#5736).
819 var text = new CKEDITOR.dom.text( data.type == 'email' ?
820 data.email.address : attributes.set[ 'data-cke-saved-href' ], editor.document );
821 range.insertNode( text );
822 range.selectNodeContents( text );
823 }
824
825 // Apply style.
826 var style = new CKEDITOR.style( {
827 element: 'a',
828 attributes: attributes.set
829 } );
830
831 style.type = CKEDITOR.STYLE_INLINE; // need to override... dunno why.
832 style.applyToRange( range, editor );
833 range.select();
834 } else { 961 } else {
835 // We're only editing an existing link, so just overwrite the attributes. 962 editLinksInSelection( editor, this._.selectedElements, data );
836 var element = this._.selectedElement,
837 href = element.data( 'cke-saved-href' ),
838 textView = element.getHtml();
839
840 element.setAttributes( attributes.set );
841 element.removeAttributes( attributes.removed );
842
843 // Update text view when user changes protocol (#4612).
844 if ( href == textView || data.type == 'email' && textView.indexOf( '@' ) != -1 ) {
845 // Short mailto link text view (#5736).
846 element.setHtml( data.type == 'email' ?
847 data.email.address : attributes.set[ 'data-cke-saved-href' ] );
848
849 // We changed the content, so need to select it again.
850 selection.selectElement( element );
851 }
852 963
853 delete this._.selectedElement; 964 delete this._.selectedElements;
854 } 965 }
855 }, 966 },
856 onLoad: function() { 967 onLoad: function() {
diff --git a/sources/plugins/link/icons/anchor-rtl.png b/sources/plugins/link/icons/anchor-rtl.png
index 87d717d..b068855 100644
--- a/sources/plugins/link/icons/anchor-rtl.png
+++ b/sources/plugins/link/icons/anchor-rtl.png
Binary files differ
diff --git a/sources/plugins/link/icons/anchor.png b/sources/plugins/link/icons/anchor.png
index 0ca085f..e50d6cd 100644
--- a/sources/plugins/link/icons/anchor.png
+++ b/sources/plugins/link/icons/anchor.png
Binary files differ
diff --git a/sources/plugins/link/icons/hidpi/anchor-rtl.png b/sources/plugins/link/icons/hidpi/anchor-rtl.png
index cd6d4ea..3533c38 100644
--- a/sources/plugins/link/icons/hidpi/anchor-rtl.png
+++ b/sources/plugins/link/icons/hidpi/anchor-rtl.png
Binary files differ
diff --git a/sources/plugins/link/icons/hidpi/anchor.png b/sources/plugins/link/icons/hidpi/anchor.png
index c5869db..99eeadd 100644
--- a/sources/plugins/link/icons/hidpi/anchor.png
+++ b/sources/plugins/link/icons/hidpi/anchor.png
Binary files differ
diff --git a/sources/plugins/link/icons/hidpi/link.png b/sources/plugins/link/icons/hidpi/link.png
index bb8a069..43ce99e 100644
--- a/sources/plugins/link/icons/hidpi/link.png
+++ b/sources/plugins/link/icons/hidpi/link.png
Binary files differ
diff --git a/sources/plugins/link/icons/hidpi/unlink.png b/sources/plugins/link/icons/hidpi/unlink.png
index 5af59c2..8ace29d 100644
--- a/sources/plugins/link/icons/hidpi/unlink.png
+++ b/sources/plugins/link/icons/hidpi/unlink.png
Binary files differ
diff --git a/sources/plugins/link/icons/link.png b/sources/plugins/link/icons/link.png
index 95092d0..c2c450f 100644
--- a/sources/plugins/link/icons/link.png
+++ b/sources/plugins/link/icons/link.png
Binary files differ
diff --git a/sources/plugins/link/icons/unlink.png b/sources/plugins/link/icons/unlink.png
index 33a1599..c2f3f64 100644
--- a/sources/plugins/link/icons/unlink.png
+++ b/sources/plugins/link/icons/unlink.png
Binary files differ
diff --git a/sources/plugins/link/images/anchor.png b/sources/plugins/link/images/anchor.png
index 6d861a0..d94adb4 100644
--- a/sources/plugins/link/images/anchor.png
+++ b/sources/plugins/link/images/anchor.png
Binary files differ
diff --git a/sources/plugins/link/images/hidpi/anchor.png b/sources/plugins/link/images/hidpi/anchor.png
index f504843..186c3e9 100644
--- a/sources/plugins/link/images/hidpi/anchor.png
+++ b/sources/plugins/link/images/hidpi/anchor.png
Binary files differ
diff --git a/sources/plugins/link/lang/af.js b/sources/plugins/link/lang/af.js
index 10991c2..3032beb 100644
--- a/sources/plugins/link/lang/af.js
+++ b/sources/plugins/link/lang/af.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'link', 'af', { 5CKEDITOR.plugins.setLang( 'link', 'af', {
@@ -19,6 +19,8 @@ CKEDITOR.plugins.setLang( 'link', 'af', {
19 anchorName: 'Op ankernaam', 19 anchorName: 'Op ankernaam',
20 charset: 'Karakterstel van geskakelde bron', 20 charset: 'Karakterstel van geskakelde bron',
21 cssClasses: 'CSS klasse', 21 cssClasses: 'CSS klasse',
22 download: 'Force Download', // MISSING
23 displayText: 'Display Text', // MISSING
22 emailAddress: 'E-posadres', 24 emailAddress: 'E-posadres',
23 emailBody: 'Berig-inhoud', 25 emailBody: 'Berig-inhoud',
24 emailSubject: 'Berig-onderwerp', 26 emailSubject: 'Berig-onderwerp',
diff --git a/sources/plugins/link/lang/ar.js b/sources/plugins/link/lang/ar.js
index 533d527..e0dd0d9 100644
--- a/sources/plugins/link/lang/ar.js
+++ b/sources/plugins/link/lang/ar.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'link', 'ar', { 5CKEDITOR.plugins.setLang( 'link', 'ar', {
@@ -19,6 +19,8 @@ CKEDITOR.plugins.setLang( 'link', 'ar', {
19 anchorName: 'حسب إسم الإشارة المرجعية', 19 anchorName: 'حسب إسم الإشارة المرجعية',
20 charset: 'ترميز المادة المطلوبة', 20 charset: 'ترميز المادة المطلوبة',
21 cssClasses: 'فئات التنسيق', 21 cssClasses: 'فئات التنسيق',
22 download: 'Force Download', // MISSING
23 displayText: 'Display Text', // MISSING
22 emailAddress: 'البريد الإلكتروني', 24 emailAddress: 'البريد الإلكتروني',
23 emailBody: 'محتوى الرسالة', 25 emailBody: 'محتوى الرسالة',
24 emailSubject: 'موضوع الرسالة', 26 emailSubject: 'موضوع الرسالة',
diff --git a/sources/plugins/link/lang/az.js b/sources/plugins/link/lang/az.js
new file mode 100644
index 0000000..33588fe
--- /dev/null
+++ b/sources/plugins/link/lang/az.js
@@ -0,0 +1,67 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'link', 'az', {
6 acccessKey: 'Qısayol düyməsi',
7 advanced: 'Geniş seçimləri',
8 advisoryContentType: 'Məsləhətli məzmunun növü',
9 advisoryTitle: 'Məsləhətli başlıq',
10 anchor: {
11 toolbar: 'Xeş',
12 menu: 'Xeşi redaktə et',
13 title: 'Xeşin seçimləri',
14 name: 'Xeşin adı',
15 errorName: 'Xeşin adı yanlışdır',
16 remove: 'Xeşin adı sil'
17 },
18 anchorId: 'ID görə',
19 anchorName: 'Xeşin adına görə',
20 charset: 'Hədəfin kodlaşdırması',
21 cssClasses: 'Üslub klası',
22 download: 'Məcburi yükləmə',
23 displayText: 'Göstərilən mətn',
24 emailAddress: 'E-poçt ünvanı',
25 emailBody: 'Mesajın məzmunu',
26 emailSubject: 'Mesajın başlığı',
27 id: 'ID',
28 info: 'Linkin xüsusiyyətləri',
29 langCode: 'Dilin kodu',
30 langDir: 'Yaziların istiqaməti',
31 langDirLTR: 'Soldan sağa (LTR)',
32 langDirRTL: 'Sağdan sola (RTL)',
33 menu: 'Linki redaktə et',
34 name: 'Ad',
35 noAnchors: '(heç bir xeş tapılmayıb)',
36 noEmail: 'E-poçt ünvanı daxil edin',
37 noUrl: 'Linkin URL-ı daxil edin',
38 other: '<digər>',
39 popupDependent: 'Asılı (Netscape)',
40 popupFeatures: 'Pəncərənin xüsusiyyətləri',
41 popupFullScreen: 'Tam ekran rejimi (IE)',
42 popupLeft: 'Solda',
43 popupLocationBar: 'Ünvan paneli',
44 popupMenuBar: 'Menyu paneli',
45 popupResizable: 'Olçülər dəyişilir',
46 popupScrollBars: 'Sürüşdürmələr göstər',
47 popupStatusBar: 'Bildirişlərin paneli',
48 popupToolbar: 'Alətlərin paneli',
49 popupTop: 'Yuxarıda',
50 rel: 'Münasibət',
51 selectAnchor: 'Xeşi seçin',
52 styles: 'Üslub',
53 tabIndex: 'Tabın nömrəsi',
54 target: 'Hədəf çərçivə',
55 targetFrame: '<freym>',
56 targetFrameName: 'Freymin adı',
57 targetPopup: '<yeni pəncərə>',
58 targetPopupName: 'Pəncərənin adı',
59 title: 'Link',
60 toAnchor: 'Xeş',
61 toEmail: 'E-poçt',
62 toUrl: 'URL',
63 toolbar: 'Link',
64 type: 'Linkin növü',
65 unlink: 'Linki sil',
66 upload: 'Serverə yüklə'
67} );
diff --git a/sources/plugins/link/lang/bg.js b/sources/plugins/link/lang/bg.js
index a8e99a7..ad32915 100644
--- a/sources/plugins/link/lang/bg.js
+++ b/sources/plugins/link/lang/bg.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'link', 'bg', { 5CKEDITOR.plugins.setLang( 'link', 'bg', {
@@ -19,6 +19,8 @@ CKEDITOR.plugins.setLang( 'link', 'bg', {
19 anchorName: 'По име на котва', 19 anchorName: 'По име на котва',
20 charset: 'Тип на свързания ресурс', 20 charset: 'Тип на свързания ресурс',
21 cssClasses: 'Класове за CSS', 21 cssClasses: 'Класове за CSS',
22 download: 'Force Download', // MISSING
23 displayText: 'Display Text', // MISSING
22 emailAddress: 'E-mail aдрес', 24 emailAddress: 'E-mail aдрес',
23 emailBody: 'Съдържание', 25 emailBody: 'Съдържание',
24 emailSubject: 'Тема', 26 emailSubject: 'Тема',
diff --git a/sources/plugins/link/lang/bn.js b/sources/plugins/link/lang/bn.js
index bd9d05e..c071821 100644
--- a/sources/plugins/link/lang/bn.js
+++ b/sources/plugins/link/lang/bn.js
@@ -1,9 +1,9 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'link', 'bn', { 5CKEDITOR.plugins.setLang( 'link', 'bn', {
6 acccessKey: ' কী', 6 acccessKey: ' কী',
7 advanced: 'এডভান্সড', 7 advanced: 'এডভান্সড',
8 advisoryContentType: 'পরামর্শ কন্টেন্টের প্রকার', 8 advisoryContentType: 'পরামর্শ কন্টেন্টের প্রকার',
9 advisoryTitle: 'পরামর্শ শীর্ষক', 9 advisoryTitle: 'পরামর্শ শীর্ষক',
@@ -19,6 +19,8 @@ CKEDITOR.plugins.setLang( 'link', 'bn', {
19 anchorName: 'নোঙরের নাম দিয়ে', 19 anchorName: 'নোঙরের নাম দিয়ে',
20 charset: 'লিংক রিসোর্স ক্যারেক্টর সেট', 20 charset: 'লিংক রিসোর্স ক্যারেক্টর সেট',
21 cssClasses: 'স্টাইল-শীট ক্লাস', 21 cssClasses: 'স্টাইল-শীট ক্লাস',
22 download: 'Force Download', // MISSING
23 displayText: 'Display Text', // MISSING
22 emailAddress: 'ইমেইল ঠিকানা', 24 emailAddress: 'ইমেইল ঠিকানা',
23 emailBody: 'মেসেজের দেহ', 25 emailBody: 'মেসেজের দেহ',
24 emailSubject: 'মেসেজের বিষয়', 26 emailSubject: 'মেসেজের বিষয়',
diff --git a/sources/plugins/link/lang/bs.js b/sources/plugins/link/lang/bs.js
index 39a1a84..d23ae35 100644
--- a/sources/plugins/link/lang/bs.js
+++ b/sources/plugins/link/lang/bs.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'link', 'bs', { 5CKEDITOR.plugins.setLang( 'link', 'bs', {
@@ -19,6 +19,8 @@ CKEDITOR.plugins.setLang( 'link', 'bs', {
19 anchorName: 'Po nazivu sidra', 19 anchorName: 'Po nazivu sidra',
20 charset: 'Linked Resource Charset', 20 charset: 'Linked Resource Charset',
21 cssClasses: 'Klase CSS stilova', 21 cssClasses: 'Klase CSS stilova',
22 download: 'Force Download', // MISSING
23 displayText: 'Display Text', // MISSING
22 emailAddress: 'E-Mail Adresa', 24 emailAddress: 'E-Mail Adresa',
23 emailBody: 'Poruka', 25 emailBody: 'Poruka',
24 emailSubject: 'Subjekt poruke', 26 emailSubject: 'Subjekt poruke',
diff --git a/sources/plugins/link/lang/ca.js b/sources/plugins/link/lang/ca.js
index 8b80e61..44a9ebd 100644
--- a/sources/plugins/link/lang/ca.js
+++ b/sources/plugins/link/lang/ca.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'link', 'ca', { 5CKEDITOR.plugins.setLang( 'link', 'ca', {
@@ -19,6 +19,8 @@ CKEDITOR.plugins.setLang( 'link', 'ca', {
19 anchorName: 'Per nom d\'àncora', 19 anchorName: 'Per nom d\'àncora',
20 charset: 'Conjunt de caràcters font enllaçat', 20 charset: 'Conjunt de caràcters font enllaçat',
21 cssClasses: 'Classes del full d\'estil', 21 cssClasses: 'Classes del full d\'estil',
22 download: 'Force Download', // MISSING
23 displayText: 'Text a mostrar',
22 emailAddress: 'Adreça de correu electrònic', 24 emailAddress: 'Adreça de correu electrònic',
23 emailBody: 'Cos del missatge', 25 emailBody: 'Cos del missatge',
24 emailSubject: 'Assumpte del missatge', 26 emailSubject: 'Assumpte del missatge',
diff --git a/sources/plugins/link/lang/cs.js b/sources/plugins/link/lang/cs.js
index 45106c0..508c133 100644
--- a/sources/plugins/link/lang/cs.js
+++ b/sources/plugins/link/lang/cs.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'link', 'cs', { 5CKEDITOR.plugins.setLang( 'link', 'cs', {
@@ -19,6 +19,8 @@ CKEDITOR.plugins.setLang( 'link', 'cs', {
19 anchorName: 'Podle jména kotvy', 19 anchorName: 'Podle jména kotvy',
20 charset: 'Přiřazená znaková sada', 20 charset: 'Přiřazená znaková sada',
21 cssClasses: 'Třída stylu', 21 cssClasses: 'Třída stylu',
22 download: 'Force Download', // MISSING
23 displayText: 'Zobrazit text',
22 emailAddress: 'E-mailová adresa', 24 emailAddress: 'E-mailová adresa',
23 emailBody: 'Tělo zprávy', 25 emailBody: 'Tělo zprávy',
24 emailSubject: 'Předmět zprávy', 26 emailSubject: 'Předmět zprávy',
diff --git a/sources/plugins/link/lang/cy.js b/sources/plugins/link/lang/cy.js
index 358ec60..024b669 100644
--- a/sources/plugins/link/lang/cy.js
+++ b/sources/plugins/link/lang/cy.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'link', 'cy', { 5CKEDITOR.plugins.setLang( 'link', 'cy', {
@@ -19,6 +19,8 @@ CKEDITOR.plugins.setLang( 'link', 'cy', {
19 anchorName: 'Gan Enw\'r Angor', 19 anchorName: 'Gan Enw\'r Angor',
20 charset: 'Set Nodau\'r Adnodd Cysylltiedig', 20 charset: 'Set Nodau\'r Adnodd Cysylltiedig',
21 cssClasses: 'Dosbarthiadau Dalen Arddull', 21 cssClasses: 'Dosbarthiadau Dalen Arddull',
22 download: 'Force Download', // MISSING
23 displayText: 'Display Text', // MISSING
22 emailAddress: 'Cyfeiriad E-Bost', 24 emailAddress: 'Cyfeiriad E-Bost',
23 emailBody: 'Corff y Neges', 25 emailBody: 'Corff y Neges',
24 emailSubject: 'Testun y Neges', 26 emailSubject: 'Testun y Neges',
diff --git a/sources/plugins/link/lang/da.js b/sources/plugins/link/lang/da.js
index 7a278c4..47adf58 100644
--- a/sources/plugins/link/lang/da.js
+++ b/sources/plugins/link/lang/da.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'link', 'da', { 5CKEDITOR.plugins.setLang( 'link', 'da', {
@@ -19,6 +19,8 @@ CKEDITOR.plugins.setLang( 'link', 'da', {
19 anchorName: 'Efter ankernavn', 19 anchorName: 'Efter ankernavn',
20 charset: 'Tegnsæt', 20 charset: 'Tegnsæt',
21 cssClasses: 'Typografiark', 21 cssClasses: 'Typografiark',
22 download: 'Force Download', // MISSING
23 displayText: 'Display Text', // MISSING
22 emailAddress: 'E-mailadresse', 24 emailAddress: 'E-mailadresse',
23 emailBody: 'Besked', 25 emailBody: 'Besked',
24 emailSubject: 'Emne', 26 emailSubject: 'Emne',
diff --git a/sources/plugins/link/lang/de-ch.js b/sources/plugins/link/lang/de-ch.js
index d386d2a..eba8c7e 100644
--- a/sources/plugins/link/lang/de-ch.js
+++ b/sources/plugins/link/lang/de-ch.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'link', 'de-ch', { 5CKEDITOR.plugins.setLang( 'link', 'de-ch', {
@@ -19,6 +19,8 @@ CKEDITOR.plugins.setLang( 'link', 'de-ch', {
19 anchorName: 'Nach Ankername', 19 anchorName: 'Nach Ankername',
20 charset: 'Verknüpfter Ressourcenzeichensatz', 20 charset: 'Verknüpfter Ressourcenzeichensatz',
21 cssClasses: 'Formatvorlagenklasse', 21 cssClasses: 'Formatvorlagenklasse',
22 download: 'Force Download', // MISSING
23 displayText: 'Display Text', // MISSING
22 emailAddress: 'E-Mail-Adresse', 24 emailAddress: 'E-Mail-Adresse',
23 emailBody: 'Nachrichtentext', 25 emailBody: 'Nachrichtentext',
24 emailSubject: 'Betreffzeile', 26 emailSubject: 'Betreffzeile',
diff --git a/sources/plugins/link/lang/de.js b/sources/plugins/link/lang/de.js
index c8da86f..e73093f 100644
--- a/sources/plugins/link/lang/de.js
+++ b/sources/plugins/link/lang/de.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'link', 'de', { 5CKEDITOR.plugins.setLang( 'link', 'de', {
@@ -19,6 +19,8 @@ CKEDITOR.plugins.setLang( 'link', 'de', {
19 anchorName: 'Nach Ankername', 19 anchorName: 'Nach Ankername',
20 charset: 'Verknüpfter Ressourcenzeichensatz', 20 charset: 'Verknüpfter Ressourcenzeichensatz',
21 cssClasses: 'Formatvorlagenklasse', 21 cssClasses: 'Formatvorlagenklasse',
22 download: 'Herunterladen erzwingen',
23 displayText: 'Anzeigetext',
22 emailAddress: 'E-Mail-Adresse', 24 emailAddress: 'E-Mail-Adresse',
23 emailBody: 'Nachrichtentext', 25 emailBody: 'Nachrichtentext',
24 emailSubject: 'Betreffzeile', 26 emailSubject: 'Betreffzeile',
diff --git a/sources/plugins/link/lang/el.js b/sources/plugins/link/lang/el.js
index 53019a5..bf0fbb9 100644
--- a/sources/plugins/link/lang/el.js
+++ b/sources/plugins/link/lang/el.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'link', 'el', { 5CKEDITOR.plugins.setLang( 'link', 'el', {
@@ -19,6 +19,8 @@ CKEDITOR.plugins.setLang( 'link', 'el', {
19 anchorName: 'Βάσει του Ονόματος Άγκυρας', 19 anchorName: 'Βάσει του Ονόματος Άγκυρας',
20 charset: 'Κωδικοποίηση Χαρακτήρων Προσαρτημένης Πηγής', 20 charset: 'Κωδικοποίηση Χαρακτήρων Προσαρτημένης Πηγής',
21 cssClasses: 'Κλάσεις Φύλλων Στυλ', 21 cssClasses: 'Κλάσεις Φύλλων Στυλ',
22 download: 'Force Download', // MISSING
23 displayText: 'Display Text', // MISSING
22 emailAddress: 'Διεύθυνση E-mail', 24 emailAddress: 'Διεύθυνση E-mail',
23 emailBody: 'Κείμενο Μηνύματος', 25 emailBody: 'Κείμενο Μηνύματος',
24 emailSubject: 'Θέμα Μηνύματος', 26 emailSubject: 'Θέμα Μηνύματος',
diff --git a/sources/plugins/link/lang/en-au.js b/sources/plugins/link/lang/en-au.js
index 5e18970..f67a6f7 100644
--- a/sources/plugins/link/lang/en-au.js
+++ b/sources/plugins/link/lang/en-au.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'link', 'en-au', { 5CKEDITOR.plugins.setLang( 'link', 'en-au', {
@@ -19,6 +19,8 @@ CKEDITOR.plugins.setLang( 'link', 'en-au', {
19 anchorName: 'By Anchor Name', 19 anchorName: 'By Anchor Name',
20 charset: 'Linked Resource Charset', 20 charset: 'Linked Resource Charset',
21 cssClasses: 'Stylesheet Classes', 21 cssClasses: 'Stylesheet Classes',
22 download: 'Force Download', // MISSING
23 displayText: 'Display Text', // MISSING
22 emailAddress: 'E-Mail Address', 24 emailAddress: 'E-Mail Address',
23 emailBody: 'Message Body', 25 emailBody: 'Message Body',
24 emailSubject: 'Message Subject', 26 emailSubject: 'Message Subject',
diff --git a/sources/plugins/link/lang/en-ca.js b/sources/plugins/link/lang/en-ca.js
index fb4b6c7..636ee5c 100644
--- a/sources/plugins/link/lang/en-ca.js
+++ b/sources/plugins/link/lang/en-ca.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'link', 'en-ca', { 5CKEDITOR.plugins.setLang( 'link', 'en-ca', {
@@ -19,6 +19,8 @@ CKEDITOR.plugins.setLang( 'link', 'en-ca', {
19 anchorName: 'By Anchor Name', 19 anchorName: 'By Anchor Name',
20 charset: 'Linked Resource Charset', 20 charset: 'Linked Resource Charset',
21 cssClasses: 'Stylesheet Classes', 21 cssClasses: 'Stylesheet Classes',
22 download: 'Force Download', // MISSING
23 displayText: 'Display Text', // MISSING
22 emailAddress: 'E-Mail Address', 24 emailAddress: 'E-Mail Address',
23 emailBody: 'Message Body', 25 emailBody: 'Message Body',
24 emailSubject: 'Message Subject', 26 emailSubject: 'Message Subject',
diff --git a/sources/plugins/link/lang/en-gb.js b/sources/plugins/link/lang/en-gb.js
index a3af24c..f0f3506 100644
--- a/sources/plugins/link/lang/en-gb.js
+++ b/sources/plugins/link/lang/en-gb.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'link', 'en-gb', { 5CKEDITOR.plugins.setLang( 'link', 'en-gb', {
@@ -19,6 +19,8 @@ CKEDITOR.plugins.setLang( 'link', 'en-gb', {
19 anchorName: 'By Anchor Name', 19 anchorName: 'By Anchor Name',
20 charset: 'Linked Resource Charset', 20 charset: 'Linked Resource Charset',
21 cssClasses: 'Stylesheet Classes', 21 cssClasses: 'Stylesheet Classes',
22 download: 'Force Download', // MISSING
23 displayText: 'Display Text', // MISSING
22 emailAddress: 'E-Mail Address', 24 emailAddress: 'E-Mail Address',
23 emailBody: 'Message Body', 25 emailBody: 'Message Body',
24 emailSubject: 'Message Subject', 26 emailSubject: 'Message Subject',
diff --git a/sources/plugins/link/lang/en.js b/sources/plugins/link/lang/en.js
index 1054741..8f613de 100644
--- a/sources/plugins/link/lang/en.js
+++ b/sources/plugins/link/lang/en.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'link', 'en', { 5CKEDITOR.plugins.setLang( 'link', 'en', {
@@ -19,6 +19,8 @@ CKEDITOR.plugins.setLang( 'link', 'en', {
19 anchorName: 'By Anchor Name', 19 anchorName: 'By Anchor Name',
20 charset: 'Linked Resource Charset', 20 charset: 'Linked Resource Charset',
21 cssClasses: 'Stylesheet Classes', 21 cssClasses: 'Stylesheet Classes',
22 download: 'Force Download',
23 displayText: 'Display Text',
22 emailAddress: 'E-Mail Address', 24 emailAddress: 'E-Mail Address',
23 emailBody: 'Message Body', 25 emailBody: 'Message Body',
24 emailSubject: 'Message Subject', 26 emailSubject: 'Message Subject',
diff --git a/sources/plugins/link/lang/eo.js b/sources/plugins/link/lang/eo.js
index e0bc952..d2b6faf 100644
--- a/sources/plugins/link/lang/eo.js
+++ b/sources/plugins/link/lang/eo.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'link', 'eo', { 5CKEDITOR.plugins.setLang( 'link', 'eo', {
@@ -19,6 +19,8 @@ CKEDITOR.plugins.setLang( 'link', 'eo', {
19 anchorName: 'Per Ankronomo', 19 anchorName: 'Per Ankronomo',
20 charset: 'Signaro de la Ligita Rimedo', 20 charset: 'Signaro de la Ligita Rimedo',
21 cssClasses: 'Klasoj de Stilfolioj', 21 cssClasses: 'Klasoj de Stilfolioj',
22 download: 'Altrudi Elŝuton',
23 displayText: 'Vidigi Tekston',
22 emailAddress: 'Retpoŝto', 24 emailAddress: 'Retpoŝto',
23 emailBody: 'Mesaĝa korpo', 25 emailBody: 'Mesaĝa korpo',
24 emailSubject: 'Mesaĝa Temo', 26 emailSubject: 'Mesaĝa Temo',
diff --git a/sources/plugins/link/lang/es-mx.js b/sources/plugins/link/lang/es-mx.js
new file mode 100644
index 0000000..1c27060
--- /dev/null
+++ b/sources/plugins/link/lang/es-mx.js
@@ -0,0 +1,67 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'link', 'es-mx', {
6 acccessKey: 'Llave de acceso',
7 advanced: 'Avanzada',
8 advisoryContentType: 'Tipo de contenido consultivo',
9 advisoryTitle: 'Título asesor',
10 anchor: {
11 toolbar: 'Ancla',
12 menu: 'Editar ancla',
13 title: 'Propiedades del ancla',
14 name: 'Nombre del ancla',
15 errorName: 'Escriba el nombre del ancla',
16 remove: 'Remover ancla'
17 },
18 anchorId: 'Por Id del elemento',
19 anchorName: 'Por nombre del ancla',
20 charset: 'Recurso relacionado Charset',
21 cssClasses: 'Clases de estilo de hoja',
22 download: 'Forzar la descarga',
23 displayText: 'Mostrar texto',
24 emailAddress: 'Dirección de correo electrónico',
25 emailBody: 'Cuerpo del mensaje',
26 emailSubject: 'Asunto del mensaje',
27 id: 'Id',
28 info: 'Información del enlace',
29 langCode: 'Código del idioma',
30 langDir: 'Dirección del idioma',
31 langDirLTR: 'Izquierda a Derecha (LTR)',
32 langDirRTL: 'Derecha a Izquierda (RTL)',
33 menu: 'Editar enlace',
34 name: 'Nombre',
35 noAnchors: '(No hay anclas disponibles en el documento)',
36 noEmail: 'Escriba la dirección de correo electrónico',
37 noUrl: 'Escriba la URL del enlace',
38 other: '<other>',
39 popupDependent: 'Dependiente (Netscape)',
40 popupFeatures: 'Ventana emergente',
41 popupFullScreen: 'Pantalla completa (IE)',
42 popupLeft: 'Posición Izquierda',
43 popupLocationBar: 'Ubicación de la barra',
44 popupMenuBar: 'Barra de menú',
45 popupResizable: 'Redimensionable',
46 popupScrollBars: 'Barras de desplazamiento',
47 popupStatusBar: 'Barra de estado',
48 popupToolbar: 'Barra de herramienta',
49 popupTop: 'Posición superior',
50 rel: 'Relación',
51 selectAnchor: 'Selecciona un ancla',
52 styles: 'Estilo',
53 tabIndex: 'Indice de tabulación',
54 target: 'Objetivo',
55 targetFrame: '<frame>',
56 targetFrameName: 'Nombre del marco de destino',
57 targetPopup: '<popup window>',
58 targetPopupName: 'Nombre de ventana emergente',
59 title: 'Enlace',
60 toAnchor: 'Enlace al ancla en el texto',
61 toEmail: 'Correo electrónico',
62 toUrl: 'URL',
63 toolbar: 'Enlace',
64 type: 'Tipo de enlace',
65 unlink: 'Desconectar',
66 upload: 'Subir'
67} );
diff --git a/sources/plugins/link/lang/es.js b/sources/plugins/link/lang/es.js
index d17edbc..700ad86 100644
--- a/sources/plugins/link/lang/es.js
+++ b/sources/plugins/link/lang/es.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'link', 'es', { 5CKEDITOR.plugins.setLang( 'link', 'es', {
@@ -19,6 +19,8 @@ CKEDITOR.plugins.setLang( 'link', 'es', {
19 anchorName: 'Por Nombre de Referencia', 19 anchorName: 'Por Nombre de Referencia',
20 charset: 'Fuente de caracteres vinculado', 20 charset: 'Fuente de caracteres vinculado',
21 cssClasses: 'Clases de hojas de estilo', 21 cssClasses: 'Clases de hojas de estilo',
22 download: 'Force Download', // MISSING
23 displayText: 'Display Text', // MISSING
22 emailAddress: 'Dirección de E-Mail', 24 emailAddress: 'Dirección de E-Mail',
23 emailBody: 'Cuerpo del Mensaje', 25 emailBody: 'Cuerpo del Mensaje',
24 emailSubject: 'Título del Mensaje', 26 emailSubject: 'Título del Mensaje',
diff --git a/sources/plugins/link/lang/et.js b/sources/plugins/link/lang/et.js
index 09db6ca..7e31aa6 100644
--- a/sources/plugins/link/lang/et.js
+++ b/sources/plugins/link/lang/et.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'link', 'et', { 5CKEDITOR.plugins.setLang( 'link', 'et', {
@@ -19,6 +19,8 @@ CKEDITOR.plugins.setLang( 'link', 'et', {
19 anchorName: 'Ankru nime järgi', 19 anchorName: 'Ankru nime järgi',
20 charset: 'Lingitud ressursi märgistik', 20 charset: 'Lingitud ressursi märgistik',
21 cssClasses: 'Stiilistiku klassid', 21 cssClasses: 'Stiilistiku klassid',
22 download: 'Force Download', // MISSING
23 displayText: 'Display Text', // MISSING
22 emailAddress: 'E-posti aadress', 24 emailAddress: 'E-posti aadress',
23 emailBody: 'Sõnumi tekst', 25 emailBody: 'Sõnumi tekst',
24 emailSubject: 'Sõnumi teema', 26 emailSubject: 'Sõnumi teema',
diff --git a/sources/plugins/link/lang/eu.js b/sources/plugins/link/lang/eu.js
index f3415ab..7a2727e 100644
--- a/sources/plugins/link/lang/eu.js
+++ b/sources/plugins/link/lang/eu.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'link', 'eu', { 5CKEDITOR.plugins.setLang( 'link', 'eu', {
@@ -19,6 +19,8 @@ CKEDITOR.plugins.setLang( 'link', 'eu', {
19 anchorName: 'Aingura-izenaren arabera', 19 anchorName: 'Aingura-izenaren arabera',
20 charset: 'Estekatutako baliabide karaktere-jokoa', 20 charset: 'Estekatutako baliabide karaktere-jokoa',
21 cssClasses: 'Estilo-orriko klaseak', 21 cssClasses: 'Estilo-orriko klaseak',
22 download: 'Force Download', // MISSING
23 displayText: 'Bistaratu testua',
22 emailAddress: 'E-posta helbidea', 24 emailAddress: 'E-posta helbidea',
23 emailBody: 'Mezuaren gorputza', 25 emailBody: 'Mezuaren gorputza',
24 emailSubject: 'Mezuaren gaia', 26 emailSubject: 'Mezuaren gaia',
diff --git a/sources/plugins/link/lang/fa.js b/sources/plugins/link/lang/fa.js
index fa6dd5a..525d899 100644
--- a/sources/plugins/link/lang/fa.js
+++ b/sources/plugins/link/lang/fa.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'link', 'fa', { 5CKEDITOR.plugins.setLang( 'link', 'fa', {
@@ -19,6 +19,8 @@ CKEDITOR.plugins.setLang( 'link', 'fa', {
19 anchorName: 'با نام لنگر', 19 anchorName: 'با نام لنگر',
20 charset: 'نویسه​گان منبع پیوند شده', 20 charset: 'نویسه​گان منبع پیوند شده',
21 cssClasses: 'کلاس​های شیوه​نامه(Stylesheet)', 21 cssClasses: 'کلاس​های شیوه​نامه(Stylesheet)',
22 download: 'Force Download', // MISSING
23 displayText: 'Display Text', // MISSING
22 emailAddress: 'نشانی پست الکترونیکی', 24 emailAddress: 'نشانی پست الکترونیکی',
23 emailBody: 'متن پیام', 25 emailBody: 'متن پیام',
24 emailSubject: 'موضوع پیام', 26 emailSubject: 'موضوع پیام',
diff --git a/sources/plugins/link/lang/fi.js b/sources/plugins/link/lang/fi.js
index eedf64f..9ab5224 100644
--- a/sources/plugins/link/lang/fi.js
+++ b/sources/plugins/link/lang/fi.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'link', 'fi', { 5CKEDITOR.plugins.setLang( 'link', 'fi', {
@@ -19,6 +19,8 @@ CKEDITOR.plugins.setLang( 'link', 'fi', {
19 anchorName: 'Ankkurin nimen mukaan', 19 anchorName: 'Ankkurin nimen mukaan',
20 charset: 'Linkitetty kirjaimisto', 20 charset: 'Linkitetty kirjaimisto',
21 cssClasses: 'Tyyliluokat', 21 cssClasses: 'Tyyliluokat',
22 download: 'Force Download', // MISSING
23 displayText: 'Display Text', // MISSING
22 emailAddress: 'Sähköpostiosoite', 24 emailAddress: 'Sähköpostiosoite',
23 emailBody: 'Viesti', 25 emailBody: 'Viesti',
24 emailSubject: 'Aihe', 26 emailSubject: 'Aihe',
diff --git a/sources/plugins/link/lang/fo.js b/sources/plugins/link/lang/fo.js
index d46eed4..90ab1ed 100644
--- a/sources/plugins/link/lang/fo.js
+++ b/sources/plugins/link/lang/fo.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'link', 'fo', { 5CKEDITOR.plugins.setLang( 'link', 'fo', {
@@ -19,6 +19,8 @@ CKEDITOR.plugins.setLang( 'link', 'fo', {
19 anchorName: 'Eftir navni á marknasteini', 19 anchorName: 'Eftir navni á marknasteini',
20 charset: 'Atknýtt teknsett', 20 charset: 'Atknýtt teknsett',
21 cssClasses: 'Typografi klassar', 21 cssClasses: 'Typografi klassar',
22 download: 'Force Download', // MISSING
23 displayText: 'Display Text', // MISSING
22 emailAddress: 'Teldupost-adressa', 24 emailAddress: 'Teldupost-adressa',
23 emailBody: 'Breyðtekstur', 25 emailBody: 'Breyðtekstur',
24 emailSubject: 'Evni', 26 emailSubject: 'Evni',
diff --git a/sources/plugins/link/lang/fr-ca.js b/sources/plugins/link/lang/fr-ca.js
index 816ad2b..ddf2dde 100644
--- a/sources/plugins/link/lang/fr-ca.js
+++ b/sources/plugins/link/lang/fr-ca.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'link', 'fr-ca', { 5CKEDITOR.plugins.setLang( 'link', 'fr-ca', {
@@ -19,6 +19,8 @@ CKEDITOR.plugins.setLang( 'link', 'fr-ca', {
19 anchorName: 'Par nom', 19 anchorName: 'Par nom',
20 charset: 'Encodage de la cible', 20 charset: 'Encodage de la cible',
21 cssClasses: 'Classes CSS', 21 cssClasses: 'Classes CSS',
22 download: 'Force Download', // MISSING
23 displayText: 'Display Text', // MISSING
22 emailAddress: 'Courriel', 24 emailAddress: 'Courriel',
23 emailBody: 'Corps du message', 25 emailBody: 'Corps du message',
24 emailSubject: 'Objet du message', 26 emailSubject: 'Objet du message',
diff --git a/sources/plugins/link/lang/fr.js b/sources/plugins/link/lang/fr.js
index fe8755d..d40d8d9 100644
--- a/sources/plugins/link/lang/fr.js
+++ b/sources/plugins/link/lang/fr.js
@@ -1,15 +1,15 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'link', 'fr', { 5CKEDITOR.plugins.setLang( 'link', 'fr', {
6 acccessKey: 'Touche d\'accessibilité', 6 acccessKey: 'Touche d\'accessibilité',
7 advanced: 'Avancé', 7 advanced: 'Avancé',
8 advisoryContentType: 'Type de contenu (ex: text/html)', 8 advisoryContentType: 'Type de contenu (indicatif)',
9 advisoryTitle: 'Description (title)', 9 advisoryTitle: 'Infobulle',
10 anchor: { 10 anchor: {
11 toolbar: 'Ancre', 11 toolbar: 'Ancre',
12 menu: 'Editer l\'ancre', 12 menu: 'Modifier l\'ancre',
13 title: 'Propriétés de l\'ancre', 13 title: 'Propriétés de l\'ancre',
14 name: 'Nom de l\'ancre', 14 name: 'Nom de l\'ancre',
15 errorName: 'Veuillez entrer le nom de l\'ancre.', 15 errorName: 'Veuillez entrer le nom de l\'ancre.',
@@ -17,49 +17,51 @@ CKEDITOR.plugins.setLang( 'link', 'fr', {
17 }, 17 },
18 anchorId: 'Par ID d\'élément', 18 anchorId: 'Par ID d\'élément',
19 anchorName: 'Par nom d\'ancre', 19 anchorName: 'Par nom d\'ancre',
20 charset: 'Charset de la cible', 20 charset: 'Encodage de la ressource liée',
21 cssClasses: 'Classe CSS', 21 cssClasses: 'Classes de style',
22 emailAddress: 'Adresse E-Mail', 22 download: 'Forcer le téléchargement',
23 displayText: 'Afficher le texte',
24 emailAddress: 'Adresse électronique',
23 emailBody: 'Corps du message', 25 emailBody: 'Corps du message',
24 emailSubject: 'Sujet du message', 26 emailSubject: 'Sujet du message',
25 id: 'Id', 27 id: 'ID',
26 info: 'Infos sur le lien', 28 info: 'Informations sur le lien',
27 langCode: 'Code de langue', 29 langCode: 'Code de langue',
28 langDir: 'Sens d\'écriture', 30 langDir: 'Sens d\'écriture',
29 langDirLTR: 'Gauche à droite', 31 langDirLTR: 'Gauche à droite',
30 langDirRTL: 'Droite à gauche', 32 langDirRTL: 'Droite à gauche (RTL)',
31 menu: 'Editer le lien', 33 menu: 'Modifier le lien',
32 name: 'Nom', 34 name: 'Nom',
33 noAnchors: '(Aucune ancre disponible dans ce document)', 35 noAnchors: '(Aucune ancre disponible dans ce document)',
34 noEmail: 'Veuillez entrer l\'adresse e-mail', 36 noEmail: 'Veuillez entrer l\'adresse électronique',
35 noUrl: 'Veuillez entrer l\'adresse du lien', 37 noUrl: 'Veuillez entrer l\'URL du lien',
36 other: '<autre>', 38 other: '<autre>',
37 popupDependent: 'Dépendante (Netscape)', 39 popupDependent: 'Dépendante (Netscape)',
38 popupFeatures: 'Options de la fenêtre popup', 40 popupFeatures: 'Caractéristiques de la fenêtre surgissante',
39 popupFullScreen: 'Plein écran (IE)', 41 popupFullScreen: 'Plein écran (IE)',
40 popupLeft: 'Position gauche', 42 popupLeft: 'À gauche',
41 popupLocationBar: 'Barre d\'adresse', 43 popupLocationBar: 'Barre d\'adresse',
42 popupMenuBar: 'Barre de menu', 44 popupMenuBar: 'Barre de menu',
43 popupResizable: 'Redimensionnable', 45 popupResizable: 'Redimensionnable',
44 popupScrollBars: 'Barres de défilement', 46 popupScrollBars: 'Barres de défilement',
45 popupStatusBar: 'Barre de status', 47 popupStatusBar: 'Barre d\'état',
46 popupToolbar: 'Barre d\'outils', 48 popupToolbar: 'Barre d\'outils',
47 popupTop: 'Position haute', 49 popupTop: 'En haut',
48 rel: 'Relation', 50 rel: 'Relation',
49 selectAnchor: 'Sélectionner l\'ancre', 51 selectAnchor: 'Sélectionner une ancre',
50 styles: 'Style', 52 styles: 'Style',
51 tabIndex: 'Index de tabulation', 53 tabIndex: 'Indice de tabulation',
52 target: 'Cible', 54 target: 'Cible',
53 targetFrame: '<cadre>', 55 targetFrame: '<cadre>',
54 targetFrameName: 'Nom du Cadre destination', 56 targetFrameName: 'Nom du cadre affecté',
55 targetPopup: '<fenêtre popup>', 57 targetPopup: '<fenêtre surgissante>',
56 targetPopupName: 'Nom de la fenêtre popup', 58 targetPopupName: 'Nom de la fenêtre surgissante',
57 title: 'Lien', 59 title: 'Lien',
58 toAnchor: 'Ancre', 60 toAnchor: 'Ancre',
59 toEmail: 'E-mail', 61 toEmail: 'Courriel',
60 toUrl: 'URL', 62 toUrl: 'URL',
61 toolbar: 'Lien', 63 toolbar: 'Lien',
62 type: 'Type de lien', 64 type: 'Type de lien',
63 unlink: 'Supprimer le lien', 65 unlink: 'Supprimer le lien',
64 upload: 'Envoyer' 66 upload: 'Téléverser'
65} ); 67} );
diff --git a/sources/plugins/link/lang/gl.js b/sources/plugins/link/lang/gl.js
index bf55977..a7d7b0b 100644
--- a/sources/plugins/link/lang/gl.js
+++ b/sources/plugins/link/lang/gl.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'link', 'gl', { 5CKEDITOR.plugins.setLang( 'link', 'gl', {
@@ -19,6 +19,8 @@ CKEDITOR.plugins.setLang( 'link', 'gl', {
19 anchorName: 'Polo nome da ancoraxe', 19 anchorName: 'Polo nome da ancoraxe',
20 charset: 'Codificación do recurso ligado', 20 charset: 'Codificación do recurso ligado',
21 cssClasses: 'Clases da folla de estilos', 21 cssClasses: 'Clases da folla de estilos',
22 download: 'Forzar a descarga',
23 displayText: 'Amosar o texto',
22 emailAddress: 'Enderezo de correo', 24 emailAddress: 'Enderezo de correo',
23 emailBody: 'Corpo da mensaxe', 25 emailBody: 'Corpo da mensaxe',
24 emailSubject: 'Asunto da mensaxe', 26 emailSubject: 'Asunto da mensaxe',
diff --git a/sources/plugins/link/lang/gu.js b/sources/plugins/link/lang/gu.js
index c054450..2bbf577 100644
--- a/sources/plugins/link/lang/gu.js
+++ b/sources/plugins/link/lang/gu.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'link', 'gu', { 5CKEDITOR.plugins.setLang( 'link', 'gu', {
@@ -19,6 +19,8 @@ CKEDITOR.plugins.setLang( 'link', 'gu', {
19 anchorName: 'ઍંકર નામથી પસંદ કરો', 19 anchorName: 'ઍંકર નામથી પસંદ કરો',
20 charset: 'લિંક રિસૉર્સ કૅરિક્ટર સેટ', 20 charset: 'લિંક રિસૉર્સ કૅરિક્ટર સેટ',
21 cssClasses: 'સ્ટાઇલ-શીટ ક્લાસ', 21 cssClasses: 'સ્ટાઇલ-શીટ ક્લાસ',
22 download: 'Force Download', // MISSING
23 displayText: 'Display Text', // MISSING
22 emailAddress: 'ઈ-મેલ સરનામું', 24 emailAddress: 'ઈ-મેલ સરનામું',
23 emailBody: 'સંદેશ', 25 emailBody: 'સંદેશ',
24 emailSubject: 'ઈ-મેલ વિષય', 26 emailSubject: 'ઈ-મેલ વિષય',
diff --git a/sources/plugins/link/lang/he.js b/sources/plugins/link/lang/he.js
index d6b67e1..a00f60a 100644
--- a/sources/plugins/link/lang/he.js
+++ b/sources/plugins/link/lang/he.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'link', 'he', { 5CKEDITOR.plugins.setLang( 'link', 'he', {
@@ -19,6 +19,8 @@ CKEDITOR.plugins.setLang( 'link', 'he', {
19 anchorName: 'עפ"י שם העוגן', 19 anchorName: 'עפ"י שם העוגן',
20 charset: 'קידוד המשאב המקושר', 20 charset: 'קידוד המשאב המקושר',
21 cssClasses: 'גיליונות עיצוב קבוצות', 21 cssClasses: 'גיליונות עיצוב קבוצות',
22 download: 'Force Download', // MISSING
23 displayText: 'Display Text', // MISSING
22 emailAddress: 'כתובת הדוא"ל', 24 emailAddress: 'כתובת הדוא"ל',
23 emailBody: 'גוף ההודעה', 25 emailBody: 'גוף ההודעה',
24 emailSubject: 'נושא ההודעה', 26 emailSubject: 'נושא ההודעה',
diff --git a/sources/plugins/link/lang/hi.js b/sources/plugins/link/lang/hi.js
index 7c8939b..88b7df9 100644
--- a/sources/plugins/link/lang/hi.js
+++ b/sources/plugins/link/lang/hi.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'link', 'hi', { 5CKEDITOR.plugins.setLang( 'link', 'hi', {
@@ -19,6 +19,8 @@ CKEDITOR.plugins.setLang( 'link', 'hi', {
19 anchorName: 'ऐंकर नाम से', 19 anchorName: 'ऐंकर नाम से',
20 charset: 'लिंक रिसोर्स करॅक्टर सॅट', 20 charset: 'लिंक रिसोर्स करॅक्टर सॅट',
21 cssClasses: 'स्टाइल-शीट क्लास', 21 cssClasses: 'स्टाइल-शीट क्लास',
22 download: 'Force Download', // MISSING
23 displayText: 'Display Text', // MISSING
22 emailAddress: 'ई-मेल पता', 24 emailAddress: 'ई-मेल पता',
23 emailBody: 'संदेश', 25 emailBody: 'संदेश',
24 emailSubject: 'संदेश विषय', 26 emailSubject: 'संदेश विषय',
diff --git a/sources/plugins/link/lang/hr.js b/sources/plugins/link/lang/hr.js
index 1d9f224..5bb1b88 100644
--- a/sources/plugins/link/lang/hr.js
+++ b/sources/plugins/link/lang/hr.js
@@ -1,12 +1,12 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'link', 'hr', { 5CKEDITOR.plugins.setLang( 'link', 'hr', {
6 acccessKey: 'Pristupna tipka', 6 acccessKey: 'Pristupna tipka',
7 advanced: 'Napredno', 7 advanced: 'Napredno',
8 advisoryContentType: 'Advisory vrsta sadržaja', 8 advisoryContentType: 'Savjetodavna vrsta sadržaja',
9 advisoryTitle: 'Advisory naslov', 9 advisoryTitle: 'Savjetodavni naslov',
10 anchor: { 10 anchor: {
11 toolbar: 'Ubaci/promijeni sidro', 11 toolbar: 'Ubaci/promijeni sidro',
12 menu: 'Svojstva sidra', 12 menu: 'Svojstva sidra',
@@ -19,6 +19,8 @@ CKEDITOR.plugins.setLang( 'link', 'hr', {
19 anchorName: 'Po nazivu sidra', 19 anchorName: 'Po nazivu sidra',
20 charset: 'Kodna stranica povezanih resursa', 20 charset: 'Kodna stranica povezanih resursa',
21 cssClasses: 'Stylesheet klase', 21 cssClasses: 'Stylesheet klase',
22 download: 'Preuzmi na silu',
23 displayText: 'Prikaži tekst',
22 emailAddress: 'E-Mail adresa', 24 emailAddress: 'E-Mail adresa',
23 emailBody: 'Sadržaj poruke', 25 emailBody: 'Sadržaj poruke',
24 emailSubject: 'Naslov', 26 emailSubject: 'Naslov',
@@ -54,12 +56,12 @@ CKEDITOR.plugins.setLang( 'link', 'hr', {
54 targetFrameName: 'Ime ciljnog okvira', 56 targetFrameName: 'Ime ciljnog okvira',
55 targetPopup: '<popup prozor>', 57 targetPopup: '<popup prozor>',
56 targetPopupName: 'Naziv popup prozora', 58 targetPopupName: 'Naziv popup prozora',
57 title: 'Link', 59 title: 'Veza',
58 toAnchor: 'Sidro na ovoj stranici', 60 toAnchor: 'Sidro na ovoj stranici',
59 toEmail: 'E-Mail', 61 toEmail: 'E-Mail',
60 toUrl: 'URL', 62 toUrl: 'URL',
61 toolbar: 'Ubaci/promijeni link', 63 toolbar: 'Ubaci/promijeni vezu',
62 type: 'Link vrsta', 64 type: 'Vrsta veze',
63 unlink: 'Ukloni link', 65 unlink: 'Ukloni vezu',
64 upload: 'Pošalji' 66 upload: 'Pošalji'
65} ); 67} );
diff --git a/sources/plugins/link/lang/hu.js b/sources/plugins/link/lang/hu.js
index dd7c7ac..102ca56 100644
--- a/sources/plugins/link/lang/hu.js
+++ b/sources/plugins/link/lang/hu.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'link', 'hu', { 5CKEDITOR.plugins.setLang( 'link', 'hu', {
@@ -19,6 +19,8 @@ CKEDITOR.plugins.setLang( 'link', 'hu', {
19 anchorName: 'Horgony név szerint', 19 anchorName: 'Horgony név szerint',
20 charset: 'Hivatkozott tartalom kódlapja', 20 charset: 'Hivatkozott tartalom kódlapja',
21 cssClasses: 'Stíluskészlet', 21 cssClasses: 'Stíluskészlet',
22 download: 'Kötelező letöltés',
23 displayText: 'Megjelenített szöveg',
22 emailAddress: 'E-Mail cím', 24 emailAddress: 'E-Mail cím',
23 emailBody: 'Üzenet', 25 emailBody: 'Üzenet',
24 emailSubject: 'Üzenet tárgya', 26 emailSubject: 'Üzenet tárgya',
diff --git a/sources/plugins/link/lang/id.js b/sources/plugins/link/lang/id.js
index ff8e559..e255eb5 100644
--- a/sources/plugins/link/lang/id.js
+++ b/sources/plugins/link/lang/id.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'link', 'id', { 5CKEDITOR.plugins.setLang( 'link', 'id', {
@@ -19,6 +19,8 @@ CKEDITOR.plugins.setLang( 'link', 'id', {
19 anchorName: 'By Anchor Name', // MISSING 19 anchorName: 'By Anchor Name', // MISSING
20 charset: 'Linked Resource Charset', // MISSING 20 charset: 'Linked Resource Charset', // MISSING
21 cssClasses: 'Kelas Stylesheet', 21 cssClasses: 'Kelas Stylesheet',
22 download: 'Force Download', // MISSING
23 displayText: 'Display Text', // MISSING
22 emailAddress: 'Alamat E-mail', 24 emailAddress: 'Alamat E-mail',
23 emailBody: 'Message Body', // MISSING 25 emailBody: 'Message Body', // MISSING
24 emailSubject: 'Judul Pesan', 26 emailSubject: 'Judul Pesan',
diff --git a/sources/plugins/link/lang/is.js b/sources/plugins/link/lang/is.js
index 3abcded..ccdea0a 100644
--- a/sources/plugins/link/lang/is.js
+++ b/sources/plugins/link/lang/is.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'link', 'is', { 5CKEDITOR.plugins.setLang( 'link', 'is', {
@@ -19,6 +19,8 @@ CKEDITOR.plugins.setLang( 'link', 'is', {
19 anchorName: 'Eftir akkerisnafni', 19 anchorName: 'Eftir akkerisnafni',
20 charset: 'Táknróf', 20 charset: 'Táknróf',
21 cssClasses: 'Stílsniðsflokkur', 21 cssClasses: 'Stílsniðsflokkur',
22 download: 'Force Download', // MISSING
23 displayText: 'Display Text', // MISSING
22 emailAddress: 'Netfang', 24 emailAddress: 'Netfang',
23 emailBody: 'Meginmál', 25 emailBody: 'Meginmál',
24 emailSubject: 'Efni', 26 emailSubject: 'Efni',
diff --git a/sources/plugins/link/lang/it.js b/sources/plugins/link/lang/it.js
index 8130e3b..b6b93bf 100644
--- a/sources/plugins/link/lang/it.js
+++ b/sources/plugins/link/lang/it.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'link', 'it', { 5CKEDITOR.plugins.setLang( 'link', 'it', {
@@ -19,6 +19,8 @@ CKEDITOR.plugins.setLang( 'link', 'it', {
19 anchorName: 'Per Nome', 19 anchorName: 'Per Nome',
20 charset: 'Set di caretteri della risorsa collegata', 20 charset: 'Set di caretteri della risorsa collegata',
21 cssClasses: 'Nome classe CSS', 21 cssClasses: 'Nome classe CSS',
22 download: 'Forza scaricamento',
23 displayText: 'Mostra testo',
22 emailAddress: 'Indirizzo E-Mail', 24 emailAddress: 'Indirizzo E-Mail',
23 emailBody: 'Corpo del messaggio', 25 emailBody: 'Corpo del messaggio',
24 emailSubject: 'Oggetto del messaggio', 26 emailSubject: 'Oggetto del messaggio',
diff --git a/sources/plugins/link/lang/ja.js b/sources/plugins/link/lang/ja.js
index dc0ca23..342025f 100644
--- a/sources/plugins/link/lang/ja.js
+++ b/sources/plugins/link/lang/ja.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'link', 'ja', { 5CKEDITOR.plugins.setLang( 'link', 'ja', {
@@ -19,6 +19,8 @@ CKEDITOR.plugins.setLang( 'link', 'ja', {
19 anchorName: 'アンカー名', 19 anchorName: 'アンカー名',
20 charset: 'リンク先のcharset', 20 charset: 'リンク先のcharset',
21 cssClasses: 'スタイルシートクラス', 21 cssClasses: 'スタイルシートクラス',
22 download: '強制的にダウンロード',
23 displayText: '表示文字',
22 emailAddress: 'E-Mail アドレス', 24 emailAddress: 'E-Mail アドレス',
23 emailBody: '本文', 25 emailBody: '本文',
24 emailSubject: '件名', 26 emailSubject: '件名',
diff --git a/sources/plugins/link/lang/ka.js b/sources/plugins/link/lang/ka.js
index c461a7f..439c43d 100644
--- a/sources/plugins/link/lang/ka.js
+++ b/sources/plugins/link/lang/ka.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'link', 'ka', { 5CKEDITOR.plugins.setLang( 'link', 'ka', {
@@ -19,6 +19,8 @@ CKEDITOR.plugins.setLang( 'link', 'ka', {
19 anchorName: 'ღუზის სახელით', 19 anchorName: 'ღუზის სახელით',
20 charset: 'კოდირება', 20 charset: 'კოდირება',
21 cssClasses: 'CSS კლასი', 21 cssClasses: 'CSS კლასი',
22 download: 'Force Download', // MISSING
23 displayText: 'Display Text', // MISSING
22 emailAddress: 'ელფოსტის მისამართები', 24 emailAddress: 'ელფოსტის მისამართები',
23 emailBody: 'წერილის ტექსტი', 25 emailBody: 'წერილის ტექსტი',
24 emailSubject: 'წერილის სათაური', 26 emailSubject: 'წერილის სათაური',
diff --git a/sources/plugins/link/lang/km.js b/sources/plugins/link/lang/km.js
index d801953..5d0be03 100644
--- a/sources/plugins/link/lang/km.js
+++ b/sources/plugins/link/lang/km.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'link', 'km', { 5CKEDITOR.plugins.setLang( 'link', 'km', {
@@ -19,6 +19,8 @@ CKEDITOR.plugins.setLang( 'link', 'km', {
19 anchorName: 'តាម​ឈ្មោះ​យុថ្កា', 19 anchorName: 'តាម​ឈ្មោះ​យុថ្កា',
20 charset: 'លេខកូតអក្សររបស់ឈ្នាប់', 20 charset: 'លេខកូតអក្សររបស់ឈ្នាប់',
21 cssClasses: 'Stylesheet Classes', 21 cssClasses: 'Stylesheet Classes',
22 download: 'Force Download', // MISSING
23 displayText: 'Display Text', // MISSING
22 emailAddress: 'អាសយដ្ឋាន​អ៊ីមែល', 24 emailAddress: 'អាសយដ្ឋាន​អ៊ីមែល',
23 emailBody: 'តួ​អត្ថបទ', 25 emailBody: 'តួ​អត្ថបទ',
24 emailSubject: 'ប្រធានបទ​សារ', 26 emailSubject: 'ប្រធានបទ​សារ',
diff --git a/sources/plugins/link/lang/ko.js b/sources/plugins/link/lang/ko.js
index 2a83a41..894ac62 100644
--- a/sources/plugins/link/lang/ko.js
+++ b/sources/plugins/link/lang/ko.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'link', 'ko', { 5CKEDITOR.plugins.setLang( 'link', 'ko', {
@@ -19,6 +19,8 @@ CKEDITOR.plugins.setLang( 'link', 'ko', {
19 anchorName: '책갈피 이름', 19 anchorName: '책갈피 이름',
20 charset: '링크된 자료 문자열 인코딩', 20 charset: '링크된 자료 문자열 인코딩',
21 cssClasses: '스타일시트 클래스', 21 cssClasses: '스타일시트 클래스',
22 download: '강제 다운로드',
23 displayText: '보이는 글자',
22 emailAddress: '이메일 주소', 24 emailAddress: '이메일 주소',
23 emailBody: '메시지 내용', 25 emailBody: '메시지 내용',
24 emailSubject: '메시지 제목', 26 emailSubject: '메시지 제목',
diff --git a/sources/plugins/link/lang/ku.js b/sources/plugins/link/lang/ku.js
index dbcad9f..ad06cd9 100644
--- a/sources/plugins/link/lang/ku.js
+++ b/sources/plugins/link/lang/ku.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'link', 'ku', { 5CKEDITOR.plugins.setLang( 'link', 'ku', {
@@ -19,6 +19,8 @@ CKEDITOR.plugins.setLang( 'link', 'ku', {
19 anchorName: 'بەپێی ناوی لەنگەر', 19 anchorName: 'بەپێی ناوی لەنگەر',
20 charset: 'بەستەری سەرچاوەی نووسە', 20 charset: 'بەستەری سەرچاوەی نووسە',
21 cssClasses: 'شێوازی چینی پەڕه', 21 cssClasses: 'شێوازی چینی پەڕه',
22 download: 'داگرتنی بەهێز',
23 displayText: 'پیشاندانی دەق',
22 emailAddress: 'ناونیشانی ئیمەیل', 24 emailAddress: 'ناونیشانی ئیمەیل',
23 emailBody: 'ناوەڕۆکی نامە', 25 emailBody: 'ناوەڕۆکی نامە',
24 emailSubject: 'بابەتی نامە', 26 emailSubject: 'بابەتی نامە',
diff --git a/sources/plugins/link/lang/lt.js b/sources/plugins/link/lang/lt.js
index db2ed72..27aa8b7 100644
--- a/sources/plugins/link/lang/lt.js
+++ b/sources/plugins/link/lang/lt.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'link', 'lt', { 5CKEDITOR.plugins.setLang( 'link', 'lt', {
@@ -19,6 +19,8 @@ CKEDITOR.plugins.setLang( 'link', 'lt', {
19 anchorName: 'Pagal žymės vardą', 19 anchorName: 'Pagal žymės vardą',
20 charset: 'Susietų išteklių simbolių lentelė', 20 charset: 'Susietų išteklių simbolių lentelė',
21 cssClasses: 'Stilių lentelės klasės', 21 cssClasses: 'Stilių lentelės klasės',
22 download: 'Force Download', // MISSING
23 displayText: 'Display Text', // MISSING
22 emailAddress: 'El.pašto adresas', 24 emailAddress: 'El.pašto adresas',
23 emailBody: 'Žinutės turinys', 25 emailBody: 'Žinutės turinys',
24 emailSubject: 'Žinutės tema', 26 emailSubject: 'Žinutės tema',
diff --git a/sources/plugins/link/lang/lv.js b/sources/plugins/link/lang/lv.js
index 8e3c649..ef8a3f2 100644
--- a/sources/plugins/link/lang/lv.js
+++ b/sources/plugins/link/lang/lv.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'link', 'lv', { 5CKEDITOR.plugins.setLang( 'link', 'lv', {
@@ -19,6 +19,8 @@ CKEDITOR.plugins.setLang( 'link', 'lv', {
19 anchorName: 'Pēc iezīmes nosaukuma', 19 anchorName: 'Pēc iezīmes nosaukuma',
20 charset: 'Pievienotā resursa kodējums', 20 charset: 'Pievienotā resursa kodējums',
21 cssClasses: 'Stilu saraksta klases', 21 cssClasses: 'Stilu saraksta klases',
22 download: 'Force Download', // MISSING
23 displayText: 'Display Text', // MISSING
22 emailAddress: 'E-pasta adrese', 24 emailAddress: 'E-pasta adrese',
23 emailBody: 'Ziņas saturs', 25 emailBody: 'Ziņas saturs',
24 emailSubject: 'Ziņas tēma', 26 emailSubject: 'Ziņas tēma',
diff --git a/sources/plugins/link/lang/mk.js b/sources/plugins/link/lang/mk.js
index 502f29c..5fb9655 100644
--- a/sources/plugins/link/lang/mk.js
+++ b/sources/plugins/link/lang/mk.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'link', 'mk', { 5CKEDITOR.plugins.setLang( 'link', 'mk', {
@@ -19,6 +19,8 @@ CKEDITOR.plugins.setLang( 'link', 'mk', {
19 anchorName: 'By Anchor Name', // MISSING 19 anchorName: 'By Anchor Name', // MISSING
20 charset: 'Linked Resource Charset', // MISSING 20 charset: 'Linked Resource Charset', // MISSING
21 cssClasses: 'Stylesheet Classes', // MISSING 21 cssClasses: 'Stylesheet Classes', // MISSING
22 download: 'Force Download', // MISSING
23 displayText: 'Display Text', // MISSING
22 emailAddress: 'E-Mail Address', // MISSING 24 emailAddress: 'E-Mail Address', // MISSING
23 emailBody: 'Message Body', // MISSING 25 emailBody: 'Message Body', // MISSING
24 emailSubject: 'Message Subject', // MISSING 26 emailSubject: 'Message Subject', // MISSING
diff --git a/sources/plugins/link/lang/mn.js b/sources/plugins/link/lang/mn.js
index 8935a8f..ed159c7 100644
--- a/sources/plugins/link/lang/mn.js
+++ b/sources/plugins/link/lang/mn.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'link', 'mn', { 5CKEDITOR.plugins.setLang( 'link', 'mn', {
@@ -19,6 +19,8 @@ CKEDITOR.plugins.setLang( 'link', 'mn', {
19 anchorName: 'Зангуугийн нэрээр', 19 anchorName: 'Зангуугийн нэрээр',
20 charset: 'Тэмдэгт оноох нөөцөд холбогдсон', 20 charset: 'Тэмдэгт оноох нөөцөд холбогдсон',
21 cssClasses: 'Stylesheet классууд', 21 cssClasses: 'Stylesheet классууд',
22 download: 'Force Download', // MISSING
23 displayText: 'Display Text', // MISSING
22 emailAddress: 'Э-шуудангийн хаяг', 24 emailAddress: 'Э-шуудангийн хаяг',
23 emailBody: 'Зурвасны их бие', 25 emailBody: 'Зурвасны их бие',
24 emailSubject: 'Зурвасны гарчиг', 26 emailSubject: 'Зурвасны гарчиг',
diff --git a/sources/plugins/link/lang/ms.js b/sources/plugins/link/lang/ms.js
index b244ba6..9a2e499 100644
--- a/sources/plugins/link/lang/ms.js
+++ b/sources/plugins/link/lang/ms.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'link', 'ms', { 5CKEDITOR.plugins.setLang( 'link', 'ms', {
@@ -19,6 +19,8 @@ CKEDITOR.plugins.setLang( 'link', 'ms', {
19 anchorName: 'dengan menggunakan nama pautan', 19 anchorName: 'dengan menggunakan nama pautan',
20 charset: 'Linked Resource Charset', 20 charset: 'Linked Resource Charset',
21 cssClasses: 'Kelas-kelas Stylesheet', 21 cssClasses: 'Kelas-kelas Stylesheet',
22 download: 'Force Download', // MISSING
23 displayText: 'Display Text', // MISSING
22 emailAddress: 'Alamat E-Mail', 24 emailAddress: 'Alamat E-Mail',
23 emailBody: 'Isi Kandungan Mesej', 25 emailBody: 'Isi Kandungan Mesej',
24 emailSubject: 'Subjek Mesej', 26 emailSubject: 'Subjek Mesej',
diff --git a/sources/plugins/link/lang/nb.js b/sources/plugins/link/lang/nb.js
index d9cedf7..7253b4a 100644
--- a/sources/plugins/link/lang/nb.js
+++ b/sources/plugins/link/lang/nb.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'link', 'nb', { 5CKEDITOR.plugins.setLang( 'link', 'nb', {
@@ -8,8 +8,8 @@ CKEDITOR.plugins.setLang( 'link', 'nb', {
8 advisoryContentType: 'Type', 8 advisoryContentType: 'Type',
9 advisoryTitle: 'Tittel', 9 advisoryTitle: 'Tittel',
10 anchor: { 10 anchor: {
11 toolbar: 'Sett inn/Rediger anker', 11 toolbar: 'Anker',
12 menu: 'Egenskaper for anker', 12 menu: 'Rediger anker',
13 title: 'Egenskaper for anker', 13 title: 'Egenskaper for anker',
14 name: 'Ankernavn', 14 name: 'Ankernavn',
15 errorName: 'Vennligst skriv inn ankernavnet', 15 errorName: 'Vennligst skriv inn ankernavnet',
@@ -19,6 +19,8 @@ CKEDITOR.plugins.setLang( 'link', 'nb', {
19 anchorName: 'Anker etter navn', 19 anchorName: 'Anker etter navn',
20 charset: 'Lenket tegnsett', 20 charset: 'Lenket tegnsett',
21 cssClasses: 'Stilarkklasser', 21 cssClasses: 'Stilarkklasser',
22 download: 'Tving nedlasting',
23 displayText: 'Tekst som skal vises',
22 emailAddress: 'E-postadresse', 24 emailAddress: 'E-postadresse',
23 emailBody: 'Melding', 25 emailBody: 'Melding',
24 emailSubject: 'Meldingsemne', 26 emailSubject: 'Meldingsemne',
@@ -26,8 +28,8 @@ CKEDITOR.plugins.setLang( 'link', 'nb', {
26 info: 'Lenkeinfo', 28 info: 'Lenkeinfo',
27 langCode: 'Språkkode', 29 langCode: 'Språkkode',
28 langDir: 'Språkretning', 30 langDir: 'Språkretning',
29 langDirLTR: 'Venstre til høyre (VTH)', 31 langDirLTR: 'Venstre til høyre (LTR)',
30 langDirRTL: 'Høyre til venstre (HTV)', 32 langDirRTL: 'Høyre til venstre (RTL)',
31 menu: 'Rediger lenke', 33 menu: 'Rediger lenke',
32 name: 'Navn', 34 name: 'Navn',
33 noAnchors: '(Ingen anker i dokumentet)', 35 noAnchors: '(Ingen anker i dokumentet)',
@@ -58,7 +60,7 @@ CKEDITOR.plugins.setLang( 'link', 'nb', {
58 toAnchor: 'Lenke til anker i teksten', 60 toAnchor: 'Lenke til anker i teksten',
59 toEmail: 'E-post', 61 toEmail: 'E-post',
60 toUrl: 'URL', 62 toUrl: 'URL',
61 toolbar: 'Sett inn/Rediger lenke', 63 toolbar: 'Lenke',
62 type: 'Lenketype', 64 type: 'Lenketype',
63 unlink: 'Fjern lenke', 65 unlink: 'Fjern lenke',
64 upload: 'Last opp' 66 upload: 'Last opp'
diff --git a/sources/plugins/link/lang/nl.js b/sources/plugins/link/lang/nl.js
index 1c6036b..12cb509 100644
--- a/sources/plugins/link/lang/nl.js
+++ b/sources/plugins/link/lang/nl.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'link', 'nl', { 5CKEDITOR.plugins.setLang( 'link', 'nl', {
@@ -19,6 +19,8 @@ CKEDITOR.plugins.setLang( 'link', 'nl', {
19 anchorName: 'Op naam interne link', 19 anchorName: 'Op naam interne link',
20 charset: 'Karakterset van gelinkte bron', 20 charset: 'Karakterset van gelinkte bron',
21 cssClasses: 'Stylesheet-klassen', 21 cssClasses: 'Stylesheet-klassen',
22 download: 'Download forceren',
23 displayText: 'Weergavetekst',
22 emailAddress: 'E-mailadres', 24 emailAddress: 'E-mailadres',
23 emailBody: 'Inhoud bericht', 25 emailBody: 'Inhoud bericht',
24 emailSubject: 'Onderwerp bericht', 26 emailSubject: 'Onderwerp bericht',
diff --git a/sources/plugins/link/lang/no.js b/sources/plugins/link/lang/no.js
index 0a4ef05..bdd7fc6 100644
--- a/sources/plugins/link/lang/no.js
+++ b/sources/plugins/link/lang/no.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'link', 'no', { 5CKEDITOR.plugins.setLang( 'link', 'no', {
@@ -19,6 +19,8 @@ CKEDITOR.plugins.setLang( 'link', 'no', {
19 anchorName: 'Anker etter navn', 19 anchorName: 'Anker etter navn',
20 charset: 'Lenket tegnsett', 20 charset: 'Lenket tegnsett',
21 cssClasses: 'Stilarkklasser', 21 cssClasses: 'Stilarkklasser',
22 download: 'Force Download', // MISSING
23 displayText: 'Tekst som skal vises',
22 emailAddress: 'E-postadresse', 24 emailAddress: 'E-postadresse',
23 emailBody: 'Melding', 25 emailBody: 'Melding',
24 emailSubject: 'Meldingsemne', 26 emailSubject: 'Meldingsemne',
diff --git a/sources/plugins/link/lang/oc.js b/sources/plugins/link/lang/oc.js
new file mode 100644
index 0000000..f9e51cd
--- /dev/null
+++ b/sources/plugins/link/lang/oc.js
@@ -0,0 +1,67 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'link', 'oc', {
6 acccessKey: 'Tòca d\'accessibilitat',
7 advanced: 'Avançat',
8 advisoryContentType: 'Tipe de contengut (indicatiu)',
9 advisoryTitle: 'Infobulla',
10 anchor: {
11 toolbar: 'Ancòra',
12 menu: 'Modificar l\'ancòra',
13 title: 'Proprietats de l\'ancòra',
14 name: 'Nom de l\'ancòra',
15 errorName: 'Entratz lo nom de l\'ancòra',
16 remove: 'Suprimir l\'ancòra'
17 },
18 anchorId: 'Per ID d\'element',
19 anchorName: 'Per nom d\'ancòra',
20 charset: 'Encodatge de la ressorsa ligada',
21 cssClasses: 'Classas d\'estil',
22 download: 'Forçar lo telecargament',
23 displayText: 'Afichar lo tèxte',
24 emailAddress: 'Adreça electronica',
25 emailBody: 'Còs del messatge',
26 emailSubject: 'Subjècte del messatge',
27 id: 'Id',
28 info: 'Informacions sul ligam',
29 langCode: 'Còdi de lenga',
30 langDir: 'Sens d\'escritura',
31 langDirLTR: 'Esquèrra a dreita (LTR)',
32 langDirRTL: 'Dreita a esquèrra (RTL)',
33 menu: 'Modificar lo ligam',
34 name: 'Nom',
35 noAnchors: '(Cap d\'ancòra pas disponibla dins aqueste document)',
36 noEmail: 'Entratz l\'adreça electronica',
37 noUrl: 'Entratz l\'URL del ligam',
38 other: '<autre>',
39 popupDependent: 'Dependenta (Netscape)',
40 popupFeatures: 'Caracteristicas de la fenèstra sorgissenta',
41 popupFullScreen: 'Ecran complet (IE)',
42 popupLeft: 'A esquèrra',
43 popupLocationBar: 'Barra d\'adreça',
44 popupMenuBar: 'Barra de menú',
45 popupResizable: 'Redimensionable',
46 popupScrollBars: 'Barras de desfilament',
47 popupStatusBar: 'Barra d\'estat',
48 popupToolbar: 'Barra d\'aisinas',
49 popupTop: 'Amont',
50 rel: 'Relacion',
51 selectAnchor: 'Seleccionar una ancòra',
52 styles: 'Estil',
53 tabIndex: 'Indici de tabulacion',
54 target: 'Cibla',
55 targetFrame: '<quadre>',
56 targetFrameName: 'Nom del quadre afectat',
57 targetPopup: '<fenèstra sorgissenta>',
58 targetPopupName: 'Nom de la fenèstra sorgissenta',
59 title: 'Ligam',
60 toAnchor: 'Ancòra',
61 toEmail: 'Corrièl',
62 toUrl: 'URL',
63 toolbar: 'Ligam',
64 type: 'Tipe de ligam',
65 unlink: 'Suprimir lo ligam',
66 upload: 'Mandar'
67} );
diff --git a/sources/plugins/link/lang/pl.js b/sources/plugins/link/lang/pl.js
index f37f856..41858d3 100644
--- a/sources/plugins/link/lang/pl.js
+++ b/sources/plugins/link/lang/pl.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'link', 'pl', { 5CKEDITOR.plugins.setLang( 'link', 'pl', {
@@ -19,6 +19,8 @@ CKEDITOR.plugins.setLang( 'link', 'pl', {
19 anchorName: 'Wg nazwy', 19 anchorName: 'Wg nazwy',
20 charset: 'Kodowanie znaków obiektu docelowego', 20 charset: 'Kodowanie znaków obiektu docelowego',
21 cssClasses: 'Nazwa klasy CSS', 21 cssClasses: 'Nazwa klasy CSS',
22 download: 'Wymuś pobieranie',
23 displayText: 'Wyświetlany tekst',
22 emailAddress: 'Adres e-mail', 24 emailAddress: 'Adres e-mail',
23 emailBody: 'Treść', 25 emailBody: 'Treść',
24 emailSubject: 'Temat', 26 emailSubject: 'Temat',
diff --git a/sources/plugins/link/lang/pt-br.js b/sources/plugins/link/lang/pt-br.js
index 04136f7..0c43149 100644
--- a/sources/plugins/link/lang/pt-br.js
+++ b/sources/plugins/link/lang/pt-br.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'link', 'pt-br', { 5CKEDITOR.plugins.setLang( 'link', 'pt-br', {
@@ -19,6 +19,8 @@ CKEDITOR.plugins.setLang( 'link', 'pt-br', {
19 anchorName: 'Nome da âncora', 19 anchorName: 'Nome da âncora',
20 charset: 'Charset do Link', 20 charset: 'Charset do Link',
21 cssClasses: 'Classe de CSS', 21 cssClasses: 'Classe de CSS',
22 download: 'Forçar Download',
23 displayText: 'Exibir Texto',
22 emailAddress: 'Endereço E-Mail', 24 emailAddress: 'Endereço E-Mail',
23 emailBody: 'Corpo da Mensagem', 25 emailBody: 'Corpo da Mensagem',
24 emailSubject: 'Assunto da Mensagem', 26 emailSubject: 'Assunto da Mensagem',
diff --git a/sources/plugins/link/lang/pt.js b/sources/plugins/link/lang/pt.js
index cd31734..5f45548 100644
--- a/sources/plugins/link/lang/pt.js
+++ b/sources/plugins/link/lang/pt.js
@@ -1,65 +1,67 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'link', 'pt', { 5CKEDITOR.plugins.setLang( 'link', 'pt', {
6 acccessKey: 'Chave de Acesso', 6 acccessKey: 'Chave de acesso',
7 advanced: 'Avançado', 7 advanced: 'Avançado',
8 advisoryContentType: 'Tipo de Conteúdo', 8 advisoryContentType: 'Tipo de conteúdo',
9 advisoryTitle: 'Título', 9 advisoryTitle: 'Título',
10 anchor: { 10 anchor: {
11 toolbar: ' Inserir/Editar ncora', 11 toolbar: ' Inserir/Editar ncora',
12 menu: 'Propriedades da ncora', 12 menu: 'Propriedades da ncora',
13 title: 'Propriedades da ncora', 13 title: 'Propriedades da ncora',
14 name: 'Nome da ncora', 14 name: 'Nome da ncora',
15 errorName: 'Por favor, introduza o nome da âncora', 15 errorName: 'Por favor, introduza o nome da âncora',
16 remove: 'Remove Anchor' 16 remove: 'Remover âncora'
17 }, 17 },
18 anchorId: 'Por ID de elemento', 18 anchorId: 'Por ID do elemento',
19 anchorName: 'Por Nome de Referência', 19 anchorName: 'Por Nome de Referência',
20 charset: 'Fonte de caracteres vinculado', 20 charset: 'Fonte de caracteres vinculado',
21 cssClasses: 'Classes de Estilo de Folhas Classes', 21 cssClasses: 'Classes de Estilo',
22 emailAddress: 'Endereço de E-Mail', 22 download: 'Force Download', // MISSING
23 emailBody: 'Corpo da Mensagem', 23 displayText: 'Mostrar texto',
24 emailSubject: 'Título de Mensagem', 24 emailAddress: 'Endereço de email',
25 emailBody: 'Corpo da mensagem',
26 emailSubject: 'Título de mensagem',
25 id: 'ID', 27 id: 'ID',
26 info: 'Informação de Hiperligação', 28 info: 'Informação da hiperligação',
27 langCode: 'Orientaão de idioma', 29 langCode: 'Cdigo de idioma',
28 langDir: 'Orientação de idioma', 30 langDir: 'Orientação de idioma',
29 langDirLTR: 'Esquerda à Direita (LTR)', 31 langDirLTR: 'Esquerda para a Direita (EPD)',
30 langDirRTL: 'Direita a Esquerda (RTL)', 32 langDirRTL: 'Direita para a Esquerda (DPE)',
31 menu: 'Editar Hiperligação', 33 menu: 'Editar hiperligação',
32 name: 'Nome', 34 name: 'Nome',
33 noAnchors: '(Não há referncias disponíveis no documento)', 35 noAnchors: '(Não existem ncoras no documento)',
34 noEmail: 'Por favor introduza o endereço de e-mail', 36 noEmail: 'Por favor, escreva o endereço de email',
35 noUrl: 'Por favor introduza a hiperligação URL', 37 noUrl: 'Por favor, introduza o endereço URL',
36 other: '<outro>', 38 other: '<outro>',
37 popupDependent: 'Dependente (Netscape)', 39 popupDependent: 'Dependente (Netscape)',
38 popupFeatures: 'Características de Janela de Popup', 40 popupFeatures: 'Características de janela flutuante',
39 popupFullScreen: 'Janela Completa (IE)', 41 popupFullScreen: 'Janela completa (IE)',
40 popupLeft: 'Posição Esquerda', 42 popupLeft: 'Posição esquerda',
41 popupLocationBar: 'Barra de localização', 43 popupLocationBar: 'Barra de localização',
42 popupMenuBar: 'Barra de Menu', 44 popupMenuBar: 'Barra de menu',
43 popupResizable: 'Redimensionável', 45 popupResizable: 'Redimensionável',
44 popupScrollBars: 'Barras de deslocamento', 46 popupScrollBars: 'Barras de deslocamento',
45 popupStatusBar: 'Barra de Estado', 47 popupStatusBar: 'Barra de estado',
46 popupToolbar: 'Barra de ferramentas', 48 popupToolbar: 'Barra de ferramentas',
47 popupTop: 'Posição Direita', 49 popupTop: 'Posição topo',
48 rel: 'Relação', 50 rel: 'Relação',
49 selectAnchor: 'Seleccionar una referncia', 51 selectAnchor: 'Selecionar ncora',
50 styles: 'Estilo', 52 styles: 'Estilo',
51 tabIndex: 'Índice de tabulação', 53 tabIndex: 'Índice de tabulação',
52 target: 'Alvo', 54 target: 'Alvo',
53 targetFrame: '<frame>', 55 targetFrame: '<frame>',
54 targetFrameName: 'Nome do Frame Destino', 56 targetFrameName: 'Nome da janela de destino',
55 targetPopup: '<janela de popup>', 57 targetPopup: '<janela de popup>',
56 targetPopupName: 'Nome da Janela de Popup', 58 targetPopupName: 'Nome da janela flutuante',
57 title: 'Hiperligação', 59 title: 'Hiperligação',
58 toAnchor: 'Referncia a esta página', 60 toAnchor: 'Ligar a ncora no texto',
59 toEmail: 'Email', 61 toEmail: 'Email',
60 toUrl: 'URL', 62 toUrl: 'URL',
61 toolbar: 'Inserir/Editar Hiperligação', 63 toolbar: 'Hiperligação',
62 type: 'Tipo de Hiperligação', 64 type: 'Tipo de hiperligação',
63 unlink: 'Eliminar Hiperligação', 65 unlink: 'Eliminar hiperligação',
64 upload: 'Carregar' 66 upload: 'Carregar'
65} ); 67} );
diff --git a/sources/plugins/link/lang/ro.js b/sources/plugins/link/lang/ro.js
index b561e57..a5d79a3 100644
--- a/sources/plugins/link/lang/ro.js
+++ b/sources/plugins/link/lang/ro.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'link', 'ro', { 5CKEDITOR.plugins.setLang( 'link', 'ro', {
@@ -19,6 +19,8 @@ CKEDITOR.plugins.setLang( 'link', 'ro', {
19 anchorName: 'după numele ancorei', 19 anchorName: 'după numele ancorei',
20 charset: 'Setul de caractere al resursei legate', 20 charset: 'Setul de caractere al resursei legate',
21 cssClasses: 'Clasele cu stilul paginii (CSS)', 21 cssClasses: 'Clasele cu stilul paginii (CSS)',
22 download: 'Force Download', // MISSING
23 displayText: 'Display Text', // MISSING
22 emailAddress: 'Adresă de e-mail', 24 emailAddress: 'Adresă de e-mail',
23 emailBody: 'Opțiuni Meniu Contextual', 25 emailBody: 'Opțiuni Meniu Contextual',
24 emailSubject: 'Subiectul mesajului', 26 emailSubject: 'Subiectul mesajului',
diff --git a/sources/plugins/link/lang/ru.js b/sources/plugins/link/lang/ru.js
index 5cb6575..7bc00d5 100644
--- a/sources/plugins/link/lang/ru.js
+++ b/sources/plugins/link/lang/ru.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'link', 'ru', { 5CKEDITOR.plugins.setLang( 'link', 'ru', {
@@ -19,6 +19,8 @@ CKEDITOR.plugins.setLang( 'link', 'ru', {
19 anchorName: 'По имени', 19 anchorName: 'По имени',
20 charset: 'Кодировка ресурса', 20 charset: 'Кодировка ресурса',
21 cssClasses: 'Классы CSS', 21 cssClasses: 'Классы CSS',
22 download: 'Скачать как файл',
23 displayText: 'Отображаемый текст',
22 emailAddress: 'Email адрес', 24 emailAddress: 'Email адрес',
23 emailBody: 'Текст сообщения', 25 emailBody: 'Текст сообщения',
24 emailSubject: 'Тема сообщения', 26 emailSubject: 'Тема сообщения',
diff --git a/sources/plugins/link/lang/si.js b/sources/plugins/link/lang/si.js
index b8b4696..7ad9935 100644
--- a/sources/plugins/link/lang/si.js
+++ b/sources/plugins/link/lang/si.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'link', 'si', { 5CKEDITOR.plugins.setLang( 'link', 'si', {
@@ -19,6 +19,8 @@ CKEDITOR.plugins.setLang( 'link', 'si', {
19 anchorName: 'By Anchor Name', // MISSING 19 anchorName: 'By Anchor Name', // MISSING
20 charset: 'Linked Resource Charset', // MISSING 20 charset: 'Linked Resource Charset', // MISSING
21 cssClasses: 'විලාසපත්‍ර පන්තිය', 21 cssClasses: 'විලාසපත්‍ර පන්තිය',
22 download: 'Force Download', // MISSING
23 displayText: 'Display Text', // MISSING
22 emailAddress: 'E-Mail Address', // MISSING 24 emailAddress: 'E-Mail Address', // MISSING
23 emailBody: 'Message Body', // MISSING 25 emailBody: 'Message Body', // MISSING
24 emailSubject: 'Message Subject', // MISSING 26 emailSubject: 'Message Subject', // MISSING
diff --git a/sources/plugins/link/lang/sk.js b/sources/plugins/link/lang/sk.js
index d0186f3..6383fc9 100644
--- a/sources/plugins/link/lang/sk.js
+++ b/sources/plugins/link/lang/sk.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'link', 'sk', { 5CKEDITOR.plugins.setLang( 'link', 'sk', {
@@ -19,6 +19,8 @@ CKEDITOR.plugins.setLang( 'link', 'sk', {
19 anchorName: 'Podľa mena kotvy', 19 anchorName: 'Podľa mena kotvy',
20 charset: 'Priradená znaková sada', 20 charset: 'Priradená znaková sada',
21 cssClasses: 'Triedy štýlu', 21 cssClasses: 'Triedy štýlu',
22 download: 'Vynútené sťahovanie.',
23 displayText: 'Zobraziť text',
22 emailAddress: 'E-Mailová adresa', 24 emailAddress: 'E-Mailová adresa',
23 emailBody: 'Telo správy', 25 emailBody: 'Telo správy',
24 emailSubject: 'Predmet správy', 26 emailSubject: 'Predmet správy',
diff --git a/sources/plugins/link/lang/sl.js b/sources/plugins/link/lang/sl.js
index 392d7fe..911203f 100644
--- a/sources/plugins/link/lang/sl.js
+++ b/sources/plugins/link/lang/sl.js
@@ -1,42 +1,44 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'link', 'sl', { 5CKEDITOR.plugins.setLang( 'link', 'sl', {
6 acccessKey: 'Dostopno Geslo', 6 acccessKey: 'Tipka za dostop',
7 advanced: 'Napredno', 7 advanced: 'Napredno',
8 advisoryContentType: 'Predlagani tip vsebine (content-type)', 8 advisoryContentType: 'Predlagana vrsta vsebine',
9 advisoryTitle: 'Predlagani naslov', 9 advisoryTitle: 'Predlagani naslov',
10 anchor: { 10 anchor: {
11 toolbar: 'Vstavi/uredi zaznamek', 11 toolbar: 'Sidro',
12 menu: 'Lastnosti zaznamka', 12 menu: 'Uredi sidro',
13 title: 'Lastnosti zaznamka', 13 title: 'Lastnosti sidra',
14 name: 'Ime zaznamka', 14 name: 'Ime sidra',
15 errorName: 'Prosim vnesite ime zaznamka', 15 errorName: 'Prosimo, vnesite ime sidra',
16 remove: 'Remove Anchor' 16 remove: 'Odstrani sidro'
17 }, 17 },
18 anchorId: 'Po ID-ju elementa', 18 anchorId: 'Po ID-ju elementa',
19 anchorName: 'Po imenu zaznamka', 19 anchorName: 'Po imenu sidra',
20 charset: 'Kodna tabela povezanega vira', 20 charset: 'Nabor znakov povezanega vira',
21 cssClasses: 'Razred stilne predloge', 21 cssClasses: 'Razredi slogovne predloge',
22 emailAddress: 'Elektronski naslov', 22 download: 'Force Download', // MISSING
23 emailBody: 'Vsebina sporočila', 23 displayText: 'Display Text', // MISSING
24 emailSubject: 'Predmet sporočila', 24 emailAddress: 'E-poštni naslov',
25 emailBody: 'Telo sporočila',
26 emailSubject: 'Zadeva sporočila',
25 id: 'Id', 27 id: 'Id',
26 info: 'Podatki o povezavi', 28 info: 'Podatki o povezavi',
27 langCode: 'Smer jezika', 29 langCode: 'Koda jezika',
28 langDir: 'Smer jezika', 30 langDir: 'Smer jezika',
29 langDirLTR: 'Od leve proti desni (LTR)', 31 langDirLTR: 'Od leve proti desni (LTR)',
30 langDirRTL: 'Od desne proti levi (RTL)', 32 langDirRTL: 'Od desne proti levi (RTL)',
31 menu: 'Uredi povezavo', 33 menu: 'Uredi povezavo',
32 name: 'Ime', 34 name: 'Ime',
33 noAnchors: '(V tem dokumentu ni zaznamkov)', 35 noAnchors: '(V tem dokumentu ni sider)',
34 noEmail: 'Vnesite elektronski naslov', 36 noEmail: 'Vnesite e-poštni naslov',
35 noUrl: 'Vnesite URL povezave', 37 noUrl: 'Vnesite URL povezave',
36 other: '<drug>', 38 other: '<drugo>',
37 popupDependent: 'Podokno (Netscape)', 39 popupDependent: 'Podokno (Netscape)',
38 popupFeatures: 'Značilnosti pojavnega okna', 40 popupFeatures: 'Značilnosti pojavnega okna',
39 popupFullScreen: 'Celozaslonska slika (IE)', 41 popupFullScreen: 'Celozaslonsko (IE)',
40 popupLeft: 'Lega levo', 42 popupLeft: 'Lega levo',
41 popupLocationBar: 'Naslovna vrstica', 43 popupLocationBar: 'Naslovna vrstica',
42 popupMenuBar: 'Menijska vrstica', 44 popupMenuBar: 'Menijska vrstica',
@@ -46,7 +48,7 @@ CKEDITOR.plugins.setLang( 'link', 'sl', {
46 popupToolbar: 'Orodna vrstica', 48 popupToolbar: 'Orodna vrstica',
47 popupTop: 'Lega na vrhu', 49 popupTop: 'Lega na vrhu',
48 rel: 'Odnos', 50 rel: 'Odnos',
49 selectAnchor: 'Izberi zaznamek', 51 selectAnchor: 'Izberite sidro',
50 styles: 'Slog', 52 styles: 'Slog',
51 tabIndex: 'Številka tabulatorja', 53 tabIndex: 'Številka tabulatorja',
52 target: 'Cilj', 54 target: 'Cilj',
@@ -55,11 +57,11 @@ CKEDITOR.plugins.setLang( 'link', 'sl', {
55 targetPopup: '<pojavno okno>', 57 targetPopup: '<pojavno okno>',
56 targetPopupName: 'Ime pojavnega okna', 58 targetPopupName: 'Ime pojavnega okna',
57 title: 'Povezava', 59 title: 'Povezava',
58 toAnchor: 'Zaznamek na tej strani', 60 toAnchor: 'Sidro na tej strani',
59 toEmail: 'Elektronski naslov', 61 toEmail: 'E-pošta',
60 toUrl: 'URL', 62 toUrl: 'URL',
61 toolbar: 'Vstavi/uredi povezavo', 63 toolbar: 'Vstavi/uredi povezavo',
62 type: 'Vrsta povezave', 64 type: 'Vrsta povezave',
63 unlink: 'Odstrani povezavo', 65 unlink: 'Odstrani povezavo',
64 upload: 'Prenesi' 66 upload: 'Naloži'
65} ); 67} );
diff --git a/sources/plugins/link/lang/sq.js b/sources/plugins/link/lang/sq.js
index 33692f1..83b2fb7 100644
--- a/sources/plugins/link/lang/sq.js
+++ b/sources/plugins/link/lang/sq.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'link', 'sq', { 5CKEDITOR.plugins.setLang( 'link', 'sq', {
@@ -19,6 +19,8 @@ CKEDITOR.plugins.setLang( 'link', 'sq', {
19 anchorName: 'Sipas Emrit të Spirancës', 19 anchorName: 'Sipas Emrit të Spirancës',
20 charset: 'Seti i Karaktereve të Burimeve të Nëdlidhura', 20 charset: 'Seti i Karaktereve të Burimeve të Nëdlidhura',
21 cssClasses: 'Klasa stili CSS', 21 cssClasses: 'Klasa stili CSS',
22 download: 'Force Download', // MISSING
23 displayText: 'Display Text', // MISSING
22 emailAddress: 'Posta Elektronike', 24 emailAddress: 'Posta Elektronike',
23 emailBody: 'Trupi i Porosisë', 25 emailBody: 'Trupi i Porosisë',
24 emailSubject: 'Titulli i Porosisë', 26 emailSubject: 'Titulli i Porosisë',
diff --git a/sources/plugins/link/lang/sr-latn.js b/sources/plugins/link/lang/sr-latn.js
index 592f05a..8f6f6a7 100644
--- a/sources/plugins/link/lang/sr-latn.js
+++ b/sources/plugins/link/lang/sr-latn.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'link', 'sr-latn', { 5CKEDITOR.plugins.setLang( 'link', 'sr-latn', {
@@ -19,6 +19,8 @@ CKEDITOR.plugins.setLang( 'link', 'sr-latn', {
19 anchorName: 'Po nazivu sidra', 19 anchorName: 'Po nazivu sidra',
20 charset: 'Linked Resource Charset', 20 charset: 'Linked Resource Charset',
21 cssClasses: 'Stylesheet klase', 21 cssClasses: 'Stylesheet klase',
22 download: 'Force Download', // MISSING
23 displayText: 'Display Text', // MISSING
22 emailAddress: 'E-Mail adresa', 24 emailAddress: 'E-Mail adresa',
23 emailBody: 'Sadržaj poruke', 25 emailBody: 'Sadržaj poruke',
24 emailSubject: 'Naslov', 26 emailSubject: 'Naslov',
diff --git a/sources/plugins/link/lang/sr.js b/sources/plugins/link/lang/sr.js
index 6d5055b..18689da 100644
--- a/sources/plugins/link/lang/sr.js
+++ b/sources/plugins/link/lang/sr.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'link', 'sr', { 5CKEDITOR.plugins.setLang( 'link', 'sr', {
@@ -19,6 +19,8 @@ CKEDITOR.plugins.setLang( 'link', 'sr', {
19 anchorName: 'По називу сидра', 19 anchorName: 'По називу сидра',
20 charset: 'Linked Resource Charset', 20 charset: 'Linked Resource Charset',
21 cssClasses: 'Stylesheet класе', 21 cssClasses: 'Stylesheet класе',
22 download: 'Force Download', // MISSING
23 displayText: 'Display Text', // MISSING
22 emailAddress: 'Адреса електронске поште', 24 emailAddress: 'Адреса електронске поште',
23 emailBody: 'Садржај поруке', 25 emailBody: 'Садржај поруке',
24 emailSubject: 'Наслов', 26 emailSubject: 'Наслов',
diff --git a/sources/plugins/link/lang/sv.js b/sources/plugins/link/lang/sv.js
index 30dc5b0..bc9f4c2 100644
--- a/sources/plugins/link/lang/sv.js
+++ b/sources/plugins/link/lang/sv.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'link', 'sv', { 5CKEDITOR.plugins.setLang( 'link', 'sv', {
@@ -19,6 +19,8 @@ CKEDITOR.plugins.setLang( 'link', 'sv', {
19 anchorName: 'Efter ankarnamn', 19 anchorName: 'Efter ankarnamn',
20 charset: 'Teckenuppställning', 20 charset: 'Teckenuppställning',
21 cssClasses: 'Stilmall', 21 cssClasses: 'Stilmall',
22 download: 'Tvinga nerladdning',
23 displayText: 'Visningstext',
22 emailAddress: 'E-postadress', 24 emailAddress: 'E-postadress',
23 emailBody: 'Innehåll', 25 emailBody: 'Innehåll',
24 emailSubject: 'Ämne', 26 emailSubject: 'Ämne',
@@ -40,7 +42,7 @@ CKEDITOR.plugins.setLang( 'link', 'sv', {
40 popupLeft: 'Position från vänster', 42 popupLeft: 'Position från vänster',
41 popupLocationBar: 'Adressfält', 43 popupLocationBar: 'Adressfält',
42 popupMenuBar: 'Menyfält', 44 popupMenuBar: 'Menyfält',
43 popupResizable: 'Resizable', // MISSING 45 popupResizable: 'Skalbart',
44 popupScrollBars: 'Scrolllista', 46 popupScrollBars: 'Scrolllista',
45 popupStatusBar: 'Statusfält', 47 popupStatusBar: 'Statusfält',
46 popupToolbar: 'Verktygsfält', 48 popupToolbar: 'Verktygsfält',
diff --git a/sources/plugins/link/lang/th.js b/sources/plugins/link/lang/th.js
index d49dbb3..593838d 100644
--- a/sources/plugins/link/lang/th.js
+++ b/sources/plugins/link/lang/th.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'link', 'th', { 5CKEDITOR.plugins.setLang( 'link', 'th', {
@@ -19,6 +19,8 @@ CKEDITOR.plugins.setLang( 'link', 'th', {
19 anchorName: 'ชื่อ', 19 anchorName: 'ชื่อ',
20 charset: 'ลิงค์เชื่อมโยงไปยังชุดตัวอักษร', 20 charset: 'ลิงค์เชื่อมโยงไปยังชุดตัวอักษร',
21 cssClasses: 'คลาสของไฟล์กำหนดลักษณะการแสดงผล', 21 cssClasses: 'คลาสของไฟล์กำหนดลักษณะการแสดงผล',
22 download: 'Force Download', // MISSING
23 displayText: 'Display Text', // MISSING
22 emailAddress: 'อีเมล์ (E-Mail)', 24 emailAddress: 'อีเมล์ (E-Mail)',
23 emailBody: 'ข้อความ', 25 emailBody: 'ข้อความ',
24 emailSubject: 'หัวเรื่อง', 26 emailSubject: 'หัวเรื่อง',
diff --git a/sources/plugins/link/lang/tr.js b/sources/plugins/link/lang/tr.js
index ce7b726..424ad7b 100644
--- a/sources/plugins/link/lang/tr.js
+++ b/sources/plugins/link/lang/tr.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'link', 'tr', { 5CKEDITOR.plugins.setLang( 'link', 'tr', {
@@ -19,6 +19,8 @@ CKEDITOR.plugins.setLang( 'link', 'tr', {
19 anchorName: 'Bağlantı Adı ile', 19 anchorName: 'Bağlantı Adı ile',
20 charset: 'Bağlı Kaynak Karakter Gurubu', 20 charset: 'Bağlı Kaynak Karakter Gurubu',
21 cssClasses: 'Biçem Sayfası Sınıfları', 21 cssClasses: 'Biçem Sayfası Sınıfları',
22 download: 'İndirmeye Zorla',
23 displayText: 'Gösterim Metni',
22 emailAddress: 'E-Posta Adresi', 24 emailAddress: 'E-Posta Adresi',
23 emailBody: 'İleti Gövdesi', 25 emailBody: 'İleti Gövdesi',
24 emailSubject: 'İleti Konusu', 26 emailSubject: 'İleti Konusu',
diff --git a/sources/plugins/link/lang/tt.js b/sources/plugins/link/lang/tt.js
index 4f2d077..25bd354 100644
--- a/sources/plugins/link/lang/tt.js
+++ b/sources/plugins/link/lang/tt.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'link', 'tt', { 5CKEDITOR.plugins.setLang( 'link', 'tt', {
@@ -19,6 +19,8 @@ CKEDITOR.plugins.setLang( 'link', 'tt', {
19 anchorName: 'Якорь исеме буенча', 19 anchorName: 'Якорь исеме буенча',
20 charset: 'Linked Resource Charset', // MISSING 20 charset: 'Linked Resource Charset', // MISSING
21 cssClasses: 'Стильләр класслары', 21 cssClasses: 'Стильләр класслары',
22 download: 'Force Download', // MISSING
23 displayText: 'Display Text', // MISSING
22 emailAddress: 'Электрон почта адресы', 24 emailAddress: 'Электрон почта адресы',
23 emailBody: 'Хат эчтәлеге', 25 emailBody: 'Хат эчтәлеге',
24 emailSubject: 'Хат темасы', 26 emailSubject: 'Хат темасы',
diff --git a/sources/plugins/link/lang/ug.js b/sources/plugins/link/lang/ug.js
index 0d81c27..3cf75b4 100644
--- a/sources/plugins/link/lang/ug.js
+++ b/sources/plugins/link/lang/ug.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'link', 'ug', { 5CKEDITOR.plugins.setLang( 'link', 'ug', {
@@ -19,6 +19,8 @@ CKEDITOR.plugins.setLang( 'link', 'ug', {
19 anchorName: 'لەڭگەرلىك نۇقتا ئاتى بويىچە', 19 anchorName: 'لەڭگەرلىك نۇقتا ئاتى بويىچە',
20 charset: 'ھەرپ كودلىنىشى', 20 charset: 'ھەرپ كودلىنىشى',
21 cssClasses: 'ئۇسلۇب خىلى ئاتى', 21 cssClasses: 'ئۇسلۇب خىلى ئاتى',
22 download: 'Force Download', // MISSING
23 displayText: 'Display Text', // MISSING
22 emailAddress: 'ئادرېس', 24 emailAddress: 'ئادرېس',
23 emailBody: 'مەزمۇن', 25 emailBody: 'مەزمۇن',
24 emailSubject: 'ماۋزۇ', 26 emailSubject: 'ماۋزۇ',
diff --git a/sources/plugins/link/lang/uk.js b/sources/plugins/link/lang/uk.js
index 655bdae..8322d86 100644
--- a/sources/plugins/link/lang/uk.js
+++ b/sources/plugins/link/lang/uk.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'link', 'uk', { 5CKEDITOR.plugins.setLang( 'link', 'uk', {
@@ -19,6 +19,8 @@ CKEDITOR.plugins.setLang( 'link', 'uk', {
19 anchorName: 'За ім\'ям елементу', 19 anchorName: 'За ім\'ям елементу',
20 charset: 'Кодування', 20 charset: 'Кодування',
21 cssClasses: 'Клас CSS', 21 cssClasses: 'Клас CSS',
22 download: 'Force Download', // MISSING
23 displayText: 'Display Text', // MISSING
22 emailAddress: 'Адреса ел. пошти', 24 emailAddress: 'Адреса ел. пошти',
23 emailBody: 'Тіло повідомлення', 25 emailBody: 'Тіло повідомлення',
24 emailSubject: 'Тема листа', 26 emailSubject: 'Тема листа',
diff --git a/sources/plugins/link/lang/vi.js b/sources/plugins/link/lang/vi.js
index 6769108..d78012d 100644
--- a/sources/plugins/link/lang/vi.js
+++ b/sources/plugins/link/lang/vi.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'link', 'vi', { 5CKEDITOR.plugins.setLang( 'link', 'vi', {
@@ -19,6 +19,8 @@ CKEDITOR.plugins.setLang( 'link', 'vi', {
19 anchorName: 'Theo tên điểm neo', 19 anchorName: 'Theo tên điểm neo',
20 charset: 'Bảng mã của tài nguyên được liên kết đến', 20 charset: 'Bảng mã của tài nguyên được liên kết đến',
21 cssClasses: 'Lớp Stylesheet', 21 cssClasses: 'Lớp Stylesheet',
22 download: 'Force Download', // MISSING
23 displayText: 'Display Text', // MISSING
22 emailAddress: 'Thư điện tử', 24 emailAddress: 'Thư điện tử',
23 emailBody: 'Nội dung thông điệp', 25 emailBody: 'Nội dung thông điệp',
24 emailSubject: 'Tiêu đề thông điệp', 26 emailSubject: 'Tiêu đề thông điệp',
diff --git a/sources/plugins/link/lang/zh-cn.js b/sources/plugins/link/lang/zh-cn.js
index af30dd8..6da9e96 100644
--- a/sources/plugins/link/lang/zh-cn.js
+++ b/sources/plugins/link/lang/zh-cn.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'link', 'zh-cn', { 5CKEDITOR.plugins.setLang( 'link', 'zh-cn', {
@@ -19,6 +19,8 @@ CKEDITOR.plugins.setLang( 'link', 'zh-cn', {
19 anchorName: '按锚点名称', 19 anchorName: '按锚点名称',
20 charset: '字符编码', 20 charset: '字符编码',
21 cssClasses: '样式类名称', 21 cssClasses: '样式类名称',
22 download: '强制下载',
23 displayText: '显示文本',
22 emailAddress: '地址', 24 emailAddress: '地址',
23 emailBody: '内容', 25 emailBody: '内容',
24 emailSubject: '主题', 26 emailSubject: '主题',
diff --git a/sources/plugins/link/lang/zh.js b/sources/plugins/link/lang/zh.js
index 4dfa7cf..a2cee62 100644
--- a/sources/plugins/link/lang/zh.js
+++ b/sources/plugins/link/lang/zh.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'link', 'zh', { 5CKEDITOR.plugins.setLang( 'link', 'zh', {
@@ -19,6 +19,8 @@ CKEDITOR.plugins.setLang( 'link', 'zh', {
19 anchorName: '依錨點名稱', 19 anchorName: '依錨點名稱',
20 charset: '連結資源的字元集', 20 charset: '連結資源的字元集',
21 cssClasses: '樣式表類別', 21 cssClasses: '樣式表類別',
22 download: '強制下載',
23 displayText: '顯示文字',
22 emailAddress: '電子郵件地址', 24 emailAddress: '電子郵件地址',
23 emailBody: '郵件本文', 25 emailBody: '郵件本文',
24 emailSubject: '郵件主旨', 26 emailSubject: '郵件主旨',
diff --git a/sources/plugins/link/plugin.js b/sources/plugins/link/plugin.js
index db11376..120097f 100644
--- a/sources/plugins/link/plugin.js
+++ b/sources/plugins/link/plugin.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -9,7 +9,7 @@
9 CKEDITOR.plugins.add( 'link', { 9 CKEDITOR.plugins.add( 'link', {
10 requires: 'dialog,fakeobjects', 10 requires: 'dialog,fakeobjects',
11 // jscs:disable maximumLineLength 11 // jscs:disable maximumLineLength
12 lang: 'af,ar,bg,bn,bs,ca,cs,cy,da,de,de-ch,el,en,en-au,en-ca,en-gb,eo,es,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,pl,pt,pt-br,ro,ru,si,sk,sl,sq,sr,sr-latn,sv,th,tr,tt,ug,uk,vi,zh,zh-cn', // %REMOVE_LINE_CORE% 12 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', // %REMOVE_LINE_CORE%
13 // jscs:enable maximumLineLength 13 // jscs:enable maximumLineLength
14 icons: 'anchor,anchor-rtl,link,unlink', // %REMOVE_LINE_CORE% 14 icons: 'anchor,anchor-rtl,link,unlink', // %REMOVE_LINE_CORE%
15 hidpi: true, // %REMOVE_LINE_CORE% 15 hidpi: true, // %REMOVE_LINE_CORE%
@@ -52,7 +52,7 @@
52 required = 'a[href]'; 52 required = 'a[href]';
53 53
54 if ( CKEDITOR.dialog.isTabEnabled( editor, 'link', 'advanced' ) ) 54 if ( CKEDITOR.dialog.isTabEnabled( editor, 'link', 'advanced' ) )
55 allowed = allowed.replace( ']', ',accesskey,charset,dir,id,lang,name,rel,tabindex,title,type]{*}(*)' ); 55 allowed = allowed.replace( ']', ',accesskey,charset,dir,id,lang,name,rel,tabindex,title,type,download]{*}(*)' );
56 if ( CKEDITOR.dialog.isTabEnabled( editor, 'link', 'target' ) ) 56 if ( CKEDITOR.dialog.isTabEnabled( editor, 'link', 'target' ) )
57 allowed = allowed.replace( ']', ',target,onclick]' ); 57 allowed = allowed.replace( ']', ',target,onclick]' );
58 58
@@ -92,9 +92,12 @@
92 CKEDITOR.dialog.add( 'anchor', this.path + 'dialogs/anchor.js' ); 92 CKEDITOR.dialog.add( 'anchor', this.path + 'dialogs/anchor.js' );
93 93
94 editor.on( 'doubleclick', function( evt ) { 94 editor.on( 'doubleclick', function( evt ) {
95 var element = CKEDITOR.plugins.link.getSelectedLink( editor ) || evt.data.element; 95 // If the link has descendants and the last part of it is also a part of a word partially
96 // unlinked, clicked element may be a descendant of the link, not the link itself (http://dev.ckeditor.com/ticket/11956).
97 // The evt.data.element.getAscendant( 'img', 1 ) condition allows opening anchor dialog if the anchor is empty (#501).
98 var element = evt.data.element.getAscendant( { a: 1, img: 1 }, true );
96 99
97 if ( !element.isReadOnly() ) { 100 if ( element && !element.isReadOnly() ) {
98 if ( element.is( 'a' ) ) { 101 if ( element.is( 'a' ) ) {
99 evt.data.dialog = ( element.getAttribute( 'name' ) && ( !element.getAttribute( 'href' ) || !element.getChildCount() ) ) ? 'anchor' : 'link'; 102 evt.data.dialog = ( element.getAttribute( 'name' ) && ( !element.getAttribute( 'href' ) || !element.getChildCount() ) ) ? 'anchor' : 'link';
100 103
@@ -108,7 +111,7 @@
108 111
109 // If event was cancelled, link passed in event data will not be selected. 112 // If event was cancelled, link passed in event data will not be selected.
110 editor.on( 'doubleclick', function( evt ) { 113 editor.on( 'doubleclick', function( evt ) {
111 // Make sure both links and anchors are selected (#11822). 114 // Make sure both links and anchors are selected (http://dev.ckeditor.com/ticket/11822).
112 if ( evt.data.dialog in { link: 1, anchor: 1 } && evt.data.link ) 115 if ( evt.data.dialog in { link: 1, anchor: 1 } && evt.data.link )
113 editor.getSelection().selectElement( evt.data.link ); 116 editor.getSelection().selectElement( evt.data.link );
114 }, null, null, 20 ); 117 }, null, null, 20 );
@@ -311,20 +314,38 @@
311 * 314 *
312 * @since 3.2.1 315 * @since 3.2.1
313 * @param {CKEDITOR.editor} editor 316 * @param {CKEDITOR.editor} editor
317 * @param {Boolean} [returnMultiple=false] Indicates whether the function should return only the first selected link or all of them.
318 * @returns {CKEDITOR.dom.element/CKEDITOR.dom.element[]/null} A single link element or an array of link
319 * elements relevant to the current selection.
314 */ 320 */
315 getSelectedLink: function( editor ) { 321 getSelectedLink: function( editor, returnMultiple ) {
316 var selection = editor.getSelection(); 322 var selection = editor.getSelection(),
317 var selectedElement = selection.getSelectedElement(); 323 selectedElement = selection.getSelectedElement(),
318 if ( selectedElement && selectedElement.is( 'a' ) ) 324 ranges = selection.getRanges(),
325 links = [],
326 link,
327 range,
328 i;
329
330 if ( !returnMultiple && selectedElement && selectedElement.is( 'a' ) ) {
319 return selectedElement; 331 return selectedElement;
332 }
333
334 for ( i = 0; i < ranges.length; i++ ) {
335 range = selection.getRanges()[ i ];
320 336
321 var range = selection.getRanges()[ 0 ]; 337 // Skip bogus to cover cases of multiple selection inside tables (#tp2245).
338 range.shrink( CKEDITOR.SHRINK_TEXT, false, { skipBogus: true } );
339 link = editor.elementPath( range.getCommonAncestor() ).contains( 'a', 1 );
322 340
323 if ( range ) { 341 if ( link && returnMultiple ) {
324 range.shrink( CKEDITOR.SHRINK_TEXT ); 342 links.push( link );
325 return editor.elementPath( range.getCommonAncestor() ).contains( 'a', 1 ); 343 } else if ( link ) {
344 return link;
345 }
326 } 346 }
327 return null; 347
348 return returnMultiple ? links : null;
328 }, 349 },
329 350
330 /** 351 /**
@@ -340,7 +361,7 @@
340 var editable = editor.editable(), 361 var editable = editor.editable(),
341 362
342 // The scope of search for anchors is the entire document for inline editors 363 // The scope of search for anchors is the entire document for inline editors
343 // and editor's editable for classic editor/divarea (#11359). 364 // and editor's editable for classic editor/divarea (http://dev.ckeditor.com/ticket/11359).
344 scope = ( editable.isInline() && !editor.plugins.divarea ) ? editor.document : editable, 365 scope = ( editable.isInline() && !editor.plugins.divarea ) ? editor.document : editable,
345 366
346 links = scope.getElementsByTag( 'a' ), 367 links = scope.getElementsByTag( 'a' ),
@@ -384,7 +405,7 @@
384 fakeAnchor: true, 405 fakeAnchor: true,
385 406
386 /** 407 /**
387 * For browsers that do not support CSS3 `a[name]:empty()`. Note that IE9 is included because of #7783. 408 * For browsers that do not support CSS3 `a[name]:empty()`. Note that IE9 is included because of http://dev.ckeditor.com/ticket/7783.
388 * 409 *
389 * @readonly 410 * @readonly
390 * @deprecated 4.3.3 It is set to `false` in every browser. 411 * @deprecated 4.3.3 It is set to `false` in every browser.
@@ -438,7 +459,7 @@
438 if ( ( javascriptMatch = href.match( javascriptProtocolRegex ) ) ) { 459 if ( ( javascriptMatch = href.match( javascriptProtocolRegex ) ) ) {
439 if ( emailProtection == 'encode' ) { 460 if ( emailProtection == 'encode' ) {
440 href = href.replace( encodedEmailLinkRegex, function( match, protectedAddress, rest ) { 461 href = href.replace( encodedEmailLinkRegex, function( match, protectedAddress, rest ) {
441 // Without it 'undefined' is appended to e-mails without subject and body (#9192). 462 // Without it 'undefined' is appended to e-mails without subject and body (http://dev.ckeditor.com/ticket/9192).
442 rest = rest || ''; 463 rest = rest || '';
443 464
444 return 'mailto:' + 465 return 'mailto:' +
@@ -513,7 +534,7 @@
513 534
514 var featureMatch; 535 var featureMatch;
515 while ( ( featureMatch = popupFeaturesRegex.exec( onclickMatch[ 2 ] ) ) ) { 536 while ( ( featureMatch = popupFeaturesRegex.exec( onclickMatch[ 2 ] ) ) ) {
516 // Some values should remain numbers (#7300) 537 // Some values should remain numbers (http://dev.ckeditor.com/ticket/7300)
517 if ( ( featureMatch[ 2 ] == 'yes' || featureMatch[ 2 ] == '1' ) && !( featureMatch[ 1 ] in { height: 1, width: 1, top: 1, left: 1 } ) ) 538 if ( ( featureMatch[ 2 ] == 'yes' || featureMatch[ 2 ] == '1' ) && !( featureMatch[ 1 ] in { height: 1, width: 1, top: 1, left: 1 } ) )
518 retval.target[ featureMatch[ 1 ] ] = true; 539 retval.target[ featureMatch[ 1 ] ] = true;
519 else if ( isFinite( featureMatch[ 2 ] ) ) 540 else if ( isFinite( featureMatch[ 2 ] ) )
@@ -527,6 +548,11 @@
527 }; 548 };
528 } 549 }
529 550
551 var download = element.getAttribute( 'download' );
552 if ( download !== null ) {
553 retval.download = true;
554 }
555
530 var advanced = {}; 556 var advanced = {};
531 557
532 for ( var a in advAttrNames ) { 558 for ( var a in advAttrNames ) {
@@ -666,6 +692,11 @@
666 } 692 }
667 } 693 }
668 694
695 // Force download attribute.
696 if ( data.download ) {
697 set.download = '';
698 }
699
669 // Advanced attributes. 700 // Advanced attributes.
670 if ( data.advanced ) { 701 if ( data.advanced ) {
671 for ( var a in advAttrNames ) { 702 for ( var a in advAttrNames ) {
@@ -679,7 +710,7 @@
679 set[ 'data-cke-saved-name' ] = set.name; 710 set[ 'data-cke-saved-name' ] = set.name;
680 } 711 }
681 712
682 // Browser need the "href" fro copy/paste link to work. (#6641) 713 // Browser need the "href" fro copy/paste link to work. (http://dev.ckeditor.com/ticket/6641)
683 if ( set[ 'data-cke-saved-href' ] ) 714 if ( set[ 'data-cke-saved-href' ] )
684 set.href = set[ 'data-cke-saved-href' ]; 715 set.href = set[ 'data-cke-saved-href' ];
685 716
@@ -687,7 +718,8 @@
687 target: 1, 718 target: 1,
688 onclick: 1, 719 onclick: 1,
689 'data-cke-pa-onclick': 1, 720 'data-cke-pa-onclick': 1,
690 'data-cke-saved-name': 1 721 'data-cke-saved-name': 1,
722 'download': 1
691 }; 723 };
692 724
693 if ( data.advanced ) 725 if ( data.advanced )
@@ -701,6 +733,41 @@
701 set: set, 733 set: set,
702 removed: CKEDITOR.tools.objectKeys( removed ) 734 removed: CKEDITOR.tools.objectKeys( removed )
703 }; 735 };
736 },
737
738
739 /**
740 * Determines whether an element should have a "Display Text" field in the Link dialog.
741 *
742 * @since 4.5.11
743 * @param {CKEDITOR.dom.element/null} element Selected element, `null` if none selected or if a ranged selection
744 * is made.
745 * @param {CKEDITOR.editor} editor The editor instance for which the check is performed.
746 * @returns {Boolean}
747 */
748 showDisplayTextForElement: function( element, editor ) {
749 var undesiredElements = {
750 img: 1,
751 table: 1,
752 tbody: 1,
753 thead: 1,
754 tfoot: 1,
755 input: 1,
756 select: 1,
757 textarea: 1
758 },
759 selection = editor.getSelection();
760
761 // Widget duck typing, we don't want to show display text for widgets.
762 if ( editor.widgets && editor.widgets.focused ) {
763 return false;
764 }
765
766 if ( selection && selection.getRanges().length > 1 ) {
767 return false;
768 }
769
770 return !element || !element.getName || !element.is( undesiredElements );
704 } 771 }
705 }; 772 };
706 773
@@ -709,8 +776,29 @@
709 CKEDITOR.unlinkCommand = function() {}; 776 CKEDITOR.unlinkCommand = function() {};
710 CKEDITOR.unlinkCommand.prototype = { 777 CKEDITOR.unlinkCommand.prototype = {
711 exec: function( editor ) { 778 exec: function( editor ) {
779 // IE/Edge removes link from selection while executing "unlink" command when cursor
780 // is right before/after link's text. Therefore whole link must be selected and the
781 // position of cursor must be restored to its initial state after unlinking. (http://dev.ckeditor.com/ticket/13062)
782 if ( CKEDITOR.env.ie ) {
783 var range = editor.getSelection().getRanges()[ 0 ],
784 link = ( range.getPreviousEditableNode() && range.getPreviousEditableNode().getAscendant( 'a', true ) ) ||
785 ( range.getNextEditableNode() && range.getNextEditableNode().getAscendant( 'a', true ) ),
786 bookmark;
787
788 if ( range.collapsed && link ) {
789 bookmark = range.createBookmark();
790 range.selectNodeContents( link );
791 range.select();
792 }
793 }
794
712 var style = new CKEDITOR.style( { element: 'a', type: CKEDITOR.STYLE_INLINE, alwaysRemoveElement: 1 } ); 795 var style = new CKEDITOR.style( { element: 'a', type: CKEDITOR.STYLE_INLINE, alwaysRemoveElement: 1 } );
713 editor.removeStyle( style ); 796 editor.removeStyle( style );
797
798 if ( bookmark ) {
799 range.moveToBookmark( bookmark );
800 range.select();
801 }
714 }, 802 },
715 803
716 refresh: function( editor, path ) { 804 refresh: function( editor, path ) {
@@ -727,7 +815,8 @@
727 815
728 contextSensitive: 1, 816 contextSensitive: 1,
729 startDisabled: 1, 817 startDisabled: 1,
730 requiredContent: 'a[href]' 818 requiredContent: 'a[href]',
819 editorFocus: 1
731 }; 820 };
732 821
733 CKEDITOR.removeAnchorCommand = function() {}; 822 CKEDITOR.removeAnchorCommand = function() {};
diff --git a/sources/plugins/list/icons/bulletedlist-rtl.png b/sources/plugins/list/icons/bulletedlist-rtl.png
index 766814a..2fed6b5 100644
--- a/sources/plugins/list/icons/bulletedlist-rtl.png
+++ b/sources/plugins/list/icons/bulletedlist-rtl.png
Binary files differ
diff --git a/sources/plugins/list/icons/bulletedlist.png b/sources/plugins/list/icons/bulletedlist.png
index e57ec7a..8d33138 100644
--- a/sources/plugins/list/icons/bulletedlist.png
+++ b/sources/plugins/list/icons/bulletedlist.png
Binary files differ
diff --git a/sources/plugins/list/icons/hidpi/bulletedlist-rtl.png b/sources/plugins/list/icons/hidpi/bulletedlist-rtl.png
index 50e3156..7e08fb3 100644
--- a/sources/plugins/list/icons/hidpi/bulletedlist-rtl.png
+++ b/sources/plugins/list/icons/hidpi/bulletedlist-rtl.png
Binary files differ
diff --git a/sources/plugins/list/icons/hidpi/bulletedlist.png b/sources/plugins/list/icons/hidpi/bulletedlist.png
index 00f84d0..796923f 100644
--- a/sources/plugins/list/icons/hidpi/bulletedlist.png
+++ b/sources/plugins/list/icons/hidpi/bulletedlist.png
Binary files differ
diff --git a/sources/plugins/list/icons/hidpi/numberedlist-rtl.png b/sources/plugins/list/icons/hidpi/numberedlist-rtl.png
index 1dff87d..2ece272 100644
--- a/sources/plugins/list/icons/hidpi/numberedlist-rtl.png
+++ b/sources/plugins/list/icons/hidpi/numberedlist-rtl.png
Binary files differ
diff --git a/sources/plugins/list/icons/hidpi/numberedlist.png b/sources/plugins/list/icons/hidpi/numberedlist.png
index c20b88f..20fe003 100644
--- a/sources/plugins/list/icons/hidpi/numberedlist.png
+++ b/sources/plugins/list/icons/hidpi/numberedlist.png
Binary files differ
diff --git a/sources/plugins/list/icons/numberedlist-rtl.png b/sources/plugins/list/icons/numberedlist-rtl.png
index 2c39858..3c62d8d 100644
--- a/sources/plugins/list/icons/numberedlist-rtl.png
+++ b/sources/plugins/list/icons/numberedlist-rtl.png
Binary files differ
diff --git a/sources/plugins/list/icons/numberedlist.png b/sources/plugins/list/icons/numberedlist.png
index f509a85..d47e0d5 100644
--- a/sources/plugins/list/icons/numberedlist.png
+++ b/sources/plugins/list/icons/numberedlist.png
Binary files differ
diff --git a/sources/plugins/list/lang/af.js b/sources/plugins/list/lang/af.js
index 08284ee..6b92ff6 100644
--- a/sources/plugins/list/lang/af.js
+++ b/sources/plugins/list/lang/af.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'list', 'af', { 5CKEDITOR.plugins.setLang( 'list', 'af', {
diff --git a/sources/plugins/list/lang/ar.js b/sources/plugins/list/lang/ar.js
index 4166c77..a7a7de7 100644
--- a/sources/plugins/list/lang/ar.js
+++ b/sources/plugins/list/lang/ar.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'list', 'ar', { 5CKEDITOR.plugins.setLang( 'list', 'ar', {
diff --git a/sources/plugins/list/lang/az.js b/sources/plugins/list/lang/az.js
new file mode 100644
index 0000000..5d4e513
--- /dev/null
+++ b/sources/plugins/list/lang/az.js
@@ -0,0 +1,8 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'list', 'az', {
6 bulletedlist: 'Markerlənmiş siyahını başlat/sil',
7 numberedlist: 'Nömrələnmiş siyahını başlat/sil'
8} );
diff --git a/sources/plugins/list/lang/bg.js b/sources/plugins/list/lang/bg.js
index 919cb64..6ac7ab6 100644
--- a/sources/plugins/list/lang/bg.js
+++ b/sources/plugins/list/lang/bg.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'list', 'bg', { 5CKEDITOR.plugins.setLang( 'list', 'bg', {
diff --git a/sources/plugins/list/lang/bn.js b/sources/plugins/list/lang/bn.js
index 3b0d4d9..cf6a85a 100644
--- a/sources/plugins/list/lang/bn.js
+++ b/sources/plugins/list/lang/bn.js
@@ -1,8 +1,8 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'list', 'bn', { 5CKEDITOR.plugins.setLang( 'list', 'bn', {
6 bulletedlist: 'বুলেট লি বে', 6 bulletedlist: 'বুলেটেড ি /অপসারন করি',
7 numberedlist: 'সাংখ্যিক লিস্টের লেবেল' 7 numberedlist: 'সাংখ্যিক লিস্টের লেবেল'
8} ); 8} );
diff --git a/sources/plugins/list/lang/bs.js b/sources/plugins/list/lang/bs.js
index d32464e..76877b5 100644
--- a/sources/plugins/list/lang/bs.js
+++ b/sources/plugins/list/lang/bs.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'list', 'bs', { 5CKEDITOR.plugins.setLang( 'list', 'bs', {
diff --git a/sources/plugins/list/lang/ca.js b/sources/plugins/list/lang/ca.js
index 10df0a8..408cf53 100644
--- a/sources/plugins/list/lang/ca.js
+++ b/sources/plugins/list/lang/ca.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'list', 'ca', { 5CKEDITOR.plugins.setLang( 'list', 'ca', {
diff --git a/sources/plugins/list/lang/cs.js b/sources/plugins/list/lang/cs.js
index 8df6494..e04b94d 100644
--- a/sources/plugins/list/lang/cs.js
+++ b/sources/plugins/list/lang/cs.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'list', 'cs', { 5CKEDITOR.plugins.setLang( 'list', 'cs', {
diff --git a/sources/plugins/list/lang/cy.js b/sources/plugins/list/lang/cy.js
index b8fbdd1..c786d4b 100644
--- a/sources/plugins/list/lang/cy.js
+++ b/sources/plugins/list/lang/cy.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'list', 'cy', { 5CKEDITOR.plugins.setLang( 'list', 'cy', {
diff --git a/sources/plugins/list/lang/da.js b/sources/plugins/list/lang/da.js
index 9a54f9f..5c90ec9 100644
--- a/sources/plugins/list/lang/da.js
+++ b/sources/plugins/list/lang/da.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'list', 'da', { 5CKEDITOR.plugins.setLang( 'list', 'da', {
diff --git a/sources/plugins/list/lang/de-ch.js b/sources/plugins/list/lang/de-ch.js
index a7566fc..7d72503 100644
--- a/sources/plugins/list/lang/de-ch.js
+++ b/sources/plugins/list/lang/de-ch.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'list', 'de-ch', { 5CKEDITOR.plugins.setLang( 'list', 'de-ch', {
diff --git a/sources/plugins/list/lang/de.js b/sources/plugins/list/lang/de.js
index 0ad08ae..ef4b5f2 100644
--- a/sources/plugins/list/lang/de.js
+++ b/sources/plugins/list/lang/de.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'list', 'de', { 5CKEDITOR.plugins.setLang( 'list', 'de', {
diff --git a/sources/plugins/list/lang/el.js b/sources/plugins/list/lang/el.js
index 248f10b..feeebac 100644
--- a/sources/plugins/list/lang/el.js
+++ b/sources/plugins/list/lang/el.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'list', 'el', { 5CKEDITOR.plugins.setLang( 'list', 'el', {
diff --git a/sources/plugins/list/lang/en-au.js b/sources/plugins/list/lang/en-au.js
index 3aa94b9..d3bbc2b 100644
--- a/sources/plugins/list/lang/en-au.js
+++ b/sources/plugins/list/lang/en-au.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'list', 'en-au', { 5CKEDITOR.plugins.setLang( 'list', 'en-au', {
diff --git a/sources/plugins/list/lang/en-ca.js b/sources/plugins/list/lang/en-ca.js
index 8eee06d..80be02f 100644
--- a/sources/plugins/list/lang/en-ca.js
+++ b/sources/plugins/list/lang/en-ca.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'list', 'en-ca', { 5CKEDITOR.plugins.setLang( 'list', 'en-ca', {
diff --git a/sources/plugins/list/lang/en-gb.js b/sources/plugins/list/lang/en-gb.js
index 7acd42a..07db96c 100644
--- a/sources/plugins/list/lang/en-gb.js
+++ b/sources/plugins/list/lang/en-gb.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'list', 'en-gb', { 5CKEDITOR.plugins.setLang( 'list', 'en-gb', {
diff --git a/sources/plugins/list/lang/en.js b/sources/plugins/list/lang/en.js
index e88b212..0bdc852 100644
--- a/sources/plugins/list/lang/en.js
+++ b/sources/plugins/list/lang/en.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'list', 'en', { 5CKEDITOR.plugins.setLang( 'list', 'en', {
diff --git a/sources/plugins/list/lang/eo.js b/sources/plugins/list/lang/eo.js
index 8b7ead0..9242615 100644
--- a/sources/plugins/list/lang/eo.js
+++ b/sources/plugins/list/lang/eo.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'list', 'eo', { 5CKEDITOR.plugins.setLang( 'list', 'eo', {
diff --git a/sources/plugins/list/lang/es-mx.js b/sources/plugins/list/lang/es-mx.js
new file mode 100644
index 0000000..5e50fcb
--- /dev/null
+++ b/sources/plugins/list/lang/es-mx.js
@@ -0,0 +1,8 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'list', 'es-mx', {
6 bulletedlist: 'Insertar/Remover Lista con viñetas',
7 numberedlist: 'Insertar/Remover Lista numerada'
8} );
diff --git a/sources/plugins/list/lang/es.js b/sources/plugins/list/lang/es.js
index f3c94a1..37f1904 100644
--- a/sources/plugins/list/lang/es.js
+++ b/sources/plugins/list/lang/es.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'list', 'es', { 5CKEDITOR.plugins.setLang( 'list', 'es', {
diff --git a/sources/plugins/list/lang/et.js b/sources/plugins/list/lang/et.js
index fcfe125..498c8a5 100644
--- a/sources/plugins/list/lang/et.js
+++ b/sources/plugins/list/lang/et.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'list', 'et', { 5CKEDITOR.plugins.setLang( 'list', 'et', {
diff --git a/sources/plugins/list/lang/eu.js b/sources/plugins/list/lang/eu.js
index 7b96e14..254793d 100644
--- a/sources/plugins/list/lang/eu.js
+++ b/sources/plugins/list/lang/eu.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'list', 'eu', { 5CKEDITOR.plugins.setLang( 'list', 'eu', {
diff --git a/sources/plugins/list/lang/fa.js b/sources/plugins/list/lang/fa.js
index 43d91ed..af3f9dd 100644
--- a/sources/plugins/list/lang/fa.js
+++ b/sources/plugins/list/lang/fa.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'list', 'fa', { 5CKEDITOR.plugins.setLang( 'list', 'fa', {
diff --git a/sources/plugins/list/lang/fi.js b/sources/plugins/list/lang/fi.js
index b80340f..3874597 100644
--- a/sources/plugins/list/lang/fi.js
+++ b/sources/plugins/list/lang/fi.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'list', 'fi', { 5CKEDITOR.plugins.setLang( 'list', 'fi', {
diff --git a/sources/plugins/list/lang/fo.js b/sources/plugins/list/lang/fo.js
index 812fa3f..416c667 100644
--- a/sources/plugins/list/lang/fo.js
+++ b/sources/plugins/list/lang/fo.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'list', 'fo', { 5CKEDITOR.plugins.setLang( 'list', 'fo', {
diff --git a/sources/plugins/list/lang/fr-ca.js b/sources/plugins/list/lang/fr-ca.js
index f7bb322..e9eb2b7 100644
--- a/sources/plugins/list/lang/fr-ca.js
+++ b/sources/plugins/list/lang/fr-ca.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'list', 'fr-ca', { 5CKEDITOR.plugins.setLang( 'list', 'fr-ca', {
diff --git a/sources/plugins/list/lang/fr.js b/sources/plugins/list/lang/fr.js
index f559f97..cb49ec7 100644
--- a/sources/plugins/list/lang/fr.js
+++ b/sources/plugins/list/lang/fr.js
@@ -1,8 +1,8 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'list', 'fr', { 5CKEDITOR.plugins.setLang( 'list', 'fr', {
6 bulletedlist: 'Insérer/Supprimer la liste à puces', 6 bulletedlist: 'Insérer/Supprimer une liste à puces',
7 numberedlist: 'Insérer/Supprimer la liste numérotée' 7 numberedlist: 'Insérer/Supprimer une liste numérotée'
8} ); 8} );
diff --git a/sources/plugins/list/lang/gl.js b/sources/plugins/list/lang/gl.js
index d89d402..d020a69 100644
--- a/sources/plugins/list/lang/gl.js
+++ b/sources/plugins/list/lang/gl.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'list', 'gl', { 5CKEDITOR.plugins.setLang( 'list', 'gl', {
diff --git a/sources/plugins/list/lang/gu.js b/sources/plugins/list/lang/gu.js
index 8381217..24a728f 100644
--- a/sources/plugins/list/lang/gu.js
+++ b/sources/plugins/list/lang/gu.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'list', 'gu', { 5CKEDITOR.plugins.setLang( 'list', 'gu', {
diff --git a/sources/plugins/list/lang/he.js b/sources/plugins/list/lang/he.js
index 2c0f892..118ddae 100644
--- a/sources/plugins/list/lang/he.js
+++ b/sources/plugins/list/lang/he.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'list', 'he', { 5CKEDITOR.plugins.setLang( 'list', 'he', {
diff --git a/sources/plugins/list/lang/hi.js b/sources/plugins/list/lang/hi.js
index 6bf594d..a6bbca5 100644
--- a/sources/plugins/list/lang/hi.js
+++ b/sources/plugins/list/lang/hi.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'list', 'hi', { 5CKEDITOR.plugins.setLang( 'list', 'hi', {
diff --git a/sources/plugins/list/lang/hr.js b/sources/plugins/list/lang/hr.js
index 5df25cc..ceb0a4c 100644
--- a/sources/plugins/list/lang/hr.js
+++ b/sources/plugins/list/lang/hr.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'list', 'hr', { 5CKEDITOR.plugins.setLang( 'list', 'hr', {
diff --git a/sources/plugins/list/lang/hu.js b/sources/plugins/list/lang/hu.js
index 39b40db..cf2fe96 100644
--- a/sources/plugins/list/lang/hu.js
+++ b/sources/plugins/list/lang/hu.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'list', 'hu', { 5CKEDITOR.plugins.setLang( 'list', 'hu', {
diff --git a/sources/plugins/list/lang/id.js b/sources/plugins/list/lang/id.js
index def3199..0b360dc 100644
--- a/sources/plugins/list/lang/id.js
+++ b/sources/plugins/list/lang/id.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'list', 'id', { 5CKEDITOR.plugins.setLang( 'list', 'id', {
diff --git a/sources/plugins/list/lang/is.js b/sources/plugins/list/lang/is.js
index ea4ac73..a23e87e 100644
--- a/sources/plugins/list/lang/is.js
+++ b/sources/plugins/list/lang/is.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'list', 'is', { 5CKEDITOR.plugins.setLang( 'list', 'is', {
diff --git a/sources/plugins/list/lang/it.js b/sources/plugins/list/lang/it.js
index 1a3c53b..611f6fb 100644
--- a/sources/plugins/list/lang/it.js
+++ b/sources/plugins/list/lang/it.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'list', 'it', { 5CKEDITOR.plugins.setLang( 'list', 'it', {
diff --git a/sources/plugins/list/lang/ja.js b/sources/plugins/list/lang/ja.js
index 3d5b448..c2df282 100644
--- a/sources/plugins/list/lang/ja.js
+++ b/sources/plugins/list/lang/ja.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'list', 'ja', { 5CKEDITOR.plugins.setLang( 'list', 'ja', {
diff --git a/sources/plugins/list/lang/ka.js b/sources/plugins/list/lang/ka.js
index e5c1a3b..2053130 100644
--- a/sources/plugins/list/lang/ka.js
+++ b/sources/plugins/list/lang/ka.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'list', 'ka', { 5CKEDITOR.plugins.setLang( 'list', 'ka', {
diff --git a/sources/plugins/list/lang/km.js b/sources/plugins/list/lang/km.js
index 4df9646..71c0c7b 100644
--- a/sources/plugins/list/lang/km.js
+++ b/sources/plugins/list/lang/km.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'list', 'km', { 5CKEDITOR.plugins.setLang( 'list', 'km', {
diff --git a/sources/plugins/list/lang/ko.js b/sources/plugins/list/lang/ko.js
index 73deb19..48b4fd0 100644
--- a/sources/plugins/list/lang/ko.js
+++ b/sources/plugins/list/lang/ko.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'list', 'ko', { 5CKEDITOR.plugins.setLang( 'list', 'ko', {
diff --git a/sources/plugins/list/lang/ku.js b/sources/plugins/list/lang/ku.js
index 585373f..c5d0d9c 100644
--- a/sources/plugins/list/lang/ku.js
+++ b/sources/plugins/list/lang/ku.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'list', 'ku', { 5CKEDITOR.plugins.setLang( 'list', 'ku', {
diff --git a/sources/plugins/list/lang/lt.js b/sources/plugins/list/lang/lt.js
index 820bde9..0eac62e 100644
--- a/sources/plugins/list/lang/lt.js
+++ b/sources/plugins/list/lang/lt.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'list', 'lt', { 5CKEDITOR.plugins.setLang( 'list', 'lt', {
diff --git a/sources/plugins/list/lang/lv.js b/sources/plugins/list/lang/lv.js
index 062effc..6738856 100644
--- a/sources/plugins/list/lang/lv.js
+++ b/sources/plugins/list/lang/lv.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'list', 'lv', { 5CKEDITOR.plugins.setLang( 'list', 'lv', {
diff --git a/sources/plugins/list/lang/mk.js b/sources/plugins/list/lang/mk.js
index 4fa9e4d..4054ea2 100644
--- a/sources/plugins/list/lang/mk.js
+++ b/sources/plugins/list/lang/mk.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'list', 'mk', { 5CKEDITOR.plugins.setLang( 'list', 'mk', {
diff --git a/sources/plugins/list/lang/mn.js b/sources/plugins/list/lang/mn.js
index b12f230..ef9d4e0 100644
--- a/sources/plugins/list/lang/mn.js
+++ b/sources/plugins/list/lang/mn.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'list', 'mn', { 5CKEDITOR.plugins.setLang( 'list', 'mn', {
diff --git a/sources/plugins/list/lang/ms.js b/sources/plugins/list/lang/ms.js
index 1ebba10..6d51a33 100644
--- a/sources/plugins/list/lang/ms.js
+++ b/sources/plugins/list/lang/ms.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'list', 'ms', { 5CKEDITOR.plugins.setLang( 'list', 'ms', {
diff --git a/sources/plugins/list/lang/nb.js b/sources/plugins/list/lang/nb.js
index 1e96a9f..0e817c8 100644
--- a/sources/plugins/list/lang/nb.js
+++ b/sources/plugins/list/lang/nb.js
@@ -1,8 +1,8 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'list', 'nb', { 5CKEDITOR.plugins.setLang( 'list', 'nb', {
6 bulletedlist: 'Legg til / fjern punktmerket liste', 6 bulletedlist: 'Legg til / fjern punktliste',
7 numberedlist: 'Legg til / fjern nummerert liste' 7 numberedlist: 'Legg til / fjern nummerert liste'
8} ); 8} );
diff --git a/sources/plugins/list/lang/nl.js b/sources/plugins/list/lang/nl.js
index 49aeedf..65f71e9 100644
--- a/sources/plugins/list/lang/nl.js
+++ b/sources/plugins/list/lang/nl.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'list', 'nl', { 5CKEDITOR.plugins.setLang( 'list', 'nl', {
diff --git a/sources/plugins/list/lang/no.js b/sources/plugins/list/lang/no.js
index c2794c0..dc129c5 100644
--- a/sources/plugins/list/lang/no.js
+++ b/sources/plugins/list/lang/no.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'list', 'no', { 5CKEDITOR.plugins.setLang( 'list', 'no', {
diff --git a/sources/plugins/list/lang/oc.js b/sources/plugins/list/lang/oc.js
new file mode 100644
index 0000000..4705e9a
--- /dev/null
+++ b/sources/plugins/list/lang/oc.js
@@ -0,0 +1,8 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'list', 'oc', {
6 bulletedlist: 'Inserir/Suprimir una lista amb de piuses',
7 numberedlist: 'Inserir/Suprimir una lista numerotada'
8} );
diff --git a/sources/plugins/list/lang/pl.js b/sources/plugins/list/lang/pl.js
index c95238e..0a0e552 100644
--- a/sources/plugins/list/lang/pl.js
+++ b/sources/plugins/list/lang/pl.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'list', 'pl', { 5CKEDITOR.plugins.setLang( 'list', 'pl', {
diff --git a/sources/plugins/list/lang/pt-br.js b/sources/plugins/list/lang/pt-br.js
index 47faf0c..b0edd8e 100644
--- a/sources/plugins/list/lang/pt-br.js
+++ b/sources/plugins/list/lang/pt-br.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'list', 'pt-br', { 5CKEDITOR.plugins.setLang( 'list', 'pt-br', {
diff --git a/sources/plugins/list/lang/pt.js b/sources/plugins/list/lang/pt.js
index 36c8be8..52d4348 100644
--- a/sources/plugins/list/lang/pt.js
+++ b/sources/plugins/list/lang/pt.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'list', 'pt', { 5CKEDITOR.plugins.setLang( 'list', 'pt', {
diff --git a/sources/plugins/list/lang/ro.js b/sources/plugins/list/lang/ro.js
index ae66ff3..c229901 100644
--- a/sources/plugins/list/lang/ro.js
+++ b/sources/plugins/list/lang/ro.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'list', 'ro', { 5CKEDITOR.plugins.setLang( 'list', 'ro', {
diff --git a/sources/plugins/list/lang/ru.js b/sources/plugins/list/lang/ru.js
index 293ecbd..862fa78 100644
--- a/sources/plugins/list/lang/ru.js
+++ b/sources/plugins/list/lang/ru.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'list', 'ru', { 5CKEDITOR.plugins.setLang( 'list', 'ru', {
diff --git a/sources/plugins/list/lang/si.js b/sources/plugins/list/lang/si.js
index 02566bc..de2fc4d 100644
--- a/sources/plugins/list/lang/si.js
+++ b/sources/plugins/list/lang/si.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'list', 'si', { 5CKEDITOR.plugins.setLang( 'list', 'si', {
diff --git a/sources/plugins/list/lang/sk.js b/sources/plugins/list/lang/sk.js
index 4621b15..11ca0ee 100644
--- a/sources/plugins/list/lang/sk.js
+++ b/sources/plugins/list/lang/sk.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'list', 'sk', { 5CKEDITOR.plugins.setLang( 'list', 'sk', {
diff --git a/sources/plugins/list/lang/sl.js b/sources/plugins/list/lang/sl.js
index 40c1d8d..368f9f6 100644
--- a/sources/plugins/list/lang/sl.js
+++ b/sources/plugins/list/lang/sl.js
@@ -1,8 +1,8 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'list', 'sl', { 5CKEDITOR.plugins.setLang( 'list', 'sl', {
6 bulletedlist: 'Označen seznam', 6 bulletedlist: 'Vstavi/odstrani neoštevilčen seznam',
7 numberedlist: 'Oštevilčen seznam' 7 numberedlist: 'Vstavi/odstrani oštevilčen seznam'
8} ); 8} );
diff --git a/sources/plugins/list/lang/sq.js b/sources/plugins/list/lang/sq.js
index d63dab0..121b41e 100644
--- a/sources/plugins/list/lang/sq.js
+++ b/sources/plugins/list/lang/sq.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'list', 'sq', { 5CKEDITOR.plugins.setLang( 'list', 'sq', {
diff --git a/sources/plugins/list/lang/sr-latn.js b/sources/plugins/list/lang/sr-latn.js
index 990fd21..134aa69 100644
--- a/sources/plugins/list/lang/sr-latn.js
+++ b/sources/plugins/list/lang/sr-latn.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'list', 'sr-latn', { 5CKEDITOR.plugins.setLang( 'list', 'sr-latn', {
diff --git a/sources/plugins/list/lang/sr.js b/sources/plugins/list/lang/sr.js
index 5853621..c54ca8a 100644
--- a/sources/plugins/list/lang/sr.js
+++ b/sources/plugins/list/lang/sr.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'list', 'sr', { 5CKEDITOR.plugins.setLang( 'list', 'sr', {
diff --git a/sources/plugins/list/lang/sv.js b/sources/plugins/list/lang/sv.js
index fa93ade..3a12793 100644
--- a/sources/plugins/list/lang/sv.js
+++ b/sources/plugins/list/lang/sv.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'list', 'sv', { 5CKEDITOR.plugins.setLang( 'list', 'sv', {
diff --git a/sources/plugins/list/lang/th.js b/sources/plugins/list/lang/th.js
index fa84203..8a47731 100644
--- a/sources/plugins/list/lang/th.js
+++ b/sources/plugins/list/lang/th.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'list', 'th', { 5CKEDITOR.plugins.setLang( 'list', 'th', {
diff --git a/sources/plugins/list/lang/tr.js b/sources/plugins/list/lang/tr.js
index 8e8d925..976e479 100644
--- a/sources/plugins/list/lang/tr.js
+++ b/sources/plugins/list/lang/tr.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'list', 'tr', { 5CKEDITOR.plugins.setLang( 'list', 'tr', {
diff --git a/sources/plugins/list/lang/tt.js b/sources/plugins/list/lang/tt.js
index 2c5da84..eb103ab 100644
--- a/sources/plugins/list/lang/tt.js
+++ b/sources/plugins/list/lang/tt.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'list', 'tt', { 5CKEDITOR.plugins.setLang( 'list', 'tt', {
diff --git a/sources/plugins/list/lang/ug.js b/sources/plugins/list/lang/ug.js
index 5323bee..442b92e 100644
--- a/sources/plugins/list/lang/ug.js
+++ b/sources/plugins/list/lang/ug.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'list', 'ug', { 5CKEDITOR.plugins.setLang( 'list', 'ug', {
diff --git a/sources/plugins/list/lang/uk.js b/sources/plugins/list/lang/uk.js
index 5ee50a7..65a3e1d 100644
--- a/sources/plugins/list/lang/uk.js
+++ b/sources/plugins/list/lang/uk.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'list', 'uk', { 5CKEDITOR.plugins.setLang( 'list', 'uk', {
diff --git a/sources/plugins/list/lang/vi.js b/sources/plugins/list/lang/vi.js
index 506567e..e9e3acc 100644
--- a/sources/plugins/list/lang/vi.js
+++ b/sources/plugins/list/lang/vi.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'list', 'vi', { 5CKEDITOR.plugins.setLang( 'list', 'vi', {
diff --git a/sources/plugins/list/lang/zh-cn.js b/sources/plugins/list/lang/zh-cn.js
index 9eb185f..5e0408b 100644
--- a/sources/plugins/list/lang/zh-cn.js
+++ b/sources/plugins/list/lang/zh-cn.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'list', 'zh-cn', { 5CKEDITOR.plugins.setLang( 'list', 'zh-cn', {
diff --git a/sources/plugins/list/lang/zh.js b/sources/plugins/list/lang/zh.js
index ae02b93..3d207d6 100644
--- a/sources/plugins/list/lang/zh.js
+++ b/sources/plugins/list/lang/zh.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'list', 'zh', { 5CKEDITOR.plugins.setLang( 'list', 'zh', {
diff --git a/sources/plugins/list/plugin.js b/sources/plugins/list/plugin.js
index 68b4f02..73f5d0b 100644
--- a/sources/plugins/list/plugin.js
+++ b/sources/plugins/list/plugin.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -60,7 +60,7 @@
60 for ( var i = 0, count = listNode.getChildCount(); i < count; i++ ) { 60 for ( var i = 0, count = listNode.getChildCount(); i < count; i++ ) {
61 var listItem = listNode.getChild( i ); 61 var listItem = listNode.getChild( i );
62 62
63 // Fixing malformed nested lists by moving it into a previous list item. (#6236) 63 // Fixing malformed nested lists by moving it into a previous list item. (http://dev.ckeditor.com/ticket/6236)
64 if ( listItem.type == CKEDITOR.NODE_ELEMENT && listItem.getName() in CKEDITOR.dtd.$list ) 64 if ( listItem.type == CKEDITOR.NODE_ELEMENT && listItem.getName() in CKEDITOR.dtd.$list )
65 CKEDITOR.plugins.list.listToArray( listItem, database, baseArray, baseIndentLevel + 1 ); 65 CKEDITOR.plugins.list.listToArray( listItem, database, baseArray, baseIndentLevel + 1 );
66 66
@@ -137,13 +137,13 @@
137 currentListItem.append( item.contents[ i ].clone( 1, 1 ) ); 137 currentListItem.append( item.contents[ i ].clone( 1, 1 ) );
138 currentIndex++; 138 currentIndex++;
139 } else if ( item.indent == Math.max( indentLevel, 0 ) + 1 ) { 139 } else if ( item.indent == Math.max( indentLevel, 0 ) + 1 ) {
140 // Maintain original direction (#6861). 140 // Maintain original direction (http://dev.ckeditor.com/ticket/6861).
141 var currDir = listArray[ currentIndex - 1 ].element.getDirection( 1 ), 141 var currDir = listArray[ currentIndex - 1 ].element.getDirection( 1 ),
142 listData = CKEDITOR.plugins.list.arrayToList( listArray, null, currentIndex, paragraphMode, currDir != orgDir ? orgDir : null ); 142 listData = CKEDITOR.plugins.list.arrayToList( listArray, null, currentIndex, paragraphMode, currDir != orgDir ? orgDir : null );
143 143
144 // If the next block is an <li> with another list tree as the first 144 // If the next block is an <li> with another list tree as the first
145 // child, we'll need to append a filler (<br>/NBSP) or the list item 145 // child, we'll need to append a filler (<br>/NBSP) or the list item
146 // wouldn't be editable. (#6724) 146 // wouldn't be editable. (http://dev.ckeditor.com/ticket/6724)
147 if ( !currentListItem.getChildCount() && CKEDITOR.env.needsNbspFiller && doc.$.documentMode <= 7 ) 147 if ( !currentListItem.getChildCount() && CKEDITOR.env.needsNbspFiller && doc.$.documentMode <= 7 )
148 currentListItem.append( doc.createText( '\xa0' ) ); 148 currentListItem.append( doc.createText( '\xa0' ) );
149 currentListItem.append( listData.listNode ); 149 currentListItem.append( listData.listNode );
@@ -416,7 +416,7 @@
416 contentBlock.appendTo( listItem ); 416 contentBlock.appendTo( listItem );
417 else { 417 else {
418 contentBlock.copyAttributes( listItem ); 418 contentBlock.copyAttributes( listItem );
419 // Remove direction attribute after it was merged into list root. (#7657) 419 // Remove direction attribute after it was merged into list root. (http://dev.ckeditor.com/ticket/7657)
420 if ( listDir && contentBlock.getDirection() ) { 420 if ( listDir && contentBlock.getDirection() ) {
421 listItem.removeStyle( 'direction' ); 421 listItem.removeStyle( 'direction' );
422 listItem.removeAttribute( 'dir' ); 422 listItem.removeAttribute( 'dir' );
@@ -477,7 +477,7 @@
477 477
478 var newList = CKEDITOR.plugins.list.arrayToList( listArray, database, null, editor.config.enterMode, groupObj.root.getAttribute( 'dir' ) ); 478 var newList = CKEDITOR.plugins.list.arrayToList( listArray, database, null, editor.config.enterMode, groupObj.root.getAttribute( 'dir' ) );
479 479
480 // Compensate <br> before/after the list node if the surrounds are non-blocks.(#3836) 480 // Compensate <br> before/after the list node if the surrounds are non-blocks.(http://dev.ckeditor.com/ticket/3836)
481 var docFragment = newList.listNode, 481 var docFragment = newList.listNode,
482 boundaryNode, siblingNode; 482 boundaryNode, siblingNode;
483 483
@@ -504,9 +504,9 @@
504 // Checks wheather this block should be element preserved (not transformed to <li>) when creating list. 504 // Checks wheather this block should be element preserved (not transformed to <li>) when creating list.
505 function shouldPreserveBlock( block ) { 505 function shouldPreserveBlock( block ) {
506 return ( 506 return (
507 // #5335 507 // http://dev.ckeditor.com/ticket/5335
508 block.is( 'pre' ) || 508 block.is( 'pre' ) ||
509 // #5271 - this is a header. 509 // http://dev.ckeditor.com/ticket/5271 - this is a header.
510 headerTagRegex.test( block.getName() ) || 510 headerTagRegex.test( block.getName() ) ||
511 // 11083 - this is a non-editable element. 511 // 11083 - this is a non-editable element.
512 block.getAttribute( 'contenteditable' ) == 'false' 512 block.getAttribute( 'contenteditable' ) == 'false'
@@ -523,7 +523,7 @@
523 523
524 var elementType = CKEDITOR.dom.walker.nodeType( CKEDITOR.NODE_ELEMENT ); 524 var elementType = CKEDITOR.dom.walker.nodeType( CKEDITOR.NODE_ELEMENT );
525 525
526 // Merge child nodes with direction preserved. (#7448) 526 // Merge child nodes with direction preserved. (http://dev.ckeditor.com/ticket/7448)
527 function mergeChildren( from, into, refNode, forward ) { 527 function mergeChildren( from, into, refNode, forward ) {
528 var child, itemDir; 528 var child, itemDir;
529 while ( ( child = from[ forward ? 'getLast' : 'getFirst' ]( elementType ) ) ) { 529 while ( ( child = from[ forward ? 'getLast' : 'getFirst' ]( elementType ) ) ) {
@@ -556,7 +556,7 @@
556 selection.selectRanges( ranges ); 556 selection.selectRanges( ranges );
557 } 557 }
558 // Maybe a single range there enclosing the whole list, 558 // Maybe a single range there enclosing the whole list,
559 // turn on the list state manually(#4129). 559 // turn on the list state manually(http://dev.ckeditor.com/ticket/4129).
560 else { 560 else {
561 var range = ranges.length == 1 && ranges[ 0 ], 561 var range = ranges.length == 1 && ranges[ 0 ],
562 enclosedNode = range && range.getEnclosedNode(); 562 enclosedNode = range && range.getEnclosedNode();
@@ -606,13 +606,13 @@
606 606
607 // First, try to group by a list ancestor. 607 // First, try to group by a list ancestor.
608 for ( var i = pathElementsCount - 1; i >= 0 && ( element = pathElements[ i ] ); i-- ) { 608 for ( var i = pathElementsCount - 1; i >= 0 && ( element = pathElements[ i ] ); i-- ) {
609 // Don't leak outside block limit (#3940). 609 // Don't leak outside block limit (http://dev.ckeditor.com/ticket/3940).
610 if ( listNodeNames[ element.getName() ] && blockLimit.contains( element ) ) { 610 if ( listNodeNames[ element.getName() ] && blockLimit.contains( element ) ) {
611 // If we've encountered a list inside a block limit 611 // If we've encountered a list inside a block limit
612 // The last group object of the block limit element should 612 // The last group object of the block limit element should
613 // no longer be valid. Since paragraphs after the list 613 // no longer be valid. Since paragraphs after the list
614 // should belong to a different group of paragraphs before 614 // should belong to a different group of paragraphs before
615 // the list. (Bug #1309) 615 // the list. (Bug http://dev.ckeditor.com/ticket/1309)
616 blockLimit.removeCustomData( 'list_group_object_' + index ); 616 blockLimit.removeCustomData( 'list_group_object_' + index );
617 617
618 var groupObj = element.getCustomData( 'list_group_object' ); 618 var groupObj = element.getCustomData( 'list_group_object' );
@@ -688,7 +688,7 @@
688 function mergeSibling( rtl ) { 688 function mergeSibling( rtl ) {
689 var sibling = listNode[ rtl ? 'getPrevious' : 'getNext' ]( nonEmpty ); 689 var sibling = listNode[ rtl ? 'getPrevious' : 'getNext' ]( nonEmpty );
690 if ( sibling && sibling.type == CKEDITOR.NODE_ELEMENT && sibling.is( listNode.getName() ) ) { 690 if ( sibling && sibling.type == CKEDITOR.NODE_ELEMENT && sibling.is( listNode.getName() ) ) {
691 // Move children order by merge direction.(#3820) 691 // Move children order by merge direction.(http://dev.ckeditor.com/ticket/3820)
692 mergeChildren( listNode, sibling, null, !rtl ); 692 mergeChildren( listNode, sibling, null, !rtl );
693 693
694 listNode.remove(); 694 listNode.remove();
@@ -770,7 +770,7 @@
770 nextPath = nextCursor.startPath(); 770 nextPath = nextCursor.startPath();
771 nextBlock = nextPath.block; 771 nextBlock = nextPath.block;
772 772
773 // Abort when nothing to be removed (#10890). 773 // Abort when nothing to be removed (http://dev.ckeditor.com/ticket/10890).
774 if ( !nextBlock ) 774 if ( !nextBlock )
775 break; 775 break;
776 776
@@ -785,7 +785,7 @@
785 nextBlock.remove(); 785 nextBlock.remove();
786 } 786 }
787 787
788 // Check if need to further merge with the list resides after the merged block. (#9080) 788 // Check if need to further merge with the list resides after the merged block. (http://dev.ckeditor.com/ticket/9080)
789 var walkerRng = nextCursor.clone(), editable = editor.editable(); 789 var walkerRng = nextCursor.clone(), editable = editor.editable();
790 walkerRng.setEndAt( editable, CKEDITOR.POSITION_BEFORE_END ); 790 walkerRng.setEndAt( editable, CKEDITOR.POSITION_BEFORE_END );
791 var walker = new CKEDITOR.dom.walker( walkerRng ); 791 var walker = new CKEDITOR.dom.walker( walkerRng );
@@ -811,7 +811,7 @@
811 811
812 CKEDITOR.plugins.add( 'list', { 812 CKEDITOR.plugins.add( 'list', {
813 // jscs:disable maximumLineLength 813 // jscs:disable maximumLineLength
814 lang: 'af,ar,bg,bn,bs,ca,cs,cy,da,de,de-ch,el,en,en-au,en-ca,en-gb,eo,es,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,pl,pt,pt-br,ro,ru,si,sk,sl,sq,sr,sr-latn,sv,th,tr,tt,ug,uk,vi,zh,zh-cn', // %REMOVE_LINE_CORE% 814 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', // %REMOVE_LINE_CORE%
815 // jscs:enable maximumLineLength 815 // jscs:enable maximumLineLength
816 icons: 'bulletedlist,bulletedlist-rtl,numberedlist,numberedlist-rtl', // %REMOVE_LINE_CORE% 816 icons: 'bulletedlist,bulletedlist-rtl,numberedlist,numberedlist-rtl', // %REMOVE_LINE_CORE%
817 hidpi: true, // %REMOVE_LINE_CORE% 817 hidpi: true, // %REMOVE_LINE_CORE%
@@ -840,7 +840,7 @@
840 } ); 840 } );
841 } 841 }
842 842
843 // Handled backspace/del key to join list items. (#8248,#9080) 843 // Handled backspace/del key to join list items. (http://dev.ckeditor.com/ticket/8248,http://dev.ckeditor.com/ticket/9080)
844 editor.on( 'key', function( evt ) { 844 editor.on( 'key', function( evt ) {
845 // Use getKey directly in order to ignore modifiers. 845 // Use getKey directly in order to ignore modifiers.
846 // Justification: http://dev.ckeditor.com/ticket/11861#comment:13 846 // Justification: http://dev.ckeditor.com/ticket/11861#comment:13
@@ -908,7 +908,7 @@
908 // Place cursor at the end of previous block. 908 // Place cursor at the end of previous block.
909 cursor.moveToElementEditEnd( joinWith ); 909 cursor.moveToElementEditEnd( joinWith );
910 910
911 // And then just before end of closest block element (#12729). 911 // And then just before end of closest block element (http://dev.ckeditor.com/ticket/12729).
912 cursor.moveToPosition( cursor.endPath().block, CKEDITOR.POSITION_BEFORE_END ); 912 cursor.moveToPosition( cursor.endPath().block, CKEDITOR.POSITION_BEFORE_END );
913 } 913 }
914 } 914 }
@@ -919,7 +919,7 @@
919 } 919 }
920 else { 920 else {
921 var list = path.contains( listNodeNames ); 921 var list = path.contains( listNodeNames );
922 // Backspace pressed at the start of list outdents the first list item. (#9129) 922 // Backspace pressed at the start of list outdents the first list item. (http://dev.ckeditor.com/ticket/9129)
923 if ( list && range.checkBoundaryOfElement( list, CKEDITOR.START ) ) { 923 if ( list && range.checkBoundaryOfElement( list, CKEDITOR.START ) ) {
924 li = list.getFirst( nonEmpty ); 924 li = list.getFirst( nonEmpty );
925 925
@@ -981,7 +981,7 @@
981 nextLine = range.clone(); 981 nextLine = range.clone();
982 nextLine.moveToElementEditStart( next ); 982 nextLine.moveToElementEditStart( next );
983 983
984 // #13409 984 // http://dev.ckeditor.com/ticket/13409
985 // For the following case and similar 985 // For the following case and similar
986 // 986 //
987 // <ul> 987 // <ul>
@@ -1049,7 +1049,7 @@
1049 } 1049 }
1050 } 1050 }
1051 1051
1052 // Moving `cursor` and `next line` only when at the end literally (#12729). 1052 // Moving `cursor` and `next line` only when at the end literally (http://dev.ckeditor.com/ticket/12729).
1053 if ( isAtEnd == 2 ) { 1053 if ( isAtEnd == 2 ) {
1054 cursor.moveToPosition( cursor.endPath().block, CKEDITOR.POSITION_BEFORE_END ); 1054 cursor.moveToPosition( cursor.endPath().block, CKEDITOR.POSITION_BEFORE_END );
1055 1055
diff --git a/sources/plugins/listblock/plugin.js b/sources/plugins/listblock/plugin.js
index e998167..100159a 100644
--- a/sources/plugins/listblock/plugin.js
+++ b/sources/plugins/listblock/plugin.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -12,7 +12,7 @@ CKEDITOR.plugins.add( 'listblock', {
12 '<a id="{id}_option" _cke_focus=1 hidefocus=true' + 12 '<a id="{id}_option" _cke_focus=1 hidefocus=true' +
13 ' title="{title}"' + 13 ' title="{title}"' +
14 ' href="javascript:void(\'{val}\')" ' + 14 ' href="javascript:void(\'{val}\')" ' +
15 ' {onclick}="CKEDITOR.tools.callFunction({clickFn},\'{val}\'); return false;"' + // #188 15 ' {onclick}="CKEDITOR.tools.callFunction({clickFn},\'{val}\'); return false;"' + // http://dev.ckeditor.com/ticket/188
16 ' role="option">' + 16 ' role="option">' +
17 '{text}' + 17 '{text}' +
18 '</a>' + 18 '</a>' +
@@ -50,7 +50,7 @@ CKEDITOR.plugins.add( 'listblock', {
50 keys[ 38 ] = 'prev'; // ARROW-UP 50 keys[ 38 ] = 'prev'; // ARROW-UP
51 keys[ CKEDITOR.SHIFT + 9 ] = 'prev'; // SHIFT + TAB 51 keys[ CKEDITOR.SHIFT + 9 ] = 'prev'; // SHIFT + TAB
52 keys[ 32 ] = CKEDITOR.env.ie ? 'mouseup' : 'click'; // SPACE 52 keys[ 32 ] = CKEDITOR.env.ie ? 'mouseup' : 'click'; // SPACE
53 CKEDITOR.env.ie && ( keys[ 13 ] = 'mouseup' ); // Manage ENTER, since onclick is blocked in IE (#8041). 53 CKEDITOR.env.ie && ( keys[ 13 ] = 'mouseup' ); // Manage ENTER, since onclick is blocked in IE (http://dev.ckeditor.com/ticket/8041).
54 54
55 this._.pendingHtml = []; 55 this._.pendingHtml = [];
56 this._.pendingList = []; 56 this._.pendingList = [];
@@ -180,6 +180,14 @@ CKEDITOR.plugins.add( 'listblock', {
180 this.onMark && this.onMark( item ); 180 this.onMark && this.onMark( item );
181 }, 181 },
182 182
183 markFirstDisplayed: function() {
184 var context = this;
185 this._.markFirstDisplayed( function() {
186 if ( !context.multiSelect )
187 context.unmarkAll();
188 } );
189 },
190
183 unmark: function( value ) { 191 unmark: function( value ) {
184 var doc = this.element.getDocument(), 192 var doc = this.element.getDocument(),
185 itemId = this._.items[ value ], 193 itemId = this._.items[ value ],
diff --git a/sources/plugins/liststyle/dialogs/liststyle.js b/sources/plugins/liststyle/dialogs/liststyle.js
index c9f3430..4f8f39b 100644
--- a/sources/plugins/liststyle/dialogs/liststyle.js
+++ b/sources/plugins/liststyle/dialogs/liststyle.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/liststyle/lang/af.js b/sources/plugins/liststyle/lang/af.js
index 6e1f287..71ba760 100644
--- a/sources/plugins/liststyle/lang/af.js
+++ b/sources/plugins/liststyle/lang/af.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'liststyle', 'af', { 5CKEDITOR.plugins.setLang( 'liststyle', 'af', {
diff --git a/sources/plugins/liststyle/lang/ar.js b/sources/plugins/liststyle/lang/ar.js
index 39ba5b1..7d961df 100644
--- a/sources/plugins/liststyle/lang/ar.js
+++ b/sources/plugins/liststyle/lang/ar.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'liststyle', 'ar', { 5CKEDITOR.plugins.setLang( 'liststyle', 'ar', {
diff --git a/sources/plugins/liststyle/lang/az.js b/sources/plugins/liststyle/lang/az.js
new file mode 100644
index 0000000..73fc927
--- /dev/null
+++ b/sources/plugins/liststyle/lang/az.js
@@ -0,0 +1,25 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'liststyle', 'az', {
6 armenian: 'Erməni nömrələmə',
7 bulletedTitle: 'Markerlənmiş siyahının xüsusiyyətləri',
8 circle: 'Dəirəcik',
9 decimal: 'Rəqəm (1, 2, 3 və s.)',
10 decimalLeadingZero: 'Aparıcı sıfır olan rəqəm (01, 02, 03 və s.)',
11 disc: 'Disk',
12 georgian: 'Gürcü nömrələmə (an, ban, gan, və s.)',
13 lowerAlpha: 'Kiçik hərflər (a, b, c, d, e və s.)',
14 lowerGreek: 'Kiçik Yunan hərfləri (alfa, beta, qamma və s.)',
15 lowerRoman: 'Rum rəqəmləri (i, ii, iii, iv, v və s.)',
16 none: 'Yoxdur',
17 notset: '<seçilməmiş>',
18 numberedTitle: 'Nömrəli siyahının xüsusiyyətləri',
19 square: 'Dördbucaq',
20 start: 'Başlanğıc',
21 type: 'Növ',
22 upperAlpha: 'Böyük hərflər (a, b, c, d, e və s.)',
23 upperRoman: 'Böyük Rum rəqəmləri (I, II, III, IV, V və s.)',
24 validateStartNumber: 'Siyahının başlanğıc nömrəsi tam və müsbət rəqəm olmalıdır.'
25} );
diff --git a/sources/plugins/liststyle/lang/bg.js b/sources/plugins/liststyle/lang/bg.js
index 99b3535..a119fd4 100644
--- a/sources/plugins/liststyle/lang/bg.js
+++ b/sources/plugins/liststyle/lang/bg.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'liststyle', 'bg', { 5CKEDITOR.plugins.setLang( 'liststyle', 'bg', {
diff --git a/sources/plugins/liststyle/lang/bn.js b/sources/plugins/liststyle/lang/bn.js
index 67081fe..f1b7bf3 100644
--- a/sources/plugins/liststyle/lang/bn.js
+++ b/sources/plugins/liststyle/lang/bn.js
@@ -1,9 +1,9 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'liststyle', 'bn', { 5CKEDITOR.plugins.setLang( 'liststyle', 'bn', {
6 armenian: 'Armenian numbering', 6 armenian: 'আর্মেনিয়ান সংখ্যাক্রমে বিন্যাস',
7 bulletedTitle: 'Bulleted List Properties', 7 bulletedTitle: 'Bulleted List Properties',
8 circle: 'Circle', 8 circle: 'Circle',
9 decimal: 'Decimal (1, 2, 3, etc.)', 9 decimal: 'Decimal (1, 2, 3, etc.)',
diff --git a/sources/plugins/liststyle/lang/bs.js b/sources/plugins/liststyle/lang/bs.js
index 1cf4a07..163d1fb 100644
--- a/sources/plugins/liststyle/lang/bs.js
+++ b/sources/plugins/liststyle/lang/bs.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'liststyle', 'bs', { 5CKEDITOR.plugins.setLang( 'liststyle', 'bs', {
diff --git a/sources/plugins/liststyle/lang/ca.js b/sources/plugins/liststyle/lang/ca.js
index 4f99f3c..8006ff8 100644
--- a/sources/plugins/liststyle/lang/ca.js
+++ b/sources/plugins/liststyle/lang/ca.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'liststyle', 'ca', { 5CKEDITOR.plugins.setLang( 'liststyle', 'ca', {
diff --git a/sources/plugins/liststyle/lang/cs.js b/sources/plugins/liststyle/lang/cs.js
index 9fa682d..c1e9a07 100644
--- a/sources/plugins/liststyle/lang/cs.js
+++ b/sources/plugins/liststyle/lang/cs.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'liststyle', 'cs', { 5CKEDITOR.plugins.setLang( 'liststyle', 'cs', {
diff --git a/sources/plugins/liststyle/lang/cy.js b/sources/plugins/liststyle/lang/cy.js
index d19bafb..97902b5 100644
--- a/sources/plugins/liststyle/lang/cy.js
+++ b/sources/plugins/liststyle/lang/cy.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'liststyle', 'cy', { 5CKEDITOR.plugins.setLang( 'liststyle', 'cy', {
diff --git a/sources/plugins/liststyle/lang/da.js b/sources/plugins/liststyle/lang/da.js
index 3bbdfbf..27c47b5 100644
--- a/sources/plugins/liststyle/lang/da.js
+++ b/sources/plugins/liststyle/lang/da.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'liststyle', 'da', { 5CKEDITOR.plugins.setLang( 'liststyle', 'da', {
diff --git a/sources/plugins/liststyle/lang/de-ch.js b/sources/plugins/liststyle/lang/de-ch.js
index 13bf8c9..47d8634 100644
--- a/sources/plugins/liststyle/lang/de-ch.js
+++ b/sources/plugins/liststyle/lang/de-ch.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'liststyle', 'de-ch', { 5CKEDITOR.plugins.setLang( 'liststyle', 'de-ch', {
diff --git a/sources/plugins/liststyle/lang/de.js b/sources/plugins/liststyle/lang/de.js
index 5117015..cdbf0b3 100644
--- a/sources/plugins/liststyle/lang/de.js
+++ b/sources/plugins/liststyle/lang/de.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'liststyle', 'de', { 5CKEDITOR.plugins.setLang( 'liststyle', 'de', {
diff --git a/sources/plugins/liststyle/lang/el.js b/sources/plugins/liststyle/lang/el.js
index 6965694..2bd7ce2 100644
--- a/sources/plugins/liststyle/lang/el.js
+++ b/sources/plugins/liststyle/lang/el.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'liststyle', 'el', { 5CKEDITOR.plugins.setLang( 'liststyle', 'el', {
diff --git a/sources/plugins/liststyle/lang/en-au.js b/sources/plugins/liststyle/lang/en-au.js
index 2ad0e28..af38b3e 100644
--- a/sources/plugins/liststyle/lang/en-au.js
+++ b/sources/plugins/liststyle/lang/en-au.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'liststyle', 'en-au', { 5CKEDITOR.plugins.setLang( 'liststyle', 'en-au', {
diff --git a/sources/plugins/liststyle/lang/en-ca.js b/sources/plugins/liststyle/lang/en-ca.js
index 55c674a..ce76d82 100644
--- a/sources/plugins/liststyle/lang/en-ca.js
+++ b/sources/plugins/liststyle/lang/en-ca.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'liststyle', 'en-ca', { 5CKEDITOR.plugins.setLang( 'liststyle', 'en-ca', {
diff --git a/sources/plugins/liststyle/lang/en-gb.js b/sources/plugins/liststyle/lang/en-gb.js
index 522112c..7f67124 100644
--- a/sources/plugins/liststyle/lang/en-gb.js
+++ b/sources/plugins/liststyle/lang/en-gb.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'liststyle', 'en-gb', { 5CKEDITOR.plugins.setLang( 'liststyle', 'en-gb', {
diff --git a/sources/plugins/liststyle/lang/en.js b/sources/plugins/liststyle/lang/en.js
index aebe65e..c41b7d7 100644
--- a/sources/plugins/liststyle/lang/en.js
+++ b/sources/plugins/liststyle/lang/en.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'liststyle', 'en', { 5CKEDITOR.plugins.setLang( 'liststyle', 'en', {
diff --git a/sources/plugins/liststyle/lang/eo.js b/sources/plugins/liststyle/lang/eo.js
index 151e47e..b601e76 100644
--- a/sources/plugins/liststyle/lang/eo.js
+++ b/sources/plugins/liststyle/lang/eo.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'liststyle', 'eo', { 5CKEDITOR.plugins.setLang( 'liststyle', 'eo', {
diff --git a/sources/plugins/liststyle/lang/es-mx.js b/sources/plugins/liststyle/lang/es-mx.js
new file mode 100644
index 0000000..56e6fa7
--- /dev/null
+++ b/sources/plugins/liststyle/lang/es-mx.js
@@ -0,0 +1,25 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'liststyle', 'es-mx', {
6 armenian: 'Numeración armenia',
7 bulletedTitle: 'Propiedades de la lista con viñetas',
8 circle: 'Círculo',
9 decimal: 'Decimal (1, 2, 3, etc.)',
10 decimalLeadingZero: 'Decimal con cero (01, 02, 03, etc.)',
11 disc: 'Desc',
12 georgian: 'Numeración gregoriana (an, ban, gan, etc.)',
13 lowerAlpha: 'Alfabeto minúscula (a, b, c, d, e, etc.)',
14 lowerGreek: 'Griego minúscula (alpha, beta, gamma, etc.)',
15 lowerRoman: 'Romano minúscula (i, ii, iii, iv, v, etc.)',
16 none: 'Ninguno',
17 notset: '<not set>',
18 numberedTitle: 'Propiedades de la lista numerada',
19 square: 'Cuadrado',
20 start: 'Inicio',
21 type: 'Tipo',
22 upperAlpha: 'Abecedario mayúscula (A, B, C, D, E, etc.)',
23 upperRoman: 'Romanos mayúscula (I, II, III, IV, V, etc.)',
24 validateStartNumber: 'El número de inicio de la lista debe ser un número entero.'
25} );
diff --git a/sources/plugins/liststyle/lang/es.js b/sources/plugins/liststyle/lang/es.js
index 67f5a0e..75d2920 100644
--- a/sources/plugins/liststyle/lang/es.js
+++ b/sources/plugins/liststyle/lang/es.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'liststyle', 'es', { 5CKEDITOR.plugins.setLang( 'liststyle', 'es', {
diff --git a/sources/plugins/liststyle/lang/et.js b/sources/plugins/liststyle/lang/et.js
index 38273f2..d2dfd5e 100644
--- a/sources/plugins/liststyle/lang/et.js
+++ b/sources/plugins/liststyle/lang/et.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'liststyle', 'et', { 5CKEDITOR.plugins.setLang( 'liststyle', 'et', {
diff --git a/sources/plugins/liststyle/lang/eu.js b/sources/plugins/liststyle/lang/eu.js
index dca69fc..ef616e5 100644
--- a/sources/plugins/liststyle/lang/eu.js
+++ b/sources/plugins/liststyle/lang/eu.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'liststyle', 'eu', { 5CKEDITOR.plugins.setLang( 'liststyle', 'eu', {
diff --git a/sources/plugins/liststyle/lang/fa.js b/sources/plugins/liststyle/lang/fa.js
index e5f3505..7a4517c 100644
--- a/sources/plugins/liststyle/lang/fa.js
+++ b/sources/plugins/liststyle/lang/fa.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'liststyle', 'fa', { 5CKEDITOR.plugins.setLang( 'liststyle', 'fa', {
diff --git a/sources/plugins/liststyle/lang/fi.js b/sources/plugins/liststyle/lang/fi.js
index 83eb343..b0cf1b3 100644
--- a/sources/plugins/liststyle/lang/fi.js
+++ b/sources/plugins/liststyle/lang/fi.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'liststyle', 'fi', { 5CKEDITOR.plugins.setLang( 'liststyle', 'fi', {
diff --git a/sources/plugins/liststyle/lang/fo.js b/sources/plugins/liststyle/lang/fo.js
index 537ec6f..922a85c 100644
--- a/sources/plugins/liststyle/lang/fo.js
+++ b/sources/plugins/liststyle/lang/fo.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'liststyle', 'fo', { 5CKEDITOR.plugins.setLang( 'liststyle', 'fo', {
diff --git a/sources/plugins/liststyle/lang/fr-ca.js b/sources/plugins/liststyle/lang/fr-ca.js
index fa78407..06c2af9 100644
--- a/sources/plugins/liststyle/lang/fr-ca.js
+++ b/sources/plugins/liststyle/lang/fr-ca.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'liststyle', 'fr-ca', { 5CKEDITOR.plugins.setLang( 'liststyle', 'fr-ca', {
diff --git a/sources/plugins/liststyle/lang/fr.js b/sources/plugins/liststyle/lang/fr.js
index af7b112..ccb6944 100644
--- a/sources/plugins/liststyle/lang/fr.js
+++ b/sources/plugins/liststyle/lang/fr.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'liststyle', 'fr', { 5CKEDITOR.plugins.setLang( 'liststyle', 'fr', {
@@ -10,16 +10,16 @@ CKEDITOR.plugins.setLang( 'liststyle', 'fr', {
10 decimalLeadingZero: 'Décimal précédé par un 0 (01, 02, 03, etc.)', 10 decimalLeadingZero: 'Décimal précédé par un 0 (01, 02, 03, etc.)',
11 disc: 'Disque', 11 disc: 'Disque',
12 georgian: 'Numération géorgienne (an, ban, gan, etc.)', 12 georgian: 'Numération géorgienne (an, ban, gan, etc.)',
13 lowerAlpha: 'Alphabétique minuscules (a, b, c, d, e, etc.)', 13 lowerAlpha: 'Lettres minuscules (a, b, c, d, e, etc.)',
14 lowerGreek: 'Grec minuscule (alpha, beta, gamma, etc.)', 14 lowerGreek: 'Grec minuscule (alpha, bêta, gamma, etc.)',
15 lowerRoman: 'Nombres romains minuscules (i, ii, iii, iv, v, etc.)', 15 lowerRoman: 'Chiffres romains minuscules (i, ii, iii, iv, v, etc.)',
16 none: 'Aucun', 16 none: 'Aucun',
17 notset: '<Non défini>', 17 notset: '<indéfini>',
18 numberedTitle: 'Propriétés de la liste numérotée', 18 numberedTitle: 'Propriétés de la liste numérotée',
19 square: 'Carré', 19 square: 'Carré',
20 start: 'Début', 20 start: 'Début',
21 type: 'Type', 21 type: 'Type',
22 upperAlpha: 'Alphabétique majuscules (A, B, C, D, E, etc.)', 22 upperAlpha: 'Lettres majuscules (A, B, C, D, E, etc.)',
23 upperRoman: 'Nombres romains majuscules (I, II, III, IV, V, etc.)', 23 upperRoman: 'Chiffres romains majuscules (I, II, III, IV, V, etc.)',
24 validateStartNumber: 'Le premier élément de la liste doit être un nombre entier.' 24 validateStartNumber: 'Le premier élément de la liste doit être un nombre entier.'
25} ); 25} );
diff --git a/sources/plugins/liststyle/lang/gl.js b/sources/plugins/liststyle/lang/gl.js
index d3511ed..eeb622d 100644
--- a/sources/plugins/liststyle/lang/gl.js
+++ b/sources/plugins/liststyle/lang/gl.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'liststyle', 'gl', { 5CKEDITOR.plugins.setLang( 'liststyle', 'gl', {
diff --git a/sources/plugins/liststyle/lang/gu.js b/sources/plugins/liststyle/lang/gu.js
index dc18140..434f218 100644
--- a/sources/plugins/liststyle/lang/gu.js
+++ b/sources/plugins/liststyle/lang/gu.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'liststyle', 'gu', { 5CKEDITOR.plugins.setLang( 'liststyle', 'gu', {
diff --git a/sources/plugins/liststyle/lang/he.js b/sources/plugins/liststyle/lang/he.js
index 0ad2282..93b6106 100644
--- a/sources/plugins/liststyle/lang/he.js
+++ b/sources/plugins/liststyle/lang/he.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'liststyle', 'he', { 5CKEDITOR.plugins.setLang( 'liststyle', 'he', {
diff --git a/sources/plugins/liststyle/lang/hi.js b/sources/plugins/liststyle/lang/hi.js
index 74333bd..0f1ae03 100644
--- a/sources/plugins/liststyle/lang/hi.js
+++ b/sources/plugins/liststyle/lang/hi.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'liststyle', 'hi', { 5CKEDITOR.plugins.setLang( 'liststyle', 'hi', {
diff --git a/sources/plugins/liststyle/lang/hr.js b/sources/plugins/liststyle/lang/hr.js
index 6f16bc7..8da2ff3 100644
--- a/sources/plugins/liststyle/lang/hr.js
+++ b/sources/plugins/liststyle/lang/hr.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'liststyle', 'hr', { 5CKEDITOR.plugins.setLang( 'liststyle', 'hr', {
diff --git a/sources/plugins/liststyle/lang/hu.js b/sources/plugins/liststyle/lang/hu.js
index ca62ff7..4e3d922 100644
--- a/sources/plugins/liststyle/lang/hu.js
+++ b/sources/plugins/liststyle/lang/hu.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'liststyle', 'hu', { 5CKEDITOR.plugins.setLang( 'liststyle', 'hu', {
diff --git a/sources/plugins/liststyle/lang/id.js b/sources/plugins/liststyle/lang/id.js
index d0a5524..36ec1ec 100644
--- a/sources/plugins/liststyle/lang/id.js
+++ b/sources/plugins/liststyle/lang/id.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'liststyle', 'id', { 5CKEDITOR.plugins.setLang( 'liststyle', 'id', {
diff --git a/sources/plugins/liststyle/lang/is.js b/sources/plugins/liststyle/lang/is.js
index b6ad69f..a05c5bc 100644
--- a/sources/plugins/liststyle/lang/is.js
+++ b/sources/plugins/liststyle/lang/is.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'liststyle', 'is', { 5CKEDITOR.plugins.setLang( 'liststyle', 'is', {
diff --git a/sources/plugins/liststyle/lang/it.js b/sources/plugins/liststyle/lang/it.js
index 7d376a4..6ef919d 100644
--- a/sources/plugins/liststyle/lang/it.js
+++ b/sources/plugins/liststyle/lang/it.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'liststyle', 'it', { 5CKEDITOR.plugins.setLang( 'liststyle', 'it', {
diff --git a/sources/plugins/liststyle/lang/ja.js b/sources/plugins/liststyle/lang/ja.js
index da735ab..e55dafc 100644
--- a/sources/plugins/liststyle/lang/ja.js
+++ b/sources/plugins/liststyle/lang/ja.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'liststyle', 'ja', { 5CKEDITOR.plugins.setLang( 'liststyle', 'ja', {
diff --git a/sources/plugins/liststyle/lang/ka.js b/sources/plugins/liststyle/lang/ka.js
index 8adcd16..0ede82d 100644
--- a/sources/plugins/liststyle/lang/ka.js
+++ b/sources/plugins/liststyle/lang/ka.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'liststyle', 'ka', { 5CKEDITOR.plugins.setLang( 'liststyle', 'ka', {
diff --git a/sources/plugins/liststyle/lang/km.js b/sources/plugins/liststyle/lang/km.js
index 6313931..51d7365 100644
--- a/sources/plugins/liststyle/lang/km.js
+++ b/sources/plugins/liststyle/lang/km.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'liststyle', 'km', { 5CKEDITOR.plugins.setLang( 'liststyle', 'km', {
diff --git a/sources/plugins/liststyle/lang/ko.js b/sources/plugins/liststyle/lang/ko.js
index f3f7669..8b88e2d 100644
--- a/sources/plugins/liststyle/lang/ko.js
+++ b/sources/plugins/liststyle/lang/ko.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'liststyle', 'ko', { 5CKEDITOR.plugins.setLang( 'liststyle', 'ko', {
diff --git a/sources/plugins/liststyle/lang/ku.js b/sources/plugins/liststyle/lang/ku.js
index 3656bef..a3a7b47 100644
--- a/sources/plugins/liststyle/lang/ku.js
+++ b/sources/plugins/liststyle/lang/ku.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'liststyle', 'ku', { 5CKEDITOR.plugins.setLang( 'liststyle', 'ku', {
diff --git a/sources/plugins/liststyle/lang/lt.js b/sources/plugins/liststyle/lang/lt.js
index 444ee89..6b7c949 100644
--- a/sources/plugins/liststyle/lang/lt.js
+++ b/sources/plugins/liststyle/lang/lt.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'liststyle', 'lt', { 5CKEDITOR.plugins.setLang( 'liststyle', 'lt', {
diff --git a/sources/plugins/liststyle/lang/lv.js b/sources/plugins/liststyle/lang/lv.js
index 62d5577..17b6da7 100644
--- a/sources/plugins/liststyle/lang/lv.js
+++ b/sources/plugins/liststyle/lang/lv.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'liststyle', 'lv', { 5CKEDITOR.plugins.setLang( 'liststyle', 'lv', {
diff --git a/sources/plugins/liststyle/lang/mk.js b/sources/plugins/liststyle/lang/mk.js
index 0d0a5aa..dbb640b 100644
--- a/sources/plugins/liststyle/lang/mk.js
+++ b/sources/plugins/liststyle/lang/mk.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'liststyle', 'mk', { 5CKEDITOR.plugins.setLang( 'liststyle', 'mk', {
diff --git a/sources/plugins/liststyle/lang/mn.js b/sources/plugins/liststyle/lang/mn.js
index 6ce43d6..54e884c 100644
--- a/sources/plugins/liststyle/lang/mn.js
+++ b/sources/plugins/liststyle/lang/mn.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'liststyle', 'mn', { 5CKEDITOR.plugins.setLang( 'liststyle', 'mn', {
diff --git a/sources/plugins/liststyle/lang/ms.js b/sources/plugins/liststyle/lang/ms.js
index e916f66..297c02c 100644
--- a/sources/plugins/liststyle/lang/ms.js
+++ b/sources/plugins/liststyle/lang/ms.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'liststyle', 'ms', { 5CKEDITOR.plugins.setLang( 'liststyle', 'ms', {
diff --git a/sources/plugins/liststyle/lang/nb.js b/sources/plugins/liststyle/lang/nb.js
index 7daf0c5..0fe7859 100644
--- a/sources/plugins/liststyle/lang/nb.js
+++ b/sources/plugins/liststyle/lang/nb.js
@@ -1,10 +1,10 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'liststyle', 'nb', { 5CKEDITOR.plugins.setLang( 'liststyle', 'nb', {
6 armenian: 'Armensk nummerering', 6 armenian: 'Armensk nummerering',
7 bulletedTitle: 'Egenskaper for punktmerket liste', 7 bulletedTitle: 'Egenskaper for punktliste',
8 circle: 'Sirkel', 8 circle: 'Sirkel',
9 decimal: 'Tall (1, 2, 3, osv.)', 9 decimal: 'Tall (1, 2, 3, osv.)',
10 decimalLeadingZero: 'Tall, med førstesiffer null (01, 02, 03, osv.)', 10 decimalLeadingZero: 'Tall, med førstesiffer null (01, 02, 03, osv.)',
diff --git a/sources/plugins/liststyle/lang/nl.js b/sources/plugins/liststyle/lang/nl.js
index 22eafc8..88ea3f8 100644
--- a/sources/plugins/liststyle/lang/nl.js
+++ b/sources/plugins/liststyle/lang/nl.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'liststyle', 'nl', { 5CKEDITOR.plugins.setLang( 'liststyle', 'nl', {
diff --git a/sources/plugins/liststyle/lang/no.js b/sources/plugins/liststyle/lang/no.js
index 6fe25f7..26927e6 100644
--- a/sources/plugins/liststyle/lang/no.js
+++ b/sources/plugins/liststyle/lang/no.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'liststyle', 'no', { 5CKEDITOR.plugins.setLang( 'liststyle', 'no', {
diff --git a/sources/plugins/liststyle/lang/oc.js b/sources/plugins/liststyle/lang/oc.js
new file mode 100644
index 0000000..eb64753
--- /dev/null
+++ b/sources/plugins/liststyle/lang/oc.js
@@ -0,0 +1,25 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'liststyle', 'oc', {
6 armenian: 'Numerotacion armènia',
7 bulletedTitle: 'Proprietats de la lista de piuses',
8 circle: 'Cercle',
9 decimal: 'Decimal (1, 2, 3, etc.)',
10 decimalLeadingZero: 'Decimal precedit per un 0 (01, 02, 03, etc.)',
11 disc: 'Disc',
12 georgian: 'Numeracion georgiana (an, ban, gan, etc.)',
13 lowerAlpha: 'Letras minusculas (a, b, c, d, e, etc.)',
14 lowerGreek: 'Grèc minuscula (alfa, bèta, gamma, etc.)',
15 lowerRoman: 'Chifras romanas minusculas (i, ii, iii, iv, v, etc.)',
16 none: 'Pas cap',
17 notset: '<indefinit>',
18 numberedTitle: 'Proprietats de la lista numerotada',
19 square: 'Carrat',
20 start: 'Començament',
21 type: 'Tipe',
22 upperAlpha: 'Letras majusculas (A, B, C, D, E, etc.)',
23 upperRoman: 'Chifras romanas majusculas (I, II, III, IV, V, etc.)',
24 validateStartNumber: 'Lo primièr element de la lista deu èsser un nombre entièr.'
25} );
diff --git a/sources/plugins/liststyle/lang/pl.js b/sources/plugins/liststyle/lang/pl.js
index b119bf2..37d2cd7 100644
--- a/sources/plugins/liststyle/lang/pl.js
+++ b/sources/plugins/liststyle/lang/pl.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'liststyle', 'pl', { 5CKEDITOR.plugins.setLang( 'liststyle', 'pl', {
diff --git a/sources/plugins/liststyle/lang/pt-br.js b/sources/plugins/liststyle/lang/pt-br.js
index 603f10d..c5f0296 100644
--- a/sources/plugins/liststyle/lang/pt-br.js
+++ b/sources/plugins/liststyle/lang/pt-br.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'liststyle', 'pt-br', { 5CKEDITOR.plugins.setLang( 'liststyle', 'pt-br', {
diff --git a/sources/plugins/liststyle/lang/pt.js b/sources/plugins/liststyle/lang/pt.js
index 1d8fd1f..7dc1f25 100644
--- a/sources/plugins/liststyle/lang/pt.js
+++ b/sources/plugins/liststyle/lang/pt.js
@@ -1,25 +1,25 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'liststyle', 'pt', { 5CKEDITOR.plugins.setLang( 'liststyle', 'pt', {
6 armenian: 'Numeração armênia', 6 armenian: 'Numeração armênia',
7 bulletedTitle: 'Bulleted List Properties', 7 bulletedTitle: 'Propriedades da lista o numerada',
8 circle: 'Círculo', 8 circle: 'Círculo',
9 decimal: 'Decimal (1, 2, 3, etc.)', 9 decimal: 'Decimal (1, 2, 3, etc.)',
10 decimalLeadingZero: 'Decimal leading zero (01, 02, 03, etc.)', 10 decimalLeadingZero: 'Zero decimal à esquerda (01, 02, 03, etc.)',
11 disc: 'Disco', 11 disc: 'Disco',
12 georgian: 'Georgian numbering (an, ban, gan, etc.)', 12 georgian: 'Numeração georgiana (an, ban, gan, etc.)',
13 lowerAlpha: 'Lower Alpha (a, b, c, d, e, etc.)', 13 lowerAlpha: 'Minúsculas (a, b, c, d, e, etc.)',
14 lowerGreek: 'Lower Greek (alpha, beta, gamma, etc.)', 14 lowerGreek: 'Grego em minúsculas (alpha, beta, gamma, etc.)',
15 lowerRoman: 'Lower Roman (i, ii, iii, iv, v, etc.)', 15 lowerRoman: 'Romano em minúsculas (i, ii, iii, iv, v, etc.)',
16 none: 'Nenhum', 16 none: 'Nenhum',
17 notset: '<not set>', 17 notset: '<not set>',
18 numberedTitle: 'Numbered List Properties', 18 numberedTitle: 'Numbered List Properties',
19 square: 'Quadrado', 19 square: 'Quadrado',
20 start: 'Iniciar', 20 start: 'Iniciar',
21 type: 'Tipo', 21 type: 'Tipo',
22 upperAlpha: 'Upper Alpha (A, B, C, D, E, etc.)', 22 upperAlpha: 'Maiúsculas (A, B, C, D, E, etc.)',
23 upperRoman: 'Upper Roman (I, II, III, IV, V, etc.)', 23 upperRoman: 'Romanos em maiúscula (I, II, III, IV, V, etc.)',
24 validateStartNumber: 'List start number must be a whole number.' 24 validateStartNumber: 'A lista tem iniciar por um número inteiro'
25} ); 25} );
diff --git a/sources/plugins/liststyle/lang/ro.js b/sources/plugins/liststyle/lang/ro.js
index 926d2aa..5a8c327 100644
--- a/sources/plugins/liststyle/lang/ro.js
+++ b/sources/plugins/liststyle/lang/ro.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'liststyle', 'ro', { 5CKEDITOR.plugins.setLang( 'liststyle', 'ro', {
diff --git a/sources/plugins/liststyle/lang/ru.js b/sources/plugins/liststyle/lang/ru.js
index 27abea0..5bfa8c6 100644
--- a/sources/plugins/liststyle/lang/ru.js
+++ b/sources/plugins/liststyle/lang/ru.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'liststyle', 'ru', { 5CKEDITOR.plugins.setLang( 'liststyle', 'ru', {
diff --git a/sources/plugins/liststyle/lang/si.js b/sources/plugins/liststyle/lang/si.js
index f8699df..b401a13 100644
--- a/sources/plugins/liststyle/lang/si.js
+++ b/sources/plugins/liststyle/lang/si.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'liststyle', 'si', { 5CKEDITOR.plugins.setLang( 'liststyle', 'si', {
diff --git a/sources/plugins/liststyle/lang/sk.js b/sources/plugins/liststyle/lang/sk.js
index 443f41e..2529c18 100644
--- a/sources/plugins/liststyle/lang/sk.js
+++ b/sources/plugins/liststyle/lang/sk.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'liststyle', 'sk', { 5CKEDITOR.plugins.setLang( 'liststyle', 'sk', {
diff --git a/sources/plugins/liststyle/lang/sl.js b/sources/plugins/liststyle/lang/sl.js
index 99a3bf7..bd6c27f 100644
--- a/sources/plugins/liststyle/lang/sl.js
+++ b/sources/plugins/liststyle/lang/sl.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'liststyle', 'sl', { 5CKEDITOR.plugins.setLang( 'liststyle', 'sl', {
diff --git a/sources/plugins/liststyle/lang/sq.js b/sources/plugins/liststyle/lang/sq.js
index 18c77d2..6ee94a5 100644
--- a/sources/plugins/liststyle/lang/sq.js
+++ b/sources/plugins/liststyle/lang/sq.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'liststyle', 'sq', { 5CKEDITOR.plugins.setLang( 'liststyle', 'sq', {
diff --git a/sources/plugins/liststyle/lang/sr-latn.js b/sources/plugins/liststyle/lang/sr-latn.js
index dad8611..75d1cfa 100644
--- a/sources/plugins/liststyle/lang/sr-latn.js
+++ b/sources/plugins/liststyle/lang/sr-latn.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'liststyle', 'sr-latn', { 5CKEDITOR.plugins.setLang( 'liststyle', 'sr-latn', {
diff --git a/sources/plugins/liststyle/lang/sr.js b/sources/plugins/liststyle/lang/sr.js
index 8b10fef..f89a441 100644
--- a/sources/plugins/liststyle/lang/sr.js
+++ b/sources/plugins/liststyle/lang/sr.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'liststyle', 'sr', { 5CKEDITOR.plugins.setLang( 'liststyle', 'sr', {
diff --git a/sources/plugins/liststyle/lang/sv.js b/sources/plugins/liststyle/lang/sv.js
index c2208bf..49bbf48 100644
--- a/sources/plugins/liststyle/lang/sv.js
+++ b/sources/plugins/liststyle/lang/sv.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'liststyle', 'sv', { 5CKEDITOR.plugins.setLang( 'liststyle', 'sv', {
diff --git a/sources/plugins/liststyle/lang/th.js b/sources/plugins/liststyle/lang/th.js
index d85ecae..d1425e8 100644
--- a/sources/plugins/liststyle/lang/th.js
+++ b/sources/plugins/liststyle/lang/th.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'liststyle', 'th', { 5CKEDITOR.plugins.setLang( 'liststyle', 'th', {
diff --git a/sources/plugins/liststyle/lang/tr.js b/sources/plugins/liststyle/lang/tr.js
index a0f918b..f08131e 100644
--- a/sources/plugins/liststyle/lang/tr.js
+++ b/sources/plugins/liststyle/lang/tr.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'liststyle', 'tr', { 5CKEDITOR.plugins.setLang( 'liststyle', 'tr', {
diff --git a/sources/plugins/liststyle/lang/tt.js b/sources/plugins/liststyle/lang/tt.js
index 8f79082..13991f4 100644
--- a/sources/plugins/liststyle/lang/tt.js
+++ b/sources/plugins/liststyle/lang/tt.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'liststyle', 'tt', { 5CKEDITOR.plugins.setLang( 'liststyle', 'tt', {
diff --git a/sources/plugins/liststyle/lang/ug.js b/sources/plugins/liststyle/lang/ug.js
index f232fa3..2d4336e 100644
--- a/sources/plugins/liststyle/lang/ug.js
+++ b/sources/plugins/liststyle/lang/ug.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'liststyle', 'ug', { 5CKEDITOR.plugins.setLang( 'liststyle', 'ug', {
diff --git a/sources/plugins/liststyle/lang/uk.js b/sources/plugins/liststyle/lang/uk.js
index ece540e..7ef2343 100644
--- a/sources/plugins/liststyle/lang/uk.js
+++ b/sources/plugins/liststyle/lang/uk.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'liststyle', 'uk', { 5CKEDITOR.plugins.setLang( 'liststyle', 'uk', {
diff --git a/sources/plugins/liststyle/lang/vi.js b/sources/plugins/liststyle/lang/vi.js
index 4e395da..c5ecc44 100644
--- a/sources/plugins/liststyle/lang/vi.js
+++ b/sources/plugins/liststyle/lang/vi.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'liststyle', 'vi', { 5CKEDITOR.plugins.setLang( 'liststyle', 'vi', {
diff --git a/sources/plugins/liststyle/lang/zh-cn.js b/sources/plugins/liststyle/lang/zh-cn.js
index b0a2765..9d274c2 100644
--- a/sources/plugins/liststyle/lang/zh-cn.js
+++ b/sources/plugins/liststyle/lang/zh-cn.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'liststyle', 'zh-cn', { 5CKEDITOR.plugins.setLang( 'liststyle', 'zh-cn', {
diff --git a/sources/plugins/liststyle/lang/zh.js b/sources/plugins/liststyle/lang/zh.js
index 4cfc3da..e832518 100644
--- a/sources/plugins/liststyle/lang/zh.js
+++ b/sources/plugins/liststyle/lang/zh.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'liststyle', 'zh', { 5CKEDITOR.plugins.setLang( 'liststyle', 'zh', {
diff --git a/sources/plugins/liststyle/plugin.js b/sources/plugins/liststyle/plugin.js
index 1394996..f281edc 100644
--- a/sources/plugins/liststyle/plugin.js
+++ b/sources/plugins/liststyle/plugin.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -7,7 +7,7 @@
7 CKEDITOR.plugins.liststyle = { 7 CKEDITOR.plugins.liststyle = {
8 requires: 'dialog,contextmenu', 8 requires: 'dialog,contextmenu',
9 // jscs:disable maximumLineLength 9 // jscs:disable maximumLineLength
10 lang: 'af,ar,bg,bn,bs,ca,cs,cy,da,de,de-ch,el,en,en-au,en-ca,en-gb,eo,es,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,pl,pt,pt-br,ro,ru,si,sk,sl,sq,sr,sr-latn,sv,th,tr,tt,ug,uk,vi,zh,zh-cn', // %REMOVE_LINE_CORE% 10 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', // %REMOVE_LINE_CORE%
11 // jscs:enable maximumLineLength 11 // jscs:enable maximumLineLength
12 init: function( editor ) { 12 init: function( editor ) {
13 if ( editor.blockless ) 13 if ( editor.blockless )
@@ -17,7 +17,10 @@
17 17
18 def = new CKEDITOR.dialogCommand( 'numberedListStyle', { 18 def = new CKEDITOR.dialogCommand( 'numberedListStyle', {
19 requiredContent: 'ol', 19 requiredContent: 'ol',
20 allowedContent: 'ol{list-style-type}[start]' 20 allowedContent: 'ol{list-style-type}[start]; li{list-style-type}[value]',
21 contentTransformations: [
22 [ 'ol: listTypeToStyle' ]
23 ]
21 } ); 24 } );
22 cmd = editor.addCommand( 'numberedListStyle', def ); 25 cmd = editor.addCommand( 'numberedListStyle', def );
23 editor.addFeature( cmd ); 26 editor.addFeature( cmd );
@@ -25,7 +28,10 @@
25 28
26 def = new CKEDITOR.dialogCommand( 'bulletedListStyle', { 29 def = new CKEDITOR.dialogCommand( 'bulletedListStyle', {
27 requiredContent: 'ul', 30 requiredContent: 'ul',
28 allowedContent: 'ul{list-style-type}' 31 allowedContent: 'ul{list-style-type}',
32 contentTransformations: [
33 [ 'ul: listTypeToStyle' ]
34 ]
29 } ); 35 } );
30 cmd = editor.addCommand( 'bulletedListStyle', def ); 36 cmd = editor.addCommand( 'bulletedListStyle', def );
31 editor.addFeature( cmd ); 37 editor.addFeature( cmd );
diff --git a/sources/plugins/magicline/dev/magicline.html b/sources/plugins/magicline/dev/magicline.html
index 09f0c47..077b670 100644
--- a/sources/plugins/magicline/dev/magicline.html
+++ b/sources/plugins/magicline/dev/magicline.html
@@ -1,6 +1,6 @@
1<!DOCTYPE html> 1<!DOCTYPE html>
2<!-- 2<!--
3Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 3Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
4For licensing, see LICENSE.md or http://ckeditor.com/license 4For licensing, see LICENSE.md or http://ckeditor.com/license
5--> 5-->
6<html> 6<html>
diff --git a/sources/plugins/magicline/lang/af.js b/sources/plugins/magicline/lang/af.js
index ba29409..9b9dc2b 100644
--- a/sources/plugins/magicline/lang/af.js
+++ b/sources/plugins/magicline/lang/af.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/magicline/lang/ar.js b/sources/plugins/magicline/lang/ar.js
index b3baca7..1c411f3 100644
--- a/sources/plugins/magicline/lang/ar.js
+++ b/sources/plugins/magicline/lang/ar.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/magicline/lang/az.js b/sources/plugins/magicline/lang/az.js
new file mode 100644
index 0000000..02664f1
--- /dev/null
+++ b/sources/plugins/magicline/lang/az.js
@@ -0,0 +1,8 @@
1/**
2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */
5
6CKEDITOR.plugins.setLang( 'magicline', 'az', {
7 title: 'Abzası burada əlavə et'
8} );
diff --git a/sources/plugins/magicline/lang/bg.js b/sources/plugins/magicline/lang/bg.js
index ac4f09f..768af06 100644
--- a/sources/plugins/magicline/lang/bg.js
+++ b/sources/plugins/magicline/lang/bg.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/magicline/lang/ca.js b/sources/plugins/magicline/lang/ca.js
index cf63144..dcd9c1a 100644
--- a/sources/plugins/magicline/lang/ca.js
+++ b/sources/plugins/magicline/lang/ca.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/magicline/lang/cs.js b/sources/plugins/magicline/lang/cs.js
index 6b1030f..4705efd 100644
--- a/sources/plugins/magicline/lang/cs.js
+++ b/sources/plugins/magicline/lang/cs.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/magicline/lang/cy.js b/sources/plugins/magicline/lang/cy.js
index 2a63dbb..13e1085 100644
--- a/sources/plugins/magicline/lang/cy.js
+++ b/sources/plugins/magicline/lang/cy.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/magicline/lang/da.js b/sources/plugins/magicline/lang/da.js
index 90b036e..ee4fa17 100644
--- a/sources/plugins/magicline/lang/da.js
+++ b/sources/plugins/magicline/lang/da.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/magicline/lang/de-ch.js b/sources/plugins/magicline/lang/de-ch.js
index 3b53ef3..d6bd3b7 100644
--- a/sources/plugins/magicline/lang/de-ch.js
+++ b/sources/plugins/magicline/lang/de-ch.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/magicline/lang/de.js b/sources/plugins/magicline/lang/de.js
index 0111f3b..189d564 100644
--- a/sources/plugins/magicline/lang/de.js
+++ b/sources/plugins/magicline/lang/de.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/magicline/lang/el.js b/sources/plugins/magicline/lang/el.js
index d31441b..528a554 100644
--- a/sources/plugins/magicline/lang/el.js
+++ b/sources/plugins/magicline/lang/el.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/magicline/lang/en-gb.js b/sources/plugins/magicline/lang/en-gb.js
index 88baa44..e0d3779 100644
--- a/sources/plugins/magicline/lang/en-gb.js
+++ b/sources/plugins/magicline/lang/en-gb.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/magicline/lang/en.js b/sources/plugins/magicline/lang/en.js
index 781de19..37ef2ed 100644
--- a/sources/plugins/magicline/lang/en.js
+++ b/sources/plugins/magicline/lang/en.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/magicline/lang/eo.js b/sources/plugins/magicline/lang/eo.js
index 7128788..3cf6286 100644
--- a/sources/plugins/magicline/lang/eo.js
+++ b/sources/plugins/magicline/lang/eo.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/magicline/lang/es-mx.js b/sources/plugins/magicline/lang/es-mx.js
new file mode 100644
index 0000000..faf006a
--- /dev/null
+++ b/sources/plugins/magicline/lang/es-mx.js
@@ -0,0 +1,8 @@
1/**
2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */
5
6CKEDITOR.plugins.setLang( 'magicline', 'es-mx', {
7 title: 'Insertar un párrafo aquí'
8} );
diff --git a/sources/plugins/magicline/lang/es.js b/sources/plugins/magicline/lang/es.js
index ec0344c..f9a8f52 100644
--- a/sources/plugins/magicline/lang/es.js
+++ b/sources/plugins/magicline/lang/es.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/magicline/lang/et.js b/sources/plugins/magicline/lang/et.js
index af2c5eb..9d2fe53 100644
--- a/sources/plugins/magicline/lang/et.js
+++ b/sources/plugins/magicline/lang/et.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/magicline/lang/eu.js b/sources/plugins/magicline/lang/eu.js
index 3725647..25daf45 100644
--- a/sources/plugins/magicline/lang/eu.js
+++ b/sources/plugins/magicline/lang/eu.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/magicline/lang/fa.js b/sources/plugins/magicline/lang/fa.js
index 02ea6bc..d09ddfc 100644
--- a/sources/plugins/magicline/lang/fa.js
+++ b/sources/plugins/magicline/lang/fa.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/magicline/lang/fi.js b/sources/plugins/magicline/lang/fi.js
index 8667eb2..094bd9d 100644
--- a/sources/plugins/magicline/lang/fi.js
+++ b/sources/plugins/magicline/lang/fi.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/magicline/lang/fr-ca.js b/sources/plugins/magicline/lang/fr-ca.js
index 96d31ee..6319f1c 100644
--- a/sources/plugins/magicline/lang/fr-ca.js
+++ b/sources/plugins/magicline/lang/fr-ca.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/magicline/lang/fr.js b/sources/plugins/magicline/lang/fr.js
index da3610b..430fc5f 100644
--- a/sources/plugins/magicline/lang/fr.js
+++ b/sources/plugins/magicline/lang/fr.js
@@ -1,8 +1,8 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
6CKEDITOR.plugins.setLang( 'magicline', 'fr', { 6CKEDITOR.plugins.setLang( 'magicline', 'fr', {
7 title: 'Insérez un paragraphe ici' 7 title: 'Insérer un paragraphe ici'
8} ); 8} );
diff --git a/sources/plugins/magicline/lang/gl.js b/sources/plugins/magicline/lang/gl.js
index 48f304f..5aaa968 100644
--- a/sources/plugins/magicline/lang/gl.js
+++ b/sources/plugins/magicline/lang/gl.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/magicline/lang/he.js b/sources/plugins/magicline/lang/he.js
index cef83c7..9c01d48 100644
--- a/sources/plugins/magicline/lang/he.js
+++ b/sources/plugins/magicline/lang/he.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/magicline/lang/hr.js b/sources/plugins/magicline/lang/hr.js
index e143e73..1916e65 100644
--- a/sources/plugins/magicline/lang/hr.js
+++ b/sources/plugins/magicline/lang/hr.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/magicline/lang/hu.js b/sources/plugins/magicline/lang/hu.js
index 2f3e831..86650d5 100644
--- a/sources/plugins/magicline/lang/hu.js
+++ b/sources/plugins/magicline/lang/hu.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/magicline/lang/id.js b/sources/plugins/magicline/lang/id.js
index 9389c83..3651e37 100644
--- a/sources/plugins/magicline/lang/id.js
+++ b/sources/plugins/magicline/lang/id.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/magicline/lang/it.js b/sources/plugins/magicline/lang/it.js
index 69e0946..9cc27e0 100644
--- a/sources/plugins/magicline/lang/it.js
+++ b/sources/plugins/magicline/lang/it.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/magicline/lang/ja.js b/sources/plugins/magicline/lang/ja.js
index 71ebfd1..84d6b74 100644
--- a/sources/plugins/magicline/lang/ja.js
+++ b/sources/plugins/magicline/lang/ja.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/magicline/lang/km.js b/sources/plugins/magicline/lang/km.js
index 9dd1865..f670a7e 100644
--- a/sources/plugins/magicline/lang/km.js
+++ b/sources/plugins/magicline/lang/km.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/magicline/lang/ko.js b/sources/plugins/magicline/lang/ko.js
index a86363e..0e718f3 100644
--- a/sources/plugins/magicline/lang/ko.js
+++ b/sources/plugins/magicline/lang/ko.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/magicline/lang/ku.js b/sources/plugins/magicline/lang/ku.js
index 72f7fa1..cc3f3a4 100644
--- a/sources/plugins/magicline/lang/ku.js
+++ b/sources/plugins/magicline/lang/ku.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/magicline/lang/lv.js b/sources/plugins/magicline/lang/lv.js
index e3124e9..f96cc44 100644
--- a/sources/plugins/magicline/lang/lv.js
+++ b/sources/plugins/magicline/lang/lv.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/magicline/lang/nb.js b/sources/plugins/magicline/lang/nb.js
index 6780c4d..297f270 100644
--- a/sources/plugins/magicline/lang/nb.js
+++ b/sources/plugins/magicline/lang/nb.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/magicline/lang/nl.js b/sources/plugins/magicline/lang/nl.js
index dccbf5d..bfe36ff 100644
--- a/sources/plugins/magicline/lang/nl.js
+++ b/sources/plugins/magicline/lang/nl.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/magicline/lang/no.js b/sources/plugins/magicline/lang/no.js
index 2af2e20..e78ca76 100644
--- a/sources/plugins/magicline/lang/no.js
+++ b/sources/plugins/magicline/lang/no.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/magicline/lang/oc.js b/sources/plugins/magicline/lang/oc.js
new file mode 100644
index 0000000..312f547
--- /dev/null
+++ b/sources/plugins/magicline/lang/oc.js
@@ -0,0 +1,8 @@
1/**
2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */
5
6CKEDITOR.plugins.setLang( 'magicline', 'oc', {
7 title: 'Inserir un paragraf aicí'
8} );
diff --git a/sources/plugins/magicline/lang/pl.js b/sources/plugins/magicline/lang/pl.js
index b038f54..324bf1e 100644
--- a/sources/plugins/magicline/lang/pl.js
+++ b/sources/plugins/magicline/lang/pl.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/magicline/lang/pt-br.js b/sources/plugins/magicline/lang/pt-br.js
index 54ca87f..35f3daa 100644
--- a/sources/plugins/magicline/lang/pt-br.js
+++ b/sources/plugins/magicline/lang/pt-br.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/magicline/lang/pt.js b/sources/plugins/magicline/lang/pt.js
index ed653d7..97884c0 100644
--- a/sources/plugins/magicline/lang/pt.js
+++ b/sources/plugins/magicline/lang/pt.js
@@ -1,8 +1,8 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
6CKEDITOR.plugins.setLang( 'magicline', 'pt', { 6CKEDITOR.plugins.setLang( 'magicline', 'pt', {
7 title: 'Insira aqui o parágrafo' 7 title: 'Inserir parágrafo aqui'
8} ); 8} );
diff --git a/sources/plugins/magicline/lang/ru.js b/sources/plugins/magicline/lang/ru.js
index 8787768..bc41703 100644
--- a/sources/plugins/magicline/lang/ru.js
+++ b/sources/plugins/magicline/lang/ru.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/magicline/lang/si.js b/sources/plugins/magicline/lang/si.js
index 5a484a2..a5cdbe8 100644
--- a/sources/plugins/magicline/lang/si.js
+++ b/sources/plugins/magicline/lang/si.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/magicline/lang/sk.js b/sources/plugins/magicline/lang/sk.js
index 94ae4a4..84761b2 100644
--- a/sources/plugins/magicline/lang/sk.js
+++ b/sources/plugins/magicline/lang/sk.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/magicline/lang/sl.js b/sources/plugins/magicline/lang/sl.js
index 6baf9e9..6d0cf76 100644
--- a/sources/plugins/magicline/lang/sl.js
+++ b/sources/plugins/magicline/lang/sl.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/magicline/lang/sq.js b/sources/plugins/magicline/lang/sq.js
index 00d458f..d405596 100644
--- a/sources/plugins/magicline/lang/sq.js
+++ b/sources/plugins/magicline/lang/sq.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/magicline/lang/sv.js b/sources/plugins/magicline/lang/sv.js
index 0670ada..63327fd 100644
--- a/sources/plugins/magicline/lang/sv.js
+++ b/sources/plugins/magicline/lang/sv.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/magicline/lang/tr.js b/sources/plugins/magicline/lang/tr.js
index e419e8d..02dd216 100644
--- a/sources/plugins/magicline/lang/tr.js
+++ b/sources/plugins/magicline/lang/tr.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/magicline/lang/tt.js b/sources/plugins/magicline/lang/tt.js
index b94cefa..7de33bf 100644
--- a/sources/plugins/magicline/lang/tt.js
+++ b/sources/plugins/magicline/lang/tt.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/magicline/lang/ug.js b/sources/plugins/magicline/lang/ug.js
index 8da9948..0017fd4 100644
--- a/sources/plugins/magicline/lang/ug.js
+++ b/sources/plugins/magicline/lang/ug.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/magicline/lang/uk.js b/sources/plugins/magicline/lang/uk.js
index 57cdeb7..980f0e0 100644
--- a/sources/plugins/magicline/lang/uk.js
+++ b/sources/plugins/magicline/lang/uk.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/magicline/lang/vi.js b/sources/plugins/magicline/lang/vi.js
index ab925ae..b302bd0 100644
--- a/sources/plugins/magicline/lang/vi.js
+++ b/sources/plugins/magicline/lang/vi.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/magicline/lang/zh-cn.js b/sources/plugins/magicline/lang/zh-cn.js
index 166e892..f0a0b3b 100644
--- a/sources/plugins/magicline/lang/zh-cn.js
+++ b/sources/plugins/magicline/lang/zh-cn.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/magicline/lang/zh.js b/sources/plugins/magicline/lang/zh.js
index 2fd4324..3ac9f68 100644
--- a/sources/plugins/magicline/lang/zh.js
+++ b/sources/plugins/magicline/lang/zh.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/magicline/plugin.js b/sources/plugins/magicline/plugin.js
index cdb1c23..45b6fea 100644
--- a/sources/plugins/magicline/plugin.js
+++ b/sources/plugins/magicline/plugin.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -12,7 +12,7 @@
12 12
13( function() { 13( function() {
14 CKEDITOR.plugins.add( 'magicline', { 14 CKEDITOR.plugins.add( 'magicline', {
15 lang: 'af,ar,bg,ca,cs,cy,da,de,de-ch,el,en,en-gb,eo,es,et,eu,fa,fi,fr,fr-ca,gl,he,hr,hu,id,it,ja,km,ko,ku,lv,nb,nl,no,pl,pt,pt-br,ru,si,sk,sl,sq,sv,tr,tt,ug,uk,vi,zh,zh-cn', // %REMOVE_LINE_CORE% 15 lang: 'af,ar,az,bg,ca,cs,cy,da,de,de-ch,el,en,en-gb,eo,es,es-mx,et,eu,fa,fi,fr,fr-ca,gl,he,hr,hu,id,it,ja,km,ko,ku,lv,nb,nl,no,oc,pl,pt,pt-br,ru,si,sk,sl,sq,sv,tr,tt,ug,uk,vi,zh,zh-cn', // %REMOVE_LINE_CORE%
16 init: initPlugin 16 init: initPlugin
17 } ); 17 } );
18 18
@@ -38,7 +38,7 @@
38 // %REMOVE_START% 38 // %REMOVE_START%
39 // Internal DEBUG uses tools located in the topmost window. 39 // Internal DEBUG uses tools located in the topmost window.
40 40
41 // (#9701) Due to security limitations some browsers may throw 41 // (http://dev.ckeditor.com/ticket/9701) Due to security limitations some browsers may throw
42 // errors when accessing window.top object. Do it safely first then. 42 // errors when accessing window.top object. Do it safely first then.
43 try { 43 try {
44 that.debug = window.top.DEBUG; 44 that.debug = window.top.DEBUG;
@@ -278,7 +278,7 @@
278 var elements, element, i; 278 var elements, element, i;
279 279
280 for ( var t in { p: 1, br: 1, div: 1 } ) { 280 for ( var t in { p: 1, br: 1, div: 1 } ) {
281 // document.find is not available in QM (#11149). 281 // document.find is not available in QM (http://dev.ckeditor.com/ticket/11149).
282 elements = editor.document.getElementsByTag( t ); 282 elements = editor.document.getElementsByTag( t );
283 283
284 for ( i = elements.count(); i--; ) { 284 for ( i = elements.count(); i--; ) {
@@ -428,7 +428,7 @@
428 function elementFromPoint( doc, mouse ) { 428 function elementFromPoint( doc, mouse ) {
429 var pointedElement = doc.$.elementFromPoint( mouse.x, mouse.y ); 429 var pointedElement = doc.$.elementFromPoint( mouse.x, mouse.y );
430 430
431 // IE9QM: from times to times it will return an empty object on scroll bar hover. (#12185) 431 // IE9QM: from times to times it will return an empty object on scroll bar hover. (http://dev.ckeditor.com/ticket/12185)
432 return pointedElement && pointedElement.nodeType ? 432 return pointedElement && pointedElement.nodeType ?
433 new CKEDITOR.dom.element( pointedElement ) : 433 new CKEDITOR.dom.element( pointedElement ) :
434 null; 434 null;
@@ -483,7 +483,7 @@
483 // If trigger is an element, neither editable nor editable's ascendant. 483 // If trigger is an element, neither editable nor editable's ascendant.
484 if ( trigger && that.editable.contains( trigger ) ) { 484 if ( trigger && that.editable.contains( trigger ) ) {
485 // Check for closest editable limit. 485 // Check for closest editable limit.
486 // Don't consider trigger as a limit as it may be nested editable (includeSelf=false) (#12009). 486 // Don't consider trigger as a limit as it may be nested editable (includeSelf=false) (http://dev.ckeditor.com/ticket/12009).
487 var limit = getClosestEditableLimit( trigger ); 487 var limit = getClosestEditableLimit( trigger );
488 488
489 // Trigger in nested editable area. 489 // Trigger in nested editable area.
@@ -730,7 +730,7 @@
730 730
731 // Consider the editable to be an element with overflow:scroll 731 // Consider the editable to be an element with overflow:scroll
732 // and non-zero scrollTop/scrollLeft value. 732 // and non-zero scrollTop/scrollLeft value.
733 // For example: divarea editable. (#9383) 733 // For example: divarea editable. (http://dev.ckeditor.com/ticket/9383)
734 styleSet.top += view.editable.scroll.top; 734 styleSet.top += view.editable.scroll.top;
735 styleSet.left += view.editable.scroll.left; 735 styleSet.left += view.editable.scroll.left;
736 } 736 }
@@ -931,7 +931,7 @@
931 var selected = editor.getSelection().getStartElement(), 931 var selected = editor.getSelection().getStartElement(),
932 limit; 932 limit;
933 933
934 // (#9833) Go down to the closest non-inline element in DOM structure 934 // (http://dev.ckeditor.com/ticket/9833) Go down to the closest non-inline element in DOM structure
935 // since inline elements don't participate in in magicline. 935 // since inline elements don't participate in in magicline.
936 selected = selected.getAscendant( DTD_BLOCK, 1 ); 936 selected = selected.getAscendant( DTD_BLOCK, 1 );
937 937
diff --git a/sources/plugins/magicline/samples/magicline.html b/sources/plugins/magicline/samples/magicline.html
index af8d17a..8fff40e 100644
--- a/sources/plugins/magicline/samples/magicline.html
+++ b/sources/plugins/magicline/samples/magicline.html
@@ -1,6 +1,6 @@
1<!DOCTYPE html> 1<!DOCTYPE html>
2<!-- 2<!--
3Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 3Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
4For licensing, see LICENSE.md or http://ckeditor.com/license 4For licensing, see LICENSE.md or http://ckeditor.com/license
5--> 5-->
6<html> 6<html>
@@ -201,7 +201,7 @@ CKEDITOR.replace( 'editor2', {
201 CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a> 201 CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a>
202 </p> 202 </p>
203 <p id="copy"> 203 <p id="copy">
204 Copyright &copy; 2003-2016, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico 204 Copyright &copy; 2003-2017, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico
205 Knabben. All rights reserved. 205 Knabben. All rights reserved.
206 </p> 206 </p>
207 </div> 207 </div>
diff --git a/sources/plugins/maximize/icons/hidpi/maximize.png b/sources/plugins/maximize/icons/hidpi/maximize.png
index 1d1ed45..865c582 100644
--- a/sources/plugins/maximize/icons/hidpi/maximize.png
+++ b/sources/plugins/maximize/icons/hidpi/maximize.png
Binary files differ
diff --git a/sources/plugins/maximize/icons/maximize.png b/sources/plugins/maximize/icons/maximize.png
index db01908..ab25547 100644
--- a/sources/plugins/maximize/icons/maximize.png
+++ b/sources/plugins/maximize/icons/maximize.png
Binary files differ
diff --git a/sources/plugins/maximize/lang/af.js b/sources/plugins/maximize/lang/af.js
index e07bbd2..5f17e23 100644
--- a/sources/plugins/maximize/lang/af.js
+++ b/sources/plugins/maximize/lang/af.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'maximize', 'af', { 5CKEDITOR.plugins.setLang( 'maximize', 'af', {
diff --git a/sources/plugins/maximize/lang/ar.js b/sources/plugins/maximize/lang/ar.js
index 4181cf3..cdfb258 100644
--- a/sources/plugins/maximize/lang/ar.js
+++ b/sources/plugins/maximize/lang/ar.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'maximize', 'ar', { 5CKEDITOR.plugins.setLang( 'maximize', 'ar', {
diff --git a/sources/plugins/maximize/lang/az.js b/sources/plugins/maximize/lang/az.js
new file mode 100644
index 0000000..d3a92ac
--- /dev/null
+++ b/sources/plugins/maximize/lang/az.js
@@ -0,0 +1,8 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'maximize', 'az', {
6 maximize: 'Aşkarla',
7 minimize: 'Gizlət'
8} );
diff --git a/sources/plugins/maximize/lang/bg.js b/sources/plugins/maximize/lang/bg.js
index c8cd978..a56e04e 100644
--- a/sources/plugins/maximize/lang/bg.js
+++ b/sources/plugins/maximize/lang/bg.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'maximize', 'bg', { 5CKEDITOR.plugins.setLang( 'maximize', 'bg', {
diff --git a/sources/plugins/maximize/lang/bn.js b/sources/plugins/maximize/lang/bn.js
index 82793e3..3fd4087 100644
--- a/sources/plugins/maximize/lang/bn.js
+++ b/sources/plugins/maximize/lang/bn.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'maximize', 'bn', { 5CKEDITOR.plugins.setLang( 'maximize', 'bn', {
diff --git a/sources/plugins/maximize/lang/bs.js b/sources/plugins/maximize/lang/bs.js
index 06655fd..cb49710 100644
--- a/sources/plugins/maximize/lang/bs.js
+++ b/sources/plugins/maximize/lang/bs.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'maximize', 'bs', { 5CKEDITOR.plugins.setLang( 'maximize', 'bs', {
diff --git a/sources/plugins/maximize/lang/ca.js b/sources/plugins/maximize/lang/ca.js
index 7bb1ba5..fc88615 100644
--- a/sources/plugins/maximize/lang/ca.js
+++ b/sources/plugins/maximize/lang/ca.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'maximize', 'ca', { 5CKEDITOR.plugins.setLang( 'maximize', 'ca', {
diff --git a/sources/plugins/maximize/lang/cs.js b/sources/plugins/maximize/lang/cs.js
index 5dfd482..2234af2 100644
--- a/sources/plugins/maximize/lang/cs.js
+++ b/sources/plugins/maximize/lang/cs.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'maximize', 'cs', { 5CKEDITOR.plugins.setLang( 'maximize', 'cs', {
diff --git a/sources/plugins/maximize/lang/cy.js b/sources/plugins/maximize/lang/cy.js
index a854488..c3370b3 100644
--- a/sources/plugins/maximize/lang/cy.js
+++ b/sources/plugins/maximize/lang/cy.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'maximize', 'cy', { 5CKEDITOR.plugins.setLang( 'maximize', 'cy', {
diff --git a/sources/plugins/maximize/lang/da.js b/sources/plugins/maximize/lang/da.js
index 2d25a51..8dd2d88 100644
--- a/sources/plugins/maximize/lang/da.js
+++ b/sources/plugins/maximize/lang/da.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'maximize', 'da', { 5CKEDITOR.plugins.setLang( 'maximize', 'da', {
diff --git a/sources/plugins/maximize/lang/de-ch.js b/sources/plugins/maximize/lang/de-ch.js
index acc08f3..440814b 100644
--- a/sources/plugins/maximize/lang/de-ch.js
+++ b/sources/plugins/maximize/lang/de-ch.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'maximize', 'de-ch', { 5CKEDITOR.plugins.setLang( 'maximize', 'de-ch', {
diff --git a/sources/plugins/maximize/lang/de.js b/sources/plugins/maximize/lang/de.js
index 6bfd5b2..9af6706 100644
--- a/sources/plugins/maximize/lang/de.js
+++ b/sources/plugins/maximize/lang/de.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'maximize', 'de', { 5CKEDITOR.plugins.setLang( 'maximize', 'de', {
diff --git a/sources/plugins/maximize/lang/el.js b/sources/plugins/maximize/lang/el.js
index 4b89726..7da1b0b 100644
--- a/sources/plugins/maximize/lang/el.js
+++ b/sources/plugins/maximize/lang/el.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'maximize', 'el', { 5CKEDITOR.plugins.setLang( 'maximize', 'el', {
diff --git a/sources/plugins/maximize/lang/en-au.js b/sources/plugins/maximize/lang/en-au.js
index 0636683..de0310d 100644
--- a/sources/plugins/maximize/lang/en-au.js
+++ b/sources/plugins/maximize/lang/en-au.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'maximize', 'en-au', { 5CKEDITOR.plugins.setLang( 'maximize', 'en-au', {
diff --git a/sources/plugins/maximize/lang/en-ca.js b/sources/plugins/maximize/lang/en-ca.js
index 7265dbc..1c48ee0 100644
--- a/sources/plugins/maximize/lang/en-ca.js
+++ b/sources/plugins/maximize/lang/en-ca.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'maximize', 'en-ca', { 5CKEDITOR.plugins.setLang( 'maximize', 'en-ca', {
diff --git a/sources/plugins/maximize/lang/en-gb.js b/sources/plugins/maximize/lang/en-gb.js
index 4ff811b..433a065 100644
--- a/sources/plugins/maximize/lang/en-gb.js
+++ b/sources/plugins/maximize/lang/en-gb.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'maximize', 'en-gb', { 5CKEDITOR.plugins.setLang( 'maximize', 'en-gb', {
diff --git a/sources/plugins/maximize/lang/en.js b/sources/plugins/maximize/lang/en.js
index 71d8711..1e45418 100644
--- a/sources/plugins/maximize/lang/en.js
+++ b/sources/plugins/maximize/lang/en.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'maximize', 'en', { 5CKEDITOR.plugins.setLang( 'maximize', 'en', {
diff --git a/sources/plugins/maximize/lang/eo.js b/sources/plugins/maximize/lang/eo.js
index 6c75952..852f529 100644
--- a/sources/plugins/maximize/lang/eo.js
+++ b/sources/plugins/maximize/lang/eo.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'maximize', 'eo', { 5CKEDITOR.plugins.setLang( 'maximize', 'eo', {
diff --git a/sources/plugins/maximize/lang/es-mx.js b/sources/plugins/maximize/lang/es-mx.js
new file mode 100644
index 0000000..f47486c
--- /dev/null
+++ b/sources/plugins/maximize/lang/es-mx.js
@@ -0,0 +1,8 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'maximize', 'es-mx', {
6 maximize: 'Maximizar',
7 minimize: 'Minimizar'
8} );
diff --git a/sources/plugins/maximize/lang/es.js b/sources/plugins/maximize/lang/es.js
index 85963a1..411aae5 100644
--- a/sources/plugins/maximize/lang/es.js
+++ b/sources/plugins/maximize/lang/es.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'maximize', 'es', { 5CKEDITOR.plugins.setLang( 'maximize', 'es', {
diff --git a/sources/plugins/maximize/lang/et.js b/sources/plugins/maximize/lang/et.js
index 241bb34..1682ec9 100644
--- a/sources/plugins/maximize/lang/et.js
+++ b/sources/plugins/maximize/lang/et.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'maximize', 'et', { 5CKEDITOR.plugins.setLang( 'maximize', 'et', {
diff --git a/sources/plugins/maximize/lang/eu.js b/sources/plugins/maximize/lang/eu.js
index 12eea43..a25c164 100644
--- a/sources/plugins/maximize/lang/eu.js
+++ b/sources/plugins/maximize/lang/eu.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'maximize', 'eu', { 5CKEDITOR.plugins.setLang( 'maximize', 'eu', {
diff --git a/sources/plugins/maximize/lang/fa.js b/sources/plugins/maximize/lang/fa.js
index c16bc2e..e08e9ea 100644
--- a/sources/plugins/maximize/lang/fa.js
+++ b/sources/plugins/maximize/lang/fa.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'maximize', 'fa', { 5CKEDITOR.plugins.setLang( 'maximize', 'fa', {
diff --git a/sources/plugins/maximize/lang/fi.js b/sources/plugins/maximize/lang/fi.js
index d61f5f3..763eede 100644
--- a/sources/plugins/maximize/lang/fi.js
+++ b/sources/plugins/maximize/lang/fi.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'maximize', 'fi', { 5CKEDITOR.plugins.setLang( 'maximize', 'fi', {
diff --git a/sources/plugins/maximize/lang/fo.js b/sources/plugins/maximize/lang/fo.js
index c3775fc..635415a 100644
--- a/sources/plugins/maximize/lang/fo.js
+++ b/sources/plugins/maximize/lang/fo.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'maximize', 'fo', { 5CKEDITOR.plugins.setLang( 'maximize', 'fo', {
diff --git a/sources/plugins/maximize/lang/fr-ca.js b/sources/plugins/maximize/lang/fr-ca.js
index ea9ccdd..59ed278 100644
--- a/sources/plugins/maximize/lang/fr-ca.js
+++ b/sources/plugins/maximize/lang/fr-ca.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'maximize', 'fr-ca', { 5CKEDITOR.plugins.setLang( 'maximize', 'fr-ca', {
diff --git a/sources/plugins/maximize/lang/fr.js b/sources/plugins/maximize/lang/fr.js
index f859816..cb3d4dd 100644
--- a/sources/plugins/maximize/lang/fr.js
+++ b/sources/plugins/maximize/lang/fr.js
@@ -1,8 +1,8 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'maximize', 'fr', { 5CKEDITOR.plugins.setLang( 'maximize', 'fr', {
6 maximize: 'Agrandir', 6 maximize: 'Agrandir',
7 minimize: 'Minimiser' 7 minimize: 'Réduire'
8} ); 8} );
diff --git a/sources/plugins/maximize/lang/gl.js b/sources/plugins/maximize/lang/gl.js
index 498ff27..79009f8 100644
--- a/sources/plugins/maximize/lang/gl.js
+++ b/sources/plugins/maximize/lang/gl.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'maximize', 'gl', { 5CKEDITOR.plugins.setLang( 'maximize', 'gl', {
diff --git a/sources/plugins/maximize/lang/gu.js b/sources/plugins/maximize/lang/gu.js
index 4b7af7b..bbd4b52 100644
--- a/sources/plugins/maximize/lang/gu.js
+++ b/sources/plugins/maximize/lang/gu.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'maximize', 'gu', { 5CKEDITOR.plugins.setLang( 'maximize', 'gu', {
diff --git a/sources/plugins/maximize/lang/he.js b/sources/plugins/maximize/lang/he.js
index b0adc82..d46856b 100644
--- a/sources/plugins/maximize/lang/he.js
+++ b/sources/plugins/maximize/lang/he.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'maximize', 'he', { 5CKEDITOR.plugins.setLang( 'maximize', 'he', {
diff --git a/sources/plugins/maximize/lang/hi.js b/sources/plugins/maximize/lang/hi.js
index f9baef8..76b0c0c 100644
--- a/sources/plugins/maximize/lang/hi.js
+++ b/sources/plugins/maximize/lang/hi.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'maximize', 'hi', { 5CKEDITOR.plugins.setLang( 'maximize', 'hi', {
diff --git a/sources/plugins/maximize/lang/hr.js b/sources/plugins/maximize/lang/hr.js
index 5492f2f..4b7a7b3 100644
--- a/sources/plugins/maximize/lang/hr.js
+++ b/sources/plugins/maximize/lang/hr.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'maximize', 'hr', { 5CKEDITOR.plugins.setLang( 'maximize', 'hr', {
diff --git a/sources/plugins/maximize/lang/hu.js b/sources/plugins/maximize/lang/hu.js
index 11e9530..3e11e22 100644
--- a/sources/plugins/maximize/lang/hu.js
+++ b/sources/plugins/maximize/lang/hu.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'maximize', 'hu', { 5CKEDITOR.plugins.setLang( 'maximize', 'hu', {
diff --git a/sources/plugins/maximize/lang/id.js b/sources/plugins/maximize/lang/id.js
index f6e839a..1a32383 100644
--- a/sources/plugins/maximize/lang/id.js
+++ b/sources/plugins/maximize/lang/id.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'maximize', 'id', { 5CKEDITOR.plugins.setLang( 'maximize', 'id', {
diff --git a/sources/plugins/maximize/lang/is.js b/sources/plugins/maximize/lang/is.js
index 97313df..dec813f 100644
--- a/sources/plugins/maximize/lang/is.js
+++ b/sources/plugins/maximize/lang/is.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'maximize', 'is', { 5CKEDITOR.plugins.setLang( 'maximize', 'is', {
diff --git a/sources/plugins/maximize/lang/it.js b/sources/plugins/maximize/lang/it.js
index 448337c..67a8a29 100644
--- a/sources/plugins/maximize/lang/it.js
+++ b/sources/plugins/maximize/lang/it.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'maximize', 'it', { 5CKEDITOR.plugins.setLang( 'maximize', 'it', {
diff --git a/sources/plugins/maximize/lang/ja.js b/sources/plugins/maximize/lang/ja.js
index 5479f2a..33184da 100644
--- a/sources/plugins/maximize/lang/ja.js
+++ b/sources/plugins/maximize/lang/ja.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'maximize', 'ja', { 5CKEDITOR.plugins.setLang( 'maximize', 'ja', {
diff --git a/sources/plugins/maximize/lang/ka.js b/sources/plugins/maximize/lang/ka.js
index 579c4b1..a90fb04 100644
--- a/sources/plugins/maximize/lang/ka.js
+++ b/sources/plugins/maximize/lang/ka.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'maximize', 'ka', { 5CKEDITOR.plugins.setLang( 'maximize', 'ka', {
diff --git a/sources/plugins/maximize/lang/km.js b/sources/plugins/maximize/lang/km.js
index bba8746..4cda2db 100644
--- a/sources/plugins/maximize/lang/km.js
+++ b/sources/plugins/maximize/lang/km.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'maximize', 'km', { 5CKEDITOR.plugins.setLang( 'maximize', 'km', {
diff --git a/sources/plugins/maximize/lang/ko.js b/sources/plugins/maximize/lang/ko.js
index 05bb161..f4af9d4 100644
--- a/sources/plugins/maximize/lang/ko.js
+++ b/sources/plugins/maximize/lang/ko.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'maximize', 'ko', { 5CKEDITOR.plugins.setLang( 'maximize', 'ko', {
diff --git a/sources/plugins/maximize/lang/ku.js b/sources/plugins/maximize/lang/ku.js
index 50e24ef..d34e588 100644
--- a/sources/plugins/maximize/lang/ku.js
+++ b/sources/plugins/maximize/lang/ku.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'maximize', 'ku', { 5CKEDITOR.plugins.setLang( 'maximize', 'ku', {
diff --git a/sources/plugins/maximize/lang/lt.js b/sources/plugins/maximize/lang/lt.js
index 5cd4de8..064291b 100644
--- a/sources/plugins/maximize/lang/lt.js
+++ b/sources/plugins/maximize/lang/lt.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'maximize', 'lt', { 5CKEDITOR.plugins.setLang( 'maximize', 'lt', {
diff --git a/sources/plugins/maximize/lang/lv.js b/sources/plugins/maximize/lang/lv.js
index 77d9db2..afbbbbe 100644
--- a/sources/plugins/maximize/lang/lv.js
+++ b/sources/plugins/maximize/lang/lv.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'maximize', 'lv', { 5CKEDITOR.plugins.setLang( 'maximize', 'lv', {
diff --git a/sources/plugins/maximize/lang/mk.js b/sources/plugins/maximize/lang/mk.js
index 382653b..69fcfe9 100644
--- a/sources/plugins/maximize/lang/mk.js
+++ b/sources/plugins/maximize/lang/mk.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'maximize', 'mk', { 5CKEDITOR.plugins.setLang( 'maximize', 'mk', {
diff --git a/sources/plugins/maximize/lang/mn.js b/sources/plugins/maximize/lang/mn.js
index f0bcf7c..6c4a076 100644
--- a/sources/plugins/maximize/lang/mn.js
+++ b/sources/plugins/maximize/lang/mn.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'maximize', 'mn', { 5CKEDITOR.plugins.setLang( 'maximize', 'mn', {
diff --git a/sources/plugins/maximize/lang/ms.js b/sources/plugins/maximize/lang/ms.js
index b833027..0f27d91 100644
--- a/sources/plugins/maximize/lang/ms.js
+++ b/sources/plugins/maximize/lang/ms.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'maximize', 'ms', { 5CKEDITOR.plugins.setLang( 'maximize', 'ms', {
diff --git a/sources/plugins/maximize/lang/nb.js b/sources/plugins/maximize/lang/nb.js
index eb1d77d..a8ec9dd 100644
--- a/sources/plugins/maximize/lang/nb.js
+++ b/sources/plugins/maximize/lang/nb.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'maximize', 'nb', { 5CKEDITOR.plugins.setLang( 'maximize', 'nb', {
diff --git a/sources/plugins/maximize/lang/nl.js b/sources/plugins/maximize/lang/nl.js
index f1a126d..978bda0 100644
--- a/sources/plugins/maximize/lang/nl.js
+++ b/sources/plugins/maximize/lang/nl.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'maximize', 'nl', { 5CKEDITOR.plugins.setLang( 'maximize', 'nl', {
diff --git a/sources/plugins/maximize/lang/no.js b/sources/plugins/maximize/lang/no.js
index ac8fc85..02afe8a 100644
--- a/sources/plugins/maximize/lang/no.js
+++ b/sources/plugins/maximize/lang/no.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'maximize', 'no', { 5CKEDITOR.plugins.setLang( 'maximize', 'no', {
diff --git a/sources/plugins/maximize/lang/oc.js b/sources/plugins/maximize/lang/oc.js
new file mode 100644
index 0000000..cbd94a4
--- /dev/null
+++ b/sources/plugins/maximize/lang/oc.js
@@ -0,0 +1,8 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'maximize', 'oc', {
6 maximize: 'Maximizar',
7 minimize: 'Minimizar'
8} );
diff --git a/sources/plugins/maximize/lang/pl.js b/sources/plugins/maximize/lang/pl.js
index 65db8f1..1bf6d07 100644
--- a/sources/plugins/maximize/lang/pl.js
+++ b/sources/plugins/maximize/lang/pl.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'maximize', 'pl', { 5CKEDITOR.plugins.setLang( 'maximize', 'pl', {
diff --git a/sources/plugins/maximize/lang/pt-br.js b/sources/plugins/maximize/lang/pt-br.js
index 1da2b5e..e5c2a52 100644
--- a/sources/plugins/maximize/lang/pt-br.js
+++ b/sources/plugins/maximize/lang/pt-br.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'maximize', 'pt-br', { 5CKEDITOR.plugins.setLang( 'maximize', 'pt-br', {
diff --git a/sources/plugins/maximize/lang/pt.js b/sources/plugins/maximize/lang/pt.js
index a1cc282..a379036 100644
--- a/sources/plugins/maximize/lang/pt.js
+++ b/sources/plugins/maximize/lang/pt.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'maximize', 'pt', { 5CKEDITOR.plugins.setLang( 'maximize', 'pt', {
diff --git a/sources/plugins/maximize/lang/ro.js b/sources/plugins/maximize/lang/ro.js
index 4781ec3..0a3ded6 100644
--- a/sources/plugins/maximize/lang/ro.js
+++ b/sources/plugins/maximize/lang/ro.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'maximize', 'ro', { 5CKEDITOR.plugins.setLang( 'maximize', 'ro', {
diff --git a/sources/plugins/maximize/lang/ru.js b/sources/plugins/maximize/lang/ru.js
index 6efab0b..30c491a 100644
--- a/sources/plugins/maximize/lang/ru.js
+++ b/sources/plugins/maximize/lang/ru.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'maximize', 'ru', { 5CKEDITOR.plugins.setLang( 'maximize', 'ru', {
diff --git a/sources/plugins/maximize/lang/si.js b/sources/plugins/maximize/lang/si.js
index 671ecdd..a0331ab 100644
--- a/sources/plugins/maximize/lang/si.js
+++ b/sources/plugins/maximize/lang/si.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'maximize', 'si', { 5CKEDITOR.plugins.setLang( 'maximize', 'si', {
diff --git a/sources/plugins/maximize/lang/sk.js b/sources/plugins/maximize/lang/sk.js
index c88e390..a9f2515 100644
--- a/sources/plugins/maximize/lang/sk.js
+++ b/sources/plugins/maximize/lang/sk.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'maximize', 'sk', { 5CKEDITOR.plugins.setLang( 'maximize', 'sk', {
diff --git a/sources/plugins/maximize/lang/sl.js b/sources/plugins/maximize/lang/sl.js
index 90187c5..73d5e91 100644
--- a/sources/plugins/maximize/lang/sl.js
+++ b/sources/plugins/maximize/lang/sl.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'maximize', 'sl', { 5CKEDITOR.plugins.setLang( 'maximize', 'sl', {
diff --git a/sources/plugins/maximize/lang/sq.js b/sources/plugins/maximize/lang/sq.js
index 4354dba..e6b5bc3 100644
--- a/sources/plugins/maximize/lang/sq.js
+++ b/sources/plugins/maximize/lang/sq.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'maximize', 'sq', { 5CKEDITOR.plugins.setLang( 'maximize', 'sq', {
diff --git a/sources/plugins/maximize/lang/sr-latn.js b/sources/plugins/maximize/lang/sr-latn.js
index f472eed..33dcd9e 100644
--- a/sources/plugins/maximize/lang/sr-latn.js
+++ b/sources/plugins/maximize/lang/sr-latn.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'maximize', 'sr-latn', { 5CKEDITOR.plugins.setLang( 'maximize', 'sr-latn', {
diff --git a/sources/plugins/maximize/lang/sr.js b/sources/plugins/maximize/lang/sr.js
index 70550ee..f1ef2d1 100644
--- a/sources/plugins/maximize/lang/sr.js
+++ b/sources/plugins/maximize/lang/sr.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'maximize', 'sr', { 5CKEDITOR.plugins.setLang( 'maximize', 'sr', {
diff --git a/sources/plugins/maximize/lang/sv.js b/sources/plugins/maximize/lang/sv.js
index 3ba63b5..d14fb84 100644
--- a/sources/plugins/maximize/lang/sv.js
+++ b/sources/plugins/maximize/lang/sv.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'maximize', 'sv', { 5CKEDITOR.plugins.setLang( 'maximize', 'sv', {
diff --git a/sources/plugins/maximize/lang/th.js b/sources/plugins/maximize/lang/th.js
index 4b74871..df09eef 100644
--- a/sources/plugins/maximize/lang/th.js
+++ b/sources/plugins/maximize/lang/th.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'maximize', 'th', { 5CKEDITOR.plugins.setLang( 'maximize', 'th', {
diff --git a/sources/plugins/maximize/lang/tr.js b/sources/plugins/maximize/lang/tr.js
index 0aafb3d..90724f4 100644
--- a/sources/plugins/maximize/lang/tr.js
+++ b/sources/plugins/maximize/lang/tr.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'maximize', 'tr', { 5CKEDITOR.plugins.setLang( 'maximize', 'tr', {
diff --git a/sources/plugins/maximize/lang/tt.js b/sources/plugins/maximize/lang/tt.js
index a8ec7d6..cc92021 100644
--- a/sources/plugins/maximize/lang/tt.js
+++ b/sources/plugins/maximize/lang/tt.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'maximize', 'tt', { 5CKEDITOR.plugins.setLang( 'maximize', 'tt', {
diff --git a/sources/plugins/maximize/lang/ug.js b/sources/plugins/maximize/lang/ug.js
index 0e874d6..85af046 100644
--- a/sources/plugins/maximize/lang/ug.js
+++ b/sources/plugins/maximize/lang/ug.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'maximize', 'ug', { 5CKEDITOR.plugins.setLang( 'maximize', 'ug', {
diff --git a/sources/plugins/maximize/lang/uk.js b/sources/plugins/maximize/lang/uk.js
index 85a3215..5ca1021 100644
--- a/sources/plugins/maximize/lang/uk.js
+++ b/sources/plugins/maximize/lang/uk.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'maximize', 'uk', { 5CKEDITOR.plugins.setLang( 'maximize', 'uk', {
diff --git a/sources/plugins/maximize/lang/vi.js b/sources/plugins/maximize/lang/vi.js
index 0fd29d5..4ab3a6b 100644
--- a/sources/plugins/maximize/lang/vi.js
+++ b/sources/plugins/maximize/lang/vi.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'maximize', 'vi', { 5CKEDITOR.plugins.setLang( 'maximize', 'vi', {
diff --git a/sources/plugins/maximize/lang/zh-cn.js b/sources/plugins/maximize/lang/zh-cn.js
index 7e63c74..f4ddf72 100644
--- a/sources/plugins/maximize/lang/zh-cn.js
+++ b/sources/plugins/maximize/lang/zh-cn.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'maximize', 'zh-cn', { 5CKEDITOR.plugins.setLang( 'maximize', 'zh-cn', {
diff --git a/sources/plugins/maximize/lang/zh.js b/sources/plugins/maximize/lang/zh.js
index 6d633c4..6bca434 100644
--- a/sources/plugins/maximize/lang/zh.js
+++ b/sources/plugins/maximize/lang/zh.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'maximize', 'zh', { 5CKEDITOR.plugins.setLang( 'maximize', 'zh', {
diff --git a/sources/plugins/maximize/plugin.js b/sources/plugins/maximize/plugin.js
index ae621f1..fbce920 100644
--- a/sources/plugins/maximize/plugin.js
+++ b/sources/plugins/maximize/plugin.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -51,7 +51,7 @@
51 } 51 }
52 52
53 retval.inline = $element.style.cssText || ''; 53 retval.inline = $element.style.cssText || '';
54 if ( !isInsideEditor ) // Reset any external styles that might interfere. (#2474) 54 if ( !isInsideEditor ) // Reset any external styles that might interfere. (http://dev.ckeditor.com/ticket/2474)
55 $element.style.cssText = 'position: static; overflow: visible'; 55 $element.style.cssText = 'position: static; overflow: visible';
56 56
57 restoreFormStyles( data ); 57 restoreFormStyles( data );
@@ -72,14 +72,14 @@
72 if ( editor.editable().isInline() ) 72 if ( editor.editable().isInline() )
73 return; 73 return;
74 74
75 // Refresh all editor instances on the page (#5724). 75 // Refresh all editor instances on the page (http://dev.ckeditor.com/ticket/5724).
76 var all = CKEDITOR.instances; 76 var all = CKEDITOR.instances;
77 for ( var i in all ) { 77 for ( var i in all ) {
78 var one = all[ i ]; 78 var one = all[ i ];
79 if ( one.mode == 'wysiwyg' && !one.readOnly ) { 79 if ( one.mode == 'wysiwyg' && !one.readOnly ) {
80 var body = one.document.getBody(); 80 var body = one.document.getBody();
81 // Refresh 'contentEditable' otherwise 81 // Refresh 'contentEditable' otherwise
82 // DOM lifting breaks design mode. (#5560) 82 // DOM lifting breaks design mode. (http://dev.ckeditor.com/ticket/5560)
83 body.setAttribute( 'contentEditable', false ); 83 body.setAttribute( 'contentEditable', false );
84 body.setAttribute( 'contentEditable', true ); 84 body.setAttribute( 'contentEditable', true );
85 } 85 }
@@ -93,7 +93,7 @@
93 93
94 CKEDITOR.plugins.add( 'maximize', { 94 CKEDITOR.plugins.add( 'maximize', {
95 // jscs:disable maximumLineLength 95 // jscs:disable maximumLineLength
96 lang: 'af,ar,bg,bn,bs,ca,cs,cy,da,de,de-ch,el,en,en-au,en-ca,en-gb,eo,es,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,pl,pt,pt-br,ro,ru,si,sk,sl,sq,sr,sr-latn,sv,th,tr,tt,ug,uk,vi,zh,zh-cn', // %REMOVE_LINE_CORE% 96 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', // %REMOVE_LINE_CORE%
97 // jscs:enable maximumLineLength 97 // jscs:enable maximumLineLength
98 icons: 'maximize', // %REMOVE_LINE_CORE% 98 icons: 'maximize', // %REMOVE_LINE_CORE%
99 hidpi: true, // %REMOVE_LINE_CORE% 99 hidpi: true, // %REMOVE_LINE_CORE%
@@ -122,7 +122,7 @@
122 var savedState = CKEDITOR.TRISTATE_OFF; 122 var savedState = CKEDITOR.TRISTATE_OFF;
123 123
124 editor.addCommand( 'maximize', { 124 editor.addCommand( 'maximize', {
125 // Disabled on iOS (#8307). 125 // Disabled on iOS (http://dev.ckeditor.com/ticket/8307).
126 modes: { wysiwyg: !CKEDITOR.env.iOS, source: !CKEDITOR.env.iOS }, 126 modes: { wysiwyg: !CKEDITOR.env.iOS, source: !CKEDITOR.env.iOS },
127 readOnly: 1, 127 readOnly: 1,
128 editorFocus: false, 128 editorFocus: false,
@@ -163,7 +163,7 @@
163 163
164 // Hide scroll bars. 164 // Hide scroll bars.
165 var styles = { 165 var styles = {
166 overflow: CKEDITOR.env.webkit ? '' : 'hidden', // #6896 166 overflow: CKEDITOR.env.webkit ? '' : 'hidden', // http://dev.ckeditor.com/ticket/6896
167 width: 0, 167 width: 0,
168 height: 0 168 height: 0
169 }; 169 };
@@ -172,15 +172,15 @@
172 !CKEDITOR.env.gecko && mainDocument.getDocumentElement().setStyle( 'position', 'fixed' ); 172 !CKEDITOR.env.gecko && mainDocument.getDocumentElement().setStyle( 'position', 'fixed' );
173 !( CKEDITOR.env.gecko && CKEDITOR.env.quirks ) && mainDocument.getBody().setStyles( styles ); 173 !( CKEDITOR.env.gecko && CKEDITOR.env.quirks ) && mainDocument.getBody().setStyles( styles );
174 174
175 // Scroll to the top left (IE needs some time for it - #4923). 175 // Scroll to the top left (IE needs some time for it - http://dev.ckeditor.com/ticket/4923).
176 CKEDITOR.env.ie ? setTimeout( function() { 176 CKEDITOR.env.ie ? setTimeout( function() {
177 mainWindow.$.scrollTo( 0, 0 ); 177 mainWindow.$.scrollTo( 0, 0 );
178 }, 0 ) : mainWindow.$.scrollTo( 0, 0 ); 178 }, 0 ) : mainWindow.$.scrollTo( 0, 0 );
179 179
180 // Resize and move to top left. 180 // Resize and move to top left.
181 // Special treatment for FF Quirks (#7284) 181 // Special treatment for FF Quirks (http://dev.ckeditor.com/ticket/7284)
182 container.setStyle( 'position', CKEDITOR.env.gecko && CKEDITOR.env.quirks ? 'fixed' : 'absolute' ); 182 container.setStyle( 'position', CKEDITOR.env.gecko && CKEDITOR.env.quirks ? 'fixed' : 'absolute' );
183 container.$.offsetLeft; // SAFARI BUG: See #2066. 183 container.$.offsetLeft; // SAFARI BUG: See http://dev.ckeditor.com/ticket/2066.
184 container.setStyles( { 184 container.setStyles( {
185 // Show under floatpanels (-1) and context menu (-2). 185 // Show under floatpanels (-1) and context menu (-2).
186 'z-index': editor.config.baseFloatZIndex - 5, 186 'z-index': editor.config.baseFloatZIndex - 5,
@@ -188,19 +188,19 @@
188 top: '0px' 188 top: '0px'
189 } ); 189 } );
190 190
191 // Add cke_maximized class before resize handle since that will change things sizes (#5580) 191 // Add cke_maximized class before resize handle since that will change things sizes (http://dev.ckeditor.com/ticket/5580)
192 container.addClass( 'cke_maximized' ); 192 container.addClass( 'cke_maximized' );
193 193
194 resizeHandler(); 194 resizeHandler();
195 195
196 // Still not top left? Fix it. (Bug #174) 196 // Still not top left? Fix it. (Bug http://dev.ckeditor.com/ticket/174)
197 var offset = container.getDocumentPosition(); 197 var offset = container.getDocumentPosition();
198 container.setStyles( { 198 container.setStyles( {
199 left: ( -1 * offset.x ) + 'px', 199 left: ( -1 * offset.x ) + 'px',
200 top: ( -1 * offset.y ) + 'px' 200 top: ( -1 * offset.y ) + 'px'
201 } ); 201 } );
202 202
203 // Fixing positioning editor chrome in Firefox break design mode. (#5149) 203 // Fixing positioning editor chrome in Firefox break design mode. (http://dev.ckeditor.com/ticket/5149)
204 CKEDITOR.env.gecko && refreshCursor( editor ); 204 CKEDITOR.env.gecko && refreshCursor( editor );
205 } 205 }
206 // Restore from fullscreen if the state is on. 206 // Restore from fullscreen if the state is on.
@@ -229,7 +229,7 @@
229 // Remove cke_maximized class. 229 // Remove cke_maximized class.
230 container.removeClass( 'cke_maximized' ); 230 container.removeClass( 'cke_maximized' );
231 231
232 // Webkit requires a re-layout on editor chrome. (#6695) 232 // Webkit requires a re-layout on editor chrome. (http://dev.ckeditor.com/ticket/6695)
233 if ( CKEDITOR.env.webkit ) { 233 if ( CKEDITOR.env.webkit ) {
234 container.setStyle( 'display', 'inline' ); 234 container.setStyle( 'display', 'inline' );
235 setTimeout( function() { 235 setTimeout( function() {
@@ -250,7 +250,7 @@
250 250
251 // Toggle button label. 251 // Toggle button label.
252 var button = this.uiItems[ 0 ]; 252 var button = this.uiItems[ 0 ];
253 // Only try to change the button if it exists (#6166) 253 // Only try to change the button if it exists (http://dev.ckeditor.com/ticket/6166)
254 if ( button ) { 254 if ( button ) {
255 var label = ( this.state == CKEDITOR.TRISTATE_OFF ) ? lang.maximize.maximize : lang.maximize.minimize; 255 var label = ( this.state == CKEDITOR.TRISTATE_OFF ) ? lang.maximize.maximize : lang.maximize.minimize;
256 var buttonNode = CKEDITOR.document.getById( button._.id ); 256 var buttonNode = CKEDITOR.document.getById( button._.id );
@@ -262,7 +262,7 @@
262 // Restore selection and scroll position in editing area. 262 // Restore selection and scroll position in editing area.
263 if ( editor.mode == 'wysiwyg' ) { 263 if ( editor.mode == 'wysiwyg' ) {
264 if ( savedSelection ) { 264 if ( savedSelection ) {
265 // Fixing positioning editor chrome in Firefox break design mode. (#5149) 265 // Fixing positioning editor chrome in Firefox break design mode. (http://dev.ckeditor.com/ticket/5149)
266 CKEDITOR.env.gecko && refreshCursor( editor ); 266 CKEDITOR.env.gecko && refreshCursor( editor );
267 267
268 editor.getSelection().selectRanges( savedSelection ); 268 editor.getSelection().selectRanges( savedSelection );
@@ -294,7 +294,7 @@
294 toolbar: 'tools,10' 294 toolbar: 'tools,10'
295 } ); 295 } );
296 296
297 // Restore the command state after mode change, unless it has been changed to disabled (#6467) 297 // Restore the command state after mode change, unless it has been changed to disabled (http://dev.ckeditor.com/ticket/6467)
298 editor.on( 'mode', function() { 298 editor.on( 'mode', function() {
299 var command = editor.getCommand( 'maximize' ); 299 var command = editor.getCommand( 'maximize' );
300 command.setState( command.state == CKEDITOR.TRISTATE_DISABLED ? CKEDITOR.TRISTATE_DISABLED : savedState ); 300 command.setState( command.state == CKEDITOR.TRISTATE_DISABLED ? CKEDITOR.TRISTATE_DISABLED : savedState );
diff --git a/sources/plugins/menu/plugin.js b/sources/plugins/menu/plugin.js
index f5de4f9..3596e52 100644
--- a/sources/plugins/menu/plugin.js
+++ b/sources/plugins/menu/plugin.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -41,10 +41,10 @@ CKEDITOR.plugins.add( 'menu', {
41 }; 41 };
42 42
43 /** 43 /**
44 * Adds one or more items from the specified definition array to the editor context menu. 44 * Adds one or more items from the specified definition object to the editor context menu.
45 * 45 *
46 * @method 46 * @method
47 * @param {Array} definitions List of definitions for each menu item as if {@link #addMenuItem} is called. 47 * @param {Object} definitions Object where keys are used as itemName and corresponding values as definition for a {@link #addMenuItem} call.
48 * @member CKEDITOR.editor 48 * @member CKEDITOR.editor
49 */ 49 */
50 editor.addMenuItems = function( definitions ) { 50 editor.addMenuItems = function( definitions ) {
@@ -85,12 +85,15 @@ CKEDITOR.plugins.add( 'menu', {
85 ' class="cke_menubutton cke_menubutton__{name} cke_menubutton_{state} {cls}" href="{href}"' + 85 ' class="cke_menubutton cke_menubutton__{name} cke_menubutton_{state} {cls}" href="{href}"' +
86 ' title="{title}"' + 86 ' title="{title}"' +
87 ' tabindex="-1"' + 87 ' tabindex="-1"' +
88 '_cke_focus=1' + 88 ' _cke_focus=1' +
89 ' hidefocus="true"' + 89 ' hidefocus="true"' +
90 ' role="{role}"' + 90 ' role="{role}"' +
91 ' aria-label="{label}"' +
92 ' aria-describedby="{id}_description"' +
91 ' aria-haspopup="{hasPopup}"' + 93 ' aria-haspopup="{hasPopup}"' +
92 ' aria-disabled="{disabled}"' + 94 ' aria-disabled="{disabled}"' +
93 ' {ariaChecked}'; 95 ' {ariaChecked}' +
96 ' draggable="false"';
94 97
95 // Some browsers don't cancel key events in the keydown but in the 98 // Some browsers don't cancel key events in the keydown but in the
96 // keypress. 99 // keypress.
@@ -99,11 +102,13 @@ CKEDITOR.plugins.add( 'menu', {
99 menuItemSource += ' onkeypress="return false;"'; 102 menuItemSource += ' onkeypress="return false;"';
100 103
101 // With Firefox, we need to force the button to redraw, otherwise it 104 // With Firefox, we need to force the button to redraw, otherwise it
102 // will remain in the focus state. 105 // will remain in the focus state. Also we some extra help to prevent dragging (http://dev.ckeditor.com/ticket/10373).
103 if ( CKEDITOR.env.gecko ) 106 if ( CKEDITOR.env.gecko ) {
104 menuItemSource += ' onblur="this.style.cssText = this.style.cssText;"'; 107 menuItemSource += ( ' onblur="this.style.cssText = this.style.cssText;"' +
108 ' ondragstart="return false;"' );
109 }
105 110
106 // #188 111 // http://dev.ckeditor.com/ticket/188
107 menuItemSource += ' onmouseover="CKEDITOR.tools.callFunction({hoverFn},{index});"' + 112 menuItemSource += ' onmouseover="CKEDITOR.tools.callFunction({hoverFn},{index});"' +
108 ' onmouseout="CKEDITOR.tools.callFunction({moveOutFn},{index});" ' + 113 ' onmouseout="CKEDITOR.tools.callFunction({moveOutFn},{index});" ' +
109 ( CKEDITOR.env.ie ? 'onclick="return false;" onmouseup' : 'onclick' ) + 114 ( CKEDITOR.env.ie ? 'onclick="return false;" onmouseup' : 'onclick' ) +
@@ -111,6 +116,7 @@ CKEDITOR.plugins.add( 'menu', {
111 '>'; 116 '>';
112 117
113 menuItemSource += 118 menuItemSource +=
119 //'' +
114 '<span class="cke_menubutton_inner">' + 120 '<span class="cke_menubutton_inner">' +
115 '<span class="cke_menubutton_icon">' + 121 '<span class="cke_menubutton_icon">' +
116 '<span class="cke_button_icon cke_button__{iconName}_icon" style="{iconStyle}"></span>' + 122 '<span class="cke_button_icon cke_button__{iconName}_icon" style="{iconStyle}"></span>' +
@@ -118,16 +124,22 @@ CKEDITOR.plugins.add( 'menu', {
118 '<span class="cke_menubutton_label">' + 124 '<span class="cke_menubutton_label">' +
119 '{label}' + 125 '{label}' +
120 '</span>' + 126 '</span>' +
127 '{shortcutHtml}' +
121 '{arrowHtml}' + 128 '{arrowHtml}' +
122 '</span>' + 129 '</span>' +
123 '</a></span>'; 130 '</a><span id="{id}_description" class="cke_voice_label" aria-hidden="false">{ariaShortcut}</span></span>';
124 131
125 var menuArrowSource = '<span class="cke_menuarrow">' + 132 var menuArrowSource = '<span class="cke_menuarrow">' +
126 '<span>{label}</span>' + 133 '<span>{label}</span>' +
127 '</span>'; 134 '</span>';
128 135
136 var menuShortcutSource = '<span class="cke_menubutton_label cke_menubutton_shortcut">' +
137 '{shortcut}' +
138 '</span>';
139
129 var menuItemTpl = CKEDITOR.addTemplate( 'menuItem', menuItemSource ), 140 var menuItemTpl = CKEDITOR.addTemplate( 'menuItem', menuItemSource ),
130 menuArrowTpl = CKEDITOR.addTemplate( 'menuArrow', menuArrowSource ); 141 menuArrowTpl = CKEDITOR.addTemplate( 'menuArrow', menuArrowSource ),
142 menuShortcutTpl = CKEDITOR.addTemplate( 'menuShortcut', menuShortcutSource );
131 143
132 /** 144 /**
133 * @class 145 * @class
@@ -246,7 +258,7 @@ CKEDITOR.plugins.add( 'menu', {
246 258
247 // Show the submenu. 259 // Show the submenu.
248 // This timeout is needed to give time for the sub-menu get 260 // This timeout is needed to give time for the sub-menu get
249 // focus when JAWS is running. (#9844) 261 // focus when JAWS is running. (http://dev.ckeditor.com/ticket/9844)
250 setTimeout( function() { 262 setTimeout( function() {
251 menu.show( element, 2 ); 263 menu.show( element, 2 );
252 }, 0 ); 264 }, 0 );
@@ -262,7 +274,7 @@ CKEDITOR.plugins.add( 'menu', {
262 add: function( item ) { 274 add: function( item ) {
263 // Later we may sort the items, but Array#sort is not stable in 275 // Later we may sort the items, but Array#sort is not stable in
264 // some browsers, here we're forcing the original sequence with 276 // some browsers, here we're forcing the original sequence with
265 // 'order' attribute if it hasn't been assigned. (#3868) 277 // 'order' attribute if it hasn't been assigned. (http://dev.ckeditor.com/ticket/3868)
266 if ( !item.order ) 278 if ( !item.order )
267 item.order = this.items.length; 279 item.order = this.items.length;
268 280
@@ -330,7 +342,7 @@ CKEDITOR.plugins.add( 'menu', {
330 keys[ CKEDITOR.SHIFT + 9 ] = 'prev'; // SHIFT + TAB 342 keys[ CKEDITOR.SHIFT + 9 ] = 'prev'; // SHIFT + TAB
331 keys[ ( editor.lang.dir == 'rtl' ? 37 : 39 ) ] = CKEDITOR.env.ie ? 'mouseup' : 'click'; // ARROW-RIGHT/ARROW-LEFT(rtl) 343 keys[ ( editor.lang.dir == 'rtl' ? 37 : 39 ) ] = CKEDITOR.env.ie ? 'mouseup' : 'click'; // ARROW-RIGHT/ARROW-LEFT(rtl)
332 keys[ 32 ] = CKEDITOR.env.ie ? 'mouseup' : 'click'; // SPACE 344 keys[ 32 ] = CKEDITOR.env.ie ? 'mouseup' : 'click'; // SPACE
333 CKEDITOR.env.ie && ( keys[ 13 ] = 'mouseup' ); // Manage ENTER, since onclick is blocked in IE (#8041). 345 CKEDITOR.env.ie && ( keys[ 13 ] = 'mouseup' ); // Manage ENTER, since onclick is blocked in IE (http://dev.ckeditor.com/ticket/8041).
334 346
335 element = this._.element = block.element; 347 element = this._.element = block.element;
336 348
@@ -462,7 +474,11 @@ CKEDITOR.plugins.add( 'menu', {
462 render: function( menu, index, output ) { 474 render: function( menu, index, output ) {
463 var id = menu.id + String( index ), 475 var id = menu.id + String( index ),
464 state = ( typeof this.state == 'undefined' ) ? CKEDITOR.TRISTATE_OFF : this.state, 476 state = ( typeof this.state == 'undefined' ) ? CKEDITOR.TRISTATE_OFF : this.state,
465 ariaChecked = ''; 477 ariaChecked = '',
478 editor = this.editor,
479 keystroke,
480 command,
481 shortcut;
466 482
467 var stateName = state == CKEDITOR.TRISTATE_ON ? 'on' : state == CKEDITOR.TRISTATE_DISABLED ? 'disabled' : 'off'; 483 var stateName = state == CKEDITOR.TRISTATE_ON ? 'on' : state == CKEDITOR.TRISTATE_DISABLED ? 'disabled' : 'off';
468 484
@@ -478,6 +494,15 @@ CKEDITOR.plugins.add( 'menu', {
478 if ( this.icon && !( /\./ ).test( this.icon ) ) 494 if ( this.icon && !( /\./ ).test( this.icon ) )
479 iconName = this.icon; 495 iconName = this.icon;
480 496
497 if ( this.command ) {
498 command = editor.getCommand( this.command );
499 keystroke = editor.getCommandKeystroke( command );
500
501 if ( keystroke ) {
502 shortcut = CKEDITOR.tools.keystrokeToString( editor.lang.common.keyboard, keystroke );
503 }
504 }
505
481 var params = { 506 var params = {
482 id: id, 507 id: id,
483 name: this.name, 508 name: this.name,
@@ -487,13 +512,15 @@ CKEDITOR.plugins.add( 'menu', {
487 state: stateName, 512 state: stateName,
488 hasPopup: hasSubMenu ? 'true' : 'false', 513 hasPopup: hasSubMenu ? 'true' : 'false',
489 disabled: state == CKEDITOR.TRISTATE_DISABLED, 514 disabled: state == CKEDITOR.TRISTATE_DISABLED,
490 title: this.label, 515 title: this.label + ( shortcut ? ' (' + shortcut.display + ')' : '' ),
516 ariaShortcut: shortcut ? editor.lang.common.keyboardShortcut + ' ' + shortcut.aria : '',
491 href: 'javascript:void(\'' + ( this.label || '' ).replace( "'" + '' ) + '\')', // jshint ignore:line 517 href: 'javascript:void(\'' + ( this.label || '' ).replace( "'" + '' ) + '\')', // jshint ignore:line
492 hoverFn: menu._.itemOverFn, 518 hoverFn: menu._.itemOverFn,
493 moveOutFn: menu._.itemOutFn, 519 moveOutFn: menu._.itemOutFn,
494 clickFn: menu._.itemClickFn, 520 clickFn: menu._.itemClickFn,
495 index: index, 521 index: index,
496 iconStyle: CKEDITOR.skin.getIconStyle( iconName, ( this.editor.lang.dir == 'rtl' ), iconName == this.icon ? null : this.icon, this.iconOffset ), 522 iconStyle: CKEDITOR.skin.getIconStyle( iconName, ( this.editor.lang.dir == 'rtl' ), iconName == this.icon ? null : this.icon, this.iconOffset ),
523 shortcutHtml: shortcut ? menuShortcutTpl.output( { shortcut: shortcut.display } ) : '',
497 arrowHtml: hasSubMenu ? menuArrowTpl.output( { label: arrowLabel } ) : '', 524 arrowHtml: hasSubMenu ? menuArrowTpl.output( { label: arrowLabel } ) : '',
498 role: this.role ? this.role : 'menuitem', 525 role: this.role ? this.role : 'menuitem',
499 ariaChecked: ariaChecked 526 ariaChecked: ariaChecked
diff --git a/sources/plugins/notification/lang/az.js b/sources/plugins/notification/lang/az.js
new file mode 100644
index 0000000..7b04ae2
--- /dev/null
+++ b/sources/plugins/notification/lang/az.js
@@ -0,0 +1,7 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'notification', 'az', {
6 closed: 'Xəbərdarlıq pəncərəsi bağlanıb'
7} );
diff --git a/sources/plugins/notification/lang/ca.js b/sources/plugins/notification/lang/ca.js
new file mode 100644
index 0000000..bcff547
--- /dev/null
+++ b/sources/plugins/notification/lang/ca.js
@@ -0,0 +1,7 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'notification', 'ca', {
6 closed: 'Notificació tancada.'
7} );
diff --git a/sources/plugins/notification/lang/cs.js b/sources/plugins/notification/lang/cs.js
new file mode 100644
index 0000000..1bf1c04
--- /dev/null
+++ b/sources/plugins/notification/lang/cs.js
@@ -0,0 +1,7 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'notification', 'cs', {
6 closed: 'Oznámení zavřeno.'
7} );
diff --git a/sources/plugins/notification/lang/da.js b/sources/plugins/notification/lang/da.js
new file mode 100644
index 0000000..bd3f508
--- /dev/null
+++ b/sources/plugins/notification/lang/da.js
@@ -0,0 +1,7 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'notification', 'da', {
6 closed: 'Notefikation lukket.'
7} );
diff --git a/sources/plugins/notification/lang/de-ch.js b/sources/plugins/notification/lang/de-ch.js
new file mode 100644
index 0000000..6b97661
--- /dev/null
+++ b/sources/plugins/notification/lang/de-ch.js
@@ -0,0 +1,7 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'notification', 'de-ch', {
6 closed: 'Benachrichtigung geschlossen.'
7} );
diff --git a/sources/plugins/notification/lang/de.js b/sources/plugins/notification/lang/de.js
new file mode 100644
index 0000000..2dc45a3
--- /dev/null
+++ b/sources/plugins/notification/lang/de.js
@@ -0,0 +1,7 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'notification', 'de', {
6 closed: 'Benachrichtigung geschlossen.'
7} );
diff --git a/sources/plugins/notification/lang/en.js b/sources/plugins/notification/lang/en.js
new file mode 100644
index 0000000..4731650
--- /dev/null
+++ b/sources/plugins/notification/lang/en.js
@@ -0,0 +1,7 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'notification', 'en', {
6 closed: 'Notification closed.'
7} );
diff --git a/sources/plugins/notification/lang/eo.js b/sources/plugins/notification/lang/eo.js
new file mode 100644
index 0000000..743b8de
--- /dev/null
+++ b/sources/plugins/notification/lang/eo.js
@@ -0,0 +1,7 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'notification', 'eo', {
6 closed: 'Sciigo fermita'
7} );
diff --git a/sources/plugins/notification/lang/es-mx.js b/sources/plugins/notification/lang/es-mx.js
new file mode 100644
index 0000000..e759a4b
--- /dev/null
+++ b/sources/plugins/notification/lang/es-mx.js
@@ -0,0 +1,7 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'notification', 'es-mx', {
6 closed: 'Notificación cerrada.'
7} );
diff --git a/sources/plugins/notification/lang/es.js b/sources/plugins/notification/lang/es.js
new file mode 100644
index 0000000..a0bc477
--- /dev/null
+++ b/sources/plugins/notification/lang/es.js
@@ -0,0 +1,7 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'notification', 'es', {
6 closed: 'Notificación cerrada.'
7} );
diff --git a/sources/plugins/notification/lang/eu.js b/sources/plugins/notification/lang/eu.js
new file mode 100644
index 0000000..a2a01ee
--- /dev/null
+++ b/sources/plugins/notification/lang/eu.js
@@ -0,0 +1,7 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'notification', 'eu', {
6 closed: 'Jakinarazpena itxita.'
7} );
diff --git a/sources/plugins/notification/lang/fr.js b/sources/plugins/notification/lang/fr.js
new file mode 100644
index 0000000..4ddacc4
--- /dev/null
+++ b/sources/plugins/notification/lang/fr.js
@@ -0,0 +1,7 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'notification', 'fr', {
6 closed: 'Notification fermée.'
7} );
diff --git a/sources/plugins/notification/lang/gl.js b/sources/plugins/notification/lang/gl.js
new file mode 100644
index 0000000..38f90c4
--- /dev/null
+++ b/sources/plugins/notification/lang/gl.js
@@ -0,0 +1,7 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'notification', 'gl', {
6 closed: 'Notificación pechada.'
7} );
diff --git a/sources/plugins/notification/lang/hr.js b/sources/plugins/notification/lang/hr.js
new file mode 100644
index 0000000..e453afc
--- /dev/null
+++ b/sources/plugins/notification/lang/hr.js
@@ -0,0 +1,7 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'notification', 'hr', {
6 closed: 'Obavijest zatvorena.'
7} );
diff --git a/sources/plugins/notification/lang/hu.js b/sources/plugins/notification/lang/hu.js
new file mode 100644
index 0000000..48a846e
--- /dev/null
+++ b/sources/plugins/notification/lang/hu.js
@@ -0,0 +1,7 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'notification', 'hu', {
6 closed: 'Értesítés bezárva.'
7} );
diff --git a/sources/plugins/notification/lang/id.js b/sources/plugins/notification/lang/id.js
new file mode 100644
index 0000000..d8917af
--- /dev/null
+++ b/sources/plugins/notification/lang/id.js
@@ -0,0 +1,7 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'notification', 'id', {
6 closed: 'Pemberitahuan ditutup'
7} );
diff --git a/sources/plugins/notification/lang/it.js b/sources/plugins/notification/lang/it.js
new file mode 100644
index 0000000..aa48a61
--- /dev/null
+++ b/sources/plugins/notification/lang/it.js
@@ -0,0 +1,7 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'notification', 'it', {
6 closed: 'Notifica chiusa.'
7} );
diff --git a/sources/plugins/notification/lang/ja.js b/sources/plugins/notification/lang/ja.js
new file mode 100644
index 0000000..38469b9
--- /dev/null
+++ b/sources/plugins/notification/lang/ja.js
@@ -0,0 +1,7 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'notification', 'ja', {
6 closed: '通知を閉じました。'
7} );
diff --git a/sources/plugins/notification/lang/km.js b/sources/plugins/notification/lang/km.js
new file mode 100644
index 0000000..458db41
--- /dev/null
+++ b/sources/plugins/notification/lang/km.js
@@ -0,0 +1,7 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'notification', 'km', {
6 closed: 'បាន​បិទ​ការ​ផ្ដល់​ដំណឹង។'
7} );
diff --git a/sources/plugins/notification/lang/ko.js b/sources/plugins/notification/lang/ko.js
new file mode 100644
index 0000000..001f391
--- /dev/null
+++ b/sources/plugins/notification/lang/ko.js
@@ -0,0 +1,7 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'notification', 'ko', {
6 closed: '알림이 닫힘.'
7} );
diff --git a/sources/plugins/notification/lang/ku.js b/sources/plugins/notification/lang/ku.js
new file mode 100644
index 0000000..e2bac2a
--- /dev/null
+++ b/sources/plugins/notification/lang/ku.js
@@ -0,0 +1,7 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'notification', 'ku', {
6 closed: 'ئاگادارکەرەوەکە داخرا.'
7} );
diff --git a/sources/plugins/notification/lang/nb.js b/sources/plugins/notification/lang/nb.js
new file mode 100644
index 0000000..7a299dc
--- /dev/null
+++ b/sources/plugins/notification/lang/nb.js
@@ -0,0 +1,7 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'notification', 'nb', {
6 closed: 'Varsling lukket.'
7} );
diff --git a/sources/plugins/notification/lang/nl.js b/sources/plugins/notification/lang/nl.js
new file mode 100644
index 0000000..9e6c9b1
--- /dev/null
+++ b/sources/plugins/notification/lang/nl.js
@@ -0,0 +1,7 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'notification', 'nl', {
6 closed: 'Melding gesloten.'
7} );
diff --git a/sources/plugins/notification/lang/oc.js b/sources/plugins/notification/lang/oc.js
new file mode 100644
index 0000000..7d2445a
--- /dev/null
+++ b/sources/plugins/notification/lang/oc.js
@@ -0,0 +1,7 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'notification', 'oc', {
6 closed: 'Notificacion tampada.'
7} );
diff --git a/sources/plugins/notification/lang/pl.js b/sources/plugins/notification/lang/pl.js
new file mode 100644
index 0000000..51a787f
--- /dev/null
+++ b/sources/plugins/notification/lang/pl.js
@@ -0,0 +1,7 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'notification', 'pl', {
6 closed: 'Powiadomienie zostało zamknięte.'
7} );
diff --git a/sources/plugins/notification/lang/pt-br.js b/sources/plugins/notification/lang/pt-br.js
new file mode 100644
index 0000000..f8cd30a
--- /dev/null
+++ b/sources/plugins/notification/lang/pt-br.js
@@ -0,0 +1,7 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'notification', 'pt-br', {
6 closed: 'Notificação fechada.'
7} );
diff --git a/sources/plugins/notification/lang/pt.js b/sources/plugins/notification/lang/pt.js
new file mode 100644
index 0000000..3a74685
--- /dev/null
+++ b/sources/plugins/notification/lang/pt.js
@@ -0,0 +1,7 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'notification', 'pt', {
6 closed: 'Notificação encerrada.'
7} );
diff --git a/sources/plugins/notification/lang/ru.js b/sources/plugins/notification/lang/ru.js
new file mode 100644
index 0000000..1fa54f2
--- /dev/null
+++ b/sources/plugins/notification/lang/ru.js
@@ -0,0 +1,7 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'notification', 'ru', {
6 closed: 'Уведомление закрыто'
7} );
diff --git a/sources/plugins/notification/lang/sk.js b/sources/plugins/notification/lang/sk.js
new file mode 100644
index 0000000..ec6c9c0
--- /dev/null
+++ b/sources/plugins/notification/lang/sk.js
@@ -0,0 +1,7 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'notification', 'sk', {
6 closed: 'Notifikácia zatvorená.'
7} );
diff --git a/sources/plugins/notification/lang/sv.js b/sources/plugins/notification/lang/sv.js
new file mode 100644
index 0000000..f7ae2ad
--- /dev/null
+++ b/sources/plugins/notification/lang/sv.js
@@ -0,0 +1,7 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'notification', 'sv', {
6 closed: 'Notifiering stängd.'
7} );
diff --git a/sources/plugins/notification/lang/tr.js b/sources/plugins/notification/lang/tr.js
new file mode 100644
index 0000000..5d6565a
--- /dev/null
+++ b/sources/plugins/notification/lang/tr.js
@@ -0,0 +1,7 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'notification', 'tr', {
6 closed: 'Uyarılar kapatıldı.'
7} );
diff --git a/sources/plugins/notification/lang/ug.js b/sources/plugins/notification/lang/ug.js
new file mode 100644
index 0000000..f0d9c78
--- /dev/null
+++ b/sources/plugins/notification/lang/ug.js
@@ -0,0 +1,7 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'notification', 'ug', {
6 closed: 'ئوقتۇرۇش تاقالدى.'
7} );
diff --git a/sources/plugins/notification/lang/uk.js b/sources/plugins/notification/lang/uk.js
new file mode 100644
index 0000000..aa683ae
--- /dev/null
+++ b/sources/plugins/notification/lang/uk.js
@@ -0,0 +1,7 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'notification', 'uk', {
6 closed: 'Сповіщення закрито.'
7} );
diff --git a/sources/plugins/notification/lang/zh-cn.js b/sources/plugins/notification/lang/zh-cn.js
new file mode 100644
index 0000000..5eaf02e
--- /dev/null
+++ b/sources/plugins/notification/lang/zh-cn.js
@@ -0,0 +1,7 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'notification', 'zh-cn', {
6 closed: '通知已关闭'
7} );
diff --git a/sources/plugins/notification/lang/zh.js b/sources/plugins/notification/lang/zh.js
new file mode 100644
index 0000000..518b36c
--- /dev/null
+++ b/sources/plugins/notification/lang/zh.js
@@ -0,0 +1,7 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'notification', 'zh', {
6 closed: '通知已關閉。'
7} );
diff --git a/sources/plugins/notification/plugin.js b/sources/plugins/notification/plugin.js
new file mode 100644
index 0000000..305db28
--- /dev/null
+++ b/sources/plugins/notification/plugin.js
@@ -0,0 +1,929 @@
1/**
2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */
5
6/**
7 * @fileOverview The "Notification" plugin.
8 *
9 */
10
11'use strict';
12
13CKEDITOR.plugins.add( 'notification', {
14 lang: 'az,ca,cs,da,de,de-ch,en,eo,es,es-mx,eu,fr,gl,hr,hu,id,it,ja,km,ko,ku,nb,nl,oc,pl,pt,pt-br,ru,sk,sv,tr,ug,uk,zh,zh-cn', // %REMOVE_LINE_CORE%
15
16 init: function( editor ) {
17 editor._.notificationArea = new Area( editor );
18
19 // Overwrites default `editor.showNotification`.
20 editor.showNotification = function( message, type, progressOrDuration ) {
21 var progress, duration;
22
23 if ( type == 'progress' ) {
24 progress = progressOrDuration;
25 } else {
26 duration = progressOrDuration;
27 }
28
29 var notification = new CKEDITOR.plugins.notification( editor, {
30 message: message,
31 type: type,
32 progress: progress,
33 duration: duration
34 } );
35
36 notification.show();
37
38 return notification;
39 };
40
41 // Close the last notification on ESC.
42 editor.on( 'key', function( evt ) {
43 if ( evt.data.keyCode == 27 ) { /* ESC */
44 var notifications = editor._.notificationArea.notifications;
45
46 if ( !notifications.length ) {
47 return;
48 }
49
50 // As long as this is not a common practice to inform screen-reader users about actions, in this case
51 // this is the best solution (unfortunately there is no standard for accessibility for notifications).
52 // Notification has an `alert` aria role what means that it does not get a focus nor is needed to be
53 // closed (unlike `alertdialog`). However notification will capture ESC key so we need to inform user
54 // why it does not do other actions.
55 say( editor.lang.notification.closed );
56
57 // Hide last.
58 notifications[ notifications.length - 1 ].hide();
59
60 evt.cancel();
61 }
62 } );
63
64 // Send the message to the screen readers.
65 function say( text ) {
66 var message = new CKEDITOR.dom.element( 'div' );
67 message.setStyles( {
68 position: 'fixed',
69 'margin-left': '-9999px'
70 } );
71 message.setAttributes( {
72 'aria-live': 'assertive',
73 'aria-atomic': 'true'
74 } );
75 message.setText( text );
76
77 CKEDITOR.document.getBody().append( message );
78
79 setTimeout( function() {
80 message.remove();
81 }, 100 );
82 }
83 }
84} );
85
86/**
87 * Notification class. Notifications are used to display short messages to the user. They might be used to show the result of
88 * asynchronous actions or information about changes in the editor content. It is recommended to use them instead of
89 * alert dialogs. They should **not** be used if a user response is required nor with dialog windows (e.g. in dialog validation).
90 *
91 * There are four types of notifications available, see the {@link #type} property.
92 *
93 * Note that the notification constructor only creates a notification instance. To show it, use the {@link #show} method:
94 *
95 * var notification = new CKEDITOR.plugins.notification( editor, { message: 'Foo' } );
96 * notification.show();
97 *
98 * You can also use the {@link CKEDITOR.editor#showNotification} method:
99 *
100 * editor.showNotification( 'Foo' );
101 *
102 * All of the notification actions: ({@link #show}, {@link #update} and {@link #hide}) fire cancelable events
103 * on the related {@link CKEDITOR.editor} instance so you can integrate editor notifications with your website notifications.
104 *
105 * Refer to the [Notifications](http://docs.ckeditor.com/#!/guide/dev_notifications) article for more information about this feature.
106 *
107 * @since 4.5
108 * @class CKEDITOR.plugins.notification
109 * @constructor Create a notification object. Call {@link #show} to show the created notification.
110 * @param {CKEDITOR.editor} editor The editor instance.
111 * @param {Object} options
112 * @param {String} options.message The message displayed in the notification.
113 * @param {String} [options.type='info'] Notification type, see {@link #type}.
114 * @param {Number} [options.progress=0] If the type is `progress` this may be a progress from 0 to 1.
115 * @param {Number} [options.duration] How long the notification will be visible, see {@link #duration}.
116 */
117function Notification( editor, options ) {
118 CKEDITOR.tools.extend( this, options, {
119 editor: editor,
120 id: 'cke-' + CKEDITOR.tools.getUniqueId(),
121 area: editor._.notificationArea
122 } );
123
124 if ( !options.type ) {
125 this.type = 'info';
126 }
127
128 this.element = this._createElement();
129
130 // Don't allow dragging on notification (http://dev.ckeditor.com/ticket/13184).
131 editor.plugins.clipboard && CKEDITOR.plugins.clipboard.preventDefaultDropOnElement( this.element );
132}
133
134/**
135 * The editor instance.
136 *
137 * @readonly
138 * @property {CKEDITOR.editor} editor
139 */
140
141/**
142 * Message displayed in the notification.
143 *
144 * @readonly
145 * @property {String} message
146 */
147
148/**
149 * Notification type. There are four types available:
150 *
151 * * `info` (default) &ndash; Information for the user (e.g. "File is uploading.", "ACF modified content."),
152 * * `warning` &ndash; Warning or error message (e.g. "This type of file is not supported.",
153 * "You cannot paste the script."),
154 * * `success` &ndash; Information that an operation finished successfully (e.g. "File uploaded.", "Data imported.").
155 * * `progress` &ndash; Information about the progress of an operation. When the operation is done, the notification
156 * type should be changed to `success`.
157 *
158 * @readonly
159 * @property {String} type
160 */
161
162/**
163 * If the notification {@link #type} is `'progress'`, this is the progress from `0` to `1`.
164 *
165 * @readonly
166 * @property {Number} progress
167 */
168
169/**
170 * Notification duration. Determines after how many milliseconds the notification should close automatically.
171 * `0` means that the notification will not close automatically and that the user needs to close it manually.
172 * The default value for `warning` and `progress` notifications is `0`. For `info` and `success` the value can
173 * either be set through the {@link CKEDITOR.config#notification_duration} configuration option or equals `5000`
174 * if the configuration option is not set.
175 *
176 * @readonly
177 * @property {Number} duration
178 */
179
180/**
181 * Unique notification ID.
182 *
183 * @readonly
184 * @property {Number} id
185 */
186
187/**
188 * Notification DOM element. There is one element per notification. It is created when the notification is created,
189 * even if it is not shown. If the notification is hidden, the element is detached from the document but not deleted.
190 * It will be reused if the notification is shown again.
191 *
192 * @readonly
193 * @property {CKEDITOR.dom.element} element
194 */
195
196/**
197 * {@link CKEDITOR.plugins.notification.area Notification area} reference.
198 *
199 * @readonly
200 * @property {CKEDITOR.plugins.notification.area} area
201 */
202
203Notification.prototype = {
204 /**
205 * Adds the notification element to the notification area. The notification will be hidden automatically if
206 * {@link #duration} is set.
207 *
208 * Fires the {@link CKEDITOR.editor#notificationShow} event.
209 */
210 show: function() {
211 if ( this.editor.fire( 'notificationShow', { notification: this } ) === false ) {
212 return;
213 }
214
215 this.area.add( this );
216
217 this._hideAfterTimeout();
218 },
219
220 /**
221 * Updates the notification object and element.
222 *
223 * Fires the {@link CKEDITOR.editor#notificationUpdate} event.
224 *
225 * @param {Object} options
226 * @param {String} [options.message] {@link #message}
227 * @param {String} [options.type] {@link #type}
228 * @param {Number} [options.progress] {@link #progress}
229 * @param {Number} [options.duration] {@link #duration}
230 * @param {Boolean} [options.important=false] If the update is important, the notification will be shown
231 * if it was hidden and read by screen readers.
232 */
233 update: function( options ) {
234 var show = true;
235
236 if ( this.editor.fire( 'notificationUpdate', { notification: this, options: options } ) === false ) {
237 // The idea of cancelable event is to let user create his own way of displaying notification, so if
238 // `notificationUpdate` event will be canceled there will be no interaction with notification area, but on
239 // the other hand the logic should work anyway so object will be updated (including `element` property).
240 // Note: we can safely update the element's attributes below, because this element is created inside
241 // the constructor. If the notificatinShow event was canceled as well, the element is detached from DOM.
242 show = false;
243 }
244
245 var element = this.element,
246 messageElement = element.findOne( '.cke_notification_message' ),
247 progressElement = element.findOne( '.cke_notification_progress' ),
248 type = options.type;
249
250 element.removeAttribute( 'role' );
251
252 // Change type to progress if `options.progress` is set.
253 if ( options.progress && this.type != 'progress' ) {
254 type = 'progress';
255 }
256
257 if ( type ) {
258 element.removeClass( this._getClass() );
259 element.removeAttribute( 'aria-label' );
260
261 this.type = type;
262
263 element.addClass( this._getClass() );
264 element.setAttribute( 'aria-label', this.type );
265
266 if ( this.type == 'progress' && !progressElement ) {
267 progressElement = this._createProgressElement();
268 progressElement.insertBefore( messageElement );
269 } else if ( this.type != 'progress' && progressElement ) {
270 progressElement.remove();
271 }
272 }
273
274 if ( options.message !== undefined ) {
275 this.message = options.message;
276 messageElement.setHtml( this.message );
277 }
278
279 if ( options.progress !== undefined ) {
280 this.progress = options.progress;
281
282 if ( progressElement ) {
283 progressElement.setStyle( 'width', this._getPercentageProgress() );
284 }
285 }
286
287 if ( show && options.important ) {
288 element.setAttribute( 'role', 'alert' );
289
290 if ( !this.isVisible() ) {
291 this.area.add( this );
292 }
293 }
294
295 // Overwrite even if it is undefined.
296 this.duration = options.duration;
297
298 this._hideAfterTimeout();
299 },
300
301 /**
302 * Removes the notification element from the notification area.
303 *
304 * Fires the {@link CKEDITOR.editor#notificationHide} event.
305 */
306 hide: function() {
307 if ( this.editor.fire( 'notificationHide', { notification: this } ) === false ) {
308 return;
309 }
310
311 this.area.remove( this );
312 },
313
314 /**
315 * Returns `true` if the notification is in the notification area.
316 *
317 * @returns {Boolean} `true` if the notification is in the notification area.
318 */
319 isVisible: function() {
320 return CKEDITOR.tools.indexOf( this.area.notifications, this ) >= 0;
321 },
322
323 /**
324 * Creates the notification DOM element.
325 *
326 * @private
327 * @returns {CKEDITOR.dom.element} Notification DOM element.
328 */
329 _createElement: function() {
330 var notification = this,
331 notificationElement, notificationMessageElement, notificationCloseElement,
332 close = this.editor.lang.common.close;
333
334 notificationElement = new CKEDITOR.dom.element( 'div' );
335 notificationElement.addClass( 'cke_notification' );
336 notificationElement.addClass( this._getClass() );
337 notificationElement.setAttributes( {
338 id: this.id,
339 role: 'alert',
340 'aria-label': this.type
341 } );
342
343 if ( this.type == 'progress' )
344 notificationElement.append( this._createProgressElement() );
345
346 notificationMessageElement = new CKEDITOR.dom.element( 'p' );
347 notificationMessageElement.addClass( 'cke_notification_message' );
348 notificationMessageElement.setHtml( this.message );
349 notificationElement.append( notificationMessageElement );
350
351 notificationCloseElement = CKEDITOR.dom.element.createFromHtml(
352 '<a class="cke_notification_close" href="javascript:void(0)" title="' + close + '" role="button" tabindex="-1">' +
353 '<span class="cke_label">X</span>' +
354 '</a>' );
355 notificationElement.append( notificationCloseElement );
356
357 notificationCloseElement.on( 'click', function() {
358 // Focus editor on close (http://dev.ckeditor.com/ticket/12865)
359 notification.editor.focus();
360
361 notification.hide();
362 } );
363
364 return notificationElement;
365 },
366
367 /**
368 * Gets the notification CSS class.
369 *
370 * @private
371 * @returns {String} Notification CSS class.
372 */
373 _getClass: function() {
374 return ( this.type == 'progress' ) ?
375 'cke_notification_info' :
376 ( 'cke_notification_' + this.type );
377 },
378
379 /**
380 * Creates a progress element for the notification element.
381 *
382 * @private
383 * @returns {CKEDITOR.dom.element} Progress element for the notification element.
384 */
385 _createProgressElement: function() {
386 var element = new CKEDITOR.dom.element( 'span' );
387 element.addClass( 'cke_notification_progress' );
388 element.setStyle( 'width', this._getPercentageProgress() );
389 return element;
390 },
391
392 /**
393 * Gets the progress as a percentage (ex. `0.3` -> `30%`).
394 *
395 * @private
396 * @returns {String} Progress as a percentage.
397 */
398 _getPercentageProgress: function() {
399 return Math.round( ( this.progress || 0 ) * 100 ) + '%';
400 },
401
402 /**
403 * Hides the notification after a timeout.
404 *
405 * @private
406 */
407 _hideAfterTimeout: function() {
408 var notification = this,
409 duration;
410
411 if ( this._hideTimeoutId ) {
412 clearTimeout( this._hideTimeoutId );
413 }
414
415 if ( typeof this.duration == 'number' ) {
416 duration = this.duration;
417 } else if ( this.type == 'info' || this.type == 'success' ) {
418 duration = ( typeof this.editor.config.notification_duration == 'number' ) ?
419 this.editor.config.notification_duration :
420 5000;
421 }
422
423 if ( duration ) {
424 notification._hideTimeoutId = setTimeout( function() {
425 notification.hide();
426 }, duration );
427 }
428 }
429};
430
431/**
432 * Notification area is an area where all notifications are put. The area is laid out dynamically.
433 * When the first notification is added, the area is shown and all listeners are added.
434 * When the last notification is removed, the area is hidden and all listeners are removed.
435 *
436 * @since 4.5
437 * @private
438 * @class CKEDITOR.plugins.notification.area
439 * @constructor
440 * @param {CKEDITOR.editor} editor The editor instance.
441 */
442function Area( editor ) {
443 var that = this;
444
445 this.editor = editor;
446 this.notifications = [];
447 this.element = this._createElement();
448 this._uiBuffer = CKEDITOR.tools.eventsBuffer( 10, this._layout, this );
449 this._changeBuffer = CKEDITOR.tools.eventsBuffer( 500, this._layout, this );
450
451 editor.on( 'destroy', function() {
452 that._removeListeners();
453 that.element.remove();
454 } );
455}
456
457/**
458 * The editor instance.
459 *
460 * @readonly
461 * @property {CKEDITOR.editor} editor
462 */
463
464/**
465 * The array of added notifications.
466 *
467 * @readonly
468 * @property {Array} notifications
469 */
470
471/**
472 * Notification area DOM element. This element is created when the area object is created. It will be attached to the document
473 * when the first notification is added and removed when the last notification is removed.
474 *
475 * @readonly
476 * @property {CKEDITOR.dom.element} element
477 */
478
479/**
480 * Notification width. Cached for performance reasons.
481 *
482 * @private
483 * @property {CKEDITOR.dom.element} _notificationWidth
484 */
485
486/**
487 * Notification margin. Cached for performance reasons.
488 *
489 * @private
490 * @property {CKEDITOR.dom.element} _notificationMargin
491 */
492
493/**
494 * Event buffer object for UI events to optimize performance.
495 *
496 * @private
497 * @property {Object} _uiBuffer
498 */
499
500/**
501 * Event buffer object for editor change events to optimize performance.
502 *
503 * @private
504 * @property {Object} _changeBuffer
505 */
506
507Area.prototype = {
508 /**
509 * Adds the notification to the notification area. If it is the first notification, the area will also be attached to
510 * the document and listeners will be attached.
511 *
512 * Note that the proper way to show a notification is to call the {@link CKEDITOR.plugins.notification#show} method.
513 *
514 * @param {CKEDITOR.plugins.notification} notification Notification to add.
515 */
516 add: function( notification ) {
517 this.notifications.push( notification );
518
519 this.element.append( notification.element );
520
521 if ( this.element.getChildCount() == 1 ) {
522 CKEDITOR.document.getBody().append( this.element );
523 this._attachListeners();
524 }
525
526 this._layout();
527 },
528
529 /**
530 * Removes the notification from the notification area. If it is the last notification, the area will also be
531 * detached from the document and listeners will be detached.
532 *
533 * Note that the proper way to hide a notification is to call the {@link CKEDITOR.plugins.notification#hide} method.
534 *
535 * @param {CKEDITOR.plugins.notification} notification Notification to remove.
536 */
537 remove: function( notification ) {
538 var i = CKEDITOR.tools.indexOf( this.notifications, notification );
539
540 if ( i < 0 ) {
541 return;
542 }
543
544 this.notifications.splice( i, 1 );
545
546 notification.element.remove();
547
548 if ( !this.element.getChildCount() ) {
549 this._removeListeners();
550 this.element.remove();
551 }
552 },
553
554 /**
555 * Creates the notification area element.
556 *
557 * @private
558 * @returns {CKEDITOR.dom.element} Notification area element.
559 */
560 _createElement: function() {
561 var editor = this.editor,
562 config = editor.config,
563 notificationArea = new CKEDITOR.dom.element( 'div' );
564
565 notificationArea.addClass( 'cke_notifications_area' );
566 notificationArea.setAttribute( 'id', 'cke_notifications_area_' + editor.name );
567 notificationArea.setStyle( 'z-index', config.baseFloatZIndex - 2 );
568
569 return notificationArea;
570 },
571
572 /**
573 * Attaches listeners to the notification area.
574 *
575 * @private
576 */
577 _attachListeners: function() {
578 var win = CKEDITOR.document.getWindow(),
579 editor = this.editor;
580
581 win.on( 'scroll', this._uiBuffer.input );
582 win.on( 'resize', this._uiBuffer.input );
583 editor.on( 'change', this._changeBuffer.input );
584 editor.on( 'floatingSpaceLayout', this._layout, this, null, 20 );
585 editor.on( 'blur', this._layout, this, null, 20 );
586 },
587
588 /**
589 * Detaches listeners from the notification area.
590 *
591 * @private
592 */
593 _removeListeners: function() {
594 var win = CKEDITOR.document.getWindow(),
595 editor = this.editor;
596
597 win.removeListener( 'scroll', this._uiBuffer.input );
598 win.removeListener( 'resize', this._uiBuffer.input );
599 editor.removeListener( 'change', this._changeBuffer.input );
600 editor.removeListener( 'floatingSpaceLayout', this._layout );
601 editor.removeListener( 'blur', this._layout );
602 },
603
604 /**
605 * Sets the position of the notification area based on the editor content, toolbar as well as
606 * viewport position and dimensions.
607 *
608 * @private
609 */
610 _layout: function() {
611 var area = this.element,
612 editor = this.editor,
613 contentsRect = editor.ui.contentsElement.getClientRect(),
614 contentsPos = editor.ui.contentsElement.getDocumentPosition(),
615 top,
616 topRect,
617 areaRect = area.getClientRect(),
618 notification,
619 notificationWidth = this._notificationWidth,
620 notificationMargin = this._notificationMargin,
621 win = CKEDITOR.document.getWindow(),
622 scrollPos = win.getScrollPosition(),
623 viewRect = win.getViewPaneSize(),
624 body = CKEDITOR.document.getBody(),
625 bodyPos = body.getDocumentPosition(),
626 cssLength = CKEDITOR.tools.cssLength;
627
628 // Cache for optimization
629 if ( !notificationWidth || !notificationMargin ) {
630 notification = this.element.getChild( 0 );
631 notificationWidth = this._notificationWidth = notification.getClientRect().width;
632 notificationMargin = this._notificationMargin =
633 parseInt( notification.getComputedStyle( 'margin-left' ), 10 ) +
634 parseInt( notification.getComputedStyle( 'margin-right' ), 10 );
635 }
636
637 // Check if toolbar exist and if so, then assign values to it (#491).
638 if ( editor.toolbar ) {
639 top = editor.ui.space( 'top' );
640 topRect = top.getClientRect();
641 }
642
643
644 // --------------------------------------- Horizontal layout ----------------------------------------
645
646 // +---Viewport-------------------------------+ +---Viewport-------------------------------+
647 // | | | |
648 // | +---Toolbar----------------------------+ | | +---Content----------------------------+ |
649 // | | | | | | | |
650 // | +---Content----------------------------+ | | | | |
651 // | | | | | +---Toolbar----------------------+ | |
652 // | | +------Notification------+ | | | | | | |
653 // | | | | OR | +--------------------------------+ | |
654 // | | | | | | | |
655 // | | | | | | +------Notification------+ | |
656 // | | | | | | | |
657 // | | | | | | | |
658 // | +--------------------------------------+ | | +--------------------------------------+ |
659 // +------------------------------------------+ +------------------------------------------+
660 if ( top && top.isVisible() &&
661 topRect.bottom > contentsRect.top &&
662 topRect.bottom < contentsRect.bottom - areaRect.height ) {
663 setBelowToolbar();
664
665 // +---Viewport-------------------------------+
666 // | |
667 // | +---Content----------------------------+ |
668 // | | | |
669 // | | +------Notification------+ | |
670 // | | | |
671 // | | | |
672 // | | | |
673 // | +--------------------------------------+ |
674 // | |
675 // +------------------------------------------+
676 } else if ( contentsRect.top > 0 ) {
677 setTopStandard();
678
679 // +---Content----------------------------+
680 // | |
681 // +---Viewport-------------------------------+
682 // | | | |
683 // | | +------Notification------+ | |
684 // | | | |
685 // | | | |
686 // | | | |
687 // | +--------------------------------------+ |
688 // | |
689 // +------------------------------------------+
690 } else if ( contentsPos.y + contentsRect.height - areaRect.height > scrollPos.y ) {
691 setTopFixed();
692
693 // +---Content----------------------------+ +---Content----------------------------+
694 // | | | |
695 // | | | |
696 // | | | +------Notification------+ |
697 // | | | |
698 // | | OR +--------------------------------------+
699 // +---Viewport-------------------------------+
700 // | | +------Notification------+ | | +---Viewport-------------------------------+
701 // | | | | | |
702 // | +--------------------------------------+ | | |
703 // | | | |
704 // +------------------------------------------+ +------------------------------------------+
705 } else {
706 setBottom();
707 }
708
709 function setTopStandard() {
710 area.setStyles( {
711 position: 'absolute',
712 top: cssLength( contentsPos.y )
713 } );
714 }
715
716 function setBelowToolbar() {
717 area.setStyles( {
718 position: 'fixed',
719 top: cssLength( topRect.bottom )
720 } );
721 }
722
723 function setTopFixed() {
724 area.setStyles( {
725 position: 'fixed',
726 top: 0
727 } );
728 }
729
730 function setBottom() {
731 area.setStyles( {
732 position: 'absolute',
733 top: cssLength( contentsPos.y + contentsRect.height - areaRect.height )
734 } );
735 }
736
737 // ---------------------------------------- Vertical layout -----------------------------------------
738
739 var leftBase = area.getStyle( 'position' ) == 'fixed' ?
740 contentsRect.left :
741 body.getComputedStyle( 'position' ) != 'static' ? contentsPos.x - bodyPos.x : contentsPos.x;
742
743 // Content is narrower than notification
744 if ( contentsRect.width < notificationWidth + notificationMargin ) {
745
746 // +---Viewport-------------------------------+
747 // | |
748 // | +---Content------------+ |
749 // | | | |
750 // | +------Notification------+ | |
751 // | | | |
752 // | +----------------------+ |
753 // | |
754 // +------------------------------------------+
755 if ( contentsPos.x + notificationWidth + notificationMargin > scrollPos.x + viewRect.width ) {
756 setRight();
757
758 // +---Viewport-------------------------------+ +---Viewport--------------------------+
759 // | | | |
760 // | +---Content------------+ | +---Content------------+ |
761 // | | | | | | | |
762 // | | +------Notification------+ | OR | +------Notification------+ |
763 // | | | | | | | |
764 // | +----------------------+ | +----------------------+ |
765 // | | | |
766 // +------------------------------------------+ +-------------------------------------+
767 } else {
768 setLeft();
769 }
770
771 // Content is wider than notification.
772 } else {
773
774 // +--+Viewport+------------------------+
775 // | |
776 // | +---Content-----------------------------------------+
777 // | | | |
778 // | | +-----+Notification+-----+ |
779 // | | | |
780 // | | | |
781 // | | | |
782 // | +---------------------------------------------------+
783 // | |
784 // +------------------------------------+
785 if ( contentsPos.x + notificationWidth + notificationMargin > scrollPos.x + viewRect.width ) {
786 setLeft();
787
788 // +---Viewport-------------------------+
789 // | |
790 // | +---Content----------------------------------------------+
791 // | | | |
792 // | | +------Notification------+ | |
793 // | | | |
794 // | | | |
795 // | +--------------------------------------------------------+
796 // | |
797 // +------------------------------------+
798 } else if ( contentsPos.x + contentsRect.width / 2 +
799 notificationWidth / 2 + notificationMargin > scrollPos.x + viewRect.width ) {
800 setRightFixed();
801
802 // +---Viewport-------------------------+
803 // | |
804 // +---Content----------------------------+ |
805 // | | | |
806 // | +------Notification------+ | |
807 // | | | |
808 // | | | |
809 // +--------------------------------------+ |
810 // | |
811 // +------------------------------------+
812 } else if ( contentsRect.left + contentsRect.width - notificationWidth - notificationMargin < 0 ) {
813 setRight();
814
815 // +---Viewport-------------------------+
816 // | |
817 // +---Content---------------------------------------------+ |
818 // | | | |
819 // | | +------Notification------+ | |
820 // | | | |
821 // | | | |
822 // +-------------------------------------------------------+ |
823 // | |
824 // +------------------------------------+
825 } else if ( contentsRect.left + contentsRect.width / 2 - notificationWidth / 2 < 0 ) {
826 setLeftFixed();
827
828 // +---Viewport-------------------------+
829 // | |
830 // | +---Content----------------------+ |
831 // | | | |
832 // | | +-----Notification-----+ | |
833 // | | | |
834 // | | | |
835 // | +--------------------------------+ |
836 // | |
837 // +------------------------------------+
838 } else {
839 setCenter();
840 }
841 }
842
843 function setLeft() {
844 area.setStyle( 'left', cssLength( leftBase ) );
845 }
846
847 function setLeftFixed() {
848 area.setStyle( 'left', cssLength( leftBase - contentsPos.x + scrollPos.x ) );
849 }
850
851 function setCenter() {
852 area.setStyle( 'left', cssLength( leftBase + contentsRect.width / 2 - notificationWidth / 2 - notificationMargin / 2 ) );
853 }
854
855 function setRight() {
856 area.setStyle( 'left', cssLength( leftBase + contentsRect.width - notificationWidth - notificationMargin ) );
857 }
858
859 function setRightFixed() {
860 area.setStyle( 'left', cssLength( leftBase - contentsPos.x + scrollPos.x + viewRect.width -
861 notificationWidth - notificationMargin ) );
862 }
863 }
864};
865
866CKEDITOR.plugins.notification = Notification;
867
868/**
869 * After how many milliseconds the notification of the `info` and `success`
870 * {@link CKEDITOR.plugins.notification#type type} should close automatically.
871 * `0` means that notifications will not close automatically.
872 * Note that `warning` and `progress` notifications will never close automatically.
873 *
874 * Refer to the [Notifications](http://docs.ckeditor.com/#!/guide/dev_notifications) article
875 * for more information about this feature.
876 *
877 * @since 4.5
878 * @cfg {Number} [notification_duration=5000]
879 * @member CKEDITOR.config
880 */
881
882/**
883 * Event fired when the {@link CKEDITOR.plugins.notification#show} method is called, before the
884 * notification is shown. If this event is canceled, the notification will not be shown.
885 *
886 * Using this event allows you to fully customize how a notification will be shown. It may be used to integrate
887 * the CKEditor notification system with your web page notifications.
888 *
889 * @since 4.5
890 * @event notificationShow
891 * @member CKEDITOR.editor
892 * @param data
893 * @param {CKEDITOR.plugins.notification} data.notification Notification which will be shown.
894 * @param {CKEDITOR.editor} editor The editor instance.
895 */
896
897/**
898 * Event fired when the {@link CKEDITOR.plugins.notification#update} method is called, before the
899 * notification is updated. If this event is canceled, the notification will not be shown even if the update was important,
900 * but the object will be updated anyway. Note that canceling this event does not prevent updating {@link #element}
901 * attributes, but if {@link #notificationShow} was canceled as well, this element is detached from the DOM.
902 *
903 * Using this event allows you to fully customize how a notification will be updated. It may be used to integrate
904 * the CKEditor notification system with your web page notifications.
905 *
906 * @since 4.5
907 * @event notificationUpdate
908 * @member CKEDITOR.editor
909 * @param data
910 * @param {CKEDITOR.plugins.notification} data.notification Notification which will be updated.
911 * Note that it contains the data that has not been updated yet.
912 * @param {Object} data.options Update options, see {@link CKEDITOR.plugins.notification#update}.
913 * @param {CKEDITOR.editor} editor The editor instance.
914 */
915
916/**
917 * Event fired when the {@link CKEDITOR.plugins.notification#hide} method is called, before the
918 * notification is hidden. If this event is canceled, the notification will not be hidden.
919 *
920 * Using this event allows you to fully customize how a notification will be hidden. It may be used to integrate
921 * the CKEditor notification system with your web page notifications.
922 *
923 * @since 4.5
924 * @event notificationHide
925 * @member CKEDITOR.editor
926 * @param data
927 * @param {CKEDITOR.plugins.notification} data.notification Notification which will be hidden.
928 * @param {CKEDITOR.editor} editor The editor instance.
929 */
diff --git a/sources/plugins/oembed/LICENSE.md b/sources/plugins/oembed/LICENSE.md
new file mode 100644
index 0000000..be0064f
--- /dev/null
+++ b/sources/plugins/oembed/LICENSE.md
@@ -0,0 +1,21 @@
1The MIT License (MIT)
2
3Copyright (c) Ingo Herbote
4
5Permission is hereby granted, free of charge, to any person obtaining a copy
6of this software and associated documentation files (the "Software"), to deal
7in the Software without restriction, including without limitation the rights
8to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9copies of the Software, and to permit persons to whom the Software is
10furnished to do so, subject to the following conditions:
11
12The above copyright notice and this permission notice shall be included in all
13copies or substantial portions of the Software.
14
15THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21SOFTWARE.
diff --git a/sources/plugins/oembed/README.md b/sources/plugins/oembed/README.md
new file mode 100644
index 0000000..64c729c
--- /dev/null
+++ b/sources/plugins/oembed/README.md
@@ -0,0 +1,201 @@
1CKEditor-oEmbed-Plugin
2======================
3
4oEmbed Plugin for CKEditor
5
6This Plugin allows to insert embedded content (such as photos, videos, audio, and other rich media) via the OEmbed API. You only have to provide the url to the site (It works also when the url is shortened) you want to embed and the plugin does the rest.
7
8This Plugin uses the jquery-oembed-all Plugin located at https://github.com/starfishmod/jquery-oembed-all.
9
10####Demo
11
12http://w8tcha.github.com/CKEditor-oEmbed-Plugin/
13
14####Currently Supported Sites...
15
16###Video
17* Youtube - oembed - YQL
18* Blip - oEmbed
19* Hulu - oEmbed
20* Vimeo - oEmbed
21* National film board of Canada - oEmbed
22* Qik - oEmbed
23* Dotsub - oEmbed
24* Clikthrough - oEmbed
25* Kino Map - oEmbed
26* Funny Or Die - Embedded
27* College Humour - Embedded
28* Metacafe - Embedded
29* embedr - Embedded
30* 5min - oEmbed is XML only - using YQL to translate it
31* ustream.tv - oEmbed is not JSONP enabled - using YQL to translate it
32* viddler - OGP
33* twitvid - Embedded
34* bambuser - Embedded
35* xtranormal - Embedded
36* Gametrailers - Embedded
37* Vzarr - Embedded
38* VHX - oembed
39* bambuser - oembed
40* dailymotion.com - oembed
41* animoto - oembed
42* justin.tv - YQL JSON
43* livestream - OGP
44* scivee - embedded
45* veoh - embedded
46* minoto-video - oembed using YQL
47* TrailerAddict - OGP
48* vodpod - oembed YQL - broken as the oembed has absolute positioning which breaks the display
49* fora.tv -OGP YQL
50* TED - OGP YQL
51* Aniboom - embedded
52* Comedy Central - OGP
53* snotr - embedded
54* zapiks - OGP
55* youku - embedded
56* wistia - Oembed
57
58###Audio
59* Soundcloud - oEmbed
60* HuffDuffer - oEmbed
61* BandCamp - YQL and Embedded
62* podomatic - OGP
63* rdio.com - oEmbed
64* hark.com - OGP
65* chirb.it - YQL and oembed
66* official.fm - YQL and oembed
67* mixcloud - YQL and oembed
68* shoudio - oembed
69* audioboo.fm - OGP
70* Spotify - OGP YQL
71
72###Photo
73* flickr - oEmbed
74* photobucket - oEmbed
75* instagram - oEmbed
76* yfrog - oEmbed
77* 23HQ - oEmbed
78* Smugmug - oEmbed
79* twitpic - OGP YQL
80* 500px.com - OGP
81* visual.ly - YQL Lookup
82* img.ly - Thumbnail view
83* imgur.com - Thumbnail view
84* twitgoo.com - Thumbnail view
85* gravatar - Thumbnail view when using mailto
86* pintrest - YQL - Embedded view of a sort.
87* circuitlab - image view
88* skitch - YQL oembed
89* graphic.ly - OGP
90* dribble - jsonp lookup
91* Lockerz - YQL lookup
92* AsciiArtFarts - YQL Lookup
93* lego cusoo - OGP over YQL
94* plannary - OGP over YQL
95* propic - OGP
96* avairy.com - OGP
97* lomography - ogp
98* weheartit - ogp
99* glogster - ogp
100* chart.ly - embedded
101* twitrpix - OGP
102* chictopia - OGP
103
104###Rich
105* Meetup - oEmbed
106* gigapans - Embedded
107* Slideshare - oEmbed
108* ebay - Embedded
109* scribd - Embedded
110* screenr - Embedded
111* tumblr- JSONP lookup
112* imdb - JSONP lookup via imdbapi.com
113* wikipedia- JSONP lookup
114* github- JSONP lookup (CSS)
115* eventful - OGP
116* myspace - OGP
117* live Journal - JSONP Lookup (CSS)
118* wordpress - oEmbed (wordpress.com, wp.me, blogs.cnn.com, techcrunch.com). I can add other wordpress sites as well.
119* circuitbee -Embedded
120* stack overflow - JSONP Lookup (CSS)
121* Facebook - JSONP Lookup (CSS)
122* Pastebin - Embedded
123* Pastie - YQL lookup
124* kickstarter - Embedded
125* issuu - OGP
126* reelapp.com - Embedded
127* Etsy - OGP over YQL
128* Amazon - Embedded - Requires Affiliate code
129* linkedin - Embedded IFRAME - found a link that works :)
130* Lanyrd - YQL (CSS)
131* twitter - Oembed - status only - but that is ok I think
132* github gist - oembed
133* speakerdeck - yql oembed
134* dipity - yql oembed
135* dailymile - oembed
136* deviantart - oembed
137* Roomshare Japan - oembed
138* mobypictures - oembed
139* prezi - embedded
140* popplet - embedded
141* authorstream - OGP
142* googlecalendar - Iframe
143* cacoo - oembed
144* pearltrees - embedded
145* urtak - oembed - is broken in iframe return atm -seems to be an embed.ly issue??
146* jotform - embedded
147* Urban Dictionary - YQL lookup
148* Ars Technica - YQL Lookup
149* Eventbrite - OGP YQL
150* last.fm OGP YQL
151* Rotten Tomatoes - OGP YQL
152* iFixit - OGP
153* qwiki - OGP
154* brighttalk - Meta info
155* tinychat - OGP
156* tourwrist - embedded
157* bnter - OGP
158* bigthink - OGP
159* wirewax - OGP
160* whosay - OGP
161* timetoast - embedded
162* tripline - OGP
163* jsfiddle - embedded
164
165
166####License
167
168Licensed under the terms of the MIT License.
169
170####Dependencies
171This Plugin requires the following plugins to work: Widget, Dialog.
172
173####Installation
174
175 1. Before you can use the plugin you also need to download & install the widget plugin, if you have it not installed. http://ckeditor.com/addon/widget
176 2. Extract the contents of the file into the "plugins" folder of CKEditor.
177 3. In the CKEditor configuration file (config.js) add the following code:
178
179````js
180config.extraPlugins = 'oembed,widget';
181````
182
1832a. Additionally you can also set the default values vor the Max. Width/Height Values
184
185````js
186config.oembed_maxWidth = '560';
187config.oembed_maxHeight = '315';
188````
189
190and also you can define an css class for the embeded content wrapper (div), by default there is no Class defined
191
192````js
193config.oembed_WrapperClass = 'embededContent';
194````
195
196
1973. and also include the plugin in the toolbar
198
199````js
200toolbar :[ ... ['oembed']...]
201````
diff --git a/sources/plugins/oembed/icons/hidpi/oembed.png b/sources/plugins/oembed/icons/hidpi/oembed.png
new file mode 100644
index 0000000..a568d17
--- /dev/null
+++ b/sources/plugins/oembed/icons/hidpi/oembed.png
Binary files differ
diff --git a/sources/plugins/oembed/icons/oembed.png b/sources/plugins/oembed/icons/oembed.png
new file mode 100644
index 0000000..2ba7cce
--- /dev/null
+++ b/sources/plugins/oembed/icons/oembed.png
Binary files differ
diff --git a/sources/plugins/oembed/lang/de.js b/sources/plugins/oembed/lang/de.js
new file mode 100644
index 0000000..69422ae
--- /dev/null
+++ b/sources/plugins/oembed/lang/de.js
@@ -0,0 +1,23 @@
1CKEDITOR.plugins.setLang('oembed', 'de', {
2 title : "Medien Inhalt einbinden (Bilder, Video, Inhalt)",
3 button : "Medien Inhalt von Verschiedenen Seiten einbinden",
4 pasteUrl : "Fügen Sie eine Url (Gekürzte Urls werden auch erkannt) ein von einer Seite die Unterstützt wird (z.B.: YouTube, Flickr, Qik, Vimeo, Hulu, Viddler, MyOpera, etc.) ...",
5 invalidUrl : "Sie müssem eine korrekte URL an!",
6 noEmbedCode : "Kein embed Code gefunden, oder Seite wird nicht Unterstützt!",
7 url : "URL:",
8 width: "Breite:",
9 height: "Höhe:",
10 widthTitle: "Breite für den eingebundenen Inhalt",
11 heightTitle: "Höhe für den eingebundenen Inhalt",
12 maxWidth: "Max. Breite:",
13 maxHeight: "Max. Höhe:",
14 maxWidthTitle: "Maximale Breite für den eingebundenen Inhalt",
15 maxHeightTitle: "Maximale Höhe für den eingebundenen Inhalt",
16 resizeType: "Größenveränderungsmodus (Nur Video's):",
17 none:'None',
18 noresize: "Keine Veränderung (Standardgröße)",
19 responsive: "Responsive",
20 custom: "Eigene Größe",
21 noVimeo: "Der Eigentümber dieses Videos hat Domain einschränkungen für dieses Video gesetzt das Video kann nicht in die Webseite eingebunden werden.",
22 Error: "Inhalt konnte nicht gefunden werden, bitte Versuchen sie eine Andere URL."
23});
diff --git a/sources/plugins/oembed/lang/en.js b/sources/plugins/oembed/lang/en.js
new file mode 100644
index 0000000..e461f03
--- /dev/null
+++ b/sources/plugins/oembed/lang/en.js
@@ -0,0 +1,23 @@
1CKEDITOR.plugins.setLang('oembed', 'en', {
2 title: "Embed Media Content (Photo, Video, Audio or Rich Content)",
3 button: "Embed Media from External Sites",
4 pasteUrl: "Paste a URL (shorted URLs are also supported) from one of the supported sites (e.g. YouTube, Flickr, Qik, Vimeo, Hulu, Viddler, MyOpera, etc.).",
5 invalidUrl: "Please provide a valid URL.",
6 noEmbedCode: "No embed code found, or site is not supported.",
7 url: "URL:",
8 width: "Width:",
9 height: "Height:",
10 widthTitle: "Width for the embeded content",
11 heightTitle: "Height for the embeded content",
12 maxWidth: "Max. Width:",
13 maxHeight: "Max. Height:",
14 maxWidthTitle: "Maximum Width for the embeded Content",
15 maxHeightTitle: "Maximum Height for the embeded Content",
16 none:'None',
17 resizeType: "Resize Type (videos only):",
18 noresize: "No Resize (use default)",
19 responsive: "Responsive Resize",
20 custom: "Specific Resize",
21 noVimeo: "The owner of this video has set domain restrictions and you will not be able to embed it on your website.",
22 Error: "Media Content could not been retrieved, please try a different URL."
23});
diff --git a/sources/plugins/oembed/lang/fr.js b/sources/plugins/oembed/lang/fr.js
new file mode 100644
index 0000000..c1e0650
--- /dev/null
+++ b/sources/plugins/oembed/lang/fr.js
@@ -0,0 +1,25 @@
1// French Translation by https://github.com/wissim
2
3CKEDITOR.plugins.setLang('oembed', 'fr', {
4 title : "Intégrer des contenus multimédia externes. (Photo, Video, Audio, ...)",
5 button : "Insérer des contenus multimédia provenant de nombreux sites.",
6 pasteUrl : "Coller l'URL de partage que vous voulez publier. De nombreux services sont pris en charge tels que : (YouTube, Flickr, Qik, Vimeo, Hulu, Viddler, MyOpera, etc.). Vous pouvez aussi utiliser les URLs courtes.",
7 invalidUrl : "Merci de fournir une URL valide !",
8 noEmbedCode : "Aucun code d'intégration trouvé ou le site n'est pas supporté !",
9 url : "URL:",
10 width: "Largeur:",
11 height: "Hauteur:",
12 widthTitle: "Largeur du conteneur.",
13 heightTitle: "Hauteur du conteneur.",
14 maxWidth: "Max. Largeur:",
15 maxHeight: "Max. Hauteur:",
16 maxWidthTitle: "Largeur maximale du conteneur.",
17 maxHeightTitle: "Hauteur maximale du conteneur.",
18 resizeType: "Resize Type (Only Video's):",
19 none:'None',
20 noresize: "No Resize (use default)",
21 responsive: "Responsive Resize",
22 custom: "Specific Resize",
23 noVimeo: "The owner of this video has set domain restrictions and you will not be able to embed it on your website.",
24 Error: "Media Content could not been retrieved, please try a different URL."
25});
diff --git a/sources/plugins/oembed/lang/nl.js b/sources/plugins/oembed/lang/nl.js
new file mode 100644
index 0000000..94cf8ad
--- /dev/null
+++ b/sources/plugins/oembed/lang/nl.js
@@ -0,0 +1,23 @@
1CKEDITOR.plugins.setLang('oembed', 'nl', {
2 title : "Integratie van media-inhoud (foto's, video, content)",
3 button : "Media-inhoud van externe websites",
4 pasteUrl : "Geef een URL van een pagina in dat ondersteund wordt (Bijv.: YouTube, Flickr, Qik, Vimeo, Hulu, Viddler, MyOpera, etc.) ...",
5 invalidUrl : "Gelieve een geldige URL op te geven!",
6 noEmbedCode : "Geen embed code gevonden, of de website wordt niet ondersteund!",
7 url : "URL:",
8 width: "Breedte:",
9 height: "Hoogte:",
10 widthTitle: "Breedte voor de ingevoegde inhoud",
11 heightTitle: "Hoogte voor de ingevoegde inhoud",
12 maxWidth: "Maximale breedte:",
13 maxHeight: "Maximale hoogte:",
14 maxWidthTitle: "Maximum breedte voor de ingevoegde inhoud",
15 maxHeightTitle: "Maximum hoogte voor de ingevoegde inhoud",
16 none:'None',
17 resizeType: "Type formaat aanpassing (enkel video's):",
18 noresize: "Geen formaat aanpassing (gebruik standaard)",
19 responsive: "Responsieve formaat aanpassing",
20 custom: "Specifieke formaat aanpassing",
21 noVimeo: "De eigenaar van deze video heeft restricties ingesteld waardoor je deze video niet kunt invoegen op je eigen website.",
22 Error: "Media inhoud kon niet worden opgehaald, gelieve een andere URL te proberen."
23});
diff --git a/sources/plugins/oembed/lang/pl.js b/sources/plugins/oembed/lang/pl.js
new file mode 100644
index 0000000..a7d7b92
--- /dev/null
+++ b/sources/plugins/oembed/lang/pl.js
@@ -0,0 +1,23 @@
1CKEDITOR.plugins.setLang('oembed', 'pl', {
2 title: "Osadzanie multimediów (zdjęć, filmów, dźwięku, bogatych treści)",
3 button: "Osadzanie multimediów z witryn zewnętrznych",
4 pasteUrl: "Wklej tutaj adres URL (adresy skrócone są również obsługiwane) z jednej z obsługiwanych stron (YouTube, Flickr, Qik, Vimeo, Hulu, Viddler, MyOpera, itp.).",
5 invalidUrl: "Proszę wprowadzić prawidłowy adres URL!",
6 noEmbedCode: "Odnośnik nieprawidłowy lub nieobsługiwany!",
7 url: "URL:",
8 width: "szerokość:",
9 height: "wysokość:",
10 widthTitle: "Szerokość osadzanej zawartości",
11 heightTitle: "Wysokość osadzanej zawartości",
12 maxWidth: "Maks. szerokość:",
13 maxHeight: "Maks. wysokość:",
14 maxWidthTitle: "Maksymalna szerokość osadzanej zawartości",
15 maxHeightTitle: "Maksymalna wysokość osadzanej zawartości",
16 resizeType: "Typ zmiany rozmiaru (tylko nagrania wideo):",
17 none:'None',
18 noresize: "Bez zmiany rozmiaru (domyślne)",
19 responsive: "Responsywna zmiana rozmiaru",
20 custom: "Narzucona zmiana rozmiaru",
21 noVimeo: "Właściciel nagrania wideo nałożył ograniczenia domenowe, nagrania nie można osadzić w witrynie.",
22 Error: "Nie można uzyskać zawartości multimedialnej, proszę spróbować inny adres URL."
23});
diff --git a/sources/plugins/oembed/lang/pt-br.js b/sources/plugins/oembed/lang/pt-br.js
new file mode 100644
index 0000000..6616432
--- /dev/null
+++ b/sources/plugins/oembed/lang/pt-br.js
@@ -0,0 +1,23 @@
1CKEDITOR.plugins.setLang('oembed', 'pt-br', {
2 title: "Conteúdo embed de mídia (foto, vídeo, audio, rich)",
3 button: "Conteúdo embed de mídia de vários sites",
4 pasteUrl: "Cole aqui a URL (inclusive URLs encurtadas) de um dos sites que o plugin suporta (ex. YouTube, Flickr, Qik, Vimeo, Hulu, Viddler, MyOpera, etc.) ...",
5 invalidUrl: "Por favor informe uma URL válida!",
6 noEmbedCode: "Nenhum código embed foi encontrado, ou esse site não está na lista dos sites suportados pelo plugin!",
7 url: "URL:",
8 width: "Largura:",
9 height: "Altura:",
10 widthTitle: "Largura do conteúdo embebed",
11 heightTitle: "Altura do conteúdo embeded",
12 maxWidth: "Largura máx.:",
13 maxHeight: "Altura máx.:",
14 maxWidthTitle: "Largura máxima do conteúdo embeded",
15 maxHeightTitle: "Altura máxima do conteúdo embeded",
16 resizeType: "Tipo de redimensionamento (Somente para video):",
17 none:'None',
18 noresize: "Sem redimensionamento (default)",
19 responsive: "Redimensionamento responsivo",
20 custom: "Redimensionamento específico",
21 noVimeo: "O dono desse vídeo tem restrições de domínio a você não poderá utilizá-lo em seu site.",
22 Error: "Esse conteúdo de mídia não foi encontrado, por favor tente uma URL diferente."
23});
diff --git a/sources/plugins/oembed/lang/ru.js b/sources/plugins/oembed/lang/ru.js
new file mode 100644
index 0000000..f2a1e53
--- /dev/null
+++ b/sources/plugins/oembed/lang/ru.js
@@ -0,0 +1,23 @@
1CKEDITOR.plugins.setLang('oembed', 'ru', {
2 title: "Внедрить медиа-контент (видео, аудио, фото и т.д.)",
3 button: "Внедрить медиа-контент с различных сайтов",
4 pasteUrl: "Вставьте ссылку на страницу с медиа-контентом (например YouTube, Flickr, Qik, Vimeo, Hulu, Viddler, MyOpera, и т.д.)",
5 invalidUrl: "Вы ввели некорректный URL",
6 noEmbedCode: "Не обнаружен код для вставки. Возможно, вы ввели ссылку с неподдерживаемого сайта.",
7 url: "URL:",
8 width: "Ширина:",
9 height: "Высота:",
10 widthTitle: "Ширина внедряемого медиа-контента",
11 heightTitle: "Высота внедряемого медиа-контента",
12 maxWidth: "Макс. ширина:",
13 maxHeight: "Макс. высота:",
14 maxWidthTitle: "Максимальная ширина внедряемого медиа-контента",
15 maxHeightTitle: "Максимальная высота внедряемого медиа-контента",
16 resizeType: "Изменение размера (только для видео):",
17 none:'None',
18 noresize: "Без изменения (стандартный размер)",
19 responsive: "Задать максимальный размер",
20 custom: "Задать конкретный размер",
21 noVimeo: "Владелец этого видео установил ограничения на домен, и вы не можете его встроить на ваш сайт.",
22 Error: "Невозможно получить медиа-контент. Попробуйте другой URL."
23});
diff --git a/sources/plugins/oembed/lang/tr.js b/sources/plugins/oembed/lang/tr.js
new file mode 100644
index 0000000..f027106
--- /dev/null
+++ b/sources/plugins/oembed/lang/tr.js
@@ -0,0 +1,23 @@
1CKEDITOR.plugins.setLang('oembed', 'tr', {
2 title: "Medya içeriği ekle (Fotoğraf, Video, Ses Dosyası, Zengin Medya İçeriği)",
3 button: "Farklı sitelerden medya içeriği ekle",
4 pasteUrl: "Desteklenen sitelerden bir URL ekleyin (Kısaltılmış URL de olabilir) (örnek: YouTube, Flickr, Qik, Vimeo, Hulu, Viddler, MyOpera, etc.)...",
5 invalidUrl: "Lütfen geçerli bir URL adresi tanımlayın!",
6 noEmbedCode: "Embed kodu bulunamadı veya site desteklenmiyor!",
7 url: "URL:",
8 width: "Genişlik:",
9 height: "Yükseklik:",
10 widthTitle: "Eklenecek içerik için genişlik",
11 heightTitle: "Eklenecek içerik için yükseklik",
12 maxWidth: "Max. genişlik:",
13 maxHeight: "Max. yükseklik:",
14 maxWidthTitle: "Eklenecek içerik için max. genişlik",
15 maxHeightTitle: "Eklenecek içerik için max. yükseklik",
16 resizeType: "Boyutlandır (sadece videolarda geçerli):",
17 none:'None',
18 noresize: "Boyutlandırma yapma (default kullan)",
19 responsive: "Esnek (Responsive) boyutlandırma",
20 custom: "Özel boyutlandırma",
21 noVimeo: "Bu videonun sahibi alan adı kısıtlaması ayarlamış, web sitenizde bu video çalışmayacaktır.",
22 Error: "Medya içeriği alınamadı, farklı bir URL deneyin."
23});
diff --git a/sources/plugins/oembed/libs/jquery.oembed.min.js b/sources/plugins/oembed/libs/jquery.oembed.min.js
new file mode 100644
index 0000000..e5bd1c5
--- /dev/null
+++ b/sources/plugins/oembed/libs/jquery.oembed.min.js
@@ -0,0 +1 @@
(function(n){function r(){var n=window.location.protocol;return n==="file:"?"http://":"//"}function f(n,t){return t=t?t:"",n?f(--n,"0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz".charAt(Math.floor(Math.random()*60))+t):t}function s(n,t){var i=n.apiendpoint,u="",r;i+=i.indexOf("?")<=0?"?":"&";i=i.replace("#","%23");n.maxWidth!==null&&(typeof n.params.maxwidth=="undefined"||n.params.maxwidth===null)&&(n.params.maxwidth=n.maxWidth);n.maxHeight!==null&&(typeof n.params.maxheight=="undefined"||n.params.maxheight===null)&&(n.params.maxheight=n.maxHeight);for(r in n.params)r!=n.callbackparameter&&n.params[r]!==null&&(u+="&"+escape(r)+"="+n.params[r]);return i+="format="+n.format+"&url="+escape(t)+u,n.dataType!="json"&&(i+="&"+n.callbackparameter+"=?"),i}function u(i,r,u){n("#jqoembeddata").data(r,i.code);t.beforeEmbed.call(u,i);t.onEmbed.call(u,i);t.afterEmbed.call(u,i)}function e(i,e,o){var p,a,tt,v;if(n("#jqoembeddata").data(e)!=undefined&&o.embedtag.tag!="iframe")a={code:n("#jqoembeddata").data(e)},u(a,e,i);else if(o.yql){var w=o.yql.from||"htmlstring",g=o.yql.url?o.yql.url(e):e,nt="SELECT * FROM "+w+' WHERE url="'+g+'" and '+(/html/.test(w)?"xpath":"itemPath")+"='"+(o.yql.xpath||"/")+"'";w=="html"&&(nt+=" and compat='html5'");v=n.extend({url:r()+"query.yahooapis.com/v1/public/yql",dataType:"jsonp",data:{q:nt,format:"json",env:"store://datatables.org/alltableswithkeys",callback:"?"},success:function(t){var s,f,c,r,h,l;if(o.yql.xpath&&o.yql.xpath=="//meta|//title|//link"){for(f={},t.query.results==null&&(t.query.results={meta:[]}),r=0,h=t.query.results.meta.length;r<h;r++)(c=t.query.results.meta[r].name||t.query.results.meta[r].property||null,c!=null)&&(f[c.toLowerCase()]=t.query.results.meta[r].content);if(f.hasOwnProperty("title")&&f.hasOwnProperty("og:title")||t.query.results.title!=null&&(f.title=t.query.results.title),!f.hasOwnProperty("og:image")&&t.query.results.hasOwnProperty("link"))for(r=0,h=t.query.results.link.length;r<h;r++)t.query.results.link[r].hasOwnProperty("rel")&&t.query.results.link[r].rel=="apple-touch-icon"&&(f["og:image"]=t.query.results.link[r].href.charAt(0)=="/"?g.match(/^(([a-z]+:)?(\/\/)?[^\/]+\/).*$/)[1]+t.query.results.link[r].href:t.query.results.link[r].href);s=o.yql.datareturn(f)}else s=o.yql.datareturn?o.yql.datareturn(t.query.results):t.query.results.result;s!==!1&&(l=n.extend({},s),l.code=s,u(l,e,i))},error:function(){t.onError.call(i,e,o)}},t.ajaxOptions||{});n.ajax(v)}else if(o.templateRegex)if(o.embedtag.tag!==""){var it=o.embedtag.flashvars||"",b=o.embedtag.tag||"embed",h=o.embedtag.width||"auto",rt=o.embedtag.nocache||0,c=o.embedtag.height||"auto",y=e.replace(o.templateRegex,o.apiendpoint);if(o.nocache||(y+="&jqoemcache="+f(5)),o.apikey&&(y=y.replace("_APIKEY_",t.apikeys[o.name])),t.maxHeight&&t.maxWidth)if(t.useResponsiveResize){var l=0,k=h,d=c;h>t.maxWidth&&(l=t.maxWidth/h,k=t.maxWidth,d=c*l,c=c*l,h=h*l);c>t.maxHeight&&(l=t.maxHeight/c,d=t.maxHeight,k=h*l,h=h*l);c=d;h=k}else c=t.maxHeight,h=t.maxWidth;p=n("<"+b+"/>").attr("src",y).attr("width",h).attr("height",c).attr("allowfullscreen",o.embedtag.allowfullscreen||"true").attr("allowscriptaccess",o.embedtag.allowfullscreen||"always").css("max-height",t.maxHeight||"auto").css("max-width",t.maxWidth||"auto");b=="embed"&&p.attr("type",o.embedtag.type||"application/x-shockwave-flash").attr("flashvars",e.replace(o.templateRegex,it));b=="iframe"&&p.attr("scrolling",o.embedtag.scrolling||"no").attr("frameborder",o.embedtag.frameborder||"0");a={code:p};u(a,e,i)}else o.apiendpoint?(o.apikey&&(o.apiendpoint=o.apiendpoint.replace("_APIKEY_",t.apikeys[o.name])),v=n.extend({url:e.replace(o.templateRegex,o.apiendpoint),dataType:"jsonp",success:function(t){var r=n.extend({},t);r.code=o.templateData(t);u(r,e,i)},error:function(){t.onError.call(i,e,o)}},t.ajaxOptions||{}),n.ajax(v)):(a={code:e.replace(o.templateRegex,o.template)},u(a,e,i));else tt=s(o,e),v=n.extend({url:tt,dataType:o.dataType||"jsonp",success:function(t){var r=n.extend({},t);switch(r.type){case"file":case"photo":r.code=n.fn.oembed.getPhotoCode(e,r);break;case"link":r.code=r.provider_name=="Flickr"?n.fn.oembed.getPhotoCode(e,r):n.fn.oembed.getGenericCode(e,r);break;case"video":case"rich":r.code=n.fn.oembed.getRichCode(e,r);break;default:r.code=n.fn.oembed.getGenericCode(e,r)}u(r,e,i)},error:function(){t.onError.call(i,e,o)}},t.ajaxOptions||{}),n.ajax(v)}function o(n){if(n===null)return null;var t,i={};for(t in n)t!==null&&(i[t.toLowerCase()]=n[t]);return i}n.fn.oembed=function(i,r,u){t=n.extend(!0,n.fn.oembed.defaults,r);var f=["0rz.tw","1link.in","1url.com","2.gp","2big.at","2tu.us","3.ly","307.to","4ms.me","4sq.com","4url.cc","6url.com","7.ly","a.gg","a.nf","aa.cx","abcurl.net","ad.vu","adf.ly","adjix.com","afx.cc","all.fuseurl.com","alturl.com","amzn.to","ar.gy","arst.ch","atu.ca","azc.cc","b23.ru","b2l.me","bacn.me","bcool.bz","binged.it","bit.ly","bizj.us","bloat.me","bravo.ly","bsa.ly","budurl.com","canurl.com","chilp.it","chzb.gr","cl.lk","cl.ly","clck.ru","cli.gs","cliccami.info","clickthru.ca","clop.in","conta.cc","cort.as","cot.ag","crks.me","ctvr.us","cutt.us","dai.ly","decenturl.com","dfl8.me","digbig.com","http://digg.com/[^/]+$","disq.us","dld.bz","dlvr.it","do.my","doiop.com","dopen.us","easyuri.com","easyurl.net","eepurl.com","eweri.com","fa.by","fav.me","fb.me","fbshare.me","ff.im","fff.to","fire.to","firsturl.de","firsturl.net","flic.kr","flq.us","fly2.ws","fon.gs","freak.to","fuseurl.com","fuzzy.to","fwd4.me","fwib.net","g.ro.lt","gizmo.do","gl.am","go.9nl.com","go.ign.com","go.usa.gov","goo.gl","goshrink.com","gurl.es","hex.io","hiderefer.com","hmm.ph","href.in","hsblinks.com","htxt.it","huff.to","hulu.com","hurl.me","hurl.ws","icanhaz.com","idek.net","ilix.in","is.gd","its.my","ix.lt","j.mp","jijr.com","kl.am","klck.me","korta.nu","krunchd.com","l9k.net","lat.ms","liip.to","liltext.com","linkbee.com","linkbun.ch","liurl.cn","ln-s.net","ln-s.ru","lnk.gd","lnk.ms","lnkd.in","lnkurl.com","lru.jp","lt.tl","lurl.no","macte.ch","mash.to","merky.de","migre.me","miniurl.com","minurl.fr","mke.me","moby.to","moourl.com","mrte.ch","myloc.me","myurl.in","n.pr","nbc.co","nblo.gs","nn.nf","not.my","notlong.com","nsfw.in","nutshellurl.com","nxy.in","nyti.ms","o-x.fr","oc1.us","om.ly","omf.gd","omoikane.net","on.cnn.com","on.mktw.net","onforb.es","orz.se","ow.ly","ping.fm","pli.gs","pnt.me","politi.co","post.ly","pp.gg","profile.to","ptiturl.com","pub.vitrue.com","qlnk.net","qte.me","qu.tc","qy.fi","r.ebay.com","r.im","rb6.me","read.bi","readthis.ca","reallytinyurl.com","redir.ec","redirects.ca","redirx.com","retwt.me","ri.ms","rickroll.it","riz.gd","rt.nu","ru.ly","rubyurl.com","rurl.org","rww.tw","s4c.in","s7y.us","safe.mn","sameurl.com","sdut.us","shar.es","shink.de","shorl.com","short.ie","short.to","shortlinks.co.uk","shorturl.com","shout.to","show.my","shrinkify.com","shrinkr.com","shrt.fr","shrt.st","shrten.com","shrunkin.com","simurl.com","slate.me","smallr.com","smsh.me","smurl.name","sn.im","snipr.com","snipurl.com","snurl.com","sp2.ro","spedr.com","srnk.net","srs.li","starturl.com","stks.co","su.pr","surl.co.uk","surl.hu","t.cn","t.co","t.lh.com","ta.gd","tbd.ly","tcrn.ch","tgr.me","tgr.ph","tighturl.com","tiniuri.com","tiny.cc","tiny.ly","tiny.pl","tinylink.in","tinyuri.ca","tinyurl.com","tk.","tl.gd","tmi.me","tnij.org","tnw.to","tny.com","to.ly","togoto.us","totc.us","toysr.us","tpm.ly","tr.im","tra.kz","trunc.it","twhub.com","twirl.at","twitclicks.com","twitterurl.net","twitterurl.org","twiturl.de","twurl.cc","twurl.nl","u.mavrev.com","u.nu","u76.org","ub0.cc","ulu.lu","updating.me","ur1.ca","url.az","url.co.uk","url.ie","url360.me","url4.eu","urlborg.com","urlbrief.com","urlcover.com","urlcut.com","urlenco.de","urli.nl","urls.im","urlshorteningservicefortwitter.com","urlx.ie","urlzen.com","usat.ly","use.my","vb.ly","vevo.ly","vgn.am","vl.am","vm.lc","w55.de","wapo.st","wapurl.co.uk","wipi.es","wp.me","x.vu","xr.com","xrl.in","xrl.us","xurl.es","xurl.jp","y.ahoo.it","yatuc.com","ye.pe","yep.it","yfrog.com","yhoo.it","yiyd.com","youtu.be","yuarel.com","z0p.de","zi.ma","zi.mu","zipmyurl.com","zud.me","zurl.ws","zz.gd","zzang.kr","›.ws","✩.ws","✿.ws","❥.ws","➔.ws","➞.ws","➡.ws","➨.ws","➯.ws","➹.ws","➽.ws"];return n("#jqoembeddata").length===0&&n('<span id="jqoembeddata"><\/span>').appendTo("body"),this.each(function(){var h=n(this),s=i&&(!i.indexOf("http://")||!i.indexOf("https://"))?i:h.attr("href"),r,c,l,a,v;if(u?t.onEmbed=u:t.onEmbed||(t.onEmbed=function(i){n.fn.oembed.insertCode(this,t.embedMethod,i)}),s!==null&&s!==undefined){for(c=0,l=f.length;c<l;c++)if(a=new RegExp("://"+f[c]+"/","i"),s.match(a)!==null)return v=n.extend({url:"http://api.longurl.org/v2/expand",dataType:"jsonp",data:{url:s,format:"json"},success:function(i){s=i["long-url"];r=n.fn.oembed.getOEmbedProvider(i["long-url"]);r!==null?(r.params=o(t[r.name])||{},r.maxWidth=t.maxWidth,r.maxHeight=t.maxHeight,e(h,s,r)):t.onProviderNotFound.call(h,s)}},t.ajaxOptions||{}),n.ajax(v),h;r=n.fn.oembed.getOEmbedProvider(s);r!==null?(r.params=o(t[r.name])||{},r.maxWidth=t.maxWidth,r.maxHeight=t.maxHeight,e(h,s,r)):t.onProviderNotFound.call(h,s)}return h})};var t;n.fn.oembed.defaults={maxWidth:null,maxHeight:null,useResponsiveResize:!1,includeHandle:!0,embedMethod:"auto",onProviderNotFound:function(){},beforeEmbed:function(){},afterEmbed:function(){},onEmbed:!1,onError:function(){},ajaxOptions:{timeout:2e3}};n.fn.oembed.insertCode=function(i,r,u){if(u!==null){r=="auto"&&i.attr("href")!==null?r="append":r=="auto"&&(r="replace");switch(r){case"replace":i.replaceWith(u.code);break;case"fill":i.html(u.code);break;case"append":i.wrap('<div class="oembedall-container"><\/div>');var f=i.parent();t.includeHandle&&n('<span class="oembedall-closehide">&darr;<\/span>').insertBefore(i).click(function(){var t=encodeURIComponent(n(this).text());n(this).html(t=="%E2%86%91"?"&darr;":"&uarr;");n(this).parent().children().last().toggle()});f.append("<br/>");try{u.code.clone().appendTo(f)}catch(e){f.append(u.code)}}}};n.fn.oembed.getPhotoCode=function(n,t){var i,r=t.title?t.title:"",u;return r+=t.author_name?" - "+t.author_name:"",r+=t.provider_name?" - "+t.provider_name:"",t.url?i='<div><a href="'+n+"\" target='_blank'><img src=\""+t.url+'" alt="'+r+'"/><\/a><\/div>':t.thumbnail_url?(u=t.thumbnail_url.replace("_s","_b"),i='<div><a href="'+n+"\" target='_blank'><img src=\""+u+'" alt="'+r+'"/><\/a><\/div>'):i=t.provider_name=="Flickr"?'<p><a href="'+n+"\" target='_blank'>"+n+"<\/a><\/p>":"<div>Error loading this picture<\/div>",i};n.fn.oembed.getRichCode=function(n,t){return t.html};n.fn.oembed.getGenericCode=function(n,t){var r=t.title!==null?t.title:n,i='<a href="'+n+'">'+r+"<\/a>";return t.html&&(i+="<div>"+t.html+"<\/div>"),i};n.fn.oembed.getOEmbedProvider=function(t){for(var r,u,f,i=0;i<n.fn.oembed.providers.length;i++)for(r=0,u=n.fn.oembed.providers[i].urlschemes.length;r<u;r++)if(f=new RegExp(n.fn.oembed.providers[i].urlschemes[r],"i"),t.match(f)!==null)return n.fn.oembed.providers[i];return null};n.fn.oembed.OEmbedProvider=function(i,r,u,f,e){this.name=i;this.type=r;this.urlschemes=u;this.apiendpoint=f;this.maxWidth=500;this.maxHeight=400;e=e||{};e.useYQL&&(e.yql=e.useYQL=="xml"?{xpath:"//oembed/html",from:"xml",apiendpoint:this.apiendpoint,url:function(n){return this.apiendpoint+"?format=xml&url="+n},datareturn:function(n){return n.html.replace(/.*\[CDATA\[(.*)\]\]>$/,"$1")||""}}:{from:"json",apiendpoint:this.apiendpoint,url:function(n){return this.apiendpoint+"?format=json&url="+n},datareturn:function(i){var f,o,s;if(i.json.type!="video"&&(i.json.url||i.json.thumbnail_url)&&!i.json.html.indexOf("iframe"))return'<img src="'+(i.json.url||i.json.thumbnail_url)+'" />';if(i.json.html.indexOf("iframe")){i.json.html.indexOf("allowfullscreen>")&&(i.json.html=i.json.html.replace("allowfullscreen>",'allowfullscreen="false">'));var e=n.parseHTML(i.json.html),r=e[0].width,u=e[0].height;return t.maxHeight&&t.maxWidth&&(t.useResponsiveResize?(o=r,s=u,r>t.maxWidth&&(f=t.maxWidth/r,o=t.maxWidth,s=u*f,u=u*f,r=r*f),u>t.maxHeight&&(f=t.maxHeight/u,s=t.maxHeight,o=r*f),u=s,r=o):(u=t.maxHeight,r=t.maxWidth)),e[0].width=r,e[0].height=u,e[0].outerHTML}return i.json.html||""}},this.apiendpoint=null);for(var o in e)this[o]=e[o];this.format=this.format||"json";this.callbackparameter=this.callbackparameter||"callback";this.embedtag=this.embedtag||{tag:""}};n.fn.updateOEmbedProvider=function(t,i,r,u,f){for(var o,e=0;e<n.fn.oembed.providers.length;e++)if(n.fn.oembed.providers[e].name===t&&(i!==null&&(n.fn.oembed.providers[e].type=i),r!==null&&(n.fn.oembed.providers[e].urlschemes=r),u!==null&&(n.fn.oembed.providers[e].apiendpoint=u),f!==null)){n.fn.oembed.providers[e].extraSettings=f;for(o in f)f[o]!==null&&(n.fn.oembed.providers[e][o]=f[o])}};n.fn.oembed.providers=[new n.fn.oembed.OEmbedProvider("youtube","video",["youtube\\.com/watch.+v=[\\w-]+&?","youtu\\.be/[\\w-]+","youtube.com/embed"],r()+"www.youtube.com/embed/$1?wmode=transparent",{templateRegex:/.*(?:v\=|be\/|embed\/)([\w\-]+)&?.*/,embedtag:{tag:"iframe",width:"425",height:"349"}}),new n.fn.oembed.OEmbedProvider("youtubeiframe","video",["youtube.com/embed"],"$1?wmode=transparent",{templateRegex:/(.*)/,embedtag:{tag:"iframe",width:"425",height:"349"}}),new n.fn.oembed.OEmbedProvider("wistia","video",["wistia.com/m/.+","wistia.com/embed/.+","wi.st/m/.+","wi.st/embed/.+"],"http://fast.wistia.com/oembed",{useYQL:"json"}),new n.fn.oembed.OEmbedProvider("xtranormal","video",["xtranormal\\.com/watch/.+"],"http://www.xtranormal.com/xtraplayr/$1/$2",{templateRegex:/.*com\/watch\/([\w\-]+)\/([\w\-]+).*/,embedtag:{tag:"iframe",width:"320",height:"269"}}),new n.fn.oembed.OEmbedProvider("scivee","video",["scivee.tv/node/.+"],"http://www.scivee.tv/flash/embedCast.swf?",{templateRegex:/.*tv\/node\/(.+)/,embedtag:{width:"480",height:"400",flashvars:"id=$1&type=3"}}),new n.fn.oembed.OEmbedProvider("veoh","video",["veoh.com/watch/.+"],"http://www.veoh.com/swf/webplayer/WebPlayer.swf?version=AFrontend.5.7.0.1337&permalinkId=$1&player=videodetailsembedded&videoAutoPlay=0&id=anonymous",{templateRegex:/.*watch\/([^\?]+).*/,embedtag:{width:"410",height:"341"}}),new n.fn.oembed.OEmbedProvider("gametrailers","video",["gametrailers\\.com/video/.+"],"http://media.mtvnservices.com/mgid:moses:video:gametrailers.com:$2",{templateRegex:/.*com\/video\/([\w\-]+)\/([\w\-]+).*/,embedtag:{width:"512",height:"288"}}),new n.fn.oembed.OEmbedProvider("funnyordie","video",["funnyordie\\.com/videos/.+"],"http://player.ordienetworks.com/flash/fodplayer.swf?",{templateRegex:/.*videos\/([^\/]+)\/([^\/]+)?/,embedtag:{width:512,height:328,flashvars:"key=$1"}}),new n.fn.oembed.OEmbedProvider("colledgehumour","video",["collegehumor\\.com/video/.+"],"http://www.collegehumor.com/moogaloop/moogaloop.swf?clip_id=$1&use_node_id=true&fullscreen=1",{templateRegex:/.*video\/([^\/]+).*/,embedtag:{width:600,height:338}}),new n.fn.oembed.OEmbedProvider("metacafe","video",["metacafe\\.com/watch/.+"],"http://www.metacafe.com/fplayer/$1/$2.swf",{templateRegex:/.*watch\/(\d+)\/(\w+)\/.*/,embedtag:{width:400,height:345}}),new n.fn.oembed.OEmbedProvider("bambuser","video",["bambuser\\.com/channel/.*/broadcast/.*"],"http://static.bambuser.com/r/player.swf?vid=$1",{templateRegex:/.*bambuser\.com\/channel\/.*\/broadcast\/(\w+).*/,embedtag:{width:512,height:339}}),new n.fn.oembed.OEmbedProvider("twitvid","video",["twitvid\\.com/.+"],"http://www.twitvid.com/embed.php?guid=$1&autoplay=0",{templateRegex:/.*twitvid\.com\/(\w+).*/,embedtag:{tag:"iframe",width:480,height:360}}),new n.fn.oembed.OEmbedProvider("aniboom","video",["aniboom\\.com/animation-video/.+"],"http://api.aniboom.com/e/$1",{templateRegex:/.*animation-video\/(\d+).*/,embedtag:{width:594,height:334}}),new n.fn.oembed.OEmbedProvider("vzaar","video",["vzaar\\.com/videos/.+","vzaar.tv/.+"],"http://view.vzaar.com/$1/player?",{templateRegex:/.*\/(\d+).*/,embedtag:{tag:"iframe",width:576,height:324}}),new n.fn.oembed.OEmbedProvider("snotr","video",["snotr\\.com/video/.+"],"http://www.snotr.com/embed/$1",{templateRegex:/.*\/(\d+).*/,embedtag:{tag:"iframe",width:400,height:330,nocache:1}}),new n.fn.oembed.OEmbedProvider("youku","video",["v.youku.com/v_show/id_.+"],"http://player.youku.com/player.php/sid/$1/v.swf",{templateRegex:/.*id_(.+)\.html.*/,embedtag:{width:480,height:400,nocache:1}}),new n.fn.oembed.OEmbedProvider("tudou","video",["tudou.com/programs/view/.+/"],"http://www.tudou.com/v/$1/v.swf",{templateRegex:/.*view\/(.+)\//,embedtag:{width:480,height:400,nocache:1}}),new n.fn.oembed.OEmbedProvider("embedr","video",["embedr\\.com/playlist/.+"],"http://embedr.com/swf/slider/$1/425/520/default/false/std?",{templateRegex:/.*playlist\/([^\/]+).*/,embedtag:{width:425,height:520}}),new n.fn.oembed.OEmbedProvider("blip","video",["blip\\.tv/.+"],"http://blip.tv/oembed/"),new n.fn.oembed.OEmbedProvider("minoto-video","video",["http://api.minoto-video.com/publishers/.+/videos/.+","http://dashboard.minoto-video.com/main/video/details/.+","http://embed.minoto-video.com/.+"],"http://api.minoto-video.com/services/oembed.json",{useYQL:"json"}),new n.fn.oembed.OEmbedProvider("animoto","video",["animoto.com/play/.+"],"http://animoto.com/services/oembed"),new n.fn.oembed.OEmbedProvider("hulu","video",["hulu\\.com/watch/.*"],"http://www.hulu.com/api/oembed.json"),new n.fn.oembed.OEmbedProvider("ustream","video",["ustream\\.tv/recorded/.*"],"http://www.ustream.tv/oembed",{useYQL:"json"}),new n.fn.oembed.OEmbedProvider("videojug","video",["videojug\\.com/(film|payer|interview).*"],"http://www.videojug.com/oembed.json",{useYQL:"json"}),new n.fn.oembed.OEmbedProvider("sapo","video",["videos\\.sapo\\.pt/.*"],"http://videos.sapo.pt/oembed",{useYQL:"json"}),new n.fn.oembed.OEmbedProvider("vodpod","video",["vodpod.com/watch/.*"],"http://vodpod.com/oembed.js",{useYQL:"json"}),new n.fn.oembed.OEmbedProvider("vimeo","video",["www.vimeo.com/groups/.*/videos/.*","www.vimeo.com/.*","vimeo.com/groups/.*/videos/.*","vimeo.com/.*"],"//vimeo.com/api/oembed.json"),new n.fn.oembed.OEmbedProvider("dailymotion","video",["dailymotion\\.com/.+"],"http://www.dailymotion.com/services/oembed"),new n.fn.oembed.OEmbedProvider("5min","video",["www\\.5min\\.com/.+"],"http://api.5min.com/oembed.xml",{useYQL:"xml"}),new n.fn.oembed.OEmbedProvider("National Film Board of Canada","video",["nfb\\.ca/film/.+"],"http://www.nfb.ca/remote/services/oembed/",{useYQL:"json"}),new n.fn.oembed.OEmbedProvider("qik","video",["qik\\.com/\\w+"],"http://qik.com/api/oembed.json",{useYQL:"json"}),new n.fn.oembed.OEmbedProvider("revision3","video",["revision3\\.com"],"http://revision3.com/api/oembed/"),new n.fn.oembed.OEmbedProvider("dotsub","video",["dotsub\\.com/view/.+"],"http://dotsub.com/services/oembed",{useYQL:"json"}),new n.fn.oembed.OEmbedProvider("clikthrough","video",["clikthrough\\.com/theater/video/\\d+"],"http://clikthrough.com/services/oembed"),new n.fn.oembed.OEmbedProvider("Kinomap","video",["kinomap\\.com/.+"],"http://www.kinomap.com/oembed"),new n.fn.oembed.OEmbedProvider("VHX","video",["vhx.tv/.+"],"http://vhx.tv/services/oembed.json"),new n.fn.oembed.OEmbedProvider("bambuser","video",["bambuser.com/.+"],"http://api.bambuser.com/oembed/iframe.json"),new n.fn.oembed.OEmbedProvider("justin.tv","video",["justin.tv/.+"],"http://api.justin.tv/api/embed/from_url.json",{useYQL:"json"}),new n.fn.oembed.OEmbedProvider("official.fm","rich",["official.fm/.+"],"http://official.fm/services/oembed",{useYQL:"json"}),new n.fn.oembed.OEmbedProvider("chirbit","rich",["chirb.it/.+"],"http://chirb.it/oembed.json",{useYQL:"json"}),new n.fn.oembed.OEmbedProvider("Huffduffer","rich",["huffduffer.com/[-.\\w@]+/\\d+"],"http://huffduffer.com/oembed"),new n.fn.oembed.OEmbedProvider("Spotify","rich",["open.spotify.com/(track|album|user)/"],"https://embed.spotify.com/oembed/"),new n.fn.oembed.OEmbedProvider("shoudio","rich",["shoudio.com/.+","shoud.io/.+"],"http://shoudio.com/api/oembed"),new n.fn.oembed.OEmbedProvider("mixcloud","rich",["mixcloud.com/.+"],r()+"www.mixcloud.com/oembed/",{useYQL:"json"}),new n.fn.oembed.OEmbedProvider("rdio.com","rich",["rd.io/.+","rdio.com"],r()+"www.rdio.com/api/oembed/"),new n.fn.oembed.OEmbedProvider("Soundcloud","rich",["soundcloud.com/.+","snd.sc/.+"],r()+"soundcloud.com/oembed",{format:"js"}),new n.fn.oembed.OEmbedProvider("bandcamp","rich",["bandcamp\\.com/album/.+"],null,{yql:{xpath:"//meta[contains(@content, \\'EmbeddedPlayer\\')]",from:"html",datareturn:function(n){return n.meta?'<iframe width="400" height="100" src="'+n.meta.content+'" allowtransparency="true" frameborder="0"><\/iframe>':!1}}}),new n.fn.oembed.OEmbedProvider("deviantart","photo",["deviantart.com/.+","fav.me/.+","deviantart.com/.+"],"http://backend.deviantart.com/oembed",{format:"jsonp"}),new n.fn.oembed.OEmbedProvider("skitch","photo",["skitch.com/.+"],null,{yql:{xpath:"json",from:"json",url:function(n){return"http://skitch.com/oembed/?format=json&url="+n},datareturn:function(t){return n.fn.oembed.getPhotoCode(t.json.url,t.json)}}}),new n.fn.oembed.OEmbedProvider("mobypicture","photo",["mobypicture.com/user/.+/view/.+","moby.to/.+"],"http://api.mobypicture.com/oEmbed"),new n.fn.oembed.OEmbedProvider("flickr","photo",["flickr\\.com/photos/.+"],"http://flickr.com/services/oembed",{callbackparameter:"jsoncallback"}),new n.fn.oembed.OEmbedProvider("photobucket","photo",["photobucket\\.com/(albums|groups)/.+"],r()+"photobucket.com/oembed/"),new n.fn.oembed.OEmbedProvider("instagram","photo",["instagr\\.?am(\\.com)?/.+"],r()+"api.instagram.com/oembed"),new n.fn.oembed.OEmbedProvider("SmugMug","photo",["smugmug.com/[-.\\w@]+/.+"],"http://api.smugmug.com/services/oembed/"),new n.fn.oembed.OEmbedProvider("dribbble","photo",["dribbble.com/shots/.+"],"http://api.dribbble.com/shots/$1?callback=?",{templateRegex:/.*shots\/([\d]+).*/,templateData:function(n){return n.image_teaser_url?'<img src="'+n.image_teaser_url+'"/>':!1}}),new n.fn.oembed.OEmbedProvider("chart.ly","photo",["chart\\.ly/[a-z0-9]{6,8}"],"http://chart.ly/uploads/large_$1.png",{templateRegex:/.*ly\/([^\/]+).*/,embedtag:{tag:"img"},nocache:1}),new n.fn.oembed.OEmbedProvider("circuitlab","photo",["circuitlab.com/circuit/.+"],"https://www.circuitlab.com/circuit/$1/screenshot/540x405/",{templateRegex:/.*circuit\/([^\/]+).*/,embedtag:{tag:"img"},nocache:1}),new n.fn.oembed.OEmbedProvider("23hq","photo",["23hq.com/[-.\\w@]+/photo/.+"],"http://www.23hq.com/23/oembed",{useYQL:"json"}),new n.fn.oembed.OEmbedProvider("img.ly","photo",["img\\.ly/.+"],"http://img.ly/show/thumb/$1",{templateRegex:/.*ly\/([^\/]+).*/,embedtag:{tag:"img"},nocache:1}),new n.fn.oembed.OEmbedProvider("twitgoo.com","photo",["twitgoo\\.com/.+"],"http://twitgoo.com/show/thumb/$1",{templateRegex:/.*com\/([^\/]+).*/,embedtag:{tag:"img"},nocache:1}),new n.fn.oembed.OEmbedProvider("imgur.com","photo",["imgur\\.com/gallery/.+"],r()+"imgur.com/$1l.jpg",{templateRegex:/.*gallery\/([^\/]+).*/,embedtag:{tag:"img"},nocache:1}),new n.fn.oembed.OEmbedProvider("visual.ly","rich",["visual\\.ly/.+"],null,{yql:{xpath:"//a[@id=\\'gc_article_graphic_image\\']/img",from:"htmlstring"}}),new n.fn.oembed.OEmbedProvider("gravtar","photo",["mailto:.+"],null,{templateRegex:/mailto:([^\/]+).*/,template:function(n,t){return'<img src="http://gravatar.com/avatar/'+t.md5()+'.jpg" alt="on Gravtar" class="jqoaImg">'}}),new n.fn.oembed.OEmbedProvider("twitter","rich",["twitter.com/.+"],"https://api.twitter.com/1/statuses/oembed.json?id="),new n.fn.oembed.OEmbedProvider("gmep","rich",["gmep.imeducate.com/.*","gmep.org/.*"],"http://gmep.org/oembed.json"),new n.fn.oembed.OEmbedProvider("urtak","rich",["urtak.com/(u|clr)/.+"],"http://oembed.urtak.com/1/oembed"),new n.fn.oembed.OEmbedProvider("cacoo","rich",["cacoo.com/.+"],"http://cacoo.com/oembed.json"),new n.fn.oembed.OEmbedProvider("dailymile","rich",["dailymile.com/people/.*/entries/.*"],"http://api.dailymile.com/oembed"),new n.fn.oembed.OEmbedProvider("dipity","rich",["dipity.com/timeline/.+"],"http://www.dipity.com/oembed/timeline/",{useYQL:"json"}),new n.fn.oembed.OEmbedProvider("sketchfab","rich",["sketchfab.com/show/.+"],"http://sketchfab.com/oembed",{useYQL:"json"}),new n.fn.oembed.OEmbedProvider("speakerdeck","rich",["speakerdeck.com/.+"],"http://speakerdeck.com/oembed.json",{useYQL:"json"}),new n.fn.oembed.OEmbedProvider("popplet","rich",["popplet.com/app/.*"],"http://popplet.com/app/Popplet_Alpha.swf?page_id=$1&em=1",{templateRegex:/.*#\/([^\/]+).*/,embedtag:{width:460,height:460}}),new n.fn.oembed.OEmbedProvider("pearltrees","rich",["pearltrees.com/.*"],"http://cdn.pearltrees.com/s/embed/getApp?",{templateRegex:/.*N-f=1_(\d+).*N-p=(\d+).*/,embedtag:{width:460,height:460,flashvars:"lang=en_US&amp;embedId=pt-embed-$1-693&amp;treeId=$1&amp;pearlId=$2&amp;treeTitle=Diagrams%2FVisualization&amp;site=www.pearltrees.com%2FF"}}),new n.fn.oembed.OEmbedProvider("prezi","rich",["prezi.com/.*"],"http://prezi.com/bin/preziloader.swf?",{templateRegex:/.*com\/([^\/]+)\/.*/,embedtag:{width:550,height:400,flashvars:"prezi_id=$1&amp;lock_to_path=0&amp;color=ffffff&amp;autoplay=no&amp;autohide_ctrls=0"}}),new n.fn.oembed.OEmbedProvider("tourwrist","rich",["tourwrist.com/tours/.+"],null,{templateRegex:/.*tours.([\d]+).*/,template:function(n,t){return setTimeout(function(){loadEmbeds&&loadEmbeds()},2e3),"<div id='"+t+"' class='tourwrist-tour-embed direct'><\/div> <script type='text/javascript' src='http://tourwrist.com/tour_embed.js'><\/script>"}}),new n.fn.oembed.OEmbedProvider("meetup","rich",["meetup\\.(com|ps)/.+"],r()+"api.meetup.com/oembed"),new n.fn.oembed.OEmbedProvider("ebay","rich",["ebay\\.*"],r()+"togo.ebay.com/togo/togo.swf?2008013100",{templateRegex:/.*\/([^\/]+)\/(\d{10,13}).*/,embedtag:{width:355,height:300,flashvars:"base=http://togo.ebay.com/togo/&lang=en-us&mode=normal&itemid=$2&query=$1"}}),new n.fn.oembed.OEmbedProvider("wikipedia","rich",["wikipedia.org/wiki/.+"],"http://$1.wikipedia.org/w/api.php?action=parse&page=$2&format=json&section=0&callback=?",{templateRegex:/.*\/\/([\w]+).*\/wiki\/([^\/]+).*/,templateData:function(n){if(!n.parse)return!1;var t=n.parse.text["*"].replace(/href="\/wiki/g,'href="http://en.wikipedia.org/wiki');return'<div id="content"><h3><a class="nav-link" href="http://en.wikipedia.org/wiki/'+n.parse.displaytitle+'">'+n.parse.displaytitle+"<\/a><\/h3>"+t+"<\/div>"}}),new n.fn.oembed.OEmbedProvider("imdb","rich",["imdb.com/title/.+"],"http://www.imdbapi.com/?i=$1&callback=?",{templateRegex:/.*\/title\/([^\/]+).*/,templateData:function(n){return n.Title?'<div id="content"><h3><a class="nav-link" href="http://imdb.com/title/'+n.ID+'/">'+n.Title+"<\/a> ("+n.Year+")<\/h3><p>Starring: "+n.Actors+'<\/p><div id="photo-wrap" style="margin: auto;width:600px;height:450px;"><img class="photo" id="photo-display" src="'+n.Poster+'" alt="'+n.Title+'"><\/div> <div id="view-photo-caption">'+n.Plot+"<\/div><\/div>":!1}}),new n.fn.oembed.OEmbedProvider("livejournal","rich",["livejournal.com/"],"http://ljpic.seacrow.com/json/$2$4?jsonp=?",{templateRegex:/(http:\/\/(((?!users).)+)\.livejournal\.com|.*users\.livejournal\.com\/([^\/]+)).*/,templateData:function(n){return!!n.username&&'<div><img src="'+n.image+'" align="left" style="margin-right: 1em;" /><span class="oembedall-ljuser"><a href="http://'+n.username+'.livejournal.com/profile"><img src="http://www.livejournal.com/img/userinfo.gif" alt="[info]" width="17" height="17" /><\/a><a href="http://'+n.username+'.livejournal.com/">'+n.username+"<\/a><\/span><br />"+n.name+"<\/div>"}}),new n.fn.oembed.OEmbedProvider("circuitbee","rich",["circuitbee\\.com/circuit/view/.+"],"http://c.circuitbee.com/build/r/schematic-embed.html?id=$1",{templateRegex:/.*circuit\/view\/(\d+).*/,embedtag:{tag:"iframe",width:"500",height:"350"}}),new n.fn.oembed.OEmbedProvider("googlecalendar","rich",["www.google.com/calendar/embed?.+"],"$1",{templateRegex:/(.*)/,embedtag:{tag:"iframe",width:"800",height:"600"}}),new n.fn.oembed.OEmbedProvider("jsfiddle","rich",["jsfiddle.net/[^/]+/?"],"http://jsfiddle.net/$1/embedded/result,js,resources,html,css/?",{templateRegex:/.*net\/([^\/]+).*/,embedtag:{tag:"iframe",width:"100%",height:"300"}}),new n.fn.oembed.OEmbedProvider("jsbin","rich",["jsbin.com/.+"],"http://jsbin.com/$1/?",{templateRegex:/.*com\/([^\/]+).*/,embedtag:{tag:"iframe",width:"100%",height:"300"}}),new n.fn.oembed.OEmbedProvider("jotform","rich",["form.jotform.co/form/.+"],"$1?",{templateRegex:/(.*)/,embedtag:{tag:"iframe",width:"100%",height:"507"}}),new n.fn.oembed.OEmbedProvider("reelapp","rich",["reelapp\\.com/.+"],"http://www.reelapp.com/$1/embed",{templateRegex:/.*com\/(\S{6}).*/,embedtag:{tag:"iframe",width:"400",height:"338"}}),new n.fn.oembed.OEmbedProvider("linkedin","rich",["linkedin.com/pub/.+"],"https://www.linkedin.com/cws/member/public_profile?public_profile_url=$1&format=inline&isFramed=true",{templateRegex:/(.*)/,embedtag:{tag:"iframe",width:"368px",height:"auto"}}),new n.fn.oembed.OEmbedProvider("timetoast","rich",["timetoast.com/timelines/[0-9]+"],"http://www.timetoast.com/flash/TimelineViewer.swf?passedTimelines=$1",{templateRegex:/.*timelines\/([0-9]*)/,embedtag:{width:550,height:400,nocache:1}}),new n.fn.oembed.OEmbedProvider("pastebin","rich",["pastebin\\.com/[\\S]{8}"],"http://pastebin.com/embed_iframe.php?i=$1",{templateRegex:/.*\/(\S{8}).*/,embedtag:{tag:"iframe",width:"100%",height:"auto"}}),new n.fn.oembed.OEmbedProvider("mixlr","rich",["mixlr.com/.+"],"http://mixlr.com/embed/$1?autoplay=ae",{templateRegex:/.*com\/([^\/]+).*/,embedtag:{tag:"iframe",width:"100%",height:"auto"}}),new n.fn.oembed.OEmbedProvider("pastie","rich",["pastie\\.org/pastes/.+"],null,{yql:{xpath:'//pre[@class="textmate-source"]'}}),new n.fn.oembed.OEmbedProvider("github","rich",["gist.github.com/.+"],"https://github.com/api/oembed"),new n.fn.oembed.OEmbedProvider("github","rich",["github.com/[-.\\w@]+/[-.\\w@]+"],"https://api.github.com/repos/$1/$2?callback=?",{templateRegex:/.*\/([^\/]+)\/([^\/]+).*/,templateData:function(n){return n.data.html_url?'<div class="oembedall-githubrepos"><ul class="oembedall-repo-stats"><li>'+n.data.language+'<\/li><li class="oembedall-watchers"><a title="Watchers" href="'+n.data.html_url+'/watchers">&#x25c9; '+n.data.watchers+'<\/a><\/li><li class="oembedall-forks"><a title="Forks" href="'+n.data.html_url+'/network">&#x0265; '+n.data.forks+'<\/a><\/li><\/ul><h3><a href="'+n.data.html_url+'">'+n.data.name+'<\/a><\/h3><div class="oembedall-body"><p class="oembedall-description">'+n.data.description+'<\/p><p class="oembedall-updated-at">Last updated: '+n.data.pushed_at+"<\/p><\/div><\/div>":!1}}),new n.fn.oembed.OEmbedProvider("facebook","rich",["facebook.com/(people/[^\\/]+/\\d+|[^\\/]+$)"],"https://graph.facebook.com/$2$3/?callback=?",{templateRegex:/.*facebook.com\/(people\/[^\/]+\/(\d+).*|([^\/]+$))/,templateData:function(n){if(!n.id)return!1;var t='<div class="oembedall-facebook1"><div class="oembedall-facebook2"><a href="http://www.facebook.com/">facebook<\/a> ';return t+=n.from?'<a href="http://www.facebook.com/'+n.from.id+'">'+n.from.name+"<\/a>":n.link?'<a href="'+n.link+'">'+n.name+"<\/a>":n.username?'<a href="http://www.facebook.com/'+n.username+'">'+n.name+"<\/a>":'<a href="http://www.facebook.com/'+n.id+'">'+n.name+"<\/a>",t+='<\/div><div class="oembedall-facebookBody"><div class="contents">',t+=n.picture?'<a href="'+n.link+'"><img src="'+n.picture+'"><\/a>':'<img src="https://graph.facebook.com/'+n.id+'/picture">',n.from&&(t+='<a href="'+n.link+'">'+n.name+"<\/a>"),n.founded&&(t+="Founded: <strong>"+n.founded+"<\/strong><br>"),n.category&&(t+="Category: <strong>"+n.category+"<\/strong><br>"),n.website&&(t+='Website: <strong><a href="'+n.website+'">'+n.website+"<\/a><\/strong><br>"),n.gender&&(t+="Gender: <strong>"+n.gender+"<\/strong><br>"),n.description&&(t+=n.description+"<br>"),t+"<\/div><\/div>"}}),new n.fn.oembed.OEmbedProvider("stackoverflow","rich",["stackoverflow.com/questions/[\\d]+"],"http://api.stackoverflow.com/1.1/questions/$1?body=true&jsonp=?",{templateRegex:/.*questions\/([\d]+).*/,templateData:function(t){if(!t.questions)return!1;var r=t.questions[0],f=n(r.body).text(),u='<div class="oembedall-stoqembed"><div class="oembedall-statscontainer"><div class="oembedall-statsarrow"><\/div><div class="oembedall-stats"><div class="oembedall-vote"><div class="oembedall-votes"><span class="oembedall-vote-count-post"><strong>'+(r.up_vote_count-r.down_vote_count)+'<\/strong><\/span><div class="oembedall-viewcount">vote(s)<\/div><\/div><\/div><div class="oembedall-status"><strong>'+r.answer_count+'<\/strong>answer<\/div><\/div><div class="oembedall-views">'+r.view_count+' view(s)<\/div><\/div><div class="oembedall-summary"><h3><a class="oembedall-question-hyperlink" href="http://stackoverflow.com/questions/'+r.question_id+'/">'+r.title+'<\/a><\/h3><div class="oembedall-excerpt">'+f.substring(0,100)+'...<\/div><div class="oembedall-tags">';for(i in r.tags)u+='<a title="" class="oembedall-post-tag" href="http://stackoverflow.com/questions/tagged/'+r.tags[i]+'">'+r.tags[i]+"<\/a>";return u+('<\/div><div class="oembedall-fr"><div class="oembedall-user-info"><div class="oembedall-user-gravatar32"><a href="http://stackoverflow.com/users/'+r.owner.user_id+"/"+r.owner.display_name+'"><img width="32" height="32" alt="" src="http://www.gravatar.com/avatar/'+r.owner.email_hash+'?s=32&amp;d=identicon&amp;r=PG"><\/a><\/div><div class="oembedall-user-details"><a href="http://stackoverflow.com/users/'+r.owner.user_id+"/"+r.owner.display_name+'">'+r.owner.display_name+'<\/a><br><span title="reputation score" class="oembedall-reputation-score">'+r.owner.reputation+"<\/span><\/div><\/div><\/div><\/div><\/div>")}}),new n.fn.oembed.OEmbedProvider("wordpress","rich",["wordpress\\.com/.+","blogs\\.cnn\\.com/.+","techcrunch\\.com/.+","wp\\.me/.+"],"http://public-api.wordpress.com/oembed/1.0/?for=jquery-oembed-all"),new n.fn.oembed.OEmbedProvider("screenr","rich",["screenr.com"],"http://www.screenr.com/embed/$1",{templateRegex:/.*\/([^\/]+).*/,embedtag:{tag:"iframe",width:"650",height:396}}),new n.fn.oembed.OEmbedProvider("gigpans","rich",["gigapan\\.org/[-.\\w@]+/\\d+"],"http://gigapan.org/gigapans/$1/options/nosnapshots/iframe/flash.html",{templateRegex:/.*\/(\d+)\/?.*/,embedtag:{tag:"iframe",width:"100%",height:400}}),new n.fn.oembed.OEmbedProvider("scribd","rich",["scribd\\.com/.+"],r()+"www.scribd.com/embeds/$1/content?start_page=1&view_mode=list",{templateRegex:/.*doc\/([^\/]+).*/,embedtag:{tag:"iframe",width:"100%",height:600}}),new n.fn.oembed.OEmbedProvider("kickstarter","rich",["kickstarter\\.com/projects/.+"],"$1/widget/card.html",{templateRegex:/([^\?]+).*/,embedtag:{tag:"iframe",width:"220",height:380}}),new n.fn.oembed.OEmbedProvider("amazon","rich",["amzn.com/B+","amazon.com.*/(B\\S+)($|\\/.*)"],r()+"rcm.amazon.com/e/cm?t=_APIKEY_&o=1&p=8&l=as1&asins=$1&ref=qf_br_asin_til&fc1=000000&IS2=1&lt1=_blank&m=amazon&lc1=0000FF&bc1=000000&bg1=FFFFFF&f=ifr",{apikey:!0,templateRegex:/.*\/(B[0-9A-Z]+)($|\/.*)/,embedtag:{tag:"iframe",width:"120px",height:"240px"}}),new n.fn.oembed.OEmbedProvider("slideshare","rich",["slideshare.net"],r()+"www.slideshare.net/api/oembed/2",{format:"jsonp"}),new n.fn.oembed.OEmbedProvider("roomsharejp","rich",["roomshare\\.jp/(en/)?post/.*"],"http://roomshare.jp/oembed.json"),new n.fn.oembed.OEmbedProvider("lanyard","rich",["lanyrd.com/\\d+/.+"],null,{yql:{xpath:'(//div[@class="primary"])[1]',from:"htmlstring",datareturn:function(n){return n.result?'<div class="oembedall-lanyard">'+n.result+"<\/div>":!1}}}),new n.fn.oembed.OEmbedProvider("asciiartfarts","rich",["asciiartfarts.com/\\d+.html"],null,{yql:{xpath:"//pre/font",from:"htmlstring",datareturn:function(n){return n.result?'<pre style="background-color:000;">'+n.result+"<\/div>":!1}}}),new n.fn.oembed.OEmbedProvider("opengraph","rich",[".*"],null,{yql:{xpath:"//meta|//title|//link",from:"html",datareturn:function(i){var r,u,f;return(!i["og:title"]&&i.title&&i.description&&(i["og:title"]=i.title),!i["og:title"]&&!i.title)?!1:(r=n("<p/>"),i["og:video"]?(u=n('<embed src="'+i["og:video"]+'"/>'),u.attr("type",i["og:video:type"]||"application/x-shockwave-flash").css("max-height",t.maxHeight||"auto").css("max-width",t.maxWidth||"auto"),i["og:video:width"]&&u.attr("width",i["og:video:width"]),i["og:video:height"]&&u.attr("height",i["og:video:height"]),r.append(u)):i["og:image"]&&(f=n('<img src="'+i["og:image"]+'">'),f.css("max-height",t.maxHeight||"auto").css("max-width",t.maxWidth||"auto"),i["og:image:width"]&&f.attr("width",i["og:image:width"]),i["og:image:height"]&&f.attr("height",i["og:image:height"]),r.append(f)),i["og:title"]&&r.append("<b>"+i["og:title"]+"<\/b><br/>"),i["og:description"]?r.append(i["og:description"]+"<br/>"):i.description&&r.append(i.description+"<br/>"),r)}}})]})(jQuery);String.prototype.md5=function(){var u=function(n,t){var i=(n&65535)+(t&65535),r=(n>>16)+(t>>16)+(i>>16);return r<<16|i&65535},e=function(n,t){return n<<t|n>>>32-t},f=function(n,t,i,r,f,o){return u(e(u(u(t,n),u(r,o)),f),i)},n=function(n,t,i,r,u,e,o){return f(t&i|~t&r,n,t,u,e,o)},t=function(n,t,i,r,u,e,o){return f(t&r|i&~r,n,t,u,e,o)},i=function(n,t,i,r,u,e,o){return f(t^i^r,n,t,u,e,o)},r=function(n,t,i,r,u,e,o){return f(i^(t|~r),n,t,u,e,o)},o=function(f){for(var l,a,v,y,p=f.length,e=1732584193,o=-271733879,s=-1732584194,h=271733878,c=0;c<p;c+=16)l=e,a=o,v=s,y=h,e=n(e,o,s,h,f[c+0],7,-680876936),h=n(h,e,o,s,f[c+1],12,-389564586),s=n(s,h,e,o,f[c+2],17,606105819),o=n(o,s,h,e,f[c+3],22,-1044525330),e=n(e,o,s,h,f[c+4],7,-176418897),h=n(h,e,o,s,f[c+5],12,1200080426),s=n(s,h,e,o,f[c+6],17,-1473231341),o=n(o,s,h,e,f[c+7],22,-45705983),e=n(e,o,s,h,f[c+8],7,1770035416),h=n(h,e,o,s,f[c+9],12,-1958414417),s=n(s,h,e,o,f[c+10],17,-42063),o=n(o,s,h,e,f[c+11],22,-1990404162),e=n(e,o,s,h,f[c+12],7,1804603682),h=n(h,e,o,s,f[c+13],12,-40341101),s=n(s,h,e,o,f[c+14],17,-1502002290),o=n(o,s,h,e,f[c+15],22,1236535329),e=t(e,o,s,h,f[c+1],5,-165796510),h=t(h,e,o,s,f[c+6],9,-1069501632),s=t(s,h,e,o,f[c+11],14,643717713),o=t(o,s,h,e,f[c+0],20,-373897302),e=t(e,o,s,h,f[c+5],5,-701558691),h=t(h,e,o,s,f[c+10],9,38016083),s=t(s,h,e,o,f[c+15],14,-660478335),o=t(o,s,h,e,f[c+4],20,-405537848),e=t(e,o,s,h,f[c+9],5,568446438),h=t(h,e,o,s,f[c+14],9,-1019803690),s=t(s,h,e,o,f[c+3],14,-187363961),o=t(o,s,h,e,f[c+8],20,1163531501),e=t(e,o,s,h,f[c+13],5,-1444681467),h=t(h,e,o,s,f[c+2],9,-51403784),s=t(s,h,e,o,f[c+7],14,1735328473),o=t(o,s,h,e,f[c+12],20,-1926607734),e=i(e,o,s,h,f[c+5],4,-378558),h=i(h,e,o,s,f[c+8],11,-2022574463),s=i(s,h,e,o,f[c+11],16,1839030562),o=i(o,s,h,e,f[c+14],23,-35309556),e=i(e,o,s,h,f[c+1],4,-1530992060),h=i(h,e,o,s,f[c+4],11,1272893353),s=i(s,h,e,o,f[c+7],16,-155497632),o=i(o,s,h,e,f[c+10],23,-1094730640),e=i(e,o,s,h,f[c+13],4,681279174),h=i(h,e,o,s,f[c+0],11,-358537222),s=i(s,h,e,o,f[c+3],16,-722521979),o=i(o,s,h,e,f[c+6],23,76029189),e=i(e,o,s,h,f[c+9],4,-640364487),h=i(h,e,o,s,f[c+12],11,-421815835),s=i(s,h,e,o,f[c+15],16,530742520),o=i(o,s,h,e,f[c+2],23,-995338651),e=r(e,o,s,h,f[c+0],6,-198630844),h=r(h,e,o,s,f[c+7],10,1126891415),s=r(s,h,e,o,f[c+14],15,-1416354905),o=r(o,s,h,e,f[c+5],21,-57434055),e=r(e,o,s,h,f[c+12],6,1700485571),h=r(h,e,o,s,f[c+3],10,-1894986606),s=r(s,h,e,o,f[c+10],15,-1051523),o=r(o,s,h,e,f[c+1],21,-2054922799),e=r(e,o,s,h,f[c+8],6,1873313359),h=r(h,e,o,s,f[c+15],10,-30611744),s=r(s,h,e,o,f[c+6],15,-1560198380),o=r(o,s,h,e,f[c+13],21,1309151649),e=r(e,o,s,h,f[c+4],6,-145523070),h=r(h,e,o,s,f[c+11],10,-1120210379),s=r(s,h,e,o,f[c+2],15,718787259),o=r(o,s,h,e,f[c+9],21,-343485551),e=u(e,l),o=u(o,a),s=u(s,v),h=u(h,y);return[e,o,s,h]},s=function(n){for(var i="0123456789abcdef",r="",u=n.length*4,t=0;t<u;t++)r+=i.charAt(n[t>>2]>>t%4*8+4&15)+i.charAt(n[t>>2]>>t%4*8&15);return r},h=function(n){for(var u=(n.length+8>>6)+1,i=[],e=u*16,t,f=n.length,r=0;r<e;r++)i.push(0);for(t=0;t<f;t++)i[t>>2]|=(n.charCodeAt(t)&255)<<t%4*8;return i[t>>2]|=128<<t%4*8,i[u*16-2]=f*8,i};return s(o(h(this)))};
diff --git a/sources/plugins/oembed/plugin.js b/sources/plugins/oembed/plugin.js
new file mode 100644
index 0000000..9ad1ead
--- /dev/null
+++ b/sources/plugins/oembed/plugin.js
@@ -0,0 +1,446 @@
1/**
2* oEmbed Plugin plugin
3* Licensed under the MIT license
4* jQuery Embed Plugin: http://code.google.com/p/jquery-oembed/ (MIT License)
5* Plugin for: http://ckeditor.com/license (GPL/LGPL/MPL: http://ckeditor.com/license)
6*/
7
8(function() {
9 CKEDITOR.plugins.add('oembed', {
10 icons: 'oembed',
11 hidpi: true,
12 requires: 'widget,dialog',
13 lang: 'de,en,fr,nl,pl,pt-br,ru,tr', // %REMOVE_LINE_CORE%
14 version: 1.17,
15 init: function(editor) {
16 // Load jquery?
17 loadjQueryLibaries();
18
19 CKEDITOR.tools.extend(CKEDITOR.editor.prototype, {
20 oEmbed: function(url, maxWidth, maxHeight, responsiveResize) {
21
22 if (url.length < 1 || url.indexOf('http') < 0) {
23 alert(editor.lang.oembed.invalidUrl);
24 return false;
25 }
26
27 function embed() {
28 if (maxWidth == null || maxWidth == 'undefined') {
29 maxWidth = null;
30 }
31
32 if (maxHeight == null || maxHeight == 'undefined') {
33 maxHeight = null;
34 }
35
36 if (responsiveResize == null || responsiveResize == 'undefined') {
37 responsiveResize = false;
38 }
39
40 embedCode(url, editor, false, maxWidth, maxHeight, responsiveResize);
41 }
42
43 if (typeof(jQuery.fn.oembed) === 'undefined') {
44 CKEDITOR.scriptLoader.load(CKEDITOR.getUrl(CKEDITOR.plugins.getPath('oembed') + 'libs/jquery.oembed.min.js'), function() {
45 embed();
46 });
47 } else {
48 embed();
49 }
50
51 return true;
52 }
53 });
54
55 editor.widgets.add('oembed', {
56 draggable: false,
57 mask: true,
58 dialog: 'oembed',
59 allowedContent: {
60 div: {
61 styles: 'text-align,float',
62 attributes: '*',
63 classes: editor.config.oembed_WrapperClass != null ? editor.config.oembed_WrapperClass : "embeddedContent"
64 },
65 'div(embeddedContent,oembed-provider-*) iframe': {
66 attributes: '*'
67 },
68 'div(embeddedContent,oembed-provider-*) blockquote': {
69 attributes: '*'
70 },
71 'div(embeddedContent,oembed-provider-*) script': {
72 attributes: '*'
73 }
74 },
75 template:
76 '<div class="' + (editor.config.oembed_WrapperClass != null ? editor.config.oembed_WrapperClass : "embeddedContent") + '">' +
77 '</div>',
78 upcast: function(element) {
79 return element.name == 'div' && element.hasClass(editor.config.oembed_WrapperClass != null ? editor.config.oembed_WrapperClass : "embeddedContent");
80 },
81 init: function() {
82 var data = {
83 oembed: this.element.data('oembed') || '',
84 resizeType: this.element.data('resizeType') || 'noresize',
85 maxWidth: this.element.data('maxWidth') || 560,
86 maxHeight: this.element.data('maxHeight') || 315,
87 align: this.element.data('align') || 'none',
88 oembed_provider: this.element.data('oembed_provider') || ''
89 };
90
91 this.setData(data);
92 this.element.addClass('oembed-provider-' + data.oembed_provider);
93
94 this.on('dialog', function(evt) {
95 evt.data.widget = this;
96 }, this);
97 }
98 });
99
100 editor.ui.addButton('oembed', {
101 label: editor.lang.oembed.button,
102 command: 'oembed',
103 toolbar: 'insert,10',
104 icon: this.path + "icons/" + (CKEDITOR.env.hidpi ? "hidpi/" : "") + "oembed.png"
105 });
106
107 var resizeTypeChanged = function() {
108 var dialog = this.getDialog(),
109 resizetype = this.getValue(),
110 maxSizeBox = dialog.getContentElement('general', 'maxSizeBox').getElement(),
111 sizeBox = dialog.getContentElement('general', 'sizeBox').getElement();
112
113 if (resizetype == 'noresize') {
114 maxSizeBox.hide();
115
116 sizeBox.hide();
117 } else if (resizetype == "custom") {
118 maxSizeBox.hide();
119
120 sizeBox.show();
121 } else {
122 maxSizeBox.show();
123
124 sizeBox.hide();
125 }
126
127 };
128
129 String.prototype.beginsWith = function(string) {
130 return (this.indexOf(string) === 0);
131 };
132
133 function loadjQueryLibaries() {
134 if (typeof(jQuery) === 'undefined') {
135 CKEDITOR.scriptLoader.load('//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js', function() {
136 jQuery.noConflict();
137 if (typeof(jQuery.fn.oembed) === 'undefined') {
138 CKEDITOR.scriptLoader.load(
139 CKEDITOR.getUrl(CKEDITOR.plugins.getPath('oembed') + 'libs/jquery.oembed.min.js')
140 );
141 }
142 });
143
144 } else if (typeof(jQuery.fn.oembed) === 'undefined') {
145 CKEDITOR.scriptLoader.load(CKEDITOR.getUrl(CKEDITOR.plugins.getPath('oembed') + 'libs/jquery.oembed.min.js'));
146 }
147 }
148
149 function embedCode(url, instance, maxWidth, maxHeight, responsiveResize, resizeType, align, widget) {
150 jQuery('body').oembed(url, {
151 onEmbed: function(e) {
152 var elementAdded = false,
153 provider = jQuery.fn.oembed.getOEmbedProvider(url);
154
155 widget.element.data('resizeType', resizeType);
156 if (resizeType == "responsive" || resizeType == "custom") {
157 widget.element.data('maxWidth', maxWidth);
158 widget.element.data('maxHeight', maxHeight);
159 }
160
161 widget.element.data('align', align);
162
163 // TODO handle align
164 if (align == 'center') {
165 if (!widget.inline)
166 widget.element.setStyle('text-align', 'center');
167
168 widget.element.removeStyle('float');
169 } else {
170 if (!widget.inline)
171 widget.element.removeStyle('text-align');
172
173 if (align == 'none')
174 widget.element.removeStyle('float');
175 else
176 widget.element.setStyle('float', align);
177 }
178
179 if (typeof e.code === 'string') {
180 if (widget.element.$.firstChild) {
181 widget.element.$.removeChild(widget.element.$.firstChild);
182 }
183
184 widget.element.appendHtml(e.code);
185 widget.element.data('oembed', url);
186 widget.element.data('oembed_provider', provider.name);
187 widget.element.addClass('oembed-provider-' + provider.name);
188
189 elementAdded = true;
190 } else if (typeof e.code[0].outerHTML === 'string') {
191
192 if (widget.element.$.firstChild) {
193 widget.element.$.removeChild(widget.element.$.firstChild);
194 }
195
196 widget.element.appendHtml(e.code[0].outerHTML);
197 widget.element.data('oembed', url);
198 widget.element.data('oembed_provider', provider.name);
199 widget.element.addClass('oembed-provider-' + provider.name);
200
201 elementAdded = true;
202 } else {
203 alert(editor.lang.oembed.noEmbedCode);
204 }
205 },
206 onError: function(externalUrl) {
207 if (externalUrl.indexOf("vimeo.com") > 0) {
208 alert(editor.lang.oembed.noVimeo);
209 } else {
210 alert(editor.lang.oembed.Error);
211 }
212
213 },
214 maxHeight: maxHeight,
215 maxWidth: maxWidth,
216 useResponsiveResize: responsiveResize,
217 embedMethod: 'editor'
218 });
219 }
220
221 CKEDITOR.dialog.add('oembed', function(editor) {
222 return {
223 title: editor.lang.oembed.title,
224 minWidth: CKEDITOR.env.ie && CKEDITOR.env.quirks ? 568 : 550,
225 minHeight: 155,
226 onShow: function() {
227 var data = {
228 oembed: this.widget.element.data('oembed') || '',
229 resizeType: this.widget.element.data('resizeType') || 'noresize',
230 maxWidth: this.widget.element.data('maxWidth'),
231 maxHeight: this.widget.element.data('maxHeight'),
232 align: this.widget.element.data('align') || 'none'
233 };
234
235 this.widget.setData(data);
236
237 this.getContentElement('general', 'resizeType').setValue(data.resizeType);
238
239 this.getContentElement('general', 'align').setValue(data.align);
240
241 var resizetype = this.getContentElement('general', 'resizeType').getValue(),
242 maxSizeBox = this.getContentElement('general', 'maxSizeBox').getElement(),
243 sizeBox = this.getContentElement('general', 'sizeBox').getElement();
244
245 if (resizetype == 'noresize') {
246 maxSizeBox.hide();
247 sizeBox.hide();
248 } else if (resizetype == "custom") {
249 maxSizeBox.hide();
250
251 sizeBox.show();
252 } else {
253 maxSizeBox.show();
254
255 sizeBox.hide();
256 }
257 },
258
259 onOk: function() {
260 },
261 contents: [
262 {
263 label: editor.lang.common.generalTab,
264 id: 'general',
265 elements: [
266 {
267 type: 'html',
268 id: 'oembedHeader',
269 html: '<div style="white-space:normal;width:500px;padding-bottom:10px">' + editor.lang.oembed.pasteUrl + '</div>'
270 }, {
271 type: 'text',
272 id: 'embedCode',
273 focus: function() {
274 this.getElement().focus();
275 },
276 label: editor.lang.oembed.url,
277 title: editor.lang.oembed.pasteUrl,
278 setup: function(widget) {
279 if (widget.data.oembed) {
280 this.setValue(widget.data.oembed);
281 }
282 },
283 commit: function(widget) {
284 var dialog = CKEDITOR.dialog.getCurrent(),
285 inputCode = dialog.getValueOf('general', 'embedCode').replace(/\s/g, ""),
286 resizeType = dialog.getContentElement('general', 'resizeType').
287 getValue(),
288 align = dialog.getContentElement('general', 'align').
289 getValue(),
290 maxWidth = null,
291 maxHeight = null,
292 responsiveResize = false,
293 editorInstance = dialog.getParentEditor();
294
295 if (inputCode.length < 1 || inputCode.indexOf('http') < 0) {
296 alert(editor.lang.oembed.invalidUrl);
297 return false;
298 }
299
300 if (resizeType == "noresize") {
301 responsiveResize = false;
302 maxWidth = null;
303 maxHeight = null;
304 } else if (resizeType == "responsive") {
305 maxWidth = dialog.getContentElement('general', 'maxWidth').
306 getInputElement().
307 getValue();
308 maxHeight = dialog.getContentElement('general', 'maxHeight').
309 getInputElement().
310 getValue();
311
312 responsiveResize = true;
313 } else if (resizeType == "custom") {
314 maxWidth = dialog.getContentElement('general', 'width').
315 getInputElement().
316 getValue();
317 maxHeight = dialog.getContentElement('general', 'height').
318 getInputElement().
319 getValue();
320
321 responsiveResize = false;
322 }
323
324 embedCode(inputCode, editorInstance, maxWidth, maxHeight, responsiveResize, resizeType, align, widget);
325
326 widget.setData('oembed', inputCode);
327 widget.setData('resizeType', resizeType);
328 widget.setData('align', align);
329 widget.setData('maxWidth', maxWidth);
330 widget.setData('maxHeight', maxHeight);
331 }
332 }, {
333 type: 'hbox',
334 widths: ['50%', '50%'],
335 children: [
336 {
337 id: 'resizeType',
338 type: 'select',
339 label: editor.lang.oembed.resizeType,
340 'default': 'noresize',
341 setup: function(widget) {
342 if (widget.data.resizeType) {
343 this.setValue(widget.data.resizeType);
344 }
345 },
346 items: [
347 [editor.lang.oembed.noresize, 'noresize'],
348 [editor.lang.oembed.responsive, 'responsive'],
349 [editor.lang.oembed.custom, 'custom']
350 ],
351 onChange: resizeTypeChanged
352 }, {
353 type: 'hbox',
354 id: 'maxSizeBox',
355 widths: ['120px', '120px'],
356 style: 'float:left;position:absolute;left:58%;width:200px',
357 children: [
358 {
359 type: 'text',
360 width: '100px',
361 id: 'maxWidth',
362 'default': editor.config.oembed_maxWidth != null ? editor.config.oembed_maxWidth : '560',
363 label: editor.lang.oembed.maxWidth,
364 title: editor.lang.oembed.maxWidthTitle,
365 setup: function(widget) {
366 if (widget.data.maxWidth) {
367 this.setValue(widget.data.maxWidth);
368 }
369 }
370 }, {
371 type: 'text',
372 id: 'maxHeight',
373 width: '120px',
374 'default': editor.config.oembed_maxHeight != null ? editor.config.oembed_maxHeight : '315',
375 label: editor.lang.oembed.maxHeight,
376 title: editor.lang.oembed.maxHeightTitle,
377 setup: function(widget) {
378 if (widget.data.maxHeight) {
379 this.setValue(widget.data.maxHeight);
380 }
381 }
382 }
383 ]
384 }, {
385 type: 'hbox',
386 id: 'sizeBox',
387 widths: ['120px', '120px'],
388 style: 'float:left;position:absolute;left:58%;width:200px',
389 children: [
390 {
391 type: 'text',
392 id: 'width',
393 width: '100px',
394 'default': editor.config.oembed_maxWidth != null ? editor.config.oembed_maxWidth : '560',
395 label: editor.lang.oembed.width,
396 title: editor.lang.oembed.widthTitle,
397 setup: function(widget) {
398 if (widget.data.maxWidth) {
399 this.setValue(widget.data.maxWidth);
400 }
401 }
402 }, {
403 type: 'text',
404 id: 'height',
405 width: '120px',
406 'default': editor.config.oembed_maxHeight != null ? editor.config.oembed_maxHeight : '315',
407 label: editor.lang.oembed.height,
408 title: editor.lang.oembed.heightTitle,
409 setup: function(widget) {
410 if (widget.data.maxHeight) {
411 this.setValue(widget.data.maxHeight);
412 }
413 }
414 }
415 ]
416 }
417 ]
418 }, {
419 type: 'hbox',
420 id: 'alignment',
421 children: [
422 {
423 id: 'align',
424 type: 'radio',
425 items: [
426 [editor.lang.oembed.none, 'none'],
427 [editor.lang.common.alignLeft, 'left'],
428 [editor.lang.common.alignCenter, 'center'],
429 [editor.lang.common.alignRight, 'right']
430 ],
431 label: editor.lang.common.align,
432 setup: function(widget) {
433 this.setValue(widget.data.align);
434 }
435 }
436 ]
437 }
438 ]
439 }
440 ]
441 };
442 });
443 }
444 });
445 }
446)();
diff --git a/sources/plugins/panel/plugin.js b/sources/plugins/panel/plugin.js
index 44129a9..816ccc4 100644
--- a/sources/plugins/panel/plugin.js
+++ b/sources/plugins/panel/plugin.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -99,7 +99,7 @@
99 parentDiv = iframe.getParent(), 99 parentDiv = iframe.getParent(),
100 doc = iframe.getFrameDocument(); 100 doc = iframe.getFrameDocument();
101 101
102 // Make it scrollable on iOS. (#8308) 102 // Make it scrollable on iOS. (http://dev.ckeditor.com/ticket/8308)
103 CKEDITOR.env.iOS && parentDiv.setStyles( { 103 CKEDITOR.env.iOS && parentDiv.setStyles( {
104 'overflow': 'scroll', 104 'overflow': 'scroll',
105 '-webkit-overflow-scrolling': 'touch' 105 '-webkit-overflow-scrolling': 'touch'
@@ -121,7 +121,7 @@
121 // Register the CKEDITOR global. 121 // Register the CKEDITOR global.
122 win.$.CKEDITOR = CKEDITOR; 122 win.$.CKEDITOR = CKEDITOR;
123 123
124 // Arrow keys for scrolling is only preventable with 'keypress' event in Opera (#4534). 124 // Arrow keys for scrolling is only preventable with 'keypress' event in Opera (http://dev.ckeditor.com/ticket/4534).
125 doc.on( 'keydown', function( evt ) { 125 doc.on( 'keydown', function( evt ) {
126 var keystroke = evt.data.getKeystroke(), 126 var keystroke = evt.data.getKeystroke(),
127 dir = this.document.getById( this.id ).getAttribute( 'dir' ); 127 dir = this.document.getById( this.id ).getAttribute( 'dir' );
@@ -219,7 +219,7 @@
219 current = this._.currentBlock; 219 current = this._.currentBlock;
220 220
221 // ARIA role works better in IE on the body element, while on the iframe 221 // ARIA role works better in IE on the body element, while on the iframe
222 // for FF. (#8864) 222 // for FF. (http://dev.ckeditor.com/ticket/8864)
223 var holder = !this.forceIFrame || CKEDITOR.env.ie ? this._.holder : this.document.getById( this.id + '_frame' ); 223 var holder = !this.forceIFrame || CKEDITOR.env.ie ? this._.holder : this.document.getById( this.id + '_frame' );
224 224
225 if ( current ) 225 if ( current )
@@ -300,13 +300,68 @@
300 var links = this.element.getElementsByTag( 'a' ); 300 var links = this.element.getElementsByTag( 'a' );
301 var item = links.getItem( this._.focusIndex = index ); 301 var item = links.getItem( this._.focusIndex = index );
302 302
303 // Safari need focus on the iframe window first(#3389), but we need 303 // Safari need focus on the iframe window first(http://dev.ckeditor.com/ticket/3389), but we need
304 // lock the blur to avoid hiding the panel. 304 // lock the blur to avoid hiding the panel.
305 if ( CKEDITOR.env.webkit ) 305 if ( CKEDITOR.env.webkit )
306 item.getDocument().getWindow().focus(); 306 item.getDocument().getWindow().focus();
307 item.focus(); 307 item.focus();
308 308
309 this.onMark && this.onMark( item ); 309 this.onMark && this.onMark( item );
310 },
311
312 /**
313 * Marks the first visible item or the one whose `aria-selected` attribute is set to `true`.
314 * The latter has priority over the former.
315 *
316 * @private
317 * @param beforeMark function to be executed just before marking.
318 * Used in cases when any preparatory cleanup (like unmarking all items) would simultaneously
319 * destroy the information that is needed to determine the focused item.
320 */
321 markFirstDisplayed: function( beforeMark ) {
322 var notDisplayed = function( element ) {
323 return element.type == CKEDITOR.NODE_ELEMENT && element.getStyle( 'display' ) == 'none';
324 },
325 links = this._.getItems(),
326 item, focused;
327
328 for ( var i = links.count() - 1; i >= 0; i-- ) {
329 item = links.getItem( i );
330
331 if ( !item.getAscendant( notDisplayed ) ) {
332 focused = item;
333 this._.focusIndex = i;
334 }
335
336 if ( item.getAttribute( 'aria-selected' ) == 'true' ) {
337 focused = item;
338 this._.focusIndex = i;
339 break;
340 }
341 }
342
343 if ( !focused ) {
344 return;
345 }
346
347 if ( beforeMark ) {
348 beforeMark();
349 }
350
351 if ( CKEDITOR.env.webkit )
352 focused.getDocument().getWindow().focus();
353 focused.focus();
354
355 this.onMark && this.onMark( focused );
356 },
357
358 /**
359 * Returns a `CKEDITOR.dom.nodeList` of block items.
360 *
361 * @returns {*|CKEDITOR.dom.nodeList}
362 */
363 getItems: function() {
364 return this.element.getElementsByTag( 'a' );
310 } 365 }
311 }, 366 },
312 367
@@ -340,7 +395,7 @@
340 } 395 }
341 } 396 }
342 397
343 // If no link was found, cycle and restart from the top. (#11125) 398 // If no link was found, cycle and restart from the top. (http://dev.ckeditor.com/ticket/11125)
344 if ( !link && !noCycle ) { 399 if ( !link && !noCycle ) {
345 this._.focusIndex = -1; 400 this._.focusIndex = -1;
346 return this.onKeyDown( keystroke, 1 ); 401 return this.onKeyDown( keystroke, 1 );
@@ -364,11 +419,11 @@
364 } 419 }
365 420
366 // Make sure link is null when the loop ends and nothing was 421 // Make sure link is null when the loop ends and nothing was
367 // found (#11125). 422 // found (http://dev.ckeditor.com/ticket/11125).
368 link = null; 423 link = null;
369 } 424 }
370 425
371 // If no link was found, cycle and restart from the bottom. (#11125) 426 // If no link was found, cycle and restart from the bottom. (http://dev.ckeditor.com/ticket/11125)
372 if ( !link && !noCycle ) { 427 if ( !link && !noCycle ) {
373 this._.focusIndex = links.count(); 428 this._.focusIndex = links.count();
374 return this.onKeyDown( keystroke, 1 ); 429 return this.onKeyDown( keystroke, 1 );
diff --git a/sources/plugins/popup/plugin.js b/sources/plugins/popup/plugin.js
index 8f6bd5f..89b6201 100644
--- a/sources/plugins/popup/plugin.js
+++ b/sources/plugins/popup/plugin.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -48,7 +48,7 @@ CKEDITOR.tools.extend( CKEDITOR.editor.prototype, {
48 return false; 48 return false;
49 49
50 try { 50 try {
51 // Chrome is problematic with moveTo/resizeTo, but it's not really needed here (#8855). 51 // Chrome is problematic with moveTo/resizeTo, but it's not really needed here (http://dev.ckeditor.com/ticket/8855).
52 var ua = navigator.userAgent.toLowerCase(); 52 var ua = navigator.userAgent.toLowerCase();
53 if ( ua.indexOf( ' chrome/' ) == -1 ) { 53 if ( ua.indexOf( ' chrome/' ) == -1 ) {
54 popupWindow.moveTo( left, top ); 54 popupWindow.moveTo( left, top );
diff --git a/sources/plugins/removeformat/icons/hidpi/removeformat.png b/sources/plugins/removeformat/icons/hidpi/removeformat.png
index 910b0a3..0695878 100644
--- a/sources/plugins/removeformat/icons/hidpi/removeformat.png
+++ b/sources/plugins/removeformat/icons/hidpi/removeformat.png
Binary files differ
diff --git a/sources/plugins/removeformat/icons/removeformat.png b/sources/plugins/removeformat/icons/removeformat.png
index 1bc9b38..f4597bf 100644
--- a/sources/plugins/removeformat/icons/removeformat.png
+++ b/sources/plugins/removeformat/icons/removeformat.png
Binary files differ
diff --git a/sources/plugins/removeformat/lang/af.js b/sources/plugins/removeformat/lang/af.js
index f4aad8d..4904945 100644
--- a/sources/plugins/removeformat/lang/af.js
+++ b/sources/plugins/removeformat/lang/af.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'removeformat', 'af', { 5CKEDITOR.plugins.setLang( 'removeformat', 'af', {
diff --git a/sources/plugins/removeformat/lang/ar.js b/sources/plugins/removeformat/lang/ar.js
index fc43002..661e851 100644
--- a/sources/plugins/removeformat/lang/ar.js
+++ b/sources/plugins/removeformat/lang/ar.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'removeformat', 'ar', { 5CKEDITOR.plugins.setLang( 'removeformat', 'ar', {
diff --git a/sources/plugins/removeformat/lang/az.js b/sources/plugins/removeformat/lang/az.js
new file mode 100644
index 0000000..948837e
--- /dev/null
+++ b/sources/plugins/removeformat/lang/az.js
@@ -0,0 +1,7 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'removeformat', 'az', {
6 toolbar: 'Formatı sil'
7} );
diff --git a/sources/plugins/removeformat/lang/bg.js b/sources/plugins/removeformat/lang/bg.js
index bc24b70..a96dc60 100644
--- a/sources/plugins/removeformat/lang/bg.js
+++ b/sources/plugins/removeformat/lang/bg.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'removeformat', 'bg', { 5CKEDITOR.plugins.setLang( 'removeformat', 'bg', {
diff --git a/sources/plugins/removeformat/lang/bn.js b/sources/plugins/removeformat/lang/bn.js
index 40bf380..0c59c81 100644
--- a/sources/plugins/removeformat/lang/bn.js
+++ b/sources/plugins/removeformat/lang/bn.js
@@ -1,7 +1,7 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'removeformat', 'bn', { 5CKEDITOR.plugins.setLang( 'removeformat', 'bn', {
6 toolbar: ' সর' 6 toolbar: '-কৃতি রি'
7} ); 7} );
diff --git a/sources/plugins/removeformat/lang/bs.js b/sources/plugins/removeformat/lang/bs.js
index ee03684..83fd723 100644
--- a/sources/plugins/removeformat/lang/bs.js
+++ b/sources/plugins/removeformat/lang/bs.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'removeformat', 'bs', { 5CKEDITOR.plugins.setLang( 'removeformat', 'bs', {
diff --git a/sources/plugins/removeformat/lang/ca.js b/sources/plugins/removeformat/lang/ca.js
index 0b94ce4..01ead3b 100644
--- a/sources/plugins/removeformat/lang/ca.js
+++ b/sources/plugins/removeformat/lang/ca.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'removeformat', 'ca', { 5CKEDITOR.plugins.setLang( 'removeformat', 'ca', {
diff --git a/sources/plugins/removeformat/lang/cs.js b/sources/plugins/removeformat/lang/cs.js
index ce05801..cab8cfc 100644
--- a/sources/plugins/removeformat/lang/cs.js
+++ b/sources/plugins/removeformat/lang/cs.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'removeformat', 'cs', { 5CKEDITOR.plugins.setLang( 'removeformat', 'cs', {
diff --git a/sources/plugins/removeformat/lang/cy.js b/sources/plugins/removeformat/lang/cy.js
index 14372a1..7908104 100644
--- a/sources/plugins/removeformat/lang/cy.js
+++ b/sources/plugins/removeformat/lang/cy.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'removeformat', 'cy', { 5CKEDITOR.plugins.setLang( 'removeformat', 'cy', {
diff --git a/sources/plugins/removeformat/lang/da.js b/sources/plugins/removeformat/lang/da.js
index d170584..6f35909 100644
--- a/sources/plugins/removeformat/lang/da.js
+++ b/sources/plugins/removeformat/lang/da.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'removeformat', 'da', { 5CKEDITOR.plugins.setLang( 'removeformat', 'da', {
diff --git a/sources/plugins/removeformat/lang/de-ch.js b/sources/plugins/removeformat/lang/de-ch.js
index 48daf26..37d1ccd 100644
--- a/sources/plugins/removeformat/lang/de-ch.js
+++ b/sources/plugins/removeformat/lang/de-ch.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'removeformat', 'de-ch', { 5CKEDITOR.plugins.setLang( 'removeformat', 'de-ch', {
diff --git a/sources/plugins/removeformat/lang/de.js b/sources/plugins/removeformat/lang/de.js
index 08ad55c..5d8901b 100644
--- a/sources/plugins/removeformat/lang/de.js
+++ b/sources/plugins/removeformat/lang/de.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'removeformat', 'de', { 5CKEDITOR.plugins.setLang( 'removeformat', 'de', {
diff --git a/sources/plugins/removeformat/lang/el.js b/sources/plugins/removeformat/lang/el.js
index d48c8ab..e0da8c6 100644
--- a/sources/plugins/removeformat/lang/el.js
+++ b/sources/plugins/removeformat/lang/el.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'removeformat', 'el', { 5CKEDITOR.plugins.setLang( 'removeformat', 'el', {
diff --git a/sources/plugins/removeformat/lang/en-au.js b/sources/plugins/removeformat/lang/en-au.js
index 426d6d1..4d98f6d 100644
--- a/sources/plugins/removeformat/lang/en-au.js
+++ b/sources/plugins/removeformat/lang/en-au.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'removeformat', 'en-au', { 5CKEDITOR.plugins.setLang( 'removeformat', 'en-au', {
diff --git a/sources/plugins/removeformat/lang/en-ca.js b/sources/plugins/removeformat/lang/en-ca.js
index 1cc2963..998eb01 100644
--- a/sources/plugins/removeformat/lang/en-ca.js
+++ b/sources/plugins/removeformat/lang/en-ca.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'removeformat', 'en-ca', { 5CKEDITOR.plugins.setLang( 'removeformat', 'en-ca', {
diff --git a/sources/plugins/removeformat/lang/en-gb.js b/sources/plugins/removeformat/lang/en-gb.js
index 65af616..f40ca18 100644
--- a/sources/plugins/removeformat/lang/en-gb.js
+++ b/sources/plugins/removeformat/lang/en-gb.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'removeformat', 'en-gb', { 5CKEDITOR.plugins.setLang( 'removeformat', 'en-gb', {
diff --git a/sources/plugins/removeformat/lang/en.js b/sources/plugins/removeformat/lang/en.js
index 55600fc..ed26343 100644
--- a/sources/plugins/removeformat/lang/en.js
+++ b/sources/plugins/removeformat/lang/en.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'removeformat', 'en', { 5CKEDITOR.plugins.setLang( 'removeformat', 'en', {
diff --git a/sources/plugins/removeformat/lang/eo.js b/sources/plugins/removeformat/lang/eo.js
index c4f04e3..bb25f96 100644
--- a/sources/plugins/removeformat/lang/eo.js
+++ b/sources/plugins/removeformat/lang/eo.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'removeformat', 'eo', { 5CKEDITOR.plugins.setLang( 'removeformat', 'eo', {
diff --git a/sources/plugins/removeformat/lang/es-mx.js b/sources/plugins/removeformat/lang/es-mx.js
new file mode 100644
index 0000000..dda30c5
--- /dev/null
+++ b/sources/plugins/removeformat/lang/es-mx.js
@@ -0,0 +1,7 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'removeformat', 'es-mx', {
6 toolbar: 'Remover formato'
7} );
diff --git a/sources/plugins/removeformat/lang/es.js b/sources/plugins/removeformat/lang/es.js
index dc48200..d097bdb 100644
--- a/sources/plugins/removeformat/lang/es.js
+++ b/sources/plugins/removeformat/lang/es.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'removeformat', 'es', { 5CKEDITOR.plugins.setLang( 'removeformat', 'es', {
diff --git a/sources/plugins/removeformat/lang/et.js b/sources/plugins/removeformat/lang/et.js
index 2938e78..823749d 100644
--- a/sources/plugins/removeformat/lang/et.js
+++ b/sources/plugins/removeformat/lang/et.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'removeformat', 'et', { 5CKEDITOR.plugins.setLang( 'removeformat', 'et', {
diff --git a/sources/plugins/removeformat/lang/eu.js b/sources/plugins/removeformat/lang/eu.js
index ff16de3..bc487f7 100644
--- a/sources/plugins/removeformat/lang/eu.js
+++ b/sources/plugins/removeformat/lang/eu.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'removeformat', 'eu', { 5CKEDITOR.plugins.setLang( 'removeformat', 'eu', {
diff --git a/sources/plugins/removeformat/lang/fa.js b/sources/plugins/removeformat/lang/fa.js
index 40e8a1d..8fc6b93 100644
--- a/sources/plugins/removeformat/lang/fa.js
+++ b/sources/plugins/removeformat/lang/fa.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'removeformat', 'fa', { 5CKEDITOR.plugins.setLang( 'removeformat', 'fa', {
diff --git a/sources/plugins/removeformat/lang/fi.js b/sources/plugins/removeformat/lang/fi.js
index 90f2f54..c61a093 100644
--- a/sources/plugins/removeformat/lang/fi.js
+++ b/sources/plugins/removeformat/lang/fi.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'removeformat', 'fi', { 5CKEDITOR.plugins.setLang( 'removeformat', 'fi', {
diff --git a/sources/plugins/removeformat/lang/fo.js b/sources/plugins/removeformat/lang/fo.js
index 68fbb29..b80c158 100644
--- a/sources/plugins/removeformat/lang/fo.js
+++ b/sources/plugins/removeformat/lang/fo.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'removeformat', 'fo', { 5CKEDITOR.plugins.setLang( 'removeformat', 'fo', {
diff --git a/sources/plugins/removeformat/lang/fr-ca.js b/sources/plugins/removeformat/lang/fr-ca.js
index 67709de..fe3534d 100644
--- a/sources/plugins/removeformat/lang/fr-ca.js
+++ b/sources/plugins/removeformat/lang/fr-ca.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'removeformat', 'fr-ca', { 5CKEDITOR.plugins.setLang( 'removeformat', 'fr-ca', {
diff --git a/sources/plugins/removeformat/lang/fr.js b/sources/plugins/removeformat/lang/fr.js
index 0ccb8ed..e18fd83 100644
--- a/sources/plugins/removeformat/lang/fr.js
+++ b/sources/plugins/removeformat/lang/fr.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'removeformat', 'fr', { 5CKEDITOR.plugins.setLang( 'removeformat', 'fr', {
diff --git a/sources/plugins/removeformat/lang/gl.js b/sources/plugins/removeformat/lang/gl.js
index 8ed13d3..8190cca 100644
--- a/sources/plugins/removeformat/lang/gl.js
+++ b/sources/plugins/removeformat/lang/gl.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'removeformat', 'gl', { 5CKEDITOR.plugins.setLang( 'removeformat', 'gl', {
diff --git a/sources/plugins/removeformat/lang/gu.js b/sources/plugins/removeformat/lang/gu.js
index 7d31531..621ad9d 100644
--- a/sources/plugins/removeformat/lang/gu.js
+++ b/sources/plugins/removeformat/lang/gu.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'removeformat', 'gu', { 5CKEDITOR.plugins.setLang( 'removeformat', 'gu', {
diff --git a/sources/plugins/removeformat/lang/he.js b/sources/plugins/removeformat/lang/he.js
index 1073e39..bcdc1bd 100644
--- a/sources/plugins/removeformat/lang/he.js
+++ b/sources/plugins/removeformat/lang/he.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'removeformat', 'he', { 5CKEDITOR.plugins.setLang( 'removeformat', 'he', {
diff --git a/sources/plugins/removeformat/lang/hi.js b/sources/plugins/removeformat/lang/hi.js
index 952feac..ab15f5d 100644
--- a/sources/plugins/removeformat/lang/hi.js
+++ b/sources/plugins/removeformat/lang/hi.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'removeformat', 'hi', { 5CKEDITOR.plugins.setLang( 'removeformat', 'hi', {
diff --git a/sources/plugins/removeformat/lang/hr.js b/sources/plugins/removeformat/lang/hr.js
index 9332057..c061400 100644
--- a/sources/plugins/removeformat/lang/hr.js
+++ b/sources/plugins/removeformat/lang/hr.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'removeformat', 'hr', { 5CKEDITOR.plugins.setLang( 'removeformat', 'hr', {
diff --git a/sources/plugins/removeformat/lang/hu.js b/sources/plugins/removeformat/lang/hu.js
index a7cabfc..fe1c099 100644
--- a/sources/plugins/removeformat/lang/hu.js
+++ b/sources/plugins/removeformat/lang/hu.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'removeformat', 'hu', { 5CKEDITOR.plugins.setLang( 'removeformat', 'hu', {
diff --git a/sources/plugins/removeformat/lang/id.js b/sources/plugins/removeformat/lang/id.js
index f677a05..e7eded0 100644
--- a/sources/plugins/removeformat/lang/id.js
+++ b/sources/plugins/removeformat/lang/id.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'removeformat', 'id', { 5CKEDITOR.plugins.setLang( 'removeformat', 'id', {
diff --git a/sources/plugins/removeformat/lang/is.js b/sources/plugins/removeformat/lang/is.js
index 5f7c53f..98b9b4d 100644
--- a/sources/plugins/removeformat/lang/is.js
+++ b/sources/plugins/removeformat/lang/is.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'removeformat', 'is', { 5CKEDITOR.plugins.setLang( 'removeformat', 'is', {
diff --git a/sources/plugins/removeformat/lang/it.js b/sources/plugins/removeformat/lang/it.js
index 840d043..0ea8fb9 100644
--- a/sources/plugins/removeformat/lang/it.js
+++ b/sources/plugins/removeformat/lang/it.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'removeformat', 'it', { 5CKEDITOR.plugins.setLang( 'removeformat', 'it', {
diff --git a/sources/plugins/removeformat/lang/ja.js b/sources/plugins/removeformat/lang/ja.js
index acc7451..ca0970f 100644
--- a/sources/plugins/removeformat/lang/ja.js
+++ b/sources/plugins/removeformat/lang/ja.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'removeformat', 'ja', { 5CKEDITOR.plugins.setLang( 'removeformat', 'ja', {
diff --git a/sources/plugins/removeformat/lang/ka.js b/sources/plugins/removeformat/lang/ka.js
index a455c35..b624c5d 100644
--- a/sources/plugins/removeformat/lang/ka.js
+++ b/sources/plugins/removeformat/lang/ka.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'removeformat', 'ka', { 5CKEDITOR.plugins.setLang( 'removeformat', 'ka', {
diff --git a/sources/plugins/removeformat/lang/km.js b/sources/plugins/removeformat/lang/km.js
index b20d6ac..cacd321 100644
--- a/sources/plugins/removeformat/lang/km.js
+++ b/sources/plugins/removeformat/lang/km.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'removeformat', 'km', { 5CKEDITOR.plugins.setLang( 'removeformat', 'km', {
diff --git a/sources/plugins/removeformat/lang/ko.js b/sources/plugins/removeformat/lang/ko.js
index 60df7aa..a594ccc 100644
--- a/sources/plugins/removeformat/lang/ko.js
+++ b/sources/plugins/removeformat/lang/ko.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'removeformat', 'ko', { 5CKEDITOR.plugins.setLang( 'removeformat', 'ko', {
diff --git a/sources/plugins/removeformat/lang/ku.js b/sources/plugins/removeformat/lang/ku.js
index 5b84310..51ae15a 100644
--- a/sources/plugins/removeformat/lang/ku.js
+++ b/sources/plugins/removeformat/lang/ku.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'removeformat', 'ku', { 5CKEDITOR.plugins.setLang( 'removeformat', 'ku', {
diff --git a/sources/plugins/removeformat/lang/lt.js b/sources/plugins/removeformat/lang/lt.js
index 88be97e..1e7f2df 100644
--- a/sources/plugins/removeformat/lang/lt.js
+++ b/sources/plugins/removeformat/lang/lt.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'removeformat', 'lt', { 5CKEDITOR.plugins.setLang( 'removeformat', 'lt', {
diff --git a/sources/plugins/removeformat/lang/lv.js b/sources/plugins/removeformat/lang/lv.js
index 946e6d9..f382171 100644
--- a/sources/plugins/removeformat/lang/lv.js
+++ b/sources/plugins/removeformat/lang/lv.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'removeformat', 'lv', { 5CKEDITOR.plugins.setLang( 'removeformat', 'lv', {
diff --git a/sources/plugins/removeformat/lang/mk.js b/sources/plugins/removeformat/lang/mk.js
index 4fcbf8d..be04ba4 100644
--- a/sources/plugins/removeformat/lang/mk.js
+++ b/sources/plugins/removeformat/lang/mk.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'removeformat', 'mk', { 5CKEDITOR.plugins.setLang( 'removeformat', 'mk', {
diff --git a/sources/plugins/removeformat/lang/mn.js b/sources/plugins/removeformat/lang/mn.js
index e504411..378a898 100644
--- a/sources/plugins/removeformat/lang/mn.js
+++ b/sources/plugins/removeformat/lang/mn.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'removeformat', 'mn', { 5CKEDITOR.plugins.setLang( 'removeformat', 'mn', {
diff --git a/sources/plugins/removeformat/lang/ms.js b/sources/plugins/removeformat/lang/ms.js
index bb6951b..ee81ba1 100644
--- a/sources/plugins/removeformat/lang/ms.js
+++ b/sources/plugins/removeformat/lang/ms.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'removeformat', 'ms', { 5CKEDITOR.plugins.setLang( 'removeformat', 'ms', {
diff --git a/sources/plugins/removeformat/lang/nb.js b/sources/plugins/removeformat/lang/nb.js
index 461d140..19f093d 100644
--- a/sources/plugins/removeformat/lang/nb.js
+++ b/sources/plugins/removeformat/lang/nb.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'removeformat', 'nb', { 5CKEDITOR.plugins.setLang( 'removeformat', 'nb', {
diff --git a/sources/plugins/removeformat/lang/nl.js b/sources/plugins/removeformat/lang/nl.js
index cbbe0b1..46be61b 100644
--- a/sources/plugins/removeformat/lang/nl.js
+++ b/sources/plugins/removeformat/lang/nl.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'removeformat', 'nl', { 5CKEDITOR.plugins.setLang( 'removeformat', 'nl', {
diff --git a/sources/plugins/removeformat/lang/no.js b/sources/plugins/removeformat/lang/no.js
index d067249..84d38af 100644
--- a/sources/plugins/removeformat/lang/no.js
+++ b/sources/plugins/removeformat/lang/no.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'removeformat', 'no', { 5CKEDITOR.plugins.setLang( 'removeformat', 'no', {
diff --git a/sources/plugins/removeformat/lang/oc.js b/sources/plugins/removeformat/lang/oc.js
new file mode 100644
index 0000000..7dda966
--- /dev/null
+++ b/sources/plugins/removeformat/lang/oc.js
@@ -0,0 +1,7 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'removeformat', 'oc', {
6 toolbar: 'Suprimir la mesa en forma'
7} );
diff --git a/sources/plugins/removeformat/lang/pl.js b/sources/plugins/removeformat/lang/pl.js
index 5b1bddb..41e7034 100644
--- a/sources/plugins/removeformat/lang/pl.js
+++ b/sources/plugins/removeformat/lang/pl.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'removeformat', 'pl', { 5CKEDITOR.plugins.setLang( 'removeformat', 'pl', {
diff --git a/sources/plugins/removeformat/lang/pt-br.js b/sources/plugins/removeformat/lang/pt-br.js
index fb05dce..61b44c0 100644
--- a/sources/plugins/removeformat/lang/pt-br.js
+++ b/sources/plugins/removeformat/lang/pt-br.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'removeformat', 'pt-br', { 5CKEDITOR.plugins.setLang( 'removeformat', 'pt-br', {
diff --git a/sources/plugins/removeformat/lang/pt.js b/sources/plugins/removeformat/lang/pt.js
index c3e5d97..b54dbce 100644
--- a/sources/plugins/removeformat/lang/pt.js
+++ b/sources/plugins/removeformat/lang/pt.js
@@ -1,7 +1,7 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'removeformat', 'pt', { 5CKEDITOR.plugins.setLang( 'removeformat', 'pt', {
6 toolbar: 'Eliminar Formato' 6 toolbar: 'Limpar formatação'
7} ); 7} );
diff --git a/sources/plugins/removeformat/lang/ro.js b/sources/plugins/removeformat/lang/ro.js
index 1c045c7..649bced 100644
--- a/sources/plugins/removeformat/lang/ro.js
+++ b/sources/plugins/removeformat/lang/ro.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'removeformat', 'ro', { 5CKEDITOR.plugins.setLang( 'removeformat', 'ro', {
diff --git a/sources/plugins/removeformat/lang/ru.js b/sources/plugins/removeformat/lang/ru.js
index baaa2fb..ea05d6e 100644
--- a/sources/plugins/removeformat/lang/ru.js
+++ b/sources/plugins/removeformat/lang/ru.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'removeformat', 'ru', { 5CKEDITOR.plugins.setLang( 'removeformat', 'ru', {
diff --git a/sources/plugins/removeformat/lang/si.js b/sources/plugins/removeformat/lang/si.js
index 7a86747..db5d715 100644
--- a/sources/plugins/removeformat/lang/si.js
+++ b/sources/plugins/removeformat/lang/si.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'removeformat', 'si', { 5CKEDITOR.plugins.setLang( 'removeformat', 'si', {
diff --git a/sources/plugins/removeformat/lang/sk.js b/sources/plugins/removeformat/lang/sk.js
index 77651f2..625c8d6 100644
--- a/sources/plugins/removeformat/lang/sk.js
+++ b/sources/plugins/removeformat/lang/sk.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'removeformat', 'sk', { 5CKEDITOR.plugins.setLang( 'removeformat', 'sk', {
diff --git a/sources/plugins/removeformat/lang/sl.js b/sources/plugins/removeformat/lang/sl.js
index a717049..895c1e7 100644
--- a/sources/plugins/removeformat/lang/sl.js
+++ b/sources/plugins/removeformat/lang/sl.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'removeformat', 'sl', { 5CKEDITOR.plugins.setLang( 'removeformat', 'sl', {
diff --git a/sources/plugins/removeformat/lang/sq.js b/sources/plugins/removeformat/lang/sq.js
index 73c8419..45f455a 100644
--- a/sources/plugins/removeformat/lang/sq.js
+++ b/sources/plugins/removeformat/lang/sq.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'removeformat', 'sq', { 5CKEDITOR.plugins.setLang( 'removeformat', 'sq', {
diff --git a/sources/plugins/removeformat/lang/sr-latn.js b/sources/plugins/removeformat/lang/sr-latn.js
index 9e91105..51f34a7 100644
--- a/sources/plugins/removeformat/lang/sr-latn.js
+++ b/sources/plugins/removeformat/lang/sr-latn.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'removeformat', 'sr-latn', { 5CKEDITOR.plugins.setLang( 'removeformat', 'sr-latn', {
diff --git a/sources/plugins/removeformat/lang/sr.js b/sources/plugins/removeformat/lang/sr.js
index fd720a9..c6080dd 100644
--- a/sources/plugins/removeformat/lang/sr.js
+++ b/sources/plugins/removeformat/lang/sr.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'removeformat', 'sr', { 5CKEDITOR.plugins.setLang( 'removeformat', 'sr', {
diff --git a/sources/plugins/removeformat/lang/sv.js b/sources/plugins/removeformat/lang/sv.js
index ebb4aed..2dd7edc 100644
--- a/sources/plugins/removeformat/lang/sv.js
+++ b/sources/plugins/removeformat/lang/sv.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'removeformat', 'sv', { 5CKEDITOR.plugins.setLang( 'removeformat', 'sv', {
diff --git a/sources/plugins/removeformat/lang/th.js b/sources/plugins/removeformat/lang/th.js
index d521c58..0bc74e2 100644
--- a/sources/plugins/removeformat/lang/th.js
+++ b/sources/plugins/removeformat/lang/th.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'removeformat', 'th', { 5CKEDITOR.plugins.setLang( 'removeformat', 'th', {
diff --git a/sources/plugins/removeformat/lang/tr.js b/sources/plugins/removeformat/lang/tr.js
index 2d4097c..2c961c5 100644
--- a/sources/plugins/removeformat/lang/tr.js
+++ b/sources/plugins/removeformat/lang/tr.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'removeformat', 'tr', { 5CKEDITOR.plugins.setLang( 'removeformat', 'tr', {
diff --git a/sources/plugins/removeformat/lang/tt.js b/sources/plugins/removeformat/lang/tt.js
index 4fa5570..b3afbda 100644
--- a/sources/plugins/removeformat/lang/tt.js
+++ b/sources/plugins/removeformat/lang/tt.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'removeformat', 'tt', { 5CKEDITOR.plugins.setLang( 'removeformat', 'tt', {
diff --git a/sources/plugins/removeformat/lang/ug.js b/sources/plugins/removeformat/lang/ug.js
index 7d9ec29..07e5daf 100644
--- a/sources/plugins/removeformat/lang/ug.js
+++ b/sources/plugins/removeformat/lang/ug.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'removeformat', 'ug', { 5CKEDITOR.plugins.setLang( 'removeformat', 'ug', {
diff --git a/sources/plugins/removeformat/lang/uk.js b/sources/plugins/removeformat/lang/uk.js
index 1dea866..7ef1f1c 100644
--- a/sources/plugins/removeformat/lang/uk.js
+++ b/sources/plugins/removeformat/lang/uk.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'removeformat', 'uk', { 5CKEDITOR.plugins.setLang( 'removeformat', 'uk', {
diff --git a/sources/plugins/removeformat/lang/vi.js b/sources/plugins/removeformat/lang/vi.js
index 2aaadc2..38316bf 100644
--- a/sources/plugins/removeformat/lang/vi.js
+++ b/sources/plugins/removeformat/lang/vi.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'removeformat', 'vi', { 5CKEDITOR.plugins.setLang( 'removeformat', 'vi', {
diff --git a/sources/plugins/removeformat/lang/zh-cn.js b/sources/plugins/removeformat/lang/zh-cn.js
index 6efbf35..ec833f1 100644
--- a/sources/plugins/removeformat/lang/zh-cn.js
+++ b/sources/plugins/removeformat/lang/zh-cn.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'removeformat', 'zh-cn', { 5CKEDITOR.plugins.setLang( 'removeformat', 'zh-cn', {
diff --git a/sources/plugins/removeformat/lang/zh.js b/sources/plugins/removeformat/lang/zh.js
index 6ce2ef0..dd23488 100644
--- a/sources/plugins/removeformat/lang/zh.js
+++ b/sources/plugins/removeformat/lang/zh.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'removeformat', 'zh', { 5CKEDITOR.plugins.setLang( 'removeformat', 'zh', {
diff --git a/sources/plugins/removeformat/plugin.js b/sources/plugins/removeformat/plugin.js
index 044f54a..94360ee 100644
--- a/sources/plugins/removeformat/plugin.js
+++ b/sources/plugins/removeformat/plugin.js
@@ -1,11 +1,11 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
6CKEDITOR.plugins.add( 'removeformat', { 6CKEDITOR.plugins.add( 'removeformat', {
7 // jscs:disable maximumLineLength 7 // jscs:disable maximumLineLength
8 lang: 'af,ar,bg,bn,bs,ca,cs,cy,da,de,de-ch,el,en,en-au,en-ca,en-gb,eo,es,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,pl,pt,pt-br,ro,ru,si,sk,sl,sq,sr,sr-latn,sv,th,tr,tt,ug,uk,vi,zh,zh-cn', // %REMOVE_LINE_CORE% 8 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', // %REMOVE_LINE_CORE%
9 // jscs:enable maximumLineLength 9 // jscs:enable maximumLineLength
10 icons: 'removeformat', // %REMOVE_LINE_CORE% 10 icons: 'removeformat', // %REMOVE_LINE_CORE%
11 hidpi: true, // %REMOVE_LINE_CORE% 11 hidpi: true, // %REMOVE_LINE_CORE%
@@ -120,7 +120,7 @@ CKEDITOR.plugins.removeformat = {
120 } 120 }
121 121
122 // The selection path may not changed, but we should force a selection 122 // The selection path may not changed, but we should force a selection
123 // change event to refresh command states, due to the above attribution change. (#9238) 123 // change event to refresh command states, due to the above attribution change. (http://dev.ckeditor.com/ticket/9238)
124 editor.forceNextSelectionCheck(); 124 editor.forceNextSelectionCheck();
125 editor.getSelection().selectRanges( ranges ); 125 editor.getSelection().selectRanges( ranges );
126 } 126 }
diff --git a/sources/plugins/resize/plugin.js b/sources/plugins/resize/plugin.js
index be9673d..123dd2d 100644
--- a/sources/plugins/resize/plugin.js
+++ b/sources/plugins/resize/plugin.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -19,7 +19,7 @@ CKEDITOR.plugins.add( 'resize', {
19 if ( resizeVertical ) 19 if ( resizeVertical )
20 height = Math.max( config.resize_minHeight, Math.min( internalHeight, config.resize_maxHeight ) ); 20 height = Math.max( config.resize_minHeight, Math.min( internalHeight, config.resize_maxHeight ) );
21 21
22 // DO NOT impose fixed size with single direction resize. (#6308) 22 // DO NOT impose fixed size with single direction resize. (http://dev.ckeditor.com/ticket/6308)
23 editor.resize( resizeHorizontal ? width : null, height ); 23 editor.resize( resizeHorizontal ? width : null, height );
24 } 24 }
25 25
@@ -37,7 +37,7 @@ CKEDITOR.plugins.add( 'resize', {
37 var spaceId = editor.ui.spaceId( 'resizer' ); 37 var spaceId = editor.ui.spaceId( 'resizer' );
38 38
39 // Resize in the same direction of chrome, 39 // Resize in the same direction of chrome,
40 // which is identical to dir of editor element. (#6614) 40 // which is identical to dir of editor element. (http://dev.ckeditor.com/ticket/6614)
41 var resizeDir = editor.element ? editor.element.getDirection( 1 ) : 'ltr'; 41 var resizeDir = editor.element ? editor.element.getDirection( 1 ) : 'ltr';
42 42
43 !config.resize_dir && ( config.resize_dir = 'vertical' ); 43 !config.resize_dir && ( config.resize_dir = 'vertical' );
diff --git a/sources/plugins/richcombo/plugin.js b/sources/plugins/richcombo/plugin.js
index 67ccc8e..15b04b1 100644
--- a/sources/plugins/richcombo/plugin.js
+++ b/sources/plugins/richcombo/plugin.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -37,7 +37,7 @@ CKEDITOR.plugins.add( 'richcombo', {
37 template += 37 template +=
38 ' onkeydown="return CKEDITOR.tools.callFunction({keydownFn},event,this);"' + 38 ' onkeydown="return CKEDITOR.tools.callFunction({keydownFn},event,this);"' +
39 ' onfocus="return CKEDITOR.tools.callFunction({focusFn},event);" ' + 39 ' onfocus="return CKEDITOR.tools.callFunction({focusFn},event);" ' +
40 ( CKEDITOR.env.ie ? 'onclick="return false;" onmouseup' : 'onclick' ) + // #188 40 ( CKEDITOR.env.ie ? 'onclick="return false;" onmouseup' : 'onclick' ) + // http://dev.ckeditor.com/ticket/188
41 '="CKEDITOR.tools.callFunction({clickFn},this);return false;">' + 41 '="CKEDITOR.tools.callFunction({clickFn},this);return false;">' +
42 '<span id="{id}_text" class="cke_combo_text cke_combo_inlinelabel">{label}</span>' + 42 '<span id="{id}_text" class="cke_combo_text cke_combo_inlinelabel">{label}</span>' +
43 '<span class="cke_combo_open">' + 43 '<span class="cke_combo_open">' +
@@ -160,7 +160,7 @@ CKEDITOR.plugins.add( 'richcombo', {
160 }; 160 };
161 161
162 function updateState() { 162 function updateState() {
163 // Don't change state while richcombo is active (#11793). 163 // Don't change state while richcombo is active (http://dev.ckeditor.com/ticket/11793).
164 if ( this.getState() == CKEDITOR.TRISTATE_ON ) 164 if ( this.getState() == CKEDITOR.TRISTATE_ON )
165 return; 165 return;
166 166
@@ -189,15 +189,6 @@ CKEDITOR.plugins.add( 'richcombo', {
189 189
190 var keystroke = ev.getKeystroke(); 190 var keystroke = ev.getKeystroke();
191 191
192 // ARROW-DOWN
193 // This call is duplicated in plugins/toolbar/plugin.js in itemKeystroke().
194 // Move focus to the first element after drop down was opened by the arrow down key.
195 if ( keystroke == 40 ) {
196 editor.once( 'panelShow', function( evt ) {
197 evt.data._.panel._.currentBlock.onKeyDown( 40 );
198 } );
199 }
200
201 switch ( keystroke ) { 192 switch ( keystroke ) {
202 case 13: // ENTER 193 case 13: // ENTER
203 case 32: // SPACE 194 case 32: // SPACE
@@ -266,12 +257,6 @@ CKEDITOR.plugins.add( 'richcombo', {
266 257
267 if ( me.onOpen ) 258 if ( me.onOpen )
268 me.onOpen(); 259 me.onOpen();
269
270 // The "panelShow" event is fired assinchronously, after the
271 // onShow method call.
272 editor.once( 'panelShow', function() {
273 list.focus( !list.multiSelect && me.getValue() );
274 } );
275 }; 260 };
276 261
277 panel.onHide = function( preventOnClose ) { 262 panel.onHide = function( preventOnClose ) {
diff --git a/sources/plugins/showborders/plugin.js b/sources/plugins/showborders/plugin.js
index e9140f9..7dbfb59 100644
--- a/sources/plugins/showborders/plugin.js
+++ b/sources/plugins/showborders/plugin.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/sourcearea/icons/hidpi/source-rtl.png b/sources/plugins/sourcearea/icons/hidpi/source-rtl.png
index adf4af3..c95da32 100644
--- a/sources/plugins/sourcearea/icons/hidpi/source-rtl.png
+++ b/sources/plugins/sourcearea/icons/hidpi/source-rtl.png
Binary files differ
diff --git a/sources/plugins/sourcearea/icons/hidpi/source.png b/sources/plugins/sourcearea/icons/hidpi/source.png
index b4d0a15..2f3eae1 100644
--- a/sources/plugins/sourcearea/icons/hidpi/source.png
+++ b/sources/plugins/sourcearea/icons/hidpi/source.png
Binary files differ
diff --git a/sources/plugins/sourcearea/icons/source-rtl.png b/sources/plugins/sourcearea/icons/source-rtl.png
index 27d1ba8..5353eee 100644
--- a/sources/plugins/sourcearea/icons/source-rtl.png
+++ b/sources/plugins/sourcearea/icons/source-rtl.png
Binary files differ
diff --git a/sources/plugins/sourcearea/icons/source.png b/sources/plugins/sourcearea/icons/source.png
index e44db37..0783e85 100644
--- a/sources/plugins/sourcearea/icons/source.png
+++ b/sources/plugins/sourcearea/icons/source.png
Binary files differ
diff --git a/sources/plugins/sourcearea/lang/af.js b/sources/plugins/sourcearea/lang/af.js
index 18cd8fd..a5a499e 100644
--- a/sources/plugins/sourcearea/lang/af.js
+++ b/sources/plugins/sourcearea/lang/af.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'sourcearea', 'af', { 5CKEDITOR.plugins.setLang( 'sourcearea', 'af', {
diff --git a/sources/plugins/sourcearea/lang/ar.js b/sources/plugins/sourcearea/lang/ar.js
index 75a8912..40808ac 100644
--- a/sources/plugins/sourcearea/lang/ar.js
+++ b/sources/plugins/sourcearea/lang/ar.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'sourcearea', 'ar', { 5CKEDITOR.plugins.setLang( 'sourcearea', 'ar', {
diff --git a/sources/plugins/sourcearea/lang/az.js b/sources/plugins/sourcearea/lang/az.js
new file mode 100644
index 0000000..9aeff4b
--- /dev/null
+++ b/sources/plugins/sourcearea/lang/az.js
@@ -0,0 +1,7 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'sourcearea', 'az', {
6 toolbar: 'HTML mənbəyini göstər'
7} );
diff --git a/sources/plugins/sourcearea/lang/bg.js b/sources/plugins/sourcearea/lang/bg.js
index 7c87fc8..4902635 100644
--- a/sources/plugins/sourcearea/lang/bg.js
+++ b/sources/plugins/sourcearea/lang/bg.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'sourcearea', 'bg', { 5CKEDITOR.plugins.setLang( 'sourcearea', 'bg', {
diff --git a/sources/plugins/sourcearea/lang/bn.js b/sources/plugins/sourcearea/lang/bn.js
index d09d00f..b050458 100644
--- a/sources/plugins/sourcearea/lang/bn.js
+++ b/sources/plugins/sourcearea/lang/bn.js
@@ -1,7 +1,7 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'sourcearea', 'bn', { 5CKEDITOR.plugins.setLang( 'sourcearea', 'bn', {
6 toolbar: '' 6 toolbar: 'স'
7} ); 7} );
diff --git a/sources/plugins/sourcearea/lang/bs.js b/sources/plugins/sourcearea/lang/bs.js
index a422d37..c0b5e09 100644
--- a/sources/plugins/sourcearea/lang/bs.js
+++ b/sources/plugins/sourcearea/lang/bs.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'sourcearea', 'bs', { 5CKEDITOR.plugins.setLang( 'sourcearea', 'bs', {
diff --git a/sources/plugins/sourcearea/lang/ca.js b/sources/plugins/sourcearea/lang/ca.js
index 791ca16..c958e9b 100644
--- a/sources/plugins/sourcearea/lang/ca.js
+++ b/sources/plugins/sourcearea/lang/ca.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'sourcearea', 'ca', { 5CKEDITOR.plugins.setLang( 'sourcearea', 'ca', {
diff --git a/sources/plugins/sourcearea/lang/cs.js b/sources/plugins/sourcearea/lang/cs.js
index acbd886..dccf574 100644
--- a/sources/plugins/sourcearea/lang/cs.js
+++ b/sources/plugins/sourcearea/lang/cs.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'sourcearea', 'cs', { 5CKEDITOR.plugins.setLang( 'sourcearea', 'cs', {
diff --git a/sources/plugins/sourcearea/lang/cy.js b/sources/plugins/sourcearea/lang/cy.js
index 4d2cd74..b8ce201 100644
--- a/sources/plugins/sourcearea/lang/cy.js
+++ b/sources/plugins/sourcearea/lang/cy.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'sourcearea', 'cy', { 5CKEDITOR.plugins.setLang( 'sourcearea', 'cy', {
diff --git a/sources/plugins/sourcearea/lang/da.js b/sources/plugins/sourcearea/lang/da.js
index e0a2dfd..bf02c14 100644
--- a/sources/plugins/sourcearea/lang/da.js
+++ b/sources/plugins/sourcearea/lang/da.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'sourcearea', 'da', { 5CKEDITOR.plugins.setLang( 'sourcearea', 'da', {
diff --git a/sources/plugins/sourcearea/lang/de-ch.js b/sources/plugins/sourcearea/lang/de-ch.js
index 37a859d..c039623 100644
--- a/sources/plugins/sourcearea/lang/de-ch.js
+++ b/sources/plugins/sourcearea/lang/de-ch.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'sourcearea', 'de-ch', { 5CKEDITOR.plugins.setLang( 'sourcearea', 'de-ch', {
diff --git a/sources/plugins/sourcearea/lang/de.js b/sources/plugins/sourcearea/lang/de.js
index 102461e..dfa995f 100644
--- a/sources/plugins/sourcearea/lang/de.js
+++ b/sources/plugins/sourcearea/lang/de.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'sourcearea', 'de', { 5CKEDITOR.plugins.setLang( 'sourcearea', 'de', {
diff --git a/sources/plugins/sourcearea/lang/el.js b/sources/plugins/sourcearea/lang/el.js
index e830f32..0a8d8a8 100644
--- a/sources/plugins/sourcearea/lang/el.js
+++ b/sources/plugins/sourcearea/lang/el.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'sourcearea', 'el', { 5CKEDITOR.plugins.setLang( 'sourcearea', 'el', {
diff --git a/sources/plugins/sourcearea/lang/en-au.js b/sources/plugins/sourcearea/lang/en-au.js
index ce7ac13..10e7843 100644
--- a/sources/plugins/sourcearea/lang/en-au.js
+++ b/sources/plugins/sourcearea/lang/en-au.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'sourcearea', 'en-au', { 5CKEDITOR.plugins.setLang( 'sourcearea', 'en-au', {
diff --git a/sources/plugins/sourcearea/lang/en-ca.js b/sources/plugins/sourcearea/lang/en-ca.js
index 302baa0..f5e61da 100644
--- a/sources/plugins/sourcearea/lang/en-ca.js
+++ b/sources/plugins/sourcearea/lang/en-ca.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'sourcearea', 'en-ca', { 5CKEDITOR.plugins.setLang( 'sourcearea', 'en-ca', {
diff --git a/sources/plugins/sourcearea/lang/en-gb.js b/sources/plugins/sourcearea/lang/en-gb.js
index a42e762..5d876aa 100644
--- a/sources/plugins/sourcearea/lang/en-gb.js
+++ b/sources/plugins/sourcearea/lang/en-gb.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'sourcearea', 'en-gb', { 5CKEDITOR.plugins.setLang( 'sourcearea', 'en-gb', {
diff --git a/sources/plugins/sourcearea/lang/en.js b/sources/plugins/sourcearea/lang/en.js
index fdf25a1..90a24e9 100644
--- a/sources/plugins/sourcearea/lang/en.js
+++ b/sources/plugins/sourcearea/lang/en.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'sourcearea', 'en', { 5CKEDITOR.plugins.setLang( 'sourcearea', 'en', {
diff --git a/sources/plugins/sourcearea/lang/eo.js b/sources/plugins/sourcearea/lang/eo.js
index 704bf6a..613de63 100644
--- a/sources/plugins/sourcearea/lang/eo.js
+++ b/sources/plugins/sourcearea/lang/eo.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'sourcearea', 'eo', { 5CKEDITOR.plugins.setLang( 'sourcearea', 'eo', {
diff --git a/sources/plugins/sourcearea/lang/es-mx.js b/sources/plugins/sourcearea/lang/es-mx.js
new file mode 100644
index 0000000..6dc6469
--- /dev/null
+++ b/sources/plugins/sourcearea/lang/es-mx.js
@@ -0,0 +1,7 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'sourcearea', 'es-mx', {
6 toolbar: 'Fuente'
7} );
diff --git a/sources/plugins/sourcearea/lang/es.js b/sources/plugins/sourcearea/lang/es.js
index ccca6ac..014a967 100644
--- a/sources/plugins/sourcearea/lang/es.js
+++ b/sources/plugins/sourcearea/lang/es.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'sourcearea', 'es', { 5CKEDITOR.plugins.setLang( 'sourcearea', 'es', {
diff --git a/sources/plugins/sourcearea/lang/et.js b/sources/plugins/sourcearea/lang/et.js
index c892cc3..9a73ece 100644
--- a/sources/plugins/sourcearea/lang/et.js
+++ b/sources/plugins/sourcearea/lang/et.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'sourcearea', 'et', { 5CKEDITOR.plugins.setLang( 'sourcearea', 'et', {
diff --git a/sources/plugins/sourcearea/lang/eu.js b/sources/plugins/sourcearea/lang/eu.js
index 95f2de6..350b3e2 100644
--- a/sources/plugins/sourcearea/lang/eu.js
+++ b/sources/plugins/sourcearea/lang/eu.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'sourcearea', 'eu', { 5CKEDITOR.plugins.setLang( 'sourcearea', 'eu', {
diff --git a/sources/plugins/sourcearea/lang/fa.js b/sources/plugins/sourcearea/lang/fa.js
index c5e7838..40757c0 100644
--- a/sources/plugins/sourcearea/lang/fa.js
+++ b/sources/plugins/sourcearea/lang/fa.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'sourcearea', 'fa', { 5CKEDITOR.plugins.setLang( 'sourcearea', 'fa', {
diff --git a/sources/plugins/sourcearea/lang/fi.js b/sources/plugins/sourcearea/lang/fi.js
index 6d0ef2f..fba260e 100644
--- a/sources/plugins/sourcearea/lang/fi.js
+++ b/sources/plugins/sourcearea/lang/fi.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'sourcearea', 'fi', { 5CKEDITOR.plugins.setLang( 'sourcearea', 'fi', {
diff --git a/sources/plugins/sourcearea/lang/fo.js b/sources/plugins/sourcearea/lang/fo.js
index 7dc96c9..f384c40 100644
--- a/sources/plugins/sourcearea/lang/fo.js
+++ b/sources/plugins/sourcearea/lang/fo.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'sourcearea', 'fo', { 5CKEDITOR.plugins.setLang( 'sourcearea', 'fo', {
diff --git a/sources/plugins/sourcearea/lang/fr-ca.js b/sources/plugins/sourcearea/lang/fr-ca.js
index 7e1f916..707686f 100644
--- a/sources/plugins/sourcearea/lang/fr-ca.js
+++ b/sources/plugins/sourcearea/lang/fr-ca.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'sourcearea', 'fr-ca', { 5CKEDITOR.plugins.setLang( 'sourcearea', 'fr-ca', {
diff --git a/sources/plugins/sourcearea/lang/fr.js b/sources/plugins/sourcearea/lang/fr.js
index 4aafadd..57d4f5f 100644
--- a/sources/plugins/sourcearea/lang/fr.js
+++ b/sources/plugins/sourcearea/lang/fr.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'sourcearea', 'fr', { 5CKEDITOR.plugins.setLang( 'sourcearea', 'fr', {
diff --git a/sources/plugins/sourcearea/lang/gl.js b/sources/plugins/sourcearea/lang/gl.js
index bebc380..c68a1da 100644
--- a/sources/plugins/sourcearea/lang/gl.js
+++ b/sources/plugins/sourcearea/lang/gl.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'sourcearea', 'gl', { 5CKEDITOR.plugins.setLang( 'sourcearea', 'gl', {
diff --git a/sources/plugins/sourcearea/lang/gu.js b/sources/plugins/sourcearea/lang/gu.js
index 890c949..a1c9b66 100644
--- a/sources/plugins/sourcearea/lang/gu.js
+++ b/sources/plugins/sourcearea/lang/gu.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'sourcearea', 'gu', { 5CKEDITOR.plugins.setLang( 'sourcearea', 'gu', {
diff --git a/sources/plugins/sourcearea/lang/he.js b/sources/plugins/sourcearea/lang/he.js
index 6012fa2..8b0f28d 100644
--- a/sources/plugins/sourcearea/lang/he.js
+++ b/sources/plugins/sourcearea/lang/he.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'sourcearea', 'he', { 5CKEDITOR.plugins.setLang( 'sourcearea', 'he', {
diff --git a/sources/plugins/sourcearea/lang/hi.js b/sources/plugins/sourcearea/lang/hi.js
index a60ec4f..0d8cc1b 100644
--- a/sources/plugins/sourcearea/lang/hi.js
+++ b/sources/plugins/sourcearea/lang/hi.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'sourcearea', 'hi', { 5CKEDITOR.plugins.setLang( 'sourcearea', 'hi', {
diff --git a/sources/plugins/sourcearea/lang/hr.js b/sources/plugins/sourcearea/lang/hr.js
index a33e9e7..dca2202 100644
--- a/sources/plugins/sourcearea/lang/hr.js
+++ b/sources/plugins/sourcearea/lang/hr.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'sourcearea', 'hr', { 5CKEDITOR.plugins.setLang( 'sourcearea', 'hr', {
diff --git a/sources/plugins/sourcearea/lang/hu.js b/sources/plugins/sourcearea/lang/hu.js
index 9177268..9628fe4 100644
--- a/sources/plugins/sourcearea/lang/hu.js
+++ b/sources/plugins/sourcearea/lang/hu.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'sourcearea', 'hu', { 5CKEDITOR.plugins.setLang( 'sourcearea', 'hu', {
diff --git a/sources/plugins/sourcearea/lang/id.js b/sources/plugins/sourcearea/lang/id.js
index ba31a81..f8e25c5 100644
--- a/sources/plugins/sourcearea/lang/id.js
+++ b/sources/plugins/sourcearea/lang/id.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'sourcearea', 'id', { 5CKEDITOR.plugins.setLang( 'sourcearea', 'id', {
diff --git a/sources/plugins/sourcearea/lang/is.js b/sources/plugins/sourcearea/lang/is.js
index 66b58bb..a90207d 100644
--- a/sources/plugins/sourcearea/lang/is.js
+++ b/sources/plugins/sourcearea/lang/is.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'sourcearea', 'is', { 5CKEDITOR.plugins.setLang( 'sourcearea', 'is', {
diff --git a/sources/plugins/sourcearea/lang/it.js b/sources/plugins/sourcearea/lang/it.js
index b6815da..b445a21 100644
--- a/sources/plugins/sourcearea/lang/it.js
+++ b/sources/plugins/sourcearea/lang/it.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'sourcearea', 'it', { 5CKEDITOR.plugins.setLang( 'sourcearea', 'it', {
diff --git a/sources/plugins/sourcearea/lang/ja.js b/sources/plugins/sourcearea/lang/ja.js
index 195730a..3f026b6 100644
--- a/sources/plugins/sourcearea/lang/ja.js
+++ b/sources/plugins/sourcearea/lang/ja.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'sourcearea', 'ja', { 5CKEDITOR.plugins.setLang( 'sourcearea', 'ja', {
diff --git a/sources/plugins/sourcearea/lang/ka.js b/sources/plugins/sourcearea/lang/ka.js
index 255951b..f06b130 100644
--- a/sources/plugins/sourcearea/lang/ka.js
+++ b/sources/plugins/sourcearea/lang/ka.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'sourcearea', 'ka', { 5CKEDITOR.plugins.setLang( 'sourcearea', 'ka', {
diff --git a/sources/plugins/sourcearea/lang/km.js b/sources/plugins/sourcearea/lang/km.js
index 05630c0..9cd4769 100644
--- a/sources/plugins/sourcearea/lang/km.js
+++ b/sources/plugins/sourcearea/lang/km.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'sourcearea', 'km', { 5CKEDITOR.plugins.setLang( 'sourcearea', 'km', {
diff --git a/sources/plugins/sourcearea/lang/ko.js b/sources/plugins/sourcearea/lang/ko.js
index 535f6a1..26fe7ff 100644
--- a/sources/plugins/sourcearea/lang/ko.js
+++ b/sources/plugins/sourcearea/lang/ko.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'sourcearea', 'ko', { 5CKEDITOR.plugins.setLang( 'sourcearea', 'ko', {
diff --git a/sources/plugins/sourcearea/lang/ku.js b/sources/plugins/sourcearea/lang/ku.js
index 21c6ace..a3f1263 100644
--- a/sources/plugins/sourcearea/lang/ku.js
+++ b/sources/plugins/sourcearea/lang/ku.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'sourcearea', 'ku', { 5CKEDITOR.plugins.setLang( 'sourcearea', 'ku', {
diff --git a/sources/plugins/sourcearea/lang/lt.js b/sources/plugins/sourcearea/lang/lt.js
index 99f4ef6..c3304dc 100644
--- a/sources/plugins/sourcearea/lang/lt.js
+++ b/sources/plugins/sourcearea/lang/lt.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'sourcearea', 'lt', { 5CKEDITOR.plugins.setLang( 'sourcearea', 'lt', {
diff --git a/sources/plugins/sourcearea/lang/lv.js b/sources/plugins/sourcearea/lang/lv.js
index fb155cd..c3ef246 100644
--- a/sources/plugins/sourcearea/lang/lv.js
+++ b/sources/plugins/sourcearea/lang/lv.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'sourcearea', 'lv', { 5CKEDITOR.plugins.setLang( 'sourcearea', 'lv', {
diff --git a/sources/plugins/sourcearea/lang/mk.js b/sources/plugins/sourcearea/lang/mk.js
index 37135a1..eeccabd 100644
--- a/sources/plugins/sourcearea/lang/mk.js
+++ b/sources/plugins/sourcearea/lang/mk.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'sourcearea', 'mk', { 5CKEDITOR.plugins.setLang( 'sourcearea', 'mk', {
diff --git a/sources/plugins/sourcearea/lang/mn.js b/sources/plugins/sourcearea/lang/mn.js
index 72c0b38..a7c1288 100644
--- a/sources/plugins/sourcearea/lang/mn.js
+++ b/sources/plugins/sourcearea/lang/mn.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'sourcearea', 'mn', { 5CKEDITOR.plugins.setLang( 'sourcearea', 'mn', {
diff --git a/sources/plugins/sourcearea/lang/ms.js b/sources/plugins/sourcearea/lang/ms.js
index 1ef521b..f09ac53 100644
--- a/sources/plugins/sourcearea/lang/ms.js
+++ b/sources/plugins/sourcearea/lang/ms.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'sourcearea', 'ms', { 5CKEDITOR.plugins.setLang( 'sourcearea', 'ms', {
diff --git a/sources/plugins/sourcearea/lang/nb.js b/sources/plugins/sourcearea/lang/nb.js
index 66182bf..87b75a8 100644
--- a/sources/plugins/sourcearea/lang/nb.js
+++ b/sources/plugins/sourcearea/lang/nb.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'sourcearea', 'nb', { 5CKEDITOR.plugins.setLang( 'sourcearea', 'nb', {
diff --git a/sources/plugins/sourcearea/lang/nl.js b/sources/plugins/sourcearea/lang/nl.js
index 89d2d3c..dc61f34 100644
--- a/sources/plugins/sourcearea/lang/nl.js
+++ b/sources/plugins/sourcearea/lang/nl.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'sourcearea', 'nl', { 5CKEDITOR.plugins.setLang( 'sourcearea', 'nl', {
diff --git a/sources/plugins/sourcearea/lang/no.js b/sources/plugins/sourcearea/lang/no.js
index 81db8ce..86f386d 100644
--- a/sources/plugins/sourcearea/lang/no.js
+++ b/sources/plugins/sourcearea/lang/no.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'sourcearea', 'no', { 5CKEDITOR.plugins.setLang( 'sourcearea', 'no', {
diff --git a/sources/plugins/sourcearea/lang/oc.js b/sources/plugins/sourcearea/lang/oc.js
new file mode 100644
index 0000000..90f418f
--- /dev/null
+++ b/sources/plugins/sourcearea/lang/oc.js
@@ -0,0 +1,7 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'sourcearea', 'oc', {
6 toolbar: 'Font'
7} );
diff --git a/sources/plugins/sourcearea/lang/pl.js b/sources/plugins/sourcearea/lang/pl.js
index 05bebe8..48734a8 100644
--- a/sources/plugins/sourcearea/lang/pl.js
+++ b/sources/plugins/sourcearea/lang/pl.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'sourcearea', 'pl', { 5CKEDITOR.plugins.setLang( 'sourcearea', 'pl', {
diff --git a/sources/plugins/sourcearea/lang/pt-br.js b/sources/plugins/sourcearea/lang/pt-br.js
index 663f25b..54e3ce1 100644
--- a/sources/plugins/sourcearea/lang/pt-br.js
+++ b/sources/plugins/sourcearea/lang/pt-br.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'sourcearea', 'pt-br', { 5CKEDITOR.plugins.setLang( 'sourcearea', 'pt-br', {
diff --git a/sources/plugins/sourcearea/lang/pt.js b/sources/plugins/sourcearea/lang/pt.js
index 9d97358..7fd6c23 100644
--- a/sources/plugins/sourcearea/lang/pt.js
+++ b/sources/plugins/sourcearea/lang/pt.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'sourcearea', 'pt', { 5CKEDITOR.plugins.setLang( 'sourcearea', 'pt', {
diff --git a/sources/plugins/sourcearea/lang/ro.js b/sources/plugins/sourcearea/lang/ro.js
index f8e3479..5eb00c4 100644
--- a/sources/plugins/sourcearea/lang/ro.js
+++ b/sources/plugins/sourcearea/lang/ro.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'sourcearea', 'ro', { 5CKEDITOR.plugins.setLang( 'sourcearea', 'ro', {
diff --git a/sources/plugins/sourcearea/lang/ru.js b/sources/plugins/sourcearea/lang/ru.js
index 2f4299f..304695c 100644
--- a/sources/plugins/sourcearea/lang/ru.js
+++ b/sources/plugins/sourcearea/lang/ru.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'sourcearea', 'ru', { 5CKEDITOR.plugins.setLang( 'sourcearea', 'ru', {
diff --git a/sources/plugins/sourcearea/lang/si.js b/sources/plugins/sourcearea/lang/si.js
index 30dc6aa..22996eb 100644
--- a/sources/plugins/sourcearea/lang/si.js
+++ b/sources/plugins/sourcearea/lang/si.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'sourcearea', 'si', { 5CKEDITOR.plugins.setLang( 'sourcearea', 'si', {
diff --git a/sources/plugins/sourcearea/lang/sk.js b/sources/plugins/sourcearea/lang/sk.js
index 7b487a3..aed1c61 100644
--- a/sources/plugins/sourcearea/lang/sk.js
+++ b/sources/plugins/sourcearea/lang/sk.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'sourcearea', 'sk', { 5CKEDITOR.plugins.setLang( 'sourcearea', 'sk', {
diff --git a/sources/plugins/sourcearea/lang/sl.js b/sources/plugins/sourcearea/lang/sl.js
index 05a9539..b9a2b5f 100644
--- a/sources/plugins/sourcearea/lang/sl.js
+++ b/sources/plugins/sourcearea/lang/sl.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'sourcearea', 'sl', { 5CKEDITOR.plugins.setLang( 'sourcearea', 'sl', {
diff --git a/sources/plugins/sourcearea/lang/sq.js b/sources/plugins/sourcearea/lang/sq.js
index 989267d..f4512ce 100644
--- a/sources/plugins/sourcearea/lang/sq.js
+++ b/sources/plugins/sourcearea/lang/sq.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'sourcearea', 'sq', { 5CKEDITOR.plugins.setLang( 'sourcearea', 'sq', {
diff --git a/sources/plugins/sourcearea/lang/sr-latn.js b/sources/plugins/sourcearea/lang/sr-latn.js
index 6084786..0d8ebd7 100644
--- a/sources/plugins/sourcearea/lang/sr-latn.js
+++ b/sources/plugins/sourcearea/lang/sr-latn.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'sourcearea', 'sr-latn', { 5CKEDITOR.plugins.setLang( 'sourcearea', 'sr-latn', {
diff --git a/sources/plugins/sourcearea/lang/sr.js b/sources/plugins/sourcearea/lang/sr.js
index 78599cb..a872556 100644
--- a/sources/plugins/sourcearea/lang/sr.js
+++ b/sources/plugins/sourcearea/lang/sr.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'sourcearea', 'sr', { 5CKEDITOR.plugins.setLang( 'sourcearea', 'sr', {
diff --git a/sources/plugins/sourcearea/lang/sv.js b/sources/plugins/sourcearea/lang/sv.js
index 571cf07..a05d49d 100644
--- a/sources/plugins/sourcearea/lang/sv.js
+++ b/sources/plugins/sourcearea/lang/sv.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'sourcearea', 'sv', { 5CKEDITOR.plugins.setLang( 'sourcearea', 'sv', {
diff --git a/sources/plugins/sourcearea/lang/th.js b/sources/plugins/sourcearea/lang/th.js
index aa6427d..4afb9bc 100644
--- a/sources/plugins/sourcearea/lang/th.js
+++ b/sources/plugins/sourcearea/lang/th.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'sourcearea', 'th', { 5CKEDITOR.plugins.setLang( 'sourcearea', 'th', {
diff --git a/sources/plugins/sourcearea/lang/tr.js b/sources/plugins/sourcearea/lang/tr.js
index 54cc744..7a9f70a 100644
--- a/sources/plugins/sourcearea/lang/tr.js
+++ b/sources/plugins/sourcearea/lang/tr.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'sourcearea', 'tr', { 5CKEDITOR.plugins.setLang( 'sourcearea', 'tr', {
diff --git a/sources/plugins/sourcearea/lang/tt.js b/sources/plugins/sourcearea/lang/tt.js
index 964102f..ca05df1 100644
--- a/sources/plugins/sourcearea/lang/tt.js
+++ b/sources/plugins/sourcearea/lang/tt.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'sourcearea', 'tt', { 5CKEDITOR.plugins.setLang( 'sourcearea', 'tt', {
diff --git a/sources/plugins/sourcearea/lang/ug.js b/sources/plugins/sourcearea/lang/ug.js
index de30435..791c596 100644
--- a/sources/plugins/sourcearea/lang/ug.js
+++ b/sources/plugins/sourcearea/lang/ug.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'sourcearea', 'ug', { 5CKEDITOR.plugins.setLang( 'sourcearea', 'ug', {
diff --git a/sources/plugins/sourcearea/lang/uk.js b/sources/plugins/sourcearea/lang/uk.js
index f9eea57..905af47 100644
--- a/sources/plugins/sourcearea/lang/uk.js
+++ b/sources/plugins/sourcearea/lang/uk.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'sourcearea', 'uk', { 5CKEDITOR.plugins.setLang( 'sourcearea', 'uk', {
diff --git a/sources/plugins/sourcearea/lang/vi.js b/sources/plugins/sourcearea/lang/vi.js
index 23f8bef..df7eb93 100644
--- a/sources/plugins/sourcearea/lang/vi.js
+++ b/sources/plugins/sourcearea/lang/vi.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'sourcearea', 'vi', { 5CKEDITOR.plugins.setLang( 'sourcearea', 'vi', {
diff --git a/sources/plugins/sourcearea/lang/zh-cn.js b/sources/plugins/sourcearea/lang/zh-cn.js
index 1bff533..a98c869 100644
--- a/sources/plugins/sourcearea/lang/zh-cn.js
+++ b/sources/plugins/sourcearea/lang/zh-cn.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'sourcearea', 'zh-cn', { 5CKEDITOR.plugins.setLang( 'sourcearea', 'zh-cn', {
diff --git a/sources/plugins/sourcearea/lang/zh.js b/sources/plugins/sourcearea/lang/zh.js
index 2268151..043dd11 100644
--- a/sources/plugins/sourcearea/lang/zh.js
+++ b/sources/plugins/sourcearea/lang/zh.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'sourcearea', 'zh', { 5CKEDITOR.plugins.setLang( 'sourcearea', 'zh', {
diff --git a/sources/plugins/sourcearea/plugin.js b/sources/plugins/sourcearea/plugin.js
index 7c9ac88..09745be 100644
--- a/sources/plugins/sourcearea/plugin.js
+++ b/sources/plugins/sourcearea/plugin.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -11,7 +11,7 @@
11( function() { 11( function() {
12 CKEDITOR.plugins.add( 'sourcearea', { 12 CKEDITOR.plugins.add( 'sourcearea', {
13 // jscs:disable maximumLineLength 13 // jscs:disable maximumLineLength
14 lang: 'af,ar,bg,bn,bs,ca,cs,cy,da,de,de-ch,el,en,en-au,en-ca,en-gb,eo,es,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,pl,pt,pt-br,ro,ru,si,sk,sl,sq,sr,sr-latn,sv,th,tr,tt,ug,uk,vi,zh,zh-cn', // %REMOVE_LINE_CORE% 14 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', // %REMOVE_LINE_CORE%
15 // jscs:enable maximumLineLength 15 // jscs:enable maximumLineLength
16 icons: 'source,source-rtl', // %REMOVE_LINE_CORE% 16 icons: 'source,source-rtl', // %REMOVE_LINE_CORE%
17 hidpi: true, // %REMOVE_LINE_CORE% 17 hidpi: true, // %REMOVE_LINE_CORE%
@@ -38,7 +38,7 @@
38 CKEDITOR.tools.cssVendorPrefix( 'tab-size', editor.config.sourceAreaTabSize || 4 ) ) ); 38 CKEDITOR.tools.cssVendorPrefix( 'tab-size', editor.config.sourceAreaTabSize || 4 ) ) );
39 39
40 // Make sure that source code is always displayed LTR, 40 // Make sure that source code is always displayed LTR,
41 // regardless of editor language (#10105). 41 // regardless of editor language (http://dev.ckeditor.com/ticket/10105).
42 textarea.setAttribute( 'dir', 'ltr' ); 42 textarea.setAttribute( 'dir', 'ltr' );
43 43
44 textarea.addClass( 'cke_source' ).addClass( 'cke_reset' ).addClass( 'cke_enable_context_menu' ); 44 textarea.addClass( 'cke_source' ).addClass( 'cke_reset' ).addClass( 'cke_enable_context_menu' );
@@ -53,7 +53,7 @@
53 // Having to make <textarea> fixed sized to conquer the following bugs: 53 // Having to make <textarea> fixed sized to conquer the following bugs:
54 // 1. The textarea height/width='100%' doesn't constraint to the 'td' in IE6/7. 54 // 1. The textarea height/width='100%' doesn't constraint to the 'td' in IE6/7.
55 // 2. Unexpected vertical-scrolling behavior happens whenever focus is moving out of editor 55 // 2. Unexpected vertical-scrolling behavior happens whenever focus is moving out of editor
56 // if text content within it has overflowed. (#4762) 56 // if text content within it has overflowed. (http://dev.ckeditor.com/ticket/4762)
57 if ( CKEDITOR.env.ie ) { 57 if ( CKEDITOR.env.ie ) {
58 editable.attachListener( editor, 'resize', onResize, editable ); 58 editable.attachListener( editor, 'resize', onResize, editable );
59 editable.attachListener( CKEDITOR.document.getWindow(), 'resize', onResize, editable ); 59 editable.attachListener( CKEDITOR.document.getWindow(), 'resize', onResize, editable );
@@ -83,7 +83,7 @@
83 83
84 function onResize() { 84 function onResize() {
85 // We have to do something with focus on IE9, because if sourcearea had focus 85 // We have to do something with focus on IE9, because if sourcearea had focus
86 // before being resized, the caret ends somewhere in the editor UI (#11839). 86 // before being resized, the caret ends somewhere in the editor UI (http://dev.ckeditor.com/ticket/11839).
87 var wasActive = needsFocusHack && this.equals( CKEDITOR.document.getActive() ); 87 var wasActive = needsFocusHack && this.equals( CKEDITOR.document.getActive() );
88 88
89 // Holder rectange size is stretched by textarea, 89 // Holder rectange size is stretched by textarea,
diff --git a/sources/plugins/tab/plugin.js b/sources/plugins/tab/plugin.js
index cd61b97..98acb2e 100644
--- a/sources/plugins/tab/plugin.js
+++ b/sources/plugins/tab/plugin.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/plugins/toolbar/lang/af.js b/sources/plugins/toolbar/lang/af.js
index 370cf6b..8a3b1cd 100644
--- a/sources/plugins/toolbar/lang/af.js
+++ b/sources/plugins/toolbar/lang/af.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'toolbar', 'af', { 5CKEDITOR.plugins.setLang( 'toolbar', 'af', {
diff --git a/sources/plugins/toolbar/lang/ar.js b/sources/plugins/toolbar/lang/ar.js
index ecced64..8cef5e7 100644
--- a/sources/plugins/toolbar/lang/ar.js
+++ b/sources/plugins/toolbar/lang/ar.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'toolbar', 'ar', { 5CKEDITOR.plugins.setLang( 'toolbar', 'ar', {
diff --git a/sources/plugins/toolbar/lang/az.js b/sources/plugins/toolbar/lang/az.js
new file mode 100644
index 0000000..25c4a53
--- /dev/null
+++ b/sources/plugins/toolbar/lang/az.js
@@ -0,0 +1,22 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'toolbar', 'az', {
6 toolbarCollapse: 'Paneli gizlət',
7 toolbarExpand: 'Paneli göstər',
8 toolbarGroups: {
9 document: 'Mətn',
10 clipboard: 'Mübadilə buferi/İmtina et',
11 editing: 'Redaktə edilməsi',
12 forms: 'Formalar',
13 basicstyles: 'Əsas üslublar',
14 paragraph: 'Abzas',
15 links: 'Link',
16 insert: 'Əlavə et',
17 styles: 'Üslublar',
18 colors: 'Rənqlər',
19 tools: 'Alətləri'
20 },
21 toolbars: 'Redaktorun panelləri'
22} );
diff --git a/sources/plugins/toolbar/lang/bg.js b/sources/plugins/toolbar/lang/bg.js
index f256ca9..0fb4384 100644
--- a/sources/plugins/toolbar/lang/bg.js
+++ b/sources/plugins/toolbar/lang/bg.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'toolbar', 'bg', { 5CKEDITOR.plugins.setLang( 'toolbar', 'bg', {
diff --git a/sources/plugins/toolbar/lang/bn.js b/sources/plugins/toolbar/lang/bn.js
index c59c2ed..dc9697e 100644
--- a/sources/plugins/toolbar/lang/bn.js
+++ b/sources/plugins/toolbar/lang/bn.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'toolbar', 'bn', { 5CKEDITOR.plugins.setLang( 'toolbar', 'bn', {
diff --git a/sources/plugins/toolbar/lang/bs.js b/sources/plugins/toolbar/lang/bs.js
index db3f43b..00f46d0 100644
--- a/sources/plugins/toolbar/lang/bs.js
+++ b/sources/plugins/toolbar/lang/bs.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'toolbar', 'bs', { 5CKEDITOR.plugins.setLang( 'toolbar', 'bs', {
diff --git a/sources/plugins/toolbar/lang/ca.js b/sources/plugins/toolbar/lang/ca.js
index 45cef50..82e4413 100644
--- a/sources/plugins/toolbar/lang/ca.js
+++ b/sources/plugins/toolbar/lang/ca.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'toolbar', 'ca', { 5CKEDITOR.plugins.setLang( 'toolbar', 'ca', {
diff --git a/sources/plugins/toolbar/lang/cs.js b/sources/plugins/toolbar/lang/cs.js
index 1e92738..f8e650f 100644
--- a/sources/plugins/toolbar/lang/cs.js
+++ b/sources/plugins/toolbar/lang/cs.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'toolbar', 'cs', { 5CKEDITOR.plugins.setLang( 'toolbar', 'cs', {
diff --git a/sources/plugins/toolbar/lang/cy.js b/sources/plugins/toolbar/lang/cy.js
index 2ce92fa..faebd1b 100644
--- a/sources/plugins/toolbar/lang/cy.js
+++ b/sources/plugins/toolbar/lang/cy.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'toolbar', 'cy', { 5CKEDITOR.plugins.setLang( 'toolbar', 'cy', {
diff --git a/sources/plugins/toolbar/lang/da.js b/sources/plugins/toolbar/lang/da.js
index a36a1a5..750bc64 100644
--- a/sources/plugins/toolbar/lang/da.js
+++ b/sources/plugins/toolbar/lang/da.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'toolbar', 'da', { 5CKEDITOR.plugins.setLang( 'toolbar', 'da', {
diff --git a/sources/plugins/toolbar/lang/de-ch.js b/sources/plugins/toolbar/lang/de-ch.js
index 1f23f24..399aa63 100644
--- a/sources/plugins/toolbar/lang/de-ch.js
+++ b/sources/plugins/toolbar/lang/de-ch.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'toolbar', 'de-ch', { 5CKEDITOR.plugins.setLang( 'toolbar', 'de-ch', {
diff --git a/sources/plugins/toolbar/lang/de.js b/sources/plugins/toolbar/lang/de.js
index 0b1d4ba..fab73aa 100644
--- a/sources/plugins/toolbar/lang/de.js
+++ b/sources/plugins/toolbar/lang/de.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'toolbar', 'de', { 5CKEDITOR.plugins.setLang( 'toolbar', 'de', {
diff --git a/sources/plugins/toolbar/lang/el.js b/sources/plugins/toolbar/lang/el.js
index b5bd212..ce46898 100644
--- a/sources/plugins/toolbar/lang/el.js
+++ b/sources/plugins/toolbar/lang/el.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'toolbar', 'el', { 5CKEDITOR.plugins.setLang( 'toolbar', 'el', {
diff --git a/sources/plugins/toolbar/lang/en-au.js b/sources/plugins/toolbar/lang/en-au.js
index afa15d1..8517e62 100644
--- a/sources/plugins/toolbar/lang/en-au.js
+++ b/sources/plugins/toolbar/lang/en-au.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'toolbar', 'en-au', { 5CKEDITOR.plugins.setLang( 'toolbar', 'en-au', {
diff --git a/sources/plugins/toolbar/lang/en-ca.js b/sources/plugins/toolbar/lang/en-ca.js
index 4dc04a8..fb2049a 100644
--- a/sources/plugins/toolbar/lang/en-ca.js
+++ b/sources/plugins/toolbar/lang/en-ca.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'toolbar', 'en-ca', { 5CKEDITOR.plugins.setLang( 'toolbar', 'en-ca', {
diff --git a/sources/plugins/toolbar/lang/en-gb.js b/sources/plugins/toolbar/lang/en-gb.js
index 14993a5..df7198e 100644
--- a/sources/plugins/toolbar/lang/en-gb.js
+++ b/sources/plugins/toolbar/lang/en-gb.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'toolbar', 'en-gb', { 5CKEDITOR.plugins.setLang( 'toolbar', 'en-gb', {
diff --git a/sources/plugins/toolbar/lang/en.js b/sources/plugins/toolbar/lang/en.js
index eeacf38..263ac0e 100644
--- a/sources/plugins/toolbar/lang/en.js
+++ b/sources/plugins/toolbar/lang/en.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'toolbar', 'en', { 5CKEDITOR.plugins.setLang( 'toolbar', 'en', {
diff --git a/sources/plugins/toolbar/lang/eo.js b/sources/plugins/toolbar/lang/eo.js
index 53f2439..902a613 100644
--- a/sources/plugins/toolbar/lang/eo.js
+++ b/sources/plugins/toolbar/lang/eo.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'toolbar', 'eo', { 5CKEDITOR.plugins.setLang( 'toolbar', 'eo', {
diff --git a/sources/plugins/toolbar/lang/es-mx.js b/sources/plugins/toolbar/lang/es-mx.js
new file mode 100644
index 0000000..4af52fe
--- /dev/null
+++ b/sources/plugins/toolbar/lang/es-mx.js
@@ -0,0 +1,22 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'toolbar', 'es-mx', {
6 toolbarCollapse: 'Colapsar barra de herramientas',
7 toolbarExpand: 'Expandir barra de herramientas',
8 toolbarGroups: {
9 document: 'Documento',
10 clipboard: 'Portapapeles/deshacer',
11 editing: 'Editando',
12 forms: 'Formularios',
13 basicstyles: 'Estilo básico',
14 paragraph: 'Párrafo',
15 links: 'Enlaces',
16 insert: 'Insertar',
17 styles: 'Estilos',
18 colors: 'Colores',
19 tools: 'Herramientas'
20 },
21 toolbars: 'Editor de barra de herramientas'
22} );
diff --git a/sources/plugins/toolbar/lang/es.js b/sources/plugins/toolbar/lang/es.js
index d00ca66..bf5b457 100644
--- a/sources/plugins/toolbar/lang/es.js
+++ b/sources/plugins/toolbar/lang/es.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'toolbar', 'es', { 5CKEDITOR.plugins.setLang( 'toolbar', 'es', {
diff --git a/sources/plugins/toolbar/lang/et.js b/sources/plugins/toolbar/lang/et.js
index 034aac3..b83473f 100644
--- a/sources/plugins/toolbar/lang/et.js
+++ b/sources/plugins/toolbar/lang/et.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'toolbar', 'et', { 5CKEDITOR.plugins.setLang( 'toolbar', 'et', {
diff --git a/sources/plugins/toolbar/lang/eu.js b/sources/plugins/toolbar/lang/eu.js
index 6ab3973..831d285 100644
--- a/sources/plugins/toolbar/lang/eu.js
+++ b/sources/plugins/toolbar/lang/eu.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'toolbar', 'eu', { 5CKEDITOR.plugins.setLang( 'toolbar', 'eu', {
diff --git a/sources/plugins/toolbar/lang/fa.js b/sources/plugins/toolbar/lang/fa.js
index 30d302c..2d1bc5d 100644
--- a/sources/plugins/toolbar/lang/fa.js
+++ b/sources/plugins/toolbar/lang/fa.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'toolbar', 'fa', { 5CKEDITOR.plugins.setLang( 'toolbar', 'fa', {
diff --git a/sources/plugins/toolbar/lang/fi.js b/sources/plugins/toolbar/lang/fi.js
index 2eb42bd..9e12ad4 100644
--- a/sources/plugins/toolbar/lang/fi.js
+++ b/sources/plugins/toolbar/lang/fi.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'toolbar', 'fi', { 5CKEDITOR.plugins.setLang( 'toolbar', 'fi', {
diff --git a/sources/plugins/toolbar/lang/fo.js b/sources/plugins/toolbar/lang/fo.js
index 93c859d..4628b5d 100644
--- a/sources/plugins/toolbar/lang/fo.js
+++ b/sources/plugins/toolbar/lang/fo.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'toolbar', 'fo', { 5CKEDITOR.plugins.setLang( 'toolbar', 'fo', {
diff --git a/sources/plugins/toolbar/lang/fr-ca.js b/sources/plugins/toolbar/lang/fr-ca.js
index 06baacf..4aae863 100644
--- a/sources/plugins/toolbar/lang/fr-ca.js
+++ b/sources/plugins/toolbar/lang/fr-ca.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'toolbar', 'fr-ca', { 5CKEDITOR.plugins.setLang( 'toolbar', 'fr-ca', {
diff --git a/sources/plugins/toolbar/lang/fr.js b/sources/plugins/toolbar/lang/fr.js
index ec8a2aa..9861866 100644
--- a/sources/plugins/toolbar/lang/fr.js
+++ b/sources/plugins/toolbar/lang/fr.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'toolbar', 'fr', { 5CKEDITOR.plugins.setLang( 'toolbar', 'fr', {
@@ -8,7 +8,7 @@ CKEDITOR.plugins.setLang( 'toolbar', 'fr', {
8 toolbarGroups: { 8 toolbarGroups: {
9 document: 'Document', 9 document: 'Document',
10 clipboard: 'Presse-papier/Défaire', 10 clipboard: 'Presse-papier/Défaire',
11 editing: 'Editer', 11 editing: 'Édition',
12 forms: 'Formulaires', 12 forms: 'Formulaires',
13 basicstyles: 'Styles de base', 13 basicstyles: 'Styles de base',
14 paragraph: 'Paragraphe', 14 paragraph: 'Paragraphe',
@@ -18,5 +18,5 @@ CKEDITOR.plugins.setLang( 'toolbar', 'fr', {
18 colors: 'Couleurs', 18 colors: 'Couleurs',
19 tools: 'Outils' 19 tools: 'Outils'
20 }, 20 },
21 toolbars: 'Barre d\'outils de l\'éditeur' 21 toolbars: 'Barres d\'outils de l\'éditeur'
22} ); 22} );
diff --git a/sources/plugins/toolbar/lang/gl.js b/sources/plugins/toolbar/lang/gl.js
index a9517be..f81c10a 100644
--- a/sources/plugins/toolbar/lang/gl.js
+++ b/sources/plugins/toolbar/lang/gl.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'toolbar', 'gl', { 5CKEDITOR.plugins.setLang( 'toolbar', 'gl', {
diff --git a/sources/plugins/toolbar/lang/gu.js b/sources/plugins/toolbar/lang/gu.js
index 65df646..f34879b 100644
--- a/sources/plugins/toolbar/lang/gu.js
+++ b/sources/plugins/toolbar/lang/gu.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'toolbar', 'gu', { 5CKEDITOR.plugins.setLang( 'toolbar', 'gu', {
diff --git a/sources/plugins/toolbar/lang/he.js b/sources/plugins/toolbar/lang/he.js
index 2de8d23..8e6f343 100644
--- a/sources/plugins/toolbar/lang/he.js
+++ b/sources/plugins/toolbar/lang/he.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'toolbar', 'he', { 5CKEDITOR.plugins.setLang( 'toolbar', 'he', {
diff --git a/sources/plugins/toolbar/lang/hi.js b/sources/plugins/toolbar/lang/hi.js
index 99a601f..7693fa1 100644
--- a/sources/plugins/toolbar/lang/hi.js
+++ b/sources/plugins/toolbar/lang/hi.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'toolbar', 'hi', { 5CKEDITOR.plugins.setLang( 'toolbar', 'hi', {
diff --git a/sources/plugins/toolbar/lang/hr.js b/sources/plugins/toolbar/lang/hr.js
index b636415..1928251 100644
--- a/sources/plugins/toolbar/lang/hr.js
+++ b/sources/plugins/toolbar/lang/hr.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'toolbar', 'hr', { 5CKEDITOR.plugins.setLang( 'toolbar', 'hr', {
diff --git a/sources/plugins/toolbar/lang/hu.js b/sources/plugins/toolbar/lang/hu.js
index e40d853..fb67175 100644
--- a/sources/plugins/toolbar/lang/hu.js
+++ b/sources/plugins/toolbar/lang/hu.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'toolbar', 'hu', { 5CKEDITOR.plugins.setLang( 'toolbar', 'hu', {
diff --git a/sources/plugins/toolbar/lang/id.js b/sources/plugins/toolbar/lang/id.js
index fc56bba..c993a72 100644
--- a/sources/plugins/toolbar/lang/id.js
+++ b/sources/plugins/toolbar/lang/id.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'toolbar', 'id', { 5CKEDITOR.plugins.setLang( 'toolbar', 'id', {
diff --git a/sources/plugins/toolbar/lang/is.js b/sources/plugins/toolbar/lang/is.js
index da0617a..a5fc159 100644
--- a/sources/plugins/toolbar/lang/is.js
+++ b/sources/plugins/toolbar/lang/is.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'toolbar', 'is', { 5CKEDITOR.plugins.setLang( 'toolbar', 'is', {
diff --git a/sources/plugins/toolbar/lang/it.js b/sources/plugins/toolbar/lang/it.js
index e5e5a0f..42099cd 100644
--- a/sources/plugins/toolbar/lang/it.js
+++ b/sources/plugins/toolbar/lang/it.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'toolbar', 'it', { 5CKEDITOR.plugins.setLang( 'toolbar', 'it', {
diff --git a/sources/plugins/toolbar/lang/ja.js b/sources/plugins/toolbar/lang/ja.js
index 0359199..49bfcd0 100644
--- a/sources/plugins/toolbar/lang/ja.js
+++ b/sources/plugins/toolbar/lang/ja.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'toolbar', 'ja', { 5CKEDITOR.plugins.setLang( 'toolbar', 'ja', {
diff --git a/sources/plugins/toolbar/lang/ka.js b/sources/plugins/toolbar/lang/ka.js
index 48ef4a4..f1a46cb 100644
--- a/sources/plugins/toolbar/lang/ka.js
+++ b/sources/plugins/toolbar/lang/ka.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'toolbar', 'ka', { 5CKEDITOR.plugins.setLang( 'toolbar', 'ka', {
diff --git a/sources/plugins/toolbar/lang/km.js b/sources/plugins/toolbar/lang/km.js
index 4ceb278..3b0eb05 100644
--- a/sources/plugins/toolbar/lang/km.js
+++ b/sources/plugins/toolbar/lang/km.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'toolbar', 'km', { 5CKEDITOR.plugins.setLang( 'toolbar', 'km', {
diff --git a/sources/plugins/toolbar/lang/ko.js b/sources/plugins/toolbar/lang/ko.js
index 323b9b3..dc5a674 100644
--- a/sources/plugins/toolbar/lang/ko.js
+++ b/sources/plugins/toolbar/lang/ko.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'toolbar', 'ko', { 5CKEDITOR.plugins.setLang( 'toolbar', 'ko', {
diff --git a/sources/plugins/toolbar/lang/ku.js b/sources/plugins/toolbar/lang/ku.js
index 4b7cfec..02f8f91 100644
--- a/sources/plugins/toolbar/lang/ku.js
+++ b/sources/plugins/toolbar/lang/ku.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'toolbar', 'ku', { 5CKEDITOR.plugins.setLang( 'toolbar', 'ku', {
diff --git a/sources/plugins/toolbar/lang/lt.js b/sources/plugins/toolbar/lang/lt.js
index 2950ff2..b705d6f 100644
--- a/sources/plugins/toolbar/lang/lt.js
+++ b/sources/plugins/toolbar/lang/lt.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'toolbar', 'lt', { 5CKEDITOR.plugins.setLang( 'toolbar', 'lt', {
diff --git a/sources/plugins/toolbar/lang/lv.js b/sources/plugins/toolbar/lang/lv.js
index a57a31e..20dd345 100644
--- a/sources/plugins/toolbar/lang/lv.js
+++ b/sources/plugins/toolbar/lang/lv.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'toolbar', 'lv', { 5CKEDITOR.plugins.setLang( 'toolbar', 'lv', {
diff --git a/sources/plugins/toolbar/lang/mk.js b/sources/plugins/toolbar/lang/mk.js
index 9c5eeaa..e85581d 100644
--- a/sources/plugins/toolbar/lang/mk.js
+++ b/sources/plugins/toolbar/lang/mk.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'toolbar', 'mk', { 5CKEDITOR.plugins.setLang( 'toolbar', 'mk', {
diff --git a/sources/plugins/toolbar/lang/mn.js b/sources/plugins/toolbar/lang/mn.js
index b3f42e2..5aeb46b 100644
--- a/sources/plugins/toolbar/lang/mn.js
+++ b/sources/plugins/toolbar/lang/mn.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'toolbar', 'mn', { 5CKEDITOR.plugins.setLang( 'toolbar', 'mn', {
diff --git a/sources/plugins/toolbar/lang/ms.js b/sources/plugins/toolbar/lang/ms.js
index 3f095cf..7b78dc6 100644
--- a/sources/plugins/toolbar/lang/ms.js
+++ b/sources/plugins/toolbar/lang/ms.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'toolbar', 'ms', { 5CKEDITOR.plugins.setLang( 'toolbar', 'ms', {
diff --git a/sources/plugins/toolbar/lang/nb.js b/sources/plugins/toolbar/lang/nb.js
index 54d47ee..830143a 100644
--- a/sources/plugins/toolbar/lang/nb.js
+++ b/sources/plugins/toolbar/lang/nb.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'toolbar', 'nb', { 5CKEDITOR.plugins.setLang( 'toolbar', 'nb', {
diff --git a/sources/plugins/toolbar/lang/nl.js b/sources/plugins/toolbar/lang/nl.js
index f5e821f..84ac147 100644
--- a/sources/plugins/toolbar/lang/nl.js
+++ b/sources/plugins/toolbar/lang/nl.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'toolbar', 'nl', { 5CKEDITOR.plugins.setLang( 'toolbar', 'nl', {
diff --git a/sources/plugins/toolbar/lang/no.js b/sources/plugins/toolbar/lang/no.js
index 64a9cb9..c1a3445 100644
--- a/sources/plugins/toolbar/lang/no.js
+++ b/sources/plugins/toolbar/lang/no.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'toolbar', 'no', { 5CKEDITOR.plugins.setLang( 'toolbar', 'no', {
diff --git a/sources/plugins/toolbar/lang/oc.js b/sources/plugins/toolbar/lang/oc.js
new file mode 100644
index 0000000..bfd8044
--- /dev/null
+++ b/sources/plugins/toolbar/lang/oc.js
@@ -0,0 +1,22 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'toolbar', 'oc', {
6 toolbarCollapse: 'Enrotlar la barra d\'aisinas',
7 toolbarExpand: 'Desenrotlar la barra d\'aisinas',
8 toolbarGroups: {
9 document: 'Document',
10 clipboard: 'Quichapapièr/Desfar',
11 editing: 'Edicion',
12 forms: 'Formularis',
13 basicstyles: 'Estils de basa',
14 paragraph: 'Paragraf',
15 links: 'Ligams',
16 insert: 'Inserir',
17 styles: 'Estils',
18 colors: 'Colors',
19 tools: 'Aisinas'
20 },
21 toolbars: 'Barras d\'aisinas de l\'editor'
22} );
diff --git a/sources/plugins/toolbar/lang/pl.js b/sources/plugins/toolbar/lang/pl.js
index 036f131..07571c9 100644
--- a/sources/plugins/toolbar/lang/pl.js
+++ b/sources/plugins/toolbar/lang/pl.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'toolbar', 'pl', { 5CKEDITOR.plugins.setLang( 'toolbar', 'pl', {
diff --git a/sources/plugins/toolbar/lang/pt-br.js b/sources/plugins/toolbar/lang/pt-br.js
index 1f31a78..c897bef 100644
--- a/sources/plugins/toolbar/lang/pt-br.js
+++ b/sources/plugins/toolbar/lang/pt-br.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'toolbar', 'pt-br', { 5CKEDITOR.plugins.setLang( 'toolbar', 'pt-br', {
diff --git a/sources/plugins/toolbar/lang/pt.js b/sources/plugins/toolbar/lang/pt.js
index 2406f60..d684ede 100644
--- a/sources/plugins/toolbar/lang/pt.js
+++ b/sources/plugins/toolbar/lang/pt.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'toolbar', 'pt', { 5CKEDITOR.plugins.setLang( 'toolbar', 'pt', {
@@ -10,7 +10,7 @@ CKEDITOR.plugins.setLang( 'toolbar', 'pt', {
10 clipboard: 'Área de transferência/Anular', 10 clipboard: 'Área de transferência/Anular',
11 editing: 'Edição', 11 editing: 'Edição',
12 forms: 'Formulários', 12 forms: 'Formulários',
13 basicstyles: 'Estilos Básicos', 13 basicstyles: 'Estilos básicos',
14 paragraph: 'Parágrafo', 14 paragraph: 'Parágrafo',
15 links: 'Hiperligações', 15 links: 'Hiperligações',
16 insert: 'Inserir', 16 insert: 'Inserir',
@@ -18,5 +18,5 @@ CKEDITOR.plugins.setLang( 'toolbar', 'pt', {
18 colors: 'Cores', 18 colors: 'Cores',
19 tools: 'Ferramentas' 19 tools: 'Ferramentas'
20 }, 20 },
21 toolbars: 'Editor de Barras de Ferramentas' 21 toolbars: 'Editor de barras de ferramentas'
22} ); 22} );
diff --git a/sources/plugins/toolbar/lang/ro.js b/sources/plugins/toolbar/lang/ro.js
index 4d3b395..cb1b1e1 100644
--- a/sources/plugins/toolbar/lang/ro.js
+++ b/sources/plugins/toolbar/lang/ro.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'toolbar', 'ro', { 5CKEDITOR.plugins.setLang( 'toolbar', 'ro', {
diff --git a/sources/plugins/toolbar/lang/ru.js b/sources/plugins/toolbar/lang/ru.js
index 2f384c6..88f9462 100644
--- a/sources/plugins/toolbar/lang/ru.js
+++ b/sources/plugins/toolbar/lang/ru.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'toolbar', 'ru', { 5CKEDITOR.plugins.setLang( 'toolbar', 'ru', {
diff --git a/sources/plugins/toolbar/lang/si.js b/sources/plugins/toolbar/lang/si.js
index e74adbb..b57a088 100644
--- a/sources/plugins/toolbar/lang/si.js
+++ b/sources/plugins/toolbar/lang/si.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'toolbar', 'si', { 5CKEDITOR.plugins.setLang( 'toolbar', 'si', {
diff --git a/sources/plugins/toolbar/lang/sk.js b/sources/plugins/toolbar/lang/sk.js
index d1b78cf..fc9f3db 100644
--- a/sources/plugins/toolbar/lang/sk.js
+++ b/sources/plugins/toolbar/lang/sk.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'toolbar', 'sk', { 5CKEDITOR.plugins.setLang( 'toolbar', 'sk', {
diff --git a/sources/plugins/toolbar/lang/sl.js b/sources/plugins/toolbar/lang/sl.js
index 5bf0e35..b17eee4 100644
--- a/sources/plugins/toolbar/lang/sl.js
+++ b/sources/plugins/toolbar/lang/sl.js
@@ -1,22 +1,22 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'toolbar', 'sl', { 5CKEDITOR.plugins.setLang( 'toolbar', 'sl', {
6 toolbarCollapse: 'Skrči Orodno Vrstico', 6 toolbarCollapse: 'Skrči orodno vrstico',
7 toolbarExpand: 'Razširi Orodno Vrstico', 7 toolbarExpand: 'Razširi orodno vrstico',
8 toolbarGroups: { 8 toolbarGroups: {
9 document: 'Document', 9 document: 'Dokument',
10 clipboard: 'Clipboard/Undo', 10 clipboard: 'Odložišče/Razveljavi',
11 editing: 'Editing', 11 editing: 'Urejanje',
12 forms: 'Forms', 12 forms: 'Obrazci',
13 basicstyles: 'Basic Styles', 13 basicstyles: 'Osnovni slogi',
14 paragraph: 'Paragraph', 14 paragraph: 'Odstavek',
15 links: 'Links', 15 links: 'Povezave',
16 insert: 'Insert', 16 insert: 'Vstavi',
17 styles: 'Styles', 17 styles: 'Slogi',
18 colors: 'Colors', 18 colors: 'Barve',
19 tools: 'Tools' 19 tools: 'Orodja'
20 }, 20 },
21 toolbars: 'Urejevalnik orodne vrstice' 21 toolbars: 'Orodne vrstice urejevalnika'
22} ); 22} );
diff --git a/sources/plugins/toolbar/lang/sq.js b/sources/plugins/toolbar/lang/sq.js
index 1616bdd..0ca8add 100644
--- a/sources/plugins/toolbar/lang/sq.js
+++ b/sources/plugins/toolbar/lang/sq.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'toolbar', 'sq', { 5CKEDITOR.plugins.setLang( 'toolbar', 'sq', {
diff --git a/sources/plugins/toolbar/lang/sr-latn.js b/sources/plugins/toolbar/lang/sr-latn.js
index 4cb758d..d746aac 100644
--- a/sources/plugins/toolbar/lang/sr-latn.js
+++ b/sources/plugins/toolbar/lang/sr-latn.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'toolbar', 'sr-latn', { 5CKEDITOR.plugins.setLang( 'toolbar', 'sr-latn', {
diff --git a/sources/plugins/toolbar/lang/sr.js b/sources/plugins/toolbar/lang/sr.js
index 498eebf..d02f20f 100644
--- a/sources/plugins/toolbar/lang/sr.js
+++ b/sources/plugins/toolbar/lang/sr.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'toolbar', 'sr', { 5CKEDITOR.plugins.setLang( 'toolbar', 'sr', {
diff --git a/sources/plugins/toolbar/lang/sv.js b/sources/plugins/toolbar/lang/sv.js
index 5a5d1b9..0a45e88 100644
--- a/sources/plugins/toolbar/lang/sv.js
+++ b/sources/plugins/toolbar/lang/sv.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'toolbar', 'sv', { 5CKEDITOR.plugins.setLang( 'toolbar', 'sv', {
@@ -18,5 +18,5 @@ CKEDITOR.plugins.setLang( 'toolbar', 'sv', {
18 colors: 'Färger', 18 colors: 'Färger',
19 tools: 'Verktyg' 19 tools: 'Verktyg'
20 }, 20 },
21 toolbars: 'Redigera verktygsfält' 21 toolbars: 'Editorns verktygsfält'
22} ); 22} );
diff --git a/sources/plugins/toolbar/lang/th.js b/sources/plugins/toolbar/lang/th.js
index 3aaa7a5..c4ae55e 100644
--- a/sources/plugins/toolbar/lang/th.js
+++ b/sources/plugins/toolbar/lang/th.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'toolbar', 'th', { 5CKEDITOR.plugins.setLang( 'toolbar', 'th', {
diff --git a/sources/plugins/toolbar/lang/tr.js b/sources/plugins/toolbar/lang/tr.js
index e2a757b..cf7f944 100644
--- a/sources/plugins/toolbar/lang/tr.js
+++ b/sources/plugins/toolbar/lang/tr.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'toolbar', 'tr', { 5CKEDITOR.plugins.setLang( 'toolbar', 'tr', {
diff --git a/sources/plugins/toolbar/lang/tt.js b/sources/plugins/toolbar/lang/tt.js
index 25df66c..8eb0542 100644
--- a/sources/plugins/toolbar/lang/tt.js
+++ b/sources/plugins/toolbar/lang/tt.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'toolbar', 'tt', { 5CKEDITOR.plugins.setLang( 'toolbar', 'tt', {
diff --git a/sources/plugins/toolbar/lang/ug.js b/sources/plugins/toolbar/lang/ug.js
index 057552e..95c7c1b 100644
--- a/sources/plugins/toolbar/lang/ug.js
+++ b/sources/plugins/toolbar/lang/ug.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'toolbar', 'ug', { 5CKEDITOR.plugins.setLang( 'toolbar', 'ug', {
diff --git a/sources/plugins/toolbar/lang/uk.js b/sources/plugins/toolbar/lang/uk.js
index c46d122..3f1f1c7 100644
--- a/sources/plugins/toolbar/lang/uk.js
+++ b/sources/plugins/toolbar/lang/uk.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'toolbar', 'uk', { 5CKEDITOR.plugins.setLang( 'toolbar', 'uk', {
diff --git a/sources/plugins/toolbar/lang/vi.js b/sources/plugins/toolbar/lang/vi.js
index ff56d9c..8ff76fd 100644
--- a/sources/plugins/toolbar/lang/vi.js
+++ b/sources/plugins/toolbar/lang/vi.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'toolbar', 'vi', { 5CKEDITOR.plugins.setLang( 'toolbar', 'vi', {
diff --git a/sources/plugins/toolbar/lang/zh-cn.js b/sources/plugins/toolbar/lang/zh-cn.js
index 2b69e32..6c3a5ed 100644
--- a/sources/plugins/toolbar/lang/zh-cn.js
+++ b/sources/plugins/toolbar/lang/zh-cn.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'toolbar', 'zh-cn', { 5CKEDITOR.plugins.setLang( 'toolbar', 'zh-cn', {
diff --git a/sources/plugins/toolbar/lang/zh.js b/sources/plugins/toolbar/lang/zh.js
index 285122b..0a9f5de 100644
--- a/sources/plugins/toolbar/lang/zh.js
+++ b/sources/plugins/toolbar/lang/zh.js
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5CKEDITOR.plugins.setLang( 'toolbar', 'zh', { 5CKEDITOR.plugins.setLang( 'toolbar', 'zh', {
diff --git a/sources/plugins/toolbar/plugin.js b/sources/plugins/toolbar/plugin.js
index 93e6e35..fc19359 100644
--- a/sources/plugins/toolbar/plugin.js
+++ b/sources/plugins/toolbar/plugin.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -34,7 +34,7 @@
34 if ( editor.toolbox ) { 34 if ( editor.toolbox ) {
35 editor.toolbox.focusCommandExecuted = true; 35 editor.toolbox.focusCommandExecuted = true;
36 36
37 // Make the first button focus accessible for IE. (#3417) 37 // Make the first button focus accessible for IE. (http://dev.ckeditor.com/ticket/3417)
38 // Adobe AIR instead need while of delay. 38 // Adobe AIR instead need while of delay.
39 if ( CKEDITOR.env.ie || CKEDITOR.env.air ) { 39 if ( CKEDITOR.env.ie || CKEDITOR.env.air ) {
40 setTimeout( function() { 40 setTimeout( function() {
@@ -51,7 +51,7 @@
51 CKEDITOR.plugins.add( 'toolbar', { 51 CKEDITOR.plugins.add( 'toolbar', {
52 requires: 'button', 52 requires: 'button',
53 // jscs:disable maximumLineLength 53 // jscs:disable maximumLineLength
54 lang: 'af,ar,bg,bn,bs,ca,cs,cy,da,de,de-ch,el,en,en-au,en-ca,en-gb,eo,es,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,pl,pt,pt-br,ro,ru,si,sk,sl,sq,sr,sr-latn,sv,th,tr,tt,ug,uk,vi,zh,zh-cn', // %REMOVE_LINE_CORE% 54 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', // %REMOVE_LINE_CORE%
55 // jscs:enable maximumLineLength 55 // jscs:enable maximumLineLength
56 56
57 init: function( editor ) { 57 init: function( editor ) {
@@ -118,10 +118,6 @@
118 return false; 118 return false;
119 case 40: // DOWN-ARROW 119 case 40: // DOWN-ARROW
120 if ( item.button && item.button.hasArrow ) { 120 if ( item.button && item.button.hasArrow ) {
121 // Note: code is duplicated in plugins\richcombo\plugin.js in keyDownFn().
122 editor.once( 'panelShow', function( evt ) {
123 evt.data._.panel._.currentBlock.onKeyDown( 40 );
124 } );
125 item.execute(); 121 item.execute();
126 } else { 122 } else {
127 // Send left arrow key. 123 // Send left arrow key.
@@ -190,20 +186,22 @@
190 output.push( '<span class="cke_toolbox_main"' + ( expanded ? '>' : ' style="display:none">' ) ); 186 output.push( '<span class="cke_toolbox_main"' + ( expanded ? '>' : ' style="display:none">' ) );
191 187
192 var toolbars = editor.toolbox.toolbars, 188 var toolbars = editor.toolbox.toolbars,
193 toolbar = getToolbarConfig( editor ); 189 toolbar = getToolbarConfig( editor ),
190 toolbarLength = toolbar.length;
194 191
195 for ( var r = 0; r < toolbar.length; r++ ) { 192 for ( var r = 0; r < toolbarLength; r++ ) {
196 var toolbarId, 193 var toolbarId,
197 toolbarObj = 0, 194 toolbarObj = 0,
198 toolbarName, 195 toolbarName,
199 row = toolbar[ r ], 196 row = toolbar[ r ],
197 lastToolbarInRow = row !== '/' && ( toolbar[ r + 1 ] === '/' || r == toolbarLength - 1 ),
200 items; 198 items;
201 199
202 // It's better to check if the row object is really 200 // It's better to check if the row object is really
203 // available because it's a common mistake to leave 201 // available because it's a common mistake to leave
204 // an extra comma in the toolbar definition 202 // an extra comma in the toolbar definition
205 // settings, which leads on the editor not loading 203 // settings, which leads on the editor not loading
206 // at all in IE. (#3983) 204 // at all in IE. (http://dev.ckeditor.com/ticket/3983)
207 if ( !row ) 205 if ( !row )
208 continue; 206 continue;
209 207
@@ -244,7 +242,8 @@
244 toolbarName = row.name && ( editor.lang.toolbar.toolbarGroups[ row.name ] || row.name ); 242 toolbarName = row.name && ( editor.lang.toolbar.toolbarGroups[ row.name ] || row.name );
245 243
246 // Output the toolbar opener. 244 // Output the toolbar opener.
247 output.push( '<span id="', toolbarId, '" class="cke_toolbar"', ( toolbarName ? ' aria-labelledby="' + toolbarId + '_label"' : '' ), ' role="toolbar">' ); 245 output.push( '<span id="', toolbarId, '" class="cke_toolbar' + ( lastToolbarInRow ? ' cke_toolbar_last"' : '"' ),
246 ( toolbarName ? ' aria-labelledby="' + toolbarId + '_label"' : '' ), ' role="toolbar">' );
248 247
249 // If a toolbar name is available, send the voice label. 248 // If a toolbar name is available, send the voice label.
250 toolbarName && output.push( '<span id="', toolbarId, '_label" class="cke_voice_label">', toolbarName, '</span>' ); 249 toolbarName && output.push( '<span id="', toolbarId, '_label" class="cke_voice_label">', toolbarName, '</span>' );
@@ -284,7 +283,7 @@
284 itemObj.toolbar = toolbarObj; 283 itemObj.toolbar = toolbarObj;
285 itemObj.onkey = itemKeystroke; 284 itemObj.onkey = itemKeystroke;
286 285
287 // Fix for #3052: 286 // Fix for http://dev.ckeditor.com/ticket/3052:
288 // Prevent JAWS from focusing the toolbar after document load. 287 // Prevent JAWS from focusing the toolbar after document load.
289 itemObj.onfocus = function() { 288 itemObj.onfocus = function() {
290 if ( !editor.toolbox.focusCommandExecuted ) 289 if ( !editor.toolbox.focusCommandExecuted )
diff --git a/sources/plugins/toolbar/samples/toolbar.html b/sources/plugins/toolbar/samples/toolbar.html
index 2d3d25f..e40d2a1 100644
--- a/sources/plugins/toolbar/samples/toolbar.html
+++ b/sources/plugins/toolbar/samples/toolbar.html
@@ -1,6 +1,6 @@
1<!DOCTYPE html> 1<!DOCTYPE html>
2<!-- 2<!--
3Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 3Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
4For licensing, see LICENSE.md or http://ckeditor.com/license 4For licensing, see LICENSE.md or http://ckeditor.com/license
5--> 5-->
6<html> 6<html>
@@ -227,7 +227,7 @@ CKEDITOR.replace( <em>'textarea_id'</em>, {
227 CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a> 227 CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a>
228 </p> 228 </p>
229 <p id="copy"> 229 <p id="copy">
230 Copyright &copy; 2003-2016, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico 230 Copyright &copy; 2003-2017, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico
231 Knabben. All rights reserved. 231 Knabben. All rights reserved.
232 </p> 232 </p>
233 </div> 233 </div>
diff --git a/sources/plugins/widget/dev/assets/contents.css b/sources/plugins/widget/dev/assets/contents.css
new file mode 100644
index 0000000..2cff316
--- /dev/null
+++ b/sources/plugins/widget/dev/assets/contents.css
@@ -0,0 +1,23 @@
1.mediumBorder {
2 border-width: 2px;
3}
4.thickBorder {
5 border-width: 5px;
6}
7img.thickBorder, img.mediumBorder {
8 border-style: solid;
9 border-color: #CCC;
10}
11.important.soMuch {
12 margin: 25px;
13 padding: 25px;
14 background: red;
15 border: none;
16}
17
18span.redMarker {
19 background-color: red;
20}
21.invisible {
22 opacity: 0.1;
23}
diff --git a/sources/plugins/widget/dev/assets/sample.jpg b/sources/plugins/widget/dev/assets/sample.jpg
new file mode 100644
index 0000000..a4a77fa
--- /dev/null
+++ b/sources/plugins/widget/dev/assets/sample.jpg
Binary files differ
diff --git a/sources/plugins/widget/dev/assets/simplebox/contents.css b/sources/plugins/widget/dev/assets/simplebox/contents.css
new file mode 100644
index 0000000..ddf3675
--- /dev/null
+++ b/sources/plugins/widget/dev/assets/simplebox/contents.css
@@ -0,0 +1,36 @@
1.simplebox {
2 padding: 8px;
3 margin: 10px;
4 background: #eee;
5 border-radius: 8px;
6 border: 1px solid #ddd;
7 box-shadow: 0 1px 1px #fff inset, 0 -1px 0px #ccc inset;
8}
9.simplebox-title, .simplebox-content {
10 box-shadow: 0 1px 1px #ddd inset;
11 border: 1px solid #cccccc;
12 border-radius: 5px;
13 background: #fff;
14}
15.simplebox-title {
16 margin: 0 0 8px;
17 padding: 5px 8px;
18}
19.simplebox-content {
20 padding: 0 8px;
21}
22.simplebox-content::after {
23 content: '';
24 display: block;
25 clear: both;
26}
27.simplebox.align-right {
28 float: right;
29}
30.simplebox.align-left {
31 float: left;
32}
33.simplebox.align-center {
34 margin-left: auto;
35 margin-right: auto;
36}
diff --git a/sources/plugins/widget/dev/assets/simplebox/dialogs/simplebox.js b/sources/plugins/widget/dev/assets/simplebox/dialogs/simplebox.js
new file mode 100644
index 0000000..45a150c
--- /dev/null
+++ b/sources/plugins/widget/dev/assets/simplebox/dialogs/simplebox.js
@@ -0,0 +1,51 @@
1// Note: This automatic widget to dialog window binding (the fact that every field is set up from the widget
2// and is committed to the widget) is only possible when the dialog is opened by the Widgets System
3// (i.e. the widgetDef.dialog property is set).
4// When you are opening the dialog window by yourself, you need to take care of this by yourself too.
5
6CKEDITOR.dialog.add( 'simplebox', function( editor ) {
7 return {
8 title: 'Edit Simple Box',
9 minWidth: 200,
10 minHeight: 100,
11 contents: [
12 {
13 id: 'info',
14 elements: [
15 {
16 id: 'align',
17 type: 'select',
18 label: 'Align',
19 items: [
20 [ editor.lang.common.notSet, '' ],
21 [ editor.lang.common.alignLeft, 'left' ],
22 [ editor.lang.common.alignRight, 'right' ],
23 [ editor.lang.common.alignCenter, 'center' ]
24 ],
25 // When setting up this field, set its value to the "align" value from widget data.
26 // Note: Align values used in the widget need to be the same as those defined in the "items" array above.
27 setup: function( widget ) {
28 this.setValue( widget.data.align );
29 },
30 // When committing (saving) this field, set its value to the widget data.
31 commit: function( widget ) {
32 widget.setData( 'align', this.getValue() );
33 }
34 },
35 {
36 id: 'width',
37 type: 'text',
38 label: 'Width',
39 width: '50px',
40 setup: function( widget ) {
41 this.setValue( widget.data.width );
42 },
43 commit: function( widget ) {
44 widget.setData( 'width', this.getValue() );
45 }
46 }
47 ]
48 }
49 ]
50 };
51} );
diff --git a/sources/plugins/widget/dev/assets/simplebox/icons/simplebox.png b/sources/plugins/widget/dev/assets/simplebox/icons/simplebox.png
new file mode 100644
index 0000000..6a5e313
--- /dev/null
+++ b/sources/plugins/widget/dev/assets/simplebox/icons/simplebox.png
Binary files differ
diff --git a/sources/plugins/widget/dev/assets/simplebox/plugin.js b/sources/plugins/widget/dev/assets/simplebox/plugin.js
new file mode 100644
index 0000000..4c22d0d
--- /dev/null
+++ b/sources/plugins/widget/dev/assets/simplebox/plugin.js
@@ -0,0 +1,114 @@
1'use strict';
2
3// Register the plugin within the editor.
4CKEDITOR.plugins.add( 'simplebox', {
5 // This plugin requires the Widgets System defined in the 'widget' plugin.
6 requires: 'widget,dialog',
7
8 // Register the icon used for the toolbar button. It must be the same
9 // as the name of the widget.
10 icons: 'simplebox',
11
12 // The plugin initialization logic goes inside this method.
13 init: function( editor ) {
14 // Register the editing dialog.
15 CKEDITOR.dialog.add( 'simplebox', this.path + 'dialogs/simplebox.js' );
16
17 // Register the simplebox widget.
18 editor.widgets.add( 'simplebox', {
19 // Allow all HTML elements, classes, and styles that this widget requires.
20 // Read more about the Advanced Content Filter here:
21 // * http://docs.ckeditor.com/#!/guide/dev_advanced_content_filter
22 // * http://docs.ckeditor.com/#!/guide/plugin_sdk_integration_with_acf
23 allowedContent:
24 'div(!simplebox,align-left,align-right,align-center){width};' +
25 'div(!simplebox-content); h2(!simplebox-title)',
26
27 // Minimum HTML which is required by this widget to work.
28 requiredContent: 'div(simplebox)',
29
30 // Define two nested editable areas.
31 editables: {
32 title: {
33 // Define CSS selector used for finding the element inside widget element.
34 selector: '.simplebox-title',
35 // Define content allowed in this nested editable. Its content will be
36 // filtered accordingly and the toolbar will be adjusted when this editable
37 // is focused.
38 allowedContent: 'br strong em'
39 },
40 content: {
41 selector: '.simplebox-content'
42 }
43 },
44
45 // Define the template of a new Simple Box widget.
46 // The template will be used when creating new instances of the Simple Box widget.
47 template:
48 '<div class="simplebox">' +
49 '<h2 class="simplebox-title">Title</h2>' +
50 '<div class="simplebox-content"><p>Content...</p></div>' +
51 '</div>',
52
53 // Define the label for a widget toolbar button which will be automatically
54 // created by the Widgets System. This button will insert a new widget instance
55 // created from the template defined above, or will edit selected widget
56 // (see second part of this tutorial to learn about editing widgets).
57 //
58 // Note: In order to be able to translate your widget you should use the
59 // editor.lang.simplebox.* property. A string was used directly here to simplify this tutorial.
60 button: 'Create a simple box',
61
62 // Set the widget dialog window name. This enables the automatic widget-dialog binding.
63 // This dialog window will be opened when creating a new widget or editing an existing one.
64 dialog: 'simplebox',
65
66 // Check the elements that need to be converted to widgets.
67 //
68 // Note: The "element" argument is an instance of http://docs.ckeditor.com/#!/api/CKEDITOR.htmlParser.element
69 // so it is not a real DOM element yet. This is caused by the fact that upcasting is performed
70 // during data processing which is done on DOM represented by JavaScript objects.
71 upcast: function( element ) {
72 // Return "true" (that element needs to converted to a Simple Box widget)
73 // for all <div> elements with a "simplebox" class.
74 return element.name == 'div' && element.hasClass( 'simplebox' );
75 },
76
77 // When a widget is being initialized, we need to read the data ("align" and "width")
78 // from DOM and set it by using the widget.setData() method.
79 // More code which needs to be executed when DOM is available may go here.
80 init: function() {
81 var width = this.element.getStyle( 'width' );
82 if ( width )
83 this.setData( 'width', width );
84
85 if ( this.element.hasClass( 'align-left' ) )
86 this.setData( 'align', 'left' );
87 if ( this.element.hasClass( 'align-right' ) )
88 this.setData( 'align', 'right' );
89 if ( this.element.hasClass( 'align-center' ) )
90 this.setData( 'align', 'center' );
91 },
92
93 // Listen on the widget#data event which is fired every time the widget data changes
94 // and updates the widget's view.
95 // Data may be changed by using the widget.setData() method, which we use in the
96 // Simple Box dialog window.
97 data: function() {
98 // Check whether "width" widget data is set and remove or set "width" CSS style.
99 // The style is set on widget main element (div.simplebox).
100 if ( !this.data.width )
101 this.element.removeStyle( 'width' );
102 else
103 this.element.setStyle( 'width', this.data.width );
104
105 // Brutally remove all align classes and set a new one if "align" widget data is set.
106 this.element.removeClass( 'align-left' );
107 this.element.removeClass( 'align-right' );
108 this.element.removeClass( 'align-center' );
109 if ( this.data.align )
110 this.element.addClass( 'align-' + this.data.align );
111 }
112 } );
113 }
114} );
diff --git a/sources/plugins/widget/dev/console.js b/sources/plugins/widget/dev/console.js
new file mode 100644
index 0000000..78db0d0
--- /dev/null
+++ b/sources/plugins/widget/dev/console.js
@@ -0,0 +1,131 @@
1/**
2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */
5
6/* global CKCONSOLE */
7
8'use strict';
9
10( function() {
11
12 CKCONSOLE.add( 'widget', {
13 panels: [
14 {
15 type: 'box',
16 content: '<ul class="ckconsole_list ckconsole_value" data-value="instances"></ul>',
17
18 refresh: function( editor ) {
19 var instances = obj2Array( editor.widgets.instances );
20
21 return {
22 header: 'Instances (' + instances.length + ')',
23 instances: generateInstancesList( instances )
24 };
25 },
26
27 refreshOn: function( editor, refresh ) {
28 editor.widgets.on( 'instanceCreated', function( evt ) {
29 refresh();
30
31 evt.data.on( 'data', refresh );
32 } );
33
34 editor.widgets.on( 'instanceDestroyed', refresh );
35 }
36 },
37
38 {
39 type: 'box',
40 content:
41 '<ul class="ckconsole_list">' +
42 '<li>focused: <span class="ckconsole_value" data-value="focused"></span></li>' +
43 '<li>selected: <span class="ckconsole_value" data-value="selected"></span></li>' +
44 '</ul>',
45
46 refresh: function( editor ) {
47 var focused = editor.widgets.focused,
48 selected = editor.widgets.selected,
49 selectedIds = [];
50
51 for ( var i = 0; i < selected.length; ++i )
52 selectedIds.push( selected[ i ].id );
53
54 return {
55 header: 'Focus &amp; selection',
56 focused: focused ? 'id: ' + focused.id : '-',
57 selected: selectedIds.length ? 'id: ' + selectedIds.join( ', id: ' ) : '-'
58 };
59 },
60
61 refreshOn: function( editor, refresh ) {
62 editor.on( 'selectionCheck', refresh, null, null, 999 );
63 }
64 },
65
66 {
67 type: 'log',
68
69 on: function( editor, log, logFn ) {
70 // Add all listeners with high priorities to log
71 // messages in the correct order when one event depends on another.
72 // E.g. selectionChange triggers widget selection - if this listener
73 // for selectionChange will be executed later than that one, then order
74 // will be incorrect.
75
76 editor.on( 'selectionChange', function( evt ) {
77 var msg = 'selection change',
78 sel = evt.data.selection,
79 el = sel.getSelectedElement(),
80 widget;
81
82 if ( el && ( widget = editor.widgets.getByElement( el, true ) ) )
83 msg += ' (id: ' + widget.id + ')';
84
85 log( msg );
86 }, null, null, 1 );
87
88 editor.widgets.on( 'instanceDestroyed', function( evt ) {
89 log( 'instance destroyed (id: ' + evt.data.id + ')' );
90 }, null, null, 1 );
91
92 editor.widgets.on( 'instanceCreated', function( evt ) {
93 log( 'instance created (id: ' + evt.data.id + ')' );
94 }, null, null, 1 );
95
96 editor.widgets.on( 'widgetFocused', function( evt ) {
97 log( 'widget focused (id: ' + evt.data.widget.id + ')' );
98 }, null, null, 1 );
99
100 editor.widgets.on( 'widgetBlurred', function( evt ) {
101 log( 'widget blurred (id: ' + evt.data.widget.id + ')' );
102 }, null, null, 1 );
103
104 editor.widgets.on( 'checkWidgets', logFn( 'checking widgets' ), null, null, 1 );
105 editor.widgets.on( 'checkSelection', logFn( 'checking selection' ), null, null, 1 );
106 }
107 }
108 ]
109 } );
110
111 function generateInstancesList( instances ) {
112 var html = '',
113 instance;
114
115 for ( var i = 0; i < instances.length; ++i ) {
116 instance = instances[ i ];
117 html += itemTpl.output( { id: instance.id, name: instance.name, data: JSON.stringify( instance.data ) } );
118 }
119 return html;
120 }
121
122 function obj2Array( obj ) {
123 var arr = [];
124 for ( var id in obj )
125 arr.push( obj[ id ] );
126
127 return arr;
128 }
129
130 var itemTpl = new CKEDITOR.template( '<li>id: <code>{id}</code>, name: <code>{name}</code>, data: <code>{data}</code></li>' );
131} )();
diff --git a/sources/plugins/widget/dev/nestedwidgets.html b/sources/plugins/widget/dev/nestedwidgets.html
new file mode 100644
index 0000000..0686d2c
--- /dev/null
+++ b/sources/plugins/widget/dev/nestedwidgets.html
@@ -0,0 +1,134 @@
1<!DOCTYPE html>
2<!--
3Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved.
4For licensing, see LICENSE.md or http://ckeditor.com/license
5-->
6<html>
7<head>
8 <meta charset="utf-8">
9 <title>Nested widgets &mdash; CKEditor Sample</title>
10 <script src="../../../ckeditor.js"></script>
11 <script src="../../../dev/console/console.js"></script>
12 <script src="../../../dev/console/focusconsole.js"></script>
13 <script src="console.js"></script>
14 <link rel="stylesheet" href="../../../samples/old/sample.css">
15 <link rel="stylesheet" href="../../../contents.css">
16 <link rel="stylesheet" href="assets/simplebox/contents.css">
17</head>
18<body>
19 <h1 class="samples">Nested widgets</h1>
20
21 <h2>Classic (iframe-based) Sample</h2>
22 <textarea cols="80" id="editor1" name="editor1" rows="10">
23 <h1>Simple Box Sample</h1>
24
25 <div class="simplebox align-right" style="width: 60%">
26 <h2 class="simplebox-title">Title</h2>
27 <div class="simplebox-content">
28 <p><strong>Apollo 11</strong> was the spaceflight that landed the first humans, Americans <a href="http://en.wikipedia.org/wiki/Neil_Armstrong" title="Neil Armstrong">Neil Armstrong</a> and <a href="http://en.wikipedia.org/wiki/Buzz_Aldrin" title="Buzz Aldrin">Buzz Aldrin</a>, on the Moon on [[July 20, 1969, at 20:18 UTC]]. Armstrong became the first to step onto the lunar surface 6 hours later on [[July 21 at 02:56 UTC]].</p>
29
30 <figure class="image" style="float: right">
31 <img alt="The Eagle" src="assets/sample.jpg" width="150" />
32 <figcaption>The Eagle in lunar orbit</figcaption>
33 </figure>
34
35 <ul>
36 <li>Foo!</li>
37 <li>Bar!</li>
38 </ul>
39
40 <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur sit amet orci ut nisi adipiscing ultrices. Sed pellentesque iaculis malesuada. Pellentesque scelerisque, purus non porta dictum, neque urna bibendum dolor, eget tristique ipsum metus fringilla dolor. Nullam sed accumsan sapien. Vestibulum in placerat magna. Sed justo lacus, volutpat rhoncus odio luctus, ornare adipiscing mauris. Vivamus erat sem, egestas et lectus eget, varius cursus odio. Duis posuere lacus sit amet urna bibendum, id iaculis eros ultrices. Vestibulum a ultrices ante.</p>
41 </div>
42 </div>
43
44 <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur sit amet orci ut nisi adipiscing ultrices. Sed pellentesque iaculis malesuada. Pellentesque scelerisque, purus non porta dictum, neque urna bibendum dolor, eget tristique ipsum metus fringilla dolor. Nullam sed accumsan sapien. Vestibulum in placerat magna. Sed justo lacus, volutpat rhoncus odio luctus, ornare adipiscing mauris. Vivamus erat sem, egestas et lectus eget, varius cursus odio. Duis posuere lacus sit amet urna bibendum, id iaculis eros ultrices. Vestibulum a ultrices ante.</p>
45
46 <p>Pellentesque vitae eleifend nisl, non accumsan tellus. Maecenas nec libero non tellus tincidunt mollis porttitor sed arcu. Donec ultricies nulla vitae eros lacinia, vel congue sem auctor. Vivamus convallis, urna ac tincidunt malesuada, lectus erat convallis metus, a hendrerit massa augue accumsan magna. Nulla mattis tellus elit, nec congue magna scelerisque eget. Aliquam posuere nisi augue, posuere sodales nisi iaculis eu. Donec fermentum urna id nibh sagittis fermentum sit amet sed enim. Aliquam neque elit, pretium elementum nunc a, faucibus accumsan lorem. Etiam pulvinar odio et hendrerit tincidunt. Suspendisse tempus eros lacus, in convallis velit mollis ut. Aenean congue, justo eleifend ultricies malesuada, nunc nunc molestie mauris, eget placerat libero eros vel nisi. Quisque diam arcu, mollis ac laoreet vitae, varius et sem. Interdum et malesuada fames ac ante ipsum primis in faucibus. Duis in vehicula sapien. Nunc feugiat porta elit nec volutpat.</p>
47
48 <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur sit amet orci ut nisi adipiscing ultrices. Sed pellentesque iaculis malesuada. Pellentesque scelerisque, purus non porta dictum, neque urna bibendum dolor, eget tristique ipsum metus fringilla dolor. Nullam sed accumsan sapien. Vestibulum in placerat magna. Sed justo lacus, volutpat rhoncus odio luctus, ornare adipiscing mauris. Vivamus erat sem, egestas et lectus eget, varius cursus odio. Duis posuere lacus sit amet urna bibendum, id iaculis eros ultrices. Vestibulum a ultrices ante.</p>
49
50 <div class="simplebox align-center" style="width: 750px">
51 <h2 class="simplebox-title">Title</h2>
52 <div class="simplebox-content">
53 <p><img alt="The Eagle" src="assets/sample.jpg" width="150" style="float: left" /><strong>Apollo 11</strong> was the spaceflight that landed the first humans, Americans <a href="http://en.wikipedia.org/wiki/Neil_Armstrong" title="Neil Armstrong">Neil Armstrong</a> and <a href="http://en.wikipedia.org/wiki/Buzz_Aldrin" title="Buzz Aldrin">Buzz Aldrin</a>, on the Moon on [[July 20, 1969, at 20:18 UTC]]. Armstrong became the first to step onto the lunar surface 6 hours later on [[July 21 at 02:56 UTC]].</p>
54
55 <ul>
56 <li>Foo!</li>
57 <li>Bar!</li>
58 </ul>
59 </div>
60 </div>
61
62 <p>Ut eget ipsum a sapien porta ultrices. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Vivamus mi lacus, pharetra eu bibendum blandit, tristique sit amet leo. Integer eu nulla nec magna vulputate blandit. Praesent mattis quis ante eget adipiscing. Nulla vel tempus risus, in placerat velit. Mauris sed nibh at elit posuere laoreet. Morbi non sapien sed nunc fringilla imperdiet.</p>
63 </textarea>
64
65 <h2>Inline Sample</h2>
66 <div id="editor2" contenteditable="true">
67 <h1>Simple Box Sample</h1>
68
69 <div class="simplebox align-right" style="width: 60%">
70 <h2 class="simplebox-title">Title</h2>
71 <div class="simplebox-content">
72 <p><strong>Apollo 11</strong> was the spaceflight that landed the first humans, Americans <a href="http://en.wikipedia.org/wiki/Neil_Armstrong" title="Neil Armstrong">Neil Armstrong</a> and <a href="http://en.wikipedia.org/wiki/Buzz_Aldrin" title="Buzz Aldrin">Buzz Aldrin</a>, on the Moon on [[July 20, 1969, at 20:18 UTC]]. Armstrong became the first to step onto the lunar surface 6 hours later on [[July 21 at 02:56 UTC]].</p>
73
74 <figure class="image" style="float: right">
75 <img alt="The Eagle" src="assets/sample.jpg" width="150" />
76 <figcaption>The Eagle in lunar orbit</figcaption>
77 </figure>
78
79 <ul>
80 <li>Foo!</li>
81 <li>Bar!</li>
82 </ul>
83
84 <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur sit amet orci ut nisi adipiscing ultrices. Sed pellentesque iaculis malesuada. Pellentesque scelerisque, purus non porta dictum, neque urna bibendum dolor, eget tristique ipsum metus fringilla dolor. Nullam sed accumsan sapien. Vestibulum in placerat magna. Sed justo lacus, volutpat rhoncus odio luctus, ornare adipiscing mauris. Vivamus erat sem, egestas et lectus eget, varius cursus odio. Duis posuere lacus sit amet urna bibendum, id iaculis eros ultrices. Vestibulum a ultrices ante.</p>
85 </div>
86 </div>
87
88 <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur sit amet orci ut nisi adipiscing ultrices. Sed pellentesque iaculis malesuada. Pellentesque scelerisque, purus non porta dictum, neque urna bibendum dolor, eget tristique ipsum metus fringilla dolor. Nullam sed accumsan sapien. Vestibulum in placerat magna. Sed justo lacus, volutpat rhoncus odio luctus, ornare adipiscing mauris. Vivamus erat sem, egestas et lectus eget, varius cursus odio. Duis posuere lacus sit amet urna bibendum, id iaculis eros ultrices. Vestibulum a ultrices ante.</p>
89
90 <p>Pellentesque vitae eleifend nisl, non accumsan tellus. Maecenas nec libero non tellus tincidunt mollis porttitor sed arcu. Donec ultricies nulla vitae eros lacinia, vel congue sem auctor. Vivamus convallis, urna ac tincidunt malesuada, lectus erat convallis metus, a hendrerit massa augue accumsan magna. Nulla mattis tellus elit, nec congue magna scelerisque eget. Aliquam posuere nisi augue, posuere sodales nisi iaculis eu. Donec fermentum urna id nibh sagittis fermentum sit amet sed enim. Aliquam neque elit, pretium elementum nunc a, faucibus accumsan lorem. Etiam pulvinar odio et hendrerit tincidunt. Suspendisse tempus eros lacus, in convallis velit mollis ut. Aenean congue, justo eleifend ultricies malesuada, nunc nunc molestie mauris, eget placerat libero eros vel nisi. Quisque diam arcu, mollis ac laoreet vitae, varius et sem. Interdum et malesuada fames ac ante ipsum primis in faucibus. Duis in vehicula sapien. Nunc feugiat porta elit nec volutpat.</p>
91
92 <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur sit amet orci ut nisi adipiscing ultrices. Sed pellentesque iaculis malesuada. Pellentesque scelerisque, purus non porta dictum, neque urna bibendum dolor, eget tristique ipsum metus fringilla dolor. Nullam sed accumsan sapien. Vestibulum in placerat magna. Sed justo lacus, volutpat rhoncus odio luctus, ornare adipiscing mauris. Vivamus erat sem, egestas et lectus eget, varius cursus odio. Duis posuere lacus sit amet urna bibendum, id iaculis eros ultrices. Vestibulum a ultrices ante.</p>
93
94 <div class="simplebox align-center" style="width: 750px">
95 <h2 class="simplebox-title">Title</h2>
96 <div class="simplebox-content">
97 <p><img alt="The Eagle" src="assets/sample.jpg" width="150" style="float: left" /><strong>Apollo 11</strong> was the spaceflight that landed the first humans, Americans <a href="http://en.wikipedia.org/wiki/Neil_Armstrong" title="Neil Armstrong">Neil Armstrong</a> and <a href="http://en.wikipedia.org/wiki/Buzz_Aldrin" title="Buzz Aldrin">Buzz Aldrin</a>, on the Moon on [[July 20, 1969, at 20:18 UTC]]. Armstrong became the first to step onto the lunar surface 6 hours later on [[July 21 at 02:56 UTC]].</p>
98
99 <ul>
100 <li>Foo!</li>
101 <li>Bar!</li>
102 </ul>
103 </div>
104 </div>
105
106 <p>Ut eget ipsum a sapien porta ultrices. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Vivamus mi lacus, pharetra eu bibendum blandit, tristique sit amet leo. Integer eu nulla nec magna vulputate blandit. Praesent mattis quis ante eget adipiscing. Nulla vel tempus risus, in placerat velit. Mauris sed nibh at elit posuere laoreet. Morbi non sapien sed nunc fringilla imperdiet.</p>
107 </div>
108
109 <script>
110 if ( CKEDITOR.env.ie && CKEDITOR.env.version < 9 )
111 CKEDITOR.tools.enableHtml5Elements( document );
112
113 CKEDITOR.plugins.addExternal( 'simplebox', 'plugins/widget/dev/assets/simplebox/' );
114
115 CKEDITOR.replace( 'editor1', {
116 extraPlugins: 'simplebox,placeholder,image2',
117 removePlugins: 'forms,bidi',
118 contentsCss: [ '../../../contents.css', 'assets/simplebox/contents.css' ],
119 height: 500
120 } );
121
122 CKEDITOR.inline( 'editor2', {
123 extraPlugins: 'simplebox,placeholder,image2',
124 removePlugins: 'forms,bidi'
125 } );
126
127 CKCONSOLE.create( 'widget', { editor: 'editor1' } );
128 CKCONSOLE.create( 'focus', { editor: 'editor1' } );
129 CKCONSOLE.create( 'widget', { editor: 'editor2', folded: true } );
130 CKCONSOLE.create( 'focus', { editor: 'editor2', folded: true } );
131
132 </script>
133</body>
134</html>
diff --git a/sources/plugins/widget/dev/widgetstyles.html b/sources/plugins/widget/dev/widgetstyles.html
new file mode 100644
index 0000000..8e54b8d
--- /dev/null
+++ b/sources/plugins/widget/dev/widgetstyles.html
@@ -0,0 +1,144 @@
1<!DOCTYPE html>
2<!--
3Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved.
4For licensing, see LICENSE.md or http://ckeditor.com/license
5-->
6<html>
7<head>
8 <meta charset="utf-8">
9 <title>Applying styles to widgets &mdash; CKEditor Sample</title>
10 <script src="../../../ckeditor.js"></script>
11 <link rel="stylesheet" href="../../../samples/old/sample.css">
12 <link rel="stylesheet" href="../../../contents.css">
13 <link rel="stylesheet" href="assets/contents.css">
14</head>
15<body>
16 <h1 class="samples">Applying styles to widgets</h1>
17
18 <h2>Classic (iframe-based) Sample</h2>
19 <textarea cols="80" id="editor1" name="editor1" rows="10">
20 <h1>Apollo 11</h1>
21
22 <figure class="image" style="float: right">
23 <img alt="Saturn V" src="../../../samples/assets/sample.jpg" width="150" />
24 <figcaption>Roll out of Saturn V on launch pad</figcaption>
25 </figure>
26
27 <p><strong>Apollo 11</strong> was the spaceflight that landed the first humans, Americans <a href="http://en.wikipedia.org/wiki/Neil_Armstrong" title="Neil Armstrong">Neil Armstrong</a> and <a href="http://en.wikipedia.org/wiki/Buzz_Aldrin" title="Buzz Aldrin">Buzz Aldrin</a>, on the Moon on [[July 20, 1969, at 20:18 UTC]]. Armstrong became the first to step onto the lunar surface 6 hours later on [[July 21 at 02:56 UTC]].</p>
28
29 <p>Armstrong spent about <s>three and a half</s> two and a half hours outside the spacecraft, Aldrin slightly less; and together they collected 47.5 pounds (21.5&nbsp;kg) of lunar material for return to Earth. A third member of the mission, <a href="http://en.wikipedia.org/wiki/Michael_Collins_(astronaut)" title="Michael Collins (astronaut)">Michael Collins</a>, piloted the <a href="http://en.wikipedia.org/wiki/Apollo_Command/Service_Module" title="Apollo Command/Service Module">command</a> spacecraft alone in lunar orbit until Armstrong and Aldrin returned to it for the trip back to Earth.</p>
30
31 <h2>Broadcasting and <em>quotes</em> <a id="quotes" name="quotes"></a></h2>
32
33 <p>Broadcast on live TV to a world-wide audience, Armstrong stepped onto the lunar surface and described the event as:</p>
34
35 <blockquote>
36 <p>One small step for [a] man, one giant leap for mankind.</p>
37 </blockquote>
38
39 <p><span class="math-tex">\( \left( \sum_{k=1}^n a_k b_k \right)^2 \leq \left( \sum_{k=1}^n a_k^2 \right) \left( \sum_{k=1}^n b_k^2 \right) \)</span></p>
40
41 <p>Apollo 11 effectively ended the <a href="http://en.wikipedia.org/wiki/Space_Race" title="Space Race">Space Race</a> and fulfilled a national goal proposed in 1961 by the late U.S. President <a href="http://en.wikipedia.org/wiki/John_F._Kennedy" title="John F. Kennedy">John F. Kennedy</a> in a speech before the United States Congress:</p>
42
43 <blockquote>
44 <p>[...] before this decade is out, of landing a man on the Moon and returning him safely to the Earth.</p>
45 </blockquote>
46
47 <figure class="image" style="float: right">
48 <img alt="The Eagle" src="../../../samples/assets/sample.jpg" width="150" />
49 <figcaption>The Eagle in lunar orbit</figcaption>
50 </figure>
51
52 <h2>Technical details <a id="tech-details" name="tech-details"></a></h2>
53
54 <p>Launched by a <strong>Saturn V</strong> rocket from <a href="http://en.wikipedia.org/wiki/Kennedy_Space_Center" title="Kennedy Space Center">Kennedy Space Center</a> in Merritt Island, Florida on July 16, Apollo 11 was the fifth manned mission of <a href="http://en.wikipedia.org/wiki/NASA" title="NASA">NASA</a>&#39;s Apollo program. The Apollo spacecraft had three parts:</p>
55
56 <ol>
57 <li><strong>Command Module</strong> with a cabin for the three astronauts which was the only part which landed back on Earth</li>
58 <li><strong>Service Module</strong> which supported the Command Module with propulsion, electrical power, oxygen and water</li>
59 <li><strong>Lunar Module</strong> for landing on the Moon.</li>
60 </ol>
61
62 <p>After being sent to the Moon by the Saturn V&#39;s upper stage, the astronauts separated the spacecraft from it and travelled for three days until they entered into lunar orbit. Armstrong and Aldrin then moved into the Lunar Module and landed in the <a href="http://en.wikipedia.org/wiki/Mare_Tranquillitatis" title="Mare Tranquillitatis">Sea of Tranquility</a>. They stayed a total of about 21 and a half hours on the lunar surface. After lifting off in the upper part of the Lunar Module and rejoining Collins in the Command Module, they returned to Earth and landed in the <a href="http://en.wikipedia.org/wiki/Pacific_Ocean" title="Pacific Ocean">Pacific Ocean</a> on July 24.</p>
63 </textarea>
64
65 <h2>Inline Sample</h2>
66 <div id="editor2" contenteditable="true">
67 <h1>Apollo 11</h1>
68
69 <figure class="image" style="float: right">
70 <img alt="Saturn V" src="../../../samples/assets/sample.jpg" width="150" />
71 <figcaption>Roll out of Saturn V on launch pad</figcaption>
72 </figure>
73
74 <p><strong>Apollo 11</strong> was the spaceflight that landed the first humans, Americans <a href="http://en.wikipedia.org/wiki/Neil_Armstrong" title="Neil Armstrong">Neil Armstrong</a> and <a href="http://en.wikipedia.org/wiki/Buzz_Aldrin" title="Buzz Aldrin">Buzz Aldrin</a>, on the Moon on [[July 20, 1969, at 20:18 UTC]]. Armstrong became the first to step onto the lunar surface 6 hours later on [[July 21 at 02:56 UTC]].</p>
75
76 <p>Armstrong spent about <s>three and a half</s> two and a half hours outside the spacecraft, Aldrin slightly less; and together they collected 47.5 pounds (21.5&nbsp;kg) of lunar material for return to Earth. A third member of the mission, <a href="http://en.wikipedia.org/wiki/Michael_Collins_(astronaut)" title="Michael Collins (astronaut)">Michael Collins</a>, piloted the <a href="http://en.wikipedia.org/wiki/Apollo_Command/Service_Module" title="Apollo Command/Service Module">command</a> spacecraft alone in lunar orbit until Armstrong and Aldrin returned to it for the trip back to Earth.</p>
77
78 <h2>Broadcasting and <em>quotes</em> <a id="quotes" name="quotes"></a></h2>
79
80 <p>Broadcast on live TV to a world-wide audience, Armstrong stepped onto the lunar surface and described the event as:</p>
81
82 <blockquote>
83 <p>One small step for [a] man, one giant leap for mankind.</p>
84 </blockquote>
85
86 <p><span class="math-tex">\( \left( \sum_{k=1}^n a_k b_k \right)^2 \leq \left( \sum_{k=1}^n a_k^2 \right) \left( \sum_{k=1}^n b_k^2 \right) \)</span></p>
87
88 <p>Apollo 11 effectively ended the <a href="http://en.wikipedia.org/wiki/Space_Race" title="Space Race">Space Race</a> and fulfilled a national goal proposed in 1961 by the late U.S. President <a href="http://en.wikipedia.org/wiki/John_F._Kennedy" title="John F. Kennedy">John F. Kennedy</a> in a speech before the United States Congress:</p>
89
90 <blockquote>
91 <p>[...] before this decade is out, of landing a man on the Moon and returning him safely to the Earth.</p>
92 </blockquote>
93
94 <figure class="image" style="float: right">
95 <img alt="The Eagle" src="../../../samples/assets/sample.jpg" width="150" />
96 <figcaption>The Eagle in lunar orbit</figcaption>
97 </figure>
98
99 <h2>Technical details <a id="tech-details" name="tech-details"></a></h2>
100
101 <p>Launched by a <strong>Saturn V</strong> rocket from <a href="http://en.wikipedia.org/wiki/Kennedy_Space_Center" title="Kennedy Space Center">Kennedy Space Center</a> in Merritt Island, Florida on July 16, Apollo 11 was the fifth manned mission of <a href="http://en.wikipedia.org/wiki/NASA" title="NASA">NASA</a>&#39;s Apollo program. The Apollo spacecraft had three parts:</p>
102
103 <ol>
104 <li><strong>Command Module</strong> with a cabin for the three astronauts which was the only part which landed back on Earth</li>
105 <li><strong>Service Module</strong> which supported the Command Module with propulsion, electrical power, oxygen and water</li>
106 <li><strong>Lunar Module</strong> for landing on the Moon.</li>
107 </ol>
108
109 <p>After being sent to the Moon by the Saturn V&#39;s upper stage, the astronauts separated the spacecraft from it and travelled for three days until they entered into lunar orbit. Armstrong and Aldrin then moved into the Lunar Module and landed in the <a href="http://en.wikipedia.org/wiki/Mare_Tranquillitatis" title="Mare Tranquillitatis">Sea of Tranquility</a>. They stayed a total of about 21 and a half hours on the lunar surface. After lifting off in the upper part of the Lunar Module and rejoining Collins in the Command Module, they returned to Earth and landed in the <a href="http://en.wikipedia.org/wiki/Pacific_Ocean" title="Pacific Ocean">Pacific Ocean</a> on July 24.</p>
110 </div>
111
112 <script>
113 if ( CKEDITOR.env.ie && CKEDITOR.env.version < 9 )
114 CKEDITOR.tools.enableHtml5Elements( document );
115
116 CKEDITOR.disableAutoInline = true;
117
118 var stylesSet = [
119 { name: 'Medium border', type: 'widget', widget: 'image', attributes: { 'class': 'mediumBorder' } },
120 { name: 'Thick border', type: 'widget', widget: 'image', attributes: { 'class': 'thickBorder' } },
121 { name: 'So important', type: 'widget', widget: 'image', attributes: { 'class': 'important soMuch' } },
122
123 { name: 'Red marker', type: 'widget', widget: 'placeholder', attributes: { 'class': 'redMarker' } },
124 { name: 'Invisible Placeholder', type: 'widget', widget: 'placeholder', attributes: { 'class': 'invisible' } },
125
126 { name: 'Invisible Mathjax', type: 'widget', widget: 'mathjax', attributes: { 'class': 'invisible' } }
127 ];
128
129 CKEDITOR.replace( 'editor1', {
130 extraPlugins: 'placeholder,image2,mathjax',
131 contentsCss: [ '../../../contents.css', 'assets/contents.css' ],
132 stylesSet: stylesSet,
133 height: 300
134 } );
135
136 CKEDITOR.inline( 'editor2', {
137 extraPlugins: 'placeholder,image2,mathjax',
138 stylesSet: stylesSet,
139 height: 300
140 } );
141
142 </script>
143</body>
144</html>
diff --git a/sources/plugins/widget/images/handle.png b/sources/plugins/widget/images/handle.png
new file mode 100644
index 0000000..ba8cda5
--- /dev/null
+++ b/sources/plugins/widget/images/handle.png
Binary files differ
diff --git a/sources/plugins/widget/lang/af.js b/sources/plugins/widget/lang/af.js
new file mode 100644
index 0000000..e37c598
--- /dev/null
+++ b/sources/plugins/widget/lang/af.js
@@ -0,0 +1,8 @@
1/**
2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */
5CKEDITOR.plugins.setLang( 'widget', 'af', {
6 'move': 'Klik en trek on te beweeg',
7 'label': '%1 widget' // MISSING
8} );
diff --git a/sources/plugins/widget/lang/ar.js b/sources/plugins/widget/lang/ar.js
new file mode 100644
index 0000000..0a4f8eb
--- /dev/null
+++ b/sources/plugins/widget/lang/ar.js
@@ -0,0 +1,8 @@
1/**
2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */
5CKEDITOR.plugins.setLang( 'widget', 'ar', {
6 'move': 'إضغط و إسحب للتحريك',
7 'label': '%1 widget' // MISSING
8} );
diff --git a/sources/plugins/widget/lang/az.js b/sources/plugins/widget/lang/az.js
new file mode 100644
index 0000000..24ddaf3
--- /dev/null
+++ b/sources/plugins/widget/lang/az.js
@@ -0,0 +1,8 @@
1/**
2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */
5CKEDITOR.plugins.setLang( 'widget', 'az', {
6 'move': 'Tıklayın və aparın',
7 'label': '%1 vidjet'
8} );
diff --git a/sources/plugins/widget/lang/bg.js b/sources/plugins/widget/lang/bg.js
new file mode 100644
index 0000000..9b51458
--- /dev/null
+++ b/sources/plugins/widget/lang/bg.js
@@ -0,0 +1,8 @@
1/**
2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */
5CKEDITOR.plugins.setLang( 'widget', 'bg', {
6 'move': 'Кликни и влачи, за да преместиш',
7 'label': '%1 widget' // MISSING
8} );
diff --git a/sources/plugins/widget/lang/ca.js b/sources/plugins/widget/lang/ca.js
new file mode 100644
index 0000000..f46a4f8
--- /dev/null
+++ b/sources/plugins/widget/lang/ca.js
@@ -0,0 +1,8 @@
1/**
2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */
5CKEDITOR.plugins.setLang( 'widget', 'ca', {
6 'move': 'Clicar i arrossegar per moure',
7 'label': '%1 widget'
8} );
diff --git a/sources/plugins/widget/lang/cs.js b/sources/plugins/widget/lang/cs.js
new file mode 100644
index 0000000..5d9590b
--- /dev/null
+++ b/sources/plugins/widget/lang/cs.js
@@ -0,0 +1,8 @@
1/**
2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */
5CKEDITOR.plugins.setLang( 'widget', 'cs', {
6 'move': 'Klepněte a táhněte pro přesunutí',
7 'label': 'Ovládací prvek %1'
8} );
diff --git a/sources/plugins/widget/lang/cy.js b/sources/plugins/widget/lang/cy.js
new file mode 100644
index 0000000..29dc110
--- /dev/null
+++ b/sources/plugins/widget/lang/cy.js
@@ -0,0 +1,8 @@
1/**
2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */
5CKEDITOR.plugins.setLang( 'widget', 'cy', {
6 'move': 'Clcio a llusgo i symud',
7 'label': '%1 widget' // MISSING
8} );
diff --git a/sources/plugins/widget/lang/da.js b/sources/plugins/widget/lang/da.js
new file mode 100644
index 0000000..8dfe785
--- /dev/null
+++ b/sources/plugins/widget/lang/da.js
@@ -0,0 +1,8 @@
1/**
2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */
5CKEDITOR.plugins.setLang( 'widget', 'da', {
6 'move': 'Klik og træk for at flytte',
7 'label': '%1 widget' // MISSING
8} );
diff --git a/sources/plugins/widget/lang/de-ch.js b/sources/plugins/widget/lang/de-ch.js
new file mode 100644
index 0000000..a95febb
--- /dev/null
+++ b/sources/plugins/widget/lang/de-ch.js
@@ -0,0 +1,8 @@
1/**
2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */
5CKEDITOR.plugins.setLang( 'widget', 'de-ch', {
6 'move': 'Zum Verschieben anwählen und ziehen',
7 'label': '%1 widget' // MISSING
8} );
diff --git a/sources/plugins/widget/lang/de.js b/sources/plugins/widget/lang/de.js
new file mode 100644
index 0000000..838ad89
--- /dev/null
+++ b/sources/plugins/widget/lang/de.js
@@ -0,0 +1,8 @@
1/**
2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */
5CKEDITOR.plugins.setLang( 'widget', 'de', {
6 'move': 'Zum Verschieben anwählen und ziehen',
7 'label': '%1 Steuerelement'
8} );
diff --git a/sources/plugins/widget/lang/el.js b/sources/plugins/widget/lang/el.js
new file mode 100644
index 0000000..863604a
--- /dev/null
+++ b/sources/plugins/widget/lang/el.js
@@ -0,0 +1,8 @@
1/**
2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */
5CKEDITOR.plugins.setLang( 'widget', 'el', {
6 'move': 'Κάνετε κλικ και σύρετε το ποντίκι για να μετακινήστε',
7 'label': '%1 widget' // MISSING
8} );
diff --git a/sources/plugins/widget/lang/en-gb.js b/sources/plugins/widget/lang/en-gb.js
new file mode 100644
index 0000000..ed09606
--- /dev/null
+++ b/sources/plugins/widget/lang/en-gb.js
@@ -0,0 +1,8 @@
1/**
2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */
5CKEDITOR.plugins.setLang( 'widget', 'en-gb', {
6 'move': 'Click and drag to move',
7 'label': '%1 widget' // MISSING
8} );
diff --git a/sources/plugins/widget/lang/en.js b/sources/plugins/widget/lang/en.js
new file mode 100644
index 0000000..5967f4d
--- /dev/null
+++ b/sources/plugins/widget/lang/en.js
@@ -0,0 +1,8 @@
1/**
2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */
5CKEDITOR.plugins.setLang( 'widget', 'en', {
6 'move': 'Click and drag to move',
7 'label': '%1 widget'
8} );
diff --git a/sources/plugins/widget/lang/eo.js b/sources/plugins/widget/lang/eo.js
new file mode 100644
index 0000000..381511a
--- /dev/null
+++ b/sources/plugins/widget/lang/eo.js
@@ -0,0 +1,8 @@
1/**
2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */
5CKEDITOR.plugins.setLang( 'widget', 'eo', {
6 'move': 'klaki kaj treni por movi',
7 'label': '%1 fenestraĵo'
8} );
diff --git a/sources/plugins/widget/lang/es-mx.js b/sources/plugins/widget/lang/es-mx.js
new file mode 100644
index 0000000..279ea3e
--- /dev/null
+++ b/sources/plugins/widget/lang/es-mx.js
@@ -0,0 +1,8 @@
1/**
2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */
5CKEDITOR.plugins.setLang( 'widget', 'es-mx', {
6 'move': 'Presiona y arrastra para mover',
7 'label': '%1 widget'
8} );
diff --git a/sources/plugins/widget/lang/es.js b/sources/plugins/widget/lang/es.js
new file mode 100644
index 0000000..d8deb2c
--- /dev/null
+++ b/sources/plugins/widget/lang/es.js
@@ -0,0 +1,8 @@
1/**
2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */
5CKEDITOR.plugins.setLang( 'widget', 'es', {
6 'move': 'Dar clic y arrastrar para mover',
7 'label': 'reproductor %1'
8} );
diff --git a/sources/plugins/widget/lang/eu.js b/sources/plugins/widget/lang/eu.js
new file mode 100644
index 0000000..e128dfe
--- /dev/null
+++ b/sources/plugins/widget/lang/eu.js
@@ -0,0 +1,8 @@
1/**
2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */
5CKEDITOR.plugins.setLang( 'widget', 'eu', {
6 'move': 'Klikatu eta arrastatu lekuz aldatzeko',
7 'label': '%1 widget'
8} );
diff --git a/sources/plugins/widget/lang/fa.js b/sources/plugins/widget/lang/fa.js
new file mode 100644
index 0000000..57ea31f
--- /dev/null
+++ b/sources/plugins/widget/lang/fa.js
@@ -0,0 +1,8 @@
1/**
2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */
5CKEDITOR.plugins.setLang( 'widget', 'fa', {
6 'move': 'کلیک و کشیدن برای جابجایی',
7 'label': '%1 widget' // MISSING
8} );
diff --git a/sources/plugins/widget/lang/fi.js b/sources/plugins/widget/lang/fi.js
new file mode 100644
index 0000000..759b2cf
--- /dev/null
+++ b/sources/plugins/widget/lang/fi.js
@@ -0,0 +1,8 @@
1/**
2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */
5CKEDITOR.plugins.setLang( 'widget', 'fi', {
6 'move': 'Siirrä klikkaamalla ja raahaamalla',
7 'label': '%1 widget' // MISSING
8} );
diff --git a/sources/plugins/widget/lang/fr.js b/sources/plugins/widget/lang/fr.js
new file mode 100644
index 0000000..9decbf6
--- /dev/null
+++ b/sources/plugins/widget/lang/fr.js
@@ -0,0 +1,8 @@
1/**
2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */
5CKEDITOR.plugins.setLang( 'widget', 'fr', {
6 'move': 'Cliquer et glisser pour déplacer',
7 'label': 'Élément %1'
8} );
diff --git a/sources/plugins/widget/lang/gl.js b/sources/plugins/widget/lang/gl.js
new file mode 100644
index 0000000..32f65d1
--- /dev/null
+++ b/sources/plugins/widget/lang/gl.js
@@ -0,0 +1,8 @@
1/**
2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */
5CKEDITOR.plugins.setLang( 'widget', 'gl', {
6 'move': 'Prema e arrastre para mover',
7 'label': 'Trebello %1'
8} );
diff --git a/sources/plugins/widget/lang/he.js b/sources/plugins/widget/lang/he.js
new file mode 100644
index 0000000..b8dd2cb
--- /dev/null
+++ b/sources/plugins/widget/lang/he.js
@@ -0,0 +1,8 @@
1/**
2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */
5CKEDITOR.plugins.setLang( 'widget', 'he', {
6 'move': 'לחץ וגרור להזזה',
7 'label': '%1 widget' // MISSING
8} );
diff --git a/sources/plugins/widget/lang/hr.js b/sources/plugins/widget/lang/hr.js
new file mode 100644
index 0000000..6b47d95
--- /dev/null
+++ b/sources/plugins/widget/lang/hr.js
@@ -0,0 +1,8 @@
1/**
2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */
5CKEDITOR.plugins.setLang( 'widget', 'hr', {
6 'move': 'Klikni i povuci za pomicanje',
7 'label': '%1 widget'
8} );
diff --git a/sources/plugins/widget/lang/hu.js b/sources/plugins/widget/lang/hu.js
new file mode 100644
index 0000000..a06047f
--- /dev/null
+++ b/sources/plugins/widget/lang/hu.js
@@ -0,0 +1,8 @@
1/**
2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */
5CKEDITOR.plugins.setLang( 'widget', 'hu', {
6 'move': 'Kattints és húzd a mozgatáshoz',
7 'label': '%1 modul'
8} );
diff --git a/sources/plugins/widget/lang/id.js b/sources/plugins/widget/lang/id.js
new file mode 100644
index 0000000..ef19392
--- /dev/null
+++ b/sources/plugins/widget/lang/id.js
@@ -0,0 +1,8 @@
1/**
2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */
5CKEDITOR.plugins.setLang( 'widget', 'id', {
6 'move': 'Tekan dan geser untuk memindahkan',
7 'label': '%1 widget' // MISSING
8} );
diff --git a/sources/plugins/widget/lang/it.js b/sources/plugins/widget/lang/it.js
new file mode 100644
index 0000000..59b43f6
--- /dev/null
+++ b/sources/plugins/widget/lang/it.js
@@ -0,0 +1,8 @@
1/**
2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */
5CKEDITOR.plugins.setLang( 'widget', 'it', {
6 'move': 'Fare clic e trascinare per spostare',
7 'label': 'Widget %1'
8} );
diff --git a/sources/plugins/widget/lang/ja.js b/sources/plugins/widget/lang/ja.js
new file mode 100644
index 0000000..a742718
--- /dev/null
+++ b/sources/plugins/widget/lang/ja.js
@@ -0,0 +1,8 @@
1/**
2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */
5CKEDITOR.plugins.setLang( 'widget', 'ja', {
6 'move': 'ドラッグして移動',
7 'label': '%1 ウィジェット'
8} );
diff --git a/sources/plugins/widget/lang/km.js b/sources/plugins/widget/lang/km.js
new file mode 100644
index 0000000..6c61c73
--- /dev/null
+++ b/sources/plugins/widget/lang/km.js
@@ -0,0 +1,8 @@
1/**
2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */
5CKEDITOR.plugins.setLang( 'widget', 'km', {
6 'move': 'ចុច​ហើយ​ទាញ​ដើម្បី​ផ្លាស់​ទី',
7 'label': '%1 widget' // MISSING
8} );
diff --git a/sources/plugins/widget/lang/ko.js b/sources/plugins/widget/lang/ko.js
new file mode 100644
index 0000000..03afb95
--- /dev/null
+++ b/sources/plugins/widget/lang/ko.js
@@ -0,0 +1,8 @@
1/**
2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */
5CKEDITOR.plugins.setLang( 'widget', 'ko', {
6 'move': '움직이려면 클릭 후 드래그 하세요',
7 'label': '%1 위젯'
8} );
diff --git a/sources/plugins/widget/lang/ku.js b/sources/plugins/widget/lang/ku.js
new file mode 100644
index 0000000..2af50cb
--- /dev/null
+++ b/sources/plugins/widget/lang/ku.js
@@ -0,0 +1,8 @@
1/**
2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */
5CKEDITOR.plugins.setLang( 'widget', 'ku', {
6 'move': 'کرتەبکە و ڕایبکێشە بۆ جوڵاندن',
7 'label': '%1 ویجێت'
8} );
diff --git a/sources/plugins/widget/lang/lv.js b/sources/plugins/widget/lang/lv.js
new file mode 100644
index 0000000..e5fc3ac
--- /dev/null
+++ b/sources/plugins/widget/lang/lv.js
@@ -0,0 +1,8 @@
1/**
2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */
5CKEDITOR.plugins.setLang( 'widget', 'lv', {
6 'move': 'Klikšķina un velc, lai pārvietotu',
7 'label': '%1 widget' // MISSING
8} );
diff --git a/sources/plugins/widget/lang/nb.js b/sources/plugins/widget/lang/nb.js
new file mode 100644
index 0000000..af46bc9
--- /dev/null
+++ b/sources/plugins/widget/lang/nb.js
@@ -0,0 +1,8 @@
1/**
2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */
5CKEDITOR.plugins.setLang( 'widget', 'nb', {
6 'move': 'Klikk og dra for å flytte',
7 'label': 'Widget %1'
8} );
diff --git a/sources/plugins/widget/lang/nl.js b/sources/plugins/widget/lang/nl.js
new file mode 100644
index 0000000..56b182c
--- /dev/null
+++ b/sources/plugins/widget/lang/nl.js
@@ -0,0 +1,8 @@
1/**
2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */
5CKEDITOR.plugins.setLang( 'widget', 'nl', {
6 'move': 'Klik en sleep om te verplaatsen',
7 'label': '%1 widget'
8} );
diff --git a/sources/plugins/widget/lang/no.js b/sources/plugins/widget/lang/no.js
new file mode 100644
index 0000000..b86bd7b
--- /dev/null
+++ b/sources/plugins/widget/lang/no.js
@@ -0,0 +1,8 @@
1/**
2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */
5CKEDITOR.plugins.setLang( 'widget', 'no', {
6 'move': 'Klikk og dra for å flytte',
7 'label': 'Widget %1'
8} );
diff --git a/sources/plugins/widget/lang/oc.js b/sources/plugins/widget/lang/oc.js
new file mode 100644
index 0000000..10ff842
--- /dev/null
+++ b/sources/plugins/widget/lang/oc.js
@@ -0,0 +1,8 @@
1/**
2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */
5CKEDITOR.plugins.setLang( 'widget', 'oc', {
6 'move': 'Clicar e lisar per desplaçar',
7 'label': 'Element %1'
8} );
diff --git a/sources/plugins/widget/lang/pl.js b/sources/plugins/widget/lang/pl.js
new file mode 100644
index 0000000..2d90df8
--- /dev/null
+++ b/sources/plugins/widget/lang/pl.js
@@ -0,0 +1,8 @@
1/**
2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */
5CKEDITOR.plugins.setLang( 'widget', 'pl', {
6 'move': 'Kliknij i przeciągnij, by przenieść.',
7 'label': 'Widget %1'
8} );
diff --git a/sources/plugins/widget/lang/pt-br.js b/sources/plugins/widget/lang/pt-br.js
new file mode 100644
index 0000000..9ce9be4
--- /dev/null
+++ b/sources/plugins/widget/lang/pt-br.js
@@ -0,0 +1,8 @@
1/**
2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */
5CKEDITOR.plugins.setLang( 'widget', 'pt-br', {
6 'move': 'Click e arraste para mover',
7 'label': '%1 widget'
8} );
diff --git a/sources/plugins/widget/lang/pt.js b/sources/plugins/widget/lang/pt.js
new file mode 100644
index 0000000..422ef93
--- /dev/null
+++ b/sources/plugins/widget/lang/pt.js
@@ -0,0 +1,8 @@
1/**
2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */
5CKEDITOR.plugins.setLang( 'widget', 'pt', {
6 'move': 'Clique e arraste para mover',
7 'label': '%1 widget' // MISSING
8} );
diff --git a/sources/plugins/widget/lang/ru.js b/sources/plugins/widget/lang/ru.js
new file mode 100644
index 0000000..d6f36f5
--- /dev/null
+++ b/sources/plugins/widget/lang/ru.js
@@ -0,0 +1,8 @@
1/**
2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */
5CKEDITOR.plugins.setLang( 'widget', 'ru', {
6 'move': 'Нажмите и перетащите, чтобы переместить',
7 'label': '%1 виджет'
8} );
diff --git a/sources/plugins/widget/lang/sk.js b/sources/plugins/widget/lang/sk.js
new file mode 100644
index 0000000..5bf4cc0
--- /dev/null
+++ b/sources/plugins/widget/lang/sk.js
@@ -0,0 +1,8 @@
1/**
2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */
5CKEDITOR.plugins.setLang( 'widget', 'sk', {
6 'move': 'Kliknite a potiahnite pre presunutie',
7 'label': '%1 widget'
8} );
diff --git a/sources/plugins/widget/lang/sl.js b/sources/plugins/widget/lang/sl.js
new file mode 100644
index 0000000..96ffd1e
--- /dev/null
+++ b/sources/plugins/widget/lang/sl.js
@@ -0,0 +1,8 @@
1/**
2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */
5CKEDITOR.plugins.setLang( 'widget', 'sl', {
6 'move': 'Kliknite in povlecite, da premaknete',
7 'label': '%1 widget' // MISSING
8} );
diff --git a/sources/plugins/widget/lang/sq.js b/sources/plugins/widget/lang/sq.js
new file mode 100644
index 0000000..ad46c7d
--- /dev/null
+++ b/sources/plugins/widget/lang/sq.js
@@ -0,0 +1,8 @@
1/**
2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */
5CKEDITOR.plugins.setLang( 'widget', 'sq', {
6 'move': 'Kliko dhe tërhiqe për ta lëvizur',
7 'label': '%1 widget' // MISSING
8} );
diff --git a/sources/plugins/widget/lang/sv.js b/sources/plugins/widget/lang/sv.js
new file mode 100644
index 0000000..7faff37
--- /dev/null
+++ b/sources/plugins/widget/lang/sv.js
@@ -0,0 +1,8 @@
1/**
2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */
5CKEDITOR.plugins.setLang( 'widget', 'sv', {
6 'move': 'Klicka och drag för att flytta',
7 'label': '%1-widget'
8} );
diff --git a/sources/plugins/widget/lang/tr.js b/sources/plugins/widget/lang/tr.js
new file mode 100644
index 0000000..92fa952
--- /dev/null
+++ b/sources/plugins/widget/lang/tr.js
@@ -0,0 +1,8 @@
1/**
2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */
5CKEDITOR.plugins.setLang( 'widget', 'tr', {
6 'move': 'Taşımak için, tıklayın ve sürükleyin',
7 'label': '%1 Grafik Beleşeni'
8} );
diff --git a/sources/plugins/widget/lang/tt.js b/sources/plugins/widget/lang/tt.js
new file mode 100644
index 0000000..30fb31a
--- /dev/null
+++ b/sources/plugins/widget/lang/tt.js
@@ -0,0 +1,8 @@
1/**
2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */
5CKEDITOR.plugins.setLang( 'widget', 'tt', {
6 'move': 'Күчереп куер өчен басып шудырыгыз',
7 'label': '%1 widget' // MISSING
8} );
diff --git a/sources/plugins/widget/lang/ug.js b/sources/plugins/widget/lang/ug.js
new file mode 100644
index 0000000..fc216c4
--- /dev/null
+++ b/sources/plugins/widget/lang/ug.js
@@ -0,0 +1,8 @@
1/**
2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */
5CKEDITOR.plugins.setLang( 'widget', 'ug', {
6 'move': 'يۆتكەشتە چېكىپ سۆرەڭ',
7 'label': '%1 widget' // MISSING
8} );
diff --git a/sources/plugins/widget/lang/uk.js b/sources/plugins/widget/lang/uk.js
new file mode 100644
index 0000000..fab6d5d
--- /dev/null
+++ b/sources/plugins/widget/lang/uk.js
@@ -0,0 +1,8 @@
1/**
2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */
5CKEDITOR.plugins.setLang( 'widget', 'uk', {
6 'move': 'Клікніть і потягніть для переміщення',
7 'label': '%1 віджет'
8} );
diff --git a/sources/plugins/widget/lang/vi.js b/sources/plugins/widget/lang/vi.js
new file mode 100644
index 0000000..2bbe246
--- /dev/null
+++ b/sources/plugins/widget/lang/vi.js
@@ -0,0 +1,8 @@
1/**
2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */
5CKEDITOR.plugins.setLang( 'widget', 'vi', {
6 'move': 'Nhấp chuột và kéo để di chuyển',
7 'label': '%1 widget' // MISSING
8} );
diff --git a/sources/plugins/widget/lang/zh-cn.js b/sources/plugins/widget/lang/zh-cn.js
new file mode 100644
index 0000000..2381407
--- /dev/null
+++ b/sources/plugins/widget/lang/zh-cn.js
@@ -0,0 +1,8 @@
1/**
2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */
5CKEDITOR.plugins.setLang( 'widget', 'zh-cn', {
6 'move': '点击并拖拽以移动',
7 'label': '%1 小部件'
8} );
diff --git a/sources/plugins/widget/lang/zh.js b/sources/plugins/widget/lang/zh.js
new file mode 100644
index 0000000..b6e945b
--- /dev/null
+++ b/sources/plugins/widget/lang/zh.js
@@ -0,0 +1,8 @@
1/**
2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */
5CKEDITOR.plugins.setLang( 'widget', 'zh', {
6 'move': '拖曳以移動',
7 'label': '%1 小工具'
8} );
diff --git a/sources/plugins/widget/plugin.js b/sources/plugins/widget/plugin.js
new file mode 100644
index 0000000..2708e09
--- /dev/null
+++ b/sources/plugins/widget/plugin.js
@@ -0,0 +1,4147 @@
1/**
2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */
5
6/**
7 * @fileOverview [Widget](http://ckeditor.com/addon/widget) plugin.
8 */
9
10'use strict';
11
12( function() {
13 var DRAG_HANDLER_SIZE = 15;
14
15 CKEDITOR.plugins.add( 'widget', {
16 // jscs:disable maximumLineLength
17 lang: 'af,ar,az,bg,ca,cs,cy,da,de,de-ch,el,en,en-gb,eo,es,es-mx,eu,fa,fi,fr,gl,he,hr,hu,id,it,ja,km,ko,ku,lv,nb,nl,no,oc,pl,pt,pt-br,ru,sk,sl,sq,sv,tr,tt,ug,uk,vi,zh,zh-cn', // %REMOVE_LINE_CORE%
18 // jscs:enable maximumLineLength
19 requires: 'lineutils,clipboard,widgetselection',
20 onLoad: function() {
21 CKEDITOR.addCss(
22 '.cke_widget_wrapper{' +
23 'position:relative;' +
24 'outline:none' +
25 '}' +
26 '.cke_widget_inline{' +
27 'display:inline-block' +
28 '}' +
29 '.cke_widget_wrapper:hover>.cke_widget_element{' +
30 'outline:2px solid yellow;' +
31 'cursor:default' +
32 '}' +
33 '.cke_widget_wrapper:hover .cke_widget_editable{' +
34 'outline:2px solid yellow' +
35 '}' +
36 '.cke_widget_wrapper.cke_widget_focused>.cke_widget_element,' +
37 // We need higher specificity than hover style.
38 '.cke_widget_wrapper .cke_widget_editable.cke_widget_editable_focused{' +
39 'outline:2px solid #ace' +
40 '}' +
41 '.cke_widget_editable{' +
42 'cursor:text' +
43 '}' +
44 '.cke_widget_drag_handler_container{' +
45 'position:absolute;' +
46 'width:' + DRAG_HANDLER_SIZE + 'px;' +
47 'height:0;' +
48 // Initially drag handler should not be visible, until its position will be
49 // calculated (http://dev.ckeditor.com/ticket/11177).
50 // We need to hide unpositined handlers, so they don't extend
51 // widget's outline far to the left (http://dev.ckeditor.com/ticket/12024).
52 'display:none;' +
53 'opacity:0.75;' +
54 'transition:height 0s 0.2s;' + // Delay hiding drag handler.
55 // Prevent drag handler from being misplaced (http://dev.ckeditor.com/ticket/11198).
56 'line-height:0' +
57 '}' +
58 '.cke_widget_wrapper:hover>.cke_widget_drag_handler_container{' +
59 'height:' + DRAG_HANDLER_SIZE + 'px;' +
60 'transition:none' +
61 '}' +
62 '.cke_widget_drag_handler_container:hover{' +
63 'opacity:1' +
64 '}' +
65 'img.cke_widget_drag_handler{' +
66 'cursor:move;' +
67 'width:' + DRAG_HANDLER_SIZE + 'px;' +
68 'height:' + DRAG_HANDLER_SIZE + 'px;' +
69 'display:inline-block' +
70 '}' +
71 '.cke_widget_mask{' +
72 'position:absolute;' +
73 'top:0;' +
74 'left:0;' +
75 'width:100%;' +
76 'height:100%;' +
77 'display:block' +
78 '}' +
79 '.cke_editable.cke_widget_dragging, .cke_editable.cke_widget_dragging *{' +
80 'cursor:move !important' +
81 '}'
82 );
83 },
84
85 beforeInit: function( editor ) {
86 /**
87 * An instance of widget repository. It contains all
88 * {@link CKEDITOR.plugins.widget.repository#registered registered widget definitions} and
89 * {@link CKEDITOR.plugins.widget.repository#instances initialized instances}.
90 *
91 * editor.widgets.add( 'someName', {
92 * // Widget definition...
93 * } );
94 *
95 * editor.widgets.registered.someName; // -> Widget definition
96 *
97 * @since 4.3
98 * @readonly
99 * @property {CKEDITOR.plugins.widget.repository} widgets
100 * @member CKEDITOR.editor
101 */
102 editor.widgets = new Repository( editor );
103 },
104
105 afterInit: function( editor ) {
106 addWidgetButtons( editor );
107 setupContextMenu( editor );
108 }
109 } );
110
111 /**
112 * Widget repository. It keeps track of all {@link #registered registered widget definitions} and
113 * {@link #instances initialized instances}. An instance of the repository is available under
114 * the {@link CKEDITOR.editor#widgets} property.
115 *
116 * @class CKEDITOR.plugins.widget.repository
117 * @mixins CKEDITOR.event
118 * @constructor Creates a widget repository instance. Note that the widget plugin automatically
119 * creates a repository instance which is available under the {@link CKEDITOR.editor#widgets} property.
120 * @param {CKEDITOR.editor} editor The editor instance for which the repository will be created.
121 */
122 function Repository( editor ) {
123 /**
124 * The editor instance for which this repository was created.
125 *
126 * @readonly
127 * @property {CKEDITOR.editor} editor
128 */
129 this.editor = editor;
130
131 /**
132 * A hash of registered widget definitions (definition name => {@link CKEDITOR.plugins.widget.definition}).
133 *
134 * To register a definition use the {@link #add} method.
135 *
136 * @readonly
137 */
138 this.registered = {};
139
140 /**
141 * An object containing initialized widget instances (widget id => {@link CKEDITOR.plugins.widget}).
142 *
143 * @readonly
144 */
145 this.instances = {};
146
147 /**
148 * An array of selected widget instances.
149 *
150 * @readonly
151 * @property {CKEDITOR.plugins.widget[]} selected
152 */
153 this.selected = [];
154
155 /**
156 * The focused widget instance. See also {@link CKEDITOR.plugins.widget#event-focus}
157 * and {@link CKEDITOR.plugins.widget#event-blur} events.
158 *
159 * editor.on( 'selectionChange', function() {
160 * if ( editor.widgets.focused ) {
161 * // Do something when a widget is focused...
162 * }
163 * } );
164 *
165 * @readonly
166 * @property {CKEDITOR.plugins.widget} focused
167 */
168 this.focused = null;
169
170 /**
171 * The widget instance that contains the nested editable which is currently focused.
172 *
173 * @readonly
174 * @property {CKEDITOR.plugins.widget} widgetHoldingFocusedEditable
175 */
176 this.widgetHoldingFocusedEditable = null;
177
178 this._ = {
179 nextId: 0,
180 upcasts: [],
181 upcastCallbacks: [],
182 filters: {}
183 };
184
185 setupWidgetsLifecycle( this );
186 setupSelectionObserver( this );
187 setupMouseObserver( this );
188 setupKeyboardObserver( this );
189 setupDragAndDrop( this );
190 setupNativeCutAndCopy( this );
191 }
192
193 Repository.prototype = {
194 /**
195 * Minimum interval between selection checks.
196 *
197 * @private
198 */
199 MIN_SELECTION_CHECK_INTERVAL: 500,
200
201 /**
202 * Adds a widget definition to the repository. Fires the {@link CKEDITOR.editor#widgetDefinition} event
203 * which allows to modify the widget definition which is going to be registered.
204 *
205 * @param {String} name The name of the widget definition.
206 * @param {CKEDITOR.plugins.widget.definition} widgetDef Widget definition.
207 * @returns {CKEDITOR.plugins.widget.definition}
208 */
209 add: function( name, widgetDef ) {
210 // Create prototyped copy of original widget definition, so we won't modify it.
211 widgetDef = CKEDITOR.tools.prototypedCopy( widgetDef );
212 widgetDef.name = name;
213
214 widgetDef._ = widgetDef._ || {};
215
216 this.editor.fire( 'widgetDefinition', widgetDef );
217
218 if ( widgetDef.template )
219 widgetDef.template = new CKEDITOR.template( widgetDef.template );
220
221 addWidgetCommand( this.editor, widgetDef );
222 addWidgetProcessors( this, widgetDef );
223
224 this.registered[ name ] = widgetDef;
225
226 return widgetDef;
227 },
228
229 /**
230 * Adds a callback for element upcasting. Each callback will be executed
231 * for every element which is later tested by upcast methods. If a callback
232 * returns `false`, the element will not be upcasted.
233 *
234 * // Images with the "banner" class will not be upcasted (e.g. to the image widget).
235 * editor.widgets.addUpcastCallback( function( element ) {
236 * if ( element.name == 'img' && element.hasClass( 'banner' ) )
237 * return false;
238 * } );
239 *
240 * @param {Function} callback
241 * @param {CKEDITOR.htmlParser.element} callback.element
242 */
243 addUpcastCallback: function( callback ) {
244 this._.upcastCallbacks.push( callback );
245 },
246
247 /**
248 * Checks the selection to update widget states (selection and focus).
249 *
250 * This method is triggered by the {@link #event-checkSelection} event.
251 */
252 checkSelection: function() {
253 var sel = this.editor.getSelection(),
254 selectedElement = sel.getSelectedElement(),
255 updater = stateUpdater( this ),
256 widget;
257
258 // Widget is focused so commit and finish checking.
259 if ( selectedElement && ( widget = this.getByElement( selectedElement, true ) ) )
260 return updater.focus( widget ).select( widget ).commit();
261
262 var range = sel.getRanges()[ 0 ];
263
264 // No ranges or collapsed range mean that nothing is selected, so commit and finish checking.
265 if ( !range || range.collapsed )
266 return updater.commit();
267
268 // Range is not empty, so create walker checking for wrappers.
269 var walker = new CKEDITOR.dom.walker( range ),
270 wrapper;
271
272 walker.evaluator = Widget.isDomWidgetWrapper;
273
274 while ( ( wrapper = walker.next() ) )
275 updater.select( this.getByElement( wrapper ) );
276
277 updater.commit();
278 },
279
280 /**
281 * Checks if all widget instances are still present in the DOM.
282 * Destroys those instances that are not present.
283 * Reinitializes widgets on widget wrappers for which widget instances
284 * cannot be found. Takes nested widgets into account, too.
285 *
286 * This method triggers the {@link #event-checkWidgets} event whose listeners
287 * can cancel the method's execution or modify its options.
288 *
289 * @param [options] The options object.
290 * @param {Boolean} [options.initOnlyNew] Initializes widgets only on newly wrapped
291 * widget elements (those which still have the `cke_widget_new` class). When this option is
292 * set to `true`, widgets which were invalidated (e.g. by replacing with a cloned DOM structure)
293 * will not be reinitialized. This makes the check faster.
294 * @param {Boolean} [options.focusInited] If only one widget is initialized by
295 * the method, it will be focused.
296 */
297 checkWidgets: function( options ) {
298 this.fire( 'checkWidgets', CKEDITOR.tools.copy( options || {} ) );
299 },
300
301 /**
302 * Removes the widget from the editor and moves the selection to the closest
303 * editable position if the widget was focused before.
304 *
305 * @param {CKEDITOR.plugins.widget} widget The widget instance to be deleted.
306 */
307 del: function( widget ) {
308 if ( this.focused === widget ) {
309 var editor = widget.editor,
310 range = editor.createRange(),
311 found;
312
313 // If haven't found place for caret on the default side,
314 // try to find it on the other side.
315 if ( !( found = range.moveToClosestEditablePosition( widget.wrapper, true ) ) )
316 found = range.moveToClosestEditablePosition( widget.wrapper, false );
317
318 if ( found )
319 editor.getSelection().selectRanges( [ range ] );
320 }
321
322 widget.wrapper.remove();
323 this.destroy( widget, true );
324 },
325
326 /**
327 * Destroys the widget instance and all its nested widgets (widgets inside its nested editables).
328 *
329 * @param {CKEDITOR.plugins.widget} widget The widget instance to be destroyed.
330 * @param {Boolean} [offline] Whether the widget is offline (detached from the DOM tree) &mdash;
331 * in this case the DOM (attributes, classes, etc.) will not be cleaned up.
332 */
333 destroy: function( widget, offline ) {
334 if ( this.widgetHoldingFocusedEditable === widget )
335 setFocusedEditable( this, widget, null, offline );
336
337 widget.destroy( offline );
338 delete this.instances[ widget.id ];
339 this.fire( 'instanceDestroyed', widget );
340 },
341
342 /**
343 * Destroys all widget instances.
344 *
345 * @param {Boolean} [offline] Whether the widgets are offline (detached from the DOM tree) &mdash;
346 * in this case the DOM (attributes, classes, etc.) will not be cleaned up.
347 * @param {CKEDITOR.dom.element} [container] The container within widgets will be destroyed.
348 * This option will be ignored if the `offline` flag was set to `true`, because in such case
349 * it is not possible to find widgets within the passed block.
350 */
351 destroyAll: function( offline, container ) {
352 var widget,
353 id,
354 instances = this.instances;
355
356 if ( container && !offline ) {
357 var wrappers = container.find( '.cke_widget_wrapper' ),
358 l = wrappers.count(),
359 i = 0;
360
361 // Length is constant, because this is not a live node list.
362 // Note: since querySelectorAll returns nodes in document order,
363 // outer widgets are always placed before their nested widgets and therefore
364 // are destroyed before them.
365 for ( ; i < l; ++i ) {
366 widget = this.getByElement( wrappers.getItem( i ), true );
367 // Widget might not be found, because it could be a nested widget,
368 // which would be destroyed when destroying its parent.
369 if ( widget )
370 this.destroy( widget );
371 }
372
373 return;
374 }
375
376 for ( id in instances ) {
377 widget = instances[ id ];
378 this.destroy( widget, offline );
379 }
380 },
381
382 /**
383 * Finalizes a process of widget creation. This includes:
384 *
385 * * inserting widget element into editor,
386 * * marking widget instance as ready (see {@link CKEDITOR.plugins.widget#event-ready}),
387 * * focusing widget instance.
388 *
389 * This method is used by the default widget's command and is called
390 * after widget's dialog (if set) is closed. It may also be used in a
391 * customized process of widget creation and insertion.
392 *
393 * widget.once( 'edit', function() {
394 * // Finalize creation only of not ready widgets.
395 * if ( widget.isReady() )
396 * return;
397 *
398 * // Cancel edit event to prevent automatic widget insertion.
399 * evt.cancel();
400 *
401 * CustomDialog.open( widget.data, function saveCallback( savedData ) {
402 * // Cache the container, because widget may be destroyed while saving data,
403 * // if this process will require some deep transformations.
404 * var container = widget.wrapper.getParent();
405 *
406 * widget.setData( savedData );
407 *
408 * // Widget will be retrieved from container and inserted into editor.
409 * editor.widgets.finalizeCreation( container );
410 * } );
411 * } );
412 *
413 * @param {CKEDITOR.dom.element/CKEDITOR.dom.documentFragment} container The element
414 * or document fragment which contains widget wrapper. The container is used, so before
415 * finalizing creation the widget can be freely transformed (even destroyed and reinitialized).
416 */
417 finalizeCreation: function( container ) {
418 var wrapper = container.getFirst();
419 if ( wrapper && Widget.isDomWidgetWrapper( wrapper ) ) {
420 this.editor.insertElement( wrapper );
421
422 var widget = this.getByElement( wrapper );
423 // Fire postponed #ready event.
424 widget.ready = true;
425 widget.fire( 'ready' );
426 widget.focus();
427 }
428 },
429
430 /**
431 * Finds a widget instance which contains a given element. The element will be the {@link CKEDITOR.plugins.widget#wrapper wrapper}
432 * of the returned widget or a descendant of this {@link CKEDITOR.plugins.widget#wrapper wrapper}.
433 *
434 * editor.widgets.getByElement( someWidget.wrapper ); // -> someWidget
435 * editor.widgets.getByElement( someWidget.parts.caption ); // -> someWidget
436 *
437 * // Check wrapper only:
438 * editor.widgets.getByElement( someWidget.wrapper, true ); // -> someWidget
439 * editor.widgets.getByElement( someWidget.parts.caption, true ); // -> null
440 *
441 * @param {CKEDITOR.dom.element} element The element to be checked.
442 * @param {Boolean} [checkWrapperOnly] If set to `true`, the method will not check wrappers' descendants.
443 * @returns {CKEDITOR.plugins.widget} The widget instance or `null`.
444 */
445 getByElement: ( function() {
446 var validWrapperElements = { div: 1, span: 1 };
447 function getWidgetId( element ) {
448 return element.is( validWrapperElements ) && element.data( 'cke-widget-id' );
449 }
450
451 return function( element, checkWrapperOnly ) {
452 if ( !element )
453 return null;
454
455 var id = getWidgetId( element );
456
457 // There's no need to check element parents if element is a wrapper.
458 if ( !checkWrapperOnly && !id ) {
459 var limit = this.editor.editable();
460
461 // Try to find a closest ascendant which is a widget wrapper.
462 do {
463 element = element.getParent();
464 } while ( element && !element.equals( limit ) && !( id = getWidgetId( element ) ) );
465 }
466
467 return this.instances[ id ] || null;
468 };
469 } )(),
470
471 /**
472 * Initializes a widget on a given element if the widget has not been initialized on it yet.
473 *
474 * @param {CKEDITOR.dom.element} element The future widget element.
475 * @param {String/CKEDITOR.plugins.widget.definition} [widgetDef] Name of a widget or a widget definition.
476 * The widget definition should be previously registered by using the
477 * {@link CKEDITOR.plugins.widget.repository#add} method.
478 * @param [startupData] Widget startup data (has precedence over default one).
479 * @returns {CKEDITOR.plugins.widget} The widget instance or `null` if a widget could not be initialized on
480 * a given element.
481 */
482 initOn: function( element, widgetDef, startupData ) {
483 if ( !widgetDef )
484 widgetDef = this.registered[ element.data( 'widget' ) ];
485 else if ( typeof widgetDef == 'string' )
486 widgetDef = this.registered[ widgetDef ];
487
488 if ( !widgetDef )
489 return null;
490
491 // Wrap element if still wasn't wrapped (was added during runtime by method that skips dataProcessor).
492 var wrapper = this.wrapElement( element, widgetDef.name );
493
494 if ( wrapper ) {
495 // Check if widget wrapper is new (widget hasn't been initialized on it yet).
496 // This class will be removed by widget constructor to avoid locking snapshot twice.
497 if ( wrapper.hasClass( 'cke_widget_new' ) ) {
498 var widget = new Widget( this, this._.nextId++, element, widgetDef, startupData );
499
500 // Widget could be destroyed when initializing it.
501 if ( widget.isInited() ) {
502 this.instances[ widget.id ] = widget;
503
504 return widget;
505 } else {
506 return null;
507 }
508 }
509
510 // Widget already has been initialized, so try to get widget by element.
511 // Note - it may happen that other instance will returned than the one created above,
512 // if for example widget was destroyed and reinitialized.
513 return this.getByElement( element );
514 }
515
516 // No wrapper means that there's no widget for this element.
517 return null;
518 },
519
520 /**
521 * Initializes widgets on all elements which were wrapped by {@link #wrapElement} and
522 * have not been initialized yet.
523 *
524 * @param {CKEDITOR.dom.element} [container=editor.editable()] The container which will be checked for not
525 * initialized widgets. Defaults to editor's {@link CKEDITOR.editor#editable editable} element.
526 * @returns {CKEDITOR.plugins.widget[]} Array of widget instances which have been initialized.
527 * Note: Only first-level widgets are returned &mdash; without nested widgets.
528 */
529 initOnAll: function( container ) {
530 var newWidgets = ( container || this.editor.editable() ).find( '.cke_widget_new' ),
531 newInstances = [],
532 instance;
533
534 for ( var i = newWidgets.count(); i--; ) {
535 instance = this.initOn( newWidgets.getItem( i ).getFirst( Widget.isDomWidgetElement ) );
536 if ( instance )
537 newInstances.push( instance );
538 }
539
540 return newInstances;
541 },
542
543 /**
544 * Allows to listen to events on specific types of widgets, even if they are not created yet.
545 *
546 * Please note that this method inherits parameters from the {@link CKEDITOR.event#method-on} method with one
547 * extra parameter at the beginning which is the widget name.
548 *
549 * editor.widgets.onWidget( 'image', 'action', function( evt ) {
550 * // Event `action` occurs on `image` widget.
551 * } );
552 *
553 * @since 4.5
554 * @param {String} widgetName
555 * @param {String} eventName
556 * @param {Function} listenerFunction
557 * @param {Object} [scopeObj]
558 * @param {Object} [listenerData]
559 * @param {Number} [priority=10]
560 */
561 onWidget: function( widgetName ) {
562 var args = Array.prototype.slice.call( arguments );
563
564 args.shift();
565
566 for ( var i in this.instances ) {
567 var instance = this.instances[ i ];
568
569 if ( instance.name == widgetName ) {
570 instance.on.apply( instance, args );
571 }
572 }
573
574 this.on( 'instanceCreated', function( evt ) {
575 var widget = evt.data;
576
577 if ( widget.name == widgetName ) {
578 widget.on.apply( widget, args );
579 }
580 } );
581 },
582
583 /**
584 * Parses element classes string and returns an object
585 * whose keys contain class names. Skips all `cke_*` classes.
586 *
587 * This method is used by the {@link CKEDITOR.plugins.widget#getClasses} method and
588 * may be used when overriding that method.
589 *
590 * @since 4.4
591 * @param {String} classes String (value of `class` attribute).
592 * @returns {Object} Object containing classes or `null` if no classes found.
593 */
594 parseElementClasses: function( classes ) {
595 if ( !classes )
596 return null;
597
598 classes = CKEDITOR.tools.trim( classes ).split( /\s+/ );
599
600 var cl,
601 obj = {},
602 hasClasses = 0;
603
604 while ( ( cl = classes.pop() ) ) {
605 if ( cl.indexOf( 'cke_' ) == -1 )
606 obj[ cl ] = hasClasses = 1;
607 }
608
609 return hasClasses ? obj : null;
610 },
611
612 /**
613 * Wraps an element with a widget's non-editable container.
614 *
615 * If this method is called on an {@link CKEDITOR.htmlParser.element}, then it will
616 * also take care of fixing the DOM after wrapping (the wrapper may not be allowed in element's parent).
617 *
618 * @param {CKEDITOR.dom.element/CKEDITOR.htmlParser.element} element The widget element to be wrapped.
619 * @param {String} [widgetName] The name of the widget definition. Defaults to element's `data-widget`
620 * attribute value.
621 * @returns {CKEDITOR.dom.element/CKEDITOR.htmlParser.element} The wrapper element or `null` if
622 * the widget definition of this name is not registered.
623 */
624 wrapElement: function( element, widgetName ) {
625 var wrapper = null,
626 widgetDef,
627 isInline;
628
629 if ( element instanceof CKEDITOR.dom.element ) {
630 widgetName = widgetName || element.data( 'widget' );
631 widgetDef = this.registered[ widgetName ];
632
633 if ( !widgetDef )
634 return null;
635
636 // Do not wrap already wrapped element.
637 wrapper = element.getParent();
638 if ( wrapper && wrapper.type == CKEDITOR.NODE_ELEMENT && wrapper.data( 'cke-widget-wrapper' ) )
639 return wrapper;
640
641 // If attribute isn't already set (e.g. for pasted widget), set it.
642 if ( !element.hasAttribute( 'data-cke-widget-keep-attr' ) )
643 element.data( 'cke-widget-keep-attr', element.data( 'widget' ) ? 1 : 0 );
644
645 element.data( 'widget', widgetName );
646
647 isInline = isWidgetInline( widgetDef, element.getName() );
648
649 wrapper = new CKEDITOR.dom.element( isInline ? 'span' : 'div' );
650 wrapper.setAttributes( getWrapperAttributes( isInline, widgetName ) );
651
652 wrapper.data( 'cke-display-name', widgetDef.pathName ? widgetDef.pathName : element.getName() );
653
654 // Replace element unless it is a detached one.
655 if ( element.getParent( true ) )
656 wrapper.replace( element );
657 element.appendTo( wrapper );
658 }
659 else if ( element instanceof CKEDITOR.htmlParser.element ) {
660 widgetName = widgetName || element.attributes[ 'data-widget' ];
661 widgetDef = this.registered[ widgetName ];
662
663 if ( !widgetDef )
664 return null;
665
666 wrapper = element.parent;
667 if ( wrapper && wrapper.type == CKEDITOR.NODE_ELEMENT && wrapper.attributes[ 'data-cke-widget-wrapper' ] )
668 return wrapper;
669
670 // If attribute isn't already set (e.g. for pasted widget), set it.
671 if ( !( 'data-cke-widget-keep-attr' in element.attributes ) )
672 element.attributes[ 'data-cke-widget-keep-attr' ] = element.attributes[ 'data-widget' ] ? 1 : 0;
673 if ( widgetName )
674 element.attributes[ 'data-widget' ] = widgetName;
675
676 isInline = isWidgetInline( widgetDef, element.name );
677
678 wrapper = new CKEDITOR.htmlParser.element( isInline ? 'span' : 'div', getWrapperAttributes( isInline, widgetName ) );
679 wrapper.attributes[ 'data-cke-display-name' ] = widgetDef.pathName ? widgetDef.pathName : element.name;
680
681 var parent = element.parent,
682 index;
683
684 // Don't detach already detached element.
685 if ( parent ) {
686 index = element.getIndex();
687 element.remove();
688 }
689
690 wrapper.add( element );
691
692 // Insert wrapper fixing DOM (splitting parents if wrapper is not allowed inside them).
693 parent && insertElement( parent, index, wrapper );
694 }
695
696 return wrapper;
697 },
698
699 // Expose for tests.
700 _tests_createEditableFilter: createEditableFilter
701 };
702
703 CKEDITOR.event.implementOn( Repository.prototype );
704
705 /**
706 * An event fired when a widget instance is created, but before it is fully initialized.
707 *
708 * @event instanceCreated
709 * @param {CKEDITOR.plugins.widget} data The widget instance.
710 */
711
712 /**
713 * An event fired when a widget instance was destroyed.
714 *
715 * See also {@link CKEDITOR.plugins.widget#event-destroy}.
716 *
717 * @event instanceDestroyed
718 * @param {CKEDITOR.plugins.widget} data The widget instance.
719 */
720
721 /**
722 * An event fired to trigger the selection check.
723 *
724 * See the {@link #method-checkSelection} method.
725 *
726 * @event checkSelection
727 */
728
729 /**
730 * An event fired by the the {@link #method-checkWidgets} method.
731 *
732 * It can be canceled in order to stop the {@link #method-checkWidgets}
733 * method execution or the event listener can modify the method's options.
734 *
735 * @event checkWidgets
736 * @param [data]
737 * @param {Boolean} [data.initOnlyNew] Initialize widgets only on newly wrapped
738 * widget elements (those which still have the `cke_widget_new` class). When this option is
739 * set to `true`, widgets which were invalidated (e.g. by replacing with a cloned DOM structure)
740 * will not be reinitialized. This makes the check faster.
741 * @param {Boolean} [data.focusInited] If only one widget is initialized by
742 * the method, it will be focused.
743 */
744
745
746 /**
747 * An instance of a widget. Together with {@link CKEDITOR.plugins.widget.repository} these
748 * two classes constitute the core of the Widget System.
749 *
750 * Note that neither the repository nor the widget instances can be created by using their constructors.
751 * A repository instance is automatically set up by the Widget plugin and is accessible under
752 * {@link CKEDITOR.editor#widgets}, while widget instances are created and destroyed by the repository.
753 *
754 * To create a widget, first you need to {@link CKEDITOR.plugins.widget.repository#add register} its
755 * {@link CKEDITOR.plugins.widget.definition definition}:
756 *
757 * editor.widgets.add( 'simplebox', {
758 * upcast: function( element ) {
759 * // Defines which elements will become widgets.
760 * if ( element.hasClass( 'simplebox' ) )
761 * return true;
762 * },
763 * init: function() {
764 * // ...
765 * }
766 * } );
767 *
768 * Once the widget definition is registered, widgets will be automatically
769 * created when loading data:
770 *
771 * editor.setData( '<div class="simplebox">foo</div>', function() {
772 * console.log( editor.widgets.instances ); // -> An object containing one instance.
773 * } );
774 *
775 * It is also possible to create instances during runtime by using a command
776 * (if a {@link CKEDITOR.plugins.widget.definition#template} property was defined):
777 *
778 * // You can execute an automatically defined command to
779 * // insert a new simplebox widget or edit the one currently focused.
780 * editor.execCommand( 'simplebox' );
781 *
782 * Note: Since CKEditor 4.5 widget's `startupData` can be passed as the command argument:
783 *
784 * editor.execCommand( 'simplebox', {
785 * startupData: {
786 * align: 'left'
787 * }
788 * } );
789 *
790 * A widget can also be created in a completely custom way:
791 *
792 * var element = editor.document.createElement( 'div' );
793 * editor.insertElement( element );
794 * var widget = editor.widgets.initOn( element, 'simplebox' );
795 *
796 * @since 4.3
797 * @class CKEDITOR.plugins.widget
798 * @mixins CKEDITOR.event
799 * @extends CKEDITOR.plugins.widget.definition
800 * @constructor Creates an instance of the widget class. Do not use it directly, but instead initialize widgets
801 * by using the {@link CKEDITOR.plugins.widget.repository#initOn} method or by the upcasting system.
802 * @param {CKEDITOR.plugins.widget.repository} widgetsRepo
803 * @param {Number} id Unique ID of this widget instance.
804 * @param {CKEDITOR.dom.element} element The widget element.
805 * @param {CKEDITOR.plugins.widget.definition} widgetDef Widget's registered definition.
806 * @param [startupData] Initial widget data. This data object will overwrite the default data and
807 * the data loaded from the DOM.
808 */
809 function Widget( widgetsRepo, id, element, widgetDef, startupData ) {
810 var editor = widgetsRepo.editor;
811
812 // Extend this widget with widgetDef-specific methods and properties.
813 CKEDITOR.tools.extend( this, widgetDef, {
814 /**
815 * The editor instance.
816 *
817 * @readonly
818 * @property {CKEDITOR.editor}
819 */
820 editor: editor,
821
822 /**
823 * This widget's unique (per editor instance) ID.
824 *
825 * @readonly
826 * @property {Number}
827 */
828 id: id,
829
830 /**
831 * Whether this widget is an inline widget (based on an inline element unless
832 * forced otherwise by {@link CKEDITOR.plugins.widget.definition#inline}).
833 *
834 * **Note:** This option does not allow to turn a block element into an inline widget.
835 * However, it makes it possible to turn an inline element into a block widget or to
836 * force a correct type in case when automatic recognition fails.
837 *
838 * @readonly
839 * @property {Boolean}
840 */
841 inline: element.getParent().getName() == 'span',
842
843 /**
844 * The widget element &mdash; the element on which the widget was initialized.
845 *
846 * @readonly
847 * @property {CKEDITOR.dom.element} element
848 */
849 element: element,
850
851 /**
852 * Widget's data object.
853 *
854 * The data can only be set by using the {@link #setData} method.
855 * Changes made to the data fire the {@link #event-data} event.
856 *
857 * @readonly
858 */
859 data: CKEDITOR.tools.extend( {}, typeof widgetDef.defaults == 'function' ? widgetDef.defaults() : widgetDef.defaults ),
860
861 /**
862 * Indicates if a widget is data-ready. Set to `true` when data from all sources
863 * ({@link CKEDITOR.plugins.widget.definition#defaults}, set in the
864 * {@link #init} method, loaded from the widget's element and startup data coming from the constructor)
865 * are finally loaded. This is immediately followed by the first {@link #event-data}.
866 *
867 * @readonly
868 */
869 dataReady: false,
870
871 /**
872 * Whether a widget instance was initialized. This means that:
873 *
874 * * An instance was created,
875 * * Its properties were set,
876 * * The `init` method was executed.
877 *
878 * **Note**: The first {@link #event-data} event could not be fired yet which
879 * means that the widget's DOM has not been set up yet. Wait for the {@link #event-ready}
880 * event to be notified when a widget is fully initialized and ready.
881 *
882 * **Note**: Use the {@link #isInited} method to check whether a widget is initialized and
883 * has not been destroyed.
884 *
885 * @readonly
886 */
887 inited: false,
888
889 /**
890 * Whether a widget instance is ready. This means that the widget is {@link #inited} and
891 * that its DOM was finally set up.
892 *
893 * **Note:** Use the {@link #isReady} method to check whether a widget is ready and
894 * has not been destroyed.
895 *
896 * @readonly
897 */
898 ready: false,
899
900 // Revert what widgetDef could override (automatic #edit listener).
901 edit: Widget.prototype.edit,
902
903 /**
904 * The nested editable element which is currently focused.
905 *
906 * @readonly
907 * @property {CKEDITOR.plugins.widget.nestedEditable}
908 */
909 focusedEditable: null,
910
911 /**
912 * The widget definition from which this instance was created.
913 *
914 * @readonly
915 * @property {CKEDITOR.plugins.widget.definition} definition
916 */
917 definition: widgetDef,
918
919 /**
920 * Link to the widget repository which created this instance.
921 *
922 * @readonly
923 * @property {CKEDITOR.plugins.widget.repository} repository
924 */
925 repository: widgetsRepo,
926
927 draggable: widgetDef.draggable !== false,
928
929 // WAAARNING: Overwrite widgetDef's priv object, because otherwise violent unicorn's gonna visit you.
930 _: {
931 downcastFn: ( widgetDef.downcast && typeof widgetDef.downcast == 'string' ) ?
932 widgetDef.downcasts[ widgetDef.downcast ] : widgetDef.downcast
933 }
934 }, true );
935
936 /**
937 * An object of widget component elements.
938 *
939 * For every `partName => selector` pair in {@link CKEDITOR.plugins.widget.definition#parts},
940 * one `partName => element` pair is added to this object during the widget initialization.
941 *
942 * @readonly
943 * @property {Object} parts
944 */
945
946 /**
947 * The template which will be used to create a new widget element (when the widget's command is executed).
948 * It will be populated with {@link #defaults default values}.
949 *
950 * @readonly
951 * @property {CKEDITOR.template} template
952 */
953
954 /**
955 * The widget wrapper &mdash; a non-editable `div` or `span` element (depending on {@link #inline})
956 * which is a parent of the {@link #element} and widget compontents like the drag handler and the {@link #mask}.
957 * It is the outermost widget element.
958 *
959 * @readonly
960 * @property {CKEDITOR.dom.element} wrapper
961 */
962
963 widgetsRepo.fire( 'instanceCreated', this );
964
965 setupWidget( this, widgetDef );
966
967 this.init && this.init();
968
969 // Finally mark widget as inited.
970 this.inited = true;
971
972 setupWidgetData( this, startupData );
973
974 // If at some point (e.g. in #data listener) widget hasn't been destroyed
975 // and widget is already attached to document then fire #ready.
976 if ( this.isInited() && editor.editable().contains( this.wrapper ) ) {
977 this.ready = true;
978 this.fire( 'ready' );
979 }
980 }
981
982 Widget.prototype = {
983 /**
984 * Adds a class to the widget element. This method is used by
985 * the {@link #applyStyle} method and should be overridden by widgets
986 * which should handle classes differently (e.g. add them to other elements).
987 *
988 * Since 4.6.0 this method also adds a corresponding class prefixed with {@link #WRAPPER_CLASS_PREFIX}
989 * to the widget wrapper element.
990 *
991 * **Note**: This method should not be used directly. Use the {@link #setData} method to
992 * set the `classes` property. Read more in the {@link #setData} documentation.
993 *
994 * See also: {@link #removeClass}, {@link #hasClass}, {@link #getClasses}.
995 *
996 * @since 4.4
997 * @param {String} className The class name to be added.
998 */
999 addClass: function( className ) {
1000 this.element.addClass( className );
1001 this.wrapper.addClass( Widget.WRAPPER_CLASS_PREFIX + className );
1002 },
1003
1004 /**
1005 * Applies the specified style to the widget. It is highly recommended to use the
1006 * {@link CKEDITOR.editor#applyStyle} or {@link CKEDITOR.style#apply} methods instead of
1007 * using this method directly, because unlike editor's and style's methods, this one
1008 * does not perform any checks.
1009 *
1010 * By default this method handles only classes defined in the style. It clones existing
1011 * classes which are stored in the {@link #property-data widget data}'s `classes` property,
1012 * adds new classes, and calls the {@link #setData} method if at least one new class was added.
1013 * Then, using the {@link #event-data} event listener widget applies modifications passing
1014 * new classes to the {@link #addClass} method.
1015 *
1016 * If you need to handle classes differently than in the default way, you can override the
1017 * {@link #addClass} and related methods. You can also handle other style properties than `classes`
1018 * by overriding this method.
1019 *
1020 * See also: {@link #checkStyleActive}, {@link #removeStyle}.
1021 *
1022 * @since 4.4
1023 * @param {CKEDITOR.style} style The custom widget style to be applied.
1024 */
1025 applyStyle: function( style ) {
1026 applyRemoveStyle( this, style, 1 );
1027 },
1028
1029 /**
1030 * Checks if the specified style is applied to this widget. It is highly recommended to use the
1031 * {@link CKEDITOR.style#checkActive} method instead of using this method directly,
1032 * because unlike style's method, this one does not perform any checks.
1033 *
1034 * By default this method handles only classes defined in the style and passes
1035 * them to the {@link #hasClass} method. You can override these methods to handle classes
1036 * differently or to handle more of the style properties.
1037 *
1038 * See also: {@link #applyStyle}, {@link #removeStyle}.
1039 *
1040 * @since 4.4
1041 * @param {CKEDITOR.style} style The custom widget style to be checked.
1042 * @returns {Boolean} Whether the style is applied to this widget.
1043 */
1044 checkStyleActive: function( style ) {
1045 var classes = getStyleClasses( style ),
1046 cl;
1047
1048 if ( !classes )
1049 return false;
1050
1051 while ( ( cl = classes.pop() ) ) {
1052 if ( !this.hasClass( cl ) )
1053 return false;
1054 }
1055 return true;
1056 },
1057
1058 /**
1059 * Destroys this widget instance.
1060 *
1061 * Use {@link CKEDITOR.plugins.widget.repository#destroy} when possible instead of this method.
1062 *
1063 * This method fires the {#event-destroy} event.
1064 *
1065 * @param {Boolean} [offline] Whether a widget is offline (detached from the DOM tree) &mdash;
1066 * in this case the DOM (attributes, classes, etc.) will not be cleaned up.
1067 */
1068 destroy: function( offline ) {
1069 this.fire( 'destroy' );
1070
1071 if ( this.editables ) {
1072 for ( var name in this.editables )
1073 this.destroyEditable( name, offline );
1074 }
1075
1076 if ( !offline ) {
1077 if ( this.element.data( 'cke-widget-keep-attr' ) == '0' )
1078 this.element.removeAttribute( 'data-widget' );
1079 this.element.removeAttributes( [ 'data-cke-widget-data', 'data-cke-widget-keep-attr' ] );
1080 this.element.removeClass( 'cke_widget_element' );
1081 this.element.replace( this.wrapper );
1082 }
1083
1084 this.wrapper = null;
1085 },
1086
1087 /**
1088 * Destroys a nested editable and all nested widgets.
1089 *
1090 * @param {String} editableName Nested editable name.
1091 * @param {Boolean} [offline] See {@link #method-destroy} method.
1092 */
1093 destroyEditable: function( editableName, offline ) {
1094 var editable = this.editables[ editableName ];
1095
1096 editable.removeListener( 'focus', onEditableFocus );
1097 editable.removeListener( 'blur', onEditableBlur );
1098 this.editor.focusManager.remove( editable );
1099
1100 if ( !offline ) {
1101 this.repository.destroyAll( false, editable );
1102 editable.removeClass( 'cke_widget_editable' );
1103 editable.removeClass( 'cke_widget_editable_focused' );
1104 editable.removeAttributes( [ 'contenteditable', 'data-cke-widget-editable', 'data-cke-enter-mode' ] );
1105 }
1106
1107 delete this.editables[ editableName ];
1108 },
1109
1110 /**
1111 * Starts widget editing.
1112 *
1113 * This method fires the {@link CKEDITOR.plugins.widget#event-edit} event
1114 * which may be canceled in order to prevent it from opening a dialog window.
1115 *
1116 * The dialog window name is obtained from the event's data `dialog` property or
1117 * from {@link CKEDITOR.plugins.widget.definition#dialog}.
1118 *
1119 * @returns {Boolean} Returns `true` if a dialog window was opened.
1120 */
1121 edit: function() {
1122 var evtData = { dialog: this.dialog },
1123 that = this;
1124
1125 // Edit event was blocked or there's no dialog to be automatically opened.
1126 if ( this.fire( 'edit', evtData ) === false || !evtData.dialog )
1127 return false;
1128
1129 this.editor.openDialog( evtData.dialog, function( dialog ) {
1130 var showListener,
1131 okListener;
1132
1133 // Allow to add a custom dialog handler.
1134 if ( that.fire( 'dialog', dialog ) === false )
1135 return;
1136
1137 showListener = dialog.on( 'show', function() {
1138 dialog.setupContent( that );
1139 } );
1140
1141 okListener = dialog.on( 'ok', function() {
1142 // Commit dialog's fields, but prevent from
1143 // firing data event for every field. Fire only one,
1144 // bulk event at the end.
1145 var dataChanged,
1146 dataListener = that.on( 'data', function( evt ) {
1147 dataChanged = 1;
1148 evt.cancel();
1149 }, null, null, 0 );
1150
1151 // Create snapshot preceeding snapshot with changed widget...
1152 // TODO it should not be required, but it is and I found similar
1153 // code in dialog#ok listener in dialog/plugin.js.
1154 that.editor.fire( 'saveSnapshot' );
1155 dialog.commitContent( that );
1156
1157 dataListener.removeListener();
1158 if ( dataChanged ) {
1159 that.fire( 'data', that.data );
1160 that.editor.fire( 'saveSnapshot' );
1161 }
1162 } );
1163
1164 dialog.once( 'hide', function() {
1165 showListener.removeListener();
1166 okListener.removeListener();
1167 } );
1168 } );
1169
1170 return true;
1171 },
1172
1173 /**
1174 * Returns widget element classes parsed to an object. This method
1175 * is used to populate the `classes` property of widget's {@link #property-data}.
1176 *
1177 * This method reuses {@link CKEDITOR.plugins.widget.repository#parseElementClasses}.
1178 * It should be overriden if a widget should handle classes differently (e.g. on other elements).
1179 *
1180 * See also: {@link #removeClass}, {@link #addClass}, {@link #hasClass}.
1181 *
1182 * @since 4.4
1183 * @returns {Object}
1184 */
1185 getClasses: function() {
1186 return this.repository.parseElementClasses( this.element.getAttribute( 'class' ) );
1187 },
1188
1189 /**
1190 * Checks if the widget element has specified class. This method is used by
1191 * the {@link #checkStyleActive} method and should be overriden by widgets
1192 * which should handle classes differently (e.g. on other elements).
1193 *
1194 * See also: {@link #removeClass}, {@link #addClass}, {@link #getClasses}.
1195 *
1196 * @since 4.4
1197 * @param {String} className The class to be checked.
1198 * @param {Boolean} Whether a widget has specified class.
1199 */
1200 hasClass: function( className ) {
1201 return this.element.hasClass( className );
1202 },
1203
1204 /**
1205 * Initializes a nested editable.
1206 *
1207 * **Note**: Only elements from {@link CKEDITOR.dtd#$editable} may become editables.
1208 *
1209 * @param {String} editableName The nested editable name.
1210 * @param {CKEDITOR.plugins.widget.nestedEditable.definition} definition The definition of the nested editable.
1211 * @returns {Boolean} Whether an editable was successfully initialized.
1212 */
1213 initEditable: function( editableName, definition ) {
1214 // Don't fetch just first element which matched selector but look for a correct one. (http://dev.ckeditor.com/ticket/13334)
1215 var editable = this._findOneNotNested( definition.selector );
1216
1217 if ( editable && editable.is( CKEDITOR.dtd.$editable ) ) {
1218 editable = new NestedEditable( this.editor, editable, {
1219 filter: createEditableFilter.call( this.repository, this.name, editableName, definition )
1220 } );
1221 this.editables[ editableName ] = editable;
1222
1223 editable.setAttributes( {
1224 contenteditable: 'true',
1225 'data-cke-widget-editable': editableName,
1226 'data-cke-enter-mode': editable.enterMode
1227 } );
1228
1229 if ( editable.filter )
1230 editable.data( 'cke-filter', editable.filter.id );
1231
1232 editable.addClass( 'cke_widget_editable' );
1233 // This class may be left when d&ding widget which
1234 // had focused editable. Clean this class here, not in
1235 // cleanUpWidgetElement for performance and code size reasons.
1236 editable.removeClass( 'cke_widget_editable_focused' );
1237
1238 if ( definition.pathName )
1239 editable.data( 'cke-display-name', definition.pathName );
1240
1241 this.editor.focusManager.add( editable );
1242 editable.on( 'focus', onEditableFocus, this );
1243 CKEDITOR.env.ie && editable.on( 'blur', onEditableBlur, this );
1244
1245 // Finally, process editable's data. This data wasn't processed when loading
1246 // editor's data, becuase they need to be processed separately, with its own filters and settings.
1247 editable._.initialSetData = true;
1248 editable.setData( editable.getHtml() );
1249
1250 return true;
1251 }
1252
1253 return false;
1254 },
1255
1256 /**
1257 * Looks inside wrapper element to find a node that
1258 * matches given selector and is not nested in other widget. (http://dev.ckeditor.com/ticket/13334)
1259 *
1260 * @since 4.5
1261 * @private
1262 * @param {String} selector Selector to match.
1263 * @returns {CKEDITOR.dom.element} Matched element or `null` if a node has not been found.
1264 */
1265 _findOneNotNested: function( selector ) {
1266 var matchedElements = this.wrapper.find( selector ),
1267 match,
1268 closestWrapper;
1269
1270 for ( var i = 0; i < matchedElements.count(); i++ ) {
1271 match = matchedElements.getItem( i );
1272 closestWrapper = match.getAscendant( Widget.isDomWidgetWrapper );
1273
1274 // The closest ascendant-wrapper of this match defines to which widget
1275 // this match belongs. If the ascendant is this widget's wrapper
1276 // it means that the match is not nested in other widget.
1277 if ( this.wrapper.equals( closestWrapper ) ) {
1278 return match;
1279 }
1280 }
1281
1282 return null;
1283 },
1284
1285 /**
1286 * Checks if a widget has already been initialized and has not been destroyed yet.
1287 *
1288 * See {@link #inited} for more details.
1289 *
1290 * @returns {Boolean}
1291 */
1292 isInited: function() {
1293 return !!( this.wrapper && this.inited );
1294 },
1295
1296 /**
1297 * Checks if a widget is ready and has not been destroyed yet.
1298 *
1299 * See {@link #property-ready} for more details.
1300 *
1301 * @returns {Boolean}
1302 */
1303 isReady: function() {
1304 return this.isInited() && this.ready;
1305 },
1306
1307 /**
1308 * Focuses a widget by selecting it.
1309 */
1310 focus: function() {
1311 var sel = this.editor.getSelection();
1312
1313 // Fake the selection before focusing editor, to avoid unpreventable viewports scrolling
1314 // on Webkit/Blink/IE which is done because there's no selection or selection was somewhere else than widget.
1315 if ( sel ) {
1316 var isDirty = this.editor.checkDirty();
1317
1318 sel.fake( this.wrapper );
1319
1320 !isDirty && this.editor.resetDirty();
1321 }
1322
1323 // Always focus editor (not only when focusManger.hasFocus is false) (because of http://dev.ckeditor.com/ticket/10483).
1324 this.editor.focus();
1325 },
1326
1327 /**
1328 * Removes a class from the widget element. This method is used by
1329 * the {@link #removeStyle} method and should be overriden by widgets
1330 * which should handle classes differently (e.g. on other elements).
1331 *
1332 * **Note**: This method should not be used directly. Use the {@link #setData} method to
1333 * set the `classes` property. Read more in the {@link #setData} documentation.
1334 *
1335 * See also: {@link #hasClass}, {@link #addClass}.
1336 *
1337 * @since 4.4
1338 * @param {String} className The class to be removed.
1339 */
1340 removeClass: function( className ) {
1341 this.element.removeClass( className );
1342 this.wrapper.removeClass( Widget.WRAPPER_CLASS_PREFIX + className );
1343 },
1344
1345 /**
1346 * Removes the specified style from the widget. It is highly recommended to use the
1347 * {@link CKEDITOR.editor#removeStyle} or {@link CKEDITOR.style#remove} methods instead of
1348 * using this method directly, because unlike editor's and style's methods, this one
1349 * does not perform any checks.
1350 *
1351 * Read more about how applying/removing styles works in the {@link #applyStyle} method documentation.
1352 *
1353 * See also {@link #checkStyleActive}, {@link #applyStyle}, {@link #getClasses}.
1354 *
1355 * @since 4.4
1356 * @param {CKEDITOR.style} style The custom widget style to be removed.
1357 */
1358 removeStyle: function( style ) {
1359 applyRemoveStyle( this, style, 0 );
1360 },
1361
1362 /**
1363 * Sets widget value(s) in the {@link #property-data} object.
1364 * If the given value(s) modifies current ones, the {@link #event-data} event is fired.
1365 *
1366 * this.setData( 'align', 'left' );
1367 * this.data.align; // -> 'left'
1368 *
1369 * this.setData( { align: 'right', opened: false } );
1370 * this.data.align; // -> 'right'
1371 * this.data.opened; // -> false
1372 *
1373 * Set values are stored in {@link #element}'s attribute (`data-cke-widget-data`),
1374 * in a JSON string, therefore {@link #property-data} should contain
1375 * only serializable data.
1376 *
1377 * **Note:** A special data property, `classes`, exists. It contains an object with
1378 * classes which were returned by the {@link #getClasses} method during the widget initialization.
1379 * This property is then used by the {@link #applyStyle} and {@link #removeStyle} methods.
1380 * When it is changed (the reference to object must be changed!), the widget updates its classes by
1381 * using the {@link #addClass} and {@link #removeClass} methods.
1382 *
1383 * // Adding a new class.
1384 * var classes = CKEDITOR.tools.clone( widget.data.classes );
1385 * classes.newClass = 1;
1386 * widget.setData( 'classes', classes );
1387 *
1388 * // Removing a class.
1389 * var classes = CKEDITOR.tools.clone( widget.data.classes );
1390 * delete classes.newClass;
1391 * widget.setData( 'classes', classes );
1392 *
1393 * @param {String/Object} keyOrData
1394 * @param {Object} value
1395 * @chainable
1396 */
1397 setData: function( key, value ) {
1398 var data = this.data,
1399 modified = 0;
1400
1401 if ( typeof key == 'string' ) {
1402 if ( data[ key ] !== value ) {
1403 data[ key ] = value;
1404 modified = 1;
1405 }
1406 }
1407 else {
1408 var newData = key;
1409
1410 for ( key in newData ) {
1411 if ( data[ key ] !== newData[ key ] ) {
1412 modified = 1;
1413 data[ key ] = newData[ key ];
1414 }
1415 }
1416 }
1417
1418 // Block firing data event and overwriting data element before setupWidgetData is executed.
1419 if ( modified && this.dataReady ) {
1420 writeDataToElement( this );
1421 this.fire( 'data', data );
1422 }
1423
1424 return this;
1425 },
1426
1427 /**
1428 * Changes the widget's focus state. This method is executed automatically after
1429 * a widget was focused by the {@link #method-focus} method or the selection was moved
1430 * out of the widget.
1431 *
1432 * This is a low-level method which is not integrated with e.g. the undo manager.
1433 * Use the {@link #method-focus} method instead.
1434 *
1435 * @param {Boolean} selected Whether to select or deselect this widget.
1436 * @chainable
1437 */
1438 setFocused: function( focused ) {
1439 this.wrapper[ focused ? 'addClass' : 'removeClass' ]( 'cke_widget_focused' );
1440 this.fire( focused ? 'focus' : 'blur' );
1441 return this;
1442 },
1443
1444 /**
1445 * Changes the widget's select state. This method is executed automatically after
1446 * a widget was selected by the {@link #method-focus} method or the selection
1447 * was moved out of the widget.
1448 *
1449 * This is a low-level method which is not integrated with e.g. the undo manager.
1450 * Use the {@link #method-focus} method instead or simply change the selection.
1451 *
1452 * @param {Boolean} selected Whether to select or deselect this widget.
1453 * @chainable
1454 */
1455 setSelected: function( selected ) {
1456 this.wrapper[ selected ? 'addClass' : 'removeClass' ]( 'cke_widget_selected' );
1457 this.fire( selected ? 'select' : 'deselect' );
1458 return this;
1459 },
1460
1461 /**
1462 * Repositions drag handler according to the widget's element position. Should be called from events, like mouseover.
1463 */
1464 updateDragHandlerPosition: function() {
1465 var editor = this.editor,
1466 domElement = this.element.$,
1467 oldPos = this._.dragHandlerOffset,
1468 newPos = {
1469 x: domElement.offsetLeft,
1470 y: domElement.offsetTop - DRAG_HANDLER_SIZE
1471 };
1472
1473 if ( oldPos && newPos.x == oldPos.x && newPos.y == oldPos.y )
1474 return;
1475
1476 // We need to make sure that dirty state is not changed (http://dev.ckeditor.com/ticket/11487).
1477 var initialDirty = editor.checkDirty();
1478
1479 editor.fire( 'lockSnapshot' );
1480 this.dragHandlerContainer.setStyles( {
1481 top: newPos.y + 'px',
1482 left: newPos.x + 'px',
1483 display: 'block'
1484 } );
1485 editor.fire( 'unlockSnapshot' );
1486 !initialDirty && editor.resetDirty();
1487
1488 this._.dragHandlerOffset = newPos;
1489 }
1490 };
1491
1492 CKEDITOR.event.implementOn( Widget.prototype );
1493
1494 /**
1495 * Gets the {@link #isDomNestedEditable nested editable}
1496 * (returned as a {@link CKEDITOR.dom.element}, not as a {@link CKEDITOR.plugins.widget.nestedEditable})
1497 * closest to the `node` or the `node` if it is a nested editable itself.
1498 *
1499 * @since 4.5
1500 * @static
1501 * @param {CKEDITOR.dom.element} guard Stop ancestor search on this node (usually editor's editable).
1502 * @param {CKEDITOR.dom.node} node Start the search from this node.
1503 * @returns {CKEDITOR.dom.element/null} Element or `null` if not found.
1504 */
1505 Widget.getNestedEditable = function( guard, node ) {
1506 if ( !node || node.equals( guard ) )
1507 return null;
1508
1509 if ( Widget.isDomNestedEditable( node ) )
1510 return node;
1511
1512 return Widget.getNestedEditable( guard, node.getParent() );
1513 };
1514
1515 /**
1516 * Checks whether the `node` is a widget's drag handle element.
1517 *
1518 * @since 4.5
1519 * @static
1520 * @param {CKEDITOR.dom.node} node
1521 * @returns {Boolean}
1522 */
1523 Widget.isDomDragHandler = function( node ) {
1524 return node.type == CKEDITOR.NODE_ELEMENT && node.hasAttribute( 'data-cke-widget-drag-handler' );
1525 };
1526
1527 /**
1528 * Checks whether the `node` is a container of the widget's drag handle element.
1529 *
1530 * @since 4.5
1531 * @static
1532 * @param {CKEDITOR.dom.node} node
1533 * @returns {Boolean}
1534 */
1535 Widget.isDomDragHandlerContainer = function( node ) {
1536 return node.type == CKEDITOR.NODE_ELEMENT && node.hasClass( 'cke_widget_drag_handler_container' );
1537 };
1538
1539 /**
1540 * Checks whether the `node` is a {@link CKEDITOR.plugins.widget#editables nested editable}.
1541 * Note that this function only checks whether it is the right element, not whether
1542 * the passed `node` is an instance of {@link CKEDITOR.plugins.widget.nestedEditable}.
1543 *
1544 * @since 4.5
1545 * @static
1546 * @param {CKEDITOR.dom.node} node
1547 * @returns {Boolean}
1548 */
1549 Widget.isDomNestedEditable = function( node ) {
1550 return node.type == CKEDITOR.NODE_ELEMENT && node.hasAttribute( 'data-cke-widget-editable' );
1551 };
1552
1553 /**
1554 * Checks whether the `node` is a {@link CKEDITOR.plugins.widget#element widget element}.
1555 *
1556 * @since 4.5
1557 * @static
1558 * @param {CKEDITOR.dom.node} node
1559 * @returns {Boolean}
1560 */
1561 Widget.isDomWidgetElement = function( node ) {
1562 return node.type == CKEDITOR.NODE_ELEMENT && node.hasAttribute( 'data-widget' );
1563 };
1564
1565 /**
1566 * Checks whether the `node` is a {@link CKEDITOR.plugins.widget#wrapper widget wrapper}.
1567 *
1568 * @since 4.5
1569 * @static
1570 * @param {CKEDITOR.dom.element} node
1571 * @returns {Boolean}
1572 */
1573 Widget.isDomWidgetWrapper = function( node ) {
1574 return node.type == CKEDITOR.NODE_ELEMENT && node.hasAttribute( 'data-cke-widget-wrapper' );
1575 };
1576
1577 /**
1578 * Checks whether the `node` is a {@link CKEDITOR.plugins.widget#element widget element}.
1579 *
1580 * @since 4.5
1581 * @static
1582 * @param {CKEDITOR.htmlParser.node} node
1583 * @returns {Boolean}
1584 */
1585 Widget.isParserWidgetElement = function( node ) {
1586 return node.type == CKEDITOR.NODE_ELEMENT && !!node.attributes[ 'data-widget' ];
1587 };
1588
1589 /**
1590 * Checks whether the `node` is a {@link CKEDITOR.plugins.widget#wrapper widget wrapper}.
1591 *
1592 * @since 4.5
1593 * @static
1594 * @param {CKEDITOR.htmlParser.element} node
1595 * @returns {Boolean}
1596 */
1597 Widget.isParserWidgetWrapper = function( node ) {
1598 return node.type == CKEDITOR.NODE_ELEMENT && !!node.attributes[ 'data-cke-widget-wrapper' ];
1599 };
1600
1601 /**
1602 * Prefix added to wrapper classes. Each class added to the widget element by the {@link #addClass}
1603 * method will also be added to the wrapper prefixed with it.
1604 *
1605 * @since 4.6.0
1606 * @static
1607 * @readonly
1608 * @property {String} [='cke_widget_wrapper_']
1609 */
1610 Widget.WRAPPER_CLASS_PREFIX = 'cke_widget_wrapper_';
1611
1612 /**
1613 * An event fired when a widget is ready (fully initialized). This event is fired after:
1614 *
1615 * * {@link #init} is called,
1616 * * The first {@link #event-data} event is fired,
1617 * * A widget is attached to the document.
1618 *
1619 * Therefore, in case of widget creation with a command which opens a dialog window, this event
1620 * will be delayed after the dialog window is closed and the widget is finally inserted into the document.
1621 *
1622 * **Note**: If your widget does not use automatic dialog window binding (i.e. you open the dialog window manually)
1623 * or another situation in which the widget wrapper is not attached to document at the time when it is
1624 * initialized occurs, you need to take care of firing {@link #event-ready} yourself.
1625 *
1626 * See also {@link #property-ready} and {@link #property-inited} properties, and
1627 * {@link #isReady} and {@link #isInited} methods.
1628 *
1629 * @event ready
1630 */
1631
1632 /**
1633 * An event fired when a widget is about to be destroyed, but before it is
1634 * fully torn down.
1635 *
1636 * @event destroy
1637 */
1638
1639 /**
1640 * An event fired when a widget is focused.
1641 *
1642 * Widget can be focused by executing {@link #method-focus}.
1643 *
1644 * @event focus
1645 */
1646
1647 /**
1648 * An event fired when a widget is blurred.
1649 *
1650 * @event blur
1651 */
1652
1653 /**
1654 * An event fired when a widget is selected.
1655 *
1656 * @event select
1657 */
1658
1659 /**
1660 * An event fired when a widget is deselected.
1661 *
1662 * @event deselect
1663 */
1664
1665 /**
1666 * An event fired by the {@link #method-edit} method. It can be canceled
1667 * in order to stop the default action (opening a dialog window and/or
1668 * {@link CKEDITOR.plugins.widget.repository#finalizeCreation finalizing widget creation}).
1669 *
1670 * @event edit
1671 * @param data
1672 * @param {String} data.dialog Defaults to {@link CKEDITOR.plugins.widget.definition#dialog}
1673 * and can be changed or set by the listener.
1674 */
1675
1676 /**
1677 * An event fired when a dialog window for widget editing is opened.
1678 * This event can be canceled in order to handle the editing dialog in a custom manner.
1679 *
1680 * @event dialog
1681 * @param {CKEDITOR.dialog} data The opened dialog window instance.
1682 */
1683
1684 /**
1685 * An event fired when a key is pressed on a focused widget.
1686 * This event is forwarded from the {@link CKEDITOR.editor#key} event and
1687 * has the ability to block editor keystrokes if it is canceled.
1688 *
1689 * @event key
1690 * @param data
1691 * @param {Number} data.keyCode A number representing the key code (or combination).
1692 */
1693
1694 /**
1695 * An event fired when a widget is double clicked.
1696 *
1697 * **Note:** If a default editing action is executed on double click (i.e. a widget has a
1698 * {@link CKEDITOR.plugins.widget.definition#dialog dialog} defined and the {@link #event-doubleclick} event was not
1699 * canceled), this event will be automatically canceled, so a listener added with the default priority (10)
1700 * will not be executed. Use a listener with low priority (e.g. 5) to be sure that it will be executed.
1701 *
1702 * widget.on( 'doubleclick', function( evt ) {
1703 * console.log( 'widget#doubleclick' );
1704 * }, null, null, 5 );
1705 *
1706 * If your widget handles double click in a special way (so the default editing action is not executed),
1707 * make sure you cancel this event, because otherwise it will be propagated to {@link CKEDITOR.editor#doubleclick}
1708 * and another feature may step in (e.g. a Link dialog window may be opened if your widget was inside a link).
1709 *
1710 * @event doubleclick
1711 * @param data
1712 * @param {CKEDITOR.dom.element} data.element The double-clicked element.
1713 */
1714
1715 /**
1716 * An event fired when the context menu is opened for a widget.
1717 *
1718 * @event contextMenu
1719 * @param data The object containing context menu options to be added
1720 * for this widget. See {@link CKEDITOR.plugins.contextMenu#addListener}.
1721 */
1722
1723 /**
1724 * An event fired when the widget data changed. See the {@link #setData} method and the {@link #property-data} property.
1725 *
1726 * @event data
1727 */
1728
1729
1730
1731 /**
1732 * The wrapper class for editable elements inside widgets.
1733 *
1734 * Do not use directly. Use {@link CKEDITOR.plugins.widget.definition#editables} or
1735 * {@link CKEDITOR.plugins.widget#initEditable}.
1736 *
1737 * @class CKEDITOR.plugins.widget.nestedEditable
1738 * @extends CKEDITOR.dom.element
1739 * @constructor
1740 * @param {CKEDITOR.editor} editor
1741 * @param {CKEDITOR.dom.element} element
1742 * @param config
1743 * @param {CKEDITOR.filter} [config.filter]
1744 */
1745 function NestedEditable( editor, element, config ) {
1746 // Call the base constructor.
1747 CKEDITOR.dom.element.call( this, element.$ );
1748 this.editor = editor;
1749 this._ = {};
1750 var filter = this.filter = config.filter;
1751
1752 // If blockless editable - always use BR mode.
1753 if ( !CKEDITOR.dtd[ this.getName() ].p )
1754 this.enterMode = this.shiftEnterMode = CKEDITOR.ENTER_BR;
1755 else {
1756 this.enterMode = filter ? filter.getAllowedEnterMode( editor.enterMode ) : editor.enterMode;
1757 this.shiftEnterMode = filter ? filter.getAllowedEnterMode( editor.shiftEnterMode, true ) : editor.shiftEnterMode;
1758 }
1759 }
1760
1761 NestedEditable.prototype = CKEDITOR.tools.extend( CKEDITOR.tools.prototypedCopy( CKEDITOR.dom.element.prototype ), {
1762 /**
1763 * Sets the editable data. The data will be passed through the {@link CKEDITOR.editor#dataProcessor}
1764 * and the {@link CKEDITOR.editor#filter}. This ensures that the data was filtered and prepared to be
1765 * edited like the {@link CKEDITOR.editor#method-setData editor data}.
1766 *
1767 * Before content is changed, all nested widgets are destroyed. Afterwards, after new content is loaded,
1768 * all nested widgets are initialized.
1769 *
1770 * @param {String} data
1771 */
1772 setData: function( data ) {
1773 // For performance reasons don't call destroyAll when initializing a nested editable,
1774 // because there are no widgets inside.
1775 if ( !this._.initialSetData ) {
1776 // Destroy all nested widgets before setting data.
1777 this.editor.widgets.destroyAll( false, this );
1778 }
1779 this._.initialSetData = false;
1780
1781 data = this.editor.dataProcessor.toHtml( data, {
1782 context: this.getName(),
1783 filter: this.filter,
1784 enterMode: this.enterMode
1785 } );
1786 this.setHtml( data );
1787
1788 this.editor.widgets.initOnAll( this );
1789 },
1790
1791 /**
1792 * Gets the editable data. Like {@link #setData}, this method will process and filter the data.
1793 *
1794 * @returns {String}
1795 */
1796 getData: function() {
1797 return this.editor.dataProcessor.toDataFormat( this.getHtml(), {
1798 context: this.getName(),
1799 filter: this.filter,
1800 enterMode: this.enterMode
1801 } );
1802 }
1803 } );
1804
1805 /**
1806 * The editor instance.
1807 *
1808 * @readonly
1809 * @property {CKEDITOR.editor} editor
1810 */
1811
1812 /**
1813 * The filter instance if allowed content rules were defined.
1814 *
1815 * @readonly
1816 * @property {CKEDITOR.filter} filter
1817 */
1818
1819 /**
1820 * The enter mode active in this editable.
1821 * It is determined from editable's name (whether it is a blockless editable),
1822 * its allowed content rules (if defined) and the default editor's mode.
1823 *
1824 * @readonly
1825 * @property {Number} enterMode
1826 */
1827
1828 /**
1829 * The shift enter move active in this editable.
1830 *
1831 * @readonly
1832 * @property {Number} shiftEnterMode
1833 */
1834
1835
1836 //
1837 // REPOSITORY helpers -----------------------------------------------------
1838 //
1839
1840 function addWidgetButtons( editor ) {
1841 var widgets = editor.widgets.registered,
1842 widget,
1843 widgetName,
1844 widgetButton;
1845
1846 for ( widgetName in widgets ) {
1847 widget = widgets[ widgetName ];
1848
1849 // Create button if defined.
1850 widgetButton = widget.button;
1851 if ( widgetButton && editor.ui.addButton ) {
1852 editor.ui.addButton( CKEDITOR.tools.capitalize( widget.name, true ), {
1853 label: widgetButton,
1854 command: widget.name,
1855 toolbar: 'insert,10'
1856 } );
1857 }
1858 }
1859 }
1860
1861 // Create a command creating and editing widget.
1862 //
1863 // @param editor
1864 // @param {CKEDITOR.plugins.widget.definition} widgetDef
1865 function addWidgetCommand( editor, widgetDef ) {
1866 editor.addCommand( widgetDef.name, {
1867 exec: function( editor, commandData ) {
1868 var focused = editor.widgets.focused;
1869 // If a widget of the same type is focused, start editing.
1870 if ( focused && focused.name == widgetDef.name )
1871 focused.edit();
1872 // Otherwise...
1873 // ... use insert method is was defined.
1874 else if ( widgetDef.insert )
1875 widgetDef.insert();
1876 // ... or create a brand-new widget from template.
1877 else if ( widgetDef.template ) {
1878 var defaults = typeof widgetDef.defaults == 'function' ? widgetDef.defaults() : widgetDef.defaults,
1879 element = CKEDITOR.dom.element.createFromHtml( widgetDef.template.output( defaults ) ),
1880 instance,
1881 wrapper = editor.widgets.wrapElement( element, widgetDef.name ),
1882 temp = new CKEDITOR.dom.documentFragment( wrapper.getDocument() );
1883
1884 // Append wrapper to a temporary document. This will unify the environment
1885 // in which #data listeners work when creating and editing widget.
1886 temp.append( wrapper );
1887 instance = editor.widgets.initOn( element, widgetDef, commandData && commandData.startupData );
1888
1889 // Instance could be destroyed during initialization.
1890 // In this case finalize creation if some new widget
1891 // was left in temporary document fragment.
1892 if ( !instance ) {
1893 finalizeCreation();
1894 return;
1895 }
1896
1897 // Listen on edit to finalize widget insertion.
1898 //
1899 // * If dialog was set, then insert widget after dialog was successfully saved or destroy this
1900 // temporary instance.
1901 // * If dialog wasn't set and edit wasn't canceled, insert widget.
1902 var editListener = instance.once( 'edit', function( evt ) {
1903 if ( evt.data.dialog ) {
1904 instance.once( 'dialog', function( evt ) {
1905 var dialog = evt.data,
1906 okListener,
1907 cancelListener;
1908
1909 // Finalize creation AFTER (20) new data was set.
1910 okListener = dialog.once( 'ok', finalizeCreation, null, null, 20 );
1911
1912 cancelListener = dialog.once( 'cancel', function( evt ) {
1913 if ( !( evt.data && evt.data.hide === false ) ) {
1914 editor.widgets.destroy( instance, true );
1915 }
1916 } );
1917
1918 dialog.once( 'hide', function() {
1919 okListener.removeListener();
1920 cancelListener.removeListener();
1921 } );
1922 } );
1923 } else {
1924 // Dialog hasn't been set, so insert widget now.
1925 finalizeCreation();
1926 }
1927 }, null, null, 999 );
1928
1929 instance.edit();
1930
1931 // Remove listener in case someone canceled it before this
1932 // listener was executed.
1933 editListener.removeListener();
1934 }
1935
1936 function finalizeCreation() {
1937 editor.widgets.finalizeCreation( temp );
1938 }
1939 },
1940
1941 allowedContent: widgetDef.allowedContent,
1942 requiredContent: widgetDef.requiredContent,
1943 contentForms: widgetDef.contentForms,
1944 contentTransformations: widgetDef.contentTransformations
1945 } );
1946 }
1947
1948 function addWidgetProcessors( widgetsRepo, widgetDef ) {
1949 var upcast = widgetDef.upcast,
1950 upcasts,
1951 priority = widgetDef.upcastPriority || 10;
1952
1953 if ( !upcast )
1954 return;
1955
1956 // Multiple upcasts defined in string.
1957 if ( typeof upcast == 'string' ) {
1958 upcasts = upcast.split( ',' );
1959 while ( upcasts.length ) {
1960 addUpcast( widgetDef.upcasts[ upcasts.pop() ], widgetDef.name, priority );
1961 }
1962 }
1963 // Single rule which is automatically activated.
1964 else {
1965 addUpcast( upcast, widgetDef.name, priority );
1966 }
1967
1968 function addUpcast( upcast, name, priority ) {
1969 // Find index of the first higher (in terms of value) priority upcast.
1970 var index = CKEDITOR.tools.getIndex( widgetsRepo._.upcasts, function( element ) {
1971 return element[ 2 ] > priority;
1972 } );
1973 // Add at the end if it is the highest priority so far.
1974 if ( index < 0 ) {
1975 index = widgetsRepo._.upcasts.length;
1976 }
1977
1978 widgetsRepo._.upcasts.splice( index, 0, [ upcast, name, priority ] );
1979 }
1980 }
1981
1982 function blurWidget( widgetsRepo, widget ) {
1983 widgetsRepo.focused = null;
1984
1985 if ( widget.isInited() ) {
1986 var isDirty = widget.editor.checkDirty();
1987
1988 // Widget could be destroyed in the meantime - e.g. data could be set.
1989 widgetsRepo.fire( 'widgetBlurred', { widget: widget } );
1990 widget.setFocused( false );
1991
1992 !isDirty && widget.editor.resetDirty();
1993 }
1994 }
1995
1996 function checkWidgets( evt ) {
1997 var options = evt.data;
1998
1999 if ( this.editor.mode != 'wysiwyg' )
2000 return;
2001
2002 var editable = this.editor.editable(),
2003 instances = this.instances,
2004 newInstances, i, count, wrapper, notYetInitialized;
2005
2006 if ( !editable )
2007 return;
2008
2009 // Remove widgets which have no corresponding elements in DOM.
2010 for ( i in instances ) {
2011 // http://dev.ckeditor.com/ticket/13410 Remove widgets that are ready. This prevents from destroying widgets that are during loading process.
2012 if ( instances[ i ].isReady() && !editable.contains( instances[ i ].wrapper ) )
2013 this.destroy( instances[ i ], true );
2014 }
2015
2016 // Init on all (new) if initOnlyNew option was passed.
2017 if ( options && options.initOnlyNew )
2018 newInstances = this.initOnAll();
2019 else {
2020 var wrappers = editable.find( '.cke_widget_wrapper' );
2021 newInstances = [];
2022
2023 // Create widgets on existing wrappers if they do not exists.
2024 for ( i = 0, count = wrappers.count(); i < count; i++ ) {
2025 wrapper = wrappers.getItem( i );
2026 notYetInitialized = !this.getByElement( wrapper, true );
2027
2028 // Check if:
2029 // * there's no instance for this widget
2030 // * wrapper is not inside some temporary element like copybin (http://dev.ckeditor.com/ticket/11088)
2031 // * it was a nested widget's wrapper which has been detached from DOM,
2032 // when nested editable has been initialized (it overwrites its innerHTML
2033 // and initializes nested widgets).
2034 if ( notYetInitialized && !findParent( wrapper, isDomTemp ) && editable.contains( wrapper ) ) {
2035 // Add cke_widget_new class because otherwise
2036 // widget will not be created on such wrapper.
2037 wrapper.addClass( 'cke_widget_new' );
2038 newInstances.push( this.initOn( wrapper.getFirst( Widget.isDomWidgetElement ) ) );
2039 }
2040 }
2041 }
2042
2043 // If only single widget was initialized and focusInited was passed, focus it.
2044 if ( options && options.focusInited && newInstances.length == 1 )
2045 newInstances[ 0 ].focus();
2046 }
2047
2048 // Unwraps widget element and clean up element.
2049 //
2050 // This function is used to clean up pasted widgets.
2051 // It should have similar result to widget#destroy plus
2052 // some additional adjustments, specific for pasting.
2053 //
2054 // @param {CKEDITOR.htmlParser.element} el
2055 function cleanUpWidgetElement( el ) {
2056 var parent = el.parent;
2057 if ( parent.type == CKEDITOR.NODE_ELEMENT && parent.attributes[ 'data-cke-widget-wrapper' ] )
2058 parent.replaceWith( el );
2059 }
2060
2061 // Similar to cleanUpWidgetElement, but works on DOM and finds
2062 // widget elements by its own.
2063 //
2064 // Unlike cleanUpWidgetElement it will wrap element back.
2065 //
2066 // @param {CKEDITOR.dom.element} container
2067 function cleanUpAllWidgetElements( widgetsRepo, container ) {
2068 var wrappers = container.find( '.cke_widget_wrapper' ),
2069 wrapper, element,
2070 i = 0,
2071 l = wrappers.count();
2072
2073 for ( ; i < l; ++i ) {
2074 wrapper = wrappers.getItem( i );
2075 element = wrapper.getFirst( Widget.isDomWidgetElement );
2076 // If wrapper contains widget element - unwrap it and wrap again.
2077 if ( element.type == CKEDITOR.NODE_ELEMENT && element.data( 'widget' ) ) {
2078 element.replace( wrapper );
2079 widgetsRepo.wrapElement( element );
2080 } else {
2081 // Otherwise - something is wrong... clean this up.
2082 wrapper.remove();
2083 }
2084 }
2085 }
2086
2087 // Creates {@link CKEDITOR.filter} instance for given widget, editable and rules.
2088 //
2089 // Once filter for widget-editable pair is created it is cached, so the same instance
2090 // will be returned when method is executed again.
2091 //
2092 // @param {String} widgetName
2093 // @param {String} editableName
2094 // @param {CKEDITOR.plugins.widget.nestedEditableDefinition} editableDefinition The nested editable definition.
2095 // @returns {CKEDITOR.filter} Filter instance or `null` if rules are not defined.
2096 // @context CKEDITOR.plugins.widget.repository
2097 function createEditableFilter( widgetName, editableName, editableDefinition ) {
2098 if ( !editableDefinition.allowedContent && !editableDefinition.disallowedContent )
2099 return null;
2100
2101 var editables = this._.filters[ widgetName ];
2102
2103 if ( !editables )
2104 this._.filters[ widgetName ] = editables = {};
2105
2106 var filter = editables[ editableName ];
2107
2108 if ( !filter ) {
2109 filter = editableDefinition.allowedContent ? new CKEDITOR.filter( editableDefinition.allowedContent ) : this.editor.filter.clone();
2110
2111 editables[ editableName ] = filter;
2112
2113 if ( editableDefinition.disallowedContent ) {
2114 filter.disallow( editableDefinition.disallowedContent );
2115 }
2116 }
2117
2118 return filter;
2119 }
2120
2121 // Creates an iterator function which when executed on all
2122 // elements in DOM tree will gather elements that should be wrapped
2123 // and initialized as widgets.
2124 function createUpcastIterator( widgetsRepo ) {
2125 var toBeWrapped = [],
2126 upcasts = widgetsRepo._.upcasts,
2127 upcastCallbacks = widgetsRepo._.upcastCallbacks;
2128
2129 return {
2130 toBeWrapped: toBeWrapped,
2131
2132 iterator: function( element ) {
2133 var upcast, upcasted,
2134 data,
2135 i,
2136 upcastsLength,
2137 upcastCallbacksLength;
2138
2139 // Wrapper found - find widget element, add it to be
2140 // cleaned up (unwrapped) and wrapped and stop iterating in this branch.
2141 if ( 'data-cke-widget-wrapper' in element.attributes ) {
2142 element = element.getFirst( Widget.isParserWidgetElement );
2143
2144 if ( element )
2145 toBeWrapped.push( [ element ] );
2146
2147 // Do not iterate over descendants.
2148 return false;
2149 }
2150 // Widget element found - add it to be cleaned up (just in case)
2151 // and wrapped and stop iterating in this branch.
2152 else if ( 'data-widget' in element.attributes ) {
2153 toBeWrapped.push( [ element ] );
2154
2155 // Do not iterate over descendants.
2156 return false;
2157 }
2158 else if ( ( upcastsLength = upcasts.length ) ) {
2159 // Ignore elements with data-cke-widget-upcasted to avoid multiple upcasts (http://dev.ckeditor.com/ticket/11533).
2160 // Do not iterate over descendants.
2161 if ( element.attributes[ 'data-cke-widget-upcasted' ] )
2162 return false;
2163
2164 // Check element with upcast callbacks first.
2165 // If any of them return false abort upcasting.
2166 for ( i = 0, upcastCallbacksLength = upcastCallbacks.length; i < upcastCallbacksLength; ++i ) {
2167 if ( upcastCallbacks[ i ]( element ) === false )
2168 return;
2169 // Return nothing in order to continue iterating over ascendants.
2170 // See http://dev.ckeditor.com/ticket/11186#comment:6
2171 }
2172
2173 for ( i = 0; i < upcastsLength; ++i ) {
2174 upcast = upcasts[ i ];
2175 data = {};
2176
2177 if ( ( upcasted = upcast[ 0 ]( element, data ) ) ) {
2178 // If upcast function returned element, upcast this one.
2179 // It can be e.g. a new element wrapping the original one.
2180 if ( upcasted instanceof CKEDITOR.htmlParser.element )
2181 element = upcasted;
2182
2183 // Set initial data attr with data from upcast method.
2184 element.attributes[ 'data-cke-widget-data' ] = encodeURIComponent( JSON.stringify( data ) );
2185 element.attributes[ 'data-cke-widget-upcasted' ] = 1;
2186
2187 toBeWrapped.push( [ element, upcast[ 1 ] ] );
2188
2189 // Do not iterate over descendants.
2190 return false;
2191 }
2192 }
2193 }
2194 }
2195 };
2196 }
2197
2198 // Finds a first parent that matches query.
2199 //
2200 // @param {CKEDITOR.dom.element} element
2201 // @param {Function} query
2202 function findParent( element, query ) {
2203 var parent = element;
2204
2205 while ( ( parent = parent.getParent() ) ) {
2206 if ( query( parent ) )
2207 return true;
2208 }
2209 return false;
2210 }
2211
2212 function getWrapperAttributes( inlineWidget, name ) {
2213 return {
2214 // tabindex="-1" means that it can receive focus by code.
2215 tabindex: -1,
2216 contenteditable: 'false',
2217 'data-cke-widget-wrapper': 1,
2218 'data-cke-filter': 'off',
2219 // Class cke_widget_new marks widgets which haven't been initialized yet.
2220 'class': 'cke_widget_wrapper cke_widget_new cke_widget_' +
2221 ( inlineWidget ? 'inline' : 'block' ) +
2222 ( name ? ' cke_widget_' + name : '' )
2223 };
2224 }
2225
2226 // Inserts element at given index.
2227 // It will check DTD and split ancestor elements up to the first
2228 // that can contain this element.
2229 //
2230 // @param {CKEDITOR.htmlParser.element} parent
2231 // @param {Number} index
2232 // @param {CKEDITOR.htmlParser.element} element
2233 function insertElement( parent, index, element ) {
2234 // Do not split doc fragment...
2235 if ( parent.type == CKEDITOR.NODE_ELEMENT ) {
2236 var parentAllows = CKEDITOR.dtd[ parent.name ];
2237 // Parent element is known (included in DTD) and cannot contain
2238 // this element.
2239 if ( parentAllows && !parentAllows[ element.name ] ) {
2240 var parent2 = parent.split( index ),
2241 parentParent = parent.parent;
2242
2243 // Element will now be inserted at right parent's index.
2244 index = parent2.getIndex();
2245
2246 // If left part of split is empty - remove it.
2247 if ( !parent.children.length ) {
2248 index -= 1;
2249 parent.remove();
2250 }
2251
2252 // If right part of split is empty - remove it.
2253 if ( !parent2.children.length )
2254 parent2.remove();
2255
2256 // Try inserting as grandpas' children.
2257 return insertElement( parentParent, index, element );
2258 }
2259 }
2260
2261 // Finally we can add this element.
2262 parent.add( element, index );
2263 }
2264
2265 // Checks whether for the given widget definition and element widget should be created in inline or block mode.
2266 //
2267 // See also: {@link CKEDITOR.plugins.widget.definition#inline} and {@link CKEDITOR.plugins.widget#element}.
2268 //
2269 // @param {CKEDITOR.plugins.widget.definition} widgetDef The widget definition.
2270 // @param {String} elementName The name of the widget element.
2271 // @returns {Boolean}
2272 function isWidgetInline( widgetDef, elementName ) {
2273 return typeof widgetDef.inline == 'boolean' ? widgetDef.inline : !!CKEDITOR.dtd.$inline[ elementName ];
2274 }
2275
2276 // @param {CKEDITOR.dom.element}
2277 // @returns {Boolean}
2278 function isDomTemp( element ) {
2279 return element.hasAttribute( 'data-cke-temp' );
2280 }
2281
2282 function onEditableKey( widget, keyCode ) {
2283 var focusedEditable = widget.focusedEditable,
2284 range;
2285
2286 // CTRL+A.
2287 if ( keyCode == CKEDITOR.CTRL + 65 ) {
2288 var bogus = focusedEditable.getBogus();
2289
2290 range = widget.editor.createRange();
2291 range.selectNodeContents( focusedEditable );
2292 // Exclude bogus if exists.
2293 if ( bogus )
2294 range.setEndAt( bogus, CKEDITOR.POSITION_BEFORE_START );
2295
2296 range.select();
2297 // Cancel event - block default.
2298 return false;
2299 }
2300 // DEL or BACKSPACE.
2301 else if ( keyCode == 8 || keyCode == 46 ) {
2302 var ranges = widget.editor.getSelection().getRanges();
2303
2304 range = ranges[ 0 ];
2305
2306 // Block del or backspace if at editable's boundary.
2307 return !( ranges.length == 1 && range.collapsed &&
2308 range.checkBoundaryOfElement( focusedEditable, CKEDITOR[ keyCode == 8 ? 'START' : 'END' ] ) );
2309 }
2310 }
2311
2312 function setFocusedEditable( widgetsRepo, widget, editableElement, offline ) {
2313 var editor = widgetsRepo.editor;
2314
2315 editor.fire( 'lockSnapshot' );
2316
2317 if ( editableElement ) {
2318 var editableName = editableElement.data( 'cke-widget-editable' ),
2319 editableInstance = widget.editables[ editableName ];
2320
2321 widgetsRepo.widgetHoldingFocusedEditable = widget;
2322 widget.focusedEditable = editableInstance;
2323 editableElement.addClass( 'cke_widget_editable_focused' );
2324
2325 if ( editableInstance.filter )
2326 editor.setActiveFilter( editableInstance.filter );
2327 editor.setActiveEnterMode( editableInstance.enterMode, editableInstance.shiftEnterMode );
2328 } else {
2329 if ( !offline )
2330 widget.focusedEditable.removeClass( 'cke_widget_editable_focused' );
2331
2332 widget.focusedEditable = null;
2333 widgetsRepo.widgetHoldingFocusedEditable = null;
2334 editor.setActiveFilter( null );
2335 editor.setActiveEnterMode( null, null );
2336 }
2337
2338 editor.fire( 'unlockSnapshot' );
2339 }
2340
2341 function setupContextMenu( editor ) {
2342 if ( !editor.contextMenu )
2343 return;
2344
2345 editor.contextMenu.addListener( function( element ) {
2346 var widget = editor.widgets.getByElement( element, true );
2347
2348 if ( widget )
2349 return widget.fire( 'contextMenu', {} );
2350 } );
2351 }
2352
2353 // And now we've got two problems - original problem and RegExp.
2354 // Some softeners:
2355 // * FF tends to copy all blocks up to the copybin container.
2356 // * IE tends to copy only the copybin, without its container.
2357 // * We use spans on IE and blockless editors, but divs in other cases.
2358 var pasteReplaceRegex = new RegExp(
2359 '^' +
2360 '(?:<(?:div|span)(?: data-cke-temp="1")?(?: id="cke_copybin")?(?: data-cke-temp="1")?>)?' +
2361 '(?:<(?:div|span)(?: style="[^"]+")?>)?' +
2362 '<span [^>]*data-cke-copybin-start="1"[^>]*>.?</span>([\\s\\S]+)<span [^>]*data-cke-copybin-end="1"[^>]*>.?</span>' +
2363 '(?:</(?:div|span)>)?' +
2364 '(?:</(?:div|span)>)?' +
2365 '$',
2366 // IE8 prefers uppercase when browsers stick to lowercase HTML (http://dev.ckeditor.com/ticket/13460).
2367 'i'
2368 );
2369
2370 function pasteReplaceFn( match, wrapperHtml ) {
2371 // Avoid polluting pasted data with any whitspaces,
2372 // what's going to break check whether only one widget was pasted.
2373 return CKEDITOR.tools.trim( wrapperHtml );
2374 }
2375
2376 function setupDragAndDrop( widgetsRepo ) {
2377 var editor = widgetsRepo.editor,
2378 lineutils = CKEDITOR.plugins.lineutils;
2379
2380 // These listeners handle inline and block widgets drag and drop.
2381 // The only thing we need to do to make block widgets custom drag and drop functionality
2382 // is to fire those events with the right properties (like the target which must be the drag handle).
2383 editor.on( 'dragstart', function( evt ) {
2384 var target = evt.data.target;
2385
2386 if ( Widget.isDomDragHandler( target ) ) {
2387 var widget = widgetsRepo.getByElement( target );
2388
2389 evt.data.dataTransfer.setData( 'cke/widget-id', widget.id );
2390
2391 // IE needs focus.
2392 editor.focus();
2393
2394 // and widget need to be focused on drag start (http://dev.ckeditor.com/ticket/12172#comment:10).
2395 widget.focus();
2396 }
2397 } );
2398
2399 editor.on( 'drop', function( evt ) {
2400 var dataTransfer = evt.data.dataTransfer,
2401 id = dataTransfer.getData( 'cke/widget-id' ),
2402 transferType = dataTransfer.getTransferType( editor ),
2403 dragRange = editor.createRange(),
2404 sourceWidget;
2405
2406 // Disable cross-editor drag & drop for widgets - http://dev.ckeditor.com/ticket/13599.
2407 if ( id !== '' && transferType === CKEDITOR.DATA_TRANSFER_CROSS_EDITORS ) {
2408 evt.cancel();
2409 return;
2410 }
2411
2412 if ( id === '' || transferType != CKEDITOR.DATA_TRANSFER_INTERNAL ) {
2413 return;
2414 }
2415
2416 sourceWidget = widgetsRepo.instances[ id ];
2417 if ( !sourceWidget ) {
2418 return;
2419 }
2420
2421 dragRange.setStartBefore( sourceWidget.wrapper );
2422 dragRange.setEndAfter( sourceWidget.wrapper );
2423 evt.data.dragRange = dragRange;
2424
2425 // [IE8-9] Reset state of the clipboard#fixSplitNodesAfterDrop fix because by setting evt.data.dragRange
2426 // (see above) after drop happened we do not need it. That fix is needed only if dragRange was created
2427 // before drop (before text node was split).
2428 delete CKEDITOR.plugins.clipboard.dragStartContainerChildCount;
2429 delete CKEDITOR.plugins.clipboard.dragEndContainerChildCount;
2430
2431 evt.data.dataTransfer.setData( 'text/html', editor.editable().getHtmlFromRange( dragRange ).getHtml() );
2432 editor.widgets.destroy( sourceWidget, true );
2433 } );
2434
2435 editor.on( 'contentDom', function() {
2436 var editable = editor.editable();
2437
2438 // Register Lineutils's utilities as properties of repo.
2439 CKEDITOR.tools.extend( widgetsRepo, {
2440 finder: new lineutils.finder( editor, {
2441 lookups: {
2442 // Element is block but not list item and not in nested editable.
2443 'default': function( el ) {
2444 if ( el.is( CKEDITOR.dtd.$listItem ) )
2445 return;
2446
2447 if ( !el.is( CKEDITOR.dtd.$block ) )
2448 return;
2449
2450 // Allow drop line inside, but never before or after nested editable (http://dev.ckeditor.com/ticket/12006).
2451 if ( Widget.isDomNestedEditable( el ) )
2452 return;
2453
2454 // Do not allow droping inside the widget being dragged (http://dev.ckeditor.com/ticket/13397).
2455 if ( widgetsRepo._.draggedWidget.wrapper.contains( el ) ) {
2456 return;
2457 }
2458
2459 // If element is nested editable, make sure widget can be dropped there (http://dev.ckeditor.com/ticket/12006).
2460 var nestedEditable = Widget.getNestedEditable( editable, el );
2461 if ( nestedEditable ) {
2462 var draggedWidget = widgetsRepo._.draggedWidget;
2463
2464 // Don't let the widget to be dropped into its own nested editable.
2465 if ( widgetsRepo.getByElement( nestedEditable ) == draggedWidget )
2466 return;
2467
2468 var filter = CKEDITOR.filter.instances[ nestedEditable.data( 'cke-filter' ) ],
2469 draggedRequiredContent = draggedWidget.requiredContent;
2470
2471 // There will be no relation if the filter of nested editable does not allow
2472 // requiredContent of dragged widget.
2473 if ( filter && draggedRequiredContent && !filter.check( draggedRequiredContent ) )
2474 return;
2475 }
2476
2477 return CKEDITOR.LINEUTILS_BEFORE | CKEDITOR.LINEUTILS_AFTER;
2478 }
2479 }
2480 } ),
2481 locator: new lineutils.locator( editor ),
2482 liner: new lineutils.liner( editor, {
2483 lineStyle: {
2484 cursor: 'move !important',
2485 'border-top-color': '#666'
2486 },
2487 tipLeftStyle: {
2488 'border-left-color': '#666'
2489 },
2490 tipRightStyle: {
2491 'border-right-color': '#666'
2492 }
2493 } )
2494 }, true );
2495 } );
2496 }
2497
2498 // Setup mouse observer which will trigger:
2499 // * widget focus on widget click,
2500 // * widget#doubleclick forwarded from editor#doubleclick.
2501 function setupMouseObserver( widgetsRepo ) {
2502 var editor = widgetsRepo.editor;
2503
2504 editor.on( 'contentDom', function() {
2505 var editable = editor.editable(),
2506 evtRoot = editable.isInline() ? editable : editor.document,
2507 widget,
2508 mouseDownOnDragHandler;
2509
2510 editable.attachListener( evtRoot, 'mousedown', function( evt ) {
2511 var target = evt.data.getTarget();
2512
2513 // Clicking scrollbar in Chrome will invoke event with target object of document type (#663).
2514 // In IE8 the target object will be empty (http://dev.ckeditor.com/ticket/10887).
2515 // We need to check if target is a proper element.
2516 widget = ( target instanceof CKEDITOR.dom.element ) ? widgetsRepo.getByElement( target ) : null;
2517
2518 mouseDownOnDragHandler = 0; // Reset.
2519
2520 // Widget was clicked, but not editable nested in it.
2521 if ( widget ) {
2522 // Ignore mousedown on drag and drop handler if the widget is inline.
2523 // Block widgets are handled by Lineutils.
2524 if ( widget.inline && target.type == CKEDITOR.NODE_ELEMENT && target.hasAttribute( 'data-cke-widget-drag-handler' ) ) {
2525 mouseDownOnDragHandler = 1;
2526
2527 // When drag handler is pressed we have to clear current selection if it wasn't already on this widget.
2528 // Otherwise, the selection may be in a fillingChar, which prevents dragging a widget. (http://dev.ckeditor.com/ticket/13284, see comment 8 and 9.)
2529 if ( widgetsRepo.focused != widget )
2530 editor.getSelection().removeAllRanges();
2531
2532 return;
2533 }
2534
2535 if ( !Widget.getNestedEditable( widget.wrapper, target ) ) {
2536 evt.data.preventDefault();
2537 if ( !CKEDITOR.env.ie )
2538 widget.focus();
2539 } else {
2540 // Reset widget so mouseup listener is not confused.
2541 widget = null;
2542 }
2543 }
2544 } );
2545
2546 // Focus widget on mouseup if mousedown was fired on drag handler.
2547 // Note: mouseup won't be fired at all if widget was dragged and dropped, so
2548 // this code will be executed only when drag handler was clicked.
2549 editable.attachListener( evtRoot, 'mouseup', function() {
2550 // Check if widget is not destroyed (if widget is destroyed the wrapper will be null).
2551 if ( mouseDownOnDragHandler && widget && widget.wrapper ) {
2552 mouseDownOnDragHandler = 0;
2553 widget.focus();
2554 }
2555 } );
2556
2557 // On IE it is not enough to block mousedown. If widget wrapper (element with
2558 // contenteditable=false attribute) is clicked directly (it is a target),
2559 // then after mouseup/click IE will select that element.
2560 // It is not possible to prevent that default action,
2561 // so we force fake selection after everything happened.
2562 if ( CKEDITOR.env.ie ) {
2563 editable.attachListener( evtRoot, 'mouseup', function() {
2564 setTimeout( function() {
2565 // Check if widget is not destroyed (if widget is destroyed the wrapper will be null) and
2566 // in editable contains widget (it could be dragged and removed).
2567 if ( widget && widget.wrapper && editable.contains( widget.wrapper ) ) {
2568 widget.focus();
2569 widget = null;
2570 }
2571 } );
2572 } );
2573 }
2574 } );
2575
2576 editor.on( 'doubleclick', function( evt ) {
2577 var widget = widgetsRepo.getByElement( evt.data.element );
2578
2579 // Not in widget or in nested editable.
2580 if ( !widget || Widget.getNestedEditable( widget.wrapper, evt.data.element ) )
2581 return;
2582
2583 return widget.fire( 'doubleclick', { element: evt.data.element } );
2584 }, null, null, 1 );
2585 }
2586
2587 // Setup editor#key observer which will forward it
2588 // to focused widget.
2589 function setupKeyboardObserver( widgetsRepo ) {
2590 var editor = widgetsRepo.editor;
2591
2592 editor.on( 'key', function( evt ) {
2593 var focused = widgetsRepo.focused,
2594 widgetHoldingFocusedEditable = widgetsRepo.widgetHoldingFocusedEditable,
2595 ret;
2596
2597 if ( focused )
2598 ret = focused.fire( 'key', { keyCode: evt.data.keyCode } );
2599 else if ( widgetHoldingFocusedEditable )
2600 ret = onEditableKey( widgetHoldingFocusedEditable, evt.data.keyCode );
2601
2602 return ret;
2603 }, null, null, 1 );
2604 }
2605
2606 // Setup copybin on native copy and cut events in order to handle copy and cut commands
2607 // if user accepted security alert on IEs.
2608 // Note: when copying or cutting using keystroke, copySingleWidget will be first executed
2609 // by the keydown listener. Conflict between two calls will be resolved by copy_bin existence check.
2610 function setupNativeCutAndCopy( widgetsRepo ) {
2611 var editor = widgetsRepo.editor;
2612
2613 editor.on( 'contentDom', function() {
2614 var editable = editor.editable();
2615
2616 editable.attachListener( editable, 'copy', eventListener );
2617 editable.attachListener( editable, 'cut', eventListener );
2618 } );
2619
2620 function eventListener( evt ) {
2621 if ( widgetsRepo.focused )
2622 copySingleWidget( widgetsRepo.focused, evt.name == 'cut' );
2623 }
2624 }
2625
2626 // Setup selection observer which will trigger:
2627 // * widget select & focus on selection change,
2628 // * nested editable focus (related properites and classes) on selection change,
2629 // * deselecting and blurring all widgets on data,
2630 // * blurring widget on editor blur.
2631 function setupSelectionObserver( widgetsRepo ) {
2632 var editor = widgetsRepo.editor;
2633
2634 editor.on( 'selectionCheck', function() {
2635 widgetsRepo.fire( 'checkSelection' );
2636 } );
2637
2638 widgetsRepo.on( 'checkSelection', widgetsRepo.checkSelection, widgetsRepo );
2639
2640 editor.on( 'selectionChange', function( evt ) {
2641 var nestedEditable = Widget.getNestedEditable( editor.editable(), evt.data.selection.getStartElement() ),
2642 newWidget = nestedEditable && widgetsRepo.getByElement( nestedEditable ),
2643 oldWidget = widgetsRepo.widgetHoldingFocusedEditable;
2644
2645 if ( oldWidget ) {
2646 if ( oldWidget !== newWidget || !oldWidget.focusedEditable.equals( nestedEditable ) ) {
2647 setFocusedEditable( widgetsRepo, oldWidget, null );
2648
2649 if ( newWidget && nestedEditable )
2650 setFocusedEditable( widgetsRepo, newWidget, nestedEditable );
2651 }
2652 }
2653 // It may happen that there's no widget even if editable was found -
2654 // e.g. if selection was automatically set in editable although widget wasn't initialized yet.
2655 else if ( newWidget && nestedEditable ) {
2656 setFocusedEditable( widgetsRepo, newWidget, nestedEditable );
2657 }
2658 } );
2659
2660 // Invalidate old widgets early - immediately on dataReady.
2661 editor.on( 'dataReady', function() {
2662 // Deselect and blur all widgets.
2663 stateUpdater( widgetsRepo ).commit();
2664 } );
2665
2666 editor.on( 'blur', function() {
2667 var widget;
2668
2669 if ( ( widget = widgetsRepo.focused ) )
2670 blurWidget( widgetsRepo, widget );
2671
2672 if ( ( widget = widgetsRepo.widgetHoldingFocusedEditable ) )
2673 setFocusedEditable( widgetsRepo, widget, null );
2674 } );
2675 }
2676
2677 // Set up actions like:
2678 // * processing in toHtml/toDataFormat,
2679 // * pasting handling,
2680 // * insertion handling,
2681 // * editable reload handling (setData, mode switch, undo/redo),
2682 // * DOM invalidation handling,
2683 // * widgets checks.
2684 function setupWidgetsLifecycle( widgetsRepo ) {
2685 setupWidgetsLifecycleStart( widgetsRepo );
2686 setupWidgetsLifecycleEnd( widgetsRepo );
2687
2688 widgetsRepo.on( 'checkWidgets', checkWidgets );
2689 widgetsRepo.editor.on( 'contentDomInvalidated', widgetsRepo.checkWidgets, widgetsRepo );
2690 }
2691
2692 function setupWidgetsLifecycleEnd( widgetsRepo ) {
2693 var editor = widgetsRepo.editor,
2694 downcastingSessions = {};
2695
2696 // Listen before htmlDP#htmlFilter is applied to cache all widgets, because we'll
2697 // loose data-cke-* attributes.
2698 editor.on( 'toDataFormat', function( evt ) {
2699 // To avoid conflicts between htmlDP#toDF calls done at the same time
2700 // (e.g. nestedEditable#getData called during downcasting some widget)
2701 // mark every toDataFormat event chain with the downcasting session id.
2702 var id = CKEDITOR.tools.getNextNumber(),
2703 toBeDowncasted = [];
2704 evt.data.downcastingSessionId = id;
2705 downcastingSessions[ id ] = toBeDowncasted;
2706
2707 evt.data.dataValue.forEach( function( element ) {
2708 var attrs = element.attributes,
2709 widget, widgetElement;
2710
2711 // Wrapper.
2712 // Perform first part of downcasting (cleanup) and cache widgets,
2713 // because after applying DP's filter all data-cke-* attributes will be gone.
2714 if ( 'data-cke-widget-id' in attrs ) {
2715 widget = widgetsRepo.instances[ attrs[ 'data-cke-widget-id' ] ];
2716 if ( widget ) {
2717 widgetElement = element.getFirst( Widget.isParserWidgetElement );
2718 toBeDowncasted.push( {
2719 wrapper: element,
2720 element: widgetElement,
2721 widget: widget,
2722 editables: {}
2723 } );
2724
2725 // If widget did not have data-cke-widget attribute before upcasting remove it.
2726 if ( widgetElement.attributes[ 'data-cke-widget-keep-attr' ] != '1' )
2727 delete widgetElement.attributes[ 'data-widget' ];
2728 }
2729 }
2730 // Nested editable.
2731 else if ( 'data-cke-widget-editable' in attrs ) {
2732 // Save the reference to this nested editable in the closest widget to be downcasted.
2733 // Nested editables are downcasted in the successive toDataFormat to create an opportunity
2734 // for dataFilter's "excludeNestedEditable" option to do its job (that option relies on
2735 // contenteditable="true" attribute) (http://dev.ckeditor.com/ticket/11372).
2736 toBeDowncasted[ toBeDowncasted.length - 1 ].editables[ attrs[ 'data-cke-widget-editable' ] ] = element;
2737
2738 // Don't check children - there won't be next wrapper or nested editable which we
2739 // should process in this session.
2740 return false;
2741 }
2742 }, CKEDITOR.NODE_ELEMENT, true );
2743 }, null, null, 8 );
2744
2745 // Listen after dataProcessor.htmlFilter and ACF were applied
2746 // so wrappers securing widgets' contents are removed after all filtering was done.
2747 editor.on( 'toDataFormat', function( evt ) {
2748 // Ignore some unmarked sessions.
2749 if ( !evt.data.downcastingSessionId )
2750 return;
2751
2752 var toBeDowncasted = downcastingSessions[ evt.data.downcastingSessionId ],
2753 toBe, widget, widgetElement, retElement, editableElement, e;
2754
2755 while ( ( toBe = toBeDowncasted.shift() ) ) {
2756 widget = toBe.widget;
2757 widgetElement = toBe.element;
2758 retElement = widget._.downcastFn && widget._.downcastFn.call( widget, widgetElement );
2759
2760 // Replace nested editables' content with their output data.
2761 for ( e in toBe.editables ) {
2762 editableElement = toBe.editables[ e ];
2763
2764 delete editableElement.attributes.contenteditable;
2765 editableElement.setHtml( widget.editables[ e ].getData() );
2766 }
2767
2768 // Returned element always defaults to widgetElement.
2769 if ( !retElement )
2770 retElement = widgetElement;
2771
2772 toBe.wrapper.replaceWith( retElement );
2773 }
2774 }, null, null, 13 );
2775
2776
2777 editor.on( 'contentDomUnload', function() {
2778 widgetsRepo.destroyAll( true );
2779 } );
2780 }
2781
2782 function setupWidgetsLifecycleStart( widgetsRepo ) {
2783 var editor = widgetsRepo.editor,
2784 processedWidgetOnly,
2785 snapshotLoaded;
2786
2787 // Listen after ACF (so data are filtered),
2788 // but before dataProcessor.dataFilter was applied (so we can secure widgets' internals).
2789 editor.on( 'toHtml', function( evt ) {
2790 var upcastIterator = createUpcastIterator( widgetsRepo ),
2791 toBeWrapped;
2792
2793 evt.data.dataValue.forEach( upcastIterator.iterator, CKEDITOR.NODE_ELEMENT, true );
2794
2795 // Clean up and wrap all queued elements.
2796 while ( ( toBeWrapped = upcastIterator.toBeWrapped.pop() ) ) {
2797 cleanUpWidgetElement( toBeWrapped[ 0 ] );
2798 widgetsRepo.wrapElement( toBeWrapped[ 0 ], toBeWrapped[ 1 ] );
2799 }
2800
2801 // Used to determine whether only widget was pasted.
2802 if ( evt.data.protectedWhitespaces ) {
2803 // Whitespaces are protected by wrapping content with spans. Take the middle node only.
2804 processedWidgetOnly = evt.data.dataValue.children.length == 3 &&
2805 Widget.isParserWidgetWrapper( evt.data.dataValue.children[ 1 ] );
2806 } else {
2807 processedWidgetOnly = evt.data.dataValue.children.length == 1 &&
2808 Widget.isParserWidgetWrapper( evt.data.dataValue.children[ 0 ] );
2809 }
2810 }, null, null, 8 );
2811
2812 editor.on( 'dataReady', function() {
2813 // Clean up all widgets loaded from snapshot.
2814 if ( snapshotLoaded )
2815 cleanUpAllWidgetElements( widgetsRepo, editor.editable() );
2816 snapshotLoaded = 0;
2817
2818 // Some widgets were destroyed on contentDomUnload,
2819 // some on loadSnapshot, but that does not include
2820 // e.g. setHtml on inline editor or widgets removed just
2821 // before setting data.
2822 widgetsRepo.destroyAll( true );
2823 widgetsRepo.initOnAll();
2824 } );
2825
2826 // Set flag so dataReady will know that additional
2827 // cleanup is needed, because snapshot containing widgets was loaded.
2828 editor.on( 'loadSnapshot', function( evt ) {
2829 // Primitive but sufficient check which will prevent from executing
2830 // heavier cleanUpAllWidgetElements if not needed.
2831 if ( ( /data-cke-widget/ ).test( evt.data ) )
2832 snapshotLoaded = 1;
2833
2834 widgetsRepo.destroyAll( true );
2835 }, null, null, 9 );
2836
2837 // Handle pasted single widget.
2838 editor.on( 'paste', function( evt ) {
2839 var data = evt.data;
2840
2841 data.dataValue = data.dataValue.replace( pasteReplaceRegex, pasteReplaceFn );
2842
2843 // If drag'n'drop kind of paste into nested editable (data.range), selection is set AFTER
2844 // data is pasted, which means editor has no chance to change activeFilter's context.
2845 // As a result, pasted data is filtered with default editor's filter instead of NE's and
2846 // funny things get inserted. Changing the filter by analysis of the paste range below (http://dev.ckeditor.com/ticket/13186).
2847 if ( data.range ) {
2848 // Check if pasting into nested editable.
2849 var nestedEditable = Widget.getNestedEditable( editor.editable(), data.range.startContainer );
2850
2851 if ( nestedEditable ) {
2852 // Retrieve the filter from NE's data and set it active before editor.insertHtml is done
2853 // in clipboard plugin.
2854 var filter = CKEDITOR.filter.instances[ nestedEditable.data( 'cke-filter' ) ];
2855
2856 if ( filter ) {
2857 editor.setActiveFilter( filter );
2858 }
2859 }
2860 }
2861 } );
2862
2863 // Listen with high priority to check widgets after data was inserted.
2864 editor.on( 'afterInsertHtml', function( evt ) {
2865 if ( evt.data.intoRange ) {
2866 widgetsRepo.checkWidgets( { initOnlyNew: true } );
2867 } else {
2868 editor.fire( 'lockSnapshot' );
2869 // Init only new for performance reason.
2870 // Focus inited if only widget was processed.
2871 widgetsRepo.checkWidgets( { initOnlyNew: true, focusInited: processedWidgetOnly } );
2872
2873 editor.fire( 'unlockSnapshot' );
2874 }
2875 } );
2876 }
2877
2878 // Helper for coordinating which widgets should be
2879 // selected/deselected and which one should be focused/blurred.
2880 function stateUpdater( widgetsRepo ) {
2881 var currentlySelected = widgetsRepo.selected,
2882 toBeSelected = [],
2883 toBeDeselected = currentlySelected.slice( 0 ),
2884 focused = null;
2885
2886 return {
2887 select: function( widget ) {
2888 if ( CKEDITOR.tools.indexOf( currentlySelected, widget ) < 0 )
2889 toBeSelected.push( widget );
2890
2891 var index = CKEDITOR.tools.indexOf( toBeDeselected, widget );
2892 if ( index >= 0 )
2893 toBeDeselected.splice( index, 1 );
2894
2895 return this;
2896 },
2897
2898 focus: function( widget ) {
2899 focused = widget;
2900 return this;
2901 },
2902
2903 commit: function() {
2904 var focusedChanged = widgetsRepo.focused !== focused,
2905 widget, isDirty;
2906
2907 widgetsRepo.editor.fire( 'lockSnapshot' );
2908
2909 if ( focusedChanged && ( widget = widgetsRepo.focused ) )
2910 blurWidget( widgetsRepo, widget );
2911
2912 while ( ( widget = toBeDeselected.pop() ) ) {
2913 currentlySelected.splice( CKEDITOR.tools.indexOf( currentlySelected, widget ), 1 );
2914 // Widget could be destroyed in the meantime - e.g. data could be set.
2915 if ( widget.isInited() ) {
2916 isDirty = widget.editor.checkDirty();
2917
2918 widget.setSelected( false );
2919
2920 !isDirty && widget.editor.resetDirty();
2921 }
2922 }
2923
2924 if ( focusedChanged && focused ) {
2925 isDirty = widgetsRepo.editor.checkDirty();
2926
2927 widgetsRepo.focused = focused;
2928 widgetsRepo.fire( 'widgetFocused', { widget: focused } );
2929 focused.setFocused( true );
2930
2931 !isDirty && widgetsRepo.editor.resetDirty();
2932 }
2933
2934 while ( ( widget = toBeSelected.pop() ) ) {
2935 currentlySelected.push( widget );
2936 widget.setSelected( true );
2937 }
2938
2939 widgetsRepo.editor.fire( 'unlockSnapshot' );
2940 }
2941 };
2942 }
2943
2944
2945 //
2946 // WIDGET helpers ---------------------------------------------------------
2947 //
2948
2949 // LEFT, RIGHT, UP, DOWN, DEL, BACKSPACE - unblock default fake sel handlers.
2950 var keystrokesNotBlockedByWidget = { 37: 1, 38: 1, 39: 1, 40: 1, 8: 1, 46: 1 };
2951
2952 // Applies or removes style's classes from widget.
2953 // @param {CKEDITOR.style} style Custom widget style.
2954 // @param {Boolean} apply Whether to apply or remove style.
2955 function applyRemoveStyle( widget, style, apply ) {
2956 var changed = 0,
2957 classes = getStyleClasses( style ),
2958 updatedClasses = widget.data.classes || {},
2959 cl;
2960
2961 // Ee... Something is wrong with this style.
2962 if ( !classes )
2963 return;
2964
2965 // Clone, because we need to break reference.
2966 updatedClasses = CKEDITOR.tools.clone( updatedClasses );
2967
2968 while ( ( cl = classes.pop() ) ) {
2969 if ( apply ) {
2970 if ( !updatedClasses[ cl ] )
2971 changed = updatedClasses[ cl ] = 1;
2972 } else {
2973 if ( updatedClasses[ cl ] ) {
2974 delete updatedClasses[ cl ];
2975 changed = 1;
2976 }
2977 }
2978 }
2979 if ( changed )
2980 widget.setData( 'classes', updatedClasses );
2981 }
2982
2983 function cancel( evt ) {
2984 evt.cancel();
2985 }
2986
2987 function copySingleWidget( widget, isCut ) {
2988 var editor = widget.editor,
2989 doc = editor.document;
2990
2991 // We're still handling previous copy/cut.
2992 // When keystroke is used to copy/cut this will also prevent
2993 // conflict with copySingleWidget called again for native copy/cut event.
2994 if ( doc.getById( 'cke_copybin' ) )
2995 return;
2996
2997 // [IE] Use span for copybin and its container to avoid bug with expanding editable height by
2998 // absolutely positioned element.
2999 var copybinName = ( editor.blockless || CKEDITOR.env.ie ) ? 'span' : 'div',
3000 copybin = doc.createElement( copybinName ),
3001 copybinContainer = doc.createElement( copybinName ),
3002 // IE8 always jumps to the end of document.
3003 needsScrollHack = CKEDITOR.env.ie && CKEDITOR.env.version < 9;
3004
3005 copybinContainer.setAttributes( {
3006 id: 'cke_copybin',
3007 'data-cke-temp': '1'
3008 } );
3009
3010 // Position copybin element outside current viewport.
3011 copybin.setStyles( {
3012 position: 'absolute',
3013 width: '1px',
3014 height: '1px',
3015 overflow: 'hidden'
3016 } );
3017
3018 copybin.setStyle( editor.config.contentsLangDirection == 'ltr' ? 'left' : 'right', '-5000px' );
3019
3020 var range = editor.createRange();
3021 range.setStartBefore( widget.wrapper );
3022 range.setEndAfter( widget.wrapper );
3023
3024 copybin.setHtml(
3025 '<span data-cke-copybin-start="1">\u200b</span>' +
3026 editor.editable().getHtmlFromRange( range ).getHtml() +
3027 '<span data-cke-copybin-end="1">\u200b</span>' );
3028
3029 // Save snapshot with the current state.
3030 editor.fire( 'saveSnapshot' );
3031
3032 // Ignore copybin.
3033 editor.fire( 'lockSnapshot' );
3034
3035 copybinContainer.append( copybin );
3036 editor.editable().append( copybinContainer );
3037
3038 var listener1 = editor.on( 'selectionChange', cancel, null, null, 0 ),
3039 listener2 = widget.repository.on( 'checkSelection', cancel, null, null, 0 );
3040
3041 if ( needsScrollHack ) {
3042 var docElement = doc.getDocumentElement().$,
3043 scrollTop = docElement.scrollTop;
3044 }
3045
3046 // Once the clone of the widget is inside of copybin, select
3047 // the entire contents. This selection will be copied by the
3048 // native browser's clipboard system.
3049 range = editor.createRange();
3050 range.selectNodeContents( copybin );
3051 range.select();
3052
3053 if ( needsScrollHack )
3054 docElement.scrollTop = scrollTop;
3055
3056 setTimeout( function() {
3057 // [IE] Focus widget before removing copybin to avoid scroll jump.
3058 if ( !isCut )
3059 widget.focus();
3060
3061 copybinContainer.remove();
3062
3063 listener1.removeListener();
3064 listener2.removeListener();
3065
3066 editor.fire( 'unlockSnapshot' );
3067
3068 if ( isCut ) {
3069 widget.repository.del( widget );
3070 editor.fire( 'saveSnapshot' );
3071 }
3072 }, 100 ); // Use 100ms, so Chrome (@Mac) will be able to grab the content.
3073 }
3074
3075 // Extracts classes array from style instance.
3076 function getStyleClasses( style ) {
3077 var attrs = style.getDefinition().attributes,
3078 classes = attrs && attrs[ 'class' ];
3079
3080 return classes ? classes.split( /\s+/ ) : null;
3081 }
3082
3083 // [IE] Force keeping focus because IE sometimes forgets to fire focus on main editable
3084 // when blurring nested editable.
3085 // @context widget
3086 function onEditableBlur() {
3087 var active = CKEDITOR.document.getActive(),
3088 editor = this.editor,
3089 editable = editor.editable();
3090
3091 // If focus stays within editor override blur and set currentActive because it should be
3092 // automatically changed to editable on editable#focus but it is not fired.
3093 if ( ( editable.isInline() ? editable : editor.document.getWindow().getFrame() ).equals( active ) )
3094 editor.focusManager.focus( editable );
3095 }
3096
3097 // Force selectionChange when editable was focused.
3098 // Similar to hack in selection.js#~620.
3099 // @context widget
3100 function onEditableFocus() {
3101 // Gecko does not support 'DOMFocusIn' event on which we unlock selection
3102 // in selection.js to prevent selection locking when entering nested editables.
3103 if ( CKEDITOR.env.gecko )
3104 this.editor.unlockSelection();
3105
3106 // We don't need to force selectionCheck on Webkit, because on Webkit
3107 // we do that on DOMFocusIn in selection.js.
3108 if ( !CKEDITOR.env.webkit ) {
3109 this.editor.forceNextSelectionCheck();
3110 this.editor.selectionChange( 1 );
3111 }
3112 }
3113
3114 // Setup listener on widget#data which will update (remove/add) classes
3115 // by comparing newly set classes with the old ones.
3116 function setupDataClassesListener( widget ) {
3117 // Note: previousClasses and newClasses may be null!
3118 // Tip: for ( cl in null ) is correct.
3119 var previousClasses = null;
3120
3121 widget.on( 'data', function() {
3122 var newClasses = this.data.classes,
3123 cl;
3124
3125 // When setting new classes one need to remember
3126 // that he must break reference.
3127 if ( previousClasses == newClasses )
3128 return;
3129
3130 for ( cl in previousClasses ) {
3131 // Avoid removing and adding classes again.
3132 if ( !( newClasses && newClasses[ cl ] ) )
3133 this.removeClass( cl );
3134 }
3135 for ( cl in newClasses )
3136 this.addClass( cl );
3137
3138 previousClasses = newClasses;
3139 } );
3140 }
3141
3142 // Add a listener to data event that will set/change widget's label (http://dev.ckeditor.com/ticket/14539).
3143 function setupA11yListener( widget ) {
3144 // Note, the function gets executed in a context of widget instance.
3145 function getLabelDefault() {
3146 return this.editor.lang.widget.label.replace( /%1/, this.pathName || this.element.getName() );
3147 }
3148
3149 // Setting a listener on data is enough, there's no need to perform it on widget initialization, as
3150 // setupWidgetData fires this event anyway.
3151 widget.on( 'data', function() {
3152 // In some cases widget might get destroyed in an earlier data listener. For instance, image2 plugin, does
3153 // so when changing its internal state.
3154 if ( !widget.wrapper ) {
3155 return;
3156 }
3157
3158 var label = this.getLabel ? this.getLabel() : getLabelDefault.call( this );
3159
3160 widget.wrapper.setAttribute( 'role', 'region' );
3161 widget.wrapper.setAttribute( 'aria-label', label );
3162 }, null, null, 9999 );
3163 }
3164
3165 function setupDragHandler( widget ) {
3166 if ( !widget.draggable )
3167 return;
3168
3169 var editor = widget.editor,
3170 // Use getLast to find wrapper's direct descendant (http://dev.ckeditor.com/ticket/12022).
3171 container = widget.wrapper.getLast( Widget.isDomDragHandlerContainer ),
3172 img;
3173
3174 // Reuse drag handler if already exists (http://dev.ckeditor.com/ticket/11281).
3175 if ( container )
3176 img = container.findOne( 'img' );
3177 else {
3178 container = new CKEDITOR.dom.element( 'span', editor.document );
3179 container.setAttributes( {
3180 'class': 'cke_reset cke_widget_drag_handler_container',
3181 // Split background and background-image for IE8 which will break on rgba().
3182 style: 'background:rgba(220,220,220,0.5);background-image:url(' + editor.plugins.widget.path + 'images/handle.png)'
3183 } );
3184
3185 img = new CKEDITOR.dom.element( 'img', editor.document );
3186 img.setAttributes( {
3187 'class': 'cke_reset cke_widget_drag_handler',
3188 'data-cke-widget-drag-handler': '1',
3189 src: CKEDITOR.tools.transparentImageData,
3190 width: DRAG_HANDLER_SIZE,
3191 title: editor.lang.widget.move,
3192 height: DRAG_HANDLER_SIZE,
3193 role: 'presentation'
3194 } );
3195 widget.inline && img.setAttribute( 'draggable', 'true' );
3196
3197 container.append( img );
3198 widget.wrapper.append( container );
3199 }
3200
3201 // Preventing page reload when dropped content on widget wrapper (http://dev.ckeditor.com/ticket/13015).
3202 // Widget is not editable so by default drop on it isn't allowed what means that
3203 // browser handles it (there's no editable#drop event). If there's no drop event we cannot block
3204 // the drop, so page is reloaded. This listener enables drop on widget wrappers.
3205 widget.wrapper.on( 'dragover', function( evt ) {
3206 evt.data.preventDefault();
3207 } );
3208
3209 widget.wrapper.on( 'mouseenter', widget.updateDragHandlerPosition, widget );
3210 setTimeout( function() {
3211 widget.on( 'data', widget.updateDragHandlerPosition, widget );
3212 }, 50 );
3213
3214 if ( !widget.inline ) {
3215 img.on( 'mousedown', onBlockWidgetDrag, widget );
3216
3217 // On IE8 'dragstart' is propagated to editable, so editor#dragstart is fired twice on block widgets.
3218 if ( CKEDITOR.env.ie && CKEDITOR.env.version < 9 ) {
3219 img.on( 'dragstart', function( evt ) {
3220 evt.data.preventDefault( true );
3221 } );
3222 }
3223 }
3224
3225 widget.dragHandlerContainer = container;
3226 }
3227
3228 function onBlockWidgetDrag( evt ) {
3229 var finder = this.repository.finder,
3230 locator = this.repository.locator,
3231 liner = this.repository.liner,
3232 editor = this.editor,
3233 editable = editor.editable(),
3234 listeners = [],
3235 sorted = [],
3236 locations,
3237 y;
3238
3239 // Mark dragged widget for repository#finder.
3240 this.repository._.draggedWidget = this;
3241
3242 // Harvest all possible relations and display some closest.
3243 var relations = finder.greedySearch(),
3244
3245 buffer = CKEDITOR.tools.eventsBuffer( 50, function() {
3246 locations = locator.locate( relations );
3247
3248 // There's only a single line displayed for D&D.
3249 sorted = locator.sort( y, 1 );
3250
3251 if ( sorted.length ) {
3252 liner.prepare( relations, locations );
3253 liner.placeLine( sorted[ 0 ] );
3254 liner.cleanup();
3255 }
3256 } );
3257
3258 // Let's have the "dragging cursor" over entire editable.
3259 editable.addClass( 'cke_widget_dragging' );
3260
3261 // Cache mouse position so it is re-used in events buffer.
3262 listeners.push( editable.on( 'mousemove', function( evt ) {
3263 y = evt.data.$.clientY;
3264 buffer.input();
3265 } ) );
3266
3267 // Fire drag start as it happens during the native D&D.
3268 editor.fire( 'dragstart', { target: evt.sender } );
3269
3270 function onMouseUp() {
3271 var l;
3272
3273 buffer.reset();
3274
3275 // Stop observing events.
3276 while ( ( l = listeners.pop() ) )
3277 l.removeListener();
3278
3279 onBlockWidgetDrop.call( this, sorted, evt.sender );
3280 }
3281
3282 // Mouseup means "drop". This is when the widget is being detached
3283 // from DOM and placed at range determined by the line (location).
3284 listeners.push( editor.document.once( 'mouseup', onMouseUp, this ) );
3285
3286 // Prevent calling 'onBlockWidgetDrop' twice in the inline editor.
3287 // `removeListener` does not work if it is called at the same time event is fired.
3288 if ( !editable.isInline() ) {
3289 // Mouseup may occur when user hovers the line, which belongs to
3290 // the outer document. This is, of course, a valid listener too.
3291 listeners.push( CKEDITOR.document.once( 'mouseup', onMouseUp, this ) );
3292 }
3293 }
3294
3295 function onBlockWidgetDrop( sorted, dragTarget ) {
3296 var finder = this.repository.finder,
3297 liner = this.repository.liner,
3298 editor = this.editor,
3299 editable = this.editor.editable();
3300
3301 if ( !CKEDITOR.tools.isEmpty( liner.visible ) ) {
3302 // Retrieve range for the closest location.
3303 var dropRange = finder.getRange( sorted[ 0 ] );
3304
3305 // Focus widget (it could lost focus after mousedown+mouseup)
3306 // and save this state as the one where we want to be taken back when undoing.
3307 this.focus();
3308
3309 // Drag range will be set in the drop listener.
3310 editor.fire( 'drop', {
3311 dropRange: dropRange,
3312 target: dropRange.startContainer
3313 } );
3314 }
3315
3316 // Clean-up custom cursor for editable.
3317 editable.removeClass( 'cke_widget_dragging' );
3318
3319 // Clean-up all remaining lines.
3320 liner.hideVisible();
3321
3322 // Clean-up drag & drop.
3323 editor.fire( 'dragend', { target: dragTarget } );
3324 }
3325
3326 function setupEditables( widget ) {
3327 var editableName,
3328 editableDef,
3329 definedEditables = widget.editables;
3330
3331 widget.editables = {};
3332
3333 if ( !widget.editables )
3334 return;
3335
3336 for ( editableName in definedEditables ) {
3337 editableDef = definedEditables[ editableName ];
3338 widget.initEditable( editableName, typeof editableDef == 'string' ? { selector: editableDef } : editableDef );
3339 }
3340 }
3341
3342 function setupMask( widget ) {
3343 if ( !widget.mask )
3344 return;
3345
3346 // Reuse mask if already exists (http://dev.ckeditor.com/ticket/11281).
3347 var img = widget.wrapper.findOne( '.cke_widget_mask' );
3348
3349 if ( !img ) {
3350 img = new CKEDITOR.dom.element( 'img', widget.editor.document );
3351 img.setAttributes( {
3352 src: CKEDITOR.tools.transparentImageData,
3353 'class': 'cke_reset cke_widget_mask'
3354 } );
3355 widget.wrapper.append( img );
3356 }
3357
3358 widget.mask = img;
3359 }
3360
3361 // Replace parts object containing:
3362 // partName => selector pairs
3363 // with:
3364 // partName => element pairs
3365 function setupParts( widget ) {
3366 if ( widget.parts ) {
3367 var parts = {},
3368 el, partName;
3369
3370 for ( partName in widget.parts ) {
3371 el = widget.wrapper.findOne( widget.parts[ partName ] );
3372 parts[ partName ] = el;
3373 }
3374 widget.parts = parts;
3375 }
3376 }
3377
3378 function setupWidget( widget, widgetDef ) {
3379 setupWrapper( widget );
3380 setupParts( widget );
3381 setupEditables( widget );
3382 setupMask( widget );
3383 setupDragHandler( widget );
3384 setupDataClassesListener( widget );
3385 setupA11yListener( widget );
3386
3387 // http://dev.ckeditor.com/ticket/11145: [IE8] Non-editable content of widget is draggable.
3388 if ( CKEDITOR.env.ie && CKEDITOR.env.version < 9 ) {
3389 widget.wrapper.on( 'dragstart', function( evt ) {
3390 var target = evt.data.getTarget();
3391
3392 // Allow text dragging inside nested editables or dragging inline widget's drag handler.
3393 if ( !Widget.getNestedEditable( widget, target ) && !( widget.inline && Widget.isDomDragHandler( target ) ) )
3394 evt.data.preventDefault();
3395 } );
3396 }
3397
3398 widget.wrapper.removeClass( 'cke_widget_new' );
3399 widget.element.addClass( 'cke_widget_element' );
3400
3401 widget.on( 'key', function( evt ) {
3402 var keyCode = evt.data.keyCode;
3403
3404 // ENTER.
3405 if ( keyCode == 13 ) {
3406 widget.edit();
3407 // CTRL+C or CTRL+X.
3408 } else if ( keyCode == CKEDITOR.CTRL + 67 || keyCode == CKEDITOR.CTRL + 88 ) {
3409 copySingleWidget( widget, keyCode == CKEDITOR.CTRL + 88 );
3410 return; // Do not preventDefault.
3411 } else if ( keyCode in keystrokesNotBlockedByWidget || ( CKEDITOR.CTRL & keyCode ) || ( CKEDITOR.ALT & keyCode ) ) {
3412 // Pass chosen keystrokes to other plugins or default fake sel handlers.
3413 // Pass all CTRL/ALT keystrokes.
3414 return;
3415 }
3416
3417 return false;
3418 }, null, null, 999 );
3419 // Listen with high priority so it's possible
3420 // to overwrite this callback.
3421
3422 widget.on( 'doubleclick', function( evt ) {
3423 if ( widget.edit() ) {
3424 // We have to cancel event if edit method opens a dialog, otherwise
3425 // link plugin may open extra dialog (http://dev.ckeditor.com/ticket/12140).
3426 evt.cancel();
3427 }
3428 } );
3429
3430 if ( widgetDef.data )
3431 widget.on( 'data', widgetDef.data );
3432
3433 if ( widgetDef.edit )
3434 widget.on( 'edit', widgetDef.edit );
3435 }
3436
3437 function setupWidgetData( widget, startupData ) {
3438 var widgetDataAttr = widget.element.data( 'cke-widget-data' );
3439
3440 if ( widgetDataAttr )
3441 widget.setData( JSON.parse( decodeURIComponent( widgetDataAttr ) ) );
3442 if ( startupData )
3443 widget.setData( startupData );
3444
3445 // Populate classes if they are not preset.
3446 if ( !widget.data.classes )
3447 widget.setData( 'classes', widget.getClasses() );
3448
3449 // Unblock data and...
3450 widget.dataReady = true;
3451
3452 // Write data to element because this was blocked when data wasn't ready.
3453 writeDataToElement( widget );
3454
3455 // Fire data event first time, because this was blocked when data wasn't ready.
3456 widget.fire( 'data', widget.data );
3457 }
3458
3459 function setupWrapper( widget ) {
3460 // Retrieve widget wrapper. Assign an id to it.
3461 var wrapper = widget.wrapper = widget.element.getParent();
3462 wrapper.setAttribute( 'data-cke-widget-id', widget.id );
3463 }
3464
3465 function writeDataToElement( widget ) {
3466 widget.element.data( 'cke-widget-data', encodeURIComponent( JSON.stringify( widget.data ) ) );
3467 }
3468
3469 //
3470 // WIDGET STYLE HANDLER ---------------------------------------------------
3471 //
3472
3473 ( function() {
3474 // Styles categorized by group. It is used to prevent applying styles for the same group being used together.
3475 var styleGroups = {};
3476
3477 /**
3478 * The class representing a widget style. It is an {@link CKEDITOR#STYLE_OBJECT object} like
3479 * the styles handler for widgets.
3480 *
3481 * **Note:** This custom style handler does not support all methods of the {@link CKEDITOR.style} class.
3482 * Not supported methods: {@link #applyToRange}, {@link #removeFromRange}, {@link #applyToObject}.
3483 *
3484 * @since 4.4
3485 * @class CKEDITOR.style.customHandlers.widget
3486 * @extends CKEDITOR.style
3487 */
3488 CKEDITOR.style.addCustomHandler( {
3489 type: 'widget',
3490
3491 setup: function( styleDefinition ) {
3492 /**
3493 * The name of widget to which this style can be applied.
3494 * It is extracted from style definition's `widget` property.
3495 *
3496 * @property {String} widget
3497 */
3498 this.widget = styleDefinition.widget;
3499
3500 /**
3501 * An array of groups that this style belongs to.
3502 * Styles assigned to the same group cannot be combined.
3503 *
3504 * @since 4.6.2
3505 * @property {Array} group
3506 */
3507 this.group = typeof styleDefinition.group == 'string' ? [ styleDefinition.group ] : styleDefinition.group;
3508
3509 // Store style categorized by its group.
3510 // It is used to prevent enabling two styles from same group.
3511 if ( this.group ) {
3512 saveStyleGroup( this );
3513 }
3514 },
3515
3516 apply: function( editor ) {
3517 var widget;
3518
3519 // Before CKEditor 4.4 wasn't a required argument, so we need to
3520 // handle a case when it wasn't provided.
3521 if ( !( editor instanceof CKEDITOR.editor ) )
3522 return;
3523
3524 // Theoretically we could bypass checkApplicable, get widget from
3525 // widgets.focused and check its name, what would be faster, but then
3526 // this custom style would work differently than the default style
3527 // which checks if it's applicable before applying or removing itself.
3528 if ( this.checkApplicable( editor.elementPath(), editor ) ) {
3529 widget = editor.widgets.focused;
3530
3531 // Remove other styles from the same group.
3532 if ( this.group ) {
3533 this.removeStylesFromSameGroup( editor );
3534 }
3535
3536 widget.applyStyle( this );
3537 }
3538 },
3539
3540 remove: function( editor ) {
3541 // Before CKEditor 4.4 wasn't a required argument, so we need to
3542 // handle a case when it wasn't provided.
3543 if ( !( editor instanceof CKEDITOR.editor ) )
3544 return;
3545
3546 if ( this.checkApplicable( editor.elementPath(), editor ) )
3547 editor.widgets.focused.removeStyle( this );
3548 },
3549
3550 /**
3551 * Removes all styles that belong to the same group as this style. This method will neither add nor remove
3552 * the current style.
3553 * Returns `true` if any style was removed, otherwise returns `false`.
3554 *
3555 * @since 4.6.2
3556 * @param {CKEDITOR.editor} editor
3557 * @returns {Boolean}
3558 */
3559 removeStylesFromSameGroup: function( editor ) {
3560 var stylesFromSameGroup,
3561 path,
3562 removed = false;
3563
3564 // Before CKEditor 4.4 wasn't a required argument, so we need to
3565 // handle a case when it wasn't provided.
3566 if ( !( editor instanceof CKEDITOR.editor ) )
3567 return false;
3568
3569 path = editor.elementPath();
3570 if ( this.checkApplicable( path, editor ) ) {
3571 // Iterate over each group.
3572 for ( var i = 0, l = this.group.length; i < l; i++ ) {
3573 stylesFromSameGroup = styleGroups[ this.widget ][ this.group[ i ] ];
3574 // Iterate over each style from group.
3575 for ( var j = 0; j < stylesFromSameGroup.length; j++ ) {
3576 if ( stylesFromSameGroup[ j ] !== this && stylesFromSameGroup[ j ].checkActive( path, editor ) ) {
3577 editor.widgets.focused.removeStyle( stylesFromSameGroup[ j ] );
3578 removed = true;
3579 }
3580 }
3581 }
3582 }
3583
3584 return removed;
3585 },
3586
3587 checkActive: function( elementPath, editor ) {
3588 return this.checkElementMatch( elementPath.lastElement, 0, editor );
3589 },
3590
3591 checkApplicable: function( elementPath, editor ) {
3592 // Before CKEditor 4.4 wasn't a required argument, so we need to
3593 // handle a case when it wasn't provided.
3594 if ( !( editor instanceof CKEDITOR.editor ) )
3595 return false;
3596
3597 return this.checkElement( elementPath.lastElement );
3598 },
3599
3600 checkElementMatch: checkElementMatch,
3601
3602 checkElementRemovable: checkElementMatch,
3603
3604 /**
3605 * Checks if an element is a {@link CKEDITOR.plugins.widget#wrapper wrapper} of a
3606 * widget whose name matches the {@link #widget widget name} specified in the style definition.
3607 *
3608 * @param {CKEDITOR.dom.element} element
3609 * @returns {Boolean}
3610 */
3611 checkElement: function( element ) {
3612 if ( !Widget.isDomWidgetWrapper( element ) )
3613 return false;
3614
3615 var widgetElement = element.getFirst( Widget.isDomWidgetElement );
3616 return widgetElement && widgetElement.data( 'widget' ) == this.widget;
3617 },
3618
3619 buildPreview: function( label ) {
3620 return label || this._.definition.name;
3621 },
3622
3623 /**
3624 * Returns allowed content rules which should be registered for this style.
3625 * Uses widget's {@link CKEDITOR.plugins.widget.definition#styleableElements} to make a rule
3626 * allowing classes on specified elements or use widget's
3627 * {@link CKEDITOR.plugins.widget.definition#styleToAllowedContentRules} method to transform a style
3628 * into allowed content rules.
3629 *
3630 * @param {CKEDITOR.editor} The editor instance.
3631 * @returns {CKEDITOR.filter.allowedContentRules}
3632 */
3633 toAllowedContentRules: function( editor ) {
3634 if ( !editor )
3635 return null;
3636
3637 var widgetDef = editor.widgets.registered[ this.widget ],
3638 classes,
3639 rule = {};
3640
3641 if ( !widgetDef )
3642 return null;
3643
3644 if ( widgetDef.styleableElements ) {
3645 classes = this.getClassesArray();
3646 if ( !classes )
3647 return null;
3648
3649 rule[ widgetDef.styleableElements ] = {
3650 classes: classes,
3651 propertiesOnly: true
3652 };
3653 return rule;
3654 }
3655 if ( widgetDef.styleToAllowedContentRules )
3656 return widgetDef.styleToAllowedContentRules( this );
3657 return null;
3658 },
3659
3660 /**
3661 * Returns classes defined in the style in form of an array.
3662 *
3663 * @returns {String[]}
3664 */
3665 getClassesArray: function() {
3666 var classes = this._.definition.attributes && this._.definition.attributes[ 'class' ];
3667
3668 return classes ? CKEDITOR.tools.trim( classes ).split( /\s+/ ) : null;
3669 },
3670
3671 /**
3672 * Not implemented.
3673 *
3674 * @method applyToRange
3675 */
3676 applyToRange: notImplemented,
3677
3678 /**
3679 * Not implemented.
3680 *
3681 * @method removeFromRange
3682 */
3683 removeFromRange: notImplemented,
3684
3685 /**
3686 * Not implemented.
3687 *
3688 * @method applyToObject
3689 */
3690 applyToObject: notImplemented
3691 } );
3692
3693 function notImplemented() {}
3694
3695 // @context style
3696 function checkElementMatch( element, fullMatch, editor ) {
3697 // Before CKEditor 4.4 wasn't a required argument, so we need to
3698 // handle a case when it wasn't provided.
3699 if ( !editor )
3700 return false;
3701
3702 if ( !this.checkElement( element ) )
3703 return false;
3704
3705 var widget = editor.widgets.getByElement( element, true );
3706 return widget && widget.checkStyleActive( this );
3707 }
3708
3709 // Save and categorize style by its group.
3710 function saveStyleGroup( style ) {
3711 var widgetName = style.widget,
3712 group;
3713
3714 if ( !styleGroups[ widgetName ] ) {
3715 styleGroups[ widgetName ] = {};
3716 }
3717
3718 for ( var i = 0, l = style.group.length; i < l; i++ ) {
3719 group = style.group[ i ];
3720 if ( !styleGroups[ widgetName ][ group ] ) {
3721 styleGroups[ widgetName ][ group ] = [];
3722 }
3723
3724 styleGroups[ widgetName ][ group ].push( style );
3725 }
3726 }
3727
3728 } )();
3729
3730 //
3731 // EXPOSE PUBLIC API ------------------------------------------------------
3732 //
3733
3734 CKEDITOR.plugins.widget = Widget;
3735 Widget.repository = Repository;
3736 Widget.nestedEditable = NestedEditable;
3737} )();
3738
3739/**
3740 * An event fired when a widget definition is registered by the {@link CKEDITOR.plugins.widget.repository#add} method.
3741 * It is possible to modify the definition being registered.
3742 *
3743 * @event widgetDefinition
3744 * @member CKEDITOR.editor
3745 * @param {CKEDITOR.plugins.widget.definition} data Widget definition.
3746 */
3747
3748/**
3749 * This is an abstract class that describes the definition of a widget.
3750 * It is a type of {@link CKEDITOR.plugins.widget.repository#add} method's second argument.
3751 *
3752 * Widget instances inherit from registered widget definitions, although not in a prototypal way.
3753 * They are simply extended with corresponding widget definitions. Note that not all properties of
3754 * the widget definition become properties of a widget. Some, like {@link #data} or {@link #edit}, become
3755 * widget's events listeners.
3756 *
3757 * @class CKEDITOR.plugins.widget.definition
3758 * @abstract
3759 * @mixins CKEDITOR.feature
3760 */
3761
3762/**
3763 * Widget definition name. It is automatically set when the definition is
3764 * {@link CKEDITOR.plugins.widget.repository#add registered}.
3765 *
3766 * @property {String} name
3767 */
3768
3769/**
3770 * The method executed while initializing a widget, after a widget instance
3771 * is created, but before it is ready. It is executed before the first
3772 * {@link CKEDITOR.plugins.widget#event-data} is fired so it is common to
3773 * use the `init` method to populate widget data with information loaded from
3774 * the DOM, like for exmaple:
3775 *
3776 * init: function() {
3777 * this.setData( 'width', this.element.getStyle( 'width' ) );
3778 *
3779 * if ( this.parts.caption.getStyle( 'display' ) != 'none' )
3780 * this.setData( 'showCaption', true );
3781 * }
3782 *
3783 * @property {Function} init
3784 */
3785
3786/**
3787 * The function to be used to upcast an element to this widget or a
3788 * comma-separated list of upcast methods from the {@link #upcasts} object.
3789 *
3790 * The upcast function **is not** executed in the widget context (because the widget
3791 * does not exist yet) and two arguments are passed:
3792 *
3793 * * `element` ({@link CKEDITOR.htmlParser.element}) &ndash; The element to be checked.
3794 * * `data` (`Object`) &ndash; The object which can be extended with data which will then be passed to the widget.
3795 *
3796 * An element will be upcasted if a function returned `true` or an instance of
3797 * a {@link CKEDITOR.htmlParser.element} if upcasting meant DOM structure changes
3798 * (in this case the widget will be initialized on the returned element).
3799 *
3800 * @property {String/Function} upcast
3801 */
3802
3803/**
3804 * The object containing functions which can be used to upcast this widget.
3805 * Only those pointed by the {@link #upcast} property will be used.
3806 *
3807 * In most cases it is appropriate to use {@link #upcast} directly,
3808 * because majority of widgets need just one method.
3809 * However, in some cases the widget author may want to expose more than one variant
3810 * and then this property may be used.
3811 *
3812 * upcasts: {
3813 * // This function may upcast only figure elements.
3814 * figure: function() {
3815 * // ...
3816 * },
3817 * // This function may upcast only image elements.
3818 * image: function() {
3819 * // ...
3820 * },
3821 * // More variants...
3822 * }
3823 *
3824 * // Then, widget user may choose which upcast methods will be enabled.
3825 * editor.on( 'widgetDefinition', function( evt ) {
3826 * if ( evt.data.name == 'image' )
3827 * evt.data.upcast = 'figure,image'; // Use both methods.
3828 * } );
3829 *
3830 * @property {Object} upcasts
3831 */
3832
3833/**
3834 * The {@link #upcast} method(s) priority. The upcast with a lower priority number will be called before
3835 * the one with a higher number. The default priority is `10`.
3836 *
3837 * @since 4.5
3838 * @property {Number} [upcastPriority=10]
3839 */
3840
3841/**
3842 * The function to be used to downcast this widget or
3843 * a name of the downcast option from the {@link #downcasts} object.
3844 *
3845 * The downcast funciton will be executed in the {@link CKEDITOR.plugins.widget} context
3846 * and with `widgetElement` ({@link CKEDITOR.htmlParser.element}) argument which is
3847 * the widget's main element.
3848 *
3849 * The function may return an instance of the {@link CKEDITOR.htmlParser.node} class if the widget
3850 * needs to be downcasted to a different node than the widget's main element.
3851 *
3852 * @property {String/Function} downcast
3853 */
3854
3855/**
3856 * The object containing functions which can be used to downcast this widget.
3857 * Only the one pointed by the {@link #downcast} property will be used.
3858 *
3859 * In most cases it is appropriate to use {@link #downcast} directly,
3860 * because majority of widgets have just one variant of downcasting (or none at all).
3861 * However, in some cases the widget author may want to expose more than one variant
3862 * and then this property may be used.
3863 *
3864 * downcasts: {
3865 * // This downcast may transform the widget into the figure element.
3866 * figure: function() {
3867 * // ...
3868 * },
3869 * // This downcast may transform the widget into the image element with data-* attributes.
3870 * image: function() {
3871 * // ...
3872 * }
3873 * }
3874 *
3875 * // Then, the widget user may choose one of the downcast options when setting up his editor.
3876 * editor.on( 'widgetDefinition', function( evt ) {
3877 * if ( evt.data.name == 'image' )
3878 * evt.data.downcast = 'figure';
3879 * } );
3880 *
3881 * @property downcasts
3882 */
3883
3884/**
3885 * If set, it will be added as the {@link CKEDITOR.plugins.widget#event-edit} event listener.
3886 * This means that it will be executed when a widget is being edited.
3887 * See the {@link CKEDITOR.plugins.widget#method-edit} method.
3888 *
3889 * @property {Function} edit
3890 */
3891
3892/**
3893 * If set, it will be added as the {@link CKEDITOR.plugins.widget#event-data} event listener.
3894 * This means that it will be executed every time the {@link CKEDITOR.plugins.widget#property-data widget data} changes.
3895 *
3896 * @property {Function} data
3897 */
3898
3899/**
3900 * The method to be executed when the widget's command is executed in order to insert a new widget
3901 * (widget of this type is not focused). If not defined, then the default action will be
3902 * performed which means that:
3903 *
3904 * * An instance of the widget will be created in a detached {@link CKEDITOR.dom.documentFragment document fragment},
3905 * * The {@link CKEDITOR.plugins.widget#method-edit} method will be called to trigger widget editing,
3906 * * The widget element will be inserted into DOM.
3907 *
3908 * @property {Function} insert
3909 */
3910
3911/**
3912 * The name of a dialog window which will be opened on {@link CKEDITOR.plugins.widget#method-edit}.
3913 * If not defined, then the {@link CKEDITOR.plugins.widget#method-edit} method will not perform any action and
3914 * widget's command will insert a new widget without opening a dialog window first.
3915 *
3916 * @property {String} dialog
3917 */
3918
3919/**
3920 * The template which will be used to create a new widget element (when the widget's command is executed).
3921 * This string is populated with {@link #defaults default values} by using the {@link CKEDITOR.template} format.
3922 * Therefore it has to be a valid {@link CKEDITOR.template} argument.
3923 *
3924 * @property {String} template
3925 */
3926
3927/**
3928 * The data object which will be used to populate the data of a newly created widget.
3929 * See {@link CKEDITOR.plugins.widget#property-data}.
3930 *
3931 * defaults: {
3932 * showCaption: true,
3933 * align: 'none'
3934 * }
3935 *
3936 * @property defaults
3937 */
3938
3939/**
3940 * An object containing definitions of widget components (part name => CSS selector).
3941 *
3942 * parts: {
3943 * image: 'img',
3944 * caption: 'div.caption'
3945 * }
3946 *
3947 * @property parts
3948 */
3949
3950/**
3951 * An object containing definitions of nested editables (editable name => {@link CKEDITOR.plugins.widget.nestedEditable.definition}).
3952 * Note that editables *have to* be defined in the same order as they are in DOM / {@link CKEDITOR.plugins.widget.definition#template template}.
3953 * Otherwise errors will occur when nesting widgets inside each other.
3954 *
3955 * editables: {
3956 * header: 'h1',
3957 * content: {
3958 * selector: 'div.content',
3959 * allowedContent: 'p strong em; a[!href]'
3960 * }
3961 * }
3962 *
3963 * @property editables
3964 */
3965
3966/**
3967 * The function used to obtain an accessibility label for the widget. It might be used to make
3968 * the widget labels as precise as possible, since it has access to the widget instance.
3969 *
3970 * If not specified, the default implementation will use the {@link #pathName} or the main
3971 * {@link CKEDITOR.plugins.widget#element element} tag name.
3972 *
3973 * @property {Function} getLabel
3974 */
3975
3976/**
3977 * The widget name displayed in the elements path.
3978 *
3979 * @property {String} pathName
3980 */
3981
3982/**
3983 * If set to `true`, the widget's element will be covered with a transparent mask.
3984 * This will prevent its content from being clickable, which matters in case
3985 * of special elements like embedded Flash or iframes that generate a separate "context".
3986 *
3987 * @property {Boolean} mask
3988 */
3989
3990/**
3991 * If set to `true/false`, it will force the widget to be either an inline or a block widget.
3992 * If not set, the widget type will be determined from the widget element.
3993 *
3994 * Widget type influences whether a block (`div`) or an inline (`span`) element is used
3995 * for the wrapper.
3996 *
3997 * @property {Boolean} inline
3998 */
3999
4000/**
4001 * The label for the widget toolbar button.
4002 *
4003 * editor.widgets.add( 'simplebox', {
4004 * button: 'Create a simple box'
4005 * } );
4006 *
4007 * editor.widgets.add( 'simplebox', {
4008 * button: editor.lang.simplebox.title
4009 * } );
4010 *
4011 * @property {String} button
4012 */
4013
4014/**
4015 * Whether widget should be draggable. Defaults to `true`.
4016 * If set to `false` drag handler will not be displayed when hovering widget.
4017 *
4018 * @property {Boolean} draggable
4019 */
4020
4021/**
4022 * Names of element(s) (separated by spaces) for which the {@link CKEDITOR.filter} should allow classes
4023 * defined in the widget styles. For example if your widget is upcasted from a simple `<div>`
4024 * element, then in order to make it styleable you can set:
4025 *
4026 * editor.widgets.add( 'customWidget', {
4027 * upcast: function( element ) {
4028 * return element.name == 'div';
4029 * },
4030 *
4031 * // ...
4032 *
4033 * styleableElements: 'div'
4034 * } );
4035 *
4036 * Then, when the following style is defined:
4037 *
4038 * {
4039 * name: 'Thick border', type: 'widget', widget: 'customWidget',
4040 * attributes: { 'class': 'thickBorder' }
4041 * }
4042 *
4043 * a rule allowing the `thickBorder` class for `div` elements will be registered in the {@link CKEDITOR.filter}.
4044 *
4045 * If you need to have more freedom when transforming widget style to allowed content rules,
4046 * you can use the {@link #styleToAllowedContentRules} callback.
4047 *
4048 * @since 4.4
4049 * @property {String} styleableElements
4050 */
4051
4052/**
4053 * Function transforming custom widget's {@link CKEDITOR.style} instance into
4054 * {@link CKEDITOR.filter.allowedContentRules}. It may be used when a static
4055 * {@link #styleableElements} property is not enough to inform the {@link CKEDITOR.filter}
4056 * what HTML features should be enabled when allowing the given style.
4057 *
4058 * In most cases, when style's classes just have to be added to element name(s) used by
4059 * the widget element, it is recommended to use simpler {@link #styleableElements} property.
4060 *
4061 * In order to get parsed classes from the style definition you can use
4062 * {@link CKEDITOR.style.customHandlers.widget#getClassesArray}.
4063 *
4064 * For example, if you want to use the [object format of allowed content rules](#!/guide/dev_allowed_content_rules-section-object-format),
4065 * to specify `match` validator, your implementation could look like this:
4066 *
4067 * editor.widgets.add( 'customWidget', {
4068 * // ...
4069 *
4070 * styleToAllowedContentRules: funciton( style ) {
4071 * // Retrieve classes defined in the style.
4072 * var classes = style.getClassesArray();
4073 *
4074 * // Do something crazy - for example return allowed content rules in object format,
4075 * // with custom match property and propertiesOnly flag.
4076 * return {
4077 * h1: {
4078 * match: isWidgetElement,
4079 * propertiesOnly: true,
4080 * classes: classes
4081 * }
4082 * };
4083 * }
4084 * } );
4085 *
4086 * @since 4.4
4087 * @property {Function} styleToAllowedContentRules
4088 * @param {CKEDITOR.style.customHandlers.widget} style The style to be transformed.
4089 * @returns {CKEDITOR.filter.allowedContentRules}
4090 */
4091
4092/**
4093 * This is an abstract class that describes the definition of a widget's nested editable.
4094 * It is a type of values in the {@link CKEDITOR.plugins.widget.definition#editables} object.
4095 *
4096 * In the simplest case the definition is a string which is a CSS selector used to
4097 * find an element that will become a nested editable inside the widget. Note that
4098 * the widget element can be a nested editable, too.
4099 *
4100 * In the more advanced case a definition is an object with a required `selector` property.
4101 *
4102 * editables: {
4103 * header: 'h1',
4104 * content: {
4105 * selector: 'div.content',
4106 * allowedContent: 'p strong em; a[!href]'
4107 * }
4108 * }
4109 *
4110 * @class CKEDITOR.plugins.widget.nestedEditable.definition
4111 * @abstract
4112 */
4113
4114/**
4115 * The CSS selector used to find an element which will become a nested editable.
4116 *
4117 * @property {String} selector
4118 */
4119
4120/**
4121 * The [Advanced Content Filter](#!/guide/dev_advanced_content_filter) rules
4122 * which will be used to limit the content allowed in this nested editable.
4123 * This option is similar to {@link CKEDITOR.config#allowedContent} and one can
4124 * use it to limit the editor features available in the nested editable.
4125 *
4126 * If no `allowedContent` is specified, the editable will use the editor default
4127 * {@link CKEDITOR.editor#filter}.
4128 *
4129 * @property {CKEDITOR.filter.allowedContentRules} allowedContent
4130 */
4131
4132/**
4133 * The [Advanced Content Filter](#!/guide/dev_advanced_content_filter) rules
4134 * which will be used to blacklist elements within this nested editable.
4135 * This option is similar to {@link CKEDITOR.config#disallowedContent}.
4136 *
4137 * Note that `disallowedContent` work on top of the definition's {@link #allowedContent}.
4138 *
4139 * @since 4.7.3
4140 * @property {CKEDITOR.filter.disallowedContentRules} disallowedContent
4141 */
4142
4143/**
4144 * Nested editable name displayed in the elements path.
4145 *
4146 * @property {String} pathName
4147 */
diff --git a/sources/plugins/widgetselection/plugin.js b/sources/plugins/widgetselection/plugin.js
new file mode 100644
index 0000000..6c788cb
--- /dev/null
+++ b/sources/plugins/widgetselection/plugin.js
@@ -0,0 +1,366 @@
1/**
2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */
5
6/**
7 * @fileOverview A plugin created to handle ticket http://dev.ckeditor.com/ticket/11064. While the issue is caused by native WebKit/Blink behaviour,
8 * this plugin can be easily detached or modified when the issue is fixed in the browsers without changing the core.
9 * When Ctrl/Cmd + A is pressed to select all content it does not work due to a bug in
10 * Webkit/Blink if a non-editable element is at the beginning or the end of the content.
11 */
12
13( function() {
14 'use strict';
15
16 CKEDITOR.plugins.add( 'widgetselection', {
17
18 init: function( editor ) {
19 if ( CKEDITOR.env.webkit ) {
20 var widgetselection = CKEDITOR.plugins.widgetselection;
21
22 editor.on( 'contentDom', function( evt ) {
23
24 var editor = evt.editor,
25 doc = editor.document,
26 editable = editor.editable();
27
28 editable.attachListener( doc, 'keydown', function( evt ) {
29 var data = evt.data.$;
30
31 // Ctrl/Cmd + A
32 if ( evt.data.getKey() == 65 && ( CKEDITOR.env.mac && data.metaKey || !CKEDITOR.env.mac && data.ctrlKey ) ) {
33
34 // Defer the call so the selection is already changed by the pressed keys.
35 CKEDITOR.tools.setTimeout( function() {
36
37 // Manage filler elements on keydown. If there is no need
38 // to add fillers, we need to check and clean previously used once.
39 if ( !widgetselection.addFillers( editable ) ) {
40 widgetselection.removeFillers( editable );
41 }
42 }, 0 );
43 }
44 }, null, null, -1 );
45
46 // Check and clean previously used fillers.
47 editor.on( 'selectionCheck', function( evt ) {
48 widgetselection.removeFillers( evt.editor.editable() );
49 } );
50
51 // Remove fillers on paste before data gets inserted into editor.
52 editor.on( 'paste', function( evt ) {
53 evt.data.dataValue = widgetselection.cleanPasteData( evt.data.dataValue );
54 } );
55
56 if ( 'selectall' in editor.plugins ) {
57 widgetselection.addSelectAllIntegration( editor );
58 }
59 } );
60 }
61 }
62 } );
63
64 /**
65 * A set of helper methods for the Widget Selection plugin.
66 *
67 * @property widgetselection
68 * @member CKEDITOR.plugins
69 * @since 4.6.1
70 */
71 CKEDITOR.plugins.widgetselection = {
72
73 /**
74 * The start filler element reference.
75 *
76 * @property {CKEDITOR.dom.element}
77 * @member CKEDITOR.plugins.widgetselection
78 * @private
79 */
80 startFiller: null,
81
82 /**
83 * The end filler element reference.
84 *
85 * @property {CKEDITOR.dom.element}
86 * @member CKEDITOR.plugins.widgetselection
87 * @private
88 */
89 endFiller: null,
90
91 /**
92 * An attribute which identifies the filler element.
93 *
94 * @property {String}
95 * @member CKEDITOR.plugins.widgetselection
96 * @private
97 */
98 fillerAttribute: 'data-cke-filler-webkit',
99
100 /**
101 * The default content of the filler element. Note: The filler needs to have `visible` content.
102 * Unprintable elements or empty content do not help as a workaround.
103 *
104 * @property {String}
105 * @member CKEDITOR.plugins.widgetselection
106 * @private
107 */
108 fillerContent: '&nbsp;',
109
110 /**
111 * Tag name which is used to create fillers.
112 *
113 * @property {String}
114 * @member CKEDITOR.plugins.widgetselection
115 * @private
116 */
117 fillerTagName: 'div',
118
119 /**
120 * Adds a filler before or after a non-editable element at the beginning or the end of the `editable`.
121 *
122 * @param {CKEDITOR.editable} editable
123 * @returns {Boolean}
124 * @member CKEDITOR.plugins.widgetselection
125 */
126 addFillers: function( editable ) {
127 var editor = editable.editor;
128
129 // Whole content should be selected, if not fix the selection manually.
130 if ( !this.isWholeContentSelected( editable ) && editable.getChildCount() > 0 ) {
131
132 var firstChild = editable.getFirst( filterTempElements ),
133 lastChild = editable.getLast( filterTempElements );
134
135 // Check if first element is editable. If not prepend with filler.
136 if ( firstChild && firstChild.type == CKEDITOR.NODE_ELEMENT && !firstChild.isEditable() ) {
137 this.startFiller = this.createFiller();
138 editable.append( this.startFiller, 1 );
139 }
140
141 // Check if last element is editable. If not append filler.
142 if ( lastChild && lastChild.type == CKEDITOR.NODE_ELEMENT && !lastChild.isEditable() ) {
143 this.endFiller = this.createFiller( true );
144 editable.append( this.endFiller, 0 );
145 }
146
147 // Reselect whole content after any filler was added.
148 if ( this.hasFiller( editable ) ) {
149 var rangeAll = editor.createRange();
150 rangeAll.selectNodeContents( editable );
151 rangeAll.select();
152 return true;
153 }
154 }
155 return false;
156 },
157
158 /**
159 * Removes filler elements or updates their references.
160 *
161 * It will **not remove** filler elements if the whole content is selected, as it would break the
162 * selection.
163 *
164 * @param {CKEDITOR.editable} editable
165 * @member CKEDITOR.plugins.widgetselection
166 */
167 removeFillers: function( editable ) {
168 // If startFiller or endFiller exists and not entire content is selected it means the selection
169 // just changed from selected all. We need to remove fillers and set proper selection/content.
170 if ( this.hasFiller( editable ) && !this.isWholeContentSelected( editable ) ) {
171
172 var startFillerContent = editable.findOne( this.fillerTagName + '[' + this.fillerAttribute + '=start]' ),
173 endFillerContent = editable.findOne( this.fillerTagName + '[' + this.fillerAttribute + '=end]' );
174
175 if ( this.startFiller && startFillerContent && this.startFiller.equals( startFillerContent ) ) {
176 this.removeFiller( this.startFiller, editable );
177 } else {
178 // The start filler is still present but it is a different element than previous one. It means the
179 // undo recreating entirely selected content was performed. We need to update filler reference.
180 this.startFiller = startFillerContent;
181 }
182
183 if ( this.endFiller && endFillerContent && this.endFiller.equals( endFillerContent ) ) {
184 this.removeFiller( this.endFiller, editable );
185 } else {
186 // Same as with start filler.
187 this.endFiller = endFillerContent;
188 }
189 }
190 },
191
192 /**
193 * Removes fillers from the paste data.
194 *
195 * @param {String} data
196 * @returns {String}
197 * @member CKEDITOR.plugins.widgetselection
198 * @private
199 */
200 cleanPasteData: function( data ) {
201 if ( data && data.length ) {
202 data = data
203 .replace( this.createFillerRegex(), '' )
204 .replace( this.createFillerRegex( true ), '' );
205 }
206 return data;
207 },
208
209 /**
210 * Checks if the entire content of the given editable is selected.
211 *
212 * @param {CKEDITOR.editable} editable
213 * @returns {Boolean}
214 * @member CKEDITOR.plugins.widgetselection
215 * @private
216 */
217 isWholeContentSelected: function( editable ) {
218
219 var range = editable.editor.getSelection().getRanges()[ 0 ];
220 if ( range ) {
221
222 if ( range && range.collapsed ) {
223 return false;
224
225 } else {
226 var rangeClone = range.clone();
227 rangeClone.enlarge( CKEDITOR.ENLARGE_ELEMENT );
228
229 return !!( rangeClone && editable && rangeClone.startContainer && rangeClone.endContainer &&
230 rangeClone.startOffset === 0 && rangeClone.endOffset === editable.getChildCount() &&
231 rangeClone.startContainer.equals( editable ) && rangeClone.endContainer.equals( editable ) );
232 }
233 }
234 return false;
235 },
236
237 /**
238 * Checks if there is any filler element in the given editable.
239 *
240 * @param {CKEDITOR.editable} editable
241 * @returns {Boolean}
242 * @member CKEDITOR.plugins.widgetselection
243 * @private
244 */
245 hasFiller: function( editable ) {
246 return editable.find( this.fillerTagName + '[' + this.fillerAttribute + ']' ).count() > 0;
247 },
248
249 /**
250 * Creates a filler element.
251 *
252 * @param {Boolean} [onEnd] If filler will be placed on end or beginning of the content.
253 * @returns {CKEDITOR.dom.element}
254 * @member CKEDITOR.plugins.widgetselection
255 * @private
256 */
257 createFiller: function( onEnd ) {
258 var filler = new CKEDITOR.dom.element( this.fillerTagName );
259 filler.setHtml( this.fillerContent );
260 filler.setAttribute( this.fillerAttribute, onEnd ? 'end' : 'start' );
261 filler.setAttribute( 'data-cke-temp', 1 );
262 filler.setStyles( {
263 display: 'block',
264 width: 0,
265 height: 0,
266 padding: 0,
267 border: 0,
268 margin: 0,
269 position: 'absolute',
270 top: 0,
271 left: '-9999px',
272 opacity: 0,
273 overflow: 'hidden'
274 } );
275
276 return filler;
277 },
278
279 /**
280 * Removes the specific filler element from the given editable. If the filler contains any content (typed or pasted),
281 * it replaces the current editable content. If not, the caret is placed before the first or after the last editable
282 * element (depends if the filler was at the beginning or the end).
283 *
284 * @param {CKEDITOR.dom.element} filler
285 * @param {CKEDITOR.editable} editable
286 * @member CKEDITOR.plugins.widgetselection
287 * @private
288 */
289 removeFiller: function( filler, editable ) {
290 if ( filler ) {
291 var editor = editable.editor,
292 currentRange = editable.editor.getSelection().getRanges()[ 0 ],
293 currentPath = currentRange.startPath(),
294 range = editor.createRange(),
295 insertedHtml,
296 fillerOnStart,
297 manuallyHandleCaret;
298
299 if ( currentPath.contains( filler ) ) {
300 insertedHtml = filler.getHtml();
301 manuallyHandleCaret = true;
302 }
303
304 fillerOnStart = filler.getAttribute( this.fillerAttribute ) == 'start';
305 filler.remove();
306 filler = null;
307
308 if ( insertedHtml && insertedHtml.length > 0 && insertedHtml != this.fillerContent ) {
309 editable.insertHtmlIntoRange( insertedHtml, editor.getSelection().getRanges()[ 0 ] );
310 range.setStartAt( editable.getChild( editable.getChildCount() - 1 ), CKEDITOR.POSITION_BEFORE_END );
311 editor.getSelection().selectRanges( [ range ] );
312
313 } else if ( manuallyHandleCaret ) {
314 if ( fillerOnStart ) {
315 range.setStartAt( editable.getFirst().getNext(), CKEDITOR.POSITION_AFTER_START );
316 } else {
317 range.setEndAt( editable.getLast().getPrevious(), CKEDITOR.POSITION_BEFORE_END );
318 }
319 editable.editor.getSelection().selectRanges( [ range ] );
320 }
321 }
322 },
323
324 /**
325 * Creates a regular expression which will match the filler HTML in the text.
326 *
327 * @param {Boolean} [onEnd] Whether a regular expression should be created for the filler at the beginning or
328 * the end of the content.
329 * @returns {RegExp}
330 * @member CKEDITOR.plugins.widgetselection
331 * @private
332 */
333 createFillerRegex: function( onEnd ) {
334 var matcher = this.createFiller( onEnd ).getOuterHtml()
335 .replace( /style="[^"]*"/gi, 'style="[^"]*"' )
336 .replace( />[^<]*</gi, '>[^<]*<' );
337
338 return new RegExp( ( !onEnd ? '^' : '' ) + matcher + ( onEnd ? '$' : '' ) );
339 },
340
341 /**
342 * Adds an integration for the [Select All](http://ckeditor.com/addon/selectall) plugin to the given `editor`.
343 *
344 * @private
345 * @param {CKEDITOR.editor} editor
346 * @member CKEDITOR.plugins.widgetselection
347 */
348 addSelectAllIntegration: function( editor ) {
349 var widgetselection = this;
350
351 editor.editable().attachListener( editor, 'beforeCommandExec', function( evt ) {
352 var editable = editor.editable();
353
354 if ( evt.data.name == 'selectAll' && editable ) {
355 widgetselection.addFillers( editable );
356 }
357 }, null, null, 9999 );
358 }
359 };
360
361
362 function filterTempElements( el ) {
363 return el.getName && !el.hasAttribute( 'data-cke-temp' );
364 }
365
366} )();
diff --git a/sources/plugins/wysiwygarea/plugin.js b/sources/plugins/wysiwygarea/plugin.js
index a1ec9e6..1358129 100644
--- a/sources/plugins/wysiwygarea/plugin.js
+++ b/sources/plugins/wysiwygarea/plugin.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -9,6 +9,8 @@
9 */ 9 */
10 10
11( function() { 11( function() {
12 var framedWysiwyg;
13
12 CKEDITOR.plugins.add( 'wysiwygarea', { 14 CKEDITOR.plugins.add( 'wysiwygarea', {
13 init: function( editor ) { 15 init: function( editor ) {
14 if ( editor.config.fullPage ) { 16 if ( editor.config.fullPage ) {
@@ -27,7 +29,7 @@
27 // With IE, the custom domain has to be taken care at first, 29 // With IE, the custom domain has to be taken care at first,
28 // for other browers, the 'src' attribute should be left empty to 30 // for other browers, the 'src' attribute should be left empty to
29 // trigger iframe's 'load' event. 31 // trigger iframe's 'load' event.
30 // Microsoft Edge throws "Permission Denied" if treated like an IE (#13441). 32 // Microsoft Edge throws "Permission Denied" if treated like an IE (http://dev.ckeditor.com/ticket/13441).
31 if ( CKEDITOR.env.air ) { 33 if ( CKEDITOR.env.air ) {
32 src = 'javascript:void(0)'; // jshint ignore:line 34 src = 'javascript:void(0)'; // jshint ignore:line
33 } else if ( CKEDITOR.env.ie && !CKEDITOR.env.edge ) { 35 } else if ( CKEDITOR.env.ie && !CKEDITOR.env.edge ) {
@@ -137,7 +139,7 @@
137 body.hideFocus = true; 139 body.hideFocus = true;
138 140
139 // Disable and re-enable the body to avoid IE from 141 // Disable and re-enable the body to avoid IE from
140 // taking the editing focus at startup. (#141 / #523) 142 // taking the editing focus at startup. (http://dev.ckeditor.com/ticket/141 / http://dev.ckeditor.com/ticket/523)
141 body.disabled = true; 143 body.disabled = true;
142 body.removeAttribute( 'disabled' ); 144 body.removeAttribute( 'disabled' );
143 } 145 }
@@ -154,19 +156,19 @@
154 156
155 var editable = this; 157 var editable = this;
156 158
157 // Without it IE8 has problem with removing selection in nested editable. (#13785) 159 // Without it IE8 has problem with removing selection in nested editable. (http://dev.ckeditor.com/ticket/13785)
158 if ( CKEDITOR.env.ie && !CKEDITOR.env.edge ) { 160 if ( CKEDITOR.env.ie && !CKEDITOR.env.edge ) {
159 doc.getDocumentElement().addClass( doc.$.compatMode ); 161 doc.getDocumentElement().addClass( doc.$.compatMode );
160 } 162 }
161 163
162 // Prevent IE/Edge from leaving a new paragraph/div after deleting all contents in body. (#6966, #13142) 164 // Prevent IE/Edge from leaving a new paragraph/div after deleting all contents in body. (http://dev.ckeditor.com/ticket/6966, http://dev.ckeditor.com/ticket/13142)
163 if ( CKEDITOR.env.ie && !CKEDITOR.env.edge && editor.enterMode != CKEDITOR.ENTER_P ) { 165 if ( CKEDITOR.env.ie && !CKEDITOR.env.edge && editor.enterMode != CKEDITOR.ENTER_P ) {
164 removeSuperfluousElement( 'p' ); 166 removeSuperfluousElement( 'p' );
165 } else if ( CKEDITOR.env.edge && editor.enterMode != CKEDITOR.ENTER_DIV ) { 167 } else if ( CKEDITOR.env.edge && editor.enterMode != CKEDITOR.ENTER_DIV ) {
166 removeSuperfluousElement( 'div' ); 168 removeSuperfluousElement( 'div' );
167 } 169 }
168 170
169 // Fix problem with cursor not appearing in Webkit and IE11+ when clicking below the body (#10945, #10906). 171 // Fix problem with cursor not appearing in Webkit and IE11+ when clicking below the body (http://dev.ckeditor.com/ticket/10945, http://dev.ckeditor.com/ticket/10906).
170 // Fix for older IEs (8-10 and QM) is placed inside selection.js. 172 // Fix for older IEs (8-10 and QM) is placed inside selection.js.
171 if ( CKEDITOR.env.webkit || ( CKEDITOR.env.ie && CKEDITOR.env.version > 10 ) ) { 173 if ( CKEDITOR.env.webkit || ( CKEDITOR.env.ie && CKEDITOR.env.version > 10 ) ) {
172 doc.getDocumentElement().on( 'mousedown', function( evt ) { 174 doc.getDocumentElement().on( 'mousedown', function( evt ) {
@@ -194,7 +196,7 @@
194 // PageUp OR PageDown 196 // PageUp OR PageDown
195 if ( keyCode == 33 || keyCode == 34 ) { 197 if ( keyCode == 33 || keyCode == 34 ) {
196 // PageUp/PageDown scrolling is broken in document 198 // PageUp/PageDown scrolling is broken in document
197 // with standard doctype, manually fix it. (#4736) 199 // with standard doctype, manually fix it. (http://dev.ckeditor.com/ticket/4736)
198 if ( CKEDITOR.env.ie ) { 200 if ( CKEDITOR.env.ie ) {
199 setTimeout( function() { 201 setTimeout( function() {
200 editor.getSelection().scrollIntoView(); 202 editor.getSelection().scrollIntoView();
@@ -203,7 +205,7 @@
203 // Page up/down cause editor selection to leak 205 // Page up/down cause editor selection to leak
204 // outside of editable thus we try to intercept 206 // outside of editable thus we try to intercept
205 // the behavior, while it affects only happen 207 // the behavior, while it affects only happen
206 // when editor contents are not overflowed. (#7955) 208 // when editor contents are not overflowed. (http://dev.ckeditor.com/ticket/7955)
207 else if ( editor.window.$.innerHeight > this.$.offsetHeight ) { 209 else if ( editor.window.$.innerHeight > this.$.offsetHeight ) {
208 var range = editor.createRange(); 210 var range = editor.createRange();
209 range[ keyCode == 33 ? 'moveToElementEditStart' : 'moveToElementEditEnd' ]( this ); 211 range[ keyCode == 33 ? 'moveToElementEditStart' : 'moveToElementEditEnd' ]( this );
@@ -219,14 +221,14 @@
219 // focus is moved onto a non-editing host, e.g. link or button, but 221 // focus is moved onto a non-editing host, e.g. link or button, but
220 // it becomes a problem for the object type selection, since the resizer 222 // it becomes a problem for the object type selection, since the resizer
221 // handler attached on it will mark other part of the UI, especially 223 // handler attached on it will mark other part of the UI, especially
222 // for the dialog. (#8157) 224 // for the dialog. (http://dev.ckeditor.com/ticket/8157)
223 // [IE<8 & Opera] Even worse For old IEs, the cursor will not vanish even if 225 // [IE<8 & Opera] Even worse For old IEs, the cursor will not vanish even if
224 // the selection has been moved to another text input in some cases. (#4716) 226 // the selection has been moved to another text input in some cases. (http://dev.ckeditor.com/ticket/4716)
225 // 227 //
226 // Now the range restore is disabled, so we simply force IE to clean 228 // Now the range restore is disabled, so we simply force IE to clean
227 // up the selection before blur. 229 // up the selection before blur.
228 this.attachListener( doc, 'blur', function() { 230 this.attachListener( doc, 'blur', function() {
229 // Error proof when the editor is not visible. (#6375) 231 // Error proof when the editor is not visible. (http://dev.ckeditor.com/ticket/6375)
230 try { 232 try {
231 doc.$.selection.empty(); 233 doc.$.selection.empty();
232 } catch ( er ) {} 234 } catch ( er ) {}
@@ -235,14 +237,14 @@
235 237
236 if ( CKEDITOR.env.iOS ) { 238 if ( CKEDITOR.env.iOS ) {
237 // [iOS] If touch is bound to any parent of the iframe blur happens on any touch 239 // [iOS] If touch is bound to any parent of the iframe blur happens on any touch
238 // event and body becomes the focused element (#10714). 240 // event and body becomes the focused element (http://dev.ckeditor.com/ticket/10714).
239 this.attachListener( doc, 'touchend', function() { 241 this.attachListener( doc, 'touchend', function() {
240 win.focus(); 242 win.focus();
241 } ); 243 } );
242 } 244 }
243 245
244 var title = editor.document.getElementsByTag( 'title' ).getItem( 0 ); 246 var title = editor.document.getElementsByTag( 'title' ).getItem( 0 );
245 // document.title is malfunctioning on Chrome, so get value from the element (#12402). 247 // document.title is malfunctioning on Chrome, so get value from the element (http://dev.ckeditor.com/ticket/12402).
246 title.data( 'cke-title', title.getText() ); 248 title.data( 'cke-title', title.getText() );
247 249
248 // [IE] JAWS will not recognize the aria label we used on the iframe 250 // [IE] JAWS will not recognize the aria label we used on the iframe
@@ -289,10 +291,13 @@
289 291
290 // 2. On keyup remove all elements that were not marked 292 // 2. On keyup remove all elements that were not marked
291 // as non-superfluous (which means they must have had appeared in the meantime). 293 // as non-superfluous (which means they must have had appeared in the meantime).
294 // Also we should preserve all temporary elements inserted by editor – otherwise we'd likely
295 // leak fake selection's content into editable due to removing hidden selection container (http://dev.ckeditor.com/ticket/14831).
292 editable.attachListener( editable, 'keyup', function() { 296 editable.attachListener( editable, 'keyup', function() {
293 var elements = doc.getElementsByTag( tagName ); 297 var elements = doc.getElementsByTag( tagName );
294 if ( lockRetain ) { 298 if ( lockRetain ) {
295 if ( elements.count() == 1 && !elements.getItem( 0 ).getCustomData( 'retain' ) ) { 299 if ( elements.count() == 1 && !elements.getItem( 0 ).getCustomData( 'retain' ) &&
300 !elements.getItem( 0 ).hasAttribute( 'data-cke-temp' ) ) {
296 elements.getItem( 0 ).remove( 1 ); 301 elements.getItem( 0 ).remove( 1 );
297 } 302 }
298 lockRetain = false; 303 lockRetain = false;
@@ -301,13 +306,13 @@
301 } 306 }
302 } 307 }
303 308
304 var framedWysiwyg = CKEDITOR.tools.createClass( { 309 framedWysiwyg = CKEDITOR.tools.createClass( {
305 $: function() { 310 $: function() {
306 this.base.apply( this, arguments ); 311 this.base.apply( this, arguments );
307 312
308 this._.frameLoadedHandler = CKEDITOR.tools.addFunction( function( win ) { 313 this._.frameLoadedHandler = CKEDITOR.tools.addFunction( function( win ) {
309 // Avoid opening design mode in a frame window thread, 314 // Avoid opening design mode in a frame window thread,
310 // which will cause host page scrolling.(#4397) 315 // which will cause host page scrolling.(http://dev.ckeditor.com/ticket/4397)
311 CKEDITOR.tools.setTimeout( onDomReady, 0, this, win ); 316 CKEDITOR.tools.setTimeout( onDomReady, 0, this, win );
312 }, this ); 317 }, this );
313 318
@@ -325,7 +330,7 @@
325 this.fixInitialSelection(); 330 this.fixInitialSelection();
326 331
327 // Fire dataReady for the consistency with inline editors 332 // Fire dataReady for the consistency with inline editors
328 // and because it makes sense. (#10370) 333 // and because it makes sense. (http://dev.ckeditor.com/ticket/10370)
329 editor.fire( 'dataReady' ); 334 editor.fire( 'dataReady' );
330 } 335 }
331 else { 336 else {
@@ -415,7 +420,7 @@
415 } 420 }
416 421
417 // The script that launches the bootstrap logic on 'domReady', so the document 422 // The script that launches the bootstrap logic on 'domReady', so the document
418 // is fully editable even before the editing iframe is fully loaded (#4455). 423 // is fully editable even before the editing iframe is fully loaded (http://dev.ckeditor.com/ticket/4455).
419 var bootstrapCode = 424 var bootstrapCode =
420 '<script id="cke_actscrpt" type="text/javascript"' + ( CKEDITOR.env.ie ? ' defer="defer" ' : '' ) + '>' + 425 '<script id="cke_actscrpt" type="text/javascript"' + ( CKEDITOR.env.ie ? ' defer="defer" ' : '' ) + '>' +
421 'var wasLoaded=0;' + // It must be always set to 0 as it remains as a window property. 426 'var wasLoaded=0;' + // It must be always set to 0 as it remains as a window property.
@@ -437,7 +442,7 @@
437 } 442 }
438 443
439 // IE<10 needs this hack to properly enable <base href="...">. 444 // IE<10 needs this hack to properly enable <base href="...">.
440 // See: http://stackoverflow.com/a/13373180/1485219 (#11910). 445 // See: http://stackoverflow.com/a/13373180/1485219 (http://dev.ckeditor.com/ticket/11910).
441 if ( baseTag && CKEDITOR.env.ie && CKEDITOR.env.version < 10 ) { 446 if ( baseTag && CKEDITOR.env.ie && CKEDITOR.env.version < 10 ) {
442 bootstrapCode += 447 bootstrapCode +=
443 '<script id="cke_basetagscrpt">' + 448 '<script id="cke_basetagscrpt">' +
@@ -456,7 +461,7 @@
456 461
457 var doc = this.getDocument(); 462 var doc = this.getDocument();
458 463
459 // Work around Firefox bug - error prune when called from XUL (#320), 464 // Work around Firefox bug - error prune when called from XUL (http://dev.ckeditor.com/ticket/320),
460 // defer it thanks to the async nature of this method. 465 // defer it thanks to the async nature of this method.
461 try { 466 try {
462 doc.write( data ); 467 doc.write( data );
@@ -481,9 +486,9 @@
481 486
482 var data = fullPage ? doc.getDocumentElement().getOuterHtml() : doc.getBody().getHtml(); 487 var data = fullPage ? doc.getDocumentElement().getOuterHtml() : doc.getBody().getHtml();
483 488
484 // BR at the end of document is bogus node for Mozilla. (#5293). 489 // BR at the end of document is bogus node for Mozilla. (http://dev.ckeditor.com/ticket/5293).
485 // Prevent BRs from disappearing from the end of the content 490 // Prevent BRs from disappearing from the end of the content
486 // while enterMode is ENTER_BR (#10146). 491 // while enterMode is ENTER_BR (http://dev.ckeditor.com/ticket/10146).
487 if ( CKEDITOR.env.gecko && config.enterMode != CKEDITOR.ENTER_BR ) 492 if ( CKEDITOR.env.gecko && config.enterMode != CKEDITOR.ENTER_BR )
488 data = data.replace( /<br>(?=\s*(:?$|<\/body>))/, '' ); 493 data = data.replace( /<br>(?=\s*(:?$|<\/body>))/, '' );
489 494
@@ -512,7 +517,7 @@
512 onResize; 517 onResize;
513 518
514 // Trying to access window's frameElement property on Edge throws an exception 519 // Trying to access window's frameElement property on Edge throws an exception
515 // when frame was already removed from DOM. (#13850, #13790) 520 // when frame was already removed from DOM. (http://dev.ckeditor.com/ticket/13850, http://dev.ckeditor.com/ticket/13790)
516 try { 521 try {
517 iframe = editor.window.getFrame(); 522 iframe = editor.window.getFrame();
518 } catch ( e ) {} 523 } catch ( e ) {}
@@ -525,7 +530,7 @@
525 CKEDITOR.tools.removeFunction( this._.frameLoadedHandler ); 530 CKEDITOR.tools.removeFunction( this._.frameLoadedHandler );
526 531
527 // On IE, iframe is returned even after remove() method is called on it. 532 // On IE, iframe is returned even after remove() method is called on it.
528 // Checking if parent is present fixes this issue. (#13850) 533 // Checking if parent is present fixes this issue. (http://dev.ckeditor.com/ticket/13850)
529 if ( iframe && iframe.getParent() ) { 534 if ( iframe && iframe.getParent() ) {
530 iframe.clearCustomData(); 535 iframe.clearCustomData();
531 onResize = iframe.removeCustomData( 'onResize' ); 536 onResize = iframe.removeCustomData( 'onResize' );
@@ -533,7 +538,7 @@
533 538
534 // IE BUG: When destroying editor DOM with the selection remains inside 539 // IE BUG: When destroying editor DOM with the selection remains inside
535 // editing area would break IE7/8's selection system, we have to put the editing 540 // editing area would break IE7/8's selection system, we have to put the editing
536 // iframe offline first. (#3812 and #5441) 541 // iframe offline first. (http://dev.ckeditor.com/ticket/3812 and http://dev.ckeditor.com/ticket/5441)
537 iframe.remove(); 542 iframe.remove();
538 } else { 543 } else {
539 CKEDITOR.warn( 'editor-destroy-iframe' ); 544 CKEDITOR.warn( 'editor-destroy-iframe' );
@@ -588,7 +593,7 @@
588 var css = []; 593 var css = [];
589 594
590 // IE>=8 stricts mode doesn't have 'contentEditable' in effect 595 // IE>=8 stricts mode doesn't have 'contentEditable' in effect
591 // on element unless it has layout. (#5562) 596 // on element unless it has layout. (http://dev.ckeditor.com/ticket/5562)
592 if ( CKEDITOR.document.$.documentMode >= 8 ) { 597 if ( CKEDITOR.document.$.documentMode >= 8 ) {
593 css.push( 'html.CSS1Compat [contenteditable=false]{min-height:0 !important}' ); 598 css.push( 'html.CSS1Compat [contenteditable=false]{min-height:0 !important}' );
594 599
@@ -599,14 +604,14 @@
599 604
600 css.push( selectors.join( ',' ) + '{display:inline-block}' ); 605 css.push( selectors.join( ',' ) + '{display:inline-block}' );
601 } 606 }
602 // Set the HTML style to 100% to have the text cursor in affect (#6341) 607 // Set the HTML style to 100% to have the text cursor in affect (http://dev.ckeditor.com/ticket/6341)
603 else if ( CKEDITOR.env.gecko ) { 608 else if ( CKEDITOR.env.gecko ) {
604 css.push( 'html{height:100% !important}' ); 609 css.push( 'html{height:100% !important}' );
605 css.push( 'img:-moz-broken{-moz-force-broken-image-icon:1;min-width:24px;min-height:24px}' ); 610 css.push( 'img:-moz-broken{-moz-force-broken-image-icon:1;min-width:24px;min-height:24px}' );
606 } 611 }
607 612
608 // #6341: The text cursor must be set on the editor area. 613 // http://dev.ckeditor.com/ticket/6341: The text cursor must be set on the editor area.
609 // #6632: Avoid having "text" shape of cursor in IE7 scrollbars. 614 // http://dev.ckeditor.com/ticket/6632: Avoid having "text" shape of cursor in IE7 scrollbars.
610 css.push( 'html{cursor:text;*cursor:auto}' ); 615 css.push( 'html{cursor:text;*cursor:auto}' );
611 616
612 // Use correct cursor for these elements 617 // Use correct cursor for these elements
diff --git a/sources/plugins/wysiwygarea/samples/fullpage.html b/sources/plugins/wysiwygarea/samples/fullpage.html
index 341a4e7..bb3193a 100644
--- a/sources/plugins/wysiwygarea/samples/fullpage.html
+++ b/sources/plugins/wysiwygarea/samples/fullpage.html
@@ -1,6 +1,6 @@
1<!DOCTYPE html> 1<!DOCTYPE html>
2<!-- 2<!--
3Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 3Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
4For licensing, see LICENSE.md or http://ckeditor.com/license 4For licensing, see LICENSE.md or http://ckeditor.com/license
5--> 5-->
6<html> 6<html>
@@ -72,7 +72,7 @@ CKEDITOR.replace( '<em>textarea_id</em>', {
72 CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a> 72 CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a>
73 </p> 73 </p>
74 <p id="copy"> 74 <p id="copy">
75 Copyright &copy; 2003-2016, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico 75 Copyright &copy; 2003-2017, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico
76 Knabben. All rights reserved. 76 Knabben. All rights reserved.
77 </p> 77 </p>
78 </div> 78 </div>
diff --git a/sources/samples/css/samples.css b/sources/samples/css/samples.css
index 60b6b45..455b152 100644
--- a/sources/samples/css/samples.css
+++ b/sources/samples/css/samples.css
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5@media (max-width: 900px) { 5@media (max-width: 900px) {
@@ -136,7 +136,7 @@ html {
136} 136}
137.navigation-a { 137.navigation-a {
138 height: 30px; 138 height: 30px;
139 background: #3d3d3d; 139 background: #3D3D3D;
140 position: absolute; 140 position: absolute;
141 left: 0; 141 left: 0;
142 right: 0; 142 right: 0;
@@ -197,14 +197,14 @@ html {
197 line-height: 1.13rem; 197 line-height: 1.13rem;
198 line-height: 30px; 198 line-height: 30px;
199 float: left; 199 float: left;
200 color: #dddddd; 200 color: #ddd;
201 font-weight: bold; 201 font-weight: bold;
202 text-decoration: none; 202 text-decoration: none;
203 text-transform: uppercase; 203 text-transform: uppercase;
204} 204}
205.navigation-a ul li a:hover { 205.navigation-a ul li a:hover {
206 cursor: pointer; 206 cursor: pointer;
207 color: #ffffff; 207 color: #fff;
208} 208}
209.icon-navigation-a-github:before, 209.icon-navigation-a-github:before,
210.icon-navigation-a-github:after { 210.icon-navigation-a-github:after {
@@ -282,9 +282,9 @@ html {
282 color: #8a8a8a; 282 color: #8a8a8a;
283} 283}
284.footer-a a { 284.footer-a a {
285 color: #27c0d8; 285 color: #27C0D8;
286 text-decoration: none; 286 text-decoration: none;
287 border-bottom: 1px dotted #27c0d8; 287 border-bottom: 1px dotted #27C0D8;
288} 288}
289.footer-a a:hover { 289.footer-a a:hover {
290 color: #23adc2; 290 color: #23adc2;
@@ -333,7 +333,7 @@ html {
333.content blockquote, 333.content blockquote,
334.content pre { 334.content pre {
335 background: none; 335 background: none;
336 border-left: 4px solid #27c0d8; 336 border-left: 4px solid #27C0D8;
337 padding: 1.5em 2.25em; 337 padding: 1.5em 2.25em;
338} 338}
339.content p a, 339.content p a,
@@ -345,9 +345,9 @@ html {
345.content h3 a, 345.content h3 a,
346.content h4 a, 346.content h4 a,
347.content h5 a { 347.content h5 a {
348 color: #27c0d8; 348 color: #27C0D8;
349 text-decoration: none; 349 text-decoration: none;
350 border-bottom: 1px dotted #27c0d8; 350 border-bottom: 1px dotted #27C0D8;
351} 351}
352.content p a:hover, 352.content p a:hover,
353.content ul a:hover, 353.content ul a:hover,
@@ -422,7 +422,7 @@ html {
422 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.08); 422 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.08);
423 font: inherit; 423 font: inherit;
424 color: inherit; 424 color: inherit;
425 border: 1px solid #d9d9d9; 425 border: 1px solid #D9D9D9;
426 padding: .2em .5em; 426 padding: .2em .5em;
427} 427}
428.content input:focus, 428.content input:focus,
@@ -489,7 +489,7 @@ html {
489} 489}
490.content hr { 490.content hr {
491 border: 0; 491 border: 0;
492 border-top: 4px solid #d9d9d9; 492 border-top: 4px solid #D9D9D9;
493 margin: 1.5em 0; 493 margin: 1.5em 0;
494} 494}
495.content input[type="text"] { 495.content input[type="text"] {
@@ -508,9 +508,9 @@ html {
508 line-height: 1.35rem; 508 line-height: 1.35rem;
509 font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif; 509 font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif;
510 padding: 2px 6px; 510 padding: 2px 6px;
511 -webkit-box-shadow: 0 0 4px #ffffff inset, 0 2px 0 #d9d9d9; 511 -webkit-box-shadow: 0 0 4px #fff inset, 0 2px 0 #D9D9D9;
512 -moz-box-shadow: 0 0 4px #ffffff inset, 0 2px 0 #d9d9d9; 512 -moz-box-shadow: 0 0 4px #fff inset, 0 2px 0 #D9D9D9;
513 box-shadow: 0 0 4px #ffffff inset, 0 2px 0 #d9d9d9; 513 box-shadow: 0 0 4px #fff inset, 0 2px 0 #D9D9D9;
514} 514}
515.content p img { 515.content p img {
516 vertical-align: middle; 516 vertical-align: middle;
@@ -704,7 +704,7 @@ body a.navigation-b ul li a:hover,
704body button.navigation-b ul li a:hover, 704body button.navigation-b ul li a:hover,
705body input.navigation-b ul li a:hover { 705body input.navigation-b ul li a:hover {
706 color: #fff; 706 color: #fff;
707 background: #27c0d8; 707 background: #27C0D8;
708} 708}
709body a.button-a-background:active, 709body a.button-a-background:active,
710body button.button-a-background:active, 710body button.button-a-background:active,
@@ -826,7 +826,7 @@ body input.navigation-b ul li a:hover:hover {
826 line-height: 25.2px; 826 line-height: 25.2px;
827 line-height: 1.57rem; 827 line-height: 1.57rem;
828 font-weight: bold; 828 font-weight: bold;
829 background-color: #27c0d8; 829 background-color: #27C0D8;
830 overflow: hidden; 830 overflow: hidden;
831 display: inline-block; 831 display: inline-block;
832 padding: 0.75em 0.25em; 832 padding: 0.75em 0.25em;
@@ -1004,10 +1004,10 @@ footer > div {
1004 margin-top: 30px; 1004 margin-top: 30px;
1005} 1005}
1006.footer-a { 1006.footer-a {
1007 border-top: 1px solid #d9d9d9; 1007 border-top: 1px solid #D9D9D9;
1008} 1008}
1009.adjoined-top { 1009.adjoined-top {
1010 background-color: #27c0d8; 1010 background-color: #27C0D8;
1011 color: #fff; 1011 color: #fff;
1012} 1012}
1013.adjoined-top .content h1, 1013.adjoined-top .content h1,
@@ -1040,7 +1040,7 @@ footer > div {
1040} 1040}
1041.adjoined-top .content code { 1041.adjoined-top .content code {
1042 font-size: inherit; 1042 font-size: inherit;
1043 color: #27c0d8; 1043 color: #27C0D8;
1044} 1044}
1045.adjoined-bottom { 1045.adjoined-bottom {
1046 position: relative; 1046 position: relative;
@@ -1048,7 +1048,7 @@ footer > div {
1048.adjoined-bottom:before { 1048.adjoined-bottom:before {
1049 z-index: -1; 1049 z-index: -1;
1050 content: ''; 1050 content: '';
1051 background: #27c0d8; 1051 background: #27C0D8;
1052 position: absolute; 1052 position: absolute;
1053 top: 0; 1053 top: 0;
1054 left: 0; 1054 left: 0;
@@ -1091,15 +1091,7 @@ main .grid-container.freed-width {
1091#main #editor { 1091#main #editor {
1092 background: #FFF; 1092 background: #FFF;
1093 padding: 2% 4%; 1093 padding: 2% 4%;
1094 border: dashed 5px #27c0d8; 1094 border: dashed 5px #27C0D8;
1095}
1096div.cke a.cke_button,
1097div.cke .cke_combo_button {
1098 border-bottom: none;
1099}
1100div.cke a.cke_button.cke_combo_button,
1101div.cke .cke_combo_button.cke_combo_button {
1102 border-bottom: 1px solid #a6a6a6;
1103} 1095}
1104#main .adjoined-top:before { 1096#main .adjoined-top:before {
1105 height: 335px; 1097 height: 335px;
@@ -1313,7 +1305,7 @@ div.toolbarModifier .empty > p {
1313div.toolbarModifier > ul { 1305div.toolbarModifier > ul {
1314 padding: 0; 1306 padding: 0;
1315 margin: 0; 1307 margin: 0;
1316 border-top: 1px solid #cccccc; 1308 border-top: 1px solid #ccc;
1317 width: 100%; 1309 width: 100%;
1318} 1310}
1319div.toolbarModifier > ul[data-type="table-header"] { 1311div.toolbarModifier > ul[data-type="table-header"] {
@@ -1336,7 +1328,7 @@ div.toolbarModifier > ul > li[data-type="header"] {
1336} 1328}
1337div.toolbarModifier > ul > li[data-type="group"], 1329div.toolbarModifier > ul > li[data-type="group"],
1338div.toolbarModifier > ul > li[data-type="separator"] { 1330div.toolbarModifier > ul > li[data-type="separator"] {
1339 border-bottom: 1px solid #cccccc; 1331 border-bottom: 1px solid #ccc;
1340} 1332}
1341div.toolbarModifier > ul > li[data-type="subgroup"] { 1333div.toolbarModifier > ul > li[data-type="subgroup"] {
1342 border-top: 1px solid #eee; 1334 border-top: 1px solid #eee;
@@ -1425,7 +1417,7 @@ div.toolbarModifier > ul > li ul li {
1425 line-height: 1; 1417 line-height: 1;
1426} 1418}
1427div.toolbarModifier > ul > li ul li[data-type="subgroup"] { 1419div.toolbarModifier > ul > li ul li[data-type="subgroup"] {
1428 border-top: 1px solid #dddddd; 1420 border-top: 1px solid #ddd;
1429} 1421}
1430div.toolbarModifier > ul > li ul li[data-type="subgroup"]:first-child { 1422div.toolbarModifier > ul > li ul li[data-type="subgroup"]:first-child {
1431 border-top: 0; 1423 border-top: 0;
@@ -1491,7 +1483,7 @@ div.toolbarModifier-hints h3 {
1491 line-height: 2.03rem; 1483 line-height: 2.03rem;
1492 padding: 0.36em 1.5em; 1484 padding: 0.36em 1.5em;
1493 background: #f5f5f5; 1485 background: #f5f5f5;
1494 border-bottom: 1px solid #dddddd; 1486 border-bottom: 1px solid #ddd;
1495 margin-top: 0; 1487 margin-top: 0;
1496 margin-bottom: 1.2em; 1488 margin-bottom: 1.2em;
1497} 1489}
@@ -1512,7 +1504,7 @@ div.toolbarModifier-hints dl dt {
1512 width: 9em; 1504 width: 9em;
1513 clear: both; 1505 clear: both;
1514 text-align: right; 1506 text-align: right;
1515 border-top: 1px solid #dddddd; 1507 border-top: 1px solid #ddd;
1516 padding-left: 1.5em; 1508 padding-left: 1.5em;
1517 padding-right: .1em; 1509 padding-right: .1em;
1518 -webkit-box-sizing: border-box; 1510 -webkit-box-sizing: border-box;
@@ -1637,4 +1629,4 @@ div.toolbarModifier-hints dl dd:after {
1637#help-content { 1629#help-content {
1638 display: none; 1630 display: none;
1639} 1631}
1640/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL25vZGVfbW9kdWxlcy9ja3NvdXJjZS1zYW1wbGVzLWZyYW1ld29yay9jb21wb25lbnRzL2dsb2JhbC9nbG9iYWwubGVzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ja3NvdXJjZS1zYW1wbGVzLWZyYW1ld29yay9jb21wb25lbnRzL2NvcmUvY29yZS5sZXNzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2Nrc291cmNlLXNhbXBsZXMtZnJhbWV3b3JrL2NvbXBvbmVudHMvZ3JpZC9ncmlkLmxlc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvY2tzb3VyY2Utc2FtcGxlcy1mcmFtZXdvcmsvbm9kZV9tb2R1bGVzL2xlc3NoYXQvYnVpbGQvbGVzc2hhdC5sZXNzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2Nrc291cmNlLXNhbXBsZXMtZnJhbWV3b3JrL2NvbXBvbmVudHMvaGVhZGVyLWEvaGVhZGVyLWEubGVzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ja3NvdXJjZS1zYW1wbGVzLWZyYW1ld29yay9jb21wb25lbnRzL25hdmlnYXRpb24tYS9uYXZpZ2F0aW9uLWEubGVzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ja3NvdXJjZS1zYW1wbGVzLWZyYW1ld29yay9jb21wb25lbnRzL25hdmlnYXRpb24tYi9uYXZpZ2F0aW9uLWIubGVzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ja3NvdXJjZS1zYW1wbGVzLWZyYW1ld29yay9jb21wb25lbnRzL2Zvb3Rlci1hL2Zvb3Rlci1hLmxlc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvY2tzb3VyY2Utc2FtcGxlcy1mcmFtZXdvcmsvY29tcG9uZW50cy9jb250ZW50L2NvbnRlbnQubGVzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ja3NvdXJjZS1zYW1wbGVzLWZyYW1ld29yay9jb21wb25lbnRzL2J1dHRvbi1hL2J1dHRvbi1hLmxlc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvY2tzb3VyY2Utc2FtcGxlcy1mcmFtZXdvcmsvY29tcG9uZW50cy9iYWxsb29uLWEvYmFsbG9vbi1hLmxlc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvY2tzb3VyY2Utc2FtcGxlcy1mcmFtZXdvcmsvY29tcG9uZW50cy9pY29uL2ljb24ubGVzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ja3NvdXJjZS1zYW1wbGVzLWZyYW1ld29yay9jb21wb25lbnRzL3N3aXRjaC9zd2l0Y2gubGVzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ja3NvdXJjZS1zYW1wbGVzLWZyYW1ld29yay9jb21wb25lbnRzL3RvZ2dsZXIvdG9nZ2xlci5sZXNzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2Nrc291cmNlLXNhbXBsZXMtZnJhbWV3b3JrL2NvbXBvbmVudHMvbW9kYWwvbW9kYWwubGVzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ja3NvdXJjZS1zYW1wbGVzLWZyYW1ld29yay9jb21wb25lbnRzL2Jhc2ljc2FtcGxlL2NvcmUubGVzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ja3NvdXJjZS1zYW1wbGVzLWZyYW1ld29yay9jb21wb25lbnRzL2Jhc2ljc2FtcGxlL2Fkam9pbmVkLmxlc3MiLCIuLi8uLi9zYW1wbGVzL2xlc3MvY3VzdG9tLmxlc3MiLCIuLi8uLi9zYW1wbGVzL3Rvb2xiYXJjb25maWd1cmF0b3IvbGVzcy90b29sYmFybW9kaWZpZXIubGVzcyIsIi4uLy4uL3NhbXBsZXMvdG9vbGJhcmNvbmZpZ3VyYXRvci9sZXNzL2Jhc2UubGVzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBc0RBLFFBSGlDO0VBeUNoQztJQUNDLHdCQUFBOzs7QUMxRkY7QUFBUztBQUFPO0FBQVM7QUFBWTtBQUFRO0FBQVE7QUFBUTtBQUFRO0FBQU07QUFBTTtBQUFLO0VBQ3JGLGNBQUE7O0FBR0Q7QUFBTTtFQUNMLFNBQUE7RUFDQSxVQUFBO0VBQ0Esd0JETitCLHVDQ00vQjtFQUNBLGdCQUFBO0VBQ0EsY0FBQTs7QUNIQSxZQUFZO0VBQ1gsVUFBQTs7QUFERCxZQUFZO0VBQ1gsVUFBQTs7QUFERCxZQUFZO0VBQ1gsVUFBQTs7QUFERCxZQUFZO0VBQ1gsVUFBQTs7QUFERCxZQUFZO0VBQ1gsVUFBQTs7QUFERCxZQUFZO0VBQ1gsVUFBQTs7QUFERCxZQUFZO0VBQ1gsVUFBQTs7QUFERCxZQUFZO0VBQ1gsVUFBQTs7QUFERCxZQUFZO0VBQ1gsVUFBQTs7QUFERCxZQUFZO0VBQ1gsV0FBQTs7QUY0Q0YsUUFIaUM7RUVqQ2hDO0VBS0MsWUFBWTtFQUFaLFlBQVk7RUFBWixZQUFZO0VBQVosWUFBWTtFQUFaLFlBQVk7RUFBWixZQUFZO0VBQVosWUFBWTtFQUFaLFlBQVk7RUFBWixZQUFZO0lBSlosV0FBQTs7O0FBYUYsQ0FBQztFQ3FSQyw4QkFBQTtFQUNBLDJCQUFBO0VBQ0Esc0JBQUE7RURyUkQsZ0JBQUE7RUFDQSxpQkFBQTtFQUNBLFdBQUE7O0FBSUEsQ0FEQSxxQkFDQztBQUFELGVBQUM7QUFBUSxDQURULHFCQUNVO0FBQUQsZUFBQztFQUNULFNBQVMsRUFBVDtFQUNBLGNBQUE7RUFDQSxnQkFBQTtFQUNBLGtCQUFBO0VBQ0EsWUFBQTtFQUNBLGNBQUE7RUFDQSxRQUFBO0VBQ0EsU0FBQTs7QUFLRCxDQURBLHFCQUNDO0FBQUQsZUFBQztFQUNBLFdBQUE7O0FBSUY7RUMyUEUsOEJBQUE7RUFDQSwyQkFBQTtFQUNBLHNCQUFBO0VEM1BELGlCQUFBO0VBQ0Esa0JBQUE7O0FBS0Msc0JBREQsRUFBQyxxQkFDQztFQUNBLGVBQUE7O0FBR0Qsc0JBTEQsRUFBQyxxQkFLQztFQUNBLGdCQUFBOztBRmpCSCxRQUhpQztFRTBCOUIsc0JBREQsRUFBQyxxQkFDQztJQUNBLGdCQUFBOztFQUdELHNCQUxELEVBQUMscUJBS0M7SUFDQSxpQkFBQTs7O0FFN0VKO0VBQ0MsaUJBQUE7RUFHQSxnQkFBQTs7QUFKRCxTQU1DO0VBQ0MsZ0JBQUE7O0FKMENGLFFBSGlDO0VBR2pDLFNJM0NDO0lBSUUsa0JBQUE7OztBQVZILFNBTUMsZUFPQztFQUNDLG1CQUFBOztBQ1ZIO0VBQ0MsWUFBQTtFQUNBLG1CQUFBO0VBQ0Esa0JBQUE7RUFDQSxPQUFBO0VBQ0EsUUFBQTtFQUNBLE1BQUE7RUFDQSxVQUFBO0VBQ0EsZ0JBQUE7O0FMcUNELFFBSGlDO0VBR2pDO0lLbENFLGtCQUFBOzs7QUFYRixhQWNDO0VBQ0MsZ0JBQUE7RUFDQSxTQUFBO0VBQ0EsZ0JBQUE7O0FBakJGLGFBY0MsR0FLQztBQW5CRixhQWNDLEdBS0ssR0FBRztFQUNOLHFCQUFBOztBTHlCSCxRQUhpQztFQUdqQyxhSy9CQztJQVVFLFdBQUE7SUFDQSx1QkFBQTtJQUNBLG1CQUFBO0lBQ0EscUJBQUE7SUFDQSxXQUFBOztFQUVBLGFBaEJGLEdBZ0JHO0VBQVMsYUFoQlosR0FnQmE7SUFDVixhQUFBOzs7QUFLRCxhQXRCRixHQXFCRSxhQUNDO0VBQ0EsZ0JBQUE7O0FMUUosUUFIaUM7RUFHakMsYUsvQkMsR0FxQkUsYUFDQztJQUlDLGdCQUFBOzs7QUFJRixhQTlCRixHQXFCRSxhQVNDO0VBQ0EsaUJBQUE7O0FMQUosUUFIaUM7RUFHakMsYUsvQkMsR0FxQkUsYUFTQztJQUlDLGtCQUFBOzs7QUFNRixhQXhDRixHQXVDQyxHQUNHO0VBQ0QsaUJBQUE7O0FBdkRKLGFBY0MsR0F1Q0MsR0FLQztFTHhDRixlQUFBO0VBQ0EsbUJBQUE7RUFDQSxpQkFBQTtFQUNBLG9CQUFBO0VLdUNHLGlCQUFBO0VBQ0EsV0FBQTtFQUNBLGNBQUE7RUFDQSxpQkFBQTtFQUNBLHFCQUFBO0VBQ0EseUJBQUE7O0FBRUEsYUFyREgsR0F1Q0MsR0FLQyxFQVNFO0VBQ0EsZUFBQTtFQUNBLGNBQUE7O0FBUUoseUJBQUM7QUFBUyx5QkFBQztFQUNWLHNCQUFrQixxckJBQWxCOztBQ3BGRjtFQUNDLGlCQUFBO0VBQ0EsZ0JBQUE7RUFDQSxpQkFBQTs7QU5nREQsUUFIaUM7RUFHakM7SU03Q0Usa0JBQUE7SUFDQSxnQkFBQTtJQUdBLFVBQUE7OztBQVZGLGFBYUM7RUFDQyxVQUFBO0VBQ0EsZ0JBQUE7RUFDQSxTQUFBO0VBQ0EsaUJBQUE7O0FBakJGLGFBYUMsR0FNQztBQW5CRixhQWFDLEdBTUssR0FBRztFQUNOLHFCQUFBOztBTitCSCxRQUhpQztFQUdqQyxhTXRDQztJQVdFLGNBQUE7SUFDQSxXQUFBO0lBQ0EscUJBQUE7OztBTnlCSCxRQUhpQztFQUdqQyxhTXRDQyxHQWdCQztJQUVFLGtCQUFBOzs7QUFHRCxhQXJCRixHQWdCQyxHQUtHO0VBQ0QsaUJBQUE7O0FOZ0JKLFFBSGlDO0VBR2pDLGFNdENDLEdBZ0JDLEdBS0c7SUFJQSxjQUFBOzs7QUF0Q0wsYUFhQyxHQWdCQyxHQWFDO0VId1FELDhCQUFBO0VBQ0EsMkJBQUE7RUFDQSxzQkFBQTtFR3hRRSx5QkFBQTtFQUNBLHFCQUFBO0VBQ0EsYUFBQTs7QU5LSixRQUhpQztFQUdqQyxhTXRDQyxHQWdCQyxHQWFDO0lBT0UsV0FBQTtJSHFPSCx3QkFBQTtJQUFpQyxvQ0FBQTtJQUNqQyxxQkFBQTtJQUE4Qiw2QkFBQTtJQUM5QixnQkFBQTtJQUF5Qiw0QkFBQTs7O0FJeFIzQjtFUHdCQyxlQUFBO0VBQ0Esb0JBQUE7RUFDQSxtQkFBQTtFQUNBLG9CQUFBO0VPeEJBLG1CQUFBO0VBQ0Esc0JBQUE7RUFDQSxnQkFBQTtFQUNBLGNBQUE7O0FBTkQsU1A0RUM7RUFDQyxjQUFBO0VBQ0EscUJBQUE7RUFFQSxpQ0FBQTs7QUFFQSxTQU5ELEVBTUU7RUFDQSxjQUFBOztBT25GSCxTQVFDO0VBQ0MsU0FBQTtFQUNBLHFCQUFBO0VBQ0Esa0JBQUE7O0FDWEY7RVJ3QkMsZUFBQTtFQUNBLG1CQUFBO0VBQ0EsbUJBQUE7RUFDQSxvQkFBQTtFUXpCQSxnQkFBQTtFQUNBLGtCQUFBO0VBQ0EscUJBQUE7O0FBSkQsUUFTQztFQUNDLGdCQUFBOztBQVZGLFFBYUM7QUFiRCxRQWFLO0FBYkwsUUFhUztBQWJULFFBYWM7QUFiZCxRQWEwQixTQUFRLElBQUk7QUFidEMsUUFhd0Q7RUFDdEQsaUJBQUE7O0FBZEYsUUFpQkM7QUFqQkQsUUFpQk87RUxxUUwsMEJBQUE7RUFBaUMsb0NBQUE7RUFDakMsdUJBQUE7RUFBOEIsNkJBQUE7RUFDOUIsa0JBQUE7RUFBeUIsNEJBQUE7RUtyUXpCLGdCQUFBOztBQW5CRixRQXNCQztBQXRCRCxRQXNCTTtBQXRCTixRQXNCWTtBQXRCWixRQXNCaUI7RUFDZixtQkFBQTs7QUF2QkYsUUEwQkM7QUExQkQsUUEwQmE7RUFDWCxnQkFBQTtFQUNBLDhCQUFBO0VBQ0EscUJBQUE7O0FBN0JGLFFBb0NDLEVSd0NBO0FRNUVELFFBb0NJLEdSd0NIO0FRNUVELFFBb0NRLEdSd0NQO0FRNUVELFFBb0NZLFdSd0NYO0FRNUVELFFBb0N3QixHUndDdkI7QVE1RUQsUUFvQzRCLEdSd0MzQjtBUTVFRCxRQW9DZ0MsR1J3Qy9CO0FRNUVELFFBb0NvQyxHUndDbkM7QVE1RUQsUUFvQ3dDLEdSd0N2QztFQUNDLGNBQUE7RUFDQSxxQkFBQTtFQUVBLGlDQUFBOztBQUVBLFFROUNELEVSd0NBLEVBTUU7QUFBRCxRUTlDRSxHUndDSCxFQU1FO0FBQUQsUVE5Q00sR1J3Q1AsRUFNRTtBQUFELFFROUNVLFdSd0NYLEVBTUU7QUFBRCxRUTlDc0IsR1J3Q3ZCLEVBTUU7QUFBRCxRUTlDMEIsR1J3QzNCLEVBTUU7QUFBRCxRUTlDOEIsR1J3Qy9CLEVBTUU7QUFBRCxRUTlDa0MsR1J3Q25DLEVBTUU7QUFBRCxRUTlDc0MsR1J3Q3ZDLEVBTUU7RUFDQSxjQUFBOztBUW5GSCxRQXdDQztBQXhDRCxRQXdDSztBQXhDTCxRQXdDUztBQXhDVCxRQXdDYTtBQXhDYixRQXdDaUI7RUFDZixXQUFBO0VBQ0EsZ0JBQUE7O0FBMUNGLFFBd0NDLEdBS0M7QUE3Q0YsUUF3Q0ssR0FLSDtBQTdDRixRQXdDUyxHQUtQO0FBN0NGLFFBd0NhLEdBS1g7QUE3Q0YsUUF3Q2lCLEdBS2Y7QUE3Q0YsUUF3Q0MsR0FLTztBQTdDUixRQXdDSyxHQUtHO0FBN0NSLFFBd0NTLEdBS0Q7QUE3Q1IsUUF3Q2EsR0FLTDtBQTdDUixRQXdDaUIsR0FLVDtFQUNMLGtCQUFBOztBQTlDSCxRQXdDQyxHQVVDLEVBQUM7QUFsREgsUUF3Q0ssR0FVSCxFQUFDO0FBbERILFFBd0NTLEdBVVAsRUFBQztBQWxESCxRQXdDYSxHQVVYLEVBQUM7QUFsREgsUUF3Q2lCLEdBVWYsRUFBQztFQUNBLGdCQUFBO0VBQ0Esc0JBQUE7RUFDQSxVQUFBO0VBQ0EsU0FBQTs7QUFHRCxRQWpCRCxHQWlCRSxNQUNBLEVBQUM7QUFERixRQWpCRyxHQWlCRixNQUNBLEVBQUM7QUFERixRQWpCTyxHQWlCTixNQUNBLEVBQUM7QUFERixRQWpCVyxHQWlCVixNQUNBLEVBQUM7QUFERixRQWpCZSxHQWlCZCxNQUNBLEVBQUM7RUFDQSxVQUFBOztBQUlGLFFBdkJELEdBdUJFLE9BQ0E7QUFERCxRQXZCRyxHQXVCRixPQUNBO0FBREQsUUF2Qk8sR0F1Qk4sT0FDQTtBQURELFFBdkJXLEdBdUJWLE9BQ0E7QUFERCxRQXZCZSxHQXVCZCxPQUNBO0VMOERELDBEQUFBO0VBQ0EsdURBQUE7RUFDQSxxREFBQTtFQUNBLGtEQUFBO0VLL0RFLFVBQUE7O0FBbEVKLFFBdUVDO0FBdkVELFFBdUVRO0FBdkVSLFFBdUVnQixTQUFRLElBQUk7RUwrTTFCLDBCQUFBO0VBQWlDLG9DQUFBO0VBQ2pDLHVCQUFBO0VBQThCLDZCQUFBO0VBQzlCLGtCQUFBO0VBQXlCLDRCQUFBO0VBbUJ6Qix1REFBQTtFQUNBLG9EQUFBO0VBQ0EsK0NBQUE7RUtsT0EsYUFBQTtFQUNBLGNBQUE7RUFFQSx5QkFBQTtFQUNBLGtCQUFBOztBQUVBLFFBVkQsTUFVRTtBQUFELFFBVk0sT0FVTDtBQUFELFFBVmMsU0FBUSxJQUFJLGdCQVV6QjtFQUNBLHFCQUFBO0VBQ0EsVUFBQTtFTHdORCx3RUFBQTtFQUNBLHFFQUFBO0VBQ0EsZ0VBQUE7O0FLN1NGLFFBOEZDO0VBQ0MsOEJBQUE7RUFDQSxlQUFBOztBQWhHRixRQW1HQztFQUNDLGtCQUFBO0VBQ0EsNkJSbkcyQyx3QlFtRzNDO0VSN0VELGVBQUE7RUFDQSxlQUFBO0VBQ0EsbUJBQUE7RUFDQSxtQkFBQTs7QVEzQkQsUUF5R0M7RUFDQyxrQkFBQTs7QUExR0YsUUE2R0M7RVJyRkEsZUFBQTtFQUNBLGtCQUFBO0VBQ0EsbUJBQUE7RUFDQSxvQkFBQTtFUW9GQyxtQkFBQTs7QUEvR0YsUUFrSEM7RVIxRkEsaUJBQUE7RUFDQSxpQkFBQTtFQUNBLG9CQUFBO0VBQ0Esb0JBQUE7RVF5RkMsaUJBQUE7O0FBcEhGLFFBdUhDO0VSL0ZBLGVBQUE7RUFDQSxpQkFBQTtFQUNBLG1CQUFBO0VBQ0EsbUJBQUE7RVE4RkMsZ0JBQUE7RUFDQSxrQkFBQTs7QUExSEYsUUE2SEM7RVJyR0EsaUJBQUE7RUFDQSxpQkFBQTtFQUNBLG9CQUFBO0VBQ0Esb0JBQUE7RVFvR0MsZ0JBQUE7RUFDQSxrQkFBQTs7QUFoSUYsUUFtSUM7RVIzR0EsaUJBQUE7RUFDQSxpQkFBQTtFQUNBLG9CQUFBO0VBQ0Esb0JBQUE7RVEwR0MsZ0JBQUE7RUFDQSxrQkFBQTs7QUF0SUYsUUF5SUM7RUFDQyxTQUFBO0VBQ0EsNkJBQUE7RUFDQSxlQUFBOztBQUlBLFFBREQsTUFDRTtFQUNBLGFBQUE7RUFDQSxrQkFBQTs7QUFHRCxRQU5ELE1BTUU7RUxpREQsMEJBQUE7RUFDQSx1QkFBQTtFQUNBLGtCQUFBOztBS3hNRixRQTRKQztFUnBJQSxlQUFBO0VBQ0Esa0JBQUE7RUFDQSxtQkFBQTtFQUNBLG9CQUFBO0VRbUlDLG9CUjdKOEIsdUNRNko5QjtFQUNBLGdCQUFBO0VMNElBLDBEQUFBO0VBQ0EsdURBQUE7RUFDQSxrREFBQTs7QUs3U0YsUUF1S0MsRUFDQztFQUNDLHNCQUFBOztBQXpLSCxRQXVLQyxFQUtDO0VBQ0MsY0FBQTs7QUE3S0gsUUFpTEM7RUFDQyxVQUFBO0VBQ0EsU0FBQTtFQUVBLFdBQUE7RUFDQSxjQUFBO0VBQ0EsZ0JBQUE7O0FBdkxGLFFBMExDO0FBMUxELFFBMExNO0VSbEtMLGtCQUFBO0VBQ0EsbUJBQUE7RUFDQSxtQkFBQTtFQUNBLG9CQUFBO0VRa0tDLGdKQUFBOztBQTdMRixRQTBMQyxJQUtDO0FBL0xGLFFBMExNLEtBS0o7RUFDQyxTQUFBOztBQWhNSCxRQXFNQyxJQUFJO0VBQ0gsZUFBQTtFQUNBLGNBQUE7O0FBdk1GLFFBME1DO0VBQ0MsV0FBQTs7QUEzTUYsUUE4TUMsR0FFQztBQWhORixRQThNSyxHQUVIO0FBaE5GLFFBOE1DLEdBRUs7QUFoTk4sUUE4TUssR0FFQztFQUNILGdCQUFBOztBQWpOSCxRQThNQyxHQU1DO0FBcE5GLFFBOE1LLEdBTUg7RVI1TEQsZUFBQTtFQUNBLG1CQUFBO0VBQ0Esb0JBQUE7RUFDQSxvQkFBQTs7QVEzQkQsUUEwTkMsU0FBUSxJQUFJO0VBQ1gsV0FBQTs7QUEzTkYsUUE4TkMsSUFBRztFQUNGLHVCQUFBO0VBQ0EsYUFBQTtFQUNBLHFCQUFBOzs7QUFHQSxRQU5ELElBQUcsS0FNRDtFQUNBLFNBQVMsTUFBVDtFQUNBLGlCQUFBOztBQ2pPRCxJQURELEVBQ0U7QUFBRCxJQURFLE9BQ0Q7QUFBRCxJQURVLE1BQ1Q7RU5pUkQsMEJBQUE7RUFBaUMsb0NBQUE7RUFDakMsdUJBQUE7RUFBOEIsNkJBQUE7RUFDOUIsa0JBQUE7RUFBeUIsNEJBQUE7RUhoUTFCLGVBQUE7RUFDQSxtQkFBQTtFQUNBLG1CQUFBO0VBQ0Esb0JBQUE7RVNuQkUsWUFBQTtFQUNBLGlCQUFBO0VBQ0EsZ0JBQUE7RUFDQSxnQkFBQTtFQUNBLGNBQUE7RUFDQSxtQkFBQTtFQUNBLHFCQUFBO0VBQ0EscUJBQUE7RUFDQSxlQUFBO0VBQ0EsU0FBQTtFQUNBLHNCQUFBO0VBSUEsYUFBQTtFQUdBLHVCQUFBOztBQUVBLElBdkJGLEVBQ0UsU0FzQkM7QUFBRCxJQXZCQyxPQUNELFNBc0JDO0FBQUQsSUF2QlMsTUFDVCxTQXNCQztFQUNBLGtCQUFBOztBQUdELElBM0JGLEVBQ0UsU0EwQkM7QUFBRCxJQTNCQyxPQUNELFNBMEJDO0FBQUQsSUEzQlMsTUFDVCxTQTBCQztFQUNBLG1CQUFBOztBQW9CRCxJQWhERixFQUNFLFNBK0NDO0FBQUQsSUFoREMsT0FDRCxTQStDQztBQUFELElBaERTLE1BQ1QsU0ErQ0M7RU5rT0YsNEJBQUE7RUFBaUMsb0NBQUE7RUFDakMseUJBQUE7RUFBOEIsNkJBQUE7RUFDOUIsb0JBQUE7RUFBeUIsNEJBQUE7RU1uUHZCLFdBQUE7RUFDQSxVQUFBO0VBQ0EsbUJBQUE7RUFDQSxnQkFBQTtFQUNBLGtCQUFBO0VBQ0Esa0JBQUE7O0FBRUEsSUF4Q0gsRUFDRSxTQStDQyxpQkFSQztBQUFELElBeENBLE9BQ0QsU0ErQ0MsaUJBUkM7QUFBRCxJQXhDUSxNQUNULFNBK0NDLGlCQVJDO0VBQ0Esa0JBQUE7RUFDQSxTQUFBO0VBQ0EsUUFBQTtFQUNBLHFCQUFBOztBVEdMLFFBSGlDO0VBR2pDLElTL0NDLEVBQ0UsU0FtREM7RVRMSixJUy9DSSxPQUNELFNBbURDO0VUTEosSVMvQ1ksTUFDVCxTQW1EQztJTjhORiw0QkFBQTtJQUFpQyxvQ0FBQTtJQUNqQyx5QkFBQTtJQUE4Qiw2QkFBQTtJQUM5QixvQkFBQTtJQUF5Qiw0QkFBQTtJTW5QdkIsV0FBQTtJQUNBLFVBQUE7SUFDQSxtQkFBQTtJQUNBLGdCQUFBO0lBQ0Esa0JBQUE7SUFDQSxrQkFBQTs7RUFFQSxJQXhDSCxFQUNFLFNBbURDLDBCQVpDO0VBQUQsSUF4Q0EsT0FDRCxTQW1EQywwQkFaQztFQUFELElBeENRLE1BQ1QsU0FtREMsMEJBWkM7SUFDQSxrQkFBQTtJQUNBLFNBQUE7SUFDQSxRQUFBO0lBQ0EscUJBQUE7O0VBSkQsSUF4Q0gsRUFDRSxTQW1EQywwQkFaQztFQUFELElBeENBLE9BQ0QsU0FtREMsMEJBWkM7RUFBRCxJQXhDUSxNQUNULFNBbURDLDBCQVpDO0lBQ0Esa0JBQUE7SUFDQSxTQUFBO0lBQ0EsUUFBQTtJQUNBLHFCQUFBOzs7QUFjRixJQTFERixFQUNFLFNBeURDO0FBQUQsSUExREMsT0FDRCxTQXlEQztBQUFELElBMURTLE1BQ1QsU0F5REM7QUFDRCxJQTNERixFQUNFLFNBMERDO0FBQUQsSUEzREMsT0FDRCxTQTBEQztBQUFELElBM0RTLE1BQ1QsU0EwREM7RUFDQSxXQUFBO0VBQ0EsbUJBQUE7O0FBR0QsSUFoRUYsRUFDRSxTQStEQztBQUFELElBaEVDLE9BQ0QsU0ErREM7QUFBRCxJQWhFUyxNQUNULFNBK0RDO0VBQ0EscUJBQUE7RUFDQSxVQUFBO0VOcU9GLHlFQUFBO0VBQ0Esc0VBQUE7RUFDQSxpRUFBQTs7QU01TkEsSUE3RUQsRUE2RUU7QUFBRCxJQTdFRSxPQTZFRDtBQUFELElBN0VVLE1BNkVUO0VBQ0EsbUJBQUE7O0FBRUEsSUFoRkYsRUE2RUUsY0FHQztBQUFELElBaEZDLE9BNkVELGNBR0M7QUFBRCxJQWhGUyxNQTZFVCxjQUdDO0FBQ0QsSUFqRkYsRUE2RUUsY0FJQztBQUFELElBakZDLE9BNkVELGNBSUM7QUFBRCxJQWpGUyxNQTZFVCxjQUlDO0VBQ0EsY0FBQTtFQUNBLG1CQUFBOztBQUlGLElBdkZELEVBdUZFO0FBQUQsSUF2RkUsT0F1RkQ7QUFBRCxJQXZGVSxNQXVGVDtBQUFELElBdkZELEVIaURHLGFBeENILEdBZ0JDLEdBYUMsRUFXRTtBR3NDSCxJQXZGRSxPSGlEQSxhQXhDSCxHQWdCQyxHQWFDLEVBV0U7QUdzQ0gsSUF2RlUsTUhpRFIsYUF4Q0gsR0FnQkMsR0FhQyxFQVdFO0VHdUNGLFdBQUE7RUFDQSxtQkFBQTs7QUFFQSxJQTNGRixFQXVGRSxvQkFJQztBQUFELElBM0ZDLE9BdUZELG9CQUlDO0FBQUQsSUEzRlMsTUF1RlQsb0JBSUM7QUFDRCxJQTVGRixFQXVGRSxvQkFLQztBQUFELElBNUZDLE9BdUZELG9CQUtDO0FBQUQsSUE1RlMsTUF1RlQsb0JBS0M7QUFERCxJQTNGRixFSGlERyxhQXhDSCxHQWdCQyxHQWFDLEVBV0UsTUcwQ0Q7QUFBRCxJQTNGQyxPSGlEQSxhQXhDSCxHQWdCQyxHQWFDLEVBV0UsTUcwQ0Q7QUFBRCxJQTNGUyxNSGlEUixhQXhDSCxHQWdCQyxHQWFDLEVBV0UsTUcwQ0Q7QUFDRCxJQTVGRixFSGlERyxhQXhDSCxHQWdCQyxHQWFDLEVBV0UsTUcyQ0Q7QUFBRCxJQTVGQyxPSGlEQSxhQXhDSCxHQWdCQyxHQWFDLEVBV0UsTUcyQ0Q7QUFBRCxJQTVGUyxNSGlEUixhQXhDSCxHQWdCQyxHQWFDLEVBV0UsTUcyQ0Q7RUFDQSxXQUFBO0VBQ0EsbUJBQUE7O0FDaEdKO0VWc0JDLGVBQUE7RUFDQSxrQkFBQTtFQUNBLG1CQUFBO0VBQ0Esb0JBQUE7RUcyUEMsMEJBQUE7RUFBaUMsb0NBQUE7RUFDakMsdUJBQUE7RUFBOEIsNkJBQUE7RUFDOUIsa0JBQUE7RUFBeUIsNEJBQUE7RU9uUjFCLGdDQUFBO0VBRUEsbUJBQUE7RUFDQSxxQkFBQTtFQUNBLG1CQUFBO0VBQ0Esd0JBQUE7RUFDQSxnQkFBQTtFQUNBLGtCQUFBO0VBQ0EsYUFBQTtFQUNBLG9CQUFBO0VBQ0EsY0FBQTs7QUFFQSxVQUFDO0VBQ0EsY0FBQTs7QUFHRCxVQUFDO0VBQ0EsU0FBUyxFQUFUO0VBQ0EsUUFBQTtFQUNBLFNBQUE7RUFDQSxtQkFBQTtFQUNBLGtCQUFBOztBQU1ELGFBQUM7QUFBRCxhQUFDO0VBQ0EsVUFBQTtFQUNBLDhCQUFBO0VBQ0EseURBQUE7O0FBTUQsYUFBQztBQUFELGFBQUM7RUFDQSxhQUFBO0VBQ0EsOEJBQUE7RUFDQSx5REFBQTs7QUFNRCxhQUFDO0FBQUQsYUFBQztFQUNBLFVBQUE7O0FBTUQsYUFBQztBQUFELGFBQUM7RUFDQSxXQUFBOztBQ3ZERixjQUFjO0FBQ2QsZUFBZTtFQUNkLFNBQVMsRUFBVDtFQUNBLHFCQUFBO0VBQ0EsV0FBQTtFQUNBLFlBQUE7RUFDQSxzQkFBQTtFQUNBLDRCQUFBOztBQUdELGNBQWM7RUFDYixrQkFBQTs7QUFHRCxlQUFlO0VBQ2QsaUJBQUE7O0FBSUEsY0FBQztBQUFTLGNBQUM7RUFDVixzQkFBa0IsNmNBQWxCOztBQUtELG1CQUFDO0FBQVMsbUJBQUM7RUFDVixzQkFBa0IsNmlCQUFsQjs7QUFLRCxXQUFDO0FBQVMsV0FBQztFQUNWLHNCQUFrQiw2aUJBQWxCOztBQzVCRixJQUFLLFFBRUo7RUFDQyxzQkFBQTs7QUFIRixJQUFLLFFBTUosTUFBSztFQUNKLGdCQUFBO0VBQ0EscUJBQUE7O0FBUkYsSUFBSyxRQVdKO0VBQ0MseUJBQUE7RUFDQSwwQkFBQTs7QUFFQSxJQWZHLFFBV0osTUFJRTtFQUNBLFdBQUE7O0FBR0QsSUFuQkcsUUFXSixNQVFFO0VBQ0EsWUFBQTs7QUFwQkgsSUFBSyxRQXdCSjtFQUNDLGFBQUE7O0FBSUY7RVpaQyxlQUFBO0VBQ0EsbUJBQUE7RUFDQSxtQkFBQTtFQUNBLG9CQUFBO0VZV0EsaUJBQUE7RUFDQSx5QkFBQTtFQUNBLGdCQUFBO0VBQ0EscUJBQUE7RUFDQSxzQkFBQTtFQUNBLFdBQUE7RVQyT0MsMEJBQUE7RUFBaUMsb0NBQUE7RUFDakMsdUJBQUE7RUFBOEIsNkJBQUE7RUFDOUIsa0JBQUE7RUFBeUIsNEJBQUE7RVMzTzFCLGtCQUFBOztBQVRELE9BV0MsTUFBSztFQUNKLGFBQUE7O0FBWkYsT0FlQztFQUNDLGtCQUFBO0VBQ0EsVUFBQTtFQUNBLFdBQUE7RUFDQSxlQUFBO0VBQ0EsaUJBQUE7O0FBRUEsT0FQRCxNQU9FO0VBQ0EsMEJBQUE7O0FBdkJILE9BMkJDO0VBQ0MsV0FBQTtFQUNBLHNCQUFBO0VBQ0EsYUFBQTtFQUNBLGNBQUE7RUFDQSxZQUFBO0VBQ0EsZ0JBQUE7RVRpTkEsNEJBQUE7RUFBaUMsb0NBQUE7RUFDakMseUJBQUE7RUFBOEIsNkJBQUE7RUFDOUIsb0JBQUE7RUFBeUIsNEJBQUE7O0FTcFAzQixPQTJCQyxjQVNDO0VBQ0MsZ0JBQUE7RUFDQSxrQkFBQTtFQUNBLGNBQUE7RUFDQSxhQUFBO0VBQ0EsWUFBQTtFQUNBLG1CQUFBO0VUd01ELDRCQUFBO0VBQWlDLG9DQUFBO0VBQ2pDLHlCQUFBO0VBQThCLDZCQUFBO0VBQzlCLG9CQUFBO0VBQXlCLDRCQUFBOztBU3ZNeEIsT0FsQkYsY0FTQyxTQVNFO0VBQ0EsU0FBUyxFQUFUO0VBQ0EsY0FBQTtFQUNBLGtCQUFBO0VBQ0EsTUFBQTtFQUNBLFFBQUE7RUFDQSxXQUFBO0VBQ0EsT0FBQTtFQUVBLHlCQUFBO0VUc0tGLHdDQUFBO0VBQ0Esb0NBQUE7RUFDQSxnQ0FBQTtFQUtBLHlDQUFBO0VBQThDLG9DQUFBO0VBQzlDLHFDQUFBO0VBQTBDLDZCQUFBO0VBQzFDLGlDQUFBO0VBQXNDLDRCQUFBOztBU3ZLdkMsT0FBQyxNQUNBLGNBQWMsU0FBUTtFQUNyQixtQkFBQTs7QUFoRUgsT0FvRUMsTUFBSyxjQUFnQixRQUVwQixnQkFBZ0I7RUFDZixpQkFBQTs7QUF2RUgsT0FvRUMsTUFBSyxjQUFnQixRQVNwQixRQUFPO0VBQ04sc0JBQUE7RUFDQSxzQkFBQTs7QUEvRUgsT0FtRkMsTUFBSyxjQUFnQixRQUFTLFFBQU87RUFDcEMscUJBQUE7RUFDQSxxQkFBQTs7QUN6SEY7RVZrM0JFLHlCQUFBO0VBQ0Esc0JBQUE7RUFDQSxxQkFBQTtFQUNBLGlCQUFBOztBVXIzQkYsUUFHQztFQUNDLGVBQUE7O0FBSkYsUUFNQztFQUNDLGdCQUFBOztBQVBGLFFBVUM7RUFDQyxhQUFBOztBQUdELFFBQUMsVUFDQTtFQUNDLGFBQUE7O0FBRkYsUUFBQyxVQUtBO0VBQ0MsZ0JBQUE7O0FBS0g7RUFDQyxnQkFBQTs7QUFFQSxrQkFBQztFQUNBLFNBQUE7O0FBTUQsc0JBQUM7QUFBRCx1QkFBQztBQUFTLHNCQUFDO0FBQUQsdUJBQUM7RUFDVixzQkFBa0IseXNCQUFsQjs7QUFJQSxzQkFEQSxXQUNDO0FBQUQsdUJBREEsV0FDQztBQUFTLHNCQURWLFdBQ1c7QUFBRCx1QkFEVixXQUNXO0VBQ1Ysc0JBQWtCLHF0QkFBbEI7O0FBTUYsc0JBQUM7QUFDRCxzQkFBQztFQUNBLDZCQUFBOztBQUtELHVCQUFDO0FBQ0QsdUJBQUM7RUFDQSxnQ0FBQTs7QUN0REY7RUFDQyxhQUFBO0VBQ0Esa0JBQUE7RUFDQSx1QkFBQTtFQUNBLGdCQUFBO0VYNFNDLDhCQUFBO0VBQ0EsMkJBQUE7RUFDQSxzQkFBQTtFV3pTRCxxQkFBQTtFQUNBLG1CQUFBO0VYZ3ZCQyx3Q0FBQTtFQUNBLHFDQUFBO0VBQ0EsbUNBQUE7RUFDQSxvQ0FBQTtFQUNBLGdDQUFBOztBV2p2QkQsTUFBQztFWHVRQSw0QkFBQTtFQUFpQyxvQ0FBQTtFQUNqQyx5QkFBQTtFQUE4Qiw2QkFBQTtFQUM5QixvQkFBQTtFQUF5Qiw0QkFBQTtFV3ZRekIsZUFBQTtFQUNBLFlBQUE7RUFDQSxXQUFBO0VBQ0Esa0JBQUE7RUFDQSxTQUFBO0VBQ0EsV0FBQTtFQUNBLGVBQUE7RUFDQSxrQkFBQTtFQUNBLGlCQUFBO0VBQ0EsbUJBQUE7O0FDekJGLElBQUs7QUFDTCxNQUFPO0FBQ1AsYUFBYztBQUNkLE1BQU87RUFDTixnQkFBQTs7QUFJRDtFQUNDLGdCQUFBOztBQUdEO0VBQ0MsNkJBQUE7O0FDWEEsU0FBQztFQUNBLHlCQUFBO0VBQ0EsV0FBQTs7QUFGRCxTQUFDLElBSUEsU0FDQztBQUxGLFNBQUMsSUFJQSxTQUNLO0FBTE4sU0FBQyxJQUlBLFNBQ1M7QUFMVixTQUFDLElBSUEsU0FDYTtBQUxkLFNBQUMsSUFJQSxTQUNpQjtFQUNmLFdBQUE7O0FBTkgsU0FBQyxJQUlBLFNBS0M7RWhCWUYsZUFBQTtFQUNBLG1CQUFBO0VBQ0EsbUJBQUE7RUFDQSxvQkFBQTtFZ0JiRyxnQkFBQTs7QUFYSCxTQUFDLElBSUEsU0FLQyxFQUlDO0VBQ0MscUJBQUE7RUFDQSw4QkFBQTtFQUNBLGNBQUE7O0FBRUEsU0FsQkgsSUFJQSxTQUtDLEVBSUMsRUFLRTtFQUNBLGNBQUE7O0FBbkJMLFNBQUMsSUFJQSxTQW9CQztFQUNDLFdBQUE7O0FBekJILFNBQUMsSUFJQSxTQXdCQztFQUNDLFdBQUE7O0FBN0JILFNBQUMsSUFJQSxTQTRCQztFQUNDLGtCQUFBO0VBQ0EsY0FBQTs7QUFLSCxTQUFDO0VBQ0Esa0JBQUE7O0FBRUEsU0FIQSxPQUdDO0VBQ0EsV0FBQTtFQUNBLFNBQVMsRUFBVDtFQUNBLG1CQUFBO0VBQ0Esa0JBQUE7RUFDQSxNQUFBO0VBQ0EsT0FBQTtFQUNBLFFBQUE7RUFDQSxXQUFBOztBQ3hESCxJQUFLO0FBQ0wsTUFBTztBQUNQLGFBQWM7QUFDZCxNQUFPO0VBQ04saUJBQUE7O0FBR0QsSUFBSyxnQkFBZTtFQUNuQixlQUFBOztBQUdEO0VBQ0MsbUJBQUE7RUFDQSxZQUFBO0VBQ0EsaUJBQUE7O0FBSEQsT0FNQztFQUVDLGtCQUFBO0VBQ0EsVUFBQTtFQUNBLFVBQUE7RUFDQSxtQkFBQTtFQUdBLG1CQUFBO0VBQ0EsNEJBQUE7O0FBRUEsT0FYRCxXQVdFO0VBQ0EseURBQUE7O0FBS0gsUUFBUztFQUNSLGdCQUFBO0VBQ0EsU0FBQTtFQUNBLHdCQUFBOztBQUVBLFFBTFEsbUJBS1A7RUFDQSxZQUFBOztBQUtGLEtBQU07RUFDTCxnQkFBQTtFQUNBLGNBQUE7RUFDQSwwQkFBQTs7QUFJRCxHQUFHLElBQUssRUFBQztBQUNULEdBQUcsSUFBSztFQUNQLG1CQUFBOztBQUVBLEdBSkUsSUFBSyxFQUFDLFdBSVA7QUFBRCxHQUhFLElBQUssa0JBR047RUFDQSxnQ0FBQTs7QUFJRixLQUFNLGNBQWE7RUFDbEIsYUFBQTs7QUFJQSxRQURRLGNBQ1A7RUFDQSxhQUFBOztBQUZGLFFBQVMsY0FLUjtFQUNDLGFBQUE7O0FBSUYsUUFDQztFQUNDLGlCQUFBOztBQUlGO0VBQ0MsaUJBQUE7O0FBREQsU0FHQztFQUNDLFdBQUE7RUFDQSxpQkFBQTs7QUFMRixTQUdDLE1BSUM7RUFDQyxnQkFBQTs7QUFFQSxTQVBGLE1BSUMsU0FHRTtFQUNBLHVCQUFBO0VBQ0EsV0FBQTs7QUFGRCxTQVBGLE1BSUMsU0FHRSxNQUlBO0VBQ0MsMEJBQUE7O0FBZkwsU0FHQyxNQWlCQztFQUNDLFdBQUE7RUFDQSxhQUFBOztBQUdELFNBdEJELE1Bc0JFO0VBQ0EsZ0JBQUE7O0FBS0g7RUFDQyxnQkFBQTtFQUNBLFNBQUE7RUFDQSxVQUFBO0VBQ0Esd0JBQUE7O0FBRUEsdUJBQUM7RUFDQSxZQUFBO0VBQ0EsVUFBQTs7QUFLRjtFQUNDLGlCQUFBOztBQURELE1BR0MsSUFBRztFQUNGLGlCQUFBOztBQUpGLE1BT0M7RUFDQyxpQkFBQTs7QUFSRixNQU9DLGNBR0M7RUFDQyxpQkFBQTs7QUFYSCxNQU9DLGNBT0M7RUFFQyxrQkFBQTs7QUFoQkgsTUFvQkM7RUFDQyxrQkFBQTtFQUNBLFNBQUE7RUFFQSxTQUFBO0VBQ0Esa0JBQUE7O0FqQmhHRixRQUhpQztFQUdqQyxNaUIyRkM7SUFVRSxVQUFBO0lBQ0EsaUJBQUE7SUFFQSxVQUFBO0lBQ0EsbUJBQUE7O0VBRUEsTUFoQkYsV0FnQkc7SUFDQSxVQUFBO0lBQ0EsV0FBQTs7O0FqQjdHSixRQUhpQztFQUdqQyxNaUIyRkM7SUF3QkUsYUFBQTs7O0FDeEpILFFBQVM7RUFDUixvQkFBQTtFZm0yQkMseUJBQUE7RUFDQSxzQkFBQTtFQUNBLHFCQUFBO0VBQ0EsaUJBQUE7RWVwMkJELGVBQUE7O0FBSUQsb0JBQXFCO0VmNmVsQixPQUFBO0VBQVMseUJBQUE7RUFDVixvQkFBQTtFQUNBLGlCQUFBO0VBQ0EsWUFBQTs7QWU1ZUYsWUFBWTtFQUNYLGtCQUFBO0Vmd2VFLE9BQUE7RUFBUywwQkFBQTtFQUNWLGtCQUFBO0VBQ0EsZUFBQTtFQUNBLFVBQUE7O0FldGVELFlBTlcsT0FNVjtFQUNBLFNBQVMsRUFBVDtFQUNBLGNBQUE7RUFDQSxrQkFBQTtFQUNBLE1BQUE7RUFDQSxVQUFBO0VBQ0EsV0FBQTtFQUNBLE9BQUE7RWZnUEEsMEJBQUE7RUFBaUMsb0NBQUE7RUFDakMsdUJBQUE7RUFBOEIsNkJBQUE7RUFDOUIsa0JBQUE7RUFBeUIsNEJBQUE7RUFtQnpCLDRDQUFBO0VBQ0EseUNBQUE7RUFDQSxvQ0FBQTs7QWVwUkYsWUFBWSxPQWtCWDtFZmdRQyx3QkFBQTtFQUNBLHFCQUFBO0VBQ0EsZ0JBQUE7RWVoUUEscUJBQUE7O0FBcEJGLFlBQVksT0F1Qlg7QUF2QkQsWUFBWSxPQXdCWDtFQUNDLGtCQUFBO0VBQ0EsVUFBQTs7QUExQkYsWUFBWSxPQTZCWDtFZnFQQyx3QkFBQTtFQUNBLHFCQUFBO0VBQ0EsZ0JBQUE7O0FlbFBGO0VmdXpCRSx5QkFBQTtFQUNBLHNCQUFBO0VBQ0EscUJBQUE7RUFDQSxpQkFBQTs7QWV2ekJGO0VBQ0MsY0FBQTtFQUNBLG9CQUFBO0VBQ0EsZ0JBQUE7RUFDQSxnQkFBQTs7QUFHQyxRQURELE9BQU0sU0FDSjtFQUNBLGVBQUE7RUFFQSxxQkFBQTtFQUNBLGdCQUFBO0VBQ0EsVUFBQTtFQUNBLHlCQUFBOztBQUdELFFBVkQsT0FBTSxTQVVKO0VBQ0EsYUFBQTs7QUFHRCxRQWRELE9BQU0sU0FjSjtFQUNBLFdBQUE7RUFDQSxpQkFBQTs7QUFHRCxRQW5CRCxPQUFNLFNBbUJKO0VBQ0EsWUFBQTtFQUNBLGdCQUFBOztBQTNCSCxRQU1DLE9BQU0sU0F3Qkw7RUFDQyxjQUFBOztBQU1ILGdCQUFnQjtBQUNoQixnQkFBZ0I7QUFDaEIsc0JBQXNCO0VBQ3JCLGFBQUE7O0FBR0QsZ0JBQWlCO0FBQ2pCLFFBQVMsT0FBTTtBQUNmLGdCQUFpQixTQUFRLFdBQVc7RUFDbkMsYUFBQTs7QUFHRCxHQUFHO0VBQ0YsVUFBQTtFQUNBLGdCQUFBO0VBQ0EsV0FBQTtFQUNBLGtCQUFBO0VBQ0EsY0FBQTtFQUNBLHlCQUFBOztBQU5ELEdBQUcsZ0JBUUY7RUFDQyxTQUFBOztBQVRGLEdBQUcsZ0JBWUY7RUFDQyxhQUFBOztBQUdELEdBaEJFLGdCQWdCRCxjQUFlO0VBQ2Ysa0JBQUE7RWZrWUMsT0FBQTtFQUFTLHlCQUFBO0VBQ1Ysb0JBQUE7RUFDQSxpQkFBQTtFQUNBLFlBQUE7O0FldFpGLEdBQUcsZ0JBdUJGLE9BQU87RUFDTixpQkFBQTs7QUFJRCxHQTVCRSxnQkE0QkE7RUFDRCxVQUFBO0VBQ0EsU0FBQTtFQUNBLDZCQUFBO0VBQ0EsV0FBQTs7QUFFQSxHQWxDQyxnQkE0QkEsS0FNQTtFQUNBLDJCQUFBOztBQUdELEdBdENDLGdCQTRCQSxLQVVBO0VBQ0Esd0JBQUE7O0FBWEYsR0E1QkUsZ0JBNEJBLEtBZUQ7RUFDQyxVQUFBO0VBQ0EsU0FBQTs7QUFJRCxHQWpEQyxnQkE0QkEsS0FxQkM7RUFDRCxrQkFBQTs7QUFFQSxHQXBEQSxnQkE0QkEsS0FxQkMsS0FHQTtFQUNBLGlCQUFBO0VBQ0EsaUJBQUE7RUFDQSxlQUFBOztBQUdELEdBMURBLGdCQTRCQSxLQXFCQyxLQVNBO0FBQ0QsR0EzREEsZ0JBNEJBLEtBcUJDLEtBVUE7RUFDQSxnQ0FBQTs7QUFHRCxHQS9EQSxnQkE0QkEsS0FxQkMsS0FjQTtFQUNBLDBCQUFBOztBQUVBLEdBbEVELGdCQTRCQSxLQXFCQyxLQWNBLHNCQUdDO0VBQ0EsZ0JBQUE7O0FBSUYsR0F2RUEsZ0JBNEJBLEtBcUJDLEtBc0JBLG1CQUFtQjtBQUNwQixHQXhFQSxnQkE0QkEsS0FxQkMsS0F1QkEsbUJBQW1CO0FBQ3BCLEdBekVBLGdCQTRCQSxLQXFCQyxLQXdCQSx1QkFBdUI7QUFDeEIsR0ExRUEsZ0JBNEJBLEtBcUJDLEtBeUJBLHVCQUF1QjtFQUN2QixnQkFBQTtFQUNBLFVBQUE7O0FBR0QsR0EvRUEsZ0JBNEJBLEtBcUJDLEtBOEJBLG1CQUFtQjtBQUNwQixHQWhGQSxnQkE0QkEsS0FxQkMsS0ErQkEsdUJBQXVCO0FBQ3hCLEdBakZBLGdCQTRCQSxLQXFCQyxLQWdDQSxtQkFBbUIsT0FBTztBQUMzQixHQWxGQSxnQkE0QkEsS0FxQkMsS0FpQ0EsdUJBQXVCLE9BQU87RUFDOUIsbUJBQUE7O0FBR0QsR0F0RkEsZ0JBNEJBLEtBcUJDLEtBcUNBLG1CQUFtQjtBQUNwQixHQXZGQSxnQkE0QkEsS0FxQkMsS0FzQ0EsdUJBQXVCO0VBQ3ZCLG1CQUFBOztBQUdELEdBM0ZBLGdCQTRCQSxLQXFCQyxLQTBDQTtFQU1BLG1CQUFBOztBQUxBLEdBNUZELGdCQTRCQSxLQXFCQyxLQTBDQSx1QkFDQztFQUNBLFNBQVMsRUFBVDtFQUNBLFdBQUE7O0FBS0QsR0FuR0QsZ0JBNEJBLEtBcUJDLEtBMENBLHVCQVFFO0VBQ0QsZ0JBQUE7O0FBSUYsR0F4R0EsZ0JBNEJBLEtBcUJDLEtBdURDO0FBQUssR0F4R1AsZ0JBNEJBLEtBcUJDLEtBdURRO0VBQ1IsbUJBQUE7RUFDQSxzQkFBQTs7QUF6REYsR0FqREMsZ0JBNEJBLEtBcUJDLEtBNkREO0VBQ0MsaUJBQUE7RUFDQSxnQkFBQTs7QUEvREYsR0FqREMsZ0JBNEJBLEtBcUJDLEtBNkRELEVBSUM7RUFDQyxtQkFBQTtFQUNBLGVBQUE7O0FBbkVILEdBakRDLGdCQTRCQSxLQXFCQyxLQTZERCxFQUlDLEtBSUM7RUFDQyxtQkFBQTtFQUNBLGlCQUFBO0VBQ0EsZUFBQTtFQUNBLGdCQUFBO0VmNkNKLDBCQUFBO0VBQWlDLG9DQUFBO0VBQ2pDLHVCQUFBO0VBQThCLDZCQUFBO0VBQzlCLGtCQUFBO0VBQXlCLDRCQUFBO0VlN0NyQixzQkFBQTtFQUNBLGNBQUE7RUFDQSxpQkFBQTtFQUNBLFlBQUE7O0FBR0MsR0FsSUosZ0JBNEJBLEtBcUJDLEtBNkRELEVBSUMsS0FJQyxPQVdFLElBQUksV0FDSDtBQUNELEdBbklKLGdCQTRCQSxLQXFCQyxLQTZERCxFQUlDLEtBSUMsT0FXRSxJQUFJLFdBRUg7RUFDQSxXQUFBO0VBQ0EseUJBQUE7RUFDQSx5QkFBQTs7QUFJRixHQTFJSCxnQkE0QkEsS0FxQkMsS0E2REQsRUFJQyxLQUlDLE9Bb0JFLEtBQUs7RUFDTCxlQUFBO0Vmd1FKLE9BQUE7RUFBUyx5QkFBQTtFQUNWLG9CQUFBO0VBQ0EsaUJBQUE7RUFDQSxZQUFBOztBZXJXQSxHQWpEQyxnQkE0QkEsS0FxQkMsS0FrR0Q7RUFDQyx5QkFBQTtFQUNBLFVBQUE7RUFDQSxXQUFBOztBQXJHRixHQWpEQyxnQkE0QkEsS0FxQkMsS0FrR0QsR0FNQztFQUNDLGtCQUFBO0VBQ0EscUJBQUE7RUFHQSxjQUFBOztBQUVBLEdBaEtGLGdCQTRCQSxLQXFCQyxLQWtHRCxHQU1DLEdBT0U7RUFDQSw2QkFBQTs7QUFFQSxHQW5LSCxnQkE0QkEsS0FxQkMsS0FrR0QsR0FNQyxHQU9FLHNCQUdDO0VBQ0EsYUFBQTs7QUFKRixHQWhLRixnQkE0QkEsS0FxQkMsS0FrR0QsR0FNQyxHQU9FLHNCQU9BO0VmQUosMEJBQUE7RUFBaUMsb0NBQUE7RUFDakMsdUJBQUE7RUFBOEIsNkJBQUE7RUFDOUIsa0JBQUE7RUFBeUIsNEJBQUE7RWVBcEIsY0FBQTs7QUFFQSxHQTNLSixnQkE0QkEsS0FxQkMsS0FrR0QsR0FNQyxHQU9FLHNCQU9BLHFCQUlFO0VBQ0EsK0JBQUE7O0FBWkgsR0FoS0YsZ0JBNEJBLEtBcUJDLEtBa0dELEdBTUMsR0FPRSxzQkFPQSxxQkFRQztFQUNDLHNCQUFBOztBQUtILEdBckxGLGdCQTRCQSxLQXFCQyxLQWtHRCxHQU1DLEdBNEJHO0FBQUssR0FyTFQsZ0JBNEJBLEtBcUJDLEtBa0dELEdBTUMsR0E0QlU7RUFDUixtQkFBQTtFQUNBLHNCQUFBOztBQXRJSixHQWpEQyxnQkE0QkEsS0FxQkMsS0FrR0QsR0FNQyxHQWtDQztFQUNDLFVBQUE7O0FBM0lKLEdBakRDLGdCQTRCQSxLQXFCQyxLQWtHRCxHQU1DLEdBa0NDLEdBSUM7RUFDQyxVQUFBO0VBQ0EscUJBQUE7RUFDQSxlQUFBO0VBQ0EscUJBQUE7O0FBbEpMLEdBakRDLGdCQTRCQSxLQXFCQyxLQWtHRCxHQU1DLEdBa0NDLEdBSUMsR0FPQztFQUNDLGVBQUE7RUFDQSxtQkFBQTs7QUF2Sk4sR0FqREMsZ0JBNEJBLEtBcUJDLEtBa0dELEdBTUMsR0FrQ0MsR0FJQyxHQVlDO0FBMUpMLEdBakRDLGdCQTRCQSxLQXFCQyxLQWtHRCxHQU1DLEdBa0NDLEdBSUMsR0FhQztFQUNDLGVBQUE7RUFDQSxTQUFBO0VBQ0Esc0JBQUE7RUFDQSxzQkFBQTtFQ2xTUCxrQkFBQTtFQUNBLG1CQUFBO0VBRUEsb0JBQUE7RUFDQSxvQkFBQTs7QUR3U0EsR0ExTkUsZ0JBME5BO0VBQ0QsZ0JBQUE7O0FBSUQsR0EvTkUsZ0JBK05EO0VBQ0EsWUFBQTtFQUNBLFlBQUE7RUFDQSxnQkFBQTtFQUNBLGdCQUFBO0VBQ0Esa0JBQUE7O0FBTEQsR0EvTkUsZ0JBK05ELE1BT0E7RUN4VEQsa0JBQUE7RUFDQSxrQkFBQTtFQUVBLG9CQUFBO0VBQ0Esb0JBQUE7RURzVEUscUJBQUE7RUFDQSxtQkFBQTtFQUNBLGdDQUFBO0VBQ0EsYUFBQTtFQUNBLG9CQUFBOztBQWJGLEdBL05FLGdCQStORCxNQWdCQTtFQUVDLG9CQUFBO0VBQ0EsZ0JBQUE7O0FBbkJGLEdBL05FLGdCQStORCxNQWdCQSxHQUtDO0VBQ0MsaUJBQUE7RUFDQSxTQUFBO0VBQ0EscUJBQUE7O0FBR0QsR0ExUEEsZ0JBK05ELE1BZ0JBLEdBV0c7RUFDRCxrQkFBQTs7QUE1QkgsR0EvTkUsZ0JBK05ELE1BZ0JBLEdBZUM7RUFDQyxXQUFBO0VBQ0EsVUFBQTtFQUNBLFdBQUE7RUFDQSxpQkFBQTtFQUNBLDZCQUFBO0VBQ0EsbUJBQUE7RUFDQSxtQkFBQTtFZmxFRiw4QkFBQTtFQUNBLDJCQUFBO0VBQ0Esc0JBQUE7O0FlMEJELEdBL05FLGdCQStORCxNQWdCQSxHQWVDLEdBVUM7RUFDQyxnQkFBQTtFQUNBLFlBQUE7RUFDQSxzQkFBQTs7QUE1Q0osR0EvTkUsZ0JBK05ELE1BZ0JBLEdBZ0NDO0VBQ0MsaUJBQUE7RUFDQSxZQUFBO0VBQ0Esb0JBQUE7O0FBbkRILEdBL05FLGdCQStORCxNQWdCQSxHQWdDQyxHQUtDO0VBQ0Msa0JBQUE7O0FBR0QsR0F4UkQsZ0JBK05ELE1BZ0JBLEdBZ0NDLEdBU0U7RUFDQSxTQUFTLE9BQVQ7RUFDQSxjQUFBO0VBQ0EsV0FBQTtFQUNBLFlBQUE7RUFDQSxTQUFBO0VBQ0EsUUFBQTs7QUFPTDtBQUNBLGdCQUFpQixTQUFRO0FBQ3pCO0VmaElFLDBCQUFBO0VBQWlDLG9DQUFBO0VBQ2pDLHVCQUFBO0VBQThCLDZCQUFBO0VBQzlCLGtCQUFBO0VBQXlCLDRCQUFBO0VlZ0kxQixzQkFBQTtFQzNYQSxrQkFBQTtFQUNBLG1CQUFBO0VBRUEsb0JBQUE7RUFDQSxvQkFBQTs7QUQyWEQsZ0JBQWlCLFNBQVE7QUFDekIsV0FBWTtBQUNaO0VDallDLGtCQUFBO0VBQ0EsbUJBQUE7RUFFQSxvQkFBQTtFQUNBLG9CQUFBO0VEK1hBLGdKQUFBOztBQUdELFdBQVk7RUFDWCxZQUFBO0VBQ0EsVUFBQTtFQUNBLFNBQUE7O0FBR0QsZ0JBQWlCLFNBQVE7RWZ2SHZCLDhCQUFBO0VBQ0EsMkJBQUE7RUFDQSxzQkFBQTtFZXVIRCxjQUFBO0VBQ0EsYUFBQTtFQUNBLFdBQUE7RUFDQSxpQkFBQTtFQUNBLFNBQUE7RUFDQSxZQUFBO0VBQ0EsYUFBQTtFQUNBLGdCQUFBO0VBQ0EsV0FBQTtFQUNBLGdCQUFBO0VBQ0EsaUJBQUE7RUFDQSxjQUFBOztBQUdELGlCQUFpQjtFQUNoQixVQUFBO0VBQ0EsY0FBQTtFQzlaQSxlQUFBO0VBQ0EsbUJBQUE7RUFFQSxtQkFBQTtFQUNBLG9CQUFBO0VEa2FBLGdKQUFBOztBQVZELGlCQUFpQixpQkFJaEI7RUFDQyxjQUFBO0VBQ0EsbUJBQUE7O0FBTUQsaUJBWmdCLGlCQVlkLEtBQUk7RUFDTCxtQkFBQTs7O0FBS0Y7RUFDQyxvQkFBQTs7QUFERCx1QkFHQyxTQUFTO0VBQ1IsbUJBQUE7RUFDQSxpQkFBQTs7QUFMRix1QkFRQztFQUVDLFlBQUE7RUFHQSxnQkFBQTs7QUFJRjtFQUNDLGVBQUE7RUFDQSxNQUFBO0VBQ0EsV0FBQTtFQUNBLFdBQUE7O0FBSkQsZ0JBTUM7RUFDQyxpQkFBQTs7QUFQRixnQkFNQyxrQkFHQztFQUNDLGdCQUFBOztBQVZILGdCQU1DLGtCQUdDLE9BR0M7RUFDQyxnQkFBQTs7QUFPSjtFQUNDLGtCQUFBO0VBQ0EsVUFBQTtFQUNBLFVBQUE7O0FBRUEsS0FBQztFQUNBLGFBQUEifQ== */ \ No newline at end of file 1632/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL25vZGVfbW9kdWxlcy9ja3NvdXJjZS1zYW1wbGVzLWZyYW1ld29yay9jb21wb25lbnRzL2dsb2JhbC9nbG9iYWwubGVzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ja3NvdXJjZS1zYW1wbGVzLWZyYW1ld29yay9jb21wb25lbnRzL2NvcmUvY29yZS5sZXNzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2Nrc291cmNlLXNhbXBsZXMtZnJhbWV3b3JrL2NvbXBvbmVudHMvZ3JpZC9ncmlkLmxlc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvY2tzb3VyY2Utc2FtcGxlcy1mcmFtZXdvcmsvbm9kZV9tb2R1bGVzL2xlc3NoYXQvYnVpbGQvbGVzc2hhdC5sZXNzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2Nrc291cmNlLXNhbXBsZXMtZnJhbWV3b3JrL2NvbXBvbmVudHMvaGVhZGVyLWEvaGVhZGVyLWEubGVzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ja3NvdXJjZS1zYW1wbGVzLWZyYW1ld29yay9jb21wb25lbnRzL25hdmlnYXRpb24tYS9uYXZpZ2F0aW9uLWEubGVzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ja3NvdXJjZS1zYW1wbGVzLWZyYW1ld29yay9jb21wb25lbnRzL25hdmlnYXRpb24tYi9uYXZpZ2F0aW9uLWIubGVzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ja3NvdXJjZS1zYW1wbGVzLWZyYW1ld29yay9jb21wb25lbnRzL2Zvb3Rlci1hL2Zvb3Rlci1hLmxlc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvY2tzb3VyY2Utc2FtcGxlcy1mcmFtZXdvcmsvY29tcG9uZW50cy9jb250ZW50L2NvbnRlbnQubGVzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ja3NvdXJjZS1zYW1wbGVzLWZyYW1ld29yay9jb21wb25lbnRzL2J1dHRvbi1hL2J1dHRvbi1hLmxlc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvY2tzb3VyY2Utc2FtcGxlcy1mcmFtZXdvcmsvY29tcG9uZW50cy9iYWxsb29uLWEvYmFsbG9vbi1hLmxlc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvY2tzb3VyY2Utc2FtcGxlcy1mcmFtZXdvcmsvY29tcG9uZW50cy9pY29uL2ljb24ubGVzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ja3NvdXJjZS1zYW1wbGVzLWZyYW1ld29yay9jb21wb25lbnRzL3N3aXRjaC9zd2l0Y2gubGVzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ja3NvdXJjZS1zYW1wbGVzLWZyYW1ld29yay9jb21wb25lbnRzL3RvZ2dsZXIvdG9nZ2xlci5sZXNzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2Nrc291cmNlLXNhbXBsZXMtZnJhbWV3b3JrL2NvbXBvbmVudHMvbW9kYWwvbW9kYWwubGVzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ja3NvdXJjZS1zYW1wbGVzLWZyYW1ld29yay9jb21wb25lbnRzL2Jhc2ljc2FtcGxlL2NvcmUubGVzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ja3NvdXJjZS1zYW1wbGVzLWZyYW1ld29yay9jb21wb25lbnRzL2Jhc2ljc2FtcGxlL2Fkam9pbmVkLmxlc3MiLCIuLi8uLi9zYW1wbGVzL2xlc3MvY3VzdG9tLmxlc3MiLCIuLi8uLi9zYW1wbGVzL3Rvb2xiYXJjb25maWd1cmF0b3IvbGVzcy90b29sYmFybW9kaWZpZXIubGVzcyIsIi4uLy4uL3NhbXBsZXMvdG9vbGJhcmNvbmZpZ3VyYXRvci9sZXNzL2Jhc2UubGVzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBc0RBLFFBSGlDO0VBeUNoQztJQUNDLHdCQUFBOzs7QUMxRkY7QUFBUztBQUFPO0FBQVM7QUFBWTtBQUFRO0FBQVE7QUFBUTtBQUFRO0FBQU07QUFBTTtBQUFLO0VBQ3JGLGNBQUE7O0FBR0Q7QUFBTTtFQUNMLFNBQUE7RUFDQSxVQUFBO0VBQ0Esd0JETitCLHVDQ00vQjtFQUNBLGdCQUFBO0VBQ0EsY0FBQTs7QUNIQSxZQUFZO0VBQ1gsVUFBQTs7QUFERCxZQUFZO0VBQ1gsVUFBQTs7QUFERCxZQUFZO0VBQ1gsVUFBQTs7QUFERCxZQUFZO0VBQ1gsVUFBQTs7QUFERCxZQUFZO0VBQ1gsVUFBQTs7QUFERCxZQUFZO0VBQ1gsVUFBQTs7QUFERCxZQUFZO0VBQ1gsVUFBQTs7QUFERCxZQUFZO0VBQ1gsVUFBQTs7QUFERCxZQUFZO0VBQ1gsVUFBQTs7QUFERCxZQUFZO0VBQ1gsV0FBQTs7QUY0Q0YsUUFIaUM7RUVqQ2hDO0VBS0MsWUFBWTtFQUFaLFlBQVk7RUFBWixZQUFZO0VBQVosWUFBWTtFQUFaLFlBQVk7RUFBWixZQUFZO0VBQVosWUFBWTtFQUFaLFlBQVk7RUFBWixZQUFZO0lBSlosV0FBQTs7O0FBYUYsQ0FBQztFQ3FSQyw4QkFBQTtFQUNBLDJCQUFBO0VBQ0Esc0JBQUE7RURyUkQsZ0JBQUE7RUFDQSxpQkFBQTtFQUNBLFdBQUE7O0FBSUEsQ0FEQSxxQkFDQztBQUFELGVBQUM7QUFBUSxDQURULHFCQUNVO0FBQUQsZUFBQztFQUNULFNBQVMsRUFBVDtFQUNBLGNBQUE7RUFDQSxnQkFBQTtFQUNBLGtCQUFBO0VBQ0EsWUFBQTtFQUNBLGNBQUE7RUFDQSxRQUFBO0VBQ0EsU0FBQTs7QUFLRCxDQURBLHFCQUNDO0FBQUQsZUFBQztFQUNBLFdBQUE7O0FBSUY7RUMyUEUsOEJBQUE7RUFDQSwyQkFBQTtFQUNBLHNCQUFBO0VEM1BELGlCQUFBO0VBQ0Esa0JBQUE7O0FBS0Msc0JBREQsRUFBQyxxQkFDQztFQUNBLGVBQUE7O0FBR0Qsc0JBTEQsRUFBQyxxQkFLQztFQUNBLGdCQUFBOztBRmpCSCxRQUhpQztFRTBCOUIsc0JBREQsRUFBQyxxQkFDQztJQUNBLGdCQUFBOztFQUdELHNCQUxELEVBQUMscUJBS0M7SUFDQSxpQkFBQTs7O0FFN0VKO0VBQ0MsaUJBQUE7RUFHQSxnQkFBQTs7QUFKRCxTQU1DO0VBQ0MsZ0JBQUE7O0FKMENGLFFBSGlDO0VBNkNqQyxTSXJGQztJQUlFLGtCQUFBOzs7QUFWSCxTQU1DLGVBT0M7RUFDQyxtQkFBQTs7QUNWSDtFQUNDLFlBQUE7RUFDQSxtQkFBQTtFQUNBLGtCQUFBO0VBQ0EsT0FBQTtFQUNBLFFBQUE7RUFDQSxNQUFBO0VBQ0EsVUFBQTtFQUNBLGdCQUFBOztBTHFDRCxRQUhpQztFQTZDakM7SUs1RUUsa0JBQUE7OztBQVhGLGFBY0M7RUFDQyxnQkFBQTtFQUNBLFNBQUE7RUFDQSxnQkFBQTs7QUFqQkYsYUFjQyxHQUtDO0FBbkJGLGFBY0MsR0FLSyxHQUFHO0VBQ04scUJBQUE7O0FMeUJILFFBSGlDO0VBNkNqQyxhS3pFQztJQVVFLFdBQUE7SUFDQSx1QkFBQTtJQUNBLG1CQUFBO0lBQ0EscUJBQUE7SUFDQSxXQUFBOztFQUVBLGFBaEJGLEdBZ0JHO0VBQVMsYUFoQlosR0FnQmE7SUFDVixhQUFBOzs7QUFLRCxhQXRCRixHQXFCRSxhQUNDO0VBQ0EsZ0JBQUE7O0FMUUosUUFIaUM7RUE2Q2pDLGFLekVDLEdBcUJFLGFBQ0M7SUFJQyxnQkFBQTs7O0FBSUYsYUE5QkYsR0FxQkUsYUFTQztFQUNBLGlCQUFBOztBTEFKLFFBSGlDO0VBNkNqQyxhS3pFQyxHQXFCRSxhQVNDO0lBSUMsa0JBQUE7OztBQU1GLGFBeENGLEdBdUNDLEdBQ0c7RUFDRCxpQkFBQTs7QUF2REosYUFjQyxHQXVDQyxHQUtDO0VMeENGLGVBQUE7RUFDQSxtQkFBQTtFQUNBLGlCQUFBO0VBQ0Esb0JBQUE7RUt1Q0csaUJBQUE7RUFDQSxXQUFBO0VBQ0EsV0FBQTtFQUNBLGlCQUFBO0VBQ0EscUJBQUE7RUFDQSx5QkFBQTs7QUFFQSxhQXJESCxHQXVDQyxHQUtDLEVBU0U7RUFDQSxlQUFBO0VBQ0EsV0FBQTs7QUFRSix5QkFBQztBQUFTLHlCQUFDO0VBQ1Ysc0JBQWtCLHFyQkFBbEI7O0FDcEZGO0VBQ0MsaUJBQUE7RUFDQSxnQkFBQTtFQUNBLGlCQUFBOztBTmdERCxRQUhpQztFQTZDakM7SU12RkUsa0JBQUE7SUFDQSxnQkFBQTtJQUdBLFVBQUE7OztBQVZGLGFBYUM7RUFDQyxVQUFBO0VBQ0EsZ0JBQUE7RUFDQSxTQUFBO0VBQ0EsaUJBQUE7O0FBakJGLGFBYUMsR0FNQztBQW5CRixhQWFDLEdBTUssR0FBRztFQUNOLHFCQUFBOztBTitCSCxRQUhpQztFQTZDakMsYU1oRkM7SUFXRSxjQUFBO0lBQ0EsV0FBQTtJQUNBLHFCQUFBOzs7QU55QkgsUUFIaUM7RUE2Q2pDLGFNaEZDLEdBZ0JDO0lBRUUsa0JBQUE7OztBQUdELGFBckJGLEdBZ0JDLEdBS0c7RUFDRCxpQkFBQTs7QU5nQkosUUFIaUM7RUE2Q2pDLGFNaEZDLEdBZ0JDLEdBS0c7SUFJQSxjQUFBOzs7QUF0Q0wsYUFhQyxHQWdCQyxHQWFDO0VId1FELDhCQUFBO0VBQ0EsMkJBQUE7RUFDQSxzQkFBQTtFR3hRRSx5QkFBQTtFQUNBLHFCQUFBO0VBQ0EsYUFBQTs7QU5LSixRQUhpQztFQTZDakMsYU1oRkMsR0FnQkMsR0FhQztJQU9FLFdBQUE7SUhxT0gsd0JBQUE7SUFBaUMsb0NBQUE7SUFDakMscUJBQUE7SUFBOEIsNkJBQUE7SUFDOUIsZ0JBQUE7SUFBeUIsNEJBQUE7OztBSXhSM0I7RVB3QkMsZUFBQTtFQUNBLG9CQUFBO0VBQ0EsbUJBQUE7RUFDQSxvQkFBQTtFT3hCQSxtQkFBQTtFQUNBLHNCQUFBO0VBQ0EsZ0JBQUE7RUFDQSxjQUFBOztBQU5ELFNQNEVDO0VBQ0MsY0FBQTtFQUNBLHFCQUFBO0VBRUEsaUNBQUE7O0FBRUEsU0FORCxFQU1FO0VBQ0EsY0FBQTs7QU9uRkgsU0FRQztFQUNDLFNBQUE7RUFDQSxxQkFBQTtFQUNBLGtCQUFBOztBQ1hGO0VSd0JDLGVBQUE7RUFDQSxtQkFBQTtFQUNBLG1CQUFBO0VBQ0Esb0JBQUE7RVF6QkEsZ0JBQUE7RUFDQSxrQkFBQTtFQUNBLHFCQUFBOztBQUpELFFBU0M7RUFDQyxnQkFBQTs7QUFWRixRQWFDO0FBYkQsUUFhSztBQWJMLFFBYVM7QUFiVCxRQWFjO0FBYmQsUUFhMEIsU0FBUSxJQUFJO0FBYnRDLFFBYXdEO0VBQ3RELGlCQUFBOztBQWRGLFFBaUJDO0FBakJELFFBaUJPO0VMcVFMLDBCQUFBO0VBQWlDLG9DQUFBO0VBQ2pDLHVCQUFBO0VBQThCLDZCQUFBO0VBQzlCLGtCQUFBO0VBQXlCLDRCQUFBO0VLclF6QixnQkFBQTs7QUFuQkYsUUFzQkM7QUF0QkQsUUFzQk07QUF0Qk4sUUFzQlk7QUF0QlosUUFzQmlCO0VBQ2YsbUJBQUE7O0FBdkJGLFFBMEJDO0FBMUJELFFBMEJhO0VBQ1gsZ0JBQUE7RUFDQSw4QkFBQTtFQUNBLHFCQUFBOztBQTdCRixRQW9DQyxFUndDQTtBUTVFRCxRQW9DSSxHUndDSDtBUTVFRCxRQW9DUSxHUndDUDtBUTVFRCxRQW9DWSxXUndDWDtBUTVFRCxRQW9Dd0IsR1J3Q3ZCO0FRNUVELFFBb0M0QixHUndDM0I7QVE1RUQsUUFvQ2dDLEdSd0MvQjtBUTVFRCxRQW9Db0MsR1J3Q25DO0FRNUVELFFBb0N3QyxHUndDdkM7RUFDQyxjQUFBO0VBQ0EscUJBQUE7RUFFQSxpQ0FBQTs7QUFFQSxRUTlDRCxFUndDQSxFQU1FO0FBQUQsUVE5Q0UsR1J3Q0gsRUFNRTtBQUFELFFROUNNLEdSd0NQLEVBTUU7QUFBRCxRUTlDVSxXUndDWCxFQU1FO0FBQUQsUVE5Q3NCLEdSd0N2QixFQU1FO0FBQUQsUVE5QzBCLEdSd0MzQixFQU1FO0FBQUQsUVE5QzhCLEdSd0MvQixFQU1FO0FBQUQsUVE5Q2tDLEdSd0NuQyxFQU1FO0FBQUQsUVE5Q3NDLEdSd0N2QyxFQU1FO0VBQ0EsY0FBQTs7QVFuRkgsUUF3Q0M7QUF4Q0QsUUF3Q0s7QUF4Q0wsUUF3Q1M7QUF4Q1QsUUF3Q2E7QUF4Q2IsUUF3Q2lCO0VBQ2YsV0FBQTtFQUNBLGdCQUFBOztBQTFDRixRQXdDQyxHQUtDO0FBN0NGLFFBd0NLLEdBS0g7QUE3Q0YsUUF3Q1MsR0FLUDtBQTdDRixRQXdDYSxHQUtYO0FBN0NGLFFBd0NpQixHQUtmO0FBN0NGLFFBd0NDLEdBS087QUE3Q1IsUUF3Q0ssR0FLRztBQTdDUixRQXdDUyxHQUtEO0FBN0NSLFFBd0NhLEdBS0w7QUE3Q1IsUUF3Q2lCLEdBS1Q7RUFDTCxrQkFBQTs7QUE5Q0gsUUF3Q0MsR0FVQyxFQUFDO0FBbERILFFBd0NLLEdBVUgsRUFBQztBQWxESCxRQXdDUyxHQVVQLEVBQUM7QUFsREgsUUF3Q2EsR0FVWCxFQUFDO0FBbERILFFBd0NpQixHQVVmLEVBQUM7RUFDQSxnQkFBQTtFQUNBLHNCQUFBO0VBQ0EsVUFBQTtFQUNBLFNBQUE7O0FBR0QsUUFqQkQsR0FpQkUsTUFDQSxFQUFDO0FBREYsUUFqQkcsR0FpQkYsTUFDQSxFQUFDO0FBREYsUUFqQk8sR0FpQk4sTUFDQSxFQUFDO0FBREYsUUFqQlcsR0FpQlYsTUFDQSxFQUFDO0FBREYsUUFqQmUsR0FpQmQsTUFDQSxFQUFDO0VBQ0EsVUFBQTs7QUFJRixRQXZCRCxHQXVCRSxPQUNBO0FBREQsUUF2QkcsR0F1QkYsT0FDQTtBQURELFFBdkJPLEdBdUJOLE9BQ0E7QUFERCxRQXZCVyxHQXVCVixPQUNBO0FBREQsUUF2QmUsR0F1QmQsT0FDQTtFTDhERCwwREFBQTtFQUNBLHVEQUFBO0VBQ0EscURBQUE7RUFDQSxrREFBQTtFSy9ERSxVQUFBOztBQWxFSixRQXVFQztBQXZFRCxRQXVFUTtBQXZFUixRQXVFZ0IsU0FBUSxJQUFJO0VMK00xQiwwQkFBQTtFQUFpQyxvQ0FBQTtFQUNqQyx1QkFBQTtFQUE4Qiw2QkFBQTtFQUM5QixrQkFBQTtFQUF5Qiw0QkFBQTtFQW1CekIsdURBQUE7RUFDQSxvREFBQTtFQUNBLCtDQUFBO0VLbE9BLGFBQUE7RUFDQSxjQUFBO0VBRUEseUJBQUE7RUFDQSxrQkFBQTs7QUFFQSxRQVZELE1BVUU7QUFBRCxRQVZNLE9BVUw7QUFBRCxRQVZjLFNBQVEsSUFBSSxnQkFVekI7RUFDQSxxQkFBQTtFQUNBLFVBQUE7RUx3TkQsd0VBQUE7RUFDQSxxRUFBQTtFQUNBLGdFQUFBOztBSzdTRixRQThGQztFQUNDLDhCQUFBO0VBQ0EsZUFBQTs7QUFoR0YsUUFtR0M7RUFDQyxrQkFBQTtFQUNBLDZCUm5HMkMsd0JRbUczQztFUjdFRCxlQUFBO0VBQ0EsZUFBQTtFQUNBLG1CQUFBO0VBQ0EsbUJBQUE7O0FRM0JELFFBeUdDO0VBQ0Msa0JBQUE7O0FBMUdGLFFBNkdDO0VSckZBLGVBQUE7RUFDQSxrQkFBQTtFQUNBLG1CQUFBO0VBQ0Esb0JBQUE7RVFvRkMsbUJBQUE7O0FBL0dGLFFBa0hDO0VSMUZBLGlCQUFBO0VBQ0EsaUJBQUE7RUFDQSxvQkFBQTtFQUNBLG9CQUFBO0VReUZDLGlCQUFBOztBQXBIRixRQXVIQztFUi9GQSxlQUFBO0VBQ0EsaUJBQUE7RUFDQSxtQkFBQTtFQUNBLG1CQUFBO0VROEZDLGdCQUFBO0VBQ0Esa0JBQUE7O0FBMUhGLFFBNkhDO0VSckdBLGlCQUFBO0VBQ0EsaUJBQUE7RUFDQSxvQkFBQTtFQUNBLG9CQUFBO0VRb0dDLGdCQUFBO0VBQ0Esa0JBQUE7O0FBaElGLFFBbUlDO0VSM0dBLGlCQUFBO0VBQ0EsaUJBQUE7RUFDQSxvQkFBQTtFQUNBLG9CQUFBO0VRMEdDLGdCQUFBO0VBQ0Esa0JBQUE7O0FBdElGLFFBeUlDO0VBQ0MsU0FBQTtFQUNBLDZCQUFBO0VBQ0EsZUFBQTs7QUFJQSxRQURELE1BQ0U7RUFDQSxhQUFBO0VBQ0Esa0JBQUE7O0FBR0QsUUFORCxNQU1FO0VMaURELDBCQUFBO0VBQ0EsdUJBQUE7RUFDQSxrQkFBQTs7QUt4TUYsUUE0SkM7RVJwSUEsZUFBQTtFQUNBLGtCQUFBO0VBQ0EsbUJBQUE7RUFDQSxvQkFBQTtFUW1JQyxvQlI3SjhCLHVDUTZKOUI7RUFDQSxnQkFBQTtFTDRJQSx1REFBQTtFQUNBLG9EQUFBO0VBQ0EsK0NBQUE7O0FLN1NGLFFBdUtDLEVBQ0M7RUFDQyxzQkFBQTs7QUF6S0gsUUF1S0MsRUFLQztFQUNDLGNBQUE7O0FBN0tILFFBaUxDO0VBQ0MsVUFBQTtFQUNBLFNBQUE7RUFFQSxXQUFBO0VBQ0EsY0FBQTtFQUNBLGdCQUFBOztBQXZMRixRQTBMQztBQTFMRCxRQTBMTTtFUmxLTCxrQkFBQTtFQUNBLG1CQUFBO0VBQ0EsbUJBQUE7RUFDQSxvQkFBQTtFUWtLQyxnSkFBQTs7QUE3TEYsUUEwTEMsSUFLQztBQS9MRixRQTBMTSxLQUtKO0VBQ0MsU0FBQTs7QUFoTUgsUUFxTUMsSUFBSTtFQUNILGVBQUE7RUFDQSxjQUFBOztBQXZNRixRQTBNQztFQUNDLFdBQUE7O0FBM01GLFFBOE1DLEdBRUM7QUFoTkYsUUE4TUssR0FFSDtBQWhORixRQThNQyxHQUVLO0FBaE5OLFFBOE1LLEdBRUM7RUFDSCxnQkFBQTs7QUFqTkgsUUE4TUMsR0FNQztBQXBORixRQThNSyxHQU1IO0VSNUxELGVBQUE7RUFDQSxtQkFBQTtFQUNBLG9CQUFBO0VBQ0Esb0JBQUE7O0FRM0JELFFBME5DLFNBQVEsSUFBSTtFQUNYLFdBQUE7O0FBM05GLFFBOE5DLElBQUc7RUFDRix1QkFBQTtFQUNBLGFBQUE7RUFDQSxxQkFBQTs7O0FBR0EsUUFORCxJQUFHLEtBTUQ7RUFDQSxTQUFTLE1BQVQ7RUFDQSxpQkFBQTs7QUNqT0QsSUFERCxFQUNFO0FBQUQsSUFERSxPQUNEO0FBQUQsSUFEVSxNQUNUO0VOaVJELDBCQUFBO0VBQWlDLG9DQUFBO0VBQ2pDLHVCQUFBO0VBQThCLDZCQUFBO0VBQzlCLGtCQUFBO0VBQXlCLDRCQUFBO0VIaFExQixlQUFBO0VBQ0EsbUJBQUE7RUFDQSxtQkFBQTtFQUNBLG9CQUFBO0VTbkJFLFlBQUE7RUFDQSxpQkFBQTtFQUNBLGdCQUFBO0VBQ0EsZ0JBQUE7RUFDQSxjQUFBO0VBQ0EsbUJBQUE7RUFDQSxxQkFBQTtFQUNBLHFCQUFBO0VBQ0EsZUFBQTtFQUNBLFNBQUE7RUFDQSxzQkFBQTtFQUlBLGFBQUE7RUFHQSx1QkFBQTs7QUFFQSxJQXZCRixFQUNFLFNBc0JDO0FBQUQsSUF2QkMsT0FDRCxTQXNCQztBQUFELElBdkJTLE1BQ1QsU0FzQkM7RUFDQSxrQkFBQTs7QUFHRCxJQTNCRixFQUNFLFNBMEJDO0FBQUQsSUEzQkMsT0FDRCxTQTBCQztBQUFELElBM0JTLE1BQ1QsU0EwQkM7RUFDQSxtQkFBQTs7QUFvQkQsSUFoREYsRUFDRSxTQStDQztBQUFELElBaERDLE9BQ0QsU0ErQ0M7QUFBRCxJQWhEUyxNQUNULFNBK0NDO0VOa09GLDRCQUFBO0VBQWlDLG9DQUFBO0VBQ2pDLHlCQUFBO0VBQThCLDZCQUFBO0VBQzlCLG9CQUFBO0VBQXlCLDRCQUFBO0VNblB2QixXQUFBO0VBQ0EsVUFBQTtFQUNBLG1CQUFBO0VBQ0EsZ0JBQUE7RUFDQSxrQkFBQTtFQUNBLGtCQUFBOztBQUVBLElBeENILEVBQ0UsU0ErQ0MsaUJBUkM7QUFBRCxJQXhDQSxPQUNELFNBK0NDLGlCQVJDO0FBQUQsSUF4Q1EsTUFDVCxTQStDQyxpQkFSQztFQUNBLGtCQUFBO0VBQ0EsU0FBQTtFQUNBLFFBQUE7RUFDQSxxQkFBQTs7QVRHTCxRQUhpQztFQTZDakMsSVN6RkMsRUFDRSxTQW1EQztFVHFDSixJU3pGSSxPQUNELFNBbURDO0VUcUNKLElTekZZLE1BQ1QsU0FtREM7SU44TkYsNEJBQUE7SUFBaUMsb0NBQUE7SUFDakMseUJBQUE7SUFBOEIsNkJBQUE7SUFDOUIsb0JBQUE7SUFBeUIsNEJBQUE7SU1uUHZCLFdBQUE7SUFDQSxVQUFBO0lBQ0EsbUJBQUE7SUFDQSxnQkFBQTtJQUNBLGtCQUFBO0lBQ0Esa0JBQUE7O0VBRUEsSUF4Q0gsRUFDRSxTQW1EQywwQkFaQztFQUFELElBeENBLE9BQ0QsU0FtREMsMEJBWkM7RUFBRCxJQXhDUSxNQUNULFNBbURDLDBCQVpDO0lBQ0Esa0JBQUE7SUFDQSxTQUFBO0lBQ0EsUUFBQTtJQUNBLHFCQUFBOztFQUpELElBeENILEVBQ0UsU0FtREMsMEJBWkM7RUFBRCxJQXhDQSxPQUNELFNBbURDLDBCQVpDO0VBQUQsSUF4Q1EsTUFDVCxTQW1EQywwQkFaQztJQUNBLGtCQUFBO0lBQ0EsU0FBQTtJQUNBLFFBQUE7SUFDQSxxQkFBQTs7O0FBY0YsSUExREYsRUFDRSxTQXlEQztBQUFELElBMURDLE9BQ0QsU0F5REM7QUFBRCxJQTFEUyxNQUNULFNBeURDO0FBQ0QsSUEzREYsRUFDRSxTQTBEQztBQUFELElBM0RDLE9BQ0QsU0EwREM7QUFBRCxJQTNEUyxNQUNULFNBMERDO0VBQ0EsV0FBQTtFQUNBLG1CQUFBOztBQUdELElBaEVGLEVBQ0UsU0ErREM7QUFBRCxJQWhFQyxPQUNELFNBK0RDO0FBQUQsSUFoRVMsTUFDVCxTQStEQztFQUNBLHFCQUFBO0VBQ0EsVUFBQTtFTnFPRix5RUFBQTtFQUNBLHNFQUFBO0VBQ0EsaUVBQUE7O0FNNU5BLElBN0VELEVBNkVFO0FBQUQsSUE3RUUsT0E2RUQ7QUFBRCxJQTdFVSxNQTZFVDtFQUNBLG1CQUFBOztBQUVBLElBaEZGLEVBNkVFLGNBR0M7QUFBRCxJQWhGQyxPQTZFRCxjQUdDO0FBQUQsSUFoRlMsTUE2RVQsY0FHQztBQUNELElBakZGLEVBNkVFLGNBSUM7QUFBRCxJQWpGQyxPQTZFRCxjQUlDO0FBQUQsSUFqRlMsTUE2RVQsY0FJQztFQUNBLGNBQUE7RUFDQSxtQkFBQTs7QUFJRixJQXZGRCxFQXVGRTtBQUFELElBdkZFLE9BdUZEO0FBQUQsSUF2RlUsTUF1RlQ7QUFBRCxJQXZGRCxFSGlERyxhQXhDSCxHQWdCQyxHQWFDLEVBV0U7QUdzQ0gsSUF2RkUsT0hpREEsYUF4Q0gsR0FnQkMsR0FhQyxFQVdFO0FHc0NILElBdkZVLE1IaURSLGFBeENILEdBZ0JDLEdBYUMsRUFXRTtFR3VDRixXQUFBO0VBQ0EsbUJBQUE7O0FBRUEsSUEzRkYsRUF1RkUsb0JBSUM7QUFBRCxJQTNGQyxPQXVGRCxvQkFJQztBQUFELElBM0ZTLE1BdUZULG9CQUlDO0FBQ0QsSUE1RkYsRUF1RkUsb0JBS0M7QUFBRCxJQTVGQyxPQXVGRCxvQkFLQztBQUFELElBNUZTLE1BdUZULG9CQUtDO0FBREQsSUEzRkYsRUhpREcsYUF4Q0gsR0FnQkMsR0FhQyxFQVdFLE1HMENEO0FBQUQsSUEzRkMsT0hpREEsYUF4Q0gsR0FnQkMsR0FhQyxFQVdFLE1HMENEO0FBQUQsSUEzRlMsTUhpRFIsYUF4Q0gsR0FnQkMsR0FhQyxFQVdFLE1HMENEO0FBQ0QsSUE1RkYsRUhpREcsYUF4Q0gsR0FnQkMsR0FhQyxFQVdFLE1HMkNEO0FBQUQsSUE1RkMsT0hpREEsYUF4Q0gsR0FnQkMsR0FhQyxFQVdFLE1HMkNEO0FBQUQsSUE1RlMsTUhpRFIsYUF4Q0gsR0FnQkMsR0FhQyxFQVdFLE1HMkNEO0VBQ0EsV0FBQTtFQUNBLG1CQUFBOztBQ2hHSjtFVnNCQyxlQUFBO0VBQ0Esa0JBQUE7RUFDQSxtQkFBQTtFQUNBLG9CQUFBO0VHMlBDLDBCQUFBO0VBQWlDLG9DQUFBO0VBQ2pDLHVCQUFBO0VBQThCLDZCQUFBO0VBQzlCLGtCQUFBO0VBQXlCLDRCQUFBO0VPblIxQixnQ0FBQTtFQUVBLG1CQUFBO0VBQ0EscUJBQUE7RUFDQSxtQkFBQTtFQUNBLHdCQUFBO0VBQ0EsZ0JBQUE7RUFDQSxrQkFBQTtFQUNBLGFBQUE7RUFDQSxvQkFBQTtFQUNBLGNBQUE7O0FBRUEsVUFBQztFQUNBLGNBQUE7O0FBR0QsVUFBQztFQUNBLFNBQVMsRUFBVDtFQUNBLFFBQUE7RUFDQSxTQUFBO0VBQ0EsbUJBQUE7RUFDQSxrQkFBQTs7QUFNRCxhQUFDO0FBQUQsYUFBQztFQUNBLFVBQUE7RUFDQSw4QkFBQTtFQUNBLHlEQUFBOztBQU1ELGFBQUM7QUFBRCxhQUFDO0VBQ0EsYUFBQTtFQUNBLDhCQUFBO0VBQ0EseURBQUE7O0FBTUQsYUFBQztBQUFELGFBQUM7RUFDQSxVQUFBOztBQU1ELGFBQUM7QUFBRCxhQUFDO0VBQ0EsV0FBQTs7QUN2REYsY0FBYztBQUNkLGVBQWU7RUFDZCxTQUFTLEVBQVQ7RUFDQSxxQkFBQTtFQUNBLFdBQUE7RUFDQSxZQUFBO0VBQ0Esc0JBQUE7RUFDQSw0QkFBQTs7QUFHRCxjQUFjO0VBQ2Isa0JBQUE7O0FBR0QsZUFBZTtFQUNkLGlCQUFBOztBQUlBLGNBQUM7QUFBUyxjQUFDO0VBQ1Ysc0JBQWtCLDZjQUFsQjs7QUFLRCxtQkFBQztBQUFTLG1CQUFDO0VBQ1Ysc0JBQWtCLDZpQkFBbEI7O0FBS0QsV0FBQztBQUFTLFdBQUM7RUFDVixzQkFBa0IsNmlCQUFsQjs7QUM1QkYsSUFBSyxRQUVKO0VBQ0Msc0JBQUE7O0FBSEYsSUFBSyxRQU1KLE1BQUs7RUFDSixnQkFBQTtFQUNBLHFCQUFBOztBQVJGLElBQUssUUFXSjtFQUNDLHlCQUFBO0VBQ0EsMEJBQUE7O0FBRUEsSUFmRyxRQVdKLE1BSUU7RUFDQSxXQUFBOztBQUdELElBbkJHLFFBV0osTUFRRTtFQUNBLFlBQUE7O0FBcEJILElBQUssUUF3Qko7RUFDQyxhQUFBOztBQUlGO0VaWkMsZUFBQTtFQUNBLG1CQUFBO0VBQ0EsbUJBQUE7RUFDQSxvQkFBQTtFWVdBLGlCQUFBO0VBQ0EseUJBQUE7RUFDQSxnQkFBQTtFQUNBLHFCQUFBO0VBQ0Esc0JBQUE7RUFDQSxXQUFBO0VUMk9DLDBCQUFBO0VBQWlDLG9DQUFBO0VBQ2pDLHVCQUFBO0VBQThCLDZCQUFBO0VBQzlCLGtCQUFBO0VBQXlCLDRCQUFBO0VTM08xQixrQkFBQTs7QUFURCxPQVdDLE1BQUs7RUFDSixhQUFBOztBQVpGLE9BZUM7RUFDQyxrQkFBQTtFQUNBLFVBQUE7RUFDQSxXQUFBO0VBQ0EsZUFBQTtFQUNBLGlCQUFBOztBQUVBLE9BUEQsTUFPRTtFQUNBLDBCQUFBOztBQXZCSCxPQTJCQztFQUNDLFdBQUE7RUFDQSxzQkFBQTtFQUNBLGFBQUE7RUFDQSxjQUFBO0VBQ0EsWUFBQTtFQUNBLGdCQUFBO0VUaU5BLDRCQUFBO0VBQWlDLG9DQUFBO0VBQ2pDLHlCQUFBO0VBQThCLDZCQUFBO0VBQzlCLG9CQUFBO0VBQXlCLDRCQUFBOztBU3BQM0IsT0EyQkMsY0FTQztFQUNDLGdCQUFBO0VBQ0Esa0JBQUE7RUFDQSxjQUFBO0VBQ0EsYUFBQTtFQUNBLFlBQUE7RUFDQSxtQkFBQTtFVHdNRCw0QkFBQTtFQUFpQyxvQ0FBQTtFQUNqQyx5QkFBQTtFQUE4Qiw2QkFBQTtFQUM5QixvQkFBQTtFQUF5Qiw0QkFBQTs7QVN2TXhCLE9BbEJGLGNBU0MsU0FTRTtFQUNBLFNBQVMsRUFBVDtFQUNBLGNBQUE7RUFDQSxrQkFBQTtFQUNBLE1BQUE7RUFDQSxRQUFBO0VBQ0EsV0FBQTtFQUNBLE9BQUE7RUFFQSx5QkFBQTtFVHNLRix3Q0FBQTtFQUNBLG9DQUFBO0VBQ0EsZ0NBQUE7RUFLQSx5Q0FBQTtFQUE4QyxvQ0FBQTtFQUM5QyxxQ0FBQTtFQUEwQyw2QkFBQTtFQUMxQyxpQ0FBQTtFQUFzQyw0QkFBQTs7QVN2S3ZDLE9BQUMsTUFDQSxjQUFjLFNBQVE7RUFDckIsbUJBQUE7O0FBaEVILE9Bb0VDLE1BQUssY0FBZ0IsUUFFcEIsZ0JBQWdCO0VBQ2YsaUJBQUE7O0FBdkVILE9Bb0VDLE1BQUssY0FBZ0IsUUFTcEIsUUFBTztFQUNOLHNCQUFBO0VBQ0Esc0JBQUE7O0FBL0VILE9BbUZDLE1BQUssY0FBZ0IsUUFBUyxRQUFPO0VBQ3BDLHFCQUFBO0VBQ0EscUJBQUE7O0FDekhGO0VWazNCRSx5QkFBQTtFQUNBLHNCQUFBO0VBQ0EscUJBQUE7RUFDQSxpQkFBQTs7QVVyM0JGLFFBR0M7RUFDQyxlQUFBOztBQUpGLFFBTUM7RUFDQyxnQkFBQTs7QUFQRixRQVVDO0VBQ0MsYUFBQTs7QUFHRCxRQUFDLFVBQ0E7RUFDQyxhQUFBOztBQUZGLFFBQUMsVUFLQTtFQUNDLGdCQUFBOztBQUtIO0VBQ0MsZ0JBQUE7O0FBRUEsa0JBQUM7RUFDQSxTQUFBOztBQU1ELHNCQUFDO0FBQUQsdUJBQUM7QUFBUyxzQkFBQztBQUFELHVCQUFDO0VBQ1Ysc0JBQWtCLHlzQkFBbEI7O0FBSUEsc0JBREEsV0FDQztBQUFELHVCQURBLFdBQ0M7QUFBUyxzQkFEVixXQUNXO0FBQUQsdUJBRFYsV0FDVztFQUNWLHNCQUFrQixxdEJBQWxCOztBQU1GLHNCQUFDO0FBQ0Qsc0JBQUM7RUFDQSw2QkFBQTs7QUFLRCx1QkFBQztBQUNELHVCQUFDO0VBQ0EsZ0NBQUE7O0FDdERGO0VBQ0MsYUFBQTtFQUNBLGtCQUFBO0VBQ0EsdUJBQUE7RUFDQSxnQkFBQTtFWDRTQyw4QkFBQTtFQUNBLDJCQUFBO0VBQ0Esc0JBQUE7RVd6U0QscUJBQUE7RUFDQSxtQkFBQTtFWGd2QkMsd0NBQUE7RUFDQSxxQ0FBQTtFQUNBLG1DQUFBO0VBQ0Esb0NBQUE7RUFDQSxnQ0FBQTs7QVdqdkJELE1BQUM7RVh1UUEsNEJBQUE7RUFBaUMsb0NBQUE7RUFDakMseUJBQUE7RUFBOEIsNkJBQUE7RUFDOUIsb0JBQUE7RUFBeUIsNEJBQUE7RVd2UXpCLGVBQUE7RUFDQSxZQUFBO0VBQ0EsV0FBQTtFQUNBLGtCQUFBO0VBQ0EsU0FBQTtFQUNBLFdBQUE7RUFDQSxlQUFBO0VBQ0Esa0JBQUE7RUFDQSxpQkFBQTtFQUNBLG1CQUFBOztBQ3pCRixJQUFLO0FBQ0wsTUFBTztBQUNQLGFBQWM7QUFDZCxNQUFPO0VBQ04sZ0JBQUE7O0FBSUQ7RUFDQyxnQkFBQTs7QUFHRDtFQUNDLDZCQUFBOztBQ1hBLFNBQUM7RUFDQSx5QkFBQTtFQUNBLFdBQUE7O0FBRkQsU0FBQyxJQUlBLFNBQ0M7QUFMRixTQUFDLElBSUEsU0FDSztBQUxOLFNBQUMsSUFJQSxTQUNTO0FBTFYsU0FBQyxJQUlBLFNBQ2E7QUFMZCxTQUFDLElBSUEsU0FDaUI7RUFDZixXQUFBOztBQU5ILFNBQUMsSUFJQSxTQUtDO0VoQllGLGVBQUE7RUFDQSxtQkFBQTtFQUNBLG1CQUFBO0VBQ0Esb0JBQUE7RWdCYkcsZ0JBQUE7O0FBWEgsU0FBQyxJQUlBLFNBS0MsRUFJQztFQUNDLHFCQUFBO0VBQ0EsOEJBQUE7RUFDQSxjQUFBOztBQUVBLFNBbEJILElBSUEsU0FLQyxFQUlDLEVBS0U7RUFDQSxjQUFBOztBQW5CTCxTQUFDLElBSUEsU0FvQkM7RUFDQyxXQUFBOztBQXpCSCxTQUFDLElBSUEsU0F3QkM7RUFDQyxXQUFBOztBQTdCSCxTQUFDLElBSUEsU0E0QkM7RUFDQyxrQkFBQTtFQUNBLGNBQUE7O0FBS0gsU0FBQztFQUNBLGtCQUFBOztBQUVBLFNBSEEsT0FHQztFQUNBLFdBQUE7RUFDQSxTQUFTLEVBQVQ7RUFDQSxtQkFBQTtFQUNBLGtCQUFBO0VBQ0EsTUFBQTtFQUNBLE9BQUE7RUFDQSxRQUFBO0VBQ0EsV0FBQTs7QUN4REgsSUFBSztBQUNMLE1BQU87QUFDUCxhQUFjO0FBQ2QsTUFBTztFQUNOLGlCQUFBOztBQUdELElBQUssZ0JBQWU7RUFDbkIsZUFBQTs7QUFHRDtFQUNDLG1CQUFBO0VBQ0EsWUFBQTtFQUNBLGlCQUFBOztBQUhELE9BTUM7RUFFQyxrQkFBQTtFQUNBLFVBQUE7RUFDQSxVQUFBO0VBQ0EsbUJBQUE7RUFHQSxtQkFBQTtFQUNBLDRCQUFBOztBQUVBLE9BWEQsV0FXRTtFQUNBLHlEQUFBOztBQUtILFFBQVM7RUFDUixnQkFBQTtFQUNBLFNBQUE7RUFDQSx3QkFBQTs7QUFFQSxRQUxRLG1CQUtQO0VBQ0EsWUFBQTs7QUFLRixLQUFNO0VBQ0wsZ0JBQUE7RUFDQSxjQUFBO0VBQ0EsMEJBQUE7O0FBR0QsS0FBTSxjQUFhO0VBQ2xCLGFBQUE7O0FBSUEsUUFEUSxjQUNQO0VBQ0EsYUFBQTs7QUFGRixRQUFTLGNBS1I7RUFDQyxhQUFBOztBQUlGLFFBQ0M7RUFDQyxpQkFBQTs7QUFJRjtFQUNDLGlCQUFBOztBQURELFNBR0M7RUFDQyxXQUFBO0VBQ0EsaUJBQUE7O0FBTEYsU0FHQyxNQUlDO0VBQ0MsZ0JBQUE7O0FBRUEsU0FQRixNQUlDLFNBR0U7RUFDQSx1QkFBQTtFQUNBLFdBQUE7O0FBRkQsU0FQRixNQUlDLFNBR0UsTUFJQTtFQUNDLDBCQUFBOztBQWZMLFNBR0MsTUFpQkM7RUFDQyxXQUFBO0VBQ0EsYUFBQTs7QUFHRCxTQXRCRCxNQXNCRTtFQUNBLGdCQUFBOztBQUtIO0VBQ0MsZ0JBQUE7RUFDQSxTQUFBO0VBQ0EsVUFBQTtFQUNBLHdCQUFBOztBQUVBLHVCQUFDO0VBQ0EsWUFBQTtFQUNBLFVBQUE7O0FBS0Y7RUFDQyxpQkFBQTs7QUFERCxNQUdDLElBQUc7RUFDRixpQkFBQTs7QUFKRixNQU9DO0VBQ0MsaUJBQUE7O0FBUkYsTUFPQyxjQUdDO0VBQ0MsaUJBQUE7O0FBWEgsTUFPQyxjQU9DO0VBRUMsa0JBQUE7O0FBaEJILE1Bb0JDO0VBQ0Msa0JBQUE7RUFDQSxTQUFBO0VBRUEsU0FBQTtFQUNBLGtCQUFBOztBakJ0RkYsUUFIaUM7RUE2Q2pDLE1pQnVDQztJQVVFLFVBQUE7SUFDQSxpQkFBQTtJQUVBLFVBQUE7SUFDQSxtQkFBQTs7RUFFQSxNQWhCRixXQWdCRztJQUNBLFVBQUE7SUFDQSxXQUFBOzs7QWpCbkdKLFFBSGlDO0VBNkNqQyxNaUJ1Q0M7SUF3QkUsYUFBQTs7O0FDOUlILFFBQVM7RUFDUixvQkFBQTtFZm0yQkMseUJBQUE7RUFDQSxzQkFBQTtFQUNBLHFCQUFBO0VBQ0EsaUJBQUE7RWVwMkJELGVBQUE7O0FBSUQsb0JBQXFCO0VmNmVsQixPQUFBO0VBQVMseUJBQUE7RUFDVixvQkFBQTtFQUNBLGlCQUFBO0VBQ0EsWUFBQTs7QWU1ZUYsWUFBWTtFQUNYLGtCQUFBO0Vmd2VFLE9BQUE7RUFBUywwQkFBQTtFQUNWLGtCQUFBO0VBQ0EsZUFBQTtFQUNBLFVBQUE7O0FldGVELFlBTlcsT0FNVjtFQUNBLFNBQVMsRUFBVDtFQUNBLGNBQUE7RUFDQSxrQkFBQTtFQUNBLE1BQUE7RUFDQSxVQUFBO0VBQ0EsV0FBQTtFQUNBLE9BQUE7RWZnUEEsMEJBQUE7RUFBaUMsb0NBQUE7RUFDakMsdUJBQUE7RUFBOEIsNkJBQUE7RUFDOUIsa0JBQUE7RUFBeUIsNEJBQUE7RUFtQnpCLDRDQUFBO0VBQ0EseUNBQUE7RUFDQSxvQ0FBQTs7QWVwUkYsWUFBWSxPQWtCWDtFZmdRQyx3QkFBQTtFQUNBLHFCQUFBO0VBQ0EsZ0JBQUE7RWVoUUEscUJBQUE7O0FBcEJGLFlBQVksT0F1Qlg7QUF2QkQsWUFBWSxPQXdCWDtFQUNDLGtCQUFBO0VBQ0EsVUFBQTs7QUExQkYsWUFBWSxPQTZCWDtFZnFQQyx3QkFBQTtFQUNBLHFCQUFBO0VBQ0EsZ0JBQUE7O0FlbFBGO0VmdXpCRSx5QkFBQTtFQUNBLHNCQUFBO0VBQ0EscUJBQUE7RUFDQSxpQkFBQTs7QWV2ekJGO0VBQ0MsY0FBQTtFQUNBLG9CQUFBO0VBQ0EsZ0JBQUE7RUFDQSxnQkFBQTs7QUFHQyxRQURELE9BQU0sU0FDSjtFQUNBLGVBQUE7RUFFQSxxQkFBQTtFQUNBLGdCQUFBO0VBQ0EsVUFBQTtFQUNBLHlCQUFBOztBQUdELFFBVkQsT0FBTSxTQVVKO0VBQ0EsYUFBQTs7QUFHRCxRQWRELE9BQU0sU0FjSjtFQUNBLFdBQUE7RUFDQSxpQkFBQTs7QUFHRCxRQW5CRCxPQUFNLFNBbUJKO0VBQ0EsWUFBQTtFQUNBLGdCQUFBOztBQTNCSCxRQU1DLE9BQU0sU0F3Qkw7RUFDQyxjQUFBOztBQU1ILGdCQUFnQjtBQUNoQixnQkFBZ0I7QUFDaEIsc0JBQXNCO0VBQ3JCLGFBQUE7O0FBR0QsZ0JBQWlCO0FBQ2pCLFFBQVMsT0FBTTtBQUNmLGdCQUFpQixTQUFRLFdBQVc7RUFDbkMsYUFBQTs7QUFHRCxHQUFHO0VBQ0YsVUFBQTtFQUNBLGdCQUFBO0VBQ0EsV0FBQTtFQUNBLGtCQUFBO0VBQ0EsY0FBQTtFQUNBLHlCQUFBOztBQU5ELEdBQUcsZ0JBUUY7RUFDQyxTQUFBOztBQVRGLEdBQUcsZ0JBWUY7RUFDQyxhQUFBOztBQUdELEdBaEJFLGdCQWdCRCxjQUFlO0VBQ2Ysa0JBQUE7RWZrWUMsT0FBQTtFQUFTLHlCQUFBO0VBQ1Ysb0JBQUE7RUFDQSxpQkFBQTtFQUNBLFlBQUE7O0FldFpGLEdBQUcsZ0JBdUJGLE9BQU87RUFDTixpQkFBQTs7QUFJRCxHQTVCRSxnQkE0QkE7RUFDRCxVQUFBO0VBQ0EsU0FBQTtFQUNBLDBCQUFBO0VBQ0EsV0FBQTs7QUFFQSxHQWxDQyxnQkE0QkEsS0FNQTtFQUNBLDJCQUFBOztBQUdELEdBdENDLGdCQTRCQSxLQVVBO0VBQ0Esd0JBQUE7O0FBWEYsR0E1QkUsZ0JBNEJBLEtBZUQ7RUFDQyxVQUFBO0VBQ0EsU0FBQTs7QUFJRCxHQWpEQyxnQkE0QkEsS0FxQkM7RUFDRCxrQkFBQTs7QUFFQSxHQXBEQSxnQkE0QkEsS0FxQkMsS0FHQTtFQUNBLGlCQUFBO0VBQ0EsaUJBQUE7RUFDQSxlQUFBOztBQUdELEdBMURBLGdCQTRCQSxLQXFCQyxLQVNBO0FBQ0QsR0EzREEsZ0JBNEJBLEtBcUJDLEtBVUE7RUFDQSw2QkFBQTs7QUFHRCxHQS9EQSxnQkE0QkEsS0FxQkMsS0FjQTtFQUNBLDBCQUFBOztBQUVBLEdBbEVELGdCQTRCQSxLQXFCQyxLQWNBLHNCQUdDO0VBQ0EsZ0JBQUE7O0FBSUYsR0F2RUEsZ0JBNEJBLEtBcUJDLEtBc0JBLG1CQUFtQjtBQUNwQixHQXhFQSxnQkE0QkEsS0FxQkMsS0F1QkEsbUJBQW1CO0FBQ3BCLEdBekVBLGdCQTRCQSxLQXFCQyxLQXdCQSx1QkFBdUI7QUFDeEIsR0ExRUEsZ0JBNEJBLEtBcUJDLEtBeUJBLHVCQUF1QjtFQUN2QixnQkFBQTtFQUNBLFVBQUE7O0FBR0QsR0EvRUEsZ0JBNEJBLEtBcUJDLEtBOEJBLG1CQUFtQjtBQUNwQixHQWhGQSxnQkE0QkEsS0FxQkMsS0ErQkEsdUJBQXVCO0FBQ3hCLEdBakZBLGdCQTRCQSxLQXFCQyxLQWdDQSxtQkFBbUIsT0FBTztBQUMzQixHQWxGQSxnQkE0QkEsS0FxQkMsS0FpQ0EsdUJBQXVCLE9BQU87RUFDOUIsbUJBQUE7O0FBR0QsR0F0RkEsZ0JBNEJBLEtBcUJDLEtBcUNBLG1CQUFtQjtBQUNwQixHQXZGQSxnQkE0QkEsS0FxQkMsS0FzQ0EsdUJBQXVCO0VBQ3ZCLG1CQUFBOztBQUdELEdBM0ZBLGdCQTRCQSxLQXFCQyxLQTBDQTtFQU1BLG1CQUFBOztBQUxBLEdBNUZELGdCQTRCQSxLQXFCQyxLQTBDQSx1QkFDQztFQUNBLFNBQVMsRUFBVDtFQUNBLFdBQUE7O0FBS0QsR0FuR0QsZ0JBNEJBLEtBcUJDLEtBMENBLHVCQVFFO0VBQ0QsZ0JBQUE7O0FBSUYsR0F4R0EsZ0JBNEJBLEtBcUJDLEtBdURDO0FBQUssR0F4R1AsZ0JBNEJBLEtBcUJDLEtBdURRO0VBQ1IsbUJBQUE7RUFDQSxzQkFBQTs7QUF6REYsR0FqREMsZ0JBNEJBLEtBcUJDLEtBNkREO0VBQ0MsaUJBQUE7RUFDQSxnQkFBQTs7QUEvREYsR0FqREMsZ0JBNEJBLEtBcUJDLEtBNkRELEVBSUM7RUFDQyxtQkFBQTtFQUNBLGVBQUE7O0FBbkVILEdBakRDLGdCQTRCQSxLQXFCQyxLQTZERCxFQUlDLEtBSUM7RUFDQyxtQkFBQTtFQUNBLGlCQUFBO0VBQ0EsZUFBQTtFQUNBLGdCQUFBO0VmNkNKLDBCQUFBO0VBQWlDLG9DQUFBO0VBQ2pDLHVCQUFBO0VBQThCLDZCQUFBO0VBQzlCLGtCQUFBO0VBQXlCLDRCQUFBO0VlN0NyQixzQkFBQTtFQUNBLGNBQUE7RUFDQSxpQkFBQTtFQUNBLFlBQUE7O0FBR0MsR0FsSUosZ0JBNEJBLEtBcUJDLEtBNkRELEVBSUMsS0FJQyxPQVdFLElBQUksV0FDSDtBQUNELEdBbklKLGdCQTRCQSxLQXFCQyxLQTZERCxFQUlDLEtBSUMsT0FXRSxJQUFJLFdBRUg7RUFDQSxXQUFBO0VBQ0EseUJBQUE7RUFDQSx5QkFBQTs7QUFJRixHQTFJSCxnQkE0QkEsS0FxQkMsS0E2REQsRUFJQyxLQUlDLE9Bb0JFLEtBQUs7RUFDTCxlQUFBO0Vmd1FKLE9BQUE7RUFBUyx5QkFBQTtFQUNWLG9CQUFBO0VBQ0EsaUJBQUE7RUFDQSxZQUFBOztBZXJXQSxHQWpEQyxnQkE0QkEsS0FxQkMsS0FrR0Q7RUFDQyx5QkFBQTtFQUNBLFVBQUE7RUFDQSxXQUFBOztBQXJHRixHQWpEQyxnQkE0QkEsS0FxQkMsS0FrR0QsR0FNQztFQUNDLGtCQUFBO0VBQ0EscUJBQUE7RUFHQSxjQUFBOztBQUVBLEdBaEtGLGdCQTRCQSxLQXFCQyxLQWtHRCxHQU1DLEdBT0U7RUFDQSwwQkFBQTs7QUFFQSxHQW5LSCxnQkE0QkEsS0FxQkMsS0FrR0QsR0FNQyxHQU9FLHNCQUdDO0VBQ0EsYUFBQTs7QUFKRixHQWhLRixnQkE0QkEsS0FxQkMsS0FrR0QsR0FNQyxHQU9FLHNCQU9BO0VmQUosMEJBQUE7RUFBaUMsb0NBQUE7RUFDakMsdUJBQUE7RUFBOEIsNkJBQUE7RUFDOUIsa0JBQUE7RUFBeUIsNEJBQUE7RWVBcEIsY0FBQTs7QUFFQSxHQTNLSixnQkE0QkEsS0FxQkMsS0FrR0QsR0FNQyxHQU9FLHNCQU9BLHFCQUlFO0VBQ0EsK0JBQUE7O0FBWkgsR0FoS0YsZ0JBNEJBLEtBcUJDLEtBa0dELEdBTUMsR0FPRSxzQkFPQSxxQkFRQztFQUNDLHNCQUFBOztBQUtILEdBckxGLGdCQTRCQSxLQXFCQyxLQWtHRCxHQU1DLEdBNEJHO0FBQUssR0FyTFQsZ0JBNEJBLEtBcUJDLEtBa0dELEdBTUMsR0E0QlU7RUFDUixtQkFBQTtFQUNBLHNCQUFBOztBQXRJSixHQWpEQyxnQkE0QkEsS0FxQkMsS0FrR0QsR0FNQyxHQWtDQztFQUNDLFVBQUE7O0FBM0lKLEdBakRDLGdCQTRCQSxLQXFCQyxLQWtHRCxHQU1DLEdBa0NDLEdBSUM7RUFDQyxVQUFBO0VBQ0EscUJBQUE7RUFDQSxlQUFBO0VBQ0EscUJBQUE7O0FBbEpMLEdBakRDLGdCQTRCQSxLQXFCQyxLQWtHRCxHQU1DLEdBa0NDLEdBSUMsR0FPQztFQUNDLGVBQUE7RUFDQSxtQkFBQTs7QUF2Sk4sR0FqREMsZ0JBNEJBLEtBcUJDLEtBa0dELEdBTUMsR0FrQ0MsR0FJQyxHQVlDO0FBMUpMLEdBakRDLGdCQTRCQSxLQXFCQyxLQWtHRCxHQU1DLEdBa0NDLEdBSUMsR0FhQztFQUNDLGVBQUE7RUFDQSxTQUFBO0VBQ0Esc0JBQUE7RUFDQSxzQkFBQTtFQ2xTUCxrQkFBQTtFQUNBLG1CQUFBO0VBRUEsb0JBQUE7RUFDQSxvQkFBQTs7QUR3U0EsR0ExTkUsZ0JBME5BO0VBQ0QsZ0JBQUE7O0FBSUQsR0EvTkUsZ0JBK05EO0VBQ0EsWUFBQTtFQUNBLFlBQUE7RUFDQSxnQkFBQTtFQUNBLGdCQUFBO0VBQ0Esa0JBQUE7O0FBTEQsR0EvTkUsZ0JBK05ELE1BT0E7RUN4VEQsa0JBQUE7RUFDQSxrQkFBQTtFQUVBLG9CQUFBO0VBQ0Esb0JBQUE7RURzVEUscUJBQUE7RUFDQSxtQkFBQTtFQUNBLDZCQUFBO0VBQ0EsYUFBQTtFQUNBLG9CQUFBOztBQWJGLEdBL05FLGdCQStORCxNQWdCQTtFQUVDLG9CQUFBO0VBQ0EsZ0JBQUE7O0FBbkJGLEdBL05FLGdCQStORCxNQWdCQSxHQUtDO0VBQ0MsaUJBQUE7RUFDQSxTQUFBO0VBQ0EscUJBQUE7O0FBR0QsR0ExUEEsZ0JBK05ELE1BZ0JBLEdBV0c7RUFDRCxrQkFBQTs7QUE1QkgsR0EvTkUsZ0JBK05ELE1BZ0JBLEdBZUM7RUFDQyxXQUFBO0VBQ0EsVUFBQTtFQUNBLFdBQUE7RUFDQSxpQkFBQTtFQUNBLDBCQUFBO0VBQ0EsbUJBQUE7RUFDQSxtQkFBQTtFZmxFRiw4QkFBQTtFQUNBLDJCQUFBO0VBQ0Esc0JBQUE7O0FlMEJELEdBL05FLGdCQStORCxNQWdCQSxHQWVDLEdBVUM7RUFDQyxnQkFBQTtFQUNBLFlBQUE7RUFDQSxzQkFBQTs7QUE1Q0osR0EvTkUsZ0JBK05ELE1BZ0JBLEdBZ0NDO0VBQ0MsaUJBQUE7RUFDQSxZQUFBO0VBQ0Esb0JBQUE7O0FBbkRILEdBL05FLGdCQStORCxNQWdCQSxHQWdDQyxHQUtDO0VBQ0Msa0JBQUE7O0FBR0QsR0F4UkQsZ0JBK05ELE1BZ0JBLEdBZ0NDLEdBU0U7RUFDQSxTQUFTLE9BQVQ7RUFDQSxjQUFBO0VBQ0EsV0FBQTtFQUNBLFlBQUE7RUFDQSxTQUFBO0VBQ0EsUUFBQTs7QUFPTDtBQUNBLGdCQUFpQixTQUFRO0FBQ3pCO0VmaElFLDBCQUFBO0VBQWlDLG9DQUFBO0VBQ2pDLHVCQUFBO0VBQThCLDZCQUFBO0VBQzlCLGtCQUFBO0VBQXlCLDRCQUFBO0VlZ0kxQixzQkFBQTtFQzNYQSxrQkFBQTtFQUNBLG1CQUFBO0VBRUEsb0JBQUE7RUFDQSxvQkFBQTs7QUQyWEQsZ0JBQWlCLFNBQVE7QUFDekIsV0FBWTtBQUNaO0VDallDLGtCQUFBO0VBQ0EsbUJBQUE7RUFFQSxvQkFBQTtFQUNBLG9CQUFBO0VEK1hBLGdKQUFBOztBQUdELFdBQVk7RUFDWCxZQUFBO0VBQ0EsVUFBQTtFQUNBLFNBQUE7O0FBR0QsZ0JBQWlCLFNBQVE7RWZ2SHZCLDhCQUFBO0VBQ0EsMkJBQUE7RUFDQSxzQkFBQTtFZXVIRCxjQUFBO0VBQ0EsYUFBQTtFQUNBLFdBQUE7RUFDQSxpQkFBQTtFQUNBLFNBQUE7RUFDQSxZQUFBO0VBQ0EsYUFBQTtFQUNBLGdCQUFBO0VBQ0EsV0FBQTtFQUNBLGdCQUFBO0VBQ0EsaUJBQUE7RUFDQSxjQUFBOztBQUdELGlCQUFpQjtFQUNoQixVQUFBO0VBQ0EsY0FBQTtFQzlaQSxlQUFBO0VBQ0EsbUJBQUE7RUFFQSxtQkFBQTtFQUNBLG9CQUFBO0VEa2FBLGdKQUFBOztBQVZELGlCQUFpQixpQkFJaEI7RUFDQyxjQUFBO0VBQ0EsbUJBQUE7O0FBTUQsaUJBWmdCLGlCQVlkLEtBQUk7RUFDTCxtQkFBQTs7O0FBS0Y7RUFDQyxvQkFBQTs7QUFERCx1QkFHQyxTQUFTO0VBQ1IsbUJBQUE7RUFDQSxpQkFBQTs7QUFMRix1QkFRQztFQUVDLFlBQUE7RUFHQSxnQkFBQTs7QUFJRjtFQUNDLGVBQUE7RUFDQSxNQUFBO0VBQ0EsV0FBQTtFQUNBLFdBQUE7O0FBSkQsZ0JBTUM7RUFDQyxpQkFBQTs7QUFQRixnQkFNQyxrQkFHQztFQUNDLGdCQUFBOztBQVZILGdCQU1DLGtCQUdDLE9BR0M7RUFDQyxnQkFBQTs7QUFPSjtFQUNDLGtCQUFBO0VBQ0EsVUFBQTtFQUNBLFVBQUE7O0FBRUEsS0FBQztFQUNBLGFBQUEifQ== */
diff --git a/sources/samples/index.html b/sources/samples/index.html
index 0b154b7..5f47351 100644
--- a/sources/samples/index.html
+++ b/sources/samples/index.html
@@ -1,6 +1,6 @@
1<!DOCTYPE html> 1<!DOCTYPE html>
2<!-- 2<!--
3Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 3Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
4For licensing, see LICENSE.md or http://ckeditor.com/license 4For licensing, see LICENSE.md or http://ckeditor.com/license
5--> 5-->
6<html> 6<html>
@@ -18,7 +18,7 @@ For licensing, see LICENSE.md or http://ckeditor.com/license
18 <div class="grid-container"> 18 <div class="grid-container">
19 <ul class="navigation-a-left grid-width-70"> 19 <ul class="navigation-a-left grid-width-70">
20 <li><a href="http://ckeditor.com">Project Homepage</a></li> 20 <li><a href="http://ckeditor.com">Project Homepage</a></li>
21 <li><a href="http://dev.ckeditor.com/">I found a bug</a></li> 21 <li><a href="https://github.com/ckeditor/ckeditor-dev/issues">I found a bug</a></li>
22 <li><a href="http://github.com/ckeditor/ckeditor-dev" class="icon-pos-right icon-navigation-a-github">Fork CKEditor on GitHub</a></li> 22 <li><a href="http://github.com/ckeditor/ckeditor-dev" class="icon-pos-right icon-navigation-a-github">Fork CKEditor on GitHub</a></li>
23 </ul> 23 </ul>
24 <ul class="navigation-a-right grid-width-30"> 24 <ul class="navigation-a-right grid-width-30">
@@ -116,7 +116,7 @@ For licensing, see LICENSE.md or http://ckeditor.com/license
116 CKEditor &ndash; The text editor for the Internet &ndash; <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a> 116 CKEditor &ndash; The text editor for the Internet &ndash; <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a>
117 </p> 117 </p>
118 <p class="grid-width-100" id="copy"> 118 <p class="grid-width-100" id="copy">
119 Copyright &copy; 2003-2016, <a class="samples" href="http://cksource.com/">CKSource</a> &ndash; Frederico Knabben. All rights reserved. 119 Copyright &copy; 2003-2017, <a class="samples" href="http://cksource.com/">CKSource</a> &ndash; Frederico Knabben. All rights reserved.
120 </p> 120 </p>
121 </div> 121 </div>
122</footer> 122</footer>
diff --git a/sources/samples/js/sample.js b/sources/samples/js/sample.js
index d2eca00..70cf8d6 100644
--- a/sources/samples/js/sample.js
+++ b/sources/samples/js/sample.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/samples/js/sf.js b/sources/samples/js/sf.js
index 57d581d..d42dbd8 100644
--- a/sources/samples/js/sf.js
+++ b/sources/samples/js/sf.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5/* exported SF */ 5/* exported SF */
@@ -670,4 +670,4 @@ var SF = ( function() {
670}(window, document)); 670}(window, document));
671 671
672// jscs:enable 672// jscs:enable
673// jshint ignore:end \ No newline at end of file 673// jshint ignore:end
diff --git a/sources/samples/old/ajax.html b/sources/samples/old/ajax.html
index 3f88ec2..852a086 100644
--- a/sources/samples/old/ajax.html
+++ b/sources/samples/old/ajax.html
@@ -1,6 +1,6 @@
1<!DOCTYPE html> 1<!DOCTYPE html>
2<!-- 2<!--
3Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 3Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
4For licensing, see LICENSE.md or http://ckeditor.com/license 4For licensing, see LICENSE.md or http://ckeditor.com/license
5--> 5-->
6<html> 6<html>
@@ -77,7 +77,7 @@ For licensing, see LICENSE.md or http://ckeditor.com/license
77 CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a> 77 CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a>
78 </p> 78 </p>
79 <p id="copy"> 79 <p id="copy">
80 Copyright &copy; 2003-2016, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico 80 Copyright &copy; 2003-2017, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico
81 Knabben. All rights reserved. 81 Knabben. All rights reserved.
82 </p> 82 </p>
83 </div> 83 </div>
diff --git a/sources/samples/old/api.html b/sources/samples/old/api.html
index d01f0ee..682a719 100644
--- a/sources/samples/old/api.html
+++ b/sources/samples/old/api.html
@@ -1,6 +1,6 @@
1<!DOCTYPE html> 1<!DOCTYPE html>
2<!-- 2<!--
3Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 3Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
4For licensing, see LICENSE.md or http://ckeditor.com/license 4For licensing, see LICENSE.md or http://ckeditor.com/license
5--> 5-->
6<html> 6<html>
@@ -202,7 +202,7 @@ Second line of text preceded by two line breaks.</textarea>
202 CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a> 202 CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a>
203 </p> 203 </p>
204 <p id="copy"> 204 <p id="copy">
205 Copyright &copy; 2003-2016, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico 205 Copyright &copy; 2003-2017, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico
206 Knabben. All rights reserved. 206 Knabben. All rights reserved.
207 </p> 207 </p>
208 </div> 208 </div>
diff --git a/sources/samples/old/appendto.html b/sources/samples/old/appendto.html
index 51e2d62..a984704 100644
--- a/sources/samples/old/appendto.html
+++ b/sources/samples/old/appendto.html
@@ -1,6 +1,6 @@
1<!DOCTYPE html> 1<!DOCTYPE html>
2<!-- 2<!--
3Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 3Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
4For licensing, see LICENSE.md or http://ckeditor.com/license 4For licensing, see LICENSE.md or http://ckeditor.com/license
5--> 5-->
6<html> 6<html>
@@ -51,7 +51,7 @@ For licensing, see LICENSE.md or http://ckeditor.com/license
51 CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a> 51 CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a>
52 </p> 52 </p>
53 <p id="copy"> 53 <p id="copy">
54 Copyright &copy; 2003-2016, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico 54 Copyright &copy; 2003-2017, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico
55 Knabben. All rights reserved. 55 Knabben. All rights reserved.
56 </p> 56 </p>
57 </div> 57 </div>
diff --git a/sources/samples/old/assets/outputxhtml/outputxhtml.css b/sources/samples/old/assets/outputxhtml/outputxhtml.css
index 50daa1d..b81e1d7 100644
--- a/sources/samples/old/assets/outputxhtml/outputxhtml.css
+++ b/sources/samples/old/assets/outputxhtml/outputxhtml.css
@@ -1,5 +1,5 @@
1/* 1/*
2 * Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 * 4 *
5 * Styles used by the XHTML 1.1 sample page (xhtml.html). 5 * Styles used by the XHTML 1.1 sample page (xhtml.html).
diff --git a/sources/samples/old/assets/posteddata.php b/sources/samples/old/assets/posteddata.php
index 914b098..ca43cc9 100644
--- a/sources/samples/old/assets/posteddata.php
+++ b/sources/samples/old/assets/posteddata.php
@@ -1,7 +1,7 @@
1<!DOCTYPE html> 1<!DOCTYPE html>
2<?php 2<?php
3/* 3/*
4Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 4Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
5For licensing, see LICENSE.md or http://ckeditor.com/license 5For licensing, see LICENSE.md or http://ckeditor.com/license
6*/ 6*/
7?> 7?>
@@ -52,7 +52,7 @@ if (!empty($_POST))
52 CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a> 52 CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a>
53 </p> 53 </p>
54 <p id="copy"> 54 <p id="copy">
55 Copyright &copy; 2003-2016, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico Knabben. All rights reserved. 55 Copyright &copy; 2003-2017, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico Knabben. All rights reserved.
56 </p> 56 </p>
57 </div> 57 </div>
58</body> 58</body>
diff --git a/sources/samples/old/assets/uilanguages/languages.js b/sources/samples/old/assets/uilanguages/languages.js
index bffea89..a3cf84f 100644
--- a/sources/samples/old/assets/uilanguages/languages.js
+++ b/sources/samples/old/assets/uilanguages/languages.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -9,6 +9,7 @@ var CKEDITOR_LANGS = ( function() {
9 var langs = { 9 var langs = {
10 af: 'Afrikaans', 10 af: 'Afrikaans',
11 ar: 'Arabic', 11 ar: 'Arabic',
12 az: 'Azerbaijani',
12 bg: 'Bulgarian', 13 bg: 'Bulgarian',
13 bn: 'Bengali/Bangla', 14 bn: 'Bengali/Bangla',
14 bs: 'Bosnian', 15 bs: 'Bosnian',
@@ -25,6 +26,7 @@ var CKEDITOR_LANGS = ( function() {
25 'en-gb': 'English (United Kingdom)', 26 'en-gb': 'English (United Kingdom)',
26 eo: 'Esperanto', 27 eo: 'Esperanto',
27 es: 'Spanish', 28 es: 'Spanish',
29 'es-mx': 'Spanish (Mexico)',
28 et: 'Estonian', 30 et: 'Estonian',
29 eu: 'Basque', 31 eu: 'Basque',
30 fa: 'Persian', 32 fa: 'Persian',
@@ -54,6 +56,7 @@ var CKEDITOR_LANGS = ( function() {
54 nb: 'Norwegian Bokmal', 56 nb: 'Norwegian Bokmal',
55 nl: 'Dutch', 57 nl: 'Dutch',
56 no: 'Norwegian', 58 no: 'Norwegian',
59 oc: 'Occitan',
57 pl: 'Polish', 60 pl: 'Polish',
58 pt: 'Portuguese (Portugal)', 61 pt: 'Portuguese (Portugal)',
59 'pt-br': 'Portuguese (Brazil)', 62 'pt-br': 'Portuguese (Brazil)',
diff --git a/sources/samples/old/datafiltering.html b/sources/samples/old/datafiltering.html
index 700cd9e..dd78ba5 100644
--- a/sources/samples/old/datafiltering.html
+++ b/sources/samples/old/datafiltering.html
@@ -1,6 +1,6 @@
1<!DOCTYPE html> 1<!DOCTYPE html>
2<!-- 2<!--
3Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 3Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
4For licensing, see LICENSE.md or http://ckeditor.com/license 4For licensing, see LICENSE.md or http://ckeditor.com/license
5--> 5-->
6<html> 6<html>
@@ -399,7 +399,7 @@ CKEDITOR.replace( 'editor4', {
399 <div class="description"> 399 <div class="description">
400 <p> 400 <p>
401 This editor is using a custom configuration for <abbr title="Advanced Content Filter">ACF</abbr>. 401 This editor is using a custom configuration for <abbr title="Advanced Content Filter">ACF</abbr>.
402 It's using the <a href="http://docs.ckeditor.com/#!/guide/dev_disallowed_content" target="_blank"> 402 It's using the <a href="http://docs.ckeditor.com/#!/guide/dev_disallowed_content" rel="noopener noreferrer" target="_blank">
403 Disallowed Content</a> property of the filter to eliminate all <code>title</code> attributes. 403 Disallowed Content</a> property of the filter to eliminate all <code>title</code> attributes.
404 </p> 404 </p>
405 405
@@ -454,7 +454,7 @@ CKEDITOR.replace( 'editor6', {
454 <div class="description"> 454 <div class="description">
455 <p> 455 <p>
456 This editor is using a custom configuration for <abbr title="Advanced Content Filter">ACF</abbr>. 456 This editor is using a custom configuration for <abbr title="Advanced Content Filter">ACF</abbr>.
457 It's using the <a href="http://docs.ckeditor.com/#!/guide/dev_disallowed_content" target="_blank"> 457 It's using the <a href="http://docs.ckeditor.com/#!/guide/dev_disallowed_content" rel="noopener noreferrer" target="_blank">
458 Disallowed Content</a> property of the filter to eliminate all <code>a</code> and <code>img</code> tags, 458 Disallowed Content</a> property of the filter to eliminate all <code>a</code> and <code>img</code> tags,
459 while allowing all other tags. 459 while allowing all other tags.
460 </p> 460 </p>
@@ -500,7 +500,7 @@ CKEDITOR.replace( 'editor7', {
500 CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a> 500 CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a>
501 </p> 501 </p>
502 <p id="copy"> 502 <p id="copy">
503 Copyright &copy; 2003-2016, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico 503 Copyright &copy; 2003-2017, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico
504 Knabben. All rights reserved. 504 Knabben. All rights reserved.
505 </p> 505 </p>
506 </div> 506 </div>
diff --git a/sources/samples/old/divreplace.html b/sources/samples/old/divreplace.html
index 91008c8..e882b22 100644
--- a/sources/samples/old/divreplace.html
+++ b/sources/samples/old/divreplace.html
@@ -1,6 +1,6 @@
1<!DOCTYPE html> 1<!DOCTYPE html>
2<!-- 2<!--
3Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 3Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
4For licensing, see LICENSE.md or http://ckeditor.com/license 4For licensing, see LICENSE.md or http://ckeditor.com/license
5--> 5-->
6<html> 6<html>
@@ -136,7 +136,7 @@ For licensing, see LICENSE.md or http://ckeditor.com/license
136 CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a> 136 CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a>
137 </p> 137 </p>
138 <p id="copy"> 138 <p id="copy">
139 Copyright &copy; 2003-2016, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico 139 Copyright &copy; 2003-2017, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico
140 Knabben. All rights reserved. 140 Knabben. All rights reserved.
141 </p> 141 </p>
142 </div> 142 </div>
diff --git a/sources/samples/old/index.html b/sources/samples/old/index.html
index 8f8105d..999d110 100644
--- a/sources/samples/old/index.html
+++ b/sources/samples/old/index.html
@@ -1,6 +1,6 @@
1<!DOCTYPE html> 1<!DOCTYPE html>
2<!-- 2<!--
3Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 3Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
4For licensing, see LICENSE.md or http://ckeditor.com/license 4For licensing, see LICENSE.md or http://ckeditor.com/license
5--> 5-->
6<html> 6<html>
@@ -104,7 +104,7 @@ For licensing, see LICENSE.md or http://ckeditor.com/license
104 CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a> 104 CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a>
105 </p> 105 </p>
106 <p id="copy"> 106 <p id="copy">
107 Copyright &copy; 2003-2016, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico Knabben. All rights reserved. 107 Copyright &copy; 2003-2017, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico Knabben. All rights reserved.
108 </p> 108 </p>
109 </div> 109 </div>
110</body> 110</body>
diff --git a/sources/samples/old/inlineall.html b/sources/samples/old/inlineall.html
index 6fbd9ef..8220ea5 100644
--- a/sources/samples/old/inlineall.html
+++ b/sources/samples/old/inlineall.html
@@ -1,6 +1,6 @@
1<!DOCTYPE html> 1<!DOCTYPE html>
2<!-- 2<!--
3Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 3Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
4For licensing, see LICENSE.md or http://ckeditor.com/license 4For licensing, see LICENSE.md or http://ckeditor.com/license
5--> 5-->
6<html> 6<html>
@@ -306,7 +306,7 @@ For licensing, see LICENSE.md or http://ckeditor.com/license
306 http://ckeditor.com</a> 306 http://ckeditor.com</a>
307 </p> 307 </p>
308 <p id="copy"> 308 <p id="copy">
309 Copyright &copy; 2003-2016, <a class="samples" href="http://cksource.com/">CKSource</a> 309 Copyright &copy; 2003-2017, <a class="samples" href="http://cksource.com/">CKSource</a>
310 - Frederico Knabben. All rights reserved. 310 - Frederico Knabben. All rights reserved.
311 </p> 311 </p>
312</div> 312</div>
diff --git a/sources/samples/old/inlinebycode.html b/sources/samples/old/inlinebycode.html
index 390b142..eea2723 100644
--- a/sources/samples/old/inlinebycode.html
+++ b/sources/samples/old/inlinebycode.html
@@ -1,6 +1,6 @@
1<!DOCTYPE html> 1<!DOCTYPE html>
2<!-- 2<!--
3Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 3Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
4For licensing, see LICENSE.md or http://ckeditor.com/license 4For licensing, see LICENSE.md or http://ckeditor.com/license
5--> 5-->
6<html> 6<html>
@@ -116,7 +116,7 @@ var editor = CKEDITOR.inline( document.getElementById( 'editable' ) );
116 http://ckeditor.com</a> 116 http://ckeditor.com</a>
117 </p> 117 </p>
118 <p id="copy"> 118 <p id="copy">
119 Copyright &copy; 2003-2016, <a class="samples" href="http://cksource.com/">CKSource</a> 119 Copyright &copy; 2003-2017, <a class="samples" href="http://cksource.com/">CKSource</a>
120 - Frederico Knabben. All rights reserved. 120 - Frederico Knabben. All rights reserved.
121 </p> 121 </p>
122 </div> 122 </div>
diff --git a/sources/samples/old/inlinetextarea.html b/sources/samples/old/inlinetextarea.html
index 99ac241..57e664e 100644
--- a/sources/samples/old/inlinetextarea.html
+++ b/sources/samples/old/inlinetextarea.html
@@ -1,6 +1,6 @@
1<!DOCTYPE html> 1<!DOCTYPE html>
2<!-- 2<!--
3Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 3Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
4For licensing, see LICENSE.md or http://ckeditor.com/license 4For licensing, see LICENSE.md or http://ckeditor.com/license
5--> 5-->
6<html> 6<html>
@@ -105,7 +105,7 @@ var editor = CKEDITOR.inline( 'article-body' );
105 http://ckeditor.com</a> 105 http://ckeditor.com</a>
106 </p> 106 </p>
107 <p id="copy"> 107 <p id="copy">
108 Copyright &copy; 2003-2016, <a class="samples" href="http://cksource.com/">CKSource</a> 108 Copyright &copy; 2003-2017, <a class="samples" href="http://cksource.com/">CKSource</a>
109 - Frederico Knabben. All rights reserved. 109 - Frederico Knabben. All rights reserved.
110 </p> 110 </p>
111 </div> 111 </div>
diff --git a/sources/samples/old/jquery.html b/sources/samples/old/jquery.html
index 75bffa9..2f6d958 100644
--- a/sources/samples/old/jquery.html
+++ b/sources/samples/old/jquery.html
@@ -1,6 +1,6 @@
1<!DOCTYPE html> 1<!DOCTYPE html>
2<!-- 2<!--
3Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 3Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
4For licensing, see LICENSE.md or http://ckeditor.com/license 4For licensing, see LICENSE.md or http://ckeditor.com/license
5--> 5-->
6<html> 6<html>
@@ -95,7 +95,7 @@ $( document ).ready( function() {
95 CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a> 95 CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a>
96 </p> 96 </p>
97 <p id="copy"> 97 <p id="copy">
98 Copyright &copy; 2003-2016, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico 98 Copyright &copy; 2003-2017, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico
99 Knabben. All rights reserved. 99 Knabben. All rights reserved.
100 </p> 100 </p>
101 </div> 101 </div>
diff --git a/sources/samples/old/readonly.html b/sources/samples/old/readonly.html
index 086e7b4..084d6af 100644
--- a/sources/samples/old/readonly.html
+++ b/sources/samples/old/readonly.html
@@ -1,6 +1,6 @@
1<!DOCTYPE html> 1<!DOCTYPE html>
2<!-- 2<!--
3Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 3Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
4For licensing, see LICENSE.md or http://ckeditor.com/license 4For licensing, see LICENSE.md or http://ckeditor.com/license
5--> 5-->
6<html> 6<html>
@@ -68,7 +68,7 @@ For licensing, see LICENSE.md or http://ckeditor.com/license
68 CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a> 68 CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a>
69 </p> 69 </p>
70 <p id="copy"> 70 <p id="copy">
71 Copyright &copy; 2003-2016, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico 71 Copyright &copy; 2003-2017, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico
72 Knabben. All rights reserved. 72 Knabben. All rights reserved.
73 </p> 73 </p>
74 </div> 74 </div>
diff --git a/sources/samples/old/replacebyclass.html b/sources/samples/old/replacebyclass.html
index e2eaa35..23652d6 100644
--- a/sources/samples/old/replacebyclass.html
+++ b/sources/samples/old/replacebyclass.html
@@ -1,6 +1,6 @@
1<!DOCTYPE html> 1<!DOCTYPE html>
2<!-- 2<!--
3Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 3Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
4For licensing, see LICENSE.md or http://ckeditor.com/license 4For licensing, see LICENSE.md or http://ckeditor.com/license
5--> 5-->
6<html> 6<html>
@@ -52,7 +52,7 @@ For licensing, see LICENSE.md or http://ckeditor.com/license
52 CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a> 52 CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a>
53 </p> 53 </p>
54 <p id="copy"> 54 <p id="copy">
55 Copyright &copy; 2003-2016, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico 55 Copyright &copy; 2003-2017, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico
56 Knabben. All rights reserved. 56 Knabben. All rights reserved.
57 </p> 57 </p>
58 </div> 58 </div>
diff --git a/sources/samples/old/replacebycode.html b/sources/samples/old/replacebycode.html
index a447c4e..a4f4395 100644
--- a/sources/samples/old/replacebycode.html
+++ b/sources/samples/old/replacebycode.html
@@ -1,6 +1,6 @@
1<!DOCTYPE html> 1<!DOCTYPE html>
2<!-- 2<!--
3Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 3Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
4For licensing, see LICENSE.md or http://ckeditor.com/license 4For licensing, see LICENSE.md or http://ckeditor.com/license
5--> 5-->
6<html> 6<html>
@@ -51,7 +51,7 @@ CKEDITOR.replace( '<em>textarea_id</em>' )
51 CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a> 51 CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a>
52 </p> 52 </p>
53 <p id="copy"> 53 <p id="copy">
54 Copyright &copy; 2003-2016, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico 54 Copyright &copy; 2003-2017, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico
55 Knabben. All rights reserved. 55 Knabben. All rights reserved.
56 </p> 56 </p>
57 </div> 57 </div>
diff --git a/sources/samples/old/sample.css b/sources/samples/old/sample.css
index 8915098..3304111 100644
--- a/sources/samples/old/sample.css
+++ b/sources/samples/old/sample.css
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5 5
diff --git a/sources/samples/old/sample.js b/sources/samples/old/sample.js
index 6152343..7d4c74e 100644
--- a/sources/samples/old/sample.js
+++ b/sources/samples/old/sample.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
diff --git a/sources/samples/old/sample_posteddata.php b/sources/samples/old/sample_posteddata.php
index d34d581..54e9b7c 100644
--- a/sources/samples/old/sample_posteddata.php
+++ b/sources/samples/old/sample_posteddata.php
@@ -9,7 +9,7 @@
9 To save the content created with CKEditor you need to read the POST data on the server 9 To save the content created with CKEditor you need to read the POST data on the server
10 side and write it to a file or the database. 10 side and write it to a file or the database.
11 11
12 Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 12 Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
13 For licensing, see LICENSE.md or http://ckeditor.com/license 13 For licensing, see LICENSE.md or http://ckeditor.com/license
14------------------------------------------------------------------------------------------- 14-------------------------------------------------------------------------------------------
15 15
diff --git a/sources/samples/old/tabindex.html b/sources/samples/old/tabindex.html
index 22ff5be..4238f33 100644
--- a/sources/samples/old/tabindex.html
+++ b/sources/samples/old/tabindex.html
@@ -1,6 +1,6 @@
1<!DOCTYPE html> 1<!DOCTYPE html>
2<!-- 2<!--
3Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 3Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
4For licensing, see LICENSE.md or http://ckeditor.com/license 4For licensing, see LICENSE.md or http://ckeditor.com/license
5--> 5-->
6<html> 6<html>
@@ -70,7 +70,7 @@ For licensing, see LICENSE.md or http://ckeditor.com/license
70 CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a> 70 CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a>
71 </p> 71 </p>
72 <p id="copy"> 72 <p id="copy">
73 Copyright &copy; 2003-2016, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico 73 Copyright &copy; 2003-2017, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico
74 Knabben. All rights reserved. 74 Knabben. All rights reserved.
75 </p> 75 </p>
76 </div> 76 </div>
diff --git a/sources/samples/old/uicolor.html b/sources/samples/old/uicolor.html
index 8acc91f..fb61b1f 100644
--- a/sources/samples/old/uicolor.html
+++ b/sources/samples/old/uicolor.html
@@ -1,6 +1,6 @@
1<!DOCTYPE html> 1<!DOCTYPE html>
2<!-- 2<!--
3Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 3Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
4For licensing, see LICENSE.md or http://ckeditor.com/license 4For licensing, see LICENSE.md or http://ckeditor.com/license
5--> 5-->
6<html> 6<html>
@@ -64,7 +64,7 @@ CKEDITOR.replace( '<em>textarea_id</em>', {
64 CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a> 64 CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a>
65 </p> 65 </p>
66 <p id="copy"> 66 <p id="copy">
67 Copyright &copy; 2003-2016, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico 67 Copyright &copy; 2003-2017, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico
68 Knabben. All rights reserved. 68 Knabben. All rights reserved.
69 </p> 69 </p>
70 </div> 70 </div>
diff --git a/sources/samples/old/uilanguages.html b/sources/samples/old/uilanguages.html
index b1bb694..76749cb 100644
--- a/sources/samples/old/uilanguages.html
+++ b/sources/samples/old/uilanguages.html
@@ -1,6 +1,6 @@
1<!DOCTYPE html> 1<!DOCTYPE html>
2<!-- 2<!--
3Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 3Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
4For licensing, see LICENSE.md or http://ckeditor.com/license 4For licensing, see LICENSE.md or http://ckeditor.com/license
5--> 5-->
6<html> 6<html>
@@ -114,7 +114,7 @@ CKEDITOR.replace( '<em>textarea_id</em>', {
114 CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a> 114 CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a>
115 </p> 115 </p>
116 <p id="copy"> 116 <p id="copy">
117 Copyright &copy; 2003-2016, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico 117 Copyright &copy; 2003-2017, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico
118 Knabben. All rights reserved. 118 Knabben. All rights reserved.
119 </p> 119 </p>
120 </div> 120 </div>
diff --git a/sources/samples/old/xhtmlstyle.html b/sources/samples/old/xhtmlstyle.html
index 0732848..c918766 100644
--- a/sources/samples/old/xhtmlstyle.html
+++ b/sources/samples/old/xhtmlstyle.html
@@ -1,6 +1,6 @@
1<!DOCTYPE html> 1<!DOCTYPE html>
2<!-- 2<!--
3Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 3Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
4For licensing, see LICENSE.md or http://ckeditor.com/license 4For licensing, see LICENSE.md or http://ckeditor.com/license
5--> 5-->
6<html> 6<html>
@@ -226,7 +226,7 @@ CKEDITOR.replace( '<em>textarea_id</em>', {
226 CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a> 226 CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a>
227 </p> 227 </p>
228 <p id="copy"> 228 <p id="copy">
229 Copyright &copy; 2003-2016, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico 229 Copyright &copy; 2003-2017, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico
230 Knabben. All rights reserved. 230 Knabben. All rights reserved.
231 </p> 231 </p>
232 </div> 232 </div>
diff --git a/sources/samples/toolbarconfigurator/index.html b/sources/samples/toolbarconfigurator/index.html
index cf3d043..ea216d2 100644
--- a/sources/samples/toolbarconfigurator/index.html
+++ b/sources/samples/toolbarconfigurator/index.html
@@ -1,6 +1,6 @@
1<!DOCTYPE html> 1<!DOCTYPE html>
2<!-- 2<!--
3Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 3Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
4For licensing, see LICENSE.md or http://ckeditor.com/license 4For licensing, see LICENSE.md or http://ckeditor.com/license
5--> 5-->
6<!--[if IE 8]><html class="ie8"><![endif]--> 6<!--[if IE 8]><html class="ie8"><![endif]-->
@@ -26,7 +26,7 @@ For licensing, see LICENSE.md or http://ckeditor.com/license
26 <div class="grid-container"> 26 <div class="grid-container">
27 <ul class="navigation-a-left grid-width-70"> 27 <ul class="navigation-a-left grid-width-70">
28 <li><a href="http://ckeditor.com">Project Homepage</a></li> 28 <li><a href="http://ckeditor.com">Project Homepage</a></li>
29 <li><a href="http://dev.ckeditor.com/">I found a bug</a></li> 29 <li><a href="https://github.com/ckeditor/ckeditor-dev/issues">I found a bug</a></li>
30 <li><a href="http://github.com/ckeditor/ckeditor-dev" class="icon-pos-right icon-navigation-a-github">Fork CKEditor on GitHub</a></li> 30 <li><a href="http://github.com/ckeditor/ckeditor-dev" class="icon-pos-right icon-navigation-a-github">Fork CKEditor on GitHub</a></li>
31 </ul> 31 </ul>
32 <ul class="navigation-a-right grid-width-30"> 32 <ul class="navigation-a-right grid-width-30">
@@ -136,7 +136,7 @@ For licensing, see LICENSE.md or http://ckeditor.com/license
136 CKEditor &ndash; The text editor for the Internet &ndash; <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a> 136 CKEditor &ndash; The text editor for the Internet &ndash; <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a>
137 </p> 137 </p>
138 <p class="grid-width-100" id="copy"> 138 <p class="grid-width-100" id="copy">
139 Copyright &copy; 2003-2016, <a class="samples" href="http://cksource.com/">CKSource</a> &ndash; Frederico Knabben. All rights reserved. 139 Copyright &copy; 2003-2017, <a class="samples" href="http://cksource.com/">CKSource</a> &ndash; Frederico Knabben. All rights reserved.
140 </p> 140 </p>
141</footer> 141</footer>
142 142
diff --git a/sources/samples/toolbarconfigurator/less/base.less b/sources/samples/toolbarconfigurator/less/base.less
index 0b7f918..0a212ff 100644
--- a/sources/samples/toolbarconfigurator/less/base.less
+++ b/sources/samples/toolbarconfigurator/less/base.less
@@ -1,4 +1,4 @@
1// Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 1// Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
2// For licensing, see LICENSE.html or http://cksource.com/ckeditor/license 2// For licensing, see LICENSE.html or http://cksource.com/ckeditor/license
3 3
4@base-font-size: 16px; 4@base-font-size: 16px;
diff --git a/sources/samples/toolbarconfigurator/less/toolbarmodifier.less b/sources/samples/toolbarconfigurator/less/toolbarmodifier.less
index 319c699..8aa5d08 100644
--- a/sources/samples/toolbarconfigurator/less/toolbarmodifier.less
+++ b/sources/samples/toolbarconfigurator/less/toolbarmodifier.less
@@ -1,4 +1,4 @@
1// Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 1// Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
2// For licensing, see LICENSE.html or http://cksource.com/ckeditor/license 2// For licensing, see LICENSE.html or http://cksource.com/ckeditor/license
3 3
4@import "base.less"; 4@import "base.less";
diff --git a/sources/samples/toolbarconfigurator/lib/codemirror/codemirror.js b/sources/samples/toolbarconfigurator/lib/codemirror/codemirror.js
index 37e2685..e5c3155 100644
--- a/sources/samples/toolbarconfigurator/lib/codemirror/codemirror.js
+++ b/sources/samples/toolbarconfigurator/lib/codemirror/codemirror.js
@@ -1181,7 +1181,7 @@
1181 // very slow. So make the area wide instead. 1181 // very slow. So make the area wide instead.
1182 if (webkit) te.style.width = "1000px"; 1182 if (webkit) te.style.width = "1000px";
1183 else te.setAttribute("wrap", "off"); 1183 else te.setAttribute("wrap", "off");
1184 // If border: 0; -- iOS fails to open keyboard (issue #1287) 1184 // If border: 0; -- iOS fails to open keyboard (issue http://dev.ckeditor.com/ticket/1287)
1185 if (ios) te.style.border = "1px solid black"; 1185 if (ios) te.style.border = "1px solid black";
1186 disableBrowserMagic(te); 1186 disableBrowserMagic(te);
1187 return div; 1187 return div;
@@ -1397,7 +1397,7 @@
1397 if (text == prevInput && !cm.somethingSelected()) return false; 1397 if (text == prevInput && !cm.somethingSelected()) return false;
1398 // Work around nonsensical selection resetting in IE9/10, and 1398 // Work around nonsensical selection resetting in IE9/10, and
1399 // inexplicable appearance of private area unicode characters on 1399 // inexplicable appearance of private area unicode characters on
1400 // some key combos in Mac (#2689). 1400 // some key combos in Mac (http://dev.ckeditor.com/ticket/2689).
1401 if (ie && ie_version >= 9 && this.hasSelection === text || 1401 if (ie && ie_version >= 9 && this.hasSelection === text ||
1402 mac && /[\uf700-\uf7ff]/.test(text)) { 1402 mac && /[\uf700-\uf7ff]/.test(text)) {
1403 cm.display.input.reset(); 1403 cm.display.input.reset();
@@ -1457,7 +1457,7 @@
1457 "px; left: " + (e.clientX - 5) + "px; z-index: 1000; background: " + 1457 "px; left: " + (e.clientX - 5) + "px; z-index: 1000; background: " +
1458 (ie ? "rgba(255, 255, 255, .05)" : "transparent") + 1458 (ie ? "rgba(255, 255, 255, .05)" : "transparent") +
1459 "; outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);"; 1459 "; outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);";
1460 if (webkit) var oldScrollY = window.scrollY; // Work around Chrome issue (#2712) 1460 if (webkit) var oldScrollY = window.scrollY; // Work around Chrome issue (http://dev.ckeditor.com/ticket/2712)
1461 display.input.focus(); 1461 display.input.focus();
1462 if (webkit) window.scrollTo(null, oldScrollY); 1462 if (webkit) window.scrollTo(null, oldScrollY);
1463 display.input.reset(); 1463 display.input.reset();
@@ -3581,7 +3581,7 @@
3581 e_preventDefault(e2); 3581 e_preventDefault(e2);
3582 if (!modifier && +new Date - 200 < startTime) 3582 if (!modifier && +new Date - 200 < startTime)
3583 extendSelection(cm.doc, start); 3583 extendSelection(cm.doc, start);
3584 // Work around unexplainable focus problem in IE9 (#2127) and Chrome (#3081) 3584 // Work around unexplainable focus problem in IE9 (http://dev.ckeditor.com/ticket/2127) and Chrome (http://dev.ckeditor.com/ticket/3081)
3585 if (webkit || ie && ie_version == 9) 3585 if (webkit || ie && ie_version == 9)
3586 setTimeout(function() {document.body.focus(); display.input.focus();}, 20); 3586 setTimeout(function() {document.body.focus(); display.input.focus();}, 20);
3587 else 3587 else
@@ -3769,7 +3769,7 @@
3769 } 3769 }
3770 3770
3771 // Kludge to work around strange IE behavior where it'll sometimes 3771 // Kludge to work around strange IE behavior where it'll sometimes
3772 // re-fire a series of drag-related events right after the drop (#1551) 3772 // re-fire a series of drag-related events right after the drop (http://dev.ckeditor.com/ticket/1551)
3773 var lastDrop = 0; 3773 var lastDrop = 0;
3774 3774
3775 function onDrop(e) { 3775 function onDrop(e) {
@@ -4139,7 +4139,7 @@
4139 // select-all detection hack) 4139 // select-all detection hack)
4140 if (!cm.curOp && cm.display.selForContextMenu != cm.doc.sel) { 4140 if (!cm.curOp && cm.display.selForContextMenu != cm.doc.sel) {
4141 cm.display.input.reset(); 4141 cm.display.input.reset();
4142 if (webkit) setTimeout(function() { cm.display.input.reset(true); }, 20); // Issue #1730 4142 if (webkit) setTimeout(function() { cm.display.input.reset(true); }, 20); // Issue http://dev.ckeditor.com/ticket/1730
4143 } 4143 }
4144 cm.display.input.receivedFocus(); 4144 cm.display.input.receivedFocus();
4145 } 4145 }
@@ -6832,7 +6832,7 @@
6832 } 6832 }
6833 } 6833 }
6834 6834
6835 // See issue #2901 6835 // See issue http://dev.ckeditor.com/ticket/2901
6836 if (webkit && /\bcm-tab\b/.test(builder.content.lastChild.className)) 6836 if (webkit && /\bcm-tab\b/.test(builder.content.lastChild.className))
6837 builder.content.className = "cm-tab-wrap-hack"; 6837 builder.content.className = "cm-tab-wrap-hack";
6838 6838
@@ -8367,7 +8367,7 @@
8367 if (badBidiRects != null) return badBidiRects; 8367 if (badBidiRects != null) return badBidiRects;
8368 var txt = removeChildrenAndAdd(measure, document.createTextNode("A\u062eA")); 8368 var txt = removeChildrenAndAdd(measure, document.createTextNode("A\u062eA"));
8369 var r0 = range(txt, 0, 1).getBoundingClientRect(); 8369 var r0 = range(txt, 0, 1).getBoundingClientRect();
8370 if (!r0 || r0.left == r0.right) return false; // Safari returns null in some cases (#2780) 8370 if (!r0 || r0.left == r0.right) return false; // Safari returns null in some cases (http://dev.ckeditor.com/ticket/2780)
8371 var r1 = range(txt, 1, 2).getBoundingClientRect(); 8371 var r1 = range(txt, 1, 2).getBoundingClientRect();
8372 return badBidiRects = (r1.right - r0.right < 3); 8372 return badBidiRects = (r1.right - r0.right < 3);
8373 } 8373 }
diff --git a/sources/skins/moono/colorpanel.css b/sources/skins/moono/colorpanel.css
index 8012f24..efad9d9 100644
--- a/sources/skins/moono/colorpanel.css
+++ b/sources/skins/moono/colorpanel.css
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5 5
diff --git a/sources/skins/moono/dev/locations.json b/sources/skins/moono/dev/locations.json
index e2fc62e..4e09053 100644
--- a/sources/skins/moono/dev/locations.json
+++ b/sources/skins/moono/dev/locations.json
@@ -102,7 +102,8 @@
102 "plugins/link/icons/link.png", 102 "plugins/link/icons/link.png",
103 "plugins/link/icons/unlink.png", 103 "plugins/link/icons/unlink.png",
104 "plugins/link/icons/anchor.png", 104 "plugins/link/icons/anchor.png",
105 "plugins/link/icons/anchor-rtl.png" 105 "plugins/link/icons/anchor-rtl.png",
106 "plugins/copyformatting/icons/copyformatting.png"
106 ], 107 ],
107 "7": [ 108 "7": [
108 [ 109 [
@@ -141,4 +142,4 @@
141 "skins/moono/images/lock-open.png", 142 "skins/moono/images/lock-open.png",
142 "skins/moono/images/refresh.png" 143 "skins/moono/images/refresh.png"
143 ] 144 ]
144} \ No newline at end of file 145}
diff --git a/sources/skins/moono/dialog.css b/sources/skins/moono/dialog.css
index 1f3704b..93907be 100644
--- a/sources/skins/moono/dialog.css
+++ b/sources/skins/moono/dialog.css
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5 5
@@ -284,7 +284,7 @@ a.cke_dialog_tab_selected
284 284
285/* A hover state for selected tab. */ 285/* A hover state for selected tab. */
286a.cke_dialog_tab_selected:hover, 286a.cke_dialog_tab_selected:hover,
287a.cke_dialog_tab_selected:focus, 287a.cke_dialog_tab_selected:focus
288{ 288{
289 background: #ededed; 289 background: #ededed;
290 background: linear-gradient(to bottom, #ededed 0%,#ffffff 100%); 290 background: linear-gradient(to bottom, #ededed 0%,#ffffff 100%);
diff --git a/sources/skins/moono/dialog_ie.css b/sources/skins/moono/dialog_ie.css
index 16480b7..af86642 100644
--- a/sources/skins/moono/dialog_ie.css
+++ b/sources/skins/moono/dialog_ie.css
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5 5
diff --git a/sources/skins/moono/dialog_ie7.css b/sources/skins/moono/dialog_ie7.css
index e4eba12..148645d 100644
--- a/sources/skins/moono/dialog_ie7.css
+++ b/sources/skins/moono/dialog_ie7.css
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5 5
diff --git a/sources/skins/moono/dialog_ie8.css b/sources/skins/moono/dialog_ie8.css
index cf642eb..1926e50 100644
--- a/sources/skins/moono/dialog_ie8.css
+++ b/sources/skins/moono/dialog_ie8.css
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5 5
diff --git a/sources/skins/moono/dialog_iequirks.css b/sources/skins/moono/dialog_iequirks.css
index daa0afa..2f89fdf 100644
--- a/sources/skins/moono/dialog_iequirks.css
+++ b/sources/skins/moono/dialog_iequirks.css
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5 5
diff --git a/sources/skins/moono/editor.css b/sources/skins/moono/editor.css
index 9f96036..f3f65df 100644
--- a/sources/skins/moono/editor.css
+++ b/sources/skins/moono/editor.css
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5 5
diff --git a/sources/skins/moono/editor_gecko.css b/sources/skins/moono/editor_gecko.css
index c3f3398..370ffff 100644
--- a/sources/skins/moono/editor_gecko.css
+++ b/sources/skins/moono/editor_gecko.css
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5 5
diff --git a/sources/skins/moono/editor_ie.css b/sources/skins/moono/editor_ie.css
index 19df7fd..504789f 100644
--- a/sources/skins/moono/editor_ie.css
+++ b/sources/skins/moono/editor_ie.css
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5 5
diff --git a/sources/skins/moono/editor_ie7.css b/sources/skins/moono/editor_ie7.css
index e2c3c6c..8079504 100644
--- a/sources/skins/moono/editor_ie7.css
+++ b/sources/skins/moono/editor_ie7.css
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5 5
diff --git a/sources/skins/moono/editor_ie8.css b/sources/skins/moono/editor_ie8.css
index 902a9da..9862024 100644
--- a/sources/skins/moono/editor_ie8.css
+++ b/sources/skins/moono/editor_ie8.css
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5 5
diff --git a/sources/skins/moono/editor_iequirks.css b/sources/skins/moono/editor_iequirks.css
index 06bcb60..2376992 100644
--- a/sources/skins/moono/editor_iequirks.css
+++ b/sources/skins/moono/editor_iequirks.css
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5 5
diff --git a/sources/skins/moono/elementspath.css b/sources/skins/moono/elementspath.css
index c8e12fe..3bf10d6 100644
--- a/sources/skins/moono/elementspath.css
+++ b/sources/skins/moono/elementspath.css
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5 5
diff --git a/sources/skins/moono/icons/about.png b/sources/skins/moono/icons/about.png
new file mode 100644
index 0000000..d36b8a1
--- /dev/null
+++ b/sources/skins/moono/icons/about.png
Binary files differ
diff --git a/sources/skins/moono/icons/anchor-rtl.png b/sources/skins/moono/icons/anchor-rtl.png
new file mode 100644
index 0000000..a07d34e
--- /dev/null
+++ b/sources/skins/moono/icons/anchor-rtl.png
Binary files differ
diff --git a/sources/skins/moono/icons/anchor.png b/sources/skins/moono/icons/anchor.png
new file mode 100644
index 0000000..2d2f91d
--- /dev/null
+++ b/sources/skins/moono/icons/anchor.png
Binary files differ
diff --git a/sources/skins/moono/icons/bgcolor.png b/sources/skins/moono/icons/bgcolor.png
new file mode 100644
index 0000000..549f0fa
--- /dev/null
+++ b/sources/skins/moono/icons/bgcolor.png
Binary files differ
diff --git a/sources/skins/moono/icons/bidiltr.png b/sources/skins/moono/icons/bidiltr.png
new file mode 100644
index 0000000..8a11ec5
--- /dev/null
+++ b/sources/skins/moono/icons/bidiltr.png
Binary files differ
diff --git a/sources/skins/moono/icons/bidirtl.png b/sources/skins/moono/icons/bidirtl.png
new file mode 100644
index 0000000..318e245
--- /dev/null
+++ b/sources/skins/moono/icons/bidirtl.png
Binary files differ
diff --git a/sources/skins/moono/icons/blockquote.png b/sources/skins/moono/icons/blockquote.png
new file mode 100644
index 0000000..61d8fd3
--- /dev/null
+++ b/sources/skins/moono/icons/blockquote.png
Binary files differ
diff --git a/sources/skins/moono/icons/bold.png b/sources/skins/moono/icons/bold.png
new file mode 100644
index 0000000..885e916
--- /dev/null
+++ b/sources/skins/moono/icons/bold.png
Binary files differ
diff --git a/sources/skins/moono/icons/bulletedlist-rtl.png b/sources/skins/moono/icons/bulletedlist-rtl.png
new file mode 100644
index 0000000..617096f
--- /dev/null
+++ b/sources/skins/moono/icons/bulletedlist-rtl.png
Binary files differ
diff --git a/sources/skins/moono/icons/bulletedlist.png b/sources/skins/moono/icons/bulletedlist.png
new file mode 100644
index 0000000..6bef9a5
--- /dev/null
+++ b/sources/skins/moono/icons/bulletedlist.png
Binary files differ
diff --git a/sources/skins/moono/icons/button.png b/sources/skins/moono/icons/button.png
new file mode 100644
index 0000000..c0f2fcc
--- /dev/null
+++ b/sources/skins/moono/icons/button.png
Binary files differ
diff --git a/sources/skins/moono/icons/checkbox.png b/sources/skins/moono/icons/checkbox.png
new file mode 100644
index 0000000..45397d4
--- /dev/null
+++ b/sources/skins/moono/icons/checkbox.png
Binary files differ
diff --git a/sources/skins/moono/icons/codesnippet.png b/sources/skins/moono/icons/codesnippet.png
new file mode 100644
index 0000000..6493f6f
--- /dev/null
+++ b/sources/skins/moono/icons/codesnippet.png
Binary files differ
diff --git a/sources/skins/moono/icons/copy-rtl.png b/sources/skins/moono/icons/copy-rtl.png
new file mode 100644
index 0000000..1d65071
--- /dev/null
+++ b/sources/skins/moono/icons/copy-rtl.png
Binary files differ
diff --git a/sources/skins/moono/icons/copy.png b/sources/skins/moono/icons/copy.png
new file mode 100644
index 0000000..1d65071
--- /dev/null
+++ b/sources/skins/moono/icons/copy.png
Binary files differ
diff --git a/sources/skins/moono/icons/copyformatting.png b/sources/skins/moono/icons/copyformatting.png
new file mode 100644
index 0000000..0eb02ee
--- /dev/null
+++ b/sources/skins/moono/icons/copyformatting.png
Binary files differ
diff --git a/sources/skins/moono/icons/creatediv.png b/sources/skins/moono/icons/creatediv.png
new file mode 100644
index 0000000..79d5bb5
--- /dev/null
+++ b/sources/skins/moono/icons/creatediv.png
Binary files differ
diff --git a/sources/skins/moono/icons/cut-rtl.png b/sources/skins/moono/icons/cut-rtl.png
new file mode 100644
index 0000000..97f826e
--- /dev/null
+++ b/sources/skins/moono/icons/cut-rtl.png
Binary files differ
diff --git a/sources/skins/moono/icons/cut.png b/sources/skins/moono/icons/cut.png
new file mode 100644
index 0000000..97f826e
--- /dev/null
+++ b/sources/skins/moono/icons/cut.png
Binary files differ
diff --git a/sources/skins/moono/icons/docprops-rtl.png b/sources/skins/moono/icons/docprops-rtl.png
new file mode 100644
index 0000000..1e6d212
--- /dev/null
+++ b/sources/skins/moono/icons/docprops-rtl.png
Binary files differ
diff --git a/sources/skins/moono/icons/docprops.png b/sources/skins/moono/icons/docprops.png
new file mode 100644
index 0000000..dd7e1e8
--- /dev/null
+++ b/sources/skins/moono/icons/docprops.png
Binary files differ
diff --git a/sources/skins/moono/icons/find-rtl.png b/sources/skins/moono/icons/find-rtl.png
new file mode 100644
index 0000000..8d94455
--- /dev/null
+++ b/sources/skins/moono/icons/find-rtl.png
Binary files differ
diff --git a/sources/skins/moono/icons/find.png b/sources/skins/moono/icons/find.png
new file mode 100644
index 0000000..8d94455
--- /dev/null
+++ b/sources/skins/moono/icons/find.png
Binary files differ
diff --git a/sources/skins/moono/icons/flash.png b/sources/skins/moono/icons/flash.png
new file mode 100644
index 0000000..6b7c843
--- /dev/null
+++ b/sources/skins/moono/icons/flash.png
Binary files differ
diff --git a/sources/skins/moono/icons/form.png b/sources/skins/moono/icons/form.png
new file mode 100644
index 0000000..68c5b6b
--- /dev/null
+++ b/sources/skins/moono/icons/form.png
Binary files differ
diff --git a/sources/skins/moono/icons/hiddenfield.png b/sources/skins/moono/icons/hiddenfield.png
new file mode 100644
index 0000000..ddc547f
--- /dev/null
+++ b/sources/skins/moono/icons/hiddenfield.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/.DS_Store b/sources/skins/moono/icons/hidpi/.DS_Store
new file mode 100644
index 0000000..9d2abe5
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/.DS_Store
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/about.png b/sources/skins/moono/icons/hidpi/about.png
new file mode 100644
index 0000000..8ecc4a6
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/about.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/anchor-rtl.png b/sources/skins/moono/icons/hidpi/anchor-rtl.png
new file mode 100644
index 0000000..318a138
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/anchor-rtl.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/anchor.png b/sources/skins/moono/icons/hidpi/anchor.png
new file mode 100644
index 0000000..53486a8
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/anchor.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/bgcolor.png b/sources/skins/moono/icons/hidpi/bgcolor.png
new file mode 100644
index 0000000..20fcf37
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/bgcolor.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/bidiltr.png b/sources/skins/moono/icons/hidpi/bidiltr.png
new file mode 100644
index 0000000..6fb7456
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/bidiltr.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/bidirtl.png b/sources/skins/moono/icons/hidpi/bidirtl.png
new file mode 100644
index 0000000..80f063d
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/bidirtl.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/blockquote.png b/sources/skins/moono/icons/hidpi/blockquote.png
new file mode 100644
index 0000000..965f910
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/blockquote.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/bold.png b/sources/skins/moono/icons/hidpi/bold.png
new file mode 100644
index 0000000..613319b
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/bold.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/bulletedlist-rtl.png b/sources/skins/moono/icons/hidpi/bulletedlist-rtl.png
new file mode 100644
index 0000000..34da46b
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/bulletedlist-rtl.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/bulletedlist.png b/sources/skins/moono/icons/hidpi/bulletedlist.png
new file mode 100644
index 0000000..f322ed9
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/bulletedlist.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/button.png b/sources/skins/moono/icons/hidpi/button.png
new file mode 100644
index 0000000..a7b2b42
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/button.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/checkbox.png b/sources/skins/moono/icons/hidpi/checkbox.png
new file mode 100644
index 0000000..53ac357
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/checkbox.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/codesnippet.png b/sources/skins/moono/icons/hidpi/codesnippet.png
new file mode 100644
index 0000000..a9b3a98
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/codesnippet.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/copy-rtl.png b/sources/skins/moono/icons/hidpi/copy-rtl.png
new file mode 100644
index 0000000..6c9a0fe
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/copy-rtl.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/copy.png b/sources/skins/moono/icons/hidpi/copy.png
new file mode 100644
index 0000000..6c9a0fe
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/copy.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/copyformatting.png b/sources/skins/moono/icons/hidpi/copyformatting.png
new file mode 100644
index 0000000..4f95e7a
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/copyformatting.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/creatediv.png b/sources/skins/moono/icons/hidpi/creatediv.png
new file mode 100644
index 0000000..808e466
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/creatediv.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/cut-rtl.png b/sources/skins/moono/icons/hidpi/cut-rtl.png
new file mode 100644
index 0000000..39c4af0
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/cut-rtl.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/cut.png b/sources/skins/moono/icons/hidpi/cut.png
new file mode 100644
index 0000000..39c4af0
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/cut.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/docprops-rtl.png b/sources/skins/moono/icons/hidpi/docprops-rtl.png
new file mode 100644
index 0000000..de8722f
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/docprops-rtl.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/docprops.png b/sources/skins/moono/icons/hidpi/docprops.png
new file mode 100644
index 0000000..74af812
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/docprops.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/find-rtl.png b/sources/skins/moono/icons/hidpi/find-rtl.png
new file mode 100644
index 0000000..ff0e0c6
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/find-rtl.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/find.png b/sources/skins/moono/icons/hidpi/find.png
new file mode 100644
index 0000000..ff0e0c6
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/find.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/flash.png b/sources/skins/moono/icons/hidpi/flash.png
new file mode 100644
index 0000000..7323b19
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/flash.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/form.png b/sources/skins/moono/icons/hidpi/form.png
new file mode 100644
index 0000000..90f4813
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/form.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/hiddenfield.png b/sources/skins/moono/icons/hidpi/hiddenfield.png
new file mode 100644
index 0000000..fd10781
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/hiddenfield.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/horizontalrule.png b/sources/skins/moono/icons/hidpi/horizontalrule.png
new file mode 100644
index 0000000..0ae87fb
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/horizontalrule.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/iframe.png b/sources/skins/moono/icons/hidpi/iframe.png
new file mode 100644
index 0000000..a56ecb0
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/iframe.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/image.png b/sources/skins/moono/icons/hidpi/image.png
new file mode 100644
index 0000000..e9579fb
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/image.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/imagebutton.png b/sources/skins/moono/icons/hidpi/imagebutton.png
new file mode 100644
index 0000000..f38b758
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/imagebutton.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/indent-rtl.png b/sources/skins/moono/icons/hidpi/indent-rtl.png
new file mode 100644
index 0000000..44eea22
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/indent-rtl.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/indent.png b/sources/skins/moono/icons/hidpi/indent.png
new file mode 100644
index 0000000..417f092
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/indent.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/italic.png b/sources/skins/moono/icons/hidpi/italic.png
new file mode 100644
index 0000000..07b1d1d
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/italic.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/justifyblock.png b/sources/skins/moono/icons/hidpi/justifyblock.png
new file mode 100644
index 0000000..4535a39
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/justifyblock.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/justifycenter.png b/sources/skins/moono/icons/hidpi/justifycenter.png
new file mode 100644
index 0000000..8749f69
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/justifycenter.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/justifyleft.png b/sources/skins/moono/icons/hidpi/justifyleft.png
new file mode 100644
index 0000000..50a4307
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/justifyleft.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/justifyright.png b/sources/skins/moono/icons/hidpi/justifyright.png
new file mode 100644
index 0000000..6d127e7
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/justifyright.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/language.png b/sources/skins/moono/icons/hidpi/language.png
new file mode 100644
index 0000000..d778031
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/language.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/link.png b/sources/skins/moono/icons/hidpi/link.png
new file mode 100644
index 0000000..fed6b91
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/link.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/maximize.png b/sources/skins/moono/icons/hidpi/maximize.png
new file mode 100644
index 0000000..eeaa700
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/maximize.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/newpage-rtl.png b/sources/skins/moono/icons/hidpi/newpage-rtl.png
new file mode 100644
index 0000000..c5e1d3b
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/newpage-rtl.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/newpage.png b/sources/skins/moono/icons/hidpi/newpage.png
new file mode 100644
index 0000000..139279b
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/newpage.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/numberedlist-rtl.png b/sources/skins/moono/icons/hidpi/numberedlist-rtl.png
new file mode 100644
index 0000000..b449c2b
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/numberedlist-rtl.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/numberedlist.png b/sources/skins/moono/icons/hidpi/numberedlist.png
new file mode 100644
index 0000000..b7442ef
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/numberedlist.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/outdent-rtl.png b/sources/skins/moono/icons/hidpi/outdent-rtl.png
new file mode 100644
index 0000000..a642bca
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/outdent-rtl.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/outdent.png b/sources/skins/moono/icons/hidpi/outdent.png
new file mode 100644
index 0000000..6d715a5
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/outdent.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/pagebreak-rtl.png b/sources/skins/moono/icons/hidpi/pagebreak-rtl.png
new file mode 100644
index 0000000..6fc486b
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/pagebreak-rtl.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/pagebreak.png b/sources/skins/moono/icons/hidpi/pagebreak.png
new file mode 100644
index 0000000..a19ecc0
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/pagebreak.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/paste-rtl.png b/sources/skins/moono/icons/hidpi/paste-rtl.png
new file mode 100644
index 0000000..14f9eff
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/paste-rtl.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/paste.png b/sources/skins/moono/icons/hidpi/paste.png
new file mode 100644
index 0000000..14f9eff
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/paste.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/pastefromword-rtl.png b/sources/skins/moono/icons/hidpi/pastefromword-rtl.png
new file mode 100644
index 0000000..fb9ef9e
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/pastefromword-rtl.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/pastefromword.png b/sources/skins/moono/icons/hidpi/pastefromword.png
new file mode 100644
index 0000000..7666b0f
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/pastefromword.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/pastetext-rtl.png b/sources/skins/moono/icons/hidpi/pastetext-rtl.png
new file mode 100644
index 0000000..b30fc9b
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/pastetext-rtl.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/pastetext.png b/sources/skins/moono/icons/hidpi/pastetext.png
new file mode 100644
index 0000000..e811afc
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/pastetext.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/placeholder.png b/sources/skins/moono/icons/hidpi/placeholder.png
new file mode 100644
index 0000000..0874f14
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/placeholder.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/preview-rtl.png b/sources/skins/moono/icons/hidpi/preview-rtl.png
new file mode 100644
index 0000000..06d06c0
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/preview-rtl.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/preview.png b/sources/skins/moono/icons/hidpi/preview.png
new file mode 100644
index 0000000..993e79e
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/preview.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/print.png b/sources/skins/moono/icons/hidpi/print.png
new file mode 100644
index 0000000..42064c2
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/print.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/radio.png b/sources/skins/moono/icons/hidpi/radio.png
new file mode 100644
index 0000000..c84bc00
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/radio.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/redo-rtl.png b/sources/skins/moono/icons/hidpi/redo-rtl.png
new file mode 100644
index 0000000..c8583ea
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/redo-rtl.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/redo.png b/sources/skins/moono/icons/hidpi/redo.png
new file mode 100644
index 0000000..fb25750
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/redo.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/removeformat.png b/sources/skins/moono/icons/hidpi/removeformat.png
new file mode 100644
index 0000000..738ebcd
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/removeformat.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/replace.png b/sources/skins/moono/icons/hidpi/replace.png
new file mode 100644
index 0000000..3944ec3
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/replace.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/save.png b/sources/skins/moono/icons/hidpi/save.png
new file mode 100644
index 0000000..21f92bf
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/save.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/scayt.png b/sources/skins/moono/icons/hidpi/scayt.png
new file mode 100644
index 0000000..5f0b6d9
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/scayt.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/select-rtl.png b/sources/skins/moono/icons/hidpi/select-rtl.png
new file mode 100644
index 0000000..925c06d
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/select-rtl.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/select.png b/sources/skins/moono/icons/hidpi/select.png
new file mode 100644
index 0000000..0e995f9
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/select.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/selectall.png b/sources/skins/moono/icons/hidpi/selectall.png
new file mode 100644
index 0000000..68f3239
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/selectall.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/showblocks-rtl.png b/sources/skins/moono/icons/hidpi/showblocks-rtl.png
new file mode 100644
index 0000000..d210fad
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/showblocks-rtl.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/showblocks.png b/sources/skins/moono/icons/hidpi/showblocks.png
new file mode 100644
index 0000000..d6d51d1
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/showblocks.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/smiley.png b/sources/skins/moono/icons/hidpi/smiley.png
new file mode 100644
index 0000000..5a70b89
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/smiley.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/source-rtl.png b/sources/skins/moono/icons/hidpi/source-rtl.png
new file mode 100644
index 0000000..64b2266
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/source-rtl.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/source.png b/sources/skins/moono/icons/hidpi/source.png
new file mode 100644
index 0000000..4e732c0
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/source.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/sourcedialog-rtl.png b/sources/skins/moono/icons/hidpi/sourcedialog-rtl.png
new file mode 100644
index 0000000..64b2266
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/sourcedialog-rtl.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/sourcedialog.png b/sources/skins/moono/icons/hidpi/sourcedialog.png
new file mode 100644
index 0000000..4e732c0
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/sourcedialog.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/specialchar.png b/sources/skins/moono/icons/hidpi/specialchar.png
new file mode 100644
index 0000000..5874ea3
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/specialchar.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/spellchecker.png b/sources/skins/moono/icons/hidpi/spellchecker.png
new file mode 100644
index 0000000..5f0b6d9
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/spellchecker.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/strike.png b/sources/skins/moono/icons/hidpi/strike.png
new file mode 100644
index 0000000..45c3269
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/strike.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/subscript.png b/sources/skins/moono/icons/hidpi/subscript.png
new file mode 100644
index 0000000..d59e216
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/subscript.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/superscript.png b/sources/skins/moono/icons/hidpi/superscript.png
new file mode 100644
index 0000000..2951416
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/superscript.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/table.png b/sources/skins/moono/icons/hidpi/table.png
new file mode 100644
index 0000000..795e8c8
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/table.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/templates-rtl.png b/sources/skins/moono/icons/hidpi/templates-rtl.png
new file mode 100644
index 0000000..0784b00
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/templates-rtl.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/templates.png b/sources/skins/moono/icons/hidpi/templates.png
new file mode 100644
index 0000000..0784b00
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/templates.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/textarea-rtl.png b/sources/skins/moono/icons/hidpi/textarea-rtl.png
new file mode 100644
index 0000000..4bc1c06
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/textarea-rtl.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/textarea.png b/sources/skins/moono/icons/hidpi/textarea.png
new file mode 100644
index 0000000..8156e51
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/textarea.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/textcolor.png b/sources/skins/moono/icons/hidpi/textcolor.png
new file mode 100644
index 0000000..42c5e4f
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/textcolor.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/textfield-rtl.png b/sources/skins/moono/icons/hidpi/textfield-rtl.png
new file mode 100644
index 0000000..1d5970a
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/textfield-rtl.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/textfield.png b/sources/skins/moono/icons/hidpi/textfield.png
new file mode 100644
index 0000000..1d5970a
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/textfield.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/uicolor.png b/sources/skins/moono/icons/hidpi/uicolor.png
new file mode 100644
index 0000000..dbd21ff
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/uicolor.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/underline.png b/sources/skins/moono/icons/hidpi/underline.png
new file mode 100644
index 0000000..53302c6
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/underline.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/undo-rtl.png b/sources/skins/moono/icons/hidpi/undo-rtl.png
new file mode 100644
index 0000000..fb25750
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/undo-rtl.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/undo.png b/sources/skins/moono/icons/hidpi/undo.png
new file mode 100644
index 0000000..c8583ea
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/undo.png
Binary files differ
diff --git a/sources/skins/moono/icons/hidpi/unlink.png b/sources/skins/moono/icons/hidpi/unlink.png
new file mode 100644
index 0000000..dc7fc78
--- /dev/null
+++ b/sources/skins/moono/icons/hidpi/unlink.png
Binary files differ
diff --git a/sources/skins/moono/icons/horizontalrule.png b/sources/skins/moono/icons/horizontalrule.png
new file mode 100644
index 0000000..513d193
--- /dev/null
+++ b/sources/skins/moono/icons/horizontalrule.png
Binary files differ
diff --git a/sources/skins/moono/icons/iframe.png b/sources/skins/moono/icons/iframe.png
new file mode 100644
index 0000000..2393ca5
--- /dev/null
+++ b/sources/skins/moono/icons/iframe.png
Binary files differ
diff --git a/sources/skins/moono/icons/image.png b/sources/skins/moono/icons/image.png
new file mode 100644
index 0000000..281dbc7
--- /dev/null
+++ b/sources/skins/moono/icons/image.png
Binary files differ
diff --git a/sources/skins/moono/icons/imagebutton.png b/sources/skins/moono/icons/imagebutton.png
new file mode 100644
index 0000000..e26854b
--- /dev/null
+++ b/sources/skins/moono/icons/imagebutton.png
Binary files differ
diff --git a/sources/skins/moono/icons/indent-rtl.png b/sources/skins/moono/icons/indent-rtl.png
new file mode 100644
index 0000000..23ab113
--- /dev/null
+++ b/sources/skins/moono/icons/indent-rtl.png
Binary files differ
diff --git a/sources/skins/moono/icons/indent.png b/sources/skins/moono/icons/indent.png
new file mode 100644
index 0000000..8c2ee08
--- /dev/null
+++ b/sources/skins/moono/icons/indent.png
Binary files differ
diff --git a/sources/skins/moono/icons/italic.png b/sources/skins/moono/icons/italic.png
new file mode 100644
index 0000000..0983afe
--- /dev/null
+++ b/sources/skins/moono/icons/italic.png
Binary files differ
diff --git a/sources/skins/moono/icons/justifyblock.png b/sources/skins/moono/icons/justifyblock.png
new file mode 100644
index 0000000..72164e7
--- /dev/null
+++ b/sources/skins/moono/icons/justifyblock.png
Binary files differ
diff --git a/sources/skins/moono/icons/justifycenter.png b/sources/skins/moono/icons/justifycenter.png
new file mode 100644
index 0000000..5721c9e
--- /dev/null
+++ b/sources/skins/moono/icons/justifycenter.png
Binary files differ
diff --git a/sources/skins/moono/icons/justifyleft.png b/sources/skins/moono/icons/justifyleft.png
new file mode 100644
index 0000000..0b1fa97
--- /dev/null
+++ b/sources/skins/moono/icons/justifyleft.png
Binary files differ
diff --git a/sources/skins/moono/icons/justifyright.png b/sources/skins/moono/icons/justifyright.png
new file mode 100644
index 0000000..f039348
--- /dev/null
+++ b/sources/skins/moono/icons/justifyright.png
Binary files differ
diff --git a/sources/skins/moono/icons/language.png b/sources/skins/moono/icons/language.png
new file mode 100644
index 0000000..dfa11fa
--- /dev/null
+++ b/sources/skins/moono/icons/language.png
Binary files differ
diff --git a/sources/skins/moono/icons/link.png b/sources/skins/moono/icons/link.png
new file mode 100644
index 0000000..2bf8900
--- /dev/null
+++ b/sources/skins/moono/icons/link.png
Binary files differ
diff --git a/sources/skins/moono/icons/maximize.png b/sources/skins/moono/icons/maximize.png
new file mode 100644
index 0000000..95427dc
--- /dev/null
+++ b/sources/skins/moono/icons/maximize.png
Binary files differ
diff --git a/sources/skins/moono/icons/newpage-rtl.png b/sources/skins/moono/icons/newpage-rtl.png
new file mode 100644
index 0000000..e88f7f4
--- /dev/null
+++ b/sources/skins/moono/icons/newpage-rtl.png
Binary files differ
diff --git a/sources/skins/moono/icons/newpage.png b/sources/skins/moono/icons/newpage.png
new file mode 100644
index 0000000..410eb50
--- /dev/null
+++ b/sources/skins/moono/icons/newpage.png
Binary files differ
diff --git a/sources/skins/moono/icons/numberedlist-rtl.png b/sources/skins/moono/icons/numberedlist-rtl.png
new file mode 100644
index 0000000..d40582d
--- /dev/null
+++ b/sources/skins/moono/icons/numberedlist-rtl.png
Binary files differ
diff --git a/sources/skins/moono/icons/numberedlist.png b/sources/skins/moono/icons/numberedlist.png
new file mode 100644
index 0000000..beaa1b2
--- /dev/null
+++ b/sources/skins/moono/icons/numberedlist.png
Binary files differ
diff --git a/sources/skins/moono/icons/outdent-rtl.png b/sources/skins/moono/icons/outdent-rtl.png
new file mode 100644
index 0000000..bd7bb34
--- /dev/null
+++ b/sources/skins/moono/icons/outdent-rtl.png
Binary files differ
diff --git a/sources/skins/moono/icons/outdent.png b/sources/skins/moono/icons/outdent.png
new file mode 100644
index 0000000..b48e099
--- /dev/null
+++ b/sources/skins/moono/icons/outdent.png
Binary files differ
diff --git a/sources/skins/moono/icons/pagebreak-rtl.png b/sources/skins/moono/icons/pagebreak-rtl.png
new file mode 100644
index 0000000..c8b22cc
--- /dev/null
+++ b/sources/skins/moono/icons/pagebreak-rtl.png
Binary files differ
diff --git a/sources/skins/moono/icons/pagebreak.png b/sources/skins/moono/icons/pagebreak.png
new file mode 100644
index 0000000..616dfcd
--- /dev/null
+++ b/sources/skins/moono/icons/pagebreak.png
Binary files differ
diff --git a/sources/skins/moono/icons/paste-rtl.png b/sources/skins/moono/icons/paste-rtl.png
new file mode 100644
index 0000000..beb842b
--- /dev/null
+++ b/sources/skins/moono/icons/paste-rtl.png
Binary files differ
diff --git a/sources/skins/moono/icons/paste.png b/sources/skins/moono/icons/paste.png
new file mode 100644
index 0000000..beb842b
--- /dev/null
+++ b/sources/skins/moono/icons/paste.png
Binary files differ
diff --git a/sources/skins/moono/icons/pastefromword-rtl.png b/sources/skins/moono/icons/pastefromword-rtl.png
new file mode 100644
index 0000000..234e660
--- /dev/null
+++ b/sources/skins/moono/icons/pastefromword-rtl.png
Binary files differ
diff --git a/sources/skins/moono/icons/pastefromword.png b/sources/skins/moono/icons/pastefromword.png
new file mode 100644
index 0000000..39afbe3
--- /dev/null
+++ b/sources/skins/moono/icons/pastefromword.png
Binary files differ
diff --git a/sources/skins/moono/icons/pastetext-rtl.png b/sources/skins/moono/icons/pastetext-rtl.png
new file mode 100644
index 0000000..7dffd18
--- /dev/null
+++ b/sources/skins/moono/icons/pastetext-rtl.png
Binary files differ
diff --git a/sources/skins/moono/icons/pastetext.png b/sources/skins/moono/icons/pastetext.png
new file mode 100644
index 0000000..f5aba32
--- /dev/null
+++ b/sources/skins/moono/icons/pastetext.png
Binary files differ
diff --git a/sources/skins/moono/icons/placeholder.png b/sources/skins/moono/icons/placeholder.png
new file mode 100644
index 0000000..8bd808a
--- /dev/null
+++ b/sources/skins/moono/icons/placeholder.png
Binary files differ
diff --git a/sources/skins/moono/icons/preview-rtl.png b/sources/skins/moono/icons/preview-rtl.png
new file mode 100644
index 0000000..a1402fb
--- /dev/null
+++ b/sources/skins/moono/icons/preview-rtl.png
Binary files differ
diff --git a/sources/skins/moono/icons/preview.png b/sources/skins/moono/icons/preview.png
new file mode 100644
index 0000000..256fa5a
--- /dev/null
+++ b/sources/skins/moono/icons/preview.png
Binary files differ
diff --git a/sources/skins/moono/icons/print.png b/sources/skins/moono/icons/print.png
new file mode 100644
index 0000000..e2fd5c3
--- /dev/null
+++ b/sources/skins/moono/icons/print.png
Binary files differ
diff --git a/sources/skins/moono/icons/radio.png b/sources/skins/moono/icons/radio.png
new file mode 100644
index 0000000..136e433
--- /dev/null
+++ b/sources/skins/moono/icons/radio.png
Binary files differ
diff --git a/sources/skins/moono/icons/redo-rtl.png b/sources/skins/moono/icons/redo-rtl.png
new file mode 100644
index 0000000..9e03f4a
--- /dev/null
+++ b/sources/skins/moono/icons/redo-rtl.png
Binary files differ
diff --git a/sources/skins/moono/icons/redo.png b/sources/skins/moono/icons/redo.png
new file mode 100644
index 0000000..f7119cb
--- /dev/null
+++ b/sources/skins/moono/icons/redo.png
Binary files differ
diff --git a/sources/skins/moono/icons/removeformat.png b/sources/skins/moono/icons/removeformat.png
new file mode 100644
index 0000000..4e74dfc
--- /dev/null
+++ b/sources/skins/moono/icons/removeformat.png
Binary files differ
diff --git a/sources/skins/moono/icons/replace.png b/sources/skins/moono/icons/replace.png
new file mode 100644
index 0000000..9597eb1
--- /dev/null
+++ b/sources/skins/moono/icons/replace.png
Binary files differ
diff --git a/sources/skins/moono/icons/save.png b/sources/skins/moono/icons/save.png
new file mode 100644
index 0000000..97635c8
--- /dev/null
+++ b/sources/skins/moono/icons/save.png
Binary files differ
diff --git a/sources/skins/moono/icons/scayt.png b/sources/skins/moono/icons/scayt.png
new file mode 100644
index 0000000..46d7570
--- /dev/null
+++ b/sources/skins/moono/icons/scayt.png
Binary files differ
diff --git a/sources/skins/moono/icons/select-rtl.png b/sources/skins/moono/icons/select-rtl.png
new file mode 100644
index 0000000..33dd89d
--- /dev/null
+++ b/sources/skins/moono/icons/select-rtl.png
Binary files differ
diff --git a/sources/skins/moono/icons/select.png b/sources/skins/moono/icons/select.png
new file mode 100644
index 0000000..c3d89cc
--- /dev/null
+++ b/sources/skins/moono/icons/select.png
Binary files differ
diff --git a/sources/skins/moono/icons/selectall.png b/sources/skins/moono/icons/selectall.png
new file mode 100644
index 0000000..a4cff3d
--- /dev/null
+++ b/sources/skins/moono/icons/selectall.png
Binary files differ
diff --git a/sources/skins/moono/icons/showblocks-rtl.png b/sources/skins/moono/icons/showblocks-rtl.png
new file mode 100644
index 0000000..6f391b1
--- /dev/null
+++ b/sources/skins/moono/icons/showblocks-rtl.png
Binary files differ
diff --git a/sources/skins/moono/icons/showblocks.png b/sources/skins/moono/icons/showblocks.png
new file mode 100644
index 0000000..0b240e8
--- /dev/null
+++ b/sources/skins/moono/icons/showblocks.png
Binary files differ
diff --git a/sources/skins/moono/icons/smiley.png b/sources/skins/moono/icons/smiley.png
new file mode 100644
index 0000000..e7607ca
--- /dev/null
+++ b/sources/skins/moono/icons/smiley.png
Binary files differ
diff --git a/sources/skins/moono/icons/source-rtl.png b/sources/skins/moono/icons/source-rtl.png
new file mode 100644
index 0000000..c734db6
--- /dev/null
+++ b/sources/skins/moono/icons/source-rtl.png
Binary files differ
diff --git a/sources/skins/moono/icons/source.png b/sources/skins/moono/icons/source.png
new file mode 100644
index 0000000..004e73b
--- /dev/null
+++ b/sources/skins/moono/icons/source.png
Binary files differ
diff --git a/sources/skins/moono/icons/sourcedialog-rtl.png b/sources/skins/moono/icons/sourcedialog-rtl.png
new file mode 100644
index 0000000..c734db6
--- /dev/null
+++ b/sources/skins/moono/icons/sourcedialog-rtl.png
Binary files differ
diff --git a/sources/skins/moono/icons/sourcedialog.png b/sources/skins/moono/icons/sourcedialog.png
new file mode 100644
index 0000000..004e73b
--- /dev/null
+++ b/sources/skins/moono/icons/sourcedialog.png
Binary files differ
diff --git a/sources/skins/moono/icons/specialchar.png b/sources/skins/moono/icons/specialchar.png
new file mode 100644
index 0000000..4dafefd
--- /dev/null
+++ b/sources/skins/moono/icons/specialchar.png
Binary files differ
diff --git a/sources/skins/moono/icons/spellchecker.png b/sources/skins/moono/icons/spellchecker.png
new file mode 100644
index 0000000..46d7570
--- /dev/null
+++ b/sources/skins/moono/icons/spellchecker.png
Binary files differ
diff --git a/sources/skins/moono/icons/strike.png b/sources/skins/moono/icons/strike.png
new file mode 100644
index 0000000..8007832
--- /dev/null
+++ b/sources/skins/moono/icons/strike.png
Binary files differ
diff --git a/sources/skins/moono/icons/subscript.png b/sources/skins/moono/icons/subscript.png
new file mode 100644
index 0000000..89e8bf4
--- /dev/null
+++ b/sources/skins/moono/icons/subscript.png
Binary files differ
diff --git a/sources/skins/moono/icons/superscript.png b/sources/skins/moono/icons/superscript.png
new file mode 100644
index 0000000..1a269c6
--- /dev/null
+++ b/sources/skins/moono/icons/superscript.png
Binary files differ
diff --git a/sources/skins/moono/icons/table.png b/sources/skins/moono/icons/table.png
new file mode 100644
index 0000000..f29d051
--- /dev/null
+++ b/sources/skins/moono/icons/table.png
Binary files differ
diff --git a/sources/skins/moono/icons/templates-rtl.png b/sources/skins/moono/icons/templates-rtl.png
new file mode 100644
index 0000000..0ebeb55
--- /dev/null
+++ b/sources/skins/moono/icons/templates-rtl.png
Binary files differ
diff --git a/sources/skins/moono/icons/templates.png b/sources/skins/moono/icons/templates.png
new file mode 100644
index 0000000..0ebeb55
--- /dev/null
+++ b/sources/skins/moono/icons/templates.png
Binary files differ
diff --git a/sources/skins/moono/icons/textarea-rtl.png b/sources/skins/moono/icons/textarea-rtl.png
new file mode 100644
index 0000000..6ae1560
--- /dev/null
+++ b/sources/skins/moono/icons/textarea-rtl.png
Binary files differ
diff --git a/sources/skins/moono/icons/textarea.png b/sources/skins/moono/icons/textarea.png
new file mode 100644
index 0000000..4edac92
--- /dev/null
+++ b/sources/skins/moono/icons/textarea.png
Binary files differ
diff --git a/sources/skins/moono/icons/textcolor.png b/sources/skins/moono/icons/textcolor.png
new file mode 100644
index 0000000..48ed589
--- /dev/null
+++ b/sources/skins/moono/icons/textcolor.png
Binary files differ
diff --git a/sources/skins/moono/icons/textfield-rtl.png b/sources/skins/moono/icons/textfield-rtl.png
new file mode 100644
index 0000000..a0564ea
--- /dev/null
+++ b/sources/skins/moono/icons/textfield-rtl.png
Binary files differ
diff --git a/sources/skins/moono/icons/textfield.png b/sources/skins/moono/icons/textfield.png
new file mode 100644
index 0000000..a0564ea
--- /dev/null
+++ b/sources/skins/moono/icons/textfield.png
Binary files differ
diff --git a/sources/skins/moono/icons/uicolor.png b/sources/skins/moono/icons/uicolor.png
new file mode 100644
index 0000000..b633a3c
--- /dev/null
+++ b/sources/skins/moono/icons/uicolor.png
Binary files differ
diff --git a/sources/skins/moono/icons/underline.png b/sources/skins/moono/icons/underline.png
new file mode 100644
index 0000000..2ac6fb7
--- /dev/null
+++ b/sources/skins/moono/icons/underline.png
Binary files differ
diff --git a/sources/skins/moono/icons/undo-rtl.png b/sources/skins/moono/icons/undo-rtl.png
new file mode 100644
index 0000000..f7119cb
--- /dev/null
+++ b/sources/skins/moono/icons/undo-rtl.png
Binary files differ
diff --git a/sources/skins/moono/icons/undo.png b/sources/skins/moono/icons/undo.png
new file mode 100644
index 0000000..4c80228
--- /dev/null
+++ b/sources/skins/moono/icons/undo.png
Binary files differ
diff --git a/sources/skins/moono/icons/unlink.png b/sources/skins/moono/icons/unlink.png
new file mode 100644
index 0000000..8a4c84d
--- /dev/null
+++ b/sources/skins/moono/icons/unlink.png
Binary files differ
diff --git a/sources/skins/moono/images/anchor.png b/sources/skins/moono/images/anchor.png
new file mode 100644
index 0000000..1c802f5
--- /dev/null
+++ b/sources/skins/moono/images/anchor.png
Binary files differ
diff --git a/sources/skins/moono/images/close.png b/sources/skins/moono/images/close.png
index 6a04ab5..2d02977 100644
--- a/sources/skins/moono/images/close.png
+++ b/sources/skins/moono/images/close.png
Binary files differ
diff --git a/sources/skins/moono/images/hidpi/anchor.png b/sources/skins/moono/images/hidpi/anchor.png
new file mode 100644
index 0000000..17cca97
--- /dev/null
+++ b/sources/skins/moono/images/hidpi/anchor.png
Binary files differ
diff --git a/sources/skins/moono/images/hidpi/close.png b/sources/skins/moono/images/hidpi/close.png
index e406c2c..de4eedf 100644
--- a/sources/skins/moono/images/hidpi/close.png
+++ b/sources/skins/moono/images/hidpi/close.png
Binary files differ
diff --git a/sources/skins/moono/images/hidpi/lock-open.png b/sources/skins/moono/images/hidpi/lock-open.png
index edbd12f..594f0d3 100644
--- a/sources/skins/moono/images/hidpi/lock-open.png
+++ b/sources/skins/moono/images/hidpi/lock-open.png
Binary files differ
diff --git a/sources/skins/moono/images/hidpi/lock.png b/sources/skins/moono/images/hidpi/lock.png
index 1b87bbb..1e23a0b 100644
--- a/sources/skins/moono/images/hidpi/lock.png
+++ b/sources/skins/moono/images/hidpi/lock.png
Binary files differ
diff --git a/sources/skins/moono/images/hidpi/refresh.png b/sources/skins/moono/images/hidpi/refresh.png
index c6c2b86..42d94a9 100644
--- a/sources/skins/moono/images/hidpi/refresh.png
+++ b/sources/skins/moono/images/hidpi/refresh.png
Binary files differ
diff --git a/sources/skins/moono/images/lock-open.png b/sources/skins/moono/images/lock-open.png
index 0476987..7d24c5f 100644
--- a/sources/skins/moono/images/lock-open.png
+++ b/sources/skins/moono/images/lock-open.png
Binary files differ
diff --git a/sources/skins/moono/images/lock.png b/sources/skins/moono/images/lock.png
index c5a1440..8baeaa4 100644
--- a/sources/skins/moono/images/lock.png
+++ b/sources/skins/moono/images/lock.png
Binary files differ
diff --git a/sources/skins/moono/images/refresh.png b/sources/skins/moono/images/refresh.png
index 1ff63c3..d8106b0 100644
--- a/sources/skins/moono/images/refresh.png
+++ b/sources/skins/moono/images/refresh.png
Binary files differ
diff --git a/sources/skins/moono/mainui.css b/sources/skins/moono/mainui.css
index 57bc309..6ad85ef 100644
--- a/sources/skins/moono/mainui.css
+++ b/sources/skins/moono/mainui.css
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5 5
diff --git a/sources/skins/moono/menu.css b/sources/skins/moono/menu.css
index 671e01e..0c1ab59 100644
--- a/sources/skins/moono/menu.css
+++ b/sources/skins/moono/menu.css
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5 5
@@ -133,6 +133,12 @@ Special outer level classes used in this file:
133 vertical-align: middle; 133 vertical-align: middle;
134} 134}
135 135
136/* Keyboard shortcut placed next to the label. */
137.cke_menubutton_shortcut
138{
139 color: #979797;
140}
141
136.cke_menubutton_disabled .cke_menubutton_label 142.cke_menubutton_disabled .cke_menubutton_label
137{ 143{
138 /* Greyed label text indicates a disabled menu item. */ 144 /* Greyed label text indicates a disabled menu item. */
diff --git a/sources/skins/moono/notification.css b/sources/skins/moono/notification.css
index 9a25f76..659fef7 100644
--- a/sources/skins/moono/notification.css
+++ b/sources/skins/moono/notification.css
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5 5
diff --git a/sources/skins/moono/panel.css b/sources/skins/moono/panel.css
index e38702a..b1f457f 100644
--- a/sources/skins/moono/panel.css
+++ b/sources/skins/moono/panel.css
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5 5
diff --git a/sources/skins/moono/presets.css b/sources/skins/moono/presets.css
index 3f4881e..2d06deb 100644
--- a/sources/skins/moono/presets.css
+++ b/sources/skins/moono/presets.css
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5 5
diff --git a/sources/skins/moono/readme.md b/sources/skins/moono/readme.md
index fc9a544..4a4ed6b 100644
--- a/sources/skins/moono/readme.md
+++ b/sources/skins/moono/readme.md
@@ -1,8 +1,8 @@
1"Moono" Skin 1"Moono" Skin
2==================== 2====================
3 3
4This skin has been chosen for the **default skin** of CKEditor 4.x, elected from the CKEditor 4This skin has been chosen for the **default skin** of CKEditor 4.x (replaced by "Moono-lisa" skin since CKEditor 4.6.0),
5[skin contest](http://ckeditor.com/blog/new_ckeditor_4_skin) and further shaped by 5elected from the CKEditor [skin contest](http://ckeditor.com/blog/new_ckeditor_4_skin) and further shaped by
6the CKEditor team. "Moono" is maintained by the core developers. 6the CKEditor team. "Moono" is maintained by the core developers.
7 7
8For more information about skins, please check the [CKEditor Skin SDK](http://docs.cksource.com/CKEditor_4.x/Skin_SDK) 8For more information about skins, please check the [CKEditor Skin SDK](http://docs.cksource.com/CKEditor_4.x/Skin_SDK)
@@ -44,6 +44,6 @@ Other parts:
44License 44License
45------- 45-------
46 46
47Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 47Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
48 48
49For licensing, see LICENSE.md or [http://ckeditor.com/license](http://ckeditor.com/license) 49For licensing, see LICENSE.md or [http://ckeditor.com/license](http://ckeditor.com/license)
diff --git a/sources/skins/moono/reset.css b/sources/skins/moono/reset.css
index 169308d..d64bf82 100644
--- a/sources/skins/moono/reset.css
+++ b/sources/skins/moono/reset.css
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5 5
diff --git a/sources/skins/moono/richcombo.css b/sources/skins/moono/richcombo.css
index 103225e..7897a66 100644
--- a/sources/skins/moono/richcombo.css
+++ b/sources/skins/moono/richcombo.css
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5 5
diff --git a/sources/skins/moono/skin.js b/sources/skins/moono/skin.js
index 6dbdaa9..420b22e 100644
--- a/sources/skins/moono/skin.js
+++ b/sources/skins/moono/skin.js
@@ -1,5 +1,5 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
@@ -276,9 +276,6 @@ CKEDITOR.skin.chameleon = ( function() {
276// ---------------------------------------------------------- 276// ----------------------------------------------------------
277// (http://docs.cksource.com/CKEditor_4.x/Skin_SDK/Icons) 277// (http://docs.cksource.com/CKEditor_4.x/Skin_SDK/Icons)
278// 278//
279// Note: As "moono" is the default CKEditor skin, it provides no custom icons,
280// thus this code is commented out.
281//
282// This code is here just to make the skin work fully when using its "source" 279// This code is here just to make the skin work fully when using its "source"
283// version. Without this, the skin will still work, but its icons will not be 280// version. Without this, the skin will still work, but its icons will not be
284// used (again, on source version only). 281// used (again, on source version only).
@@ -291,29 +288,29 @@ CKEDITOR.skin.chameleon = ( function() {
291// If a required icon is not available here, the plugin defined icon will be 288// If a required icon is not available here, the plugin defined icon will be
292// used instead. This means that a skin is not required to provide all icons. 289// used instead. This means that a skin is not required to provide all icons.
293// Actually, it is not required to provide icons at all. 290// Actually, it is not required to provide icons at all.
294// 291
295// (function() { 292( function() {
296// // The available icons. This list must match the file names (without 293 // The available icons. This list must match the file names (without
297// // extension) available inside the "icons" folder. 294 // extension) available inside the "icons" folder.
298// var icons = ( 'about,anchor-rtl,anchor,bgcolor,bidiltr,bidirtl,blockquote,' + 295 var icons = ( 'about,anchor-rtl,anchor,bgcolor,bidiltr,bidirtl,blockquote,' +
299// 'bold,bulletedlist-rtl,bulletedlist,button,checkbox,copy-rtl,copy,' + 296 'bold,bulletedlist-rtl,bulletedlist,button,checkbox,copy-rtl,copy,copyformatting,' +
300// 'creatediv,cut-rtl,cut,docprops-rtl,docprops,find-rtl,find,flash,form,' + 297 'creatediv,cut-rtl,cut,docprops-rtl,docprops,find-rtl,find,flash,form,' +
301// 'hiddenfield,horizontalrule,icons,iframe,image,imagebutton,indent-rtl,' + 298 'hiddenfield,horizontalrule,icons,iframe,image,imagebutton,indent-rtl,' +
302// 'indent,italic,justifyblock,justifycenter,justifyleft,justifyright,' + 299 'indent,italic,justifyblock,justifycenter,justifyleft,justifyright,' +
303// 'link,maximize,newpage-rtl,newpage,numberedlist-rtl,numberedlist,' + 300 'link,maximize,newpage-rtl,newpage,numberedlist-rtl,numberedlist,' +
304// 'outdent-rtl,outdent,pagebreak-rtl,pagebreak,paste-rtl,paste,' + 301 'outdent-rtl,outdent,pagebreak-rtl,pagebreak,paste-rtl,paste,' +
305// 'pastefromword-rtl,pastefromword,pastetext-rtl,pastetext,preview-rtl,' + 302 'pastefromword-rtl,pastefromword,pastetext-rtl,pastetext,preview-rtl,' +
306// 'preview,print,radio,redo-rtl,redo,removeformat,replace,save,scayt,' + 303 'preview,print,radio,redo-rtl,redo,removeformat,replace,save,scayt,' +
307// 'select-rtl,select,selectall,showblocks-rtl,showblocks,smiley,' + 304 'select-rtl,select,selectall,showblocks-rtl,showblocks,smiley,' +
308// 'source-rtl,source,specialchar,spellchecker,strike,subscript,' + 305 'source-rtl,source,specialchar,spellchecker,strike,subscript,' +
309// 'superscript,table,templates-rtl,templates,textarea-rtl,textarea,' + 306 'superscript,table,templates-rtl,templates,textarea-rtl,textarea,' +
310// 'textcolor,textfield-rtl,textfield,uicolor,underline,undo-rtl,undo,unlink' ).split( ',' ); 307 'textcolor,textfield-rtl,textfield,uicolor,underline,undo-rtl,undo,unlink' ).split( ',' );
311// 308
312// var iconsFolder = CKEDITOR.getUrl( CKEDITOR.skin.path() + 'icons/' + ( CKEDITOR.env.hidpi ? 'hidpi/' : '' ) ); 309 var iconsFolder = CKEDITOR.getUrl( CKEDITOR.skin.path() + 'icons/' + ( CKEDITOR.env.hidpi ? 'hidpi/' : '' ) );
313// 310
314// for ( var i = 0; i < icons.length; i++ ) { 311 for ( var i = 0; i < icons.length; i++ ) {
315// CKEDITOR.skin.addIcon( icons[ i ], iconsFolder + icons[ i ] + '.png' ); 312 CKEDITOR.skin.addIcon( icons[ i ], iconsFolder + icons[ i ] + '.png' );
316// } 313 }
317// })(); 314} )();
318 315
319// %REMOVE_END% 316// %REMOVE_END%
diff --git a/sources/skins/moono/toolbar.css b/sources/skins/moono/toolbar.css
index 013afa0..a5d32d4 100644
--- a/sources/skins/moono/toolbar.css
+++ b/sources/skins/moono/toolbar.css
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license 3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/ 4*/
5 5
diff --git a/sources/styles.js b/sources/styles.js
index 5c50ef4..dd9680e 100644
--- a/sources/styles.js
+++ b/sources/styles.js
@@ -1,22 +1,24 @@
1/** 1/**
2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license 3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */ 4 */
5 5
6// This file contains style definitions that can be used by CKEditor plugins. 6// This file contains style definitions that can be used by CKEditor plugins.
7// 7//
8// The most common use for it is the "stylescombo" plugin, which shows a combo 8// The most common use for it is the "stylescombo" plugin which shows the Styles drop-down
9// in the editor toolbar, containing all styles. Other plugins instead, like 9// list containing all styles in the editor toolbar. Other plugins, like
10// the div plugin, use a subset of the styles on their feature. 10// the "div" plugin, use a subset of the styles for their features.
11// 11//
12// If you don't have plugins that depend on this file, you can simply ignore it. 12// If you do not have plugins that depend on this file in your editor build, you can simply
13// Otherwise it is strongly recommended to customize this file to match your 13// ignore it. Otherwise it is strongly recommended to customize this file to match your
14// website requirements and design properly. 14// website requirements and design properly.
15//
16// For more information refer to: http://docs.ckeditor.com/#!/guide/dev_styles-section-style-rules
15 17
16CKEDITOR.stylesSet.add( 'default', [ 18CKEDITOR.stylesSet.add( 'default', [
17 /* Block Styles */ 19 /* Block styles */
18 20
19 // These styles are already available in the "Format" combo ("format" plugin), 21 // These styles are already available in the "Format" drop-down list ("format" plugin),
20 // so they are not needed here by default. You may enable them to avoid 22 // so they are not needed here by default. You may enable them to avoid
21 // placing the "Format" combo in the toolbar, maintaining the same features. 23 // placing the "Format" combo in the toolbar, maintaining the same features.
22 /* 24 /*
@@ -43,11 +45,11 @@ CKEDITOR.stylesSet.add( 'default', [
43 } 45 }
44 }, 46 },
45 47
46 /* Inline Styles */ 48 /* Inline styles */
47 49
48 // These are core styles available as toolbar buttons. You may opt enabling 50 // These are core styles available as toolbar buttons. You may opt enabling
49 // some of them in the Styles combo, removing them from the toolbar. 51 // some of them in the Styles drop-down list, removing them from the toolbar.
50 // (This requires the "stylescombo" plugin) 52 // (This requires the "stylescombo" plugin.)
51 /* 53 /*
52 { name: 'Strong', element: 'strong', overrides: 'b' }, 54 { name: 'Strong', element: 'strong', overrides: 'b' },
53 { name: 'Emphasis', element: 'em' , overrides: 'i' }, 55 { name: 'Emphasis', element: 'em' , overrides: 'i' },
@@ -77,22 +79,22 @@ CKEDITOR.stylesSet.add( 'default', [
77 { name: 'Language: RTL', element: 'span', attributes: { 'dir': 'rtl' } }, 79 { name: 'Language: RTL', element: 'span', attributes: { 'dir': 'rtl' } },
78 { name: 'Language: LTR', element: 'span', attributes: { 'dir': 'ltr' } }, 80 { name: 'Language: LTR', element: 'span', attributes: { 'dir': 'ltr' } },
79 81
80 /* Object Styles */ 82 /* Object styles */
81 83
82 { 84 {
83 name: 'Styled image (left)', 85 name: 'Styled Image (left)',
84 element: 'img', 86 element: 'img',
85 attributes: { 'class': 'left' } 87 attributes: { 'class': 'left' }
86 }, 88 },
87 89
88 { 90 {
89 name: 'Styled image (right)', 91 name: 'Styled Image (right)',
90 element: 'img', 92 element: 'img',
91 attributes: { 'class': 'right' } 93 attributes: { 'class': 'right' }
92 }, 94 },
93 95
94 { 96 {
95 name: 'Compact table', 97 name: 'Compact Table',
96 element: 'table', 98 element: 'table',
97 attributes: { 99 attributes: {
98 cellpadding: '5', 100 cellpadding: '5',
@@ -106,7 +108,31 @@ CKEDITOR.stylesSet.add( 'default', [
106 }, 108 },
107 109
108 { name: 'Borderless Table', element: 'table', styles: { 'border-style': 'hidden', 'background-color': '#E6E6FA' } }, 110 { name: 'Borderless Table', element: 'table', styles: { 'border-style': 'hidden', 'background-color': '#E6E6FA' } },
109 { name: 'Square Bulleted List', element: 'ul', styles: { 'list-style-type': 'square' } } 111 { name: 'Square Bulleted List', element: 'ul', styles: { 'list-style-type': 'square' } },
112
113 /* Widget styles */
114
115 { name: 'Clean Image', type: 'widget', widget: 'image', attributes: { 'class': 'image-clean' } },
116 { name: 'Grayscale Image', type: 'widget', widget: 'image', attributes: { 'class': 'image-grayscale' } },
117
118 { name: 'Featured Snippet', type: 'widget', widget: 'codeSnippet', attributes: { 'class': 'code-featured' } },
119
120 { name: 'Featured Formula', type: 'widget', widget: 'mathjax', attributes: { 'class': 'math-featured' } },
121
122 { name: '240p', type: 'widget', widget: 'embedSemantic', attributes: { 'class': 'embed-240p' }, group: 'size' },
123 { name: '360p', type: 'widget', widget: 'embedSemantic', attributes: { 'class': 'embed-360p' }, group: 'size' },
124 { name: '480p', type: 'widget', widget: 'embedSemantic', attributes: { 'class': 'embed-480p' }, group: 'size' },
125 { name: '720p', type: 'widget', widget: 'embedSemantic', attributes: { 'class': 'embed-720p' }, group: 'size' },
126 { name: '1080p', type: 'widget', widget: 'embedSemantic', attributes: { 'class': 'embed-1080p' }, group: 'size' },
127
128 // Adding space after the style name is an intended workaround. For now, there
129 // is no option to create two styles with the same name for different widget types. See http://dev.ckeditor.com/ticket/16664.
130 { name: '240p ', type: 'widget', widget: 'embed', attributes: { 'class': 'embed-240p' }, group: 'size' },
131 { name: '360p ', type: 'widget', widget: 'embed', attributes: { 'class': 'embed-360p' }, group: 'size' },
132 { name: '480p ', type: 'widget', widget: 'embed', attributes: { 'class': 'embed-480p' }, group: 'size' },
133 { name: '720p ', type: 'widget', widget: 'embed', attributes: { 'class': 'embed-720p' }, group: 'size' },
134 { name: '1080p ', type: 'widget', widget: 'embed', attributes: { 'class': 'embed-1080p' }, group: 'size' }
135
110] ); 136] );
111 137
112// %LEAVE_UNMINIFIED% %REMOVE_LINE% 138// %LEAVE_UNMINIFIED% %REMOVE_LINE%