aboutsummaryrefslogtreecommitdiff
path: root/sources/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'sources/plugins')
-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
1693 files changed, 18456 insertions, 2600 deletions
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: 'Accéder à la précédente commande d\'espace de mise au point', 72 name: 'Commande d\'accès à l\'élément sélectionnable précé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 następnego miejsca, w którym można 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: 'Ré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: 'P¡lji', 19 upload: 'Nal¾i',
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: 'Código 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á referências 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 referência', 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: 'Refeªncia 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 nã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>